Suchen eines MEP-Blatts in VBA in SolidWorks

Hallo Leute.

 

Ich versuche, ein Makro zu erstellen, um jedes Blatt meiner Zeichnungen in DXF und PDF zu speichern. Bisher kann ich alle Blätter im richtigen Format speichern oder es aktivieren, indem ich mit den Solidworks-Optionen herumspiele.

 

Trotzdem möchte ich den Namen direkt ändern können, ohne jede Datei umzubenennen (so langweilig!) Kurz. Zu diesem Zweck möchte ich in der Lage sein, meinem Makro zu sagen, dass es ein Blatt öffnet, es speichert und dann mit dem nächsten fortfährt. Ich weiß, dass ich ein Messgerät darauf stellen muss... Aber wie sage ich ihm, dass er das Blatt1, dann 2 usw. nehmen soll?

 

Und, kleine Bonusfrage. Gibt es irgendwo eine Zusammenfassung aller Solidworks-spezifischen Befehle?

 

Vielen Dank im Voraus

1 „Gefällt mir“

Hallo

 

Ich habe ein ähnliches Makro erstellt, aber wir verwenden nur ein Blatt oder wir möchten die 2 Blätter in derselben PDF-Datei haben.

 

Für Ihr Makro gibt es bereits "fertige" Makros!

Siehe hier:

https://forum.solidworks.com/thread/82929

https://forum.solidworks.com/thread/66753

 

Und was die Befehle betrifft, sprechen Sie von den VBA-Befehlen für SolidWorks?

 

Sie müssen zur Hilfe der APIs gehen:

http://help.solidworks.com/2014/English/api/sldworksapiprogguide/Welcome.htm

 

Oder eine Google-Suche ermöglicht oft eine schnellere Antwort!

2 „Gefällt mir“

Für deinen "Zähler" musst du alle Blätter aufschleifen, wenn du sicher bist, dass es immer Blatt1 dann 2 usw. ist, brauchst du nur eine Anleitung wie diese:

 

[CODE]

 

i = 1

Tun Sie, solange es (sheet_name gibt) 'Ich kenne die Kopfanweisung nicht

sheet_name = "Blatt" & i

"Hier ist Ihr Code für den Export in PDF und DWG

i = i +1

Schleife

 

[/CODE]

 

Aber wenn die Person Blatt 1 löscht oder umbenennt, funktioniert es nicht mehr!

 

Sie müssen also den Namen oder die Nummer jedes Blattes abrufen, und die SolidWorks API-Hilfe bietet ein Beispiel!

 

Da ist er:

Bearbeiten: Aktualisierung des Links, der schlecht war

http://help.solidworks.com/2012/English/api/sldworksapi/Get_Sheet_Numbers_and_Names_Example_VB.htm

 

Siehe auch diesen Link:

http://help.solidworks.com/2013/english/api/sldworksapi/save_drawing_sheets_as_dxf_example_vb.htm

2 „Gefällt mir“

Vielen Dank Lucas P für deine schnellen und bereitgestellten Antworten.

 

Zumindest bin ich jetzt mit Beispielen gepanzert (zum Glück liegt mein Englisch nicht so weit hinter mir!)

 

Ja, ich habe Ihr ähnliches Makro gesehen. Für mich hat es mich sehr inspiriert, indem ich es an meine Bedürfnisse angepasst habe.

 

Andererseits bin ich nach dem, was ich in dem, was Sie mir schicken, verstehe, verpflichtet, die Namen der Blätter zu kennen. Wenn es für meine Kurzgeschichten kein Problem ist, schaffe ich nicht wirklich das, was meine Vorgänger gemacht haben.

Also hatte ich gehofft, etwas wie in Excel zu finden, wo Sie "Sheet1" eingeben können, um sie anstelle ihrer Namen zu bezeichnen.

 

Ich werde ein bisschen herumfummeln und zurückkommen und den ganzen Code posten, wenn es funktioniert

1 „Gefällt mir“

Sorry, ich habe den gleichen Link 2 Mal gesetzt, und den interessantesten habe ich nicht gepostet:

 

http://help.solidworks.com/2012/English/api/sldworksapi/Get_Sheet_Numbers_and_Names_Example_VB.htm

 

Mit diesem Code können Sie alle Pläne in einer Zeichnung durchsuchen:

 

Für i = 0 Bis UBound(vSheetNames)

        Debug.Print "  Blattname[" & i & "] = " & vBlattnamen(i)

Weiter i

 

 

Und fügen Sie einfach Ihren Code anstelle von:

        Debug.Print "  Blattname[" & i & "] = " & vBlattnamen(i)

1 „Gefällt mir“

Ich habe ein Makro, das reibungslos funktioniert ... Aber wo nichts passiert. Ich verstehe nicht wirklich, warum und wo es stecken bleibt. Hat jemand eine Idee?

 

Sub Speichern()
Dim swapp als SldWorks.SldWorks
Dim swdoc As SldWorks.ModelDoc2
Dim Swdraw As SldWorks.ModelDoc
Dim swSheet als SldWorks.Sheet
Dimmen von vSheetNames als Variante
Dim Nbfeuille als Variante
Set swapp = Application.SldWorks
Legen Sie swdoc = swapp fest. ActiveDoc (Englisch)
Setze swdraw = swdoc
Set swSheet = Swdraw.GetCurrentSheet
"Bestätigungsmeldung
ret = MsgBox("Möchten Sie diese Zeichnung in DXF und PDF konvertieren?", vbOKCancel + vbExclamation + vbMsgBoxSetForeground + vbSystemModal, "Laserkonvertierung")
Wenn ret = vbAbbrechen, dann Ende
Registrierung neuer Name
Tun
 newname = InputBox("Bitte geben Sie den neuen Namen an:", "blabla", newname)
 Wenn StrPtr(newname) = 0 dann
 MsgBox "Vorgang abgebrochen"
 Sub beenden
 Ende, wenn
'Überprüfen von Fenstern mit verbotenen Zeichen
Do while InStr(newname, "/") > 0 Or InStr(newname, "*") > 0 Or InStr(newname, "?") > 0 Or InStr(newname, "<") > 0 Or InStr(newnam, ">") > 0 Or InStr(newnam, "!") > 0
 newname = InputBox("Bitte beachten Sie, dass der Name mindestens eines der verbotenen Zeichen enthält \/:*?""<>!" & vbNewLine & vbNewLine & "Bitte geben Sie den neuen Namen an:", "save-under by LPR", newname)
 Schleife
 Schleife While newname = " "
"Registrierungsdossier
Tun
 FilePath = InputBox("Geben Sie den Pfad an", "Datensatzordner", FilePath)
 Wenn StrPtr(FilePath) = 0, dann
 MsgBox "Vorgang abgebrochen"
 Sub beenden
Ende, wenn
"Durch Hinzufügen des \ am Ende des Ordnernamens
If Right(FilePath, 1) <> "\" then FilePath = FilePath & "\"
 Wenn Dir$(FilePath) <> "" dann
 EXISTIERT = 1
 Ansonsten: MsgBox "das Verzeichnis existiert nicht, bitte erstellen Sie es"
 Debug.Print Dir$(Dateipfad)
Ende, wenn
Schleife, während EXISTS <> 1
"Gibt die Anzahl der Blätter an
Nbfeuille = swdoc. GetSheetCount (Englisch)
Für i = 0 Bis Nbfeuille
    SWDOC. BlattVorherige Seite
    Weiter i
    'Wechseln Sie zum nächsten Blatt, wenn < zur Gesamtzahl
    Für i = 0 Bis varSheetCount - 1
    Wenn ich 0 <>, dann
    sw-Modell verwenden. BlattWeiter
    Ende, wenn
Aufzeichnung in DXF und PDF
SWDOC. Speichern unter (Dateipfad + neuer Name + "_" + i + ".dxf")
SWDOC. Speichern unter (Dateipfad + neuer Name + "_" + i + ".pdf")
Weiter i
Ende Sub

1 „Gefällt mir“