Hello I am new in Catia macro I a
Hello I am new in Catia macro I a
(OP)
Hello
I am new in Catia macro
I am working in a Macro that an hide geometric set and set layer
I have created but it is only working to set Layer
Sub CATMain()
Dim objSelection1 As Selection
Set objSelection1 = CATIA.ActiveDocument.Selection
Dim objSelection2 As Selection
Set objSelection2 = CATIA.ActiveDocument.Selection
'---------------------Inform the User when nothing is selected ---------------------'
If objSelection1.Count = 0 Then
MsgBox " Nothing is selected. Please select Multibranchable and Run Macro Again"
Exit Sub
End If
'------------------------------------------------------------------------------------'
'---------------For Changing The Layer---------------'
objSelection1.Search "CATPrtSearch.Rib,sel"
Dim VisProperty1 As VisPropertySet
Set VisProperty1 = objSelection1.VisProperties
Dim LayValue As Long
LayValue = InputBox("Please Enter the Layer Value", "Change of Layer", 180)
VisProperty1.SetLayer catVisLayerBasic, LayValue
'----------------------------------------------------'
objSelection1.Clear
'--------------For Hidding GeometriSet-------------------'
objSelection2.Search "CATPrtSearch.OpenBodyFeature,sel"
Dim Property2 As VisPropertySet
Set Property2 = objSelection2.VisProperties
Property2.SetShow catVisPropertyNoShowAttr
'----------------------------------------------------'
objSelection2.Clear
End Sub
I am new in Catia macro
I am working in a Macro that an hide geometric set and set layer
I have created but it is only working to set Layer
Sub CATMain()
Dim objSelection1 As Selection
Set objSelection1 = CATIA.ActiveDocument.Selection
Dim objSelection2 As Selection
Set objSelection2 = CATIA.ActiveDocument.Selection
'---------------------Inform the User when nothing is selected ---------------------'
If objSelection1.Count = 0 Then
MsgBox " Nothing is selected. Please select Multibranchable and Run Macro Again"
Exit Sub
End If
'------------------------------------------------------------------------------------'
'---------------For Changing The Layer---------------'
objSelection1.Search "CATPrtSearch.Rib,sel"
Dim VisProperty1 As VisPropertySet
Set VisProperty1 = objSelection1.VisProperties
Dim LayValue As Long
LayValue = InputBox("Please Enter the Layer Value", "Change of Layer", 180)
VisProperty1.SetLayer catVisLayerBasic, LayValue
'----------------------------------------------------'
objSelection1.Clear
'--------------For Hidding GeometriSet-------------------'
objSelection2.Search "CATPrtSearch.OpenBodyFeature,sel"
Dim Property2 As VisPropertySet
Set Property2 = objSelection2.VisProperties
Property2.SetShow catVisPropertyNoShowAttr
'----------------------------------------------------'
objSelection2.Clear
End Sub





RE: Hello I am new in Catia macro I a
Maybe because you are clearing objSelection1.Clear ? And then you do objSelection2.Search "CATPrtSearch.OpenBodyFeature,sel" ? What did you select for objSelection2 before? Check the v5automation.chm file to understand how selection is working.
Regards
Fernando
https://picasaweb.google.com/102257836106335725208 - Romania
https://picasaweb.google.com/103462806772634246699... - EU
RE: Hello I am new in Catia macro I a
thank u for the reply
yes... you are right
Now i can expect my problem will solve.
There is some bodies other then Part body and some geometric set.
Can you please give me an idea how can we proceed or solve the issue.
RE: Hello I am new in Catia macro I a
Regards
Fernando
https://picasaweb.google.com/102257836106335725208 - Romania
https://picasaweb.google.com/103462806772634246699... - EU
RE: Hello I am new in Catia macro I a
RE: Hello I am new in Catia macro I a
Regards
Fernando
https://picasaweb.google.com/102257836106335725208 - Romania
https://picasaweb.google.com/103462806772634246699... - EU
RE: Hello I am new in Catia macro I a
I will check the doc and try to solve the problem
and post the feedback...................
RE: Hello I am new in Catia macro I a
Friends
This discussion is started some days back.
I am creating a macro to hide geometric set and set layer of Body
with suggestion of some member (especially ferdo), I have created one still I am stuck at one location with error code 424
Sub CATMain()
Dim Document1 As Document
Set Document1 = CATIA.ActiveDocument
Dim objSelection As Selection
Set objSelection = CATIA.ActiveDocument.Selection
'---------------------Inform the User when nothing is selected ---------------------'
If objSelection.Count = 0 Then
MsgBox " Nothing is selected. Please select Multibranchable and Run Macro Again"
Exit Sub
End If
'------------------------------------------------------------------------------------'
'--------------For Hidding GeometriSet-------------------'
objSelection.Search "CATPrtSearch.OpenBodyFeature+CATPrtSearch.BodyFeature,sel"
Dim MyArray()
ReDim MyArray(objSelection.Count - 1)
Dim X As Integer
For X = 0 To objSelection.Count - 1
MyArray(X) = objSelection.Item(X + 1).Type
Next
objSelection.Clear
Dim i As Integer
For i = LBound(MyArray) To UBound(MyArray)
If MyArray(i) = "Body" Then
MsgBox MyArray(i)
objSelection.Add MyArray(i) <<<<<<<<<<<<<<<<<<----Error 424 coming on this Line
Dim VisProperty1 As VisPropertySet
Set VisProperty1 = objSelection.VisProperties
VisProperty1.SetLayer catVisLayerBasic, 180
objSelection.Clear
ElseIf MyArray(i) = "HybridBody" Then
MsgBox MyArray(i)
objSelection.Add MyArray(i)
Dim VisProperty2 As VisPropertySet
Set VisProperty2 = objSelection.VisProperties
VisProperty2.SetShow catVisPropertyNoShowAttr
objSelection.Clear
End If
Next i
End Sub
RE: Hello I am new in Catia macro I a
RE: Hello I am new in Catia macro I a
Regards
Fernando
https://picasaweb.google.com/102257836106335725208 - Romania
https://picasaweb.google.com/103462806772634246699... - EU
RE: Hello I am new in Catia macro I a
I will upload our practice model from home.
Till now what I have found is In MsgBox MyArray(i)... it is showing the
stored value in Array (Body and Hybrid Body)
But while adding in ObjSelection.Add it is not considering the "Body" and "Hybrid Body" as object.
But in V5Automation.chm file this are belong to object Type.
RE: Hello I am new in Catia macro I a
here is the Product Structure
For macro i have to approach in mind
1. First Select all The BS, FB and SV and then run the macro
on which i stuck
2. Select the top product and Run the macro, Macro will only in BS, FB and SV
and hide the Geometric set and Set the Layer of all bodies.
Which required (i think) more coding then the first one.
RE: Hello I am new in Catia macro I a
1. You want to run first the macro on BS, FB, SV...then, you can notice that names are something like this *-BS* or *-FB* or *-SV* . So, you need to do a search for those elements which has inside those strings...for this you need to read documentation about how to search.
Code for this is
selection2.Search "(Name=*'-'BS* + (Name=*'-'FV* + Name=*'-'SV*)),all"
You can obtain the code by simply recording a CATScript. This will contain a lot of unnecessary lines, including my mistakes in searching syntax
CODE --> CATSCript
Language="VBSCRIPT" Sub CATMain() Dim productDocument1 As Document Set productDocument1 = CATIA.ActiveDocument Dim selection1 As Selection Set selection1 = productDocument1.Selection selection1.Search "(Name=*'-'BS* + (Name=*'-'FV* + Name=*'-'SV)),all" ''my mistake in searching syntax Dim selection2 As Selection Set selection2 = productDocument1.Selection selection2.Search "(Name=*'-'BS* + (Name=*'-'FV* + Name=*'-'SV*)),all" Dim selection3 As Selection Set selection3 = productDocument1.Selection selection3.Search "CATPrtSearch.OpenBodyFeature,sel" Dim selection4 As Selection Set selection4 = productDocument1.Selection Dim visPropertySet1 As VisPropertySet Set visPropertySet1 = selection4.VisProperties Dim documents1 As Documents Set documents1 = CATIA.Documents Dim partDocument1 As Document Set partDocument1 = documents1.Item("VL39H02340000000-BS001.CATPart") Dim part1 As Part Set part1 = partDocument1.Part Dim hybridBodies1 As HybridBodies Set hybridBodies1 = part1.HybridBodies Dim hybridBody1 As HybridBody Set hybridBody1 = hybridBodies1.Item("Geometrical Set.1") Set hybridBodies1 = hybridBody1.Parent Dim bSTR1 As String bSTR1 = hybridBody1.Name selection4.Add hybridBody1 Dim hybridBody2 As HybridBody Set hybridBody2 = hybridBodies1.Item("External References") Set hybridBodies1 = hybridBody2.Parent Dim bSTR2 As String bSTR2 = hybridBody2.Name selection4.Add hybridBody2 Dim hybridBody3 As HybridBody Set hybridBody3 = hybridBodies1.Item("Geometrical Set.3") Set hybridBodies1 = hybridBody3.Parent Dim bSTR3 As String bSTR3 = hybridBody3.Name selection4.Add hybridBody3 Dim partDocument2 As Document Set partDocument2 = documents1.Item("VL39H02340000000-SV001.CATPart") Dim part2 As Part Set part2 = partDocument2.Part Dim hybridBodies2 As HybridBodies Set hybridBodies2 = part2.HybridBodies Dim hybridBody4 As HybridBody Set hybridBody4 = hybridBodies2.Item("Geometrical Set.1") Set hybridBodies2 = hybridBody4.Parent Dim bSTR4 As String bSTR4 = hybridBody4.Name selection4.Add hybridBody4 Dim hybridBody5 As HybridBody Set hybridBody5 = hybridBodies2.Item("External References") Set hybridBodies2 = hybridBody5.Parent Dim bSTR5 As String bSTR5 = hybridBody5.Name selection4.Add hybridBody5 Dim hybridBody6 As HybridBody Set hybridBody6 = hybridBodies2.Item("Geometrical Set.3") Set hybridBodies2 = hybridBody6.Parent Dim bSTR6 As String bSTR6 = hybridBody6.Name selection4.Add hybridBody6 Dim partDocument3 As Document Set partDocument3 = documents1.Item("VL39C06227000000-BS001.CATPart") Dim part3 As Part Set part3 = partDocument3.Part Dim hybridBodies3 As HybridBodies Set hybridBodies3 = part3.HybridBodies Dim hybridBody7 As HybridBody Set hybridBody7 = hybridBodies3.Item("Geometrical Set.1") Set hybridBodies3 = hybridBody7.Parent Dim bSTR7 As String bSTR7 = hybridBody7.Name selection4.Add hybridBody7 Dim hybridBody8 As HybridBody Set hybridBody8 = hybridBodies3.Item("External References") Set hybridBodies3 = hybridBody8.Parent Dim bSTR8 As String bSTR8 = hybridBody8.Name selection4.Add hybridBody8 Dim hybridBody9 As HybridBody Set hybridBody9 = hybridBodies3.Item("Geometrical Set.3") Set hybridBodies3 = hybridBody9.Parent Dim bSTR9 As String bSTR9 = hybridBody9.Name selection4.Add hybridBody9 Set visPropertySet1 = visPropertySet1.Parent Dim bSTR10 As String bSTR10 = visPropertySet1.Name Dim bSTR11 As String bSTR11 = visPropertySet1.Name visPropertySet1.SetShow 1 selection4.Clear End SubNow you need to apply what you learned from v5automation.chm file and clean the code as much as you can.
So, after searching all BS,FV, SV you let them selected and do another search inside that selection. Your target for this search are geometrical sets and this is done like this:
selection3.Search "CATPrtSearch.OpenBodyFeature,sel"
A cleaner code is bellow...try to continue with your step 2 and come back with a nice code
CODE --> CATScript
Regards
Fernando
https://picasaweb.google.com/102257836106335725208 - Romania
https://picasaweb.google.com/103462806772634246699... - EU
RE: Hello I am new in Catia macro I a
How can we deal with body to set layer in the same code.
RE: Hello I am new in Catia macro I a
If previously i was not clear.
I want to go with pre selection of Required part.
Then Search body and HybridBody together
and apply layer on body and geometric set hide in one Macro
RE: Hello I am new in Catia macro I a
Regards
Fernando
https://picasaweb.google.com/102257836106335725208 - Romania
https://picasaweb.google.com/103462806772634246699... - EU
RE: Hello I am new in Catia macro I a
after first set of work (either it is hidding or setting layer)
code is not working for second given task.
RE: Hello I am new in Catia macro I a
Finally i got the solution, with some value input from ferdo
I have change the approach
--> First i have search the -BS, -FS, -SV and -FV
--> Then i have stored this search result in Array
--> one by one this search result in Array is used to achieve the task
----------------
Here is full code
----------------
Option Explicit
Sub CATMain()
Dim objSelection As Selection
Set objSelection = CATIA.ActiveDocument.Selection
'---------------------Inform the User when nothing is selected ---------------------
If objSelection.Count = 0 Then
MsgBox " Nothing is selected. Please select Multibranchable and Run Macro Again"
Exit Sub
End If
'------------------------------------------------------------------------------------
objSelection.Search "(Name=*'-'BS* + (Name=*'-'FB* + Name=*'-'SV*+ Name=*'-'FS*)),all"
'--------------------Store the selected Item in Array--------------------------------
Dim TempArray()
ReDim TempArray(objSelection.Count - 1)
Dim X As Integer
For X = 0 To objSelection.Count - 1
Set TempArray(X) = objSelection.Item(X + 1).Value
Next X
'-------------------------------------------------------------------------------------
objSelection.Clear '----Clear the Selection
'------------Calling the stored object in Array---------------------------------------
Dim i As Integer
For i = LBound(TempArray) To UBound(TempArray)
'---------------For Hidding Geometric Set---------------'
Dim objSelection1 As Selection '------ New Selection is created for hidding GeoSet
Set objSelection1 = CATIA.ActiveDocument.Selection
objSelection1.Clear
objSelection1.Add TempArray(i) '-----Add first Array in the selection
objSelection1.Search "CATPrtSearch.OpenBodyFeature,sel" '-----Search for Geo. Set
Dim VisProperty1 As VisPropertySet
Set VisProperty1 = objSelection1.VisProperties
VisProperty1.SetShow catVisPropertyNoShowAttr '-----Hide the GeoSet
objSelection1.Clear '-----Clear the selection
'***************************************************
'---------------For Changing The Layer---------------'
Dim objSelection2 As Selection '------ New Selection is created for hidding GeoSet
Set objSelection2 = CATIA.ActiveDocument.Selection
objSelection2.Clear
objSelection2.Add TempArray(i) '-----Add first Array in the selection
objSelection2.Search "CATPrtSearch.BodyFeature,sel" '-----Search for Body
Dim VisProperty2 As VisPropertySet
Set VisProperty2 = objSelection2.VisProperties
VisProperty2.SetLayer catVisLayerBasic, 180 '-----Search for Body in First stored object
objSelection2.Clear '-----Clear the selection
Next i '-----Going for next stored value
'*****************************************************
End Sub