Hot News:

Mit Unterstützung durch:

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

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
  
SPINNER Hausausstellung
Autor Thema:  Makro erstellen (2102 mal gelesen)
Feuerblitz
Mitglied



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

Beiträge: 29
Registriert: 07.10.2020

Solidworks 2012 Professional
Windows 10 Pro

erstellt am: 07. Okt. 2020 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

Guten Tag liebe Community

Gerne würde ich mich freuen wenn ihr mir vielleicht auf die Sprünge helfen könntet:

Ich arbeite mit Solidworks 2012 Professional und würde gerne mit Makros arbeiten.
Der Makrorekorder funktioniert bei mir aber nicht.
Kann es sein, dass dieses Problem an der Programmversion liegt?
Als Beispiel: Der Rekorder speichert zwar am Ende eine Makrodatei, aber die ist und bleibt leer.
Wenn ich ein eigenes Makro schreiben will, dann kommt die Prozedur wiederum zum Stehen.
Mein Beispielcode

Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim FeatureData As Object
Dim Feature As Object
Dim Component As Object
Dim saveFileName As String
Sub mains()
Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc '=> stoppt immer bei swApp.activeDoc ?? Warum??
swApp.ActiveDoc.ActiveView.FrameState = 1
swApp.ActiveDoc.ActiveView.FrameState = 1
Part.EditSketch

If (swApp.ActiveDoc.GetPathName = "") Then          'Abfrage ob Name vergeben wurde
    MsgBox ("Bitte zuerst Zeichnung speichern!")
    Exit Sub
End If
saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".dwg" ' Speichern als DWG-Datei
Part.SaveAs2 saveFileName, 0, True, False
saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".pdf"  ' Speichern als PDF-Datei
Part.SaveAs2 saveFileName, 0, True, False
End Sub

Liegt dieses Problem an der Version?
In der Verweisbibliothekt ist dieser Eintrag nämlich aufgeführt.

Kann mir da jemand von euch weiterhelfen?

Gruss

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: 1366
Registriert: 20.12.2003

erstellt am: 07. Okt. 2020 15: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 Feuerblitz 10 Unities + Antwort hilfreich


2020-10-07VBA1.jpg

 
Hallo Feuerblitz,

setze doch mal einen Haltepunkt auf die Zeile

Code:
Set swApp = Application.SldWorks

Wahrscheinlich bekommst du kein Solidworks-Objekt angebunden, was du mit
einer Überwachung von swApp relativ einfach feststellen kannst.

Zudem solltest du die Prozedure main und nicht mains nennen 

------------------
==========
Gruß
Andreas
==========

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

Feuerblitz
Mitglied



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

Beiträge: 29
Registriert: 07.10.2020

Solidworks 2012 Professional
Windows 10 Pro

erstellt am: 07. Okt. 2020 15:47    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


SolidworksMakro.PNG

 
Danke für deine Antwort.
mains habe ich das Makro genannt, weil er ein Problem sieht, wenn ein zweites Makro im selben Modul auch so benannt wird. Macht das ein grossen Unterschied? Ist ja soviel ich weiss einfach nur eine Beschreibung?

Ich habe das gemacht, was du beschrieben hast. Dass swApp als Wert Nothing ergibt, habe ich bereits festgestellt. Nur leider habe ich keine Ahnung woran das liegen könnte.

LG

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: 1366
Registriert: 20.12.2003

erstellt am: 07. Okt. 2020 15: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 Feuerblitz 10 Unities + Antwort hilfreich

Dann fehlt der Verweis auf die Solidworks-DLL's 
Wenn du mit Win10 unterwegs bist, kann es sein, dass die SWX2012-DLL nicht erkannt werden wegen fehlender Kompatibilität. Zeig doch mal einen Screenshot von deinen Verweisen.

------------------
==========
Gruß
Andreas
==========

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

Feuerblitz
Mitglied



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

Beiträge: 29
Registriert: 07.10.2020

Solidworks 2012 Professional
Windows 10 Pro

erstellt am: 07. Okt. 2020 17: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


Verweise1.PNG


Verweise2.PNG

 
Hier mal die Infos, was fehlt mir denn noch? Habs bis jetzt nicht herausgefunden.

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

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


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

Beiträge: 3189
Registriert: 04.04.2001

CSWP 12/2015<P>SWX2021sp5 Win10/11
(SWX2016, SWX2012)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19)

erstellt am: 07. Okt. 2020 17: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 Feuerblitz 10 Unities + Antwort hilfreich

Zitat:
... wenn ein zweites Makro im selben Modul auch so benannt wird...

Wieso ein 2. Makro im selben Modul?

hast du mehrere subs in deinem Makro? welche startest du denn?
SWX startet beim Aufruf über "Makro ausführen" immer die zuletzt hinzugefügte sub.

wenn es aus der Programmierumgebung gestartet wird, kann man sich die sub aussuchen (oder die, wo der cursor steht ...)

kannst du auch "dim swApp as SldWorks.SldWorks" deklarieren?

Gruß, Christian

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

Feuerblitz
Mitglied



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

Beiträge: 29
Registriert: 07.10.2020

Solidworks 2012 Professional
Windows 10 Pro

erstellt am: 08. Okt. 2020 09: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

Danke Christian für deine Antwort.

Nein die anderen Subs habe ich rausgelöscht, damit nur der eine Code den ich hier reingestellt, habe ausgeführt wird und es zu keiner Komplikation kommen kann.

Wenn ich "dim swApp as SldWorks.SldWorks" deklariere, kommt die folgende Fehlermeldung:

"Objektvariable oder with-blockvariable nicht festgelegt"

Was bedeutest das für mich?

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: 1366
Registriert: 20.12.2003

erstellt am: 08. Okt. 2020 10:14    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 Feuerblitz 10 Unities + Antwort hilfreich

Moin,

ich vermute, dass es Probleme mit der Registrierung der SWX-DLL's
gegeben hat. SWX2012 wird offiziell nicht von Windows 10 unterstützt oder
bist du unter einem anderen Betriebssystem unterwegs? Du solltest auf
eine aktuellere Version updaten, wahrscheinlich erledigen sich deine
Probleme damit 

------------------
==========
Gruß
Andreas
==========

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

Feuerblitz
Mitglied



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

Beiträge: 29
Registriert: 07.10.2020

Solidworks 2012 Professional
Windows 10 Pro

erstellt am: 08. Okt. 2020 12:10    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


Versionen.PNG

 
Da gibt's tatsächlich eine aktuellere Version. Kann ich da einfach aktualisieren auch wenn ich nur über eine 2012er Lizenz verfüge?

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

Feuerblitz
Mitglied



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

Beiträge: 29
Registriert: 07.10.2020

Solidworks 2012 Professional
Windows 10 Pro

erstellt am: 08. Okt. 2020 12:12    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


Versionen.PNG

 
Da gibt's tatsächlich eine aktuellere Version. Kann ich da einfach aktualisieren auch wenn ich nur über eine 2012er Lizenz verfüge?

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: 1366
Registriert: 20.12.2003

erstellt am: 08. Okt. 2020 12:25    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 Feuerblitz 10 Unities + Antwort hilfreich

Wenn du einen aktiven Wartungsvertrag hast, kannst du aktualisieren.
Ich empfehle dir, dann noch nicht unbedingt die 2021er Version zu
nehmen, da die ganz frisch auf dem Markt ist 

------------------
==========
Gruß
Andreas
==========

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

Feuerblitz
Mitglied



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

Beiträge: 29
Registriert: 07.10.2020

Solidworks 2012 Professional
Windows 10 Pro

erstellt am: 08. Okt. 2020 12: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

Sonst kann ich die Aktualisierung vergessen?

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: 1366
Registriert: 20.12.2003

erstellt am: 08. Okt. 2020 12:46    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 Feuerblitz 10 Unities + Antwort hilfreich

Ja, du darfst nur mit aktuellem Wartungsvertrag updaten.

------------------
==========
Gruß
Andreas
==========

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

Feuerblitz
Mitglied



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

Beiträge: 29
Registriert: 07.10.2020

Solidworks 2012 Professional
Windows 10 Pro

erstellt am: 08. Okt. 2020 14:25    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

Ja ich bin mit Windows 10 unterwegs. Also gibt's keine Chance dieses Problem sonst zu beheben?

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: 1366
Registriert: 20.12.2003

erstellt am: 08. Okt. 2020 14: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 Nur für Feuerblitz 10 Unities + Antwort hilfreich

Du kannst noch mal eine Reparaturinstallation versuchen, evtl. hilft das ja weiter.

------------------
==========
Gruß
Andreas
==========

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

Feuerblitz
Mitglied



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

Beiträge: 29
Registriert: 07.10.2020

Solidworks 2012 Professional
Windows 10 Pro

erstellt am: 08. Okt. 2020 16:30    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

Naja danke für den Tipp, da es nicht mein privater Rechner ist, kann ich das wohl nicht so leicht machen.
Was für Werte erhaltet ihr denn im Lokalfenster wenn ihr das Script bei euch ausführt?
Könntet jemand von euch ein Screenshot machen?

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: 1366
Registriert: 20.12.2003

erstellt am: 08. Okt. 2020 16: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 Feuerblitz 10 Unities + Antwort hilfreich


2020-10-08VBA1.jpg

 
Erwartungsgemäß gibt sowohl das Lokalfenster als auch die Überwachung
ein SldWorks-Objekt zurück 

------------------
==========
Gruß
Andreas
==========

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

Feuerblitz
Mitglied



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

Beiträge: 29
Registriert: 07.10.2020

Solidworks 2012 Professional
Windows 10 Pro

erstellt am: 09. Okt. 2020 15: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

Funktioniert der Code bei dir ordnungsgemäss? Kannst du mir vielleicht eine Bilderreihe senden damit ich mal sehen kann was Schritt für Schritt im Programm geschieht. Im Direktfenster wäre gut. Danke 

Lg

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: 1366
Registriert: 20.12.2003

erstellt am: 09. Okt. 2020 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 Feuerblitz 10 Unities + Antwort hilfreich

Im Direktfenster wirst du nichts sehen, da alles in SWX passiert.
Die drei Zeilen

Code:
swApp.ActiveDoc.ActiveView.FrameState = 1
swApp.ActiveDoc.ActiveView.FrameState = 1
Part.EditSketch

können raus, da sie nichts mit dem Speichern als DXF bzw. DWG zu tun haben. Es fehlt noch die Prüfung, ob es sich auch um eine Zeichnung handelt,
da sonst kein DXF bzw. DWG erzeugt werden kann. Ansonsten sieht das erst
einmal zufriedenstellend aus. Auf einen Screenshot-Marathon habe ich
jetzt keine Lust  , da jetzt WOCHENENDE ist!

------------------
==========
Gruß
Andreas
==========

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

Feuerblitz
Mitglied



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

Beiträge: 29
Registriert: 07.10.2020

Solidworks 2012 Professional
Windows 10 Pro

erstellt am: 12. Okt. 2020 15: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 zusammen

Ich habe es mittlerweile zum laufen gebracht. Das wäre die Grundfunktion:
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim FeatureData As Object
Dim Feature As Object
Dim Component As Object
Dim saveFileName As String

Sub main()
Set swApp = CreateObject("SldWorks.Application")

Set Part = swApp.ActiveDoc '=> stoppt immer bei swApp.activeDoc ?? Warum??

If (swApp.ActiveDoc.GetPathName = "") Then          'Abfrage ob Name vergeben wurde
    MsgBox ("Bitte zuerst Zeichnung speichern!")
    Exit Sub
End If
saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".dwg" ' Speichern als DWG-Datei
Part.SaveAs2 saveFileName, 0, True, False
saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".pdf"  ' Speichern als PDF-Datei
Part.SaveAs2 saveFileName, 0, True, False
saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".step"  ' Speichern als Step-Datei
Part.SaveAs2 saveFileName, 0, True, False
'saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".dxf"  ' Speichern als DXF-Datei
'Part.SaveAs2 saveFileName, 0, True, False
End Sub

Später möchte ich die zwei Dateien dann in einen "Nebenordner" speichern lassen. Sprich Eine Ordnerinstanz höher und dort in einen bestimmten Ordner (Spezifikationen), aber nur wenn er vorhanden ist.

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

Feuerblitz
Mitglied



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

Beiträge: 29
Registriert: 07.10.2020

Solidworks 2012 Professional
Windows 10 Pro

erstellt am: 13. Okt. 2020 12:04    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 liebe Community

Mir ist da noch eine Frage in den Sinn gekommen und zwar:

Ich würde gerne die Benutzerdefinierten Eigenschaften die ich im Teil eingebe in die Zeichnung und in den Zeichnungskopf übernehmen. Gleichzeitig will ich von der Zeichnung her, wenn sich Daten ändern rückwirkend die Daten in die Eigenschaften des Teils schreiben lassen. Lässt sich dies mit VBA bewerkstelligen? Hat das schon jemand versucht? Meine Suche war bisher erfolglos..

Lg

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: 1366
Registriert: 20.12.2003

erstellt am: 13. Okt. 2020 14:23    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 Feuerblitz 10 Unities + Antwort hilfreich

Hallo Feuerblitz,

bei deinem Programm solltest du noch einige Fehlerprüfungen mit einbauen.
So ist z.B. das STEP-Format (AP-203 bzw. AP-214) nicht für 2D-Daten geeignet.
D.h., wenn du deinen Code auf eine Zeichnung loslässt, dann knallt es bei
der STEP-Erzeugung. Die Sachen mit dem übergeordneten Verzeichnissen lässt
sich mit den gängigen VBA-Befehlen realisieren.

Bzgl. der benutzerdefinierten Eigenschaften handhabe ich es so, dass die
Eigenschaften aus dem Teil kommen und im Stücklistenkopf die entsprechenden
Eigenschaften ausgelesen werden. Ist aber unidirektional, d.h., wenn geändert
wird, dann im Teil. Die Bi-direktionale Aktualisierung ist mit Events beim
Speichern zu realisieren, aber schon mit einem gewissen Aufwand verbunden.

------------------
==========
Gruß
Andreas
==========

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

Feuerblitz
Mitglied



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

Beiträge: 29
Registriert: 07.10.2020

Solidworks 2012 Professional
Windows 10 Pro

erstellt am: 14. Okt. 2020 15:23    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

Die Dateien machen keine Probleme. Step wird dann einfach ignoriert.
Aber ich denke mit einer If Funktion kann man das von der Datei abhängig machen. Weiss nur noch nicht wie.

"Die Bi-direktionale Aktualisierung ist mit Events beim
Speichern zu realisieren, aber schon mit einem gewissen Aufwand verbunden"
Gibt es da schon irgenwelche Ansätze?

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: 1366
Registriert: 20.12.2003

erstellt am: 14. Okt. 2020 15:30    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 Feuerblitz 10 Unities + Antwort hilfreich

Feuerblitz
Mitglied



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

Beiträge: 29
Registriert: 07.10.2020

Solidworks 2012 Professional
Windows 10 Pro

erstellt am: 15. Okt. 2020 14:58    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

Ich hab da mal was versucht:

    'Variablen definieren
        Dim swApp As Object
        Dim Part As Object
        Dim Speichername As String
Sub main()
Set swApp = CreateObject("SldWorks.Application")
'    'Dateipfad setzen
'        Dateipfad = swApp.ActiveDoc.GetPathName
'    'Dateinamen setzen
'        Dateiname = swApp.ActiveDoc.Name

Set Part = swApp.ActiveDoc

If (swApp.ActiveDoc.GetPathName = "") Then          'Abfrage ob Name vergeben wurde
    MsgBox ("Bitte zuerst Zeichnung speichern!")
    Exit Sub
End If
    'Dateityp auslesen WENN Zeichung / DANN .pdf und .dwg, sonst .step
If ActiveDoc = DrawingDoc Then
    Speichername = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".dwg" ' Speichern als DWG-Datei
    Part.SaveAs2 Speichername, 0, True, False
    Speichername = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".pdf"  ' Speichern als PDF-Datei
    Part.SaveAs2 Speichername, 0, True, False
Else
    Speichername = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".step"  ' Speichern als Step-Datei
    Part.SaveAs2 Speichername, 0, True, False

End If
    'Speichername = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".dxf"  ' Speichern als DXF-Datei
    'Part.SaveAs2 Speichername, 0, True, False
End Sub

Da fehlt aber noch was. Das mit den Events habe ich mal noch flüchtig angeschaut. Bin noch nicht zu mehr gekommen. Aber vielen Dank für den Link und den Tipp.

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

Feuerblitz
Mitglied



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

Beiträge: 29
Registriert: 07.10.2020

Solidworks 2012 Professional
Windows 10 Pro

erstellt am: 15. Okt. 2020 14:59    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

Ich hab da mal was versucht:

    'Variablen definieren
        Dim swApp As Object
        Dim Part As Object
        Dim Speichername As String
Sub main()
Set swApp = CreateObject("SldWorks.Application")
'    'Dateipfad setzen
'        Dateipfad = swApp.ActiveDoc.GetPathName
'    'Dateinamen setzen
'        Dateiname = swApp.ActiveDoc.Name

Set Part = swApp.ActiveDoc

If (swApp.ActiveDoc.GetPathName = "") Then          'Abfrage ob Name vergeben wurde
    MsgBox ("Bitte zuerst Zeichnung speichern!")
    Exit Sub
End If
    'Dateityp auslesen WENN Zeichung / DANN .pdf und .dwg, sonst .step
If ActiveDoc = DrawingDoc Then
    Speichername = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".dwg" ' Speichern als DWG-Datei
    Part.SaveAs2 Speichername, 0, True, False
    Speichername = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".pdf"  ' Speichern als PDF-Datei
    Part.SaveAs2 Speichername, 0, True, False
Else
    Speichername = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".step"  ' Speichern als Step-Datei
    Part.SaveAs2 Speichername, 0, True, False

End If
    'Speichername = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".dxf"  ' Speichern als DXF-Datei
    'Part.SaveAs2 Speichername, 0, True, False
End Sub

Da fehlt aber noch was. Das mit den Events habe ich mal noch flüchtig angeschaut. Bin noch nicht zu mehr gekommen. Aber vielen Dank für den Link und den Tipp.

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

Feuerblitz
Mitglied



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

Beiträge: 29
Registriert: 07.10.2020

Solidworks 2012 Professional
Windows 10 Pro

erstellt am: 15. Okt. 2020 14:59    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

Ich hab da mal was versucht:

    'Variablen definieren
        Dim swApp As Object
        Dim Part As Object
        Dim Speichername As String
Sub main()
Set swApp = CreateObject("SldWorks.Application")
'    'Dateipfad setzen
'        Dateipfad = swApp.ActiveDoc.GetPathName
'    'Dateinamen setzen
'        Dateiname = swApp.ActiveDoc.Name

Set Part = swApp.ActiveDoc

If (swApp.ActiveDoc.GetPathName = "") Then          'Abfrage ob Name vergeben wurde
    MsgBox ("Bitte zuerst Zeichnung speichern!")
    Exit Sub
End If
    'Dateityp auslesen WENN Zeichung / DANN .pdf und .dwg, sonst .step
If ActiveDoc = DrawingDoc Then
    Speichername = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".dwg" ' Speichern als DWG-Datei
    Part.SaveAs2 Speichername, 0, True, False
    Speichername = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".pdf"  ' Speichern als PDF-Datei
    Part.SaveAs2 Speichername, 0, True, False
Else
    Speichername = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".step"  ' Speichern als Step-Datei
    Part.SaveAs2 Speichername, 0, True, False

End If
    'Speichername = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".dxf"  ' Speichern als DXF-Datei
    'Part.SaveAs2 Speichername, 0, True, False
End Sub

Da fehlt aber noch was. Das mit den Events habe ich mal noch flüchtig angeschaut. Bin noch nicht zu mehr gekommen. Aber vielen Dank für den Link und den Tipp.

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