Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API-Simulation

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 SOLIDWORKS
  
Smart Engineering Session: CAD-Automation in SOLIDWORKS in Nürnberg, eine Veranstaltung am 15.09.2026
Autor Thema:  API-Simulation (1578 mal gelesen)
stucki
Mitglied
Ingenieur


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

Beiträge: 73
Registriert: 30.04.2004

erstellt am: 06. Jul. 2004 11:21    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


Machinekinematic_problem_Drag.zip

 
Hallo,
ich schlag mich mit einem Problem herum, dessen Lösung einige von Euch vielleicht nur so aus dem Ärmel schütteln.
In meiner Applikation habe ich eine mehrachsige Maschine, dessen Achsen ich simultan bewegen will. Das ganze sollte dabei auch noch ruckfrei ablaufen (Simulation).
Ich schaffe dies, solange ich die drei linearen Achsen X,Y,Z habe, welche normal zueinander stehen. Das Problem fängt da an wo ich gleichzeitig eine Rotationsachse und eine Linearachse bewegen will.

Ich versuche das Problem mit DragOperator: rag zu lösen. Das funktioniert gut für die linearen Achsen.

Ich habe ein Assembly beigelegt. Dieses beinhaltet eine C_Axis und ein X_Axis_Sledge. Wenn ich in diesem Beispiel die C_Axis über DragOperator: rag bewege, dann bewegt sich ebenfalls der X_Axis_Sledge in X-Richtung. Das darf nicht sein!!
Das erste Problem ist also die C_Axis zu bewegen ohne dass sich der X_Axis_Sledge bewegt und zwar ohne dass ich den X_Axis_Sledge über ein mate(Verknüpfung) fixiere.
Das eigentliche Ziel ist es dann die C_Axis beispielsweise um 90° zu drehen und gleichzeitig die X_Axis_Sledge um 100mm in X-Richtung zu  verschieben das ganze so dass es ruckfrei abläuft. (Simulation)

Wer mir dieses Problem lösen kann (Beispielprogramm in beliebiger Sprache), den werde ich in mein Herz schliessen. 

viel Spass

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

JR
Mitglied
Konstrukteur


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

Beiträge: 106
Registriert: 21.10.2003

Alibre Design Expert V26
Keyshot 11.2

erstellt am: 07. Jul. 2004 06:50    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 stucki 10 Unities + Antwort hilfreich

Hallo stucki,
ich hätte da eine Idee, ob's aber die einfachste Lösung ist, kann ich nicht beurteilen.
Um ein richtiges Makro auszuarbeiten fehlt mir im Moment ein wenig Zeit, daher nur Pseudo-Code.
Meine Idee die X-Achse um 100mm zu bewegen und gleichzeitig die C-Achse um 90° zu drehen ist folgende:

Code:

Dim XAxis_XForm As SldWorks.MathTransform
Dim CAxis_XForm As SldWorks.MathTransform
Dim iSteps      As Integer

' Transformationsmatrix von X_AxisSledge holen
XAxis_XForm = Component2.Transform2

' Transformationsmatrix von C_Axis holen
CAxis_XForm = Component2.Transform2

' Schleife mit 100 Schritten (1mm / Schritt)
For iSteps = 1 To 100

  ' Translation von 1mm für X_AxisSledge addieren
  XAxis_XForm += 1

  ' Rotation von 0,9° für C_Axis addieren
  CAxis_XForm += 0.9

  ' Transformationsmatrix der X_AxisSledge setzen (verändert die Geometrie !)
  Component2.Transform2 = XAxis_XForm
  ODER
  ' Darstellungsmatrix der X_AxisSledge setzen (verändert nur die Darstellungsmatrix)
  Component2.PresentationTransform = XAxis_XForm

  ' Transformationsmatrix der C_Axis setzen (verändert die Geometrie !)
  Component2.Transform2 = CAxis_XForm
  ODER
  ' Darstellungsmatrix der C_Axis setzen (verändert nur die Darstellungsmatrix)
  Component2.PresentationTransform = CAxis_XForm

  ' Das ganze neuzeichnen
  ' (dadurch entsteht der Eindruck, dass sich beide Bauteile gleichzeitig bewegen)
  ModelDoc2.Rebuild swUpdateMates

Next iSteps


Wie gesagt, es ist nur eine Idee.
Die APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface) ist so umfangreich und bietet so viele Möglichkeiten, dass es wahrschleinlich noch einfachere Lösungen gibt.

Gruß Jörn

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

stucki
Mitglied
Ingenieur


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

Beiträge: 73
Registriert: 30.04.2004

erstellt am: 07. Jul. 2004 12:17    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


Hallo Jörn,
Dein Vorghehen sieht interessant aus und ich versuche es nachzubilden. Bloss, kannst Du mir noch verraten, wie ich am elegantesten

' Rotation von 0,9° für C_Axis addieren
  CAxis_XForm += 0.9

im Code umsetze ?

gruss tom


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

JR
Mitglied
Konstrukteur


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

Beiträge: 106
Registriert: 21.10.2003

Alibre Design Expert V26
Keyshot 11.2

erstellt am: 07. Jul. 2004 13:00    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 stucki 10 Unities + Antwort hilfreich

Hallo Tom,
addieren war in diesem Fall auch nicht so richtig.
Eigentlich muß man eine Translationsmatrix (mit 1mm) und eine Rotationsmatrix (mit 0.9°) erstellen.
Die Translationsmatrix muß dann mit der XAxis_XForm und die Rotationsmatrix mit der CAxis_XForm multipliziert werden.
Unter http://www.coin3d.org/ gibt es eine schöne C++ 3D Grafik-Bibliothek in der auch eine Klasse SbMatrix enthalten ist.
Ich selbst habe aber auch noch nicht mit Matrizen unter SWX programmiert, aber in der API-Hilfe gibt es unter MathUtility ein paar interessante Methoden wie ComposeTransform(), CreateTransform() und CreateTransformRotateAxis()

Ich hoffe das hilft Dir schon mal ein bißchen weiter.

Gruß Jörn

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

JR
Mitglied
Konstrukteur


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

Beiträge: 106
Registriert: 21.10.2003

erstellt am: 07. Jul. 2004 13:26    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 stucki 10 Unities + Antwort hilfreich

Ich hab gerade gesehen, in Stefan's Makro zum Mittelkreuze erstellen (siehe http://solidworks.cad.de/mm_11.htm ) kann man sehr schön das Rechnen mit Matrizen sehen.

Gruß Jörn

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

stucki
Mitglied
Ingenieur


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

Beiträge: 73
Registriert: 30.04.2004

erstellt am: 07. Jul. 2004 13:36    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

Hallo Jörn,
besten Dank für Deine wertvollen Tips. Ich führe mir die Sachen mal zu Gemüte.

gruss tom

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

stucki
Mitglied
Ingenieur


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

Beiträge: 73
Registriert: 30.04.2004

erstellt am: 07. Jul. 2004 17:13    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


Hallo Jörn,
das überlagern der Bewegungen kriege ich nun sauber hin. (Dank deinen Hinweisen)
Was mich noch stört ist die Sache mit dem Rebuilden nach jedem Step.
Das einzige was bei mir zuverlässig etwas nützt ist ModelDoc2::ForceRebuild3. Das sieht leider nicht sehr schön aus. Ich habs auch noch mit PresentationTransform versucht. Da passiert bei mir aber gar nichts. Muss ich da vielleicht noch was dazuschalten?

Ich starte meine Applikation nicht als AddIn sondern als externen Prozess. Weiss jemand, ob das Nachteile bringt?

gruss tom


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

Ralf Tide
Moderator
-




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

Beiträge: 4999
Registriert: 06.08.2001

Sehr seltsame Dinge passiern <Klaus Lage - Toy Story>
.-)

erstellt am: 07. Jul. 2004 19:18    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 stucki 10 Unities + Antwort hilfreich

Hallo tom,

ein Trick der Trickfilmer: immer zwei (gleiche) Bilder machen, dann sieht die Bewegung flüssiger, weicher, harmonischer aus (wenn es das ist was Du meinst  )

HTHHope that helps = Hoffe es hilft, beste Grüße & bis demnäx
Ralf

------------------

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

JR
Mitglied
Konstrukteur


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

Beiträge: 106
Registriert: 21.10.2003

erstellt am: 08. Jul. 2004 06:42    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 stucki 10 Unities + Antwort hilfreich

Hallo tom,
das mit dem Rebuild hatte ich aus der APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface)-Hilfe (Stichwort Transform2). Da steht das unter Remarks.
Hast Du es schon mal mit der Option swRebuildAll bzw. swForceRebuildAll statt swUpdateMates versucht ?
Die PresentationTransform muß laut Hilfe mit ModelDoc2::GraphicsRedraw2 aktualisiert werden.

Gruß Jörn

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

stucki
Mitglied
Ingenieur


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

Beiträge: 73
Registriert: 30.04.2004

erstellt am: 08. Jul. 2004 08:36    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

Hallo zusammen,
habe rausgefunden dass ich noch ein ModelDoc2::WindowsRedraw machen muss. Mit ModelDoc2::Rebuild alleine tut sich visuell noch gar nichts. (Dafür kann ich ModelDoc2::ForceRebuild3 streichen)

m_swModel.Rebuild(swRebuildOptions_e.swUpdateMates);
m_swModel.WindowRedraw();

Bemerkung: Ich programmier noch nicht lange mit dieser APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface) und grundsätzlich macht es mir spass mit SolidWorks und der APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface) zu programmieren. Ich finde jedoch die Beschreibung der Methoden in der APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface) sehr knapp so dass das Programmieren eher zu einem Experimentieren verkommt. Mann muss die einzelnen Methoden erstmals in verschiedensten Kombinationen einsetzten um herauszufinden was sich nun wirklich tut. Ich weiss aber auch aus eigener erfahrung dass es schwierig ist Methoden so zu beschreiben, dass andere Leute etwas damit korrekt(im Sinne des Erfinders), anfangen können.

Was ich an SolidWorks und der APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface) toll finde ist die Hilfsbereitschaft der Forummitglieder. Ich hoffe dass mein Wissensstand mal so angewachsen ist, dass ich mich da auch mal revanchieren kann.

@Jörn:
ModelDoc2::GraphicsRedraw2 in Zusammenhang mit PresentationTransform probier ich noch aus.

gruss tom

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

stucki
Mitglied
Ingenieur


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

Beiträge: 73
Registriert: 30.04.2004

erstellt am: 08. Jul. 2004 09:21    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


Hallo,

Hab was rausgefunden:
Damit ich Component2::PresentationTransform benutzen kann muss ich vorher AssemblyDoc::EnablePresentation auf true setzten. (danach wieder auf false)
Ob ich dann ModelDoc2::GraphicsRedraw2 benutze oder ModelDoc2::WindowRedraw, da kann ich keinen unterschied feststellen.

gruss tom

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)2024 CAD.de | Impressum | Datenschutz