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

Автор Тема: Автоматическая выгрузка dxf из твердых тел детали  (Прочитано 15015 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Т.е. выставлять единицы измерения перед конвертацией в dxf.
Где выставлять единицы измерения? В файле модели?

Оффлайн Bookvoed

  • ADN OPEN
  • Сообщений: 37
  • Карма: 0
Где выставлять единицы измерения? В файле модели?
Я хочу понять, где при выгрузке сбиваются единицы измерения. Как я понимаю, это происходит либо в шаблоне C:\Users\Public\Documents\Autodesk\Inventor 2022\Design Data\DWG-DXF, хотя я не нашёл там упоминания единиц измерения.
Либо это происходит в модели.
Если долго мучиться - что-нибудь получится.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Возможно ли в принудительном порядке выгружать dxf в миллиметрах?
Т.е. выставлять единицы измерения перед конвертацией в dxf.
Извиняюсь за кривое цитирование.
Ну хоть файл с примером выложите, что бы предметно разговаривать.

Оффлайн Bookvoed

  • ADN OPEN
  • Сообщений: 37
  • Карма: 0
Вот этот файл. Бьюсь с ним который месяц :-[
Если долго мучиться - что-нибудь получится.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
К сожалению ваш листовой файл многотельный.
Он без создания производной детали даже не разворачивается.
Выберете какое из тел нужно разворачивать



Оффлайн Bookvoed

  • ADN OPEN
  • Сообщений: 37
  • Карма: 0
Запустите правило "Выгрузка". Он выгрузит dxf с обоих солидов.
Если долго мучиться - что-нибудь получится.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
посмотрел
у меня все нормально выгружается в акаде все в миллиметрах


Вот мой файл настроек экспорта разверток:



Может у вас что с акадом при просмотре dxf-файлов

Оффлайн Bookvoed

  • ADN OPEN
  • Сообщений: 37
  • Карма: 0
Разобрался. Проблема была в шаблонах деталей. Добавил шаблон standard.ipt, и всё заработало как надо.
Большое спасибо за помощь!
Если долго мучиться - что-нибудь получится.

Оффлайн Bookvoed

  • ADN OPEN
  • Сообщений: 37
  • Карма: 0
Приветствую! Столкнулся с проблемой: dxf не выгружается, если деталь содержит больше двух твёрдых тел. Подскажите, пожалуйста, в чём может быть проблема. Файл приложил.
Если долго мучиться - что-нибудь получится.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Приветствую! Столкнулся с проблемой: dxf не выгружается, если деталь содержит больше двух твёрдых тел. Подскажите, пожалуйста, в чём может быть проблема. Файл приложил.
Не удивительно, даже в пользовательском интерфейсе нельзя такое сделать. Нужно с многотельного листового материала делать производный компонент с каждого тела по отдельности, а потом уже разворачивать.

Оффлайн Bookvoed

  • ADN OPEN
  • Сообщений: 37
  • Карма: 0
Приветствую! Столкнулся с проблемой: dxf не выгружается, если деталь содержит больше двух твёрдых тел. Подскажите, пожалуйста, в чём может быть проблема. Файл приложил.
Не удивительно, даже в пользовательском интерфейсе нельзя такое сделать. Нужно с многотельного листового материала делать производный компонент с каждого тела по отдельности, а потом уже разворачивать.
Попробовал с многотельного листового материала сделать детали с трёх твёрдых тел, а потом выгрузить их. Выдаёт ошибку. Мне кажется странным то, что два тела выгрузить можно, а три - нет. Или я что-то не так  понял?
Если долго мучиться - что-нибудь получится.

Оффлайн Bookvoed

  • ADN OPEN
  • Сообщений: 37
  • Карма: 0
Приветствую! Столкнулся с проблемой: dxf не выгружается, если деталь содержит больше двух твёрдых тел. Подскажите, пожалуйста, в чём может быть проблема. Файл приложил.
Не удивительно, даже в пользовательском интерфейсе нельзя такое сделать. Нужно с многотельного листового материала делать производный компонент с каждого тела по отдельности, а потом уже разворачивать.
Ошибка вылетает в 57 строке, при количестве твёрдых тел больше трёх.
Код - Visual Basic [Выбрать]
  1. Dim pd As PartDocument:  pd = ThisApplication.ActiveDocument
  2.  
  3. If pd.ComponentDefinition.Type <> kSheetMetalComponentDefinitionObject Then
  4. MsgBox ("Нужна листовая деталь.")
  5. Exit Sub
  6. End If
  7.  
  8. If pd.ComponentDefinition.SurfaceBodies.Count < 2 Then
  9. MsgBox ("Нужна многотельная деталь.")
  10. Exit Sub
  11. End If
  12.  
  13.  
  14. 'Перебор по количеству солидов
  15. Dim i As Integer
  16. For i = 1 To pd.ComponentDefinition.SurfaceBodies.Count
  17. 'Создать производную деталь невидимую для пользователя
  18. Dim derivePart As PartDocument:  derivePart = ThisApplication.Documents.Add(kPartDocumentObject, ThisApplication.FileManager.GetTemplateFile(kPartDocumentObject), False)  '!!!!
  19.  
  20. 'Подготовка к созданию производного компонента
  21. Dim dpc As DerivedPartUniformScaleDef
  22.  dpc = derivePart.ComponentDefinition.ReferenceComponents.DerivedPartComponents.CreateUniformScaleDef(pd.FullFileName)
  23.  
  24. Dim j As Integer
  25.  
  26. 'Выделить текущий солид
  27. For j = 1 To pd.ComponentDefinition.SurfaceBodies.Count
  28. If i <> j Then dpc.Solids.Item(i).IncludeEntity = False
  29. Next
  30.  
  31. ' Создать производный компонент
  32. Call derivePart.ComponentDefinition.ReferenceComponents.DerivedPartComponents.Add(dpc)
  33.  
  34. 'конвертировать производную деталь в листовой материал Document.SubType to Sheetmetal
  35. derivePart.SubType = "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}"
  36.  
  37. Dim sheetCompDef As SheetMetalComponentDefinition:  sheetCompDef = derivePart.ComponentDefinition
  38. Dim baseSheetCompDef As SheetMetalComponentDefinition:  baseSheetCompDef = pd.ComponentDefinition
  39.  
  40.  'Разрешить изменение толщины листовой детали
  41.    sheetCompDef.UseSheetMetalStyleThickness = False
  42.  
  43. ' Изменение толщины
  44.    Dim oThicknessParam As Parameter
  45.      oThicknessParam = sheetCompDef.Thickness
  46.   oThicknessParam.Value = baseSheetCompDef.Thickness.Value
  47.  'Сохранить в DXF
  48.  ' Get the DataIO object.
  49.    Dim oDataIO As DataIO
  50.      oDataIO = derivePart.ComponentDefinition.DataIO
  51.  
  52.     ' Build the string that defines the format of the DXF file.
  53.    Dim sOut As String
  54.     sOut = "FLAT PATTERN DXF?AcadVersion=R12&OuterProfileLayer=Outer"
  55.         fname = pd.File.FullFileName & "-" & CStr(i) & ".dxf"
  56.     ' Create the DXF file.
  57.    oDataIO.WriteDataToFile (sOut, fname)
  58.  
  59. 'Закрыть производную деталь без сохранения
  60. derivePart.Close (True)
  61.  
  62. Next
Если долго мучиться - что-нибудь получится.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
прикольно тестовый файл уже в 2023 версии, у меня пока стоит 2022, на выходных качну и поставлю 2023

Оффлайн Bookvoed

  • ADN OPEN
  • Сообщений: 37
  • Карма: 0
Есть подозрение, что неправильно выделяется текущее твёрдое тело.
Если долго мучиться - что-нибудь получится.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
после запуска вашего макроса
создается производная деталь с двумя телами, конечно Инвентор такое разворачивать не будет