ADN Club > Inventor API
Автоматическая выгрузка dxf из твердых тел детали
fedor:
Добрый день!
Возник насущный вопрос! Возможно ли в APi в автоматической режиме выгружать дхф в деталях содержащий несколько "твердых тел"?
Стандартно, инвентор просит создать из твердых тел отдельные детали и уже потом с них выгружать развертки, хотелось бы узнать, возможно ли выгрузка сразу разверток сразу из детали?
mikazakov:
--- Цитата: fedor от 29-06-2017, 16:02:27 ---Возможно ли в APi в автоматической режиме выгружать дхф в деталях содержащий несколько "твердых тел"?
--- Конец цитаты ---
Ну это даже через пользовательский интерфейс невозможно для листового материала, а вы хотите что бы через API было
Если шибко охота, можно попытаться делать это через создание однотельных производных деталей в скрытом режиме. потом эти файлы удалять.
fedor:
Если нет другого решения, то не могли бы подсказать, как программно создать из списка твердых тел "однотелые производные детали"?
mikazakov:
--- Цитата: fedor от 30-06-2017, 13:01:27 ---как программно создать из списка твердых тел "однотелые производные детали"?
--- Конец цитаты ---
Как то так. Вызвать макрос при отдельно открытой многотельной листовой детали и наслаждаться.
--- Код - Visual Basic [Выбрать] ---Option Explicit Sub SaveUnfoldSolidsToDXF()Dim pd As PartDocument: Set pd = ThisApplication.ActiveDocument If pd.ComponentDefinition.Type <> kSheetMetalComponentDefinitionObject ThenMsgBox ("Нужна листовая деталь.")Exit SubEnd If If pd.ComponentDefinition.SurfaceBodies.Count < 2 ThenMsgBox ("Нужна многотельная деталь.")Exit SubEnd If 'Перебор по количеству солидовDim i As IntegerFor i = 1 To pd.ComponentDefinition.SurfaceBodies.Count'Создать производную деталь невидимую для пользователяDim derivePart As PartDocument: Set derivePart = ThisApplication.Documents.Add(kPartDocumentObject, ThisApplication.FileManager.GetTemplateFile(kPartDocumentObject), false) '!!!! 'Подготовка к созданию производного компонентаDim dpc As DerivedPartUniformScaleDefSet dpc = derivePart.ComponentDefinition.ReferenceComponents.DerivedPartComponents.CreateUniformScaleDef(pd.fullFileName) Dim j As Integer 'Выделить текущий солидFor j = 1 To pd.ComponentDefinition.SurfaceBodies.CountIf i <> j Then dpc.Solids.Item(i).IncludeEntity = FalseNext ' Создать производный компонентCall derivePart.ComponentDefinition.ReferenceComponents.DerivedPartComponents.Add(dpc) 'конвертировать производную деталь в листовой материал Document.SubType to SheetmetalderivePart.SubType = "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" Dim sheetCompDef As SheetMetalComponentDefinition: Set sheetCompDef = derivePart.ComponentDefinitionDim baseSheetCompDef As SheetMetalComponentDefinition: Set baseSheetCompDef = pd.ComponentDefinition 'Разрешить изменение толщины листовой детали sheetCompDef.UseSheetMetalStyleThickness = False ' Изменение толщины Dim oThicknessParam As Parameter Set oThicknessParam = sheetCompDef.Thickness oThicknessParam.Value = baseSheetCompDef.Thickness.Value 'Создание разверткиCall sheetCompDef.Unfold'Сохранить в DXF ' Get the DataIO object. Dim oDataIO As DataIO Set oDataIO = derivePart.ComponentDefinition.DataIO ' Build the string that defines the format of the DXF file. Dim sOut As String sOut = "FLAT PATTERN DXF?AcadVersion=R12&OuterProfileLayer=Outer" ' Create the DXF file. oDataIO.WriteDataToFile sOut, pd.File.fullFileName & "-" & CStr(i) & ".dxf" 'Закрыть производную деталь без сохраненияderivePart.Close (True) Next End Sub
Bookvoed:
Здравствуйте. Заранее извиняюсь за комментарии к посту пятилетней давности.
При выгрузке dxf(используя правило) получаются ровно в 10 раз меньше своего исходного размера, т.е. развертка детали в инвенторе 500х500, на чертеже dxf 50x50.
При выгрузке "руками" - всё в порядке.
Предположу, что dxf выгружается по определённому шаблону, но где искать - не знаю. В папке с шаблонами чертежей, деталей и пр. его нет.
Подскажите, куда копать?
Навигация
Перейти к полной версии