Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Bauteil gedreht platzieren

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
  
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



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

Beiträge: 32
Registriert: 20.06.2005

erstellt am: 29. Jun. 2005 16:29    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

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




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

Beiträge: 1005
Registriert: 01.10.2003

erstellt am: 29. Jun. 2005 19:15    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 Cookiie 10 Unities + Antwort hilfreich

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




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

Beiträge: 3497
Registriert: 01.08.2002

Alienware m17x, Win7, Inventor2012

erstellt am: 29. Jun. 2005 20:20    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 Cookiie 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von PaulSchuepbach:

... ich bin zwar nicht der Web-Designer, aber.... was soll den daran falsch sein ?????

Grüsse,

Paul
www.morecam.ch/cad.htm



Es fehlt ein a  (schon immer aber)

------------------
Grüße daywa1k3r

FX64 Software Solutions
Mold&More Software Solutions

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

PaulSchuepbach
Moderator
Programmierer




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

Beiträge: 1005
Registriert: 01.10.2003

erstellt am: 29. Jun. 2005 21:27    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 Cookiie 10 Unities + Antwort hilfreich

Hi Igor,

wie lange weisst Du das schon ???? - ich habe diese ganze Zeile heute zum  1. Mal gelesen...

Dafür gibt's -10 U's ! Für Dich oder für mich ? - Für uns Beide...


Grüsse,

Paul

www.morecam.ch/cad.htm

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Alienware m17x, Win7, Inventor2012

erstellt am: 30. Jun. 2005 08:31    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 Cookiie 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von PaulSchuepbach:
Hi Igor,

wie lange weisst Du das schon ???? - ich habe diese ganze Zeile heute zum  1. Mal gelesen...

Dafür gibt's -10 U's ! Für Dich oder für mich ? - Für uns Beide...


Grüsse,

Paul

www.morecam.ch/cad.htm


------------------
Grüße daywa1k3r

FX64 Software Solutions
Mold&More Software Solutions

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

lbcad
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. Maschinenbau und CAD-Trainer



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

Beiträge: 3794
Registriert: 15.02.2001

erstellt am: 30. Jun. 2005 11:46    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 Cookiie 10 Unities + Antwort hilfreich

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



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

Beiträge: 32
Registriert: 20.06.2005

erstellt am: 30. Jun. 2005 13:34    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

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 >>)

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