-2

如何在 CAD 应用程序中将一组连接线转换为实体?正在使用的工具可以是 AutoCAD、SketchUp、Solidworks、FreeCAD 或您可能知道的任何其他可以轻松完成这项简单任务的软件。请注意,以下图形仅用于演示。所需的结果应该是一个有效的 CAD 实体,以便能够应用所有相关操作,例如布尔操作等。

在此处输入图像描述

请记住,这项工作需要完成数千次,因此手动方法不适合。甚至对于为这项工作编写一段代码的一些帮助也非常感谢(使用任何语言),因此您可以解释如何为 Solid 编写简单的 DXF 编写器,例如。我们在 Python 中使用一些 DXF 导出器没有成功。

Upadate : SketchUp 的简单 Ruby 代码或 AutoCAD 的 VBA 代码或 FreeCAD 的 Python 可能会很有帮助。

4

2 回答 2

3

以下是一些Google SketchUp Ruby API片段。这非常简单,使用Edge#find_facesSketchUp 尝试查找给定边缘的可能面的方法。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

这假设边缘是共面的边界。只有当您导入的网格可以代表一个时,您才会得到一个实体。

于 2012-04-10T08:59:01.833 回答
1

如果您可以从线集合中构建网格,并且该网格是封闭的(防水的),则可以在脚本中使用 AutoCAD convtosolid 命令:

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

我认为该命令是 AutoCAD 2012 中的新命令,但它可能也在 2011 年?

于 2013-03-07T14:53:40.900 回答