绘制样条曲线
大家好,我有几个与道路中心线、道路边缘线(左侧和右侧)和边坡边缘(即路堤底部或路堑顶部或采光)相关的定期点列表。如何一次绘制平滑样条线?。
列表的格式为:(setq l’((d1(x1 y1))(d2(x2 y2))。。。。。。(dn(xn yn)))
提前感谢。
芦荟 你好
确保XYZ值为三个坐标的十进制数,而不是只有两个坐标,正如您在点列表中演示的那样。
在下面的示例中,我添加了零值的Z坐标,只要您没有包括在列表中。
以下代码是一个良好的开端。
(setq l '((d1 (1. 2.)) (d2 (3. 4.)) (dn (5. 6.))))
(setq pts (mapcar '(lambda (v) (append (cadr v) '(0.))) l))
(vlax-invoke
(vlax-get (vla-get-activelayout
(vla-get-activedocument (vlax-get-acad-object))
)
'block
)
'addspline
(apply 'append pts)
(car pts)
(last pts)
)
什么是d1,d2,dn?
点名称? 谢谢塔瓦。它工作得很好。 你好,Marco,
d1到dn是链测长度或到道路中心线特定点的距离。我会张贴一个绘图和/或一张图片,当我完成了它。
对不起,我应该在帖子里解释一下。
芦荟 嗨,塔瓦,
还有一个问题。我一共有五张清单。道路中心线具有链测长度(距离)和xyz,其余具有给定代码适用的d和xy。然而,当我尝试在没有第一行代码的情况下使用xyz时,它返回了一个异常。我尝试将其转换为xy0.0格式usimh mapcar lambda失败。你能建议一条出路吗。
当做
芦荟 最好将点剥离到一个忽略链测长度等的XYZ列表中,然后每次都可以使用。
还真的需要回到一个步骤,你用什么来创建原始列表,它是一个CSV文件等?d、 对于CSV类型,使用正确的defun更容易说。 如果嵌套的assoc列表让人困惑,他可以将其分解为几个(平行列表):
(setq L1 '((1. 2.)(3. 4.)... pn))
(setq L2 '(d1 d2 ... dn))
当然,有些项目可能是零,同样应该保留-关于平行位置。
你好
这一例外是由于两个坐标引起的,正如我在第一次答复中提到的,它应该是三个坐标。
请张贴新的列表,让我看看,并建议一个解决方案,如果可能的话。 你好
entmake way也适用于二维和三维点列表。
对于2D点,假设z坐标为0.0。
对于列表格式,请使用
(setq lst (mapcar 'cadr l1))
页:
[1]
2