线弧交点?
你好(又是我)我会尽力解释我的问题。
直线和圆弧的交点是我的问题,
我有一种解决方案,但不是很好。
我会尽量用代码来写,让自己更清楚。
(defun dtr(x)
(*π(/x 180.0))
)
(defun c:忍者应用程序()
(setq line(entget(car(entsel“line?”)))
(setq线路sp(cdr(assoc 10线路)))
(setq线路ep(cdr(assoc 11线路)))
我选择一条线,取起点和终点。
(setq arc(car(entsel“arc?”))
我选择一条弧,并为VLAX命令做好准备
(setq线角度(角度线sp线ep))
我得到了线的角度(稍后用于极轴命令)
(setq线距离0)
将这个var设置为0,这样我就可以将它添加到0.000001
(while(=距离为零)
(setq线距离(+线距离0.000001))
(setq线点(极线sp线角度线距离))
(setq距离(vlax curve getdistatpoint arc line point))
(如果(>线路距离(distance profil sp profil ep))(退出))
)
在这个循环中,我试图逐点“扫描”一条线
并用(vlax curve getdistatpoint)希望找到交点(和距离)。
但即使是这一小步(0.0000001),我有时也会失败
找到它。
如果我可以使精度(如1.235685=1.24)更小(或类似的值),这可能很简单
但是我迷路了,甚至不知道我在这条路上对不对。
我希望我把自己说得足够清楚
(我知道我的解释很糟糕)。
非常感谢!
问候语!丹科。 查看函数“vla intersectwith”,应该可以节省大量代码。 这可能会帮助您:
; Ints ~ by Lee McDonnell
; 2 Arg Input:
; cEnt VL Object
; dEnt VL Object
; Return:
; Point of Intersection
(defun Ints (cEnt dEnt)
(alert (vl-princ-to-string
(vlax-safearray->list
(vlax-variant-value
(vla-IntersectWith cEnt dEnt acExtendNone)))))
(princ))
哈哈,卡尔,你刚刚赢了我 确定找到示例代码的链接:
http://management.cadalyst.com/cadman/article/articleDetail.jsp?id=101854
(李的开局不错……)
卡尔,干杯,链接很好-非常有用,谢谢。 另一种方式:
(setq p1 (vlax-invoke line1 'IntersectWith cir acExtendNone)) 驾驶室,
我看过“vlax invoke method”,但我不知道您可以只使用“vlax invoke”。
只是出于兴趣,回报是一种变体吗?还是直接返回点?
一如既往地谢谢你
李 它返回一个点列表。 这些使用和返回标准点
vlax调用对象'
vlax put-obj
vlax get-obj
(setq pt (vlax-invoke
(vlax-ename->vla-object e1) 'IntersectWith
(vlax-ename->vla-object e2) acExtendNone))
==================================
这些使用和返回变量点
vlax调用方法
vlax put属性
vlax get属性
(setq pt (vlax-safearray->list
(vlax-variant-value
(vlax-invoke-method
(vlax-ename->vla-object e1) 'IntersectWith
(vlax-ename->vla-object e2) acExtendNone))))
页:
[1]
2