CAD:以编程方式将线条固定为实线

时间:2012-03-18 05:17:35

标签: ruby autocad cad sketchup solidworks

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

enter image description here

请记住,工作需要数千次,因此手动方法不适合。甚至一些帮助为这份工作编写一段代码也很受欢迎(用任何语言),所以你可以解释一下如何为Solid编写一个简单的DXF编写器,例如。我们在Python中使用一些DXF导出器的尝试并没有成功。

Upadate :用于AutoCAD的SketchUp或VBA代码的简单Ruby代码或FreeCAD的Python可能是最有帮助的。

2 个答案:

答案 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年?