| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Bauteil gedreht platzieren (1892 mal gelesen)
|
Cookiie Mitglied
Beiträge: 32 Registriert: 20.06.2005
|
erstellt am: 29. Jun. 2005 16:29 <-- editieren / zitieren --> Unities abgeben:
Hi, nach meinen anfänglichen Problemen die ich hier geschildert habe http://ww3.cad.de/foren/ubb/Forum50/HTML/009807.shtml Bin ich mittlerweile schon viel weiter. Die Leiterplatte steht und das einlesen der Daten klappt auch wunderbar. Die Bauteile werden richtig positioniert und dargestellt Leider hab ich jetzt ein Problem welches mir doch einiges an Kopfzerbrechen bereitet. Die Bauteile bekommen von mir nicht nur eine Translation, sondern auch eine Rotation mit auf dem Weg (z-achse). Da ich aber einige auch auf der Unterseite der Leiterplatte platzieren muß, muß ich sie ein zweites mal drehen (x-achse). Bei dieser Drehung löscht es mir aber die vorherige Drehung um die z-Achse, das will ich aber auf gar keinen Fall. Kann mir jemand helfen? Den Quelltextauszug hab ich hier mal als Anhaltspunkt, wenn mehr benötigt wird bitte sagen. /Quelltextanfang/ 'neues Bauteil Dim Bauteil As AssemblyComponentDefinition Set Bauteil = ThisApplication.ActiveDocument.ComponentDefinition Dim oTG As TransientGeometry Set oTG = ThisApplication.TransientGeometry Dim oMatrix As Matrix Set oMatrix = oTG.CreateMatrix 'z-Achsenrotation des Bauteils Call oMatrix.SetToRotation((2 * pi / 360 * RotationsWert), oTG.CreateVector(0, 0, 1), oTG.CreatePoint(0, 0, 0)) 'x-Achsenrotation für Seitenlage Call oMatrix.SetToRotation((pi * (Lage - 1)), oTG.CreateVector(1, 0, 0), oTG.CreatePoint(0, 0, 0)) 'Position des Bauteils Call oMatrix.SetTranslation(oTG.CreateVector(xWert, yWert, zWert)) 'Hinzufügen des 3D-Modells zur Baugruppe Dim oOcc As ComponentOccurrence Set oOcc = Bauteil.Occurrences.Add(Projektpfad & "3DModelle\" & Bauteil3D, oMatrix) /Quelltextende/ Die Inventor eigene Hilfe hat mir auch nicht weitergeholfen, es geht zwar ein Bauteil um 2 Achsen gleichzeitig zu drehen, aber dies nur mit dem gleichen Wert. Ich brauche zum Beispiel z-Achse 90° und x-Achse 180°. Ich hoffe das mir jemand helfen kann. Gruß Cookiie P.S.: Gruß an den Webdesigner, schau mal oben links, was ist da falsch??? Inventor VBA Diskussionen rund um die Inventor VBA Progr_A_mmierung .. (Moderator(en) dieses Forums: PaulSchuepbach)
[Diese Nachricht wurde von Cookiie am 29. Jun. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PaulSchuepbach Moderator Programmierer
Beiträge: 1005 Registriert: 01.10.2003
|
erstellt am: 29. Jun. 2005 19:15 <-- editieren / zitieren --> Unities abgeben: Nur für Cookiie
Zitat: Original erstellt von Cookiie: ... P.S.: Gruß an den Webdesigner, schau mal oben links, was ist da falsch??? Inventor VBA Diskussionen rund um die Inventor VBA Progr_A_mmierung .. (Moderator(en) dieses Forums: PaulSchuepbach)
... ich bin zwar nicht der Web-Designer, aber.... was soll den daran falsch sein ????? Grüsse, Paul www.morecam.ch/cad.htm
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 29. Jun. 2005 20:20 <-- editieren / zitieren --> Unities abgeben: Nur für Cookiie
|
PaulSchuepbach Moderator Programmierer
Beiträge: 1005 Registriert: 01.10.2003
|
erstellt am: 29. Jun. 2005 21:27 <-- editieren / zitieren --> Unities abgeben: Nur für Cookiie
|
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 30. Jun. 2005 08:31 <-- editieren / zitieren --> Unities abgeben: Nur für Cookiie
|
lbcad Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau und CAD-Trainer
Beiträge: 3794 Registriert: 15.02.2001
|
erstellt am: 30. Jun. 2005 11:46 <-- editieren / zitieren --> Unities abgeben: Nur für Cookiie
Hallo Michael, ich denke, daß man da mal die Mathematik bemühen muß. Die 2 Drehungen, die Du ausführen möchtest, kannst Du auch darstellen als 1 Drehung um einen anderen Vektor. Leider bin ich da im Moment nicht so ganz parat - aber dann erhältst Du - einen Punkt im Raum, wo der Richtungsvektor ansetzt - einen Richtungsvektor, um den die Drehung stattfindet - einen Drehwinkel und dann hast Du alles, was in die Funktion "SetToRotation" einsetzen mußt. ------------------ Gruß Lothar --------------------------------------------------- Während man es aufschiebt, verrinnt das Leben. —Lucius Annaeus Seneca (ca. 4 v. Chr - 65 n. Chr.) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Cookiie Mitglied
Beiträge: 32 Registriert: 20.06.2005
|
erstellt am: 30. Jun. 2005 13:34 <-- editieren / zitieren --> Unities abgeben:
Hi Lothar, ja deine Idee ist gut und wahrscheinlich die sauberste Lösung. Muß ich nur noch rausfinden wie ich das berechene damit es stimmt. Mittlerweile hab ich aber auch noch nen anderen Ansatz der auch funktioniert. Ich mache einfach eine Matrixtransformation meiner bereits gedrehten Matrix. Wichtig ist das man die Translation erst hinterher macht, da es sonst nicht stimmt. Das ganze sieht im Beispiel dann so aus. Code:
Public Sub AddOccurrence() Dim oAsmCompDef As AssemblyComponentDefinition Set oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition Dim oTG As TransientGeometry Set oTG = ThisApplication.TransientGeometry ' Anlegen zweier Matrizen Dim oMatrix As Matrix Set oMatrix = oTG.CreateMatrix Dim oMatrixNeu As Matrix Set oMatrixNeu = oTG.CreateMatrix 'erste Matrix gedreht Call oMatrix.SetToRotation(3.14159265358979 / 4, oTG.CreateVector(0, 0, 1), oTG.CreatePoint(0, 0, 0)) 'zweite Matrix gedreht und dann erste in zweite transformiert Call oMatrixNeu.SetToRotation(3.14159265358979, oTG.CreateVector(0, 1, 0), oTG.CreatePoint(0, 0, 0)) Call oMatrix.TransformBy(oMatrixNeu) 'Abstand setzen Call oMatrix.SetTranslation(oTG.CreateVector(3, 2, -0.15)) Dim oOcc As ComponentOccurrence Set oOcc = oAsmCompDef.Occurrences.Add("deinBauteil.ipt", oMatrix) End Sub
Ich weiß ist nicht ganz sauber, aber in der Darstellung funktioniert es wunderbar. Vielleicht kann ja wer was mit anfangen, erspart zumindest wilde Rechnerei. Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|