我试图在openscad中创建一个风扇管道,将管道从圆形变为椭圆形.有没有办法在openscad中这样做?如果没有,是否有任何其他编程方式来生成这种类型的3D模型?
谢谢丹尼斯
我在OpenScad中遇到If语句的问题.我有4个变量
a=20;
b=14;
w=1;
c=16;
Run Code Online (Sandbox Code Playgroud)
我想检查女巫号码是否更大a
或b
.在依赖谁更小以获取较小变量的值(在我们的例子中b < a
)并使用c
变量(c=b-w
)进行简单操作之后.
我尝试过这样但它不起作用.
a=20;
b=14;
w=1;
c=16;
if(a>b)
{
c=b-w;
}
if (a<b)
{
c=a-w;
}
if (a==b)
{
c=a-w;
}
Run Code Online (Sandbox Code Playgroud)
这似乎是逻辑,但在openscad中我理解你无法在If语句中更改变量的值.我可以使用什么技巧来实现我的目标.谢谢!
openScad上有这样的东西吗?
list = [2, 3];
if(1 in list){
echo("in");
}else{
echo("not in");
}
/* or better: */
list = [2, 3];
isin = 1 in list? 100 : 0;
Run Code Online (Sandbox Code Playgroud) 我在Ubuntu linux上使用openscad命令从命令行生成模型.我最终成功运行了openscad命令,使用-D参数覆盖变量值:
$ openscad -o output.stl -D 'param1="name1"' -D 'param2="name2"' openscad-script.scad
Run Code Online (Sandbox Code Playgroud)
编辑:注意我们必须传递-D参数的方式,单引号和双引号必须根据因为Openscad文档.
但是当我从shell脚本生成并执行相同的命令时,openscad失败并出现错误:
$ ./myscript.sh value1 value2
Run Code Online (Sandbox Code Playgroud)
错误:第XX行中的分析器错误:语法错误无法解析文件'openscad-script.scad'!
其中XX =文件的最后一行.
#!/bin/bash
# run openscad command
param1="-D 'param1=\"$1\"'"
param2="-D 'param2=\"$2\"'"
echo "openscad -o $1-$2.stl $param1 $param2 openscad-script.scad"
openscad -o $1-$2.stl $param1 $param2 openscad-script.scad
Run Code Online (Sandbox Code Playgroud)
这看起来很简单,我仍然无法弄清楚opencad在运行命令时失败的原因.
谢谢你的帮助,
编辑:我发现了一种让它工作的方法,可能不是最好的
#!/bin/bash
# run openscad command
param1="-D 'param1=\"$1\"'"
param2="-D 'param2=\"$2\"'"
command = "openscad -o $1-$2.stl $param1 $param2 openscad-script.scad"
eval $command
Run Code Online (Sandbox Code Playgroud) 以下代码围绕原点旋转第二个多维数据集.如何围绕其中心点([5,5,0])旋转第二个立方体?
cube([10,10,1]);
rotate([0,0,45]) cube([10,10,1]);
Run Code Online (Sandbox Code Playgroud)
如何弯曲图纸(立方体)?我想控制弯曲/曲线的角度。
例如
立方([50,50,2]);
我对 OpenSCAD 相当陌生,并且遇到了一个我不明白的问题。在下面的代码片段中,变量“ofs”不是从“for”迭代的先前值中累积的。
slots = [5, 7, 11, 17];
ofs = 0;
for (i = slots) {
ofs = ofs + i;
echo (ofs);
translate([ofs,0,0])
cube([1, 50, 30]);
}
Run Code Online (Sandbox Code Playgroud)
我期望看到的echo (ofs)
是以下值:
我实际上看到的只是插槽数组中的值:
有人可以告诉我如何通过循环迭代来累积 ofs 的值吗?任何帮助,将不胜感激。
我正在尝试绘制这个(空心)形状:
圆圈实际上是不同的直径,我想像这样将连接管的中间缩进(但这不是必需的)。我可以通过逐段绘制来伪造形状,但是我在缩小它时遇到了问题,而且感觉不像 OpenSCAD 想要它那样完成(即长达一小时的 CSG 生成)。有没有更好的方法来做到这一点?:
for(i = [0:180]) {
rotate([0,i,0])
translate([26,0,0])
difference() {
cylinder(r=10 + (0.083 * i),h=.1);
cylinder(r=8 + (0.083 * i),h=.1);
}
}
Run Code Online (Sandbox Code Playgroud) OpenSCAD 输出中的透明度可以通过添加%
元素来实现,但这不允许将透明元素放置在具有更高透明度(例如以百分比表示)的周围元素中,并且可以看到(不透明)元素在透明元素内的透明元素中。怎么做?
我通过算法在 OpensCad 中导入 stl 文件,我希望包含的模型始终位于中心,也就是说,以某种方式计算它们的中心应该是什么,然后使用平移将其带到 x、y、z 轴所在的点相交。那可能吗?