Wenn ich mich nicht irre, sollten Sie Lucas Prieur fragen, er kennt sich sehr gut mit Makro aus, aber ich weiß nicht, ob er verfügbar ist?
Hallo und ein frohes neues Jahr an alle,
In der Tat habe ich ein ähnliches Makro (PDF & DWG) erstellt.
Ich hatte vor, diesen Artikel auf Lynkoa zu posten, aber ich habe es aus Zeitmangel nicht gemacht. Bevor ich es veröffentlichte, wollte ich es vereinfachen und alle Zeilen nacheinander kommentieren, um die Lesbarkeit für die Neulinge der VBA-Programmierung zu verbessern.
Haben Sie die Grundlagen in VBA? Haben Sie bereits eine Basis für dieses Makro oder fangen Sie bei Null an?
Ich habe ein Tutorial für "Save-As" für SolidWorks erstellt (das einfacher ist und für jede Zeile kommentiert wird), das Sie hier finden können:
http://www.lynkoa.com/tutos/3d/macro-enregistrer-sous-avec-solidworks
Sie werden bereits einige Leads haben. Ich bin derzeit bis zum 6. im Urlaub, daher werde ich das Makro zu diesem Zeitpunkt übertragen (aber seien Sie sich bewusst, dass dieses spezifisch für unser Unternehmen ist und viel Anpassungsarbeit erfordert).
Hallo und einen guten Rutsch ins neue Jahr,
Können Sie angeben, wenn Sie sagen:
- in einem anderen Ordner im Netzwerk als dem Speicherort von . SLDDRW
Möchten Sie es immer an einem Ort haben?
Wir haben unsere Solidworks-Dateien (Teile, Baugruppen und Zeichnungen) in einem Ordner "Technisch".
Wir haben eine "Datenbank" mit Plänen in DXF und PDF (von allen durchsuchbar) in einem anderen Ordner.
Also NEIN, das sind 2 verschiedene Orte!
Hallo @ ThomasM
Ich denke, das Versprechen ist nicht nur schön
denn wenn ich mich nicht irre, konnten Sie dieses besagte Makro wiederherstellen
Haben Sie es ausprobiert und entspricht es Ihrem tatsächlichen Bedarf?
Es stimmt, je klarer die Frage, desto zielgerichteter ist die Antwort (Lucas) ;-)
@+ ;-)
Es ist in der Tat ein einziger Ordner für alle PDFs. (und DXF)
Nein, im Moment funktioniert es nicht.
Ich habe das Makro tatsächlich im "Solidagora"-Forum bekommen.
Aber es gibt mir einen Fehler.
Ein Problem, das mit der Tatsache zusammenhängt, dass ich in 64 Bit bin. (soweit ich das verstehe)
Ich versuche, mich weiterzuentwickeln, damit es funktioniert.
Und ich möchte es auch so vereinfachen, dass es durch Drücken des Makrosymbols das tut, was ich von ihm verlange, ohne einen Ordnerpfad eingeben oder die Erweiterung überprüfen zu müssen...
Für die 64 Bit ist das einzige Problem, das ich kenne, dass beim Starten des Makros das Dialogfeld nicht angezeigt wird.
Mit einem "kleinen" ALT + TAB rufen Sie das Dialogfeld auf (Sie brauchen nicht all diese longPtr und PrtSafe ...)
Diese Antwort beantwortet Ihre Frage nicht
Geduldiges Selbst, die meisten Menschen sind im Urlaub zum Jahresende, es wird kommen
@+ ;-)
Können Sie das Makro hier als Textdatei posten?
Ich kann es so ändern, dass es den gewünschten Pfad enthält, wenn Sie es mir geben (in UNC ist es besser, wie: "\\SERVER\Design Office\SolidWorks Plans\PDF Plans\")
Wenn Sie den Fehler haben und auf Debuggage klicken, zu welcher Zeile gelangen Sie?
Siehe diesen Link
https://forum.solidworks.com/thread/66010
Anhang
@+ ;-)
file_save_as_pdf__dwg.swp_.zip
Siehe auch diesen Link
http://forum.solidagora.com/topic1758.html
@+ ;-)
Hier ist, was ich geschafft habe, indem ich rechts und links wiederhergestellt habe.
Option Explizit
Öffentliche Enumerations swDocumentTypes_e
swDocNONE = 0 ' Früher TYPE_NONE
swDocPART = 1 ' Früher TYPE_PART
swDocASSEMBLY = 2 ' Früher TYPE_ASSEMBLY
swDocDRAWING = 3 ' Früher TYPE_DRAWING
Ende der Enumeration
Dimmen swApp als Objekt
Dim swModel As ModelDoc2
Dim sPathName als Zeichenfolge
Dim sReference As String
Dim sSaveName als Zeichenfolge
Dim longstatus As Long
myRev als String dimmen
Sub main()
Legen Sie swApp = Application.SldWorks fest
Festlegen von swModel = swApp.ActiveDoc
Wenn swModel nichts ist, dann
MsgBox ("Kein geöffnetes Dokument")
ElseIf swModel.GetType <> 3 dann
MsgBox ("Dies ist keine Zeichnung")
Oder
sPathName = swModel.GetPathName' ruft den Anzeigenamen des aktuellen Dokuments ab
sReference = Mid(sPathName, InStrRev(sPathName, "\") + 1) 'Ruft alles nach dem letzten \ ab
sReference = Left(sReference, Len(sReference) - 7) 'Die 6 Zeichen, die der Dateierweiterung entsprechen, und die .
sPathName = Left(sPathName, InStrRev(sPathName, "\")) 'Ruft den Pfad ohne Dateinamen ab
'myRev = swModel.CustomInfo2("", "Hinweis") 'Ruft den Hinweis aus den Dokumenteigenschaften ab
myRev = swModel.GetCustomInfoValue("", "Index")
longstatus = swModel.SaveAs3("X:\" + sReference + myRev + ".PDF", 0, 0)
longstatus = swModel.SaveAs3("X:\" + sReference + myRev + ". DXF", 0, 0)
Ende, wenn
Ende Sub
Letztes kleines Problem:
Ich kann die Eigenschaft "Hinweis", die mit dem Teil verknüpft ist, nicht abrufen.
swModel.CustomInfo2("", "Index") und swModel.GetCustomInfoValue("", "Index") geben mir nichts zurück.
Was muss ich schreiben, um die Eigenschaft "Index" abzurufen?
Und so kann mir niemand sagen, wie ich die benutzerdefinierte "Review"-Eigenschaft abrufen kann, die im Raum "verankert" ist?
Es wäre großartig, da es mir ermöglichen würde, meine Frage vollständig zu beantworten!
Vielen Dank im Voraus!
Ich denke, dass Sie im anderen Forum eine Bitte um eine Erklärung haben, siehe den beigefügten Text
von annwn » Di 7 Jan 2014 14:25
Beeindruckend... Abwarten... Ich verstehe nicht alles!
Welche Änderung des Codes haben Sie vorgenommen?
Können Sie Screenshots Ihrer Fehlermeldungen machen?
@+ ;-)
Hallo
Ich habe ein ähnliches Makro, das eine benutzerdefinierte Eigenschaft abruft und an den Dateinamen anhängt.
Es macht, was Sie wollen, speichert eine Zeichnung in PDF und DXF mit dem Zusatz der Eigenschaft "index"
Alles, was Sie tun müssen, ist, die Zielpfade zu ändern.
Wenn Sie Hilfe benötigen, zögern Sie nicht
dxf__pdf_bon_pour_fab.swp
Um eine benutzerdefinierte Eigenschaft abzurufen, müssen Sie den folgenden Befehl verwenden:
Get4-Methode (ICustomPropertyManager)
Nachfolgend finden Sie ein Beispiel für die API-Hilfe:
Dim swApp als SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim swModelDocExt als ModelDocExtension
Dim swCustProp As CustomPropertyManager
Dim val As String Dim valout As String
Dim bool als boolescher Wert
Sub main()
Legen Sie swApp = Application.SldWorks fest
Legen Sie swModel = swApp fest. ActiveDoc (Englisch)
Legen Sie swModelDocExt = swModel fest. Erweiterung
' Abrufen der benutzerdefinierten Eigenschaftsdaten
Legen Sie swCustProp = swModelDocExt fest. CustomPropertyManager("")
bool = swCustProp. Get4("Property_Name", False, val, valout)
Debug.Print "Wert: " & Wert
Debug.Print "Ausgewerteter Wert: " & Valout
Debug.Print "Aktuelle Daten: " & bool
Ende Sub
Danke fgirard,
Ich habe Ihr Makro so angepasst, dass es für uns funktioniert und das tut, was ich wollte.
Vielen Dank!
Mit dieser Lösung sollte es funktionieren
http://forum.solidagora.com/viewtopic.php?f=28&t=101&p=14689&e=14689
@+;-)
Hallo
Ich wollte das Fgirard-Makro verwenden, aber der Link funktioniert nicht.
Fgirard, könntest du es bitte zurücklegen?
Vielen Dank