Autor
|
Thema: Part im Product neu positionieren (2965 mal gelesen)
|
schus Mitglied Dipl. Ing. (FH)
Beiträge: 4 Registriert: 27.06.2012 CATIA V5R19 HF49 Win7 64bit
|
erstellt am: 27. Jun. 2012 08:38 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich muss gleich vorweg sagen, dass ich bisher nur kleinere Makros erstellt habe. Nun habe ich die Aufgabe ein Makro zu machen, welches importierte STEP Dateien, die mit dem falschen Faktor importiert wurden zu korrigieren. Da die importierten Daten nachher in einem Makro weiter verarbeitet werden (das funktioniert auch) ist der Wunsch die Korrektur gleich im Makro mit zu erledigen. Nach dem Import gibt es ein Product mit mehreren Parts, die um den Faktor 1000 falsch positioniert sind (z.B. X=300 sollte aber X=0,3 sein). Ich benötige also kein Translate um einen bestimmten Wert, sondern müsste die vorhandenen Koordinaten durch 1000 teilen. Mein Gedanke ist momentan. Die Koordinaten der Achsen zu bestimmen und dann die Koordinaten neu zu berechnen. Hat jemand sowas schon mal gemacht? Jede Hilfe kommt mir gelegen. Danke im voraus! Gruß schus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ancela Mitglied Techn. Zeichnerin
Beiträge: 316 Registriert: 09.11.2004
|
erstellt am: 27. Jun. 2012 09:12 <-- editieren / zitieren --> Unities abgeben: Nur für schus
Hallo schus, die Koordinaten von einem Bauteil sieht man und kann man ändern, wenn man es fixiert, die Fixierung doppelklickt und im Fenster auf "mehr" klickt. Vielleicht hilft Dir das weiter. Gruß Angela Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schus Mitglied Dipl. Ing. (FH)
Beiträge: 4 Registriert: 27.06.2012 CATIA V5R19 HF49 Win7 64bit
|
erstellt am: 27. Jun. 2012 09:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Angela, danke für die schnelle Antwort. Habe ein Part fixiert und mir dann die Constraint Definition angesehen. Leider sind die Werte von X,Y,Z = 0. Wenn ich den Achsenursprung des Parts im Product messe, habe ich einen Wert X=337mm. Wie komme ich an diese Werte ran. Gibt es einen Code, wie z.B. GetCoordinates.Axis...? Gruß schus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 27. Jun. 2012 10:29 <-- editieren / zitieren --> Unities abgeben: Nur für schus
Servus Da fallen mir zwei Möglichkeiten ein: - mit einer Schleife alle Products deines Assemblys abarbeiten, und dabei über "GetComponents" die Koordinaten auslesen, dann die Werte modifizieren und über "SetComponents" die korrigierte Position zuweisen - die STEP-Datei mal mit einem Text-Detor öffnen, und schauen, ob du ggf durch editieren des Headers (Einheiten) die Postionen korrigieren kannst Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 27. Jun. 2012 10:40 <-- editieren / zitieren --> Unities abgeben: Nur für schus
|
schus Mitglied Dipl. Ing. (FH)
Beiträge: 4 Registriert: 27.06.2012 CATIA V5R19 HF49 Win7 64bit
|
erstellt am: 27. Jun. 2012 11:01 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, habe ich gleich ausprobiert. Ergebnis ist leider nicht richtig, obwohl der Kompass auf den Nullpunkt springt. Aber in GUI (Form) sind die Werte bereits auf 0,0,0??? ****************************************** Set products1 = product1.Products Set product2 = products1.Item("Test") Set move1 = product2.Move Set move1 = move1.MovableObject Dim arrayOfVariantOfDouble1(11) arrayOfVariantOfDouble1(0) = 1.000000 arrayOfVariantOfDouble1(1) = 0.000000 arrayOfVariantOfDouble1(2) = 0.000000 arrayOfVariantOfDouble1(3) = 0.000000 arrayOfVariantOfDouble1(4) = 1.000000 arrayOfVariantOfDouble1(5) = 0.000000 arrayOfVariantOfDouble1(6) = 0.000000 arrayOfVariantOfDouble1(7) = 0.000000 arrayOfVariantOfDouble1(8) = 1.000000 arrayOfVariantOfDouble1(9) = 0.000000 arrayOfVariantOfDouble1(10) = 0.000000 arrayOfVariantOfDouble1(11) = 0.000000 move1.Apply arrayOfVariantOfDouble1 Set move1 = product2.Move Set move1 = move1.MovableObject Dim arrayOfVariantOfDouble2(11) arrayOfVariantOfDouble2(0) = 1.000000 arrayOfVariantOfDouble2(1) = 0.000000 arrayOfVariantOfDouble2(2) = 0.000000 arrayOfVariantOfDouble2(3) = 0.000000 arrayOfVariantOfDouble2(4) = 1.000000 arrayOfVariantOfDouble2(5) = 0.000000 arrayOfVariantOfDouble2(6) = 0.000000 arrayOfVariantOfDouble2(7) = 0.000000 arrayOfVariantOfDouble2(8) = 1.000000 arrayOfVariantOfDouble2(9) = 0.000000 arrayOfVariantOfDouble2(10) = 0.000000 arrayOfVariantOfDouble2(11) = 0.000000 move1.Apply arrayOfVariantOfDouble2 End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 27. Jun. 2012 12:09 <-- editieren / zitieren --> Unities abgeben: Nur für schus
Servus Nur um sicherzugehen, dass wir nicht aneinander "vorbei reden". Wie sieht deine Produktstruktur aus? Du hast eine Baugruppe, in dieser sind Parts verbaut, diese sind nicht in Einbaulage modelliert? (also der Ursprung der Parts liegt nicht im Baugruppen Ursprung) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schus Mitglied Dipl. Ing. (FH)
Beiträge: 4 Registriert: 27.06.2012 CATIA V5R19 HF49 Win7 64bit
|
erstellt am: 27. Jun. 2012 12:23 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, nach dem STEP Import habe ich nun ein Product mit Parts. Die Parts sind zum Ursprung des Products verschoben, z.B. um X=-317mm. Dieser Wert soll jetzt aber auf X=-0.317mm korregiert werden!Die Parts müssten also alle neu zum Ursprung des Products ausgerichtet werden. Viele Grüße schus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 27. Jun. 2012 12:37 <-- editieren / zitieren --> Unities abgeben: Nur für schus
Servus Ich würde das Problem so angehen: Code: Sub CATMain()Dim productDocument As productDocument Dim childProduct 'As Product Dim RootProduct As Product Dim arrayPosition(11) Set productDocument = CATIA.ActiveDocument Set RootProduct = productDocument.Product
For Each childProduct In RootProduct.Products 'Position auslesen childProduct.Position.GetComponents arrayPosition 'Position korrigieren arrayPosition(9) = arrayPosition(9) * 0.001 arrayPosition(10) = arrayPosition(10) * 0.001 arrayPosition(11) = arrayPosition(11) * 0.001 'Position zuweisen childProduct.Position.SetComponents arrayPosition Next
End Sub
Nicht mit Komponenten oder Unterbaugruppen getestet. Keine Fehlerbehandlung implementiert. Keine Bedingungen in der Baugruppe vorhanden.Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |