我有一个3D参数曲线,定义为P(t)= [x(t),y(t),z(t)]。
我正在寻找一种功能,可以根据弧长重新设置此曲线的参数。我正在使用OpenSCAD,这是一种没有变量的声明性语言(仅常数),因此解决方案需要递归工作(除了全局常量和函数参数外,没有变量)。
更准确地说,我需要编写一个函数Q(s),以给出P上的点,该点沿t到t = 0的点沿弧线的距离(大约)为s。我已经有一些可用于答案的数字积分和微分函数。
任何建议将不胜感激!
ps在OpenSCAD中不可能将函数作为参数传递,我通常仅通过使用全局声明来解决此问题。
functional-programming numerical-methods parametric-equations openscad
我正在寻找一个java库来创建3d几何,然后将其转换为.stl文件,这样我就可以使用3d打印机来打印我的对象.
我可以想象使用一个3D图形对象,可以在graphics2d对象上绘制相同的图形:
Buffered3DObject obj = new Buffered3DObject(200,200,200, Unit.MM);
Graphics3D g3 = obj.getGraphics();
Stroke3d stroke = new Stroke(3);
g3.setStroke(stroke);
g3.drawpipe(x1,y1,z1,x2,y2,z2);
obj.exportToSTL("filename.stl");
Run Code Online (Sandbox Code Playgroud)
好吧,我只是编写代码:).但是这样的事情.
谁知道我怎么能把这样的东西拉下来?任何像这样做的开源库?
很高兴能够通过网站的用户输入生成自定义对象.
抢.
编辑:即使问题已经结束(并且没有人关心我的问题,我发现了答案)(我发布了它,所以其他人也可以找到它):
作为OpenScad的包装器,它有一个java库.java包装器称为JavaScad.可以在这里找到JavaScad
无论如何都要将STL文件导入OpenSCAD并能够修改它们吗?
例如,以下代码演示了我到目前为止所尝试的内容:
difference() {
import("spherical_puzzle_base.stl");
translate([0, 0, -RADIUS/2]) {
cube([RADIUS*2, RADIUS*2, RADIUS], center=true);
}
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我可以按F5来渲染仅包含不包含交集的STL文件.或者我可以点击F6进行编译和渲染,但它会创建一个非常混乱的渲染,没有接近多方面,甚至接近我对此事的预期.使用OpenSCAD是否有解决此问题的方法?谢谢!
(我试图这样做以节省很长的渲染时间,特别是当我测试各种设计可能性时)
这是我的脚本:
openscad $1 -D generate=1 -o $1.csg 2>&1 >/dev/null |
sed 's/ECHO: \"\[LC\] //' |
sed 's/"$//' |
sed '$a;' >./2d_$1
Run Code Online (Sandbox Code Playgroud)
该输出:
sed: 1: "$a;": command a expects \ followed by text
Run Code Online (Sandbox Code Playgroud) 在 OpenSCAD 中,我希望能够创建一个module
接受 astring
然后创建一个 3-D 对象,该对象将该字符串作为text
. 我希望对象比 稍大text
,所以我需要知道它有多宽text
才能创建一个大小合适的对象。
我不确定如何查询的宽度text
(高度由输入变量设置),或者是否可能。
如果不可能,是否有一个函数可以接受字符串和字体并预测呈现文本的宽度?
我正在尝试计算平滑连接管的双三次贝塞尔曲面的控制点。此示例为相应的贝塞尔曲线图块提供了 16 个控制点(采用 OpenSCAD 的语法):
[[[ 2 , 2 , 0], [2.5, 1.5, 0], [3.5, 1 , 0], [4, 1 , 0]],
[[ 2 , 2 , 1], [2.5, 1.5, 1], [3.5, 1 , 1], [4, 1 , 1]],
[[1.3, 1.3, 2], [1.8, 0 , 2], [ 3 , 0.5, 2], [4, 0.5, 2]],
[[ 0 , 0 , 2], [1.8, 0 , 2], [ 3 , 0 , 2], [4, 0 , 2]]]
Run Code Online (Sandbox Code Playgroud)
给出了角点;沿边缘的控制点(以红色显示)是根据具有明显方向的切线计算的:
该补片可以在平面 z=0、y=0、x=4 和 x=y 上进行镜像,以生成更大的复合曲面,该曲面沿所有四个接缝 …
我在任意位置有两个对象,我想在一个对象和另一个对象之间绘制一个圆柱体。搜索数学解决方案告诉我,我需要点积和叉积分别作为角度和轴,但我在生成四元数或将结果转换为 的参数时迷失了方向rotate
。
这是我到目前为止所拥有的:
function dot (v1, v2) = [v1[0] * v2[0], v1[1] * v2[1], v1[2] * v2[2]];
function normalize (v) = v / norm(v);
function distance (v1, v2) = sqrt(
pow(v2[0] - v1[0], 2) +
pow(v2[1] - v1[1], 2) +
pow(v2[2] - v1[2], 2)
);
function lookAt(v1, v2) =
let(n1 = normalize(v1))
let(n2 = normalize(v2))
let(v = dot(n1, n2))
let(angle = [acos(v[0]), acos(v[1]), acos(v[2])])
let(axis = normalize(cross(n1, n2)))
[0, 0, 0]; // I don't know what to return …
Run Code Online (Sandbox Code Playgroud) 我用 OpenSCAD 设计了几个简单的 3D 零件,我想走得更远。我看到有很多有趣的库,但其中许多重新定义了相同的功能。
您强烈推荐哪些库?
有没有通用的?
我想要圆角/倒角边缘、填充角、制作贝塞尔曲线……以及一些常见零件,如螺钉、螺栓……的功能。
我正在 VS Code 中开发一个扩展,以添加对 OpenSCAD(基于脚本的 3D 建模程序)的语言支持。目前,我一直在研究一种从 VS Code 在 OpenSCAD 中打开/预览文件的方法,我已经能够使用自己的预览管理器成功完成此操作。
我的问题是,我想在导出 OpenSCAD 文件时添加可配置的命名格式,该文件使用与文件中使用的环境变量类似的环境变量tasks.json
。更多信息可以在这里找到: https: //code.visualstudio.com/docs/editor/variables-reference。例如,采用文件test.scad
和导出配置${fileBasenameNoExtension}.stl
将导出到文件test.stl
.
此外,我想添加一个自定义变量,${#}
它将在所有其他变量之后评估为唯一的版本号,以避免重复导出的文件。使用示例文件:test.scad
和导出配置 ,${fileBasenameNoExtension}_${#}.stl
扩展将test_1.stl
首次导出到该文件。然后,看到test_1.stl
存在,它将导出到test_2.stl
,依此类推。我在所有导出实用程序中实现了类似的功能,因此在这里实现它很重要。
现在介绍已经完成,接下来讨论实际问题:对于比我更了解 VS Code API 的人,为了最好地获得上述功能,我应该在自定义预览管理器中实现环境变量评估还是重新实现我使用任务的预览管理器?因为我已经实现了自己满意的预览管理器,所以我更喜欢前者。但是,我无法在 VS Code API 中找到任何可以评估字符串中的环境变量的函数。我错过了 API 中是否有用于评估环境变量的打字稿函数?
如果使用任务重新实现此功能是实现我的目标的更好方法,那么我是否必须牺牲预览管理器中的控制权,例如能够有选择地终止打开的预览并显示活动导出?
或者,是否有一种折衷方案可以使用任务的所有功能而不丢失我已经开发的任何功能?
链接到我的扩展存储库的分支:https://github.com/Antyos/vscode-openscad/tree/PreviewModel