Hallo Zusammen,
ich möchte einen Koordinatentransformation in einem Produkt ausführen. Wie ich die Punkte im Part auslese und wie man eine Transformation durchführt habe ich dank eurer Hilfe bereits herausgefunden. Mir fehlt jetzt lediglich die translatorische und rotatorische Position des Parts im Produkt. Das geht offenbar mit der Methode getcomponents. Ich weiß, dass das Thema mittlerweile ein alter Hut ist, dennoch möchte ich die Methode gerne direkt auf das gerade aktive PartDocument anwenden - ohne dieses vorher nocheinmal selektieren zu müssen. Mir ist aufgefallen, dass hier im Forum bislang nur über Selection gearbeitet wurde, obwohl in der CAA-Hilfe das Objekt Position direkt dem des Produkts unterstellt ist.
Hier mal der Quelltext:
Sub CATMain()
Dim oProducts As Products
Dim part_null As Object
Dim acoord_in_part()
Dim acoord_part_in_product(11)
Dim oParentDoc As Document
Set oProducts = CATIA.ActiveDocument.Product.Products
For X = 1 To oProducts.Count
Set oParentDoc = oProducts.Item(X).ReferenceProduct.Parent
If TypeName(oParentDoc) = "PartDocument" Then
oParentDoc.Product.Position.GetComponents acoord_part_in_product
sMsgBox = ""
For m = 0 To 11
sMsgBox = sMsgBox & vbCrLf & acoord_part_in_product(m)
Next m
MsgBox (sMsgBox)
End If
Next X
End Sub
Das Problem: Die MessageBox gibt für den Koordinatenursprung (also die letzten drei Zahlen im array) immer den Wert (0;0;0) aus, obwohl ich weiß, dass die Parts definitiv nicht auf dem Einfügepunkt des Produkts liegen.
Ich hoffe, jemand von euch kann mir sagen, wo mein Denkfehler liegt. Danke
Grüße
Lohri
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP