AddReference "Autodesk.Connectivity.WebServices.dll" Imports AWS = Autodesk.Connectivity.WebServices AddReference "Autodesk.DataManagement.Client.Framework.Vault.dll" Imports VDF = Autodesk.DataManagement.Client.Framework AddReference "Connectivity.Application.VaultBase.dll" Imports VB = Connectivity.Application.VaultBase Sub Main() Dim mVltCon As VDF.Vault.Currency.Connections.Connection mVltCon = VB.ConnectionManager.Instance.Connection If mVltCon Is Nothing Then MessageBox.Show("Not Logged In to Vault! - Login first and repeat executing this rule.") Exit Sub End If Dim VaultPath As String = ThisDoc.PathAndFileName(True) VaultPath = VaultPath.Replace("D:\$WorkingFolder\", "$/") 'flip the slashes VaultPath = VaultPath.Replace("\", "/") Dim VaultPaths() As String = New String() {VaultPath} Dim wsFiels() As AWS.File = mVltCon.WebServiceManager.DocumentService.FindLatestFilesByPaths(VaultPaths) Dim mFileIt As VDF.Vault.Currency.Entities.FileIteration = New VDF.Vault.Currency.Entities.FileIteration(conn,wsFiels(0)) Dim lifeCycleInfo As VDF.Vault.Currency.Entities.FileLifecycleInfo = mFileIt.LifecycleInfo 'MessageBox.Show(lifeCycleInfo.StateName) If lifeCycleInfo.StateName = "In Bearbeitung" Then MessageBox.Show("Die Datei ist nicht freigegeben. Nur freigegebene Dateien können für die Herausgabe exportiert werden.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) Else If lifeCycleInfo.StateName = "Freigegeben" Then Dim oDoc As PartDocument = ThisDoc.Document Dim Dir As String = "Y:\ZZ per-form" & "\"'ThisDoc.Path & "\" Dim oCD As ComponentDefinition = oDoc.ComponentDefinition Dim oSolidA As SurfaceBody,oSolidB As SurfaceBody Dim oFilename As String For i As Integer = 1 To oCD.SurfaceBodies.Count For Each oSolidB In oCD.SurfaceBodies oSolidB.Visible = False Next oSolidA = oCD.SurfaceBodies.Item(i) oSolidA.Visible = True oSolidName = oSolidA.Name oDoc = ThisApplication.ActiveDocument oCount = oDoc.ComponentDefinition.SurfaceBodies.Count If oCount = 1 oFilename = Dir & ThisDoc.FileName & "-" & "R" & iProperties.Value("Project", "Revision Number") & " - " & iProperties.Value("Project", "Description") & ".stl" Else oFilename = Dir & ThisDoc.FileName & "-" & "R" & iProperties.Value("Project", "Revision Number") & "-" & oSolidName & " - " & iProperties.Value("Project", "Description") & ".stl" End If Export(oDoc,oFilename) Next For Each oSolidB In oCD.SurfaceBodies oSolidB.Visible = True Next End If End Sub Sub Export(doc As Document, oFilename As String) Dim oTranslator As TranslatorAddIn oTranslator = ThisApplication.ApplicationAddIns.ItemById("{533E9A98-FC3B-11D4-8E7E-0010B541CD80}") If oTranslator Is Nothing Then MsgBox ("Could not access STEP translator.") Exit Sub End If Dim oContext As TranslationContext oContext = ThisApplication.TransientObjects.CreateTranslationContext Dim oOptions As NameValueMap oOptions = ThisApplication.TransientObjects.CreateNameValueMap If oTranslator.HasSaveCopyAsOptions (ThisApplication.ActiveDocument, oContext, oOptions) Then oOptions.Value("ExportUnits") = 5 'Millimeter oOptions.Value("Resolution") = 0 'High oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism Dim oData As DataMedium oData = ThisApplication.TransientObjects.CreateDataMedium oData.FileName = oFilename Call oTranslator.SaveCopyAs(doc, oContext, oOptions, oData) End If End Sub