САПР: линии к программному обеспечению - PullRequest
0 голосов
/ 18 марта 2012

Как преобразовать набор связанных линий в твердотельные в приложениях САПР?Используемым инструментом может быть AutoCAD, SketchUp, Solidworks, FreeCAD или любое другое программное обеспечение , которое, как вы знаете, может выполнить эту простую задачу безболезненно.Обратите внимание, что следующая графика только для демонстрации.Желаемый результат должен быть действительным CAD-телом, чтобы можно было применять все связанные операции, такие как логические и т. Д.

enter image description here

Просто помните, что работу нужно выполнить тысячи раз поэтому ручные подходы не подходят.Даже некоторая помощь в написании фрагмента кода для этой работы высоко ценится (на любом языке), поэтому вы можете объяснить, как, например, написать простой писатель DXF только для Solid.Наша игра с некоторыми экспортерами DXF в Python не увенчалась успехом.

Обновление : простой Ruby-код для SketchUp или VBA-код для AutoCAD или Python для FreeCAD могли бы быть наиболее полезными.

Ответы [ 2 ]

3 голосов
/ 10 апреля 2012

Вот некоторые Google SketchUp Ruby API фрагменты. Это очень просто, используя метод Edge#find_faces, который заставит SketchUp попытаться найти возможные грани для данного ребра. https://developers.google.com/sketchup/docs/ourdoc/edge#find_faces

Поиск лиц для текущего выбора:

# Find faces for selected edges:
model = Sketchup.active_model
model.start_operation( 'Find Faces in Selection', true )
for entity in model.selection.to_a
  next unless entity.is_a?( Sketchup::Edge )
  entity.find_faces
end
model.commit_operation

Поиск лиц для текущего контекста:

# Find faces for current context:
model = Sketchup.active_model
model.start_operation( 'Find Faces in Current Context', true )
for entity in model.active_entities.to_a
  next unless entity.is_a?( Sketchup::Edge )
  entity.find_faces
end
model.commit_operation

Найти грани для всех ребер в модели:

# Find faces for all edges in model:
model = Sketchup.active_model
model.start_operation( 'Find Faces in Whole Model', true )
for entity in model.entities.to_a
  next unless entity.is_a?( Sketchup::Edge )
  entity.find_faces
end
for definition in model.definitions
  next if definition.image?
  for entity in definition.entities.to_a
    next unless entity.is_a?( Sketchup::Edge )
    entity.find_faces
  end
end
model.commit_operation

Если вам нужно обработать пакет файла DWG для этого, вы также можете автоматизировать это, используя Model#import для импорта файлов DWG. https://developers.google.com/sketchup/docs/ourdoc/model#import

Это предполагает, что ребра ограничивают копланарные поверхности. Вы получите твердое тело только в том случае, если импортируемая вами сетка может представлять его.

1 голос
/ 07 марта 2013

Если вы можете построить сетку из вашей коллекции линий, и если эта сетка закрыта (водонепроницаема), вы можете использовать команду AutoCAD convtosolid в сценарии:

http://docs.autodesk.com/ACAD_E/2012/ENU/filesACR/WS1a9193826455f5ffa23ce210c4a30acaf-4cf2.htm

Я думаю, что эта команда является новой в AutoCAD 2012, но она могла быть и в 2011 году?

...