| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Hoffmann Expertenseminar "Digitale Prozess- und Fertigungslösungen" |
Autor
|
Thema: Makro Gleichung hinzufügen (2026 mal gelesen)
|
masamundy Mitglied
Beiträge: 6 Registriert: 13.02.2009
|
erstellt am: 13. Feb. 2009 10:19 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe ein Makro geschrieben, welches mir ermöglichen soll Gleichungen in einem Assembly hinzuzufügen. Dabei variiert der Name der Parts, jedoch sind die Namen der Maße also z.B. D6@skizze1 immer gleich es variiert nur der Dateiname also z.b. D6@skizze1@variabel.part. Mein problem ist nun, dass der Befehl part.addrelation() keine Variablen kennt. Der Befehl ist dumm und nimmt nur dass was direkt dahinter in "" steht nicht aber einen variablen wert. Mein Code: gname = """""""D6@Skizze1@" & variabel & ".Part""""=""""RD1@Beschriftung""""/2""" Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc Set SelMgr = Part.SelectionManager Part.DeleteAllRelations Part.addrelation gname Mit dem Untersten Befehl part.addrelation """D1@Skizze@nichtvariabel.part=""rd1@beschriftung""/2"
wird die Gleichung sofort eingefügt. Jedoch ist der Name des Parts nicht variabel, was er aber in wirklichkeit sein soll. Kennt ihr eine Lösung? Danke Gruß MaSa
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: 13. Feb. 2009 12:48 <-- editieren / zitieren --> Unities abgeben: Nur für masamundy
Hallo MaSa, natürlich ist der Befehl ModelDoc2.AddRelation "dumm". SolidWorks kann sich ja nicht aus den Fingern saugen, welche Komponente du in deiner Baugruppe meinst. Du muss dir also selbst eine Lösung überlegen. Denkbar wäre:
- Anwender muss über eine UserForm den Namen der gewünschten Komponente angeben.
- Du ermittelst alle Komponenten und somit dessen Namen in der Baugruppe.
- Du hinterlegst das betroffene Maß, in deinem Fall D6@Skizze1 in eine Dokumenteigenschaft und arbeitest mit dieser.
Ich persönlich würde die dritte Variante verwenden, da du somit meiner Meinung nach relativ einfach festlegen kannst, welche Komponenten betroffen sind und welche nicht. Dazu musst du mit Hilfe der entsprechenden ModelDoc2 Instanz der Komponenten die Dokumenteigenschaft ermitteln. Wenn in dieser ein Inhalt vorhanden ist, dann kannst du mit Hilfe des Inhalts deine Gleichung in die Baugruppe für diese Komponente hinzuzufügen. ------------------ Mfg Daniel www.MySldWorks.de - SolidWorks API Snippets Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Iwona W. Mitglied Konstrukteurin, SWX key-user
Beiträge: 130 Registriert: 25.04.2005 SWX 2011, SP 4.0 Win 7 64bit; AS 32GB; Intel Xeon 3,40GHz NVidia Quadro 4000
|
erstellt am: 13. Feb. 2009 12:54 <-- editieren / zitieren --> Unities abgeben: Nur für masamundy
Der Part-Name ist ja abfragbar. Kannst Du nicht eine neue Variable Bilden (String), die u.a. den Namen enthält? Name = swModel.GetPathName part.addrelation """D1@Skizze@ § Name § =""rd1@beschriftung""/2" ??? Gruß ------------------ Iwona Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
masamundy Mitglied
Beiträge: 6 Registriert: 13.02.2009
|
erstellt am: 13. Feb. 2009 14:06 <-- editieren / zitieren --> Unities abgeben:
Hallo, und danke erstmal für die Antworten. Ich denke ich habe mich falsch ausgedrückt, bzw. meine Frage wurde missverstanden. Erstmal wird bei mir der Name des Parts auf welches sich die Gleichung beziehen soll schon zuvor ausgelesen und bearbeitet, sodass nur der Name ohne .SLDPRT und Pfad ausgelesen wird. Dies wird schon korrekt erledigt und funktioniert auch gut. Zweitens weise ich den Ausgelesenen Namen z.B. Bolzen einer Variablen zu, z.B. Teil= "bolzen" Normalerweise könnte man sich die Gleichung nun z.B. so zusammenbauen: gleichung= "D1@skizze@" &Teil &".Part = 30+90" Laut Theorie müsste dann der Befehl "Part.AddRelation gleichung" funktionieren. Der Befehl reagiert aber nur auf direkte Eingaben in Form von Part.Addrelation "blablabla". Zur überpfüfung wird die Gleichung in einer Msgbox korrekt wiedergegeben. Ich dreh schon echt am Rad. Der Befehl lässt mich verzweifeln. Er bringt nicht mal eine Fehlermeldung sonder durchläuft das Skript aber die Gleichung wird nicht erstellt. Per Handeingabe funktioniert alles wunderbar. Leider sind das bei uns aber immer verschiedene Parts sodass eine Pauschalgleichung nichts bringt. Hoffe das Problem wurde nun richtig erklärt.
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: 13. Feb. 2009 14:24 <-- editieren / zitieren --> Unities abgeben: Nur für masamundy
Hallo, wenn ich in die API Hilfe schaue sehe ich das der ModelDoc2.AddRelation vom EquationMgr.Add Befehl ersetz wurde. Ich würde also mal den neuen verwenden und schauen ob es damit funktioniert. Schau dir dazu am besten mal das Beispiel "Use IIf Function When Adding an Equation Example (VB)" in der API Hilfe an. ------------------ Mfg Daniel www.MySldWorks.de - SolidWorks API Snippets Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
masamundy Mitglied
Beiträge: 6 Registriert: 13.02.2009
|
erstellt am: 13. Feb. 2009 14:32 <-- editieren / zitieren --> Unities abgeben:
|
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: 13. Feb. 2009 14:37 <-- editieren / zitieren --> Unities abgeben: Nur für masamundy
|
masamundy Mitglied
Beiträge: 6 Registriert: 13.02.2009
|
erstellt am: 02. Mrz. 2009 08:40 <-- editieren / zitieren --> Unities abgeben:
|