Autor
|
Thema: Befehl Bauteil ausrichten (4361 mal gelesen)
|
Ex-Mitglied
|
erstellt am: 24. Aug. 2010 11:16 <-- editieren / zitieren -->
Hallo, wie kann ich ein Bauteil mit Hilfe von gegebenen x,y, und z Ausrichtung sowie der Drehung um die drei Achsen ausrichten? (Daten liegen in Form einer Excel Tabelle vor. Das Einspielen der Daten funktioniert soweit). |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 24. Aug. 2010 11:20 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 24. Aug. 2010 11:42 <-- editieren / zitieren -->
Mein Problem ist, dass ich das Bauteil nicht direkt ansprechen kann... Wie kann ich das Bauteil drehen? |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 24. Aug. 2010 12:47 <-- editieren / zitieren --> Unities abgeben:
Servus Warum kannst du das Teil nicht ansprechen? (zb oProduct.products.item(1)) Die Drehung und die Ausrichtung sollte alles in einem Array definiert werden könnten. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 24. Aug. 2010 14:31 <-- editieren / zitieren -->
Hallo Bernd, ich möchte das Bauteil um die Achsen drehen. Beispiel für eine Achse: Set angle3 = parameters6.Item() --> was muss hier in die Klammer, wenn ich um die X-Achse drehen möchte? angle3.value = CDbl(WS.Cells(nRow, 7).Value) '--> Wert aus meiner eingelesenen Tabelle
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 24. Aug. 2010 14:48 <-- editieren / zitieren --> Unities abgeben:
Servus Hast das mit deinem andern Problem zu tun? Also Postion aus txt-File auslesen und Componente so im Product zu platzieren? Dann könntest du ja (Umrechnung Euler'sche Winkel) die Richtungsvektoren für die Funktion "SetComponents" verwenden. Oder was hast du vor? Welche Achse meinst du, des Parts, des Product, bestimmtes Achsensystem, ...?? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 24. Aug. 2010 14:55 <-- editieren / zitieren -->
Hallo Bernd, ja genau, ich habe ein Problem mit dem einlesen der Werte aus der txt Datei. Diese ist folgendermaßen aufgebaut und enthält die Informationen zu den Bauteilen wie folgt: Komponentenbezeichnung xKoordinate yKoordinate zKoordinate xDrehung yDrehung zDrehung Die CAD Componente soll zunächst im Raum (Position x,Y und Z) und anschlßeßend entsprechend der Werte um die x,Y und z Achse gedreht werden. Ich habe jedoch keine Idee wie das funktionieren könnte. Gibt es hierzu evtl. ein schon lauffähiges Skript? |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 24. Aug. 2010 19:39 <-- editieren / zitieren --> Unities abgeben:
Servus Das mit der Postion sollte kein Problem sein. Was ist mit den Winkeln? Welche Drehungen sind es (siehe Wikipedia Eulersche Winkel)? Oder Drehungen um das Achsensystem der Baugruppe? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 25. Aug. 2010 07:27 <-- editieren / zitieren -->
Hallo, ich möchte um das Koordinatensystem der Komponente bzw. des Bauteils drehen... |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 25. Aug. 2010 07:54 <-- editieren / zitieren --> Unities abgeben:
Servus Also mit "SetComponents" kannst du die Komponente positionieren. Dazu musst du die Rotationsmatrix berechnen (siehe Wikipedia Rotationsmatrix bzw Eulersche Winkel). Auszug aus der Doku: Zitat: Sets the components of an object's position. This sets the 3D-axis system associated with the object. Parameters: iAxisComponentsArray The array initialized with the components to set to the object's position. The first nine represent succcessively the components of the x-axis, y-axis, and z-axis. The last three represent the coordinates of the origin point. Example: This example sets the 3D-axis system components stored in iAxisComponentsArray to the Position object associated with MyObject: Dim iAxisComponentsArray( 11 ) ' x axis components iAxisComponentsArray( 0 ) = 1.000 iAxisComponentsArray( 1 ) = 0 iAxisComponentsArray( 2 ) = 0.707 ' y axis components iAxisComponentsArray( 3 ) = 0 iAxisComponentsArray( 4 ) = 0 iAxisComponentsArray( 5 ) = 0.707 ' z axis components iAxisComponentsArray( 6 ) = 0 iAxisComponentsArray( 7 ) = -0.707 iAxisComponentsArray( 8 ) = 0.707 ' origin point coordinates iAxisComponentsArray( 9 ) = 1.000 iAxisComponentsArray( 10 ) = 2.000 iAxisComponentsArray( 11 ) = 3.000 MyObject.Position.SetComponents iAxisComponentsArray
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter873 Mitglied
Beiträge: 35 Registriert: 26.08.2010
|
erstellt am: 30. Aug. 2010 17:21 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, kann ich die Komponente auch direkt ausrichten, wenn ich die Raumkoordinaten (x,y,z) und die drei Euler Winkel habe? (Oder funktioniert das nur mit dem von dir gezeigten Beispiel bei dem ich die Rotationsmatrix berechnen muss? Vielen Dank 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: 30. Aug. 2010 17:35 <-- editieren / zitieren --> Unities abgeben:
Servus Eine weiter Möglichkeit wäre drei mal (oder vier mal?)nacheinander eine "move"-Operation auszuführen (siehe Doku). Also Drehung-X, Drehung, Y und Drehung Z + Verschiebung. Ob dass direkt mit deinen gegeben Winkel geht oder nicht (sind es Eulersche Winkel? in welcher Reihenfolge? oder sind es Drehungen um (raumstabil) das Baugruppensystem?) musst du herausfinden. Du kannst die Daten interpretieren, wir nicht. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. [Diese Nachricht wurde von bgrittmann am 30. Aug. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter873 Mitglied
Beiträge: 35 Registriert: 26.08.2010
|
erstellt am: 30. Aug. 2010 17:57 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, danke für deinen Hinweis. Ich habe in der zwischenzeit ein Makro erstellt, dass mir fertig ausgerichtete Koordinatensysteme erzeugt. Der Gedanke ist, dass Bauteil nach diesen Koordinatensystemen auszurichten. Meine Frage: 1. Kann ich ein Bauteil nach dem Koordinatensystem ausrichten? 2. ist das evtl. auch über move oder setcomponents möglich oder kann ich hierbei "nur" das Bauteil direkt ausrichten? 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: 30. Aug. 2010 18:10 <-- editieren / zitieren --> Unities abgeben:
Servus Also von Hand würde ich es mit einer Bedingung machen. Dazu müsste aber in allen Bauteilen ein Achsensystem vorhanden sein (und richtig im Ursprung positioniert sein). Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter873 Mitglied
Beiträge: 35 Registriert: 26.08.2010
|
erstellt am: 30. Aug. 2010 18:12 <-- editieren / zitieren --> Unities abgeben:
|
zoltan.bekesi Mitglied
Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 30. Aug. 2010 18:43 <-- editieren / zitieren --> Unities abgeben:
Hallo, .Move oder .SetComponents ist wie Snap in CATIA interaktiv. Du kannst bei beiden den Matrix angeben, was du bei den Achsensystemen angegeben hast. Alternativ kannst du auch einen Koinzidenz zwischen den erzeugten Achsensystem und den AbsoluteAxis der anderen erstellen. Hierbei hilft dir der Makrorekorder, aber du musst den ersten Achsensystem unbedingt im Baum auswählen. Gruß, Zoltan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter873 Mitglied
Beiträge: 35 Registriert: 26.08.2010
|
erstellt am: 31. Aug. 2010 09:54 <-- editieren / zitieren --> Unities abgeben:
Hallo Zoltan, die Koinzidenzbedingung funktioniert! Alternativ möchte ich jedoch noch die SetComponents Methode ausprobieren. Wenn ich das Array wie folgt belege, "sitzt" meine Komponente dann im Raum (1/2/3) ausgerichtet nach meinem absoluten Achsensystem? (also ohne Drehung) ' x axis components AxisComponentsArray(0) = 1 AxisComponentsArray(1) = 0 AxisComponentsArray(2) = 0 ' y axis components AxisComponentsArray(3) = 0 AxisComponentsArray(4) = 1 AxisComponentsArray(5) = 0 ' z axis components AxisComponentsArray(6) = 0 AxisComponentsArray(7) = 0 AxisComponentsArray(8) = 1 ' origin point coordinates AxisComponentsArray(9) = 1 --> x Raumposition AxisComponentsArray(10) = 2 --> y Raumposition AxisComponentsArray(11) = 3 --> z Raumposition 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: 31. Aug. 2010 10:14 <-- editieren / zitieren --> Unities abgeben:
|
Peter873 Mitglied
Beiträge: 35 Registriert: 26.08.2010
|
erstellt am: 31. Aug. 2010 10:46 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, ok die Angaben und die Ausrichtung passt soweit, wie gedacht. Was ist, wenn ich meine Komponente nun drehen möchte? (an den ersten neun Koordinaten darf ich nichts ändern, sonst "verzieht" es ja mein Bauteil). Kann ich das Array irgendwie erweitern, welches nach den drei Raumkoordinaten die Drehungen um die drei Achsen ermöglicht? 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: 31. Aug. 2010 11:27 <-- editieren / zitieren --> Unities abgeben:
Servus Dann must du die ersten neun Komponenten des Arrays so berechnen, das dabei drei senkrecht aufeinander stehende Einheitsvektoren (die Achsen des Teils) rauskommen. (siehe Rotationsmatrix, Eulersche Winkel, ...) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |