Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Makro: Alle geöffneten Dokumente als STEP speichern und schließen

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
  
Bechtle Competence Days | Online
Autor Thema:  Makro: Alle geöffneten Dokumente als STEP speichern und schließen (5296 mal gelesen)
API-Fabi
Mitglied
CAD/PLM Admin


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

Beiträge: 56
Registriert: 23.11.2015

SOLIDWORKS 2020 SP5
Windows 10
SAP-PLM Interface (CAD-Desktop)

erstellt am: 02. Dez. 2015 08:03    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

Hallöchen!

Hat mir jemand ein Beispiel mit einer Schleife, die alle geöffneten Dokumente als Step speichert und anschließend schließt?

Ich verstehe die Funktionsweise der Schleife nicht so ganz...

Gruß Fabi

------------------
Geht nicht, gibt's nicht! ;-)

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

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 02. Dez. 2015 08:27    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 API-Fabi 10 Unities + Antwort hilfreich

Hallo Api-Fabi

sorry aber ich kann mir das jetzt nicht verkneifen,
wenn Du die Funtionsweise einer Schleife nicht verstehst dann,
solltest Du mal eine Basisschulung machen und Deinen Nick ändern 

Wie gesagt, ist nicht böse gemeint

------------------
Grüße
Heinz

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 02. Dez. 2015 08:27    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 API-Fabi 10 Unities + Antwort hilfreich

Hallo API-Fabi,

Zitat:
Original erstellt von API-Fabi:
Hat mir jemand ein Beispiel mit einer Schleife, die alle geöffneten Dokumente ...
Ich verstehe die Funktionsweise der Schleife nicht so ganz

Es gibt ein Beispiel per Traverse in der API-Hilfe names "Get Names of Open Documents Example (VBA)", alternativ bekommst du mit SldWorks::EnumDocuments2 eine Liste der ganzen geöffneten ModelDoc-Objekte (würde ich machen). Denk daran, dass nicht alle geöffneten Dokumente auch sichtbar in SolidWorks sind.

Was verstehst du an welcher Funktionsweise welcher Schleife nicht?

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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

API-Fabi
Mitglied
CAD/PLM Admin


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

Beiträge: 56
Registriert: 23.11.2015

SOLIDWORKS 2020 SP5
Windows 10
SAP-PLM Interface (CAD-Desktop)

erstellt am: 02. Dez. 2015 08:35    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

Sorry, hatte mich falsch ausgedrückt... Ich weiß natürlich schon, was eine Schleife macht.
Ich meinte ich verstehe nicht, was mir fehlt, dass die Schleife auch funktioniert:

Hier mein Code:
*********************************************
Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim myModels() As ModelDoc2

Sub main()

    Set swApp = Application.SldWorks
    myModels = swApp.GetDocuments
   
    For Each myModel In myModels
   
        'Überprüfung ob keine Datei oder Zeichnung => Fehlermeldung und Abbruch
        If Not myModel Is Nothing Then
            If myModel.GetType = SwConst.swDocumentTypes_e.swDocDRAWING Then
                MsgBox ("Dieses Makro kann nicht für Zeichnungen ausgeführt werden")
                Exit Sub
            End If
        Else
            MsgBox ("Sie haben keine Teile oder Baugruppen geöffnet.")
            Exit Sub
        End If
       
        Dim myTitle As String
        myTitle = myModel.GetTitle
       
        'Dokument aktivieren
        swApp.ActivateDoc3 myTitle, True, 2, 0
       
        'Konfiguration "Standard" auswählen
        Set Part = swApp.ActiveDoc
        boolstatus = Part.Extension.SelectByID2("Standard", "CONFIGURATIONS", 0, 0, 0, False, 0, Nothing, 0)
        boolstatus = Part.ShowConfiguration2("Standard")
   
        'Ansicht Isometrisch (zoomt automatisch auf Fenstergröße)
        Part.ShowNamedView2 "*Isometrisch", 7
       
        'Als STEP speichern
        FilePath = Part.GetPathName
        NewFilePath = FilePath & ".STEP"
        longstatus = Part.SaveAs3(NewFilePath, 0, 0)
        MsgBox ("Gespeichert unter " & NewFilePath)

       
        'Dokument schließen
        swApp.CloseDoc myTitle
   
    Next
   
End Sub
*********************************************

Es Speichert das Dokument zwar als Step, schließt es aber nicht und wechselt nicht zum nächsten Dokument.
Zudem funktioniert mein Befehl zum Aktivieren des Dokuments nicht


Was fehlt hier noch?

------------------
Geht nicht, gibt's nicht! ;-)

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

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 02. Dez. 2015 09: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 API-Fabi 10 Unities + Antwort hilfreich

Hallo Api-Fabi

du darfst den 4, Parameter bei ActivateDoc nicht mi "0" angeben
sondern musst dafür eine Variable verwenden

siehe dazu auch das Beispiel in der API-Hilfe
Stichwort "Rebuild a Document on Activation Example (VBA)"

------------------
Grüße
Heinz

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

API-Fabi
Mitglied
CAD/PLM Admin


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

Beiträge: 56
Registriert: 23.11.2015

SOLIDWORKS 2020 SP5
Windows 10
SAP-PLM Interface (CAD-Desktop)

erstellt am: 02. Dez. 2015 14: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

Hi,

ich habe den Befehl rausgenommen.
Jetzt speichert es das aktuelle Dokument ung bleibt bei GetNext stehen.
Was fehlt hier noch?

Das Makro soll alle geöffneten Dokumente als Step speichern.


**************************
Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim myModel As SldWorks.ModelDoc2

Sub main()

    Set swApp = Application.SldWorks
    Set myModel = swApp.GetFirstDocument
   
    While Not myModel Is Nothing
   
        'Überprüfung ob keine Datei oder Zeichnung => Fehlermeldung und Abbruch
        If Not myModel Is Nothing Then
            If myModel.GetType = SwConst.swDocumentTypes_e.swDocDRAWING Then
                MsgBox ("Dieses Makro kann nicht für Zeichnungen ausgeführt werden")
                Exit Sub
            End If
        Else
            MsgBox ("Sie haben keine Teile oder Baugruppen geöffnet.")
            Exit Sub
        End If
       
        Dim myTitle As String
        myTitle = myModel.GetTitle
               
        'Konfiguration "Standard" auswählen
        Set Part = swApp.ActiveDoc
        boolstatus = Part.Extension.SelectByID2("Standard", "CONFIGURATIONS", 0, 0, 0, False, 0, Nothing, 0)
        boolstatus = Part.ShowConfiguration2("Standard")
   
        'Ansicht Isometrisch (zoomt automatisch auf Fenstergröße)
        Part.ShowNamedView2 "*Isometrisch", 7
       
        'Als STEP speichern
        FilePath = Part.GetPathName
        NewFilePath = FilePath & ".STEP"
        longstatus = Part.SaveAs3(NewFilePath, 0, 0)
        'MsgBox ("Gespeichert unter " & NewFilePath)

        Set swModel = swModel.GetNext
    Wend
       
        'Dokument schließen
        'swApp.CloseDoc myTitle
   

   
End Sub
*****************************

------------------
Geht nicht, gibt's nicht! ;-)

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

API-Fabi
Mitglied
CAD/PLM Admin


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

Beiträge: 56
Registriert: 23.11.2015

SOLIDWORKS 2020 SP5
Windows 10
SAP-PLM Interface (CAD-Desktop)

erstellt am: 02. Dez. 2015 15:26    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

kleiner Fehler meinerseits:

Es muss natürlich "Set swModel = myModel.GetNext" heißen.
Dann führt es die Arbeitsschritte für alle Dokumente durch.

Allerdings, ist das sozusagen eine "Endlos-Schleife" und läuft immer wieder von vorne durch...
Wie kann ich die Dokumente nach dem Speichern schließen?
Dann würde es nicht immer wieder von vorne durchlaufen...

CloseDoc funktioniert iwie nicht...

------------------
Geht nicht, gibt's nicht! ;-)

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

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 02. Dez. 2015 15: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 API-Fabi 10 Unities + Antwort hilfreich

Hallo Fabi,

1.) warum hast Du jetzt die Schleife anders gemacht?

2.) hast Du das Makro schon mal schrittweise durchlaufen (F8)?

3.) ganz einfach, Du schreibst am Ende der Schleife "Set swModel = swModel.GetNext"
    von wo soll "swModel" einen Wert/Inhalt haben?

PS
"Set swModel = myModel.GetNext"  wird auch nicht funktionieren!
es muss "Set myModel = myModel.GetNext" heißen


------------------
Grüße
Heinz

[Diese Nachricht wurde von nahe am 02. Dez. 2015 editiert.]

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

API-Fabi
Mitglied
CAD/PLM Admin


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

Beiträge: 56
Registriert: 23.11.2015

SOLIDWORKS 2020 SP5
Windows 10
SAP-PLM Interface (CAD-Desktop)

erstellt am: 03. Dez. 2015 09: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

Hallo Heinz,

zu 1) Ich habe ein Beispiel-Makro von StefanBerlitz kopiert. Da war das so drin... War aber nur ein Versuch

Habe das Makro angepasst. Es funktioniert nun einwandfrei.

Wenn ich aber eine Baugruppe offen habe speichert es alle einzelne Parts als STEP und nicht die Baugruppe. Wie kann ich das ändern?

Mein Code:

***********************
Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim myModels() As ModelDoc2
Dim longstatus As Long, longwarnings As Long

Sub main()

    Set swApp = Application.SldWorks
    myModels = swApp.GetDocuments
   
    For Each myModel In myModels
   
        'Überprüfung ob keine Datei oder Zeichnung => Fehlermeldung und Abbruch
        If Not myModel Is Nothing Then
            If myModel.GetType = SwConst.swDocumentTypes_e.swDocDRAWING Then
                MsgBox ("Dieses Makro kann nicht für Zeichnungen ausgeführt werden")
                Exit Sub
            End If
        Else
            MsgBox ("Sie haben keine Teile oder Baugruppen geöffnet.")
            Exit Sub
        End If
       
        Dim myTitle As String
        myTitle = myModel.GetTitle
       
        'Dokument aktivieren
        swApp.ActivateDoc2 myTitle, False, longstatus
       
        'Konfiguration "Standard" auswählen
        Set Part = swApp.ActiveDoc
        boolstatus = Part.Extension.SelectByID2("Standard", "CONFIGURATIONS", 0, 0, 0, False, 0, Nothing, 0)
        boolstatus = Part.ShowConfiguration2("Standard")
   
        'Ansicht Isometrisch (zoomt automatisch auf Fenstergröße)
        Part.ShowNamedView2 "*Isometrisch", 7
       
        'Als STEP speichern
        FilePath = Part.GetPathName
        NewFilePath = FilePath & ".STEP"
        longstatus = Part.SaveAs3(NewFilePath, 0, 0)
        MsgBox ("Gespeichert unter " & NewFilePath)

       
        'Dokument schließen
        swApp.CloseDoc myTitle
   
    Next
   
End Sub
**************

Gruß Fabi

------------------
Geht nicht, gibt's nicht! ;-)

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

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 03. Dez. 2015 11:31    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 API-Fabi 10 Unities + Antwort hilfreich

Also bei mir läuft das Makro.

Werden alle Dateien im selben Verzeichnis gespeichert?
Wenn nein, ev. hast Du in dem Verzeichnis keinen Schreibzugriff?

sonst fällt mir dazu nichts ein.

------------------
Grüße
Heinz

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

API-Fabi
Mitglied
CAD/PLM Admin


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

Beiträge: 56
Registriert: 23.11.2015

SOLIDWORKS 2020 SP5
Windows 10
SAP-PLM Interface (CAD-Desktop)

erstellt am: 03. Dez. 2015 11:39    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

Das Makro läuft.
Alle Dateien werden im gleichen Verzeichnis gespeichert.

Das Problem ist nur, dass es bei Baugruppen auch die Unterkomponenten speichert. Das ist aber nicht notwendig, weil diese ja in der STEP-DAtei enthalten sind und das geht dann auch extrem lang bei größeren Baugruppen.
Es soll einfach nur die Baugruppe speichern, aber nicht die darin enthaltenen Parts...

------------------
Geht nicht, gibt's nicht! ;-)

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 03. Dez. 2015 11: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 API-Fabi 10 Unities + Antwort hilfreich

Hallo Fabi,

ohne dir zu nahe treten zu wollen: verstehst du überhaupt den Code, den du dir da so zusammenstöpselst? 

Das hat mich schon bei ein paar anderen Rückfragen überrascht, deswegen habe ich dann nichts mehr geantwortet, weil ich dir ein wenig Zeit geben wollte, dass selbst herauszufinden und dich mit dem Code und vor allem der Logik des Programmablaufs zu beschäftigen. Ich bin mir jetzt nicht sicher, was die ungünstigere Variante wäre, ob du das nicht tust oder ob es dich überfordert ...

Wie dem auch sein, wenn du alle geöffneten Dokumente durchgehst (in deiner Schleife) musst du doch nur überprüfen, ob du eine Baugruppe gerade in den Fingern hast. Du prüfst schon explizit auf eine Zeichnung ab (If myModel.GetType = SwConst.swDocumentTypes_e.swDocDRAWING Then), also solltest du verstanden haben, wie du auf ein Dokument eines bestimmten Typs prüfen kannst. Und dann eben den Teil mit dem Speichern nur ausführen, wenn du eine Baugruppe hast.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 03. Dez. 2015 12: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 API-Fabi 10 Unities + Antwort hilfreich

noch eine Info

Deine ursprüngliche Anforderung war "Alle geöffneten Dokumente als STEP speichern und schließen"
wie Du jetzt nur die Baugruppe speichern möchtest, hat Stefan ja schon beschrieben.

Ev. gibt es aber auch noch den Fall,
dass Teile-Dateien offen sind die Du auch speichern möchtest?
Wenn das so ist, wird es wohl etwas komplizierter, weil Du dann zuerst alle Komponenten und Unterbaugruppen
der geöffneten Baugruppen durchlaufen musst, um zu erfahren welche Teile in Baugruppen enthalten sind
und welche unabhängig von den Baugruppen geöffnet sind.

wie so oft, kommt man vom Hundersten ins Tausendste und man sollte sich vorher überlegen,
welche Fälle man berücksichtigen möchte, welche auftreten können und wie das Makro darauf reagieren soll.


------------------
Grüße
Heinz

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

API-Fabi
Mitglied
CAD/PLM Admin


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

Beiträge: 56
Registriert: 23.11.2015

SOLIDWORKS 2020 SP5
Windows 10
SAP-PLM Interface (CAD-Desktop)

erstellt am: 03. Dez. 2015 12:43    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 Stefan,

zugegeben, ich bin kein Api-Profi. Aber ich dachte, dass mir da jemand helfen kann oder ist das hier ein Club der Ultra-Profis?

Ich verstehe sehr wohl, was mein Makro macht.
Lasst mich bitte erklären, worin die Komplexität liegt:

1.Ich öffne unterschiedliche Dokumente. Z.B. 2 Baugruppen und 2 Einzelteile.
2.Ich möchte nicht dass mein Makro nur Baugruppen oder Einzelteile speichert, sondern beides. Das Problem ist, dass das Makro dann auch die Unterkomponenten der Baugruppe speichert. Das soll es aber nicht. Es soll praktisch nur die Dokumente speichern, die ich auch händisch geöffnet habe.

Bitte habt ein bisschen Verständnis, dass das jetzt nicht gerade das einfachste der Welt ist...
Sonst könntet ihr mir doch gleich sagen, was ich zu tun habe!?

------------------
Geht nicht, gibt's nicht! ;-)

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 03. Dez. 2015 13: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 API-Fabi 10 Unities + Antwort hilfreich

Hallo API-Fabi

Zitat:
Original erstellt von API-Fabi:
zugegeben, ich bin kein Api-Profi. Aber ich dachte, dass mir da jemand helfen kann oder ist das hier ein Club der Ultra-Profis?

Nein, ist es sicher nicht, ich zähle mich wie Heinz vermutlich auch eher zu den Hobby-Programmierern. Aber ich verstehe, dass im Hinblick auf den Anspruch für den Einen Hobby ist, was für den Anderen Ultra-Profis zu sein scheinen.

Zitat:
Original erstellt von API-Fabi:
1.Ich öffne unterschiedliche Dokumente. Z.B. 2 Baugruppen und 2 Einzelteile.
2.Ich möchte nicht dass mein Makro nur Baugruppen oder Einzelteile speichert, sondern beides. Das Problem ist, dass das Makro dann auch die Unterkomponenten der Baugruppe speichert. Das soll es aber nicht. Es soll praktisch nur die Dokumente speichern, die ich auch händisch geöffnet habe.

Sonst könntet ihr mir doch gleich sagen, was ich zu tun habe!?



Das macht die Sache klarer, so hatte ich sogar deinen ursprünglichen Post interpretiert. Da hatte ich dich auf das SldWorks::EnumDocuments2 hingewiesen, explizit mit dem Hinweis auf den unterschied zwischen geöffnet und sichtbar. Okay, das war kein fertiger Makrocode, aber das erwarte ich persönlich dann von einem Fragesteller, dass er dann da weiter nachschaut, weiterliest und probiert. In der API Hilfe steht dann z.B. explizit drin:
[...]This includes IModelDoc2 objects that may have been opened as file references, for example, from an assembly or drawing.

You might want to use the IModelDoc::Visible property to determine if a particular document has its own window and is visible to the user.

Also: wenn du die Schleife so weit hast prüfst du mit myModel.Visible, ob es sichtbar ist, sprich ein geöffnetes Fenster in SolidWorks hat, das sollten dann diejenigen sein, die du per Hand geöffnet hast.

Ciao,
Stefan

PS: bitte nimm es nicht als abkanzeln oder elitärem Bashing (so kommt das sicher bei manchen an), sondern als Anregung und Erklärung. Wenn ich das nicht mehr mache und einfach nicht mehr antworte hättest du eine potentielle Hilfe verloren.


------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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

API-Fabi
Mitglied
CAD/PLM Admin


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

Beiträge: 56
Registriert: 23.11.2015

SOLIDWORKS 2020 SP5
Windows 10
SAP-PLM Interface (CAD-Desktop)

erstellt am: 03. Dez. 2015 13: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

Hallo Stefan,

Vielen Dank!
Das war der entscheidende Hinweis!
Mit myModel.Visible funktioniert das einwandfrei.

Ich nehme das euch nicht übel. Bin manchmal nur bisschen verzweifelt, wenn ich auf dem Schlauch stehe.
Ohne euch wäre ich ja schließlich verloren! 


Also VIELEN DANK euch beiden!!

------------------
Geht nicht, gibt's nicht! ;-)

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

gerald1163
Mitglied
Techniker

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

Beiträge: 2
Registriert: 26.02.2016

erstellt am: 26. Feb. 2016 09:45    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 API-Fabi 10 Unities + Antwort hilfreich

Könnte dieses Makro sehr gut brauchen. Gibt es da eine Möglichkeit das Makro zu bekommen?

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

API-Fabi
Mitglied
CAD/PLM Admin


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

Beiträge: 56
Registriert: 23.11.2015

SOLIDWORKS 2020 SP5
Windows 10
SAP-PLM Interface (CAD-Desktop)

erstellt am: 26. Feb. 2016 13: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


SaveAllAsSTEP.zip

 
Anbei das Makro...
Kann jeder SolidWorks-User gut gebrauchen..

------------------
Gruß Fabi

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

gerald1163
Mitglied
Techniker

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

Beiträge: 2
Registriert: 26.02.2016

erstellt am: 29. Feb. 2016 08:01    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 API-Fabi 10 Unities + Antwort hilfreich

Romeo vs. SWX
Mitglied
Konstrukteur

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

Beiträge: 6
Registriert: 25.10.2016

erstellt am: 25. Okt. 2016 17:09    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 API-Fabi 10 Unities + Antwort hilfreich

Hallo Fabi,

Ich finde die Grund-idee des Makros klasse.
Bei meinem Vesuch mit Solidworks 2016 habe ich das
Makro leider nicht wie gewünscht zum laufen bekommen.
Es speichert ein Step ab und bricht danach mit folgender
Meldung ab:

Laufzeitfehler `-2147417848 (80010108)`:
Automatisierungsfehler
Das aufgerufene Objekt wurde von dem Clients getrennt.

Ist dir so etwas schon mal untergekommen?

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

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

erstellt am: 25. Okt. 2016 18:07    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 API-Fabi 10 Unities + Antwort hilfreich


2016-10-25Verweise.JPG

 
Hallo Romeo,

hast du schon mal die Verweise überprüft? Evtl. musst du diese auf
die SWX2016-Version "umbiegen". Dazu im VBA-Editor unter Extras/
Verweise... aufrufen und die entsprechenden Eintragungen vornehmen.

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

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

Romeo vs. SWX
Mitglied
Konstrukteur

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

Beiträge: 6
Registriert: 25.10.2016

erstellt am: 26. Okt. 2016 07: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 API-Fabi 10 Unities + Antwort hilfreich

Hallo,

die gekennzeichneten Haken waren schon aktiviert.
Ich hab jetzt nochmal ohne Sinn und Verstand alles was nach SWX 2016 klingt, aktiviert.

Das brachte natürlich keine Besserung.

gibts noch andere Ansätze? Läuft das Tool bei euch makellos?

Gruß

Romeo

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

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

erstellt am: 26. Okt. 2016 07:34    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 API-Fabi 10 Unities + Antwort hilfreich

Hallo Romeo,

bei mir läuft das Makro...

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

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

Romeo vs. SWX
Mitglied
Konstrukteur

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

Beiträge: 6
Registriert: 25.10.2016

erstellt am: 26. Okt. 2016 08: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 Nur für API-Fabi 10 Unities + Antwort hilfreich

Dann liegt der Schluss, dass es an SWX 2016 liegt ja schon recht nahe.
Ich hab SP3.

beim googlen hab ich den Fehler nur in verbindung mit Excel gefunden.
Ich bin dort allerdings nicht so richtig durchgestiegen, da ich mich mit VBA nicht auskenne.
(habe nur etwas Erfahrung mit VBS)

gibts noch ne Idee? 

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 26. Okt. 2016 09: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 API-Fabi 10 Unities + Antwort hilfreich


29006_makro-logik-nicht-ganz-korrekt.png

 
Hallo Romeo,

Zitat:
Original erstellt von Romeo vs. SWX:
Dann liegt der Schluss, dass es an SWX 2016 liegt ja schon recht nahe.

Nein, eigentlich nicht, da liegt der Schluss eher nah, dass du irgendetwas bei dir hast oder machst, was so nicht vorgesehen ist oder das Makro noch eine Logiklücke hat 

Ich hab das Makro von API-Fabi oben gerade mal runter geladen, die Verweise aktualisiert wie Andreas (ad_man) beschrieben hat, ein Teil und eine Baugruppe geladen und das Makro lief einwandfrei in SW2016 SP4.0 auf Windows 7/64.

Aber es liegt trotzdem an der Logik des Makros, ich hab im angehängten Screenshot mal ein paar Finger in die Wunden gelegt, da hast du dann einen Ansatz, um das richtig zu stellen. Wäre schön, wenn du das bei dir dann probieren und den korrigierten Code wieder hochladen könntest.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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: 26. Okt. 2016 09: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 API-Fabi 10 Unities + Antwort hilfreich

Code:

If myModel.GetType = SwConst.swDocumentTypes_e.swDocDRAWING Then
    MsgBox ("Dieses Makro kann nicht für Zeichnungen ausgeführt werden")
    Exit Sub
End If

Mal für mein Weltbild die Frage:
Steigt das Programm damit nicht nach der 1. Zeichnung komplett aus?

Gruß, Christian

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 26. Okt. 2016 10: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 Nur für API-Fabi 10 Unities + Antwort hilfreich

Hallo Romeo,

bei mir läuft das Macro nur sauber durch wenn ich in der "For Each" Schleife die Angaben von "Part" durch "myModel" ersetzte.
Wenn es dann immer noch nicht geht wird dir irgendeine Zeile beim wechsel in den Debugger markiert?

Gruß
Bernd

[EDIT]Da waren ja wieder mal eineige schneller mit Antworten wie ich 

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete  

[Diese Nachricht wurde von bk.sc am 26. Okt. 2016 editiert.]

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 26. Okt. 2016 10: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 Nur für API-Fabi 10 Unities + Antwort hilfreich

Zitat:
Mal für mein Weltbild die Frage:
Steigt das Programm damit nicht nach der 1. Zeichnung komplett aus?

Hallo Christian,

genau so ist es aber vielleicht war das von dem Macroersteller ja so gewünscht, ich würde in der Schleife auch einfach nur geöffnete Zeichnungen überspringen.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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: 26. Okt. 2016 12:21    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 API-Fabi 10 Unities + Antwort hilfreich

Zitat:
... aber vielleicht war das von dem Macroersteller ja so gewünscht, ich würde in der Schleife auch einfach nur geöffnete Zeichnungen überspringen ...

Hallo Bernd,

dann denke ich, dass es bei dem Quellmakro so gewünscht war und dieses noch keine Schleife hatte 

Gruß, Christian.

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

Romeo vs. SWX
Mitglied
Konstrukteur

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

Beiträge: 6
Registriert: 25.10.2016

erstellt am: 26. Okt. 2016 12:39    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 API-Fabi 10 Unities + Antwort hilfreich


SaveAllAsSTEP.zip

 
Hallo,

mit dem Tipp von Bernd ("Part" in "Mymodel" ändern) läuft es bei Einzelteilen absolut sauber.
Bei Baugruppen tritt der Fehler nach gefühlt jeder 3. Baugruppe auf. leider konnte ich noch kein Schema dabei erkennen.

Im angehangenen Makro habe ich noch die Logik wohin gespeichert wird, auf meine betriebliche Situation angepasst.
(15 Stellige Artikelnummern)

MfG

Romeo

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 26. Okt. 2016 14:16    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 API-Fabi 10 Unities + Antwort hilfreich


objlosaftrun.png

 
Hallo Romeo,

hier kommt das von Stefan gekennzeichnete "BOOM" zum tragen, da bei ungünstiger Abarbeitungsreihenfolge, Objecte entladen (geschlossen) werden die aber noch in myModels drin stehen die dann aber zum Zeitpunkt wenn er diese verarbeiten will einfach nicht mehr da sind, dass passiert denke ich z.B. beim vorhanden sein von Unterbaugruppen, virtuellen Komponenten oder Mehrfachverwendeten Teilen in Baugrupen.

Im Bild sieht man z.B. das nach dem 1. Durchlauf gleich ein guter Schwung Objecte entladen wurden.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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

Romeo vs. SWX
Mitglied
Konstrukteur

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

Beiträge: 6
Registriert: 25.10.2016

erstellt am: 26. Okt. 2016 15:21    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 API-Fabi 10 Unities + Antwort hilfreich

Demnach müsste das doch aber bei jedem solche Probleme machen, der Baugruppen der Art nutzt.

Naja ich habe keine Lösung aber ich bewundere das Problem.

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: 26. Okt. 2016 15:41    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 API-Fabi 10 Unities + Antwort hilfreich

Zitat:
Naja ich habe keine Lösung aber ich bewundere das Problem.


könntest ja das closedoc am Ende auskommentieren oder in einer extra Schleife nachschalten

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 26. Okt. 2016 15: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 Nur für API-Fabi 10 Unities + Antwort hilfreich

Hallo Romeo,

dieses Macro hier ist ja nur eines von vielen und auch noch ein sehr abgespecktes was wahrscheinlich beim Macroersteller funktioniert weil er weiß auf was er zu achten hat.
Für die Massenkonvertierung gibt es hier im Brett oder im WWW aber auch noch andere Macros die etwas aufwändiger gestrickt sind.

Du könntest für eine schnelle Lösung einfach das schließen auskommentieren, dann musst du halt am Ende wenn das Macro durchgelaufen ist die Dokumente eben Manuell schließen.

Evtl. solltest du dir auch mal Stefans PAC4SWX anschauen das kann ziemlich viel in diese Richtung Hier entlang

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



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

Beiträge: 2675
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
ab 2024 (privat):
Onshape und anderes

erstellt am: 26. Okt. 2016 16: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 API-Fabi 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Romeo vs. SWX:
...
Naja ich habe keine Lösung aber ich bewundere das Problem.
...



Allein für den Spruch gibt's 10 U 

------------------
Klaus

http://www.al-ko.com/de/fahrzeugtechnik/ | mein Gästebuch

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

Romeo vs. SWX
Mitglied
Konstrukteur

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

Beiträge: 6
Registriert: 25.10.2016

erstellt am: 27. Okt. 2016 16: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 Nur für API-Fabi 10 Unities + Antwort hilfreich

Ohne das Schließen läuft alles perfekt.
Man kommt ja auch über Fenster --> alle schließen schnell zum Ziel.
Leider hab ich nicht die Zeit mich so an dem Code zu verkünsteln wie ich gern würde.

Ich danke euch allen für eure Unterstützung.

Gruß

Romeo

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

dimikuhn
Mitglied
Freiberuflicher Ingenieur


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

Beiträge: 10
Registriert: 05.11.2011

Win10 64bit SW 2016

erstellt am: 06. Dez. 2016 15:22    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 API-Fabi 10 Unities + Antwort hilfreich


SaveAllAsSTEP.zip

 
Hallo zusammen, da ich mich gerade wieder recht oft mit der SolidWorks API beschäftige, habe ich den von Euch verwendeten Code etwas umgeschrieben.
Somit sollte das Schließen der Dateien am Ende auch funktionieren.
Der Code ist sicherlich noch nicht perfekt.
Die Abfrage (Answer; MsgBox; Select Case) kann, je nach Anforderung auch entfernt werden.

Viele Grüße

' **************************************************

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim myModels() As ModelDoc2
Dim myModel As Variant
Dim SavePath As String
Dim longstatus As Long
Dim Answer As Long
Dim IncludeUnsaved As Boolean
Dim bRet As Boolean

Sub Main()
   
    ' An SolidWorks anbinden
    Set swApp = Application.SldWorks
   
    ' An aktives Document anbinden
    Set swModel = swApp.ActiveDoc
   
    ' Prüfen ob ein Dokument geoeffnet ist, wenn nicht -> abbrechen
    If swModel Is Nothing Then
        MsgBox "Bitte öffnen Sie ein Dokument.", vbCritical, "Fehler: Kein Dokument geöffnet"
        GoTo Abbrechen
    End If
   
    ' Speichere alle (im Arbeitsspeicher) geöffneten Dokumente in ein Array des Types "ModelDoc2"
    myModels = swApp.GetDocuments
   
    ' Eingebefeld für den Pfad anzeigen
    NewFilePath = InputBox("Bitte geben Sie den Pfad an, in dem Ihre Auswahl gespeichert werden soll.", "STEP EXPORT")
       
    ' Pruefen ob ein Pfad eingetragen wurde, wenn nicht -> abbrechen
    If NewFilePath = "" Then
        MsgBox "Bitte einen Pfad angeben.", vbCritical, "Fehler: Kein Pfad gewählt!"
        GoTo Abbrechen
    End If
   
    ' Für jede geoeffnete Datei in "myModels" tue ...
    For Each myModel In myModels
   
        ' Wenn Datei vom Typ "swDocPART" oder "swDocASSEMBLY" tue ...
        If myModel.GetType = SwConst.swDocumentTypes_e.swDocPART Or myModel.GetType = SwConst.swDocumentTypes_e.swDocASSEMBLY Then
       
            ' wenn Datei sichtbar (eigenes Fenster) tue...
            If myModel.Visible = True Then
                                        
                'Dokument aktivieren
                swApp.ActivateDoc2 myModel.GetTitle, False, longstatus
                   
                'Ansicht Isometrisch (ist nicht notwendig wenn Dateien am Ende geschloßen werden sollen!)
                myModel.ShowNamedView2 "*Isometrisch", 7
           
                'Fensterfüllend zoomen (ist nicht notwendig wenn Dateien am Ende geschloßen werden sollen!)
                myModel.ViewZoomtofit2
           
                ' Speicherpfad zusammenstellen
                SavePath = NewFilePath & "\" & Left(myModel.GetTitle, Len(myModel.GetTitle) - 6) & "STEP"
                                                          
                ' Als STEP-Datei speichern
                longstatus = myModel.SaveAs3(SavePath, 0, 0)
               
                ' Prüfen ob das Speichern geklappt hat
                If longstatus <> 0 Then
                    MsgBox "Beim speichern als STEP-Datei: " & SavePath & " ging etwas schief!" & Chr(13) & "Fehler: " & longstatus, vbCritical, "Fehler beim speichern!"
                    GoTo Abbrechen
                End If
                              
            End If
           
        End If
          
    Next
   
    ' Abfrage "Dokumente schließen?"
    Answer = MsgBox("Ja = Alle Dokumete werden geschloßen. Achtung, kein speichern!" & Chr(13) & "Nein = Ungespeicherte Dokumente bleiben offen." & Chr(13) & "Abbrechen = Alle Dokumente bleiben offen.", vbYesNoCancel, "Dokumente schließen.")
   
    ' Je nach Antwort tue ...
    Select Case Answer
    Case vbCancel
        GoTo Abbrechen
    Case vbYes
        IncludeUnsaved = True
    Case vbNo
        IncludeUnsaved = False
    End Select
         
    ' Dokumente schließen!
    bRet = swApp.CloseAllDocuments(IncludeUnsaved)
   
    ' Prüfen ob beim schließen alle gut ging!
    If bRet = False Then
        MsgBox "Beim schließen aller geöffneten Dokumente ging etwas schief.", vbCritical, "Fehler: Schließen der Dokumente!"
        GoTo Abbrechen
    End If
       
Abbrechen:
    ' Objekte (Speicher) freigeben
    Set swModel = Nothing
    Set swApp = Nothing
End Sub


[Diese Nachricht wurde von dimikuhn am 06. Dez. 2016 editiert.]

[Diese Nachricht wurde von dimikuhn am 29. Jan. 2017 editiert.]

[Diese Nachricht wurde von dimikuhn am 29. Jan. 2017 editiert.]

[Diese Nachricht wurde von dimikuhn am 29. Jan. 2017 editiert.]

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