ADN Club > Inventor API

Автоматическая выгрузка dxf из твердых тел детали

(1/8) > >>

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 выгружается по определённому шаблону, но где искать - не знаю. В папке с шаблонами чертежей, деталей и пр. его нет.
Подскажите, куда копать?

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии