乐筑天下

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

[编程交流] 它如何检查是否存在

[复制链接]

21

主题

80

帖子

59

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2022-7-6 07:51:02 | 显示全部楼层 |阅读模式
你好
是否有解决方案来确定一条线与一条长基线之间存在交点?????
我知道应该检查lwpline的所有实体是否与直线相交。但是,由于我是编程新手,很难一个接一个地获取LPline的实体。
请指导我如何逐一检查???
谢谢大家的关注。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:02:52 | 显示全部楼层
试试这个:
 
  1. ;; Finds all Intersections between obj1 & obj2
  2. ;; Args: obj1,obj2
  3. ;; VLA-Objects with Intersectwith method available
  4. ;; Returns: List of Intersections (or nil)
  5. (defun GetIntersections (obj1 obj2 / GroupByNum)
  6. ;; Lee Mac  ~  16.04.10
  7. (defun GroupByNum (lst num / rtn) (setq rtn nil)
  8.    (if lst
  9.      (cons (reverse
  10.              (repeat num
  11.                (progn
  12.                  (setq rtn (cons (car lst) rtn)
  13.                        lst (cdr lst))
  14.                  rtn)))
  15.            (GroupByNum lst num))))
  16. (GroupByNum (vlax-invoke obj1 'IntersectWith obj2 acExtendNone) 3))

 
 
测试功能:
 
  1. (defun c:test (/ e1 e2)
  2. (vl-load-com)
  3. (if (apply (function and)
  4.             (mapcar
  5.               (function
  6.                 (lambda (str sym)
  7.                   (set sym (car (entsel str)))))
  8.               '("\nSelect First Object: " "\nSelect Second Object: ") '(e1 e2)))
  9.    (print (apply (function GetIntersections)
  10.                  (mapcar (function vlax-ename->vla-object) (list e1 e2)))))
  11. (princ))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:09:11 | 显示全部楼层
另一个,对于选择集:
 
  1. (defun Get_Inters (ss / GroupByNum i j obj1 obj2 iLst)
  2. ;; Lee Mac  ~  19.01.10
  3. (defun GroupByNum (lst num / rtn) (setq rtn nil)
  4.    (if lst
  5.      (cons (reverse
  6.              (repeat num
  7.                (progn
  8.                  (setq rtn (cons (car lst) rtn)
  9.                        lst (cdr lst))
  10.                  rtn)))
  11.            (GroupByNum lst num))))
  12. (setq i (sslength ss))
  13. (while (not (minusp (setq j (1- i) i (1- i))))
  14.    (setq obj1 (vlax-ename->vla-object (ssname ss i)))
  15.    (while (not (minusp (setq j (1- j))))
  16.      (setq obj2 (vlax-ename->vla-object (ssname ss j)))
  17.      (setq iLst (append iLst
  18.                   (GroupByNUm
  19.                     (vlax-invoke obj1 'IntersectWith obj2 acExtendNone) 3)))))
  20. iLst)

 
测试功能:
 
  1. (defun c:test (/ ss x)
  2. (vl-load-com)
  3. (if (setq ss (ssget))
  4.    (foreach x (Get_Inters ss)
  5.      (command "_.point" "_non" x)))
  6. (princ))
回复

使用道具 举报

21

主题

80

帖子

59

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2022-7-6 08:16:34 | 显示全部楼层
嗨,亲爱的李。
我应该在我的例行程序中测试你的帖子。之后我会告诉你结果。
谢谢你的帮助。
回复

使用道具 举报

21

主题

80

帖子

59

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2022-7-6 08:19:59 | 显示全部楼层
你好
我对这个Lisp命令有问题
(vlax调用obj1’与obj2 acExtendNone相交)
在图形中寻找两个彼此不相交的对象之间的交点,但如果我将一个拉伸到另一个,它可以找到该点。
用这个命令不可能找到要点吗?
谢谢你的帮助。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:30:55 | 显示全部楼层
研究IntersectWith方法的扩展参数:
 
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:35:54 | 显示全部楼层
您应该将acExtendNone替换为acExtendBoth、acExtendThisEntity或AcextendTheEntity。
回复

使用道具 举报

21

主题

80

帖子

59

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2022-7-6 08:43:06 | 显示全部楼层
非常感谢。
我找到了解决办法。
对于研究所有方法的所有选项,您有什么建议?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:46:44 | 显示全部楼层
 
Visual LISP IDE帮助文档:
 
http://lee-mac.com/functioninfo.html
回复

使用道具 举报

21

主题

80

帖子

59

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2022-7-6 08:54:56 | 显示全部楼层
好啊Thanx很多。
我会在有任何要求之前试试。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 21:49 , Processed in 0.352867 second(s), 72 queries .

© 2020-2025 乐筑天下

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