| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
 | Visiativ Blog | Tipps & Tricks rund um SOLIDWORKS und 3DEXPERIENCE. , ein Kurs
|
Autor
|
Thema: Bewegungssimulation PresentationTransform (912 mal gelesen)
|
Black Hawk Mitglied Student

 Beiträge: 14 Registriert: 04.05.2005
|
erstellt am: 09. Mai. 2005 14:46 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen! Ich habe da ein kleines Problem... Ich versuche mittels der SolidWorks API ein Teil aus einer Baugruppe zu bewegen. Es ist ja auch ein schönes Beispiel vorhanden, was ich nach C# umgeschrieben habe. Allerdings passiert bei der Ausführung rein gar nichts, bis auf die Tatsache, dass der Mauszeiger sich verändert, und anzeigt, er sei beschäftigt. In einem älteren Beitrag habe ich bereits gelesen, doch der hat mich nicht weiter gebracht. Irgendwie hab ich auch den Eindruck, dass die einzelnen Komponenten der Matrix in einzelnen Beispielen unterschiedlich benutzt werden. (Unterschied: Use Presentation Transforms to Move Component / MathUtility::CreateTransform) Ich hoffe, dass einigermaßen klar geworden ist, was mein Problem ist und wäre sehr dankbar, wenn jemand mich jemand auf den richtigen Weg bringen könnte. Gruß, Frederik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FlorianGerteisz Mitglied IT-Anwendungsentwickler

 Beiträge: 43 Registriert: 28.04.2005
|
erstellt am: 09. Mai. 2005 15:23 <-- editieren / zitieren --> Unities abgeben:          Nur für Black Hawk
|
Black Hawk Mitglied Student

 Beiträge: 14 Registriert: 04.05.2005
|
erstellt am: 09. Mai. 2005 15:38 <-- editieren / zitieren --> Unities abgeben:         
|
FlorianGerteisz Mitglied IT-Anwendungsentwickler

 Beiträge: 43 Registriert: 28.04.2005
|
erstellt am: 09. Mai. 2005 16:56 <-- editieren / zitieren --> Unities abgeben:          Nur für Black Hawk
Hallo Frederik, hab das Beispiel bei mir laufen lassen. Hab leider das gleiche Problem wie du. Hab auf die schnelle leider die Ursache nicht finden können. In der API-Hilfe von SWX2005 hab ich aber noch was Interessantes gefunden: Zitat:
Aus der API-Hilfe: The preferred way to change the position of an assembly component is to use the DragOperator object. This object allows access to the settings for the Move Component command in the SolidWorks user interface. Components moved with this API honor all assembly mate and in-context relationships. When done moving a component (DragOperator::EndDrag), you might have to call ModelDoc2::EditRebuild3 to update any model geometry.
Schau mal in der Hilfe nach DragOperator vielleicht hilft er dir weiter?! Ich werde nun nach Hause gehen. Falls du bis morgen noch keine Lösung hast, werde ich es mir nochmal anschauen. Schönen Feierabend! flo ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Black Hawk Mitglied Student

 Beiträge: 14 Registriert: 04.05.2005
|
erstellt am: 10. Mai. 2005 10:42 <-- editieren / zitieren --> Unities abgeben:         
Hi nochmal! Hab es mit dem Code, den Du hast, auch noch nicht hinbekommen. Via DragOperator habe ich allerdings bereits Erfolge erzielt! Vielleicht findet ja noch jemand den Fehler im anderen Code... Vielen Dank erstmal! Gruß Frederik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FlorianGerteisz Mitglied IT-Anwendungsentwickler

 Beiträge: 43 Registriert: 28.04.2005
|
erstellt am: 10. Mai. 2005 11:20 <-- editieren / zitieren --> Unities abgeben:          Nur für Black Hawk
Zitat: Original erstellt von Black Hawk:
Vielleicht findet ja noch jemand den Fehler im anderen Code...
Ich habe den Fehler soeben gefunden!!! Bei der Berechnung der Rotationsmatrix machst du:
Code:
arr[2] = 1.2 * ( i/MaxSteps );
Dies entspricht einer Division im Ganzahlbereich
Code:
(double)arr[2] = 1.2 * ( (int)i/(long)MaxSteps );
So lange MaxSteps > i (was bis auf die letzte Berechnung immer vorkommt) ist kommt als Ergebnis immer 0 heraus und somit verändert sich die Matrix auch nicht! Ändere einfach die folgende Zeile
Code:
for ( int i=1; i<=MaxSteps; i++ )
in Code:
for ( double i=1.0; i<=MaxSteps; i++ )
Damit müsste es klappen;-) gruß flo ------------------ [Diese Nachricht wurde von FlorianGerteisz am 10. Mai. 2005 editiert.] [Diese Nachricht wurde von FlorianGerteisz am 10. Mai. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Black Hawk Mitglied Student

 Beiträge: 14 Registriert: 04.05.2005
|
erstellt am: 10. Mai. 2005 11:27 <-- editieren / zitieren --> Unities abgeben:         
|
FlorianGerteisz Mitglied IT-Anwendungsentwickler

 Beiträge: 43 Registriert: 28.04.2005
|
erstellt am: 10. Mai. 2005 11:30 <-- editieren / zitieren --> Unities abgeben:          Nur für Black Hawk
Zitat: Original erstellt von Black Hawk: Das hatte ich nicht gesehen...
Ich auch nicht gleich! Wollte die "Schuld" schon auf SWX schieben;-) Viel Spass noch! gruß flo ------------------ [Diese Nachricht wurde von FlorianGerteisz am 10. Mai. 2005 editiert.] [Diese Nachricht wurde von FlorianGerteisz am 10. Mai. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |