0

我有许多用于 3D 打印的 stl CAD 文件,我想知道如何通过以编程方式进行简单更改来操作单个 CAD 文件。就像如果我想将 CAD 文件中所有内容的尺寸加倍,我怎么能在 python 中完成呢?如果这使事情变得更简单,我可以将其转换为 gcode。

我遇到过 FreeCad,但我不确定这是否是以编程方式更改 CAD 文件的最简单和最好的方法。我还想要一个选项,它允许除了大小之外的自由操作,也许还想看看我如何以编程方式改变 CAD 文件的形状。

4

2 回答 2

1

准确地说,STL 文件甚至不是网格,而是三角形汤。这意味着三角形甚至没有相互连接(它们需要相邻才能被软件生成 g 代码使用,但没有其他义务)

只是为了澄清:g代码格式只是机器(3d打印机等)的一系列指令,因此它对打印机非常有用,但肯定也是最糟糕的几何操作格式。

一种解决方案

你可以使用 python pymadcad模块来处理 STL 文件所以对于简单的转换操作(如缩放、平移等)

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-12-12T14:09:59.543 回答
0

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 到可以编辑的模型非常困难或不可能。

于 2020-09-29T19:47:24.783 回答