乐筑天下

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

[编程交流] 线弧交点?

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:28:48 | 显示全部楼层
多亏了你,我逐渐对Visual LISP有了更多的了解。
 
我更喜欢的方法仍然是常见的LISP和DXF表,但一旦我对VL有信心,我相信事情会更容易操作。
 
再次感谢您的耐心和解释,非常感谢。
 
干杯
 
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 13:33:56 | 显示全部楼层
任何时候李。
回复

使用道具 举报

2

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 13:35:46 | 显示全部楼层
谢谢,我不知道(vla intersectwith)
 
我不在VL,但我觉得我应该试试。
(这让我像阿尔一样困惑
过去和现在)
 
问候语。
 
附笔
我知道我会再次困惑自己
有了这个VL,ActiveX(我对此一无所知)
variant、ACExtendNone、数据转换等。
我在这里什么都不知道,但我会学习的。
TNX公司
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:38:23 | 显示全部楼层
没问题,乔治,
 
很高兴我们能帮上点忙-我自己还在学习VL
 
干杯
 
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:41:45 | 显示全部楼层
基于Carl的链接,我重写了交叉口LISP:
 
  1. (defun ssInter (ss / i y Ent1 Ent2 iArr iLst)
  2. (setq i (sslength ss))
  3. (while (not (minusp (setq y (1- i) i (1- i))))
  4.    (setq Ent1 (vlax-ename->vla-object (ssname ss i)))
  5.    (while (not (minusp (setq y (1- y))))
  6.      (setq Ent2 (vlax-ename->vla-object (ssname ss y))
  7.        iArr (vlax-variant-value
  8.          (vla-IntersectWith Ent1 Ent2 acExtendNone)))
  9.      (if (> (vlax-safearray-get-u-bound iArr 1) 0)
  10.    (progn
  11.      (setq iLst (vlax-safearray->list iArr))
  12.      (while (not (zerop (length iLst)))
  13.        (setq ptLst (cons (list (car iLst) (cadr iLst) (caddr iLst)) ptLst)
  14.          iLst (cdddr iLst))))))))
  15. (defun c:test (/ ptLst)
  16. (vl-load-com)
  17. (ssInter (ssget))
  18. (alert (vl-princ-to-string ptLst))
  19. (princ))

 
(*配有测试程序*)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:46:37 | 显示全部楼层
另一种方式:
 
  1. (defun ssInter (ss / vLst i j obj1 obj2 iArr iLst)
  2. (setq vLst (mapcar 'vlax-ename->vla-object
  3.             (vl-remove-if 'listp
  4.               (mapcar 'cadr (ssnamex ss))))
  5.    i (length vLst))
  6. (while (not (minusp (setq j (1- i) i (1- i))))
  7.    (setq obj1 (nth i vLst))
  8.    (while (not (minusp (setq j (1- j))))
  9.      (setq obj2 (nth j vLst)
  10.        iArr (vlax-variant-value
  11.          (vla-IntersectWith obj1 obj2 acExtendNone)))      
  12.      (if (> (vlax-safearray-get-u-bound iArr 1) 0)
  13.    (progn
  14.      (setq iLst (vlax-safearray->list iArr))
  15.      (while (not (zerop (length iLst)))
  16.        (setq ptLst (cons (list (car iLst) (cadr iLst) (caddr iLst)) ptLst)
  17.          iLst (cdddr iLst))))))))
  18. (defun c:test (/ ptLst)
  19. (vl-load-com)
  20. (ssInter (ssget))
  21. (alert (vl-princ-to-string ptLst))
  22. (princ))
回复

使用道具 举报

15

主题

65

帖子

50

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 13:50:44 | 显示全部楼层
我只是想说,这条线索被证明是非常有益的。
 
很棒的论坛!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:55:40 | 显示全部楼层
这条线好像是很久以前的事了!
 
很高兴你能从中得到一些东西
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 03:11 , Processed in 0.885828 second(s), 66 queries .

© 2020-2025 乐筑天下

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