我有许多用于3D打印的stl CAD文件,我想知道如何通过编程进行简单的更改来操作单个CAD文件。例如,如果我想要将CAD文件中的所有内容的尺寸加倍,我如何在python中实现呢?我可以把它转换成gcode,如果这能让事情变得简单的话。
我遇到过FreeCad,但我不确定这是否是以编程方式修改CAD文件的最简单、最好的方法。我还想要一个选项,允许自由操作,而不仅仅是大小,也许还可以看看如何以编程方式改变CAD文件的形状。
发布于 2020-12-12 22:10:00
准确地说,STL文件甚至不是网格,而是三角形汤。这意味着三角形甚至不相互连接(它们需要相邻才能被软件生成g-code使用,但没有其他义务)
只是为了澄清: g-code格式只是机器(3D打印机等)的指令序列,所以它对打印机非常好,但也肯定是操纵几何图形的最差格式。
一种解决方案
您可以使用python模块来处理pymadcad文件,以便进行简单的转换操作(如缩放、转换等)。
from madcad import *
part = read('path/to/your_file.stl')
transformed = part.transform(mat3(2)) # scale by a factor 2 (diagonal matrix of 2)
write(transformed, 'path/to/output_file.stl')如果您需要更复杂的操作(例如布尔运算、倒角运算等),则需要在执行所需的运算之前再次连接三角形。
from madcad import *
part = read('path/to/your_file.stl')
part.mergeclose() # merge points at the same location
# your desired operations (example)
transformed = union(part, icosphere(vec3(1,1,1), 3.)) # add a sphere a diameter 3
write(transformed, 'path/to/output_file.stl')备注
pymadcad内部使用numpy-stl来导入stl文件,如果你只需要基本的操作,你也可以只安装一个。
发布于 2020-09-30 03:47:25
STL文件是网格。它们的外部是由三角化曲面定义的。众所周知,网格很难在事后进行修改。这就是为什么你总是希望将你的设计保存为原生格式,也可以保存为开放的实体格式,如.STP或.IGES。
也就是说,网格的简单缩放非常容易,并且可以在FreeCAD中很容易地完成。您可以在网格设计工作台的gui中或通过python完成此操作。这里有一篇关于这方面的文章:https://forum.freecadweb.org/viewtopic.php?t=9109#p74047
FreeCAD还提供了一些工具来将网格转换为实体。结果通常不那么壮观,但可能足够好,这取决于您的需求。在FreeCAD论坛上搜索有关转换的帖子,或查看此处:https://wiki.freecadweb.org/FreeCAD_and_Mesh_Import
Gcode没有说明模型本身的任何信息。它指定工具应该移动的位置,因此它只是一系列以给定速度将工具从一个地方移动到另一个地方的指令。从Gcode到一个你可以编辑的模型是相当困难的,甚至是不可能的。
https://stackoverflow.com/questions/64120837
复制相似问题