| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | myCAD 2024 Visiativ-Kundentag in Rosenheim, eine Veranstaltung am 29.10.2024
|
Autor
|
Thema: Assembly in einer Makro-Schleife erstellen (861 mal gelesen)
|
juanpablo Mitglied Architekt
Beiträge: 6 Registriert: 21.07.2007
|
erstellt am: 21. Jul. 2007 21:34 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe heute zum ersten mal ein makro in solidworks bearbeitet, da ich keine VB-Kenntnisse habe bin ich sehr früh an meine Grenzen gestossen. Ich habe folgendes Problem: Ich habe in Solidworks eine Form erstellt, von der ich über eine Tabelle unterschiedliche Varianten erzeugt habe (Masse geändert). Jetzt würde ich gerne die einzelnen Formen in einem Assembly nebeneinander aufbauen, sprich jeweils eine abgeänderte Variante nach der anderen einfügen (Platzierung erfolgt über einen Variablen Abstand zum Ursprung). Ich habe ein Makro aufgenommen und versucht dort eine Schleife einzufügen, allerdings komme ich nicht an die Variablen ran. Kann mir jemand bitte weiterhelfen? ..... For i = 1 To 10 Step 1 // Anfang des Loops Set Part = swApp.ActivateDoc2("first_try", False, longstatus) ..... boolstatus = Part.Extension.SelectByID2("Schnitt i@first_try.SLDPRT" , "CONFIGURATIONS", 0, 0, 0, False, 0, Nothing, 0) Part.ShowConfiguration "Schnitt i" // hier ist der Wert der sich him loop ändern soll (Bezeichnung eines Teils) ...... Set Part = swApp.ActivateDoc2("versuch", False, longstatus) ..... Next End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jens_oliver Mitglied Softwareentwickler
Beiträge: 114 Registriert: 28.06.2005
|
erstellt am: 23. Jul. 2007 11:28 <-- editieren / zitieren --> Unities abgeben: Nur für juanpablo
|
juanpablo Mitglied Architekt
Beiträge: 6 Registriert: 21.07.2007
|
erstellt am: 23. Jul. 2007 16:14 <-- editieren / zitieren --> Unities abgeben:
vielen dank für deinen tip, leider funktioniert es nicht. wenn ich den wert manuell ändere (statt "Schnitt 2", "Schnitt 3" eintrage fügt er eben dieses teil auch ein), dann funtioniert es. ich denke, dass "Schnitt "+str(i) nicht funktioniert weil es ausserhalb steht. gibt es eine möglichkeit sich die zeile mal anzeigen zu lassen? sowas wie printline? falls du noch ne idee hast, wäre ich dir dankbar. liebe grüsse, juan pablo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 23. Jul. 2007 16:27 <-- editieren / zitieren --> Unities abgeben: Nur für juanpablo
Hallo juanpablo, kann es sein das wir von der C Welt kommen? In vb werden Kommentare nicht mit \\ sondern mit einem ' eingeleitet Ins Direktfenster der VBA Entwicklungsumgebung (Menü Ansicht > Direktfenster) schreibt man mit Debug.Print. String setzt man am besten mit einem & und nicht mit einem + zusammen. Hier mal der von mir überarbeitete Pfad.
Code:
For i = 1 To 10 Step 1 'Anfang des Loops Set Part = swApp.ActivateDoc2("first_try", False, longstatus) ..... boolstatus = Part.Extension.SelectByID2("Schnitt i@first_try.SLDPRT" , "CONFIGURATIONS", 0, 0, 0, False, 0, Nothing, 0) 'Schnittkonfiguration ins Direktfenster schreiben Debug.Print "Schnitt " & i 'hier ist der Wert der sich him loop ändern soll (Bezeichnung eines Teils) Part.ShowConfiguration "Schnitt " & i ...... Set Part = swApp.ActivateDoc2("versuch", False, longstatus) ..... Next End Sub
------------------ Mfg Daniel Wer A sagt, der muss nicht B sagen. Er kann auch erkennen, dass A falsch war. Bertolt Brecht ------------------ SolidWorks | API | Makro | Schulung | Freeware | Schuler Design Automation GmbH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
juanpablo Mitglied Architekt
Beiträge: 6 Registriert: 21.07.2007
|
erstellt am: 23. Jul. 2007 18:35 <-- editieren / zitieren --> Unities abgeben:
hallo daniel, vielen dank für den tip, es funktioniert. du hast übrigens recht ich programmiere sonst in java. hast du vielleicht noch ne idee wie man ein objekt über das script um die x-achse drehen kann? Sub main() Set swApp = Application.SldWorks For i = 0 To 10 Step 1 Set Part = swApp.ActiveDoc Set SelMgr = Part.SelectionManager ....
Set Part = swApp.ActivateDoc2("first_try", False, longstatus) Debug.Print "Schnitt " & i Part.ShowConfiguration "Schnitt " & i ..... Set Part = swApp.ActivateDoc2("versuch", False, longstatus) Part.AddComponent "C:\Documents and Settings\juan pablo\My Documents\Solidworks\070721_Entwurf\first_try.SLDPRT", 0, 0, 0 // diese letzten drei zahlen geben ja die position der teile im raum an. nehmen wir an du würdest ein part entlang eines rechteckigen pfades einsetzen. weisst du wie man an den ecken jeweils den körper dreht? besten dank und liebe grüsse, juan pablo Next
End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 24. Jul. 2007 07:11 <-- editieren / zitieren --> Unities abgeben: Nur für juanpablo
Guten Morgen Juan Pablo, das ist schon lange her? Ich kann mich aber noch erinnern das es am einfachsten ist die Komponenten in einer Baugruppe mit Hilfe von Ebenen und Achsen zu verbauen. Diese kannst du relativ einfach in der SolidWorks API ansprechen. Durch die Ebenen und Achsen kannst du deine Komponente dann auch in die richtige Richtung drehen, wie es manuell bei Verknüpfungen in SolidWorks auch möglich ist. Verbaue mal eine Komponente und lass den Makrorekorder dabei laufen. Evtl. kann dir aber jemand anders besser weiter helfen. Jetzt gehts erstmal auf Kundentag, neues anschauen! Bis Morgen, viel GLück ------------------ Mfg Daniel Wer A sagt, der muss nicht B sagen. Er kann auch erkennen, dass A falsch war. Bertolt Brecht ------------------ SolidWorks | API | Makro | Schulung | Freeware | Schuler Design Automation GmbH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|