| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | |  | SOLIDWORKS Online-Kurse | Jederzeit verfügbar << , ein Kurs
|
Autor
|
Thema: API - Transformation zwischen Koordinatensystemen (2291 mal gelesen)
|
Thisoft Mitglied Konstrukteur
 
 Beiträge: 178 Registriert: 10.04.2010
|
erstellt am: 11. Okt. 2012 16:06 <-- editieren / zitieren --> Unities abgeben:         
Hallo an die API-Experten. Ich stehe gerade ein wenig vor einem Rätsel Dabei dachte ich, dass meine eigentliche Aufgabenstellung recht simpel wäre. Ich möchte per Makro eine neue Skizze anlegen und anschließend da ein Mittelpunktsrechteck einfügen. Das funktioniert auch wenn ich beim Einfügen des Rechtecks mit festen (aufgezeichneten) X-Y-Z-Werten arbeite. Zum Problem wird's wenn ich den Mittelpunkt auf den Nullpunkt eines Koordinatensystems legen und das Rechteck relativ dazu mit einer definierten Größe versehen will. Hier mal mein Code dazu: Dim swXform As SldWorks.MathTransform = swModelDocExt.GetCoordinateSystemTransformByName("Referenz") If IsNothing(swXform) Then swApp.SendMsgToUser("Referenzkoordinatensystem nicht gefunden!") Exit Sub End If Part.SketchManager.InsertSketch(True) Dim vSkLines As Array = Nothing X1 = swXform.ArrayData(9) * 1000 Y1 = swXform.ArrayData(10) * 1000 Z1 = 0 X2 = (swXform.ArrayData(9) * 1000) + (7.25) Y2 = (swXform.ArrayData(10) * 1000) + (7.25) Z2 = 0 vSkLines = CType(Part.SketchManager.CreateCenterRectangle(X1, Y1, Z1, X2, Y2, Z2), Array) So passiert da aber beim Einfügen des Rechtecks gar nichts. Kann ich auch irgendwie nachvollziehen, dass die X-Y-Z-Angaben so wahrscheinlich Müll sind. Ich vermute, dass ich diese Werte noch irgendwie transformieren muss aber wie und wohin - da stehe ich gerade mächtig auf dem Schlauch. Die Transformationsmatrix des gewünschten MP (Ursprung des CS "Referenz") habe ich ja, aber wohin muss ich die denn transformieren damit SWX damit in der neu erzeugten Skizze etwas anfangen kann? Wäre schön, wenn mich da mal jemand auf den Trichter schubsen könnte Danke und Gruß Thilo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thisoft Mitglied Konstrukteur
 
 Beiträge: 178 Registriert: 10.04.2010 SWX 2018 Standard SP 3 Win10 Professional 64Bit Intel Core i7 7700K 16 GB RAM AMD FirePro W5000 =Beruf SW 2018 Standard SP0 Win10 Professional 64Bit Intel NUC Core i5-6260 12GB RAM Intel Onboard =Privat
|
erstellt am: 16. Okt. 2012 08:49 <-- editieren / zitieren --> Unities abgeben:         
Nur nochmal kurz nach oben schubsen... Frage ich falsch, oder ist mein Ansinnen wirklich so exotisch Naja, vielleicht findet sich ja noch jemand der sowas schon mal gemacht hat. Sonst muss ich mich halt selbst versuchen reinzufitzen... Gruß Thilo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)

 Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 16. Okt. 2012 11:02 <-- editieren / zitieren --> Unities abgeben:          Nur für Thisoft
Hallo Thilo, hab so etwas zwar auch noch nicht gemacht, aber wenn ich das richtig verstehe beziehen sich deine XYZ-Werte des Rechtecks ja auf den Sketch. Der hat nun wiederrum in Bezug auf den Modellraum selbst eine Transformationsmatrix ( Sketch::ModelToSketchTransform ). In der API gibt es im Index unter "Sketch, transform" auch ein Beispiel namens "Transform Sketch to Model Example (VBA)": When a sketch point is created, its x, y, and z location values are in relation to the sketch origin. Using the IMathUtility object, it is possible to display the sketch point’s coordinates in relation to the model origin. Vielleicht hilft dir das dabei weiter die Vektorrechnung für die Transforms richtig hinzubekommen. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
Thisoft Mitglied Konstrukteur
 
 Beiträge: 178 Registriert: 10.04.2010
|
erstellt am: 17. Okt. 2012 10:58 <-- editieren / zitieren --> Unities abgeben:         
Hallo Stefan, danke für den Tip mit "Sketch.ModelToSketchTransform". Das sieht nach dem ersten Test so aus, als ob es genau das ist was ich gesucht habe. Somit habe ich wieder ein Problem gelöst und kann 5 Neue angehen Danke und Gruß Thilo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |