Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  einfacher Makro

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
  
3DEXPERIENCE Conference 2024 | München, Veranstaltung am 17.10.2024
Autor Thema:  einfacher Makro (2390 mal gelesen)
Windpirat
Mitglied



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

Beiträge: 39
Registriert: 29.04.2009

erstellt am: 29. Apr. 2009 16:20    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 Leute,
habe mir ein Makro geschrieben der nur Überprüft welches von zwei geladenen Parts im Vordergund ist und ggf. den anderen dann nach vorne lädt

Sub main2()
  Dim swApp As SldWorks.SldWorks
  Dim swModel As SldWorks.ModelDoc2
 
  Set swApp = Application.SldWorks
  Set swModel = swApp.ActiveDoc

  If swModel.GetPathName = "E:\Datein\Studium\5sem - Xsem\Sem. 8\CAD_Appl - Prof_Stelzer\Ü2\Teil1.sldprt" Then
     MsgBox "Teil1.sldprt ist geladen --> Aktiviere Teil2.sldprt"
     swApp.ActivateDoc2 "E:\Datein\Studium\5sem - Xsem\Sem. 8\CAD_Appl - Prof_Stelzer\Ü2\Teil2.sldprt", True, 0
     'MsgBox "Teil2.sldprt geladen"
 
  Else
     MsgBox "Teil2.sldprt ist geladen --> Aktiviere Teil1.sldprt"
     swApp.ActivateDoc2 "E:\Datein\Studium\5sem - Xsem\Sem. 8\CAD_Appl - Prof_Stelzer\Ü2\Teil1.sldprt", True, 0
     'MsgBox "Teil1.sldprt geladen"
 
  End If
 
  MsgBox "Main2 fertig"
 
End Sub

Allerdings springt das makro beim Durchlauf immer sofort in den Else zweig.
Kann es sein das VB diesen Pfadnamen nicht verarbeiten kann?

[Diese Nachricht wurde von Windpirat am 29. Apr. 2009 editiert.]

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

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))


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

Beiträge: 1378
Registriert: 20.12.2003

SolidWorks 2023 SP5 mit Enterprise PDM , Windows 11, Dell Precision 3660, i7-12700K, 96 GB DDR-Ram, Quadro RTX A4000

erstellt am: 29. Apr. 2009 17: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 Nur für Windpirat 10 Unities + Antwort hilfreich

Hallo Windpirat,

du musst die Extension in SLDPRT ändern, dann müsste es gehen.
Wenn du dir den Ausdruck swModel.GetPathName mal im Überwachungsfenster anschaust,
dann wirst du erkennen, dass du die Extension so zurückbekommst. Und der
Vergleich von *.sldprt ist nun mal nicht identisch mit *.SLDPRT   

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

Windpirat
Mitglied



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

Beiträge: 39
Registriert: 29.04.2009

erstellt am: 11. Mai. 2009 13:53    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

nochmal ein anderes Problem.
Kann mir jemand sagen warum folgender Makro nicht funzt?
Neues teil soll erstellt werden und dann nach eingabe eines neuen names gespeichert werden!

Sub main4()

  Dim swApp As SldWorks.SldWorks
  Dim swModel As SldWorks.ModelDoc2
  Dim datName As String
   
  Set swApp = Application.SldWorks
  Set swModel = swApp.NewDocument("E:\Datein\Studium\5sem - Xsem\Sem. 8\CAD_Appl - Prof_Stelzer\Ü Home\Ü2_2\meineDatei.SLDPRT", 0, 0, 0)
  datName = InputBox("Bitte Dateiname eingeben: ")
  If datName <> "" Then
    'Debug.Print swModel.GetPathName
    Debug.Print datName
    swModel.SaveAsSilent "E:\Datein\Studium\5sem - Xsem\Sem. 8\CAD_Appl - Prof_Stelzer\Ü Home\Ü2_2\" & datName, False
    'Debug.Print Datname
  End If
 
End Sub

Fehler schein in der zeile swModel.SaveAsSilent ... zu sein

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

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))


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

Beiträge: 1378
Registriert: 20.12.2003

SolidWorks 2023 SP5 mit Enterprise PDM , Windows 11, Dell Precision 3660, i7-12700K, 96 GB DDR-Ram, Quadro RTX A4000

erstellt am: 11. Mai. 2009 16: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 Nur für Windpirat 10 Unities + Antwort hilfreich

Hallo Windpirat,

was gibst du denn für datName ein??? Du müsstest "Teil xyz.SLDPRT" eingeben,
da du keine Extension in deinem zusammengesetzten String hast.

Gruß
Andreas

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

Windpirat
Mitglied



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

Beiträge: 39
Registriert: 29.04.2009

erstellt am: 11. Mai. 2009 16:52    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

Danke für die schnelle Antwort.
Leider kommt immernoch an der stelle ein Fehler auch wenn ich xyz.SLDPRT in das eingabefeld eingebe.
Oder habe ich deine Antwort falsch verstanden @ad_man?!

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

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))


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

Beiträge: 1378
Registriert: 20.12.2003

SolidWorks 2023 SP5 mit Enterprise PDM , Windows 11, Dell Precision 3660, i7-12700K, 96 GB DDR-Ram, Quadro RTX A4000

erstellt am: 11. Mai. 2009 17: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 Windpirat 10 Unities + Antwort hilfreich

Hallo Windpirat,

was bekommst du denn für eine Fehlermeldung?

Gruß
Andreas

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

Dirk Wollborn
Mitglied
Entwicklungskonstrukteur


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

Beiträge: 379
Registriert: 31.07.2001

erstellt am: 11. Mai. 2009 18: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 Windpirat 10 Unities + Antwort hilfreich

Also bei mir läuft es..
Lösch mal den Pfad bei deinem SaveAs und gib ihn neu ein..

Welche Fehlermeldung bekommst du denn?

Code:
Dim swApp As Object
Sub main()
  Dim swApp As SldWorks.SldWorks
  Dim swModel As SldWorks.ModelDoc2
  Dim datName As String
 
  Set swApp = Application.SldWorks
  Set swModel = swApp.NewDocument("C:\SWXSolidWorks-PDM-Work\Testteil.SLDPRT", 0, 0, 0)
  datName = InputBox("Bitte Dateiname eingeben: ")
  If datName <> "" Then
    'Debug.Print swModel.GetPathName
    Debug.Print datName
    swModel.SaveAsSilent "C:\SWXSolidWorks-PDM-Work\" & datName, False
    'Debug.Print Datname
  End If
Set swApp = Application.SldWorks
End Sub

Allerdings solltest du der besseren Bedienbarkeit, die Dateinamenserweiterung in deiner SaveAs Zeile hinzufügen.
------------------
Dirk

[Diese Nachricht wurde von Dirk Wollborn am 11. Mai. 2009 editiert.]

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

Windpirat
Mitglied



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

Beiträge: 39
Registriert: 29.04.2009

Pro/E WF4 - Educational version

erstellt am: 11. Mai. 2009 18:44    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

mhh läuft imernoch nicht.
Fehlermeldung ist: Laufzeitfehler 91
Objektvariable oder With-Blockvariable nicht festgelegt.

Was meinst du mit Pfad löschen? Einfach die Zeile im Quellcode löschen und neu schreiben?
Und warum setzt du die swApp = Application.SldWorks neu?

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

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))


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

Beiträge: 1378
Registriert: 20.12.2003

erstellt am: 11. Mai. 2009 19:05    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 Windpirat 10 Unities + Antwort hilfreich

Hallo Windpirat,

es sieht so aus, als wenn dein Modell "E:/..."meineDatei.SLDPRT" wohl nicht
existiert und damit kein neues Teil geöffnet wird.
Ich habe dein Makro mit an meine Verhältnisse angepassten Pfaden ohne
Probleme zum laufen bekommen.
Setz doch mal einen Haltepunkt in die erste Zeile und lasse den Code mit F8
durchlaufen. Nach dem Öffnen der Vorlage muss diese im SWXSolidWorks-Fenster erscheinen, sonst ist was faul.

Gruß
Andreas

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

Windpirat
Mitglied



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

Beiträge: 39
Registriert: 29.04.2009

Pro/E WF4 - Educational version

erstellt am: 11. Mai. 2009 19: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

eigentlich soll der Makro ein neues Teil erstellen und dann unter dem namen den ich eingebe speichern.
zumindest dachte ich das newdocument ein neues Teil erzeugt.
also vor dem swAPP.newdocument exestiert das teil auch nicht.

Im Objektkatalog steht zu newdocument:
Creates a new document based on the template name

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

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))


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

Beiträge: 1378
Registriert: 20.12.2003

erstellt am: 12. Mai. 2009 07:52    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 Windpirat 10 Unities + Antwort hilfreich

Guten Morgen Windpirat,

ist ja auch richtig, was du sagst. swApp.NewDocument sollte eigentlich ein neues Dokument erzeugen,
das auf einer Vorlage basiert. Das kann ein Teil, eine BG oder eine Zeichnung sein.
Wenn jetzt beim schrittweisen Debuggen deines Codes erfolgreich eine Vorlage geöffnet wird,
können wir diese Zeile als richtig abhaken.
Dann muss der Fehler in der Zeile mit dem SaveSilent liegen 

Gruß
Andreas

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

u.clemens
Mitglied
Konstrukteur


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

Beiträge: 964
Registriert: 04.07.2000

engineer's law
o cheap
o fast
o good
check only two !

erstellt am: 12. Mai. 2009 09:02    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 Windpirat 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Windpirat:
Im Objektkatalog steht zu newdocument:
Creates a new document based on the template name

...eben !
und Templates haben eben die Endung *.prtdot

Die Pfad-/Dateiangabe bei NewDocument muß etwa "C:\Program Files\SolidWorks\data\templates\part.prtdot" lauten - oder wie auch immer dein Vorlagenpfad und deine Vorlagendatei heißt ...

------------------
mfg uc

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: 12. Mai. 2009 09:33    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 Windpirat 10 Unities + Antwort hilfreich

Hallo Windpirat,

vielleicht helfen dir auch diese Beispiele:
Neues Bauteil öffnen
Dokument speichern
Es handelt sich zwar um vb.net Beispiele, aber ich denke die Verwendung der SolidWorks API wird hier deutlich.

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

www.MySldWorks.de - SolidWorks API Snippets

[Diese Nachricht wurde von tbd am 12. Mai. 2009 editiert.]

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

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))


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

Beiträge: 1378
Registriert: 20.12.2003

erstellt am: 12. Mai. 2009 10: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 Windpirat 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von u.clemens:
...eben !
und Templates haben eben die Endung [b]*.prtdot


[/B]


Hallo uc,

es funktioniert auch, wenn es ein Teil ist. Hatte auch die Idee gehabt,
dass es ein Template sein muss, aber es geht auch eine Teiledatei.
Und wahrscheinkich auch 'ne BG oder Zeichnung 

Gruß
Andreas

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

Windpirat
Mitglied



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

Beiträge: 39
Registriert: 29.04.2009

Pro/E WF4 - Educational version

erstellt am: 12. Mai. 2009 11: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 Leute, danke für eure Hilfe.
Hab das Problem jetzt gelöst.
Das Problem war das in der newdocument Zeile nicht der Pfad stand wo die Vorlage liegt. So wie hier

Set swModel = swApp.NewDocument("E:\Datein\Studium\5sem - Xsem\Sem. 8\CAD_Appl - Prof_Stelzer\Ü Home\Ü2_2\meineDatei.SLDPRT", 0, 0, 0)

tat sich dannach im SWXSolidWorks-Fenster gar nichts.
Deshalb konnte ja auch nichts gespeichert werden.
Jetzt ist die Datei auch unter dem Namen Physisch in dem Ordner vorhanden.
Werde jetzt nochmal versuchen das Problem mit den Endungen zu lösen.

Bei Fragen komme ich bestimmt wieder auf euch zurück

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

Dirk Wollborn
Mitglied
Entwicklungskonstrukteur


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

Beiträge: 379
Registriert: 31.07.2001

erstellt am: 12. Mai. 2009 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 Windpirat 10 Unities + Antwort hilfreich

Zitat:

Und warum setzt du die swApp = Application.SldWorks neu?[/B]

Nur schnell und schmutzig ins Makro kopiert, und nicht weiter aufgepasst.
Ist nur ein Versehen gewesen.

------------------
Dirk

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