Ich habe ein Makro erstellt, um ein PDF und eine DWG des geöffneten MEP in SW zu generieren.
Ich nutze die Gelegenheit, um die generierte Datei mit Name, Nummer und Hinweis umzubenennen.
Für Eigenschaften im MEP verwende ich Revision = swModel.CustomInfo("Revision"), aber welche Syntax sollte ich verwenden, um eine Eigenschaft aus dem PRT oder ASM abzurufen, auf die im MEP verwiesen wird.
Das Makro ermöglicht es mir, die Dateien einzeln zu generieren oder es mit dem Integrationsdienstprogramm aufzurufen, um einen Stapel von Dateien zu verarbeiten
Ich bin mir nicht sicher, ob Sie dies direkt aus dem MEP tun können, aber Sie können den Namen des referenzierten 3D-Modells mit der Funktion "GetReferencedModelName()" finden, dieses 3D-Modell öffnen, die Eigenschaften notieren, an denen Sie interessiert sind, das 3D-Modell schließen und dann Ihre Verarbeitung auf dem MEP fortsetzen. All dies natürlich per Makro.
Ansonsten ein anderer Vorschlag, ich sehe, dass Sie die Mycad-Werkzeuge haben, und die Integration sollte es Ihnen ermöglichen, all diese Funktionen auszuführen, ohne ein Makro erstellen zu müssen.
Ich beherrsche Makros nicht genug, um mit dem Vorschlag von d.roger zu beginnen.
Mit Integration habe ich nicht gesehen, wie man PDF oder DWG generiert. Mit Batch Converter funktioniert es, und ich kann die Informationen des Teils abrufen!
Aber es ist ein bisschen umständlich: Ich muss Integration und dann Batch Converter starten und jedes Mal die Liste der Dateien (es ist nicht möglich, eine Liste von Dateien zu speichern) in jedes Dienstprogramm ziehen
Dim sModelName As String
Dim ValOut As String
Dim ResolvedValOut As String
Dim sConfigName As String
Dim WasResolved As Boolean
Dim swModelDocExt As ModelDocExtension
Dim swCustProp As CustomPropertyManager
Sub main()
Set swApp = CreateObject("SldWorks.Application")
Set swModel = swApp.ActiveDoc
If swModel Is Nothing Then
MsgBox ("Pas de document ouvert")
Else
If swModel.GetType <> 3 Then
MsgBox ("Il ne s'agît pas d'une mise en plan")
Else
Set swDraw = swModel
vSheetName = swDraw.GetSheetNames
vSheetNameArr = swDraw.GetSheetNames
For Each vSheetName In vSheetNameArr
bRet = swDraw.ActivateSheet(vSheetName): Debug.Assert bRet
Set swView = swDraw.GetFirstView 'Sélectionne le fond de plan
Set swView = swView.GetNextView 'Passe à la vue suivante pour exclure le fond de plan
'Debug.Print swView.GetName2
While Not swView Is Nothing
' Determine if this is a view of a part or assembly
sModelName = swView.GetReferencedModelName
sModelName = LCase(sModelName)
sConfigName = swView.ReferencedConfiguration
FileConnu = False
If InStr(sModelName, "sldprt") > 0 Then
nDocType = swDocPART
ElseIf InStr(sModelName, "slasm") > 0 Then
nDocType = swDocASSEMBLY
Else
nDocType = swDocNONE
Exit Sub
End If
If nDocType = 1 Or nDocType = 2 Then
Call Export
End If
Set swView = swView.GetNextView
Wend
Next vSheetName
End If
End If
End Sub
Sub Export()
Set swModel = swApp.OpenDoc6(sModelName, nDocType, swOpenDocOptions_Silent, "", nErrors, nWarnings)
Set swModelDocExt = swModel.Extension
Set swCustProp = swModelDocExt.CustomPropertyManager(sConfigName)
boolstatus = swCustProp.Get5("Revision", False, ValOut, ResolvedValOut, WasResolved)
End Sub
Nach dem boolstatus müssen Sie den ValOut- oder ResolvedValout-Wert (je nach zurückgegebenem Feld entspricht der zweite Wert dem in der Spalte "Ausgewerteter Wert" eingegebenen Wert) in einer Zeichenfolgenvariablen abrufen und dann mit dem Registrierungsnamen verketten.
Ich habe nicht alle Variablen eingefügt, Sie müssen nur das hinzufügen, was Ihnen fehlt, um Ihr Makro zu erweitern.
Zählt diese Schleife die verschiedenen Ansichten des Zeichnungsblattes oder der Zeichnungsblätter? (Sheetname erinnert mich an den Namen des Blattes (wie in Excel), aber es wäre sinnvoll, stattdessen die Zeichnungsansichten zu "zählen")