'определить активный документ как файл сборки Dim oAsmDoc As AssemblyDocument oAsmDoc = ThisApplication.ActiveDocument oAsmName = Left(oAsmDoc.DisplayName, Len(oAsmDoc.DisplayName) -4) 'Проверить, что активный документ является файлом сборки If ThisApplication.ActiveDocument.DocumentType <> kAssemblyDocumentObject Then MessageBox.Show("Please run this rule from the assembly file.", "iLogic") Exit Sub End If 'Ввод данных пользователем (да или нет) window = MessageBox.Show ( _ "Будут созданы DXF файлы всех компонентов сборки типа sheet metal." _ & vbLf & " " _ & vbLf & "Вы уверены что хотите создать DXF файлы для всех компонентов сборки?" _ & vbLf & "Это займет некоторое время.", "Пакетный вывод DXF файлов ",MessageBoxButtons.YesNo) If window = vbNo Then Return Else End If 'Получение пути к документу, который содержит данное правило oPath = ThisDoc.Path 'Создание переходных объектов oDataMedium = ThisApplication.TransientObjects.CreateDataMedium oContext = ThisApplication.TransientObjects.CreateTranslationContext oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism oOptions = ThisApplication.TransientObjects.CreateNameValueMap 'Прописываем путь целевой папки oFolder = oPath & "\" & oAsmName 'Проверка наличия папки, ее создание в случае отсутствия If Not System.IO.Directory.Exists(oFolder) Then System.IO.Directory.CreateDirectory(oFolder) End If ' - - - - - - - -Компоненты сборки - - - - - - - - 'Доступ к компонентам входящим в сборку Dim oRefDocs As DocumentsEnumerator oRefDocs = oAsmDoc.AllReferencedDocuments Dim oRefDoc As Document For Each oRefDoc In oRefDocs iptPathName = Left(oRefDoc.FullDocumentName, Len(oRefDoc.FullDocumentName) - 3) & "ipt" If(System.IO.File.Exists(iptPathName)) Then Dim oDrawDoc As PartDocument oDrawDoc = ThisApplication.Documents.Open(iptPathName, True) oFileName = Left(oRefDoc.DisplayName, Len(oRefDoc.DisplayName)) Try 'Задаем имя файла развертки dxf Try CustomName =iProperties.Value(oFileName, "Custom", "Профиль") Catch CustomName ="CMTG" End Try oDataMedium.FileName = oFolder & "\" & CustomName & " " & oFileName & ".dxf" 'Процесс определения компонента и создания развертки Dim oCompDef As SheetMetalComponentDefinition oCompDef = oDrawDoc.ComponentDefinition If oCompDef.HasFlatPattern = False Then oCompDef.Unfold Else oCompDef.FlatPattern.Edit End If 'Задаем параметры конфигурации сохранения файла развертки (расширение dxf , версия файла, вывод наружного контура ) Dim sOut As String sOut = "FLAT PATTERN DXF?AcadVersion=2010&OuterProfileLayer=IV_OUTER_PR?OFILE" oCompDef.DataIO.WriteDataToFile( sOut, oDataMedium.FileName) oCompDef.FlatPattern.ExitEdit Catch End Try oDrawDoc.Close Else End If Next