新闻中心

首页  /  新闻 / 关于3d打印机

OpenSCAD教程-初学者的5个简单步骤

OpenSCAD是一款功能强大的免费开源建模工具,只需几行代码即可制作精确的3D模型通过正确的设置,甚至可以制作适应性强的“参数化”模型。在这个OpenSCAD教程中,我们将熟悉该软件,回顾一个简单的例子,然后讨论如何进行参数化设计。

1A。下载并安装OpenSCAD

OpenSCAD教程-初学者的5个简单步骤

最新的稳定版OpenSCAD可以从openscad.org/downloads.html下载。搜索的话请在前面加http://www.页面顶部的正常下载提供了该软件的最新“稳定”版本,而“开发快照”提供了具有一些额外功能的OpenSCAD的实验版本,但可能比稳定版本具有更多错误。

选择适合操作系统的版本,打开.exe或.dmg,然后按照说明安装OpenSCAD。

1B。OpenSCAD启动画面

OpenSCAD教程-初学者的5个简单步骤

第一次打开OpenSCAD时,应该会遇到启动画面。在此窗口中,可以创建新文件,打开现有文件或打开示例。所有示例文件都写得非常好,并展示了如何使用OpenSCAD的关键概念。

在示例框中,转到Basics> CSG.scad,然后单击“打开示例”以打开简单的CSG示例文件。

2A。OpenSCAD接口:文本编辑器

OpenSCAD教程-初学者的5个简单步骤

让我们首先查看OpenSCAD窗口的基本部分。OpenSCAD的界面非常简单,仅包含文本编辑器,查看区域和控制台。使用编辑器输入代码,结果模型显示在查看区域中。编辑器中的大多数按钮都是不言自明的(New,Open,Save等)。有趣的是预览,渲染和导出为STL按钮。

点击预览将在查看区域中生成快速模型。这个快速模型显示了模型外观的一般概念,但它不是最终计算的3D模型。按Render告诉OpenSCAD计算最终的3D模型,它会显示精确的读数,但生成时需要比预览更长的时间。渲染模型后,Export as STL将打开一个窗口,将模型另存为STL。

2B。OpenSCAD接口:可视区域

OpenSCAD教程-初学者的5个简单步骤

“查看区域”显示3D模型。“预览”和“渲染”按钮与编辑器中的相同。两个中间的按钮组控制着查看器中的“摄像机”:左侧的按钮可以缩放或重置视图,而右侧的按钮可以将摄像机捕捉到标准视图。

最后一组按钮包括Perspective / Orthogonal按钮,Show Axes和Show Scale Marker按钮以及Show Edges按钮。在Orthogonal和Perspective之间切换会更改模型是以等距还是透视显示。(正交视图通常更适合制作机械模型,而透视更适合装饰模型)。

2C。OpenSCAD接口:控制台

OpenSCAD教程-初学者的5个简单步骤

控制台显示在查看区域下方,并显示有关计算模型的技术信息。它还显示保存或导出模型的记录,并显示echo()语句的读数。那些不关心引擎盖技术计算的人不必担心控制台。

3.对象,动作,操作符和变量

OpenSCAD构建的每个模型都是由对象组合构建的。物体是原始形状,如立方体,圆柱体和球体,并形成每个模型的主干。对象由Actions创建并由Operators修改,Variables和Comments进一步增强了代码。

动作用于创建对象或定义变量。例如,Cube(),Cylinder()和Sphere()是创建其对应的原始对象的动作。

操作员修改对象。有许多不同的运算符,它们用于更改对象的许多不同属性,例如其大小或位置。

变量包含数字,字符串(即文本),向量和列表等值。存储在变量中的信息可以由Actions,Operators或其他变量使用。(变量将在本节的OpenSCAD教程中稍后讨论)

注释用于为阅读代码的任何人提供额外信息。它们通常用于提供有关代码的一般信息(如原作者和发布日期),并解释特定行背后的逻辑和推理。注释不会影响对象,并且在OpenSCAD解释和呈现代码时会被忽略。

(还有矢量,列表,模块和函数,但我们将在不同的OpenSCAD教程中处理这些高级概念!)

可以在OpenSCAD用户手册中找到OpenSCAD可用的所有对象,操作和操作符,以及有关如何使用它们的信息。我们将坚持使用本教程中最简单的一个,但请记住,一旦熟悉了基础知识,就可以使用一个巨大的工具箱。

有了这个,让我们来看看CSG.scad,看看一些动作和操作符的实例!

4A。CSG.scad示例:将对象与Union结合使用

OpenSCAD教程-初学者的5个简单步骤

操作员以绿色突出显示,操作以橙色突出显示。(绿色文本是注释。)

在做任何事情之前,我们应该以不同的名称保存文件。我们将在本教程中使用代码,因此我们希望保留原始版本的安全副本。转到文件>另存为...并将其另存为“CSG_tutorial.scad”。完成后,点击“渲染”按钮以查看CSG.scad生成的对象。此示例使用Operators和Actions的不同组合生成三个单独的对象。

我们仔细看看代码。在阅读OpenSCAD代码时,更容易将事物视为代码的“块”,而不是逐行读取。CSG.scad中有三个块,其边界由代码左侧的黑线标记。每个块包含两个动作(立方体和球体)以及一个或两个操作符(平移,联合,交集,差异)。 

让我们看看第一个代码块(从第3行开始到第8行结束)。此块定义了“查看区域”左侧的形状,即立方体内的球体。这段代码包含两个Operators和两个Actions:

Translate是一个根据给定的[X,Y,Z]参数移动对象的运算符。在这种情况下,它向下移动一个物体-24毫米的X轴。

Union是一个运算符,它将大括号内的所有对象组合到一个Object中。

Cube是一个创建立方体对象的Action。在这种情况下,每个立方体的边设置为15 mm,“center = true”语句告诉Action从中心绘制立方体。

Sphere是一个创建球体对象的Action。由于该数字尚未定义为半径或直径,因此OpenSCAD假定它是半径。

该块演示了在OpenSCAD中工作的两个关键概念。第一个是操作符仅应用于其边界内的对象。第一个块中的Union运算符仅组合其边界内的Cube和Sphere,并且不包含此文件中的其他对象。同样,第一个块中的Translate Operator仅适用于Unioned Object。如果没有,则此文件中的所有对象将在X轴上以-24为中心!(另请注意,运算符的边界由一对花括号定义,并且其边界内的所有内容都缩进一级。)

下一个重要概念是OpenSCAD始终按顺序执行操作,从最接近Object的Operator开始并向外工作。因此,在此块中,首先在Cube和Sphere上执行Union操作,然后通过Translate移动Unioned对象。即使在处理大型复杂的Operators和Actions组合时,也要从最里面的Objects / Actions开始,然后向后工作,直到到达最上面的Operator。

(眼尖的读者可能会注意到,在这个块中交换操作符不会对生成的对象产生任何影响,因为即使首先移动Cube和Sphere,Union也会起作用。但是,有很多次你在需要按特定顺序应用操作,因此习惯于按顺序考虑应用操作符!)

4B。CSG.scad示例:关于语法的注释

OpenSCAD教程-初学者的5个简单步骤

现在是提及语法的一些重要观点的好时机。我们刚刚看到操作符的边界由花括号定义。但是,在整个代码中也可以找到其他语法,如分号和缩进。其中一些对于文件运行至关重要,而另一些则不重要。

关键语法对于代码运行是绝对必要的。如果它丢失或写入不正确,当尝试预览或渲染模型时,OpenSCAD将抛出错误消息。

以下OpenSCAD中的关键语法:

每个Action语句的结尾必须以分号结尾。这包括创建对象的操作以及定义变量的操作。

如上所述,花括号(又名大括号,花括号)表示Operator语句的边界。在处理复杂的OpenSCAD项目时,很容易丢失所有大括号。但是,当单击大括号时,OpenSCAD会突出显示其匹配的伙伴,这会使事情变得复杂时更容易。

在非关键的语法是没有必要的模型进行编译。但是,它使代码更容易阅读和编辑。非关键语法的示例包括以下内容:

在新的操作员中时,缩进通常会增加,而当操作员完成时,缩进会减少。(在此示例中,因为Union运算符位于Translate运算符内,所以Union缩进了一个级别。因为Cube和Sphere在Union中,它们缩进了两个级别。)OpenSCAD实际上不需要缩进,但是让代码看起来干净整洁。

为了运行OpenSCAD,并不是严格需要换行符(即按Enter键)和空格。从理论上讲,你可以把整个第一个块写成一行,代码仍然可以工作:translate(){union(){cube(15,center = true); sphere(10);}}但是,把它们拿出来使代码难以阅读。

注释用一对斜杠(“//”)表示。OpenSCAD会忽略一对斜杠后面的所有内容,直到下一行的开头。

(附注:对于熟悉计算机编程的人,可能会注意到这种语法与C ++基本相同.OpenSCAD主要用C ++编写,因此,从其母语继承了大部分语法。所以对任何人来说都是如此。熟悉Arduino编程,这应该是轻而易举的!)

4C。CSG.scad示例:交叉点运算符

OpenSCAD教程-初学者的5个简单步骤

对于中间对象,再次使用立方体和球体,但使用交叉点运算符而不是联合进行组合。当给定多个对象时,Intersection会生成一个Object,该Object仅由每个重叠的Object的部分组成。换句话说,如果一个对象的任何部分不与其他对象的任何部分相交,则将其从最终的交叉形状中移除。

在第二个块中的Sphere Action之后,将以下行添加到代码中,然后点击Render按钮以显示的更改:

translate([7.5,0,0]){cube(15,center = true); }这会增加一个额外的立方体,它通过额外的Translate语句向右移动一半长度。请注意,交叉点运算符仅考虑属于所有三个对象的段,并且不与其他两个对象重叠的部分不包含在最终的交叉对象中。

另请注意第二个Translate如何仅在第二个Cube语句中运行。操作符按顺序工作,因此仅在移动第二个多维数据集后才执行“交点操作”。

4D。CSG.scad示例:差异运算符

OpenSCAD教程-初学者的5个简单步骤

最右边的形状使用差分算子。差异从另一个对象中减去一个对象,使其对创建孔和其他空间很有用。

差异如何工作(对联盟或交集)的一个重大变化是创建的对象取决于动作/对象在运算符中出现的顺序。尝试在第三个块中切换Cube和Sphere的顺序。请注意,在原始版本的代码中,如何从Cube中减去Sphere,但切换它们会强制相反。

5.参数化OpenSCAD

现在我们已经了解了CSG.scad示例,让我们来谈谈参数化设计。

在参数化设计中,用户可以更改模型的某些元素,并且设计的其余部分可以适应这些变化。例如,这允许一个人定义不同的螺杆直径,而不必手动筛选代码并替换每个值。

让我们尝试使我们的CSG_tutorial.scad中的三个对象更大。首先用“球体(15)”替换“球体(10)”的所有实例,从球体开始。我们还需要使立方体更大,所以将“cube(15,center = true)”替换为“cube(20,center = true)”。如果使用这些更改呈现代码,则可以看到一些问题:

球体半径与立方体尺寸的比例已经被抛弃,这意味着最终的物体看起来不再像原件那样

对于我们修改过的中间(交点)对象,对象不再向下拆分,因为我们没有移动第二个立方体

交点和差异对象彼此重叠,因为它们没有使用翻译运算符分开很远。

对于本OpenSCAD教程的最后一部分,我们将把简单的示例设计转换为参数设计。

5A。制作参数模型:定义变量

OpenSCAD教程-初学者的5个简单步骤

我们可以尝试手动修复这些问题,但是每次我们想要更改对象的大小时我们都需要修复它们。相反,让我们做一个适当的参数化设计。

制作参数文件的关键步骤是定义变量而不是使用普通数字。变量是使用一种Action语句创建的,一旦定义了变量,我们就可以在任何可以使用数字的地方使用变量。

在文件顶部的某处添加以下Action语句(可以在第一行的注释之前或之后,但不能在第一个代码块之后):sphere_radius = 10;这将创建一个名为“sphere_radius”的变量,并使其等于10。

接下来,浏览代码并用sphere_radius 替换每个Sphere Action中的每个数字(如上图所示)。尝试渲染文件,然后更改sphere_radius并再次渲染文件。应该看到每个球体的半径随着sphere_radius的变化而变化。

5B。制作参数模型:定义更多变量

OpenSCAD教程-初学者的5个简单步骤

通过定义变量cube_length并将其设置为15(现在),使多维数据集大小的参数化方式与球半径相同。如上所述,用cube_length替换每个Cube语句中的所有数字。

现在我们可以为模型中的所有对象设置球体半径和立方体长度。但是我们怎样才能保持立方体和球体彼此成比例而不自己计算呢?是时候制作一些相关的变量了!

5C。制作参数模型:依赖变量

OpenSCAD教程-初学者的5个简单步骤

关于变量的一个方便的事情是它们可以使用其他变量来定义。在其定义中使用其他变量的变量称为从属变量(与独立变量相对,不依赖于任何变量)。

如果我们独立设置sphere_radius和cube_length,我们可能会失去立方体大小与球体大小的原始比例。但是,我们可以通过cube_length的定义更改为以下内容来将cube_length更改为从属变量:cube_length = sphere_radius * 1.5;

当我们讨论这个主题时,你也可以通过用translate()替换translate([7.5,0,0]),将我们在步骤4c中添加的Translate运算符从一个公司X坐标更改为一个参数。现在,中间的物体每次都会干净利落地中间!

请注意,始终需要在 它使用的变量定义之后定义从属变量。OpenSCAD逐行读取代码,因此如果尝试定义cube_length而不定义sphere_radius,OpenSCAD将不知道该怎么做。

5D。制作参数模型:附加的相关变量

OpenSCAD教程-初学者的5个简单步骤

最后要修复的是每当球体大小改变时对象之间的间距差。要解决此问题,请创建一个变量来控制每个对象之间的间距object_separation = sphere_radius * 2 + 4;

在定义cube_length之后插入此Action,然后替换在第7行和第20行的[24,0,0]中和,分别。现在,尝试使用不同的sphere_radius值渲染代码:即使对象变大,它们也应该始终彼此分开4 mm!

下一步是什么?

OpenSCAD教程-初学者的5个简单步骤

现在已经掌握了这个OpenSCAD教程的基础知识,现在是时候开始制作自己的一些设计了!阅读文档并使用OpenSCAD提供的不同操作符和操作。甚至可以开始研究诸如矢量和循环等棘手的概念,这使得设计复杂模型变得更加容易。


热销产品

联系我们