Hallo dc_tke,
du musst das Datum anders erzeugen und das Measurable des Punktes in deinem Code ist auch falsch.
zu (1)
Die Funktion zum Isolieren des Multi-Elemets, die du benötigst ist
AddNewDatums(CATIAReference iElem) As CATSafeArrayVariant
zu (2)
Die Funktion zum Messen des Punktes ist
GetPoint( CATSafeArrayVariant oCoordinates)
Code:
Sub CATMain()
Set documents1 = CATIA.Documents
Set partDocument1 = documents1.Add("Part")
Set part1 = partDocument1.Part
Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Add()
Set hybridShapeFactory1 = part1.HybridShapeFactory
Set hybridShapePointCoord1 = hybridShapeFactory1.AddNewPointCoord(0.000000, 0.000000, 0.000000)
hybridBody1.AppendHybridShape hybridShapePointCoord1
part1.InWorkObject = hybridShapePointCoord1
part1.Update
Set reference2 = part1.CreateReferenceFromObject(hybridShapePointCoord1)
Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirectionByCoord(0.000000, 0.000000, 1.000000)
Set hybridShapeLinePtDir1 = hybridShapeFactory1.AddNewLinePtDir(reference2, hybridShapeDirection1,-200.000000, 200.000000, False)
hybridBody1.AppendHybridShape hybridShapeLinePtDir1
part1.InWorkObject = hybridShapeLinePtDir1
part1.Update
Set reference3 = part1.CreateReferenceFromObject(hybridShapePointCoord1)
Set hybridShapeSphere1 = hybridShapeFactory1.AddNewSphere(reference3, Nothing, 20.000000, -45.000000, 45.000000, 0.000000, 180.000000)
hybridShapeSphere1.Limitation = 1
hybridBody1.AppendHybridShape hybridShapeSphere1
part1.InWorkObject = hybridShapeSphere1
part1.Update
Set reference4 = part1.CreateReferenceFromObject(hybridShapeLinePtDir1)
Set reference5 = part1.CreateReferenceFromObject(hybridShapeSphere1)
Set hybridShapeIntersection1 = hybridShapeFactory1.AddNewIntersection(reference4, reference5)
hybridShapeIntersection1.PointType = 0
hybridBody1.AppendHybridShape hybridShapeIntersection1
part1.InWorkObject = hybridShapeIntersection1
part1.Update
'--- Ab hier anders
Set reference6 = part1.CreateReferenceFromObject(hybridShapeIntersection1)
Dim aCoordinates(2)
Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
'--- Isolieren von Multi-Elementen (Mehrfach-Objekten)
'--- CATIA erzeugt ein Array (Größe = Anzahl der BReps - 1)
HShapeDatum = hybridShapeFactory1.AddNewDatums(reference6)
For t = 0 To UBound(HShapeDatum)
'--- wenn du die nächste Zeile auskommentierst, werden die Isolierten Punkte nicht in den Tree aufgenommen. Die Messung funktioniert trotzdem
hybridBody1.AppendHybridShape HShapeDatum(t)
part1.Update
Set reference7 = part1.CreateReferenceFromObject(HShapeDatum(t))
Set TheMeasurable = TheSPAWorkbench.GetMeasurable(reference7)
'--- Coordinaten von Punkten werden mit .GetPoint gemessen
'--- aCoordinates ist ein Array (0=X,1=Y,2=Z)
TheMeasurable.GetPoint aCoordinates
MsgBox HShapeDatum(t).Name & " has the coordinates " & vbLf & "X: " & Round(aCoordinates(0), 3) & vbLf & "Y: " & Round(aCoordinates(1), 3) & vbLf & "Z: " & Round(aCoordinates(2), 3), 64, "Result of Measurable"
Next
End Sub
Hoffe das hilft dir weiter
Gruß & ein schönes Wochenende
------------------
tomtom1972
[Diese Nachricht wurde von tomtom1972 am 20. Apr. 2007 editiert.]
[Diese Nachricht wurde von tomtom1972 am 20. Apr. 2007 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP