Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  getcomponents ohne Selection

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  getcomponents ohne Selection (713 mal gelesen)
lohri
Mitglied
BA-Student


Sehen Sie sich das Profil von lohri an!   Senden Sie eine Private Message an lohri  Schreiben Sie einen Gästebucheintrag für lohri

Beiträge: 14
Registriert: 06.07.2006

Catia V5 R16

erstellt am: 28. Aug. 2007 16:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

BigCheese
Mitglied
Dipl-Ing


Sehen Sie sich das Profil von BigCheese an!   Senden Sie eine Private Message an BigCheese  Schreiben Sie einen Gästebucheintrag für BigCheese

Beiträge: 130
Registriert: 12.05.2004

CATIA V5R19 SP3

erstellt am: 28. Aug. 2007 18:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für lohri 10 Unities + Antwort hilfreich

Hallo lohri,

die Position wird nicht zwischen Part und Produkt, sondern zwischen Instanz und Produkt abgelegt.
Versuche mal, ob Dir der abgeänderte Code weiterhilft:

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.Ite(X).ReferenceProduct.Parent
                If TypeName(oParentDoc) = "PartDocument" Then
                    sComponentName = oProducts.Item(X).Name
                    Set oComponent = oProducts.Item(sComponentName)
                    oComponent.Position.GetComponents acoord_part_in_product
                    sMsgBox = ""
                    For m = 0 To 11
                    sMsgBox = sMsgBox & vbCrLf & acoord_part_in_product(m)
                    Next
                    MsgBox (sMsgBox)
                End If
        Next
End Sub


Grüße, Alex

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

lohri
Mitglied
BA-Student


Sehen Sie sich das Profil von lohri an!   Senden Sie eine Private Message an lohri  Schreiben Sie einen Gästebucheintrag für lohri

Beiträge: 14
Registriert: 06.07.2006

Catia V5 R16

erstellt am: 28. Aug. 2007 18:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hey Alex,

tausend Dank (oder besser 10fachen) für so eine schnelle Antwort, da kann ich jetzt gleich weitermachen.
Die CAA-Hilfe hat mich in diesem Fall wohl sehr erfolgreich in die Irre geführt.
Viele Grüße
Lohri

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz