Tech-Ecke / CATScript/VBS Inhalt / Messen von und zwischen 3D-Elementen

 

Messen von und zwischen 3D-Elementen

Seiteninhalt:  
  Länge eines 3D Objekts messen
  Punktkoordinaten auslesen
  Abstand und Winkel von 3D Objekten messen

 

Länge von 3D-Elementen messen (Line, Curve...)

Das Beispiel benötigt eine 3D-Linie mit dem Namen "Line.1". Das dazugehörige Part kann exklusive oder innerhalb einer aktiven Produktstruktur vorhanden sein, jedoch wird hier nur die erste Linie mit dem Namen "Line.1" innerhalb der Struktur berücksichtigt.

  Sub CATMain()

' Element und dazugehöriges Part bestimmen, hier Line.1
set Sel = CATIA.ActiveDocument.Selection
Sel.Clear
Sel.Search "Name='Line.1',all"
set oLine = Sel.Item(1).Value
set PartDocument = oLine.Parent.Parent.Parent.Parent

' eigentliche Messung
set RefDokument = PartDocument.CreateReferenceFromObject(oLine)
set Workbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench") '--- SPAWorkbench anziehen
set TheMeasurable = Workbench.GetMeasurable(RefDokument)
Laenge = TheMeasurable.Length

' auf zwei Nachkommastellen runden und Ausgabe
Laenge = round(Laenge,2)
MsgBox Laenge

End Sub
 

Punkt-Koordinaten  messen (3D-Punkt)

 siehe hier.

 

Abstand und Winkel von zwei 3D-Elementen messen (Line, Plane...)

Das Beispiel benötigt zwei 3D-Linien mit dem Namen "Line.1" und "Line.2". Die beiden Linien können auch innerhalb einer Produktstruktur in zwei verschiedenen Parts liegen.

  Sub CATMain()

' Element und dazugehöriges Part bestimmen, hier Line.1
set Sel = CATIA.ActiveDocument.Selection
Sel.Clear
Sel.Search "Name=Line.1,all"
set LineA = Sel.Item(1).Value
Sel.Clear
Sel.Search "Name=Line.2,all"
set LineB = Sel.Item(1).Value
set PartDocumentA = LineA.Parent.Parent.Parent.Parent
set PartDocumentB = LineB.Parent.Parent.Parent.Parent

' eigentliche Messung
set referenceA = PartDocumentA.CreateReferenceFromObject(LineA)
set referenceB = PartDocumentB.CreateReferenceFromObject(LineB)
set Workbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench") '--- SPAWorkbench anziehen
set TheMeasurable = Workbench.GetMeasurable(referenceA)

Winkel = TheMeasurable.GetAngleBetween(referenceB)
Abstand = TheMeasurable.GetMinimumDistance(referenceB)

' auf zwei Nachkommastellen runden und Ausgabe
Winkel = round(Winkel,2)
Abstand = round(Abstand,2)
MsgBox "Der Winkel zwischen beiden Linien beträgt: " &Winkel &" Grad"
MsgBox "Der kleinste Abstand der beiden Linien beträgt: " &Abstand &" mm"

End Sub
 

"Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0 !"

[letzte Aktualisierung 26.05.2010]