| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: ipt um Achse drehen (1530 mal gelesen)
|
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 14. Feb. 2006 00:12 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich würde gern ipt's und iam's um die 3 Achsen mit einem Button um 90° weiterdrehen. Ist das möglich? Das Drehen um die Achse, die senkrecht auf dem Bildschirm steht geht. Code: Private Sub cmdL_Click()Dim oview As View Set oview = ThisApplication.ActiveView Dim oCamera As Camera Set oCamera = oview.Camera oX = oCamera.Eye.X - oCamera.Target.X oY = oCamera.Eye.Y - oCamera.Target.Y oZ = oCamera.Eye.Z - oCamera.Target.Z Set oNewUp = ThisApplication.TransientGeometry.CreateUnitVector(oX, oY, oZ) oCamera.UpVector = oCamera.UpVector.CrossProduct(oNewUp) 'oCamera.UpVector = oNewUp.CrossProduct(oCamera.UpVector) oCamera.Apply oCamera.Fit End Sub Private Sub cmdO_Click() End Sub Private Sub cmdR_Click() Dim oview As View Set oview = ThisApplication.ActiveView Dim oCamera As Camera Set oCamera = oview.Camera oX = oCamera.Eye.X - oCamera.Target.X oY = oCamera.Eye.Y - oCamera.Target.Y oZ = oCamera.Eye.Z - oCamera.Target.Z Set oNewUp = ThisApplication.TransientGeometry.CreateUnitVector(oX, oY, oZ) 'oCamera.UpVector = oCamera.UpVector.CrossProduct(oNewUp) oCamera.UpVector = oNewUp.CrossProduct(oCamera.UpVector) oCamera.Apply oCamera.Fit End Sub Private Sub cmdU_Click() End Sub Private Sub UserForm_Activate() Dim oview As View Set oview = ThisApplication.ActiveView Dim oCamera As Camera Set oCamera = oview.Camera oCamera.ViewOrientationType = kTopViewOrientation oCamera.Apply End Sub
Komme mit dem Camera-Objekt aber nicht so ganz klar. In cmdO bzw. cmdU sollte das Teil um die Achse gedreht werden, die parallel zum Bilschirm ist. Hab noch nen anderen
Code:
Dim oview As View Set oview = ThisApplication.ActiveView Dim oCamera As Camera Set oCamera = oview.Camera Dim ModVec As UnitVector Set ModVec = oCamera.UpVector Dim oMatrix As Matrix Dim ovec As Vector Dim otg As TransientGeometry Set otg = ThisApplication.TransientGeometry Set ovec = otg.CreateVector(0, 1, 0)Set oMatrix = ThisApplication.TransientGeometry.CreateMatrix Call oMatrix.SetToRotation(180 * 3.14159265358979 / 180, ovec, ThisApplication.TransientGeometry.CreatePoint(0, 0, 0)) Call ModVec.TransformBy(oMatrix) oCamera.UpVector = ModVec oCamera.Apply
Damit ist aber auch nur ein Drehen um eine Achse möglich. Kann da wer helfen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 23. Feb. 2006 21:21 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|