Я хочу поделиться с вами своим опытом использования правил Ilogic в Autodesk Inventor 2020. Речь пойдет о формировании заказа на изготовление деталей из листового материала в сторонней организации.
Для справки:
-
Правило - это небольшая программа на языке visual basic, которую можно использовать для контроля за другими параметрами, элементами или компонентами Inventor.
-
Ilogic внедряет правила в виде объектов непосредственно в деталь, сборку и документы чертежей. Правило определяет и применяет значения параметра проекта и атрибутов. Регулируя эти значения, можно определить поведение атрибутов, элементов и компонентов модели.
Существует два основных типа правил iLogic - "локальные" и "внешние". "Локальное" правило-это правило, которое сохраняется непосредственно в конкретном документе Inventor (файл детали, сборки или чертежа). В свою очередь "внешнее" правило-это правило, которое сохраняется как отдельный текстовый файл на локальном диске компьютера. В этой статье я буду рассматривать работу с внешним правилом.
Не так давно в рамках нового большого проекта столкнулся с необходимостью создания комплекта файлов разверток для размещения заказа на стороне. Мне и раньше приходилось это делать, но количество деталей в сборке было в десятки раз меньше. Процесс происходил следующим образом:
- Открытие исходной сборки проекта.
- Открытие листовой детали.
- Создание развертки.
- Сохранение в формате dxf c присвоением имени файла и указанием пути сохранения файла.
- Сохранение чертежа в формате pdf.
- Сложить это все в одну папку и отправить вместе с детальной спецификацией в отдел закупок.
В рамках нового проекта все начиналось по старой привычке. Процесс занимал длительное время. Вскоре это надоело, и я задумался над тем, чтобы данный процесс упростить. Было написано правило для создания разверток, которое срабатывало при закрытии листовой детали (правило работало только для файлов с расширением .ipt). Данное правило ускоряло процесс за счет автоматизации пунктов 3, 4. Этого оказалось недостаточно. Мне хотелось, чтобы правило работало внутри сборки, автоматически определяло листовые детали, открывало эту деталь, создавало развертку, если она была не создана и сохраняло под определенным названием, форматом, в указанную папку. И результат был достигнут.
Разберем на конкретном примере.
Для начала откроем файл сборки. В дереве модели перейдем во вкладку ilogic.
Код сохранен в текстовом файле блокнота. Добавим внешнее правило к модели. ПКМ на пустом месте - “Добавить внешнее правило”
Указываем путь где расположен файл с правилом и жмем открыть
В дереве ilogic во вкладке “Внешние правила” появился наш файл с кодом.
Нажимая ПКМ на файл с правилом открываем всплывающее меню, из которого можем:
-
Запустить правило.
-
Открыть браузер ilogic для редактирования правила.
-
Перейти в папку где расположен файл с кодом.
- Удалить правило.
Итак, сборка включает в себя 408 компонентов (Рис.6). Достаточно большой объем, чтобы открывать каждый файл и экспортировать файл развертки.
Текст правила описан ниже:
'определить активный документ как файл сборки
Dim oAsmDoc As AssemblyDocument
oAsmDoc = ThisApplication.ActiveDocument
oAsmName = Left(oAsmDoc.DisplayName, Len(oAsmDoc.DisplayName) -4)
'Проверить, что активный документ является файлом сборки
If ThisApplication.ActiveDocument.DocumentType <> kAssemblyDocumentObject Then
MessageBox.Show("Запустите правило, находясь в сборке.", "iLogic")
Exit Sub
End If
'Ввод данных пользователем (да или нет)
window = MessageBox.Show ( _
"Будут созданы DXF файлы всех компонентов сборки типа листовой детали" _
& 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_PROFILE"
oCompDef.DataIO.WriteDataToFile( sOut, oDataMedium.FileName)
oCompDef.FlatPattern.ExitEdit
Catch
End Try
oDrawDoc.Close
Else
End If
Автор статьи: Андрей Кузнецов
Инженер-конструктор ООО "СиЭмТиДжи ОТОМОТИВ"