Hallo,
das geht wunderbar per script; für alles was irgendwie etwas mit "Messen" zu tun hat, bietet die COM-Schnittstettle das Measurable-Objekt und die dazugehörigen Methoden (GetVolume, GetArea, GetCOG....) und Eigenschaften, z.B. die Length.
Mit folgendem Code kannst du alle GSD-Elemente, die eine "Länge" ausgeben können, messen, wobei du dich in einem Part innerhalb einer Product-Struktur (Root ist ein CATProduct) oder nur in einem Part ( = Root) befinden darfst. Script starten und GSD-Element anwählen, ESC bricht das Script ab:
Dim Language as String
Language="VBScript"
Sub CATMain()
Dim Status, oSelection, oSelectedElement, oDoc, oInstance, oRef, TheSPAWorkbench, TheMeasurable as Object
Dim InputObjectType(0)
Dim bType as Boolean
Dim dLength as Double
InputObjectType(0) = "HybridShape"
If TypeName(CATIA.ActiveDocument) = "ProductDocument" Then
bType = 0
ElseIf TypeName(CATIA.ActiveDocument) = "PartDocument" Then
bType = 1
Else
msgbox "The Root is not a CATPart or a CATProduct ! ", 48, "Wrong FileType of opend Document"
exit sub
End if
Set oSelection = CATIA.ActiveDocument.Selection
oSelection.Clear
Status = oSelection.SelectElement2(InputObjectType, "************************* Please Select a Curve ************************** ", False)
If (Status <> "Normal") Then
Exit Sub
Else
Set oSelectedElement = oSelection.Item(1).Value
If bType = 0Then
Set oInstance = oSelection.FindObject("CATIAProduct")
Set oDoc = oInstance.ReferenceProduct.Parent.Part
ElseIf bType = 1 Then
Set oDoc = CATIA.ActiveDocument.Part
End if
oSelection.Clear
oSelection.EndSelectElement
End If
Set oRef = oDoc.CreateReferenceFromObject(oSelectedElement)
Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench") '--- SPAWorkbench anziehen
Set TheMeasurable = TheSPAWorkbench.GetMeasurable(oRef)
On Error Resume Next
Err.Number = 0
dLength = TheMeasurable.Length
If Err.Number = 0 Then
msgbox " The Length of " & oSelectedElement.Name & " is " & dLength & " mm ! " , 64, "Measurement"
Else
msgbox "The Selected Element is not a Curve ! " & VbLf & "No Output !", 48, "Error in Selection"
End If
End Sub
Gruss
TomTom
------------------
tomtom1972
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP