Dim pd As PartDocument: pd = ThisApplication.ActiveDocument
If pd.ComponentDefinition.Type <> kSheetMetalComponentDefinitionObject Then
MsgBox ("Нужна листовая деталь.")
Exit Sub
End If
If pd.ComponentDefinition.SurfaceBodies.Count < 2 Then
MsgBox ("Нужна многотельная деталь.")
Exit Sub
End If
'Перебор по количеству солидов
Dim i As Integer
For i = 1 To pd.ComponentDefinition.SurfaceBodies.Count
'Создать производную деталь невидимую для пользователя
Dim derivePart As PartDocument: derivePart = ThisApplication.Documents.Add(kPartDocumentObject, ThisApplication.FileManager.GetTemplateFile(kPartDocumentObject), False) '!!!!
'Подготовка к созданию производного компонента
Dim dpc As DerivedPartUniformScaleDef
dpc = derivePart.ComponentDefinition.ReferenceComponents.DerivedPartComponents.CreateUniformScaleDef(pd.FullFileName)
Dim j As Integer
'Выделить текущий солид
For j = 1 To pd.ComponentDefinition.SurfaceBodies.Count
If i <> j Then dpc.Solids.Item(i).IncludeEntity = False
Next
' Создать производный компонент
Call derivePart.ComponentDefinition.ReferenceComponents.DerivedPartComponents.Add(dpc)
'конвертировать производную деталь в листовой материал Document.SubType to Sheetmetal
derivePart.SubType = "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}"
Dim sheetCompDef As SheetMetalComponentDefinition: sheetCompDef = derivePart.ComponentDefinition
Dim baseSheetCompDef As SheetMetalComponentDefinition: baseSheetCompDef = pd.ComponentDefinition
'Разрешить изменение толщины листовой детали
sheetCompDef.UseSheetMetalStyleThickness = False
' Изменение толщины
Dim oThicknessParam As Parameter
oThicknessParam = sheetCompDef.Thickness
oThicknessParam.Value = baseSheetCompDef.Thickness.Value
'Сохранить в DXF
' Get the DataIO object.
Dim oDataIO As DataIO
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"
fname = pd.File.FullFileName & "-" & CStr(i) & ".dxf"
' Create the DXF file.
oDataIO.WriteDataToFile (sOut, fname)
'Закрыть производную деталь без сохранения
derivePart.Close (True)
Next