如何在CAD应用程序中将一组连接线转换为实体?正在使用的工具可以是AutoCAD,SketchUp,Solidworks,FreeCAD或 任何其他软件 ,您可能知道可以轻松地执行此简单任务。请注意,以下图形仅用于演示。期望的结果应该是有效的CAD实体,以便能够应用所有相关的操作,例如布尔值等。
请记住,工作需要数千次,因此手动方法不适合。甚至一些帮助为这份工作编写一段代码也很受欢迎(用任何语言),所以你可以解释一下如何为Solid编写一个简单的DXF编写器,例如。我们在Python中使用一些DXF导出器的尝试并没有成功。
Upadate :用于AutoCAD的SketchUp或VBA代码的简单Ruby代码或FreeCAD的Python可能是最有帮助的。
答案 0 :(得分:3)
以下是一些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
这假设边缘是共面的边界。如果您导入的wiregrid可以代表一个,那么您将只获得一个实体。
答案 1 :(得分:1)
如果您可以从线条集合构建网格,并且如果该网格已关闭(水密),则可以在脚本中使用AutoCAD convtosolid命令:
http://docs.autodesk.com/ACAD_E/2012/ENU/filesACR/WS1a9193826455f5ffa23ce210c4a30acaf-4cf2.htm
我认为这个命令在AutoCAD 2012中是新的,但它可能也在2011年?