乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 17|回复: 17

[编程交流] 线弧交点?

[复制链接]

2

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 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)更小(或类似的值),这可能很简单
但是我迷路了,甚至不知道我在这条路上对不对。
我希望我把自己说得足够清楚
(我知道我的解释很糟糕)。
 
非常感谢!
问候语!丹科。
回复

使用道具 举报

0

主题

269

帖子

279

银币

限制会员

铜币
-4
发表于 2022-7-6 12:58:09 | 显示全部楼层
查看函数“vla intersectwith”,应该可以节省大量代码。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:01:51 | 显示全部楼层
这可能会帮助您:
 
  1. ; Ints ~ by Lee McDonnell
  2. ; 2 Arg Input:
  3. ; cEnt VL Object
  4. ; dEnt VL Object
  5. ; Return:
  6. ; Point of Intersection
  7. (defun Ints (cEnt dEnt)
  8. (alert (vl-princ-to-string
  9.       (vlax-safearray->list
  10.         (vlax-variant-value
  11.           (vla-IntersectWith cEnt dEnt acExtendNone)))))
  12. (princ))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:03:15 | 显示全部楼层
哈哈,卡尔,你刚刚赢了我
回复

使用道具 举报

0

主题

269

帖子

279

银币

限制会员

铜币
-4
发表于 2022-7-6 13:07:02 | 显示全部楼层
确定找到示例代码的链接:
 
http://management.cadalyst.com/cadman/article/articleDetail.jsp?id=101854
 
(李的开局不错……)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:11:55 | 显示全部楼层
 
 
卡尔,干杯,链接很好-非常有用,谢谢。
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 13:15:00 | 显示全部楼层
另一种方式:
  1. (setq p1 (vlax-invoke line1 'IntersectWith cir acExtendNone))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:18:46 | 显示全部楼层
驾驶室,
 
我看过“vlax invoke method”,但我不知道您可以只使用“vlax invoke”。
 
只是出于兴趣,回报是一种变体吗?还是直接返回点?
 
一如既往地谢谢你
 
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 13:22:23 | 显示全部楼层
它返回一个点列表。
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 13:26:50 | 显示全部楼层
这些使用和返回标准点
vlax调用对象'
vlax put-obj
vlax get-obj
 
  1.   (setq pt (vlax-invoke
  2.       (vlax-ename->vla-object e1) 'IntersectWith
  3.                  (vlax-ename->vla-object e2) acExtendNone))

 
 
==================================
这些使用和返回变量点
vlax调用方法
vlax put属性
vlax get属性
 
  1.   (setq pt (vlax-safearray->list
  2.         (vlax-variant-value
  3.         (vlax-invoke-method
  4.       (vlax-ename->vla-object e1) 'IntersectWith
  5.         (vlax-ename->vla-object e2) acExtendNone))))
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-5 03:09 , Processed in 0.408442 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表