Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Makro Gleichung hinzufügen

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
  
Hoffmann Expertenseminar "Digitale Prozess- und Fertigungslösungen"
Autor Thema:  Makro Gleichung hinzufügen (2026 mal gelesen)
masamundy
Mitglied


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

Beiträge: 6
Registriert: 13.02.2009

erstellt am: 13. Feb. 2009 10:19    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,

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


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

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 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 masamundy 10 Unities + Antwort hilfreich

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


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

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 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 masamundy 10 Unities + Antwort hilfreich

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


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

Beiträge: 6
Registriert: 13.02.2009

erstellt am: 13. Feb. 2009 14:06    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,

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


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

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 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 masamundy 10 Unities + Antwort hilfreich

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


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

Beiträge: 6
Registriert: 13.02.2009

erstellt am: 13. Feb. 2009 14:32    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,

ich benutze SW2007 da ist der Add Befehl für den EquationMgr nicht gelistet nur GetEquation.

Mit EquationMgr.Add funktioniert es auch nicht.

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

tbd
Mitglied
Teamleiter


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

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 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 masamundy 10 Unities + Antwort hilfreich

Hallo,

den Befehl gibt es seit Version 2001+.
Schau dir einfach mal das Beispiel in der API Hilfe an. Dort wird gezeigt wie du die benötigten Objekte initialisierst und verwendest.

------------------
Mfg Daniel

www.MySldWorks.de - SolidWorks API Snippets

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

masamundy
Mitglied


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

Beiträge: 6
Registriert: 13.02.2009

erstellt am: 02. Mrz. 2009 08:40    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,

habs total verschwitzt zu Antworten. Es hat mit der Api Hilfe und dem Befehl geklappt.

Vielen Dank.

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