George Duls 发表于 2022-7-6 12:52:16

线弧交点?

你好(又是我)
我会尽力解释我的问题。
直线和圆弧的交点是我的问题,
我有一种解决方案,但不是很好。
我会尽量用代码来写,让自己更清楚。
 
(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)更小(或类似的值),这可能很简单
但是我迷路了,甚至不知道我在这条路上对不对。
我希望我把自己说得足够清楚
(我知道我的解释很糟糕)。
 
非常感谢!
问候语!丹科。

CarlB 发表于 2022-7-6 12:58:09

查看函数“vla intersectwith”,应该可以节省大量代码。

Lee Mac 发表于 2022-7-6 13:01:51

这可能会帮助您:
 

; 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))

Lee Mac 发表于 2022-7-6 13:03:15

哈哈,卡尔,你刚刚赢了我

CarlB 发表于 2022-7-6 13:07:02

确定找到示例代码的链接:
 
http://management.cadalyst.com/cadman/article/articleDetail.jsp?id=101854
 
(李的开局不错……)

Lee Mac 发表于 2022-7-6 13:11:55

 
 
卡尔,干杯,链接很好-非常有用,谢谢。

CAB 发表于 2022-7-6 13:15:00

另一种方式:
(setq p1 (vlax-invoke line1 'IntersectWith cir acExtendNone))

Lee Mac 发表于 2022-7-6 13:18:46

驾驶室,
 
我看过“vlax invoke method”,但我不知道您可以只使用“vlax invoke”。
 
只是出于兴趣,回报是一种变体吗?还是直接返回点?
 
一如既往地谢谢你
 

CAB 发表于 2022-7-6 13:22:23

它返回一个点列表。

CAB 发表于 2022-7-6 13:26:50

这些使用和返回标准点
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
查看完整版本: 线弧交点?