明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1718|回复: 14

[已解答] 求助:要求是可多选,选出S1和S2求出S1与S2的交点。

[复制链接]
发表于 2015-4-30 08:57:15 | 显示全部楼层 |阅读模式
求助:要求是可多选,选出S1和S2求出S1与S2的交点。谢谢
(setq s1 (ssget))
(setq s2 (ssget))

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2015-4-30 09:34:37 | 显示全部楼层
遍历就是了
发表于 2015-4-30 09:37:56 | 显示全部楼层
  1. (if        (not (vl-catch-all-error-p
  2.                                 (setq
  3.                                   iplist        (vl-catch-all-apply
  4.                                           'vlax-safearray->list
  5.                                           (list
  6.                                             (vlax-variant-value
  7.                                               (vla-intersectwith obj1 obj2 acextendnone)
  8.                                             )
  9.                                           )
  10.                                         )
  11.                                 )
  12.                         )
  13.                 )
  14.                 iplist
  15.         )

评分

参与人数 1明经币 +1 收起 理由
ymcui + 1 很给力!

查看全部评分

 楼主| 发表于 2015-4-30 09:51:45 | 显示全部楼层
鱼与熊掌 发表于 2015-4-30 09:37

没看明白对程序只了解了一点点,希望能做个实例.谢谢
 楼主| 发表于 2015-4-30 09:53:12 | 显示全部楼层
鱼与熊掌 发表于 2015-4-30 09:37

黄总的是单选的:
;;[功能] 两对象交点列表
;;acextendnone 0 不延伸
;;acextendthisentity 1 延伸基准对象
;;acextendotherentity 2
;;acextendboth 3
;;示例(HH:TwoEntsInters (car(entsel)) (car(entsel)) 0)
(defun HH:TwoEntsInters (e1 e2 Flag / OBJ1 OBJ2 PTL PTS)
  (setq obj1 (vlax-ename->vla-object e1))
  (setq obj2 (vlax-ename->vla-object e2))
  (setq pts (vlax-invoke obj1 'Intersectwith obj2 Flag))
  (while pts
    (setq ptl (cons (list (car pts) (cadr pts)) ptl))
    (setq pts (cdddr pts))
  )
  ptl
)
 楼主| 发表于 2015-4-30 09:57:03 | 显示全部楼层
要求是可多选,选出S1和S2求出S1与S2的交点。
(setq s1 (ssget))
(setq s2 (ssget))
多选但不是所有的交点,是所选两组物体之间的交点.
 楼主| 发表于 2015-5-2 07:53:04 来自手机 | 显示全部楼层
顶起来                  
发表于 2015-5-3 08:04:28 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2015-5-12 08:00 编辑
  1. (defun Inters2 ( / SS OBJ1 OBJ2 PTL PTS)
  2. (if (and (setq ss (ssget '((0 . "*POLYLINE,LINE,ARC"))))
  3.           (= (sslength ss) 2)) (progn
  4.   (setq obj1 (vlax-ename->vla-object (ssname ss 0)))
  5.   (setq obj2 (vlax-ename->vla-object (ssname ss 1)))
  6.   (setq pts (vlax-invoke obj1 'Intersectwith obj2 0))
  7.   (while pts
  8.     (setq ptl (cons (list (car pts) (cadr pts)) ptl))
  9.     (setq pts (cdddr pts))
  10.   )
  11. ))
  12. ptl
  13. )

评分

参与人数 1明经币 +1 收起 理由
ymcui + 1

查看全部评分

发表于 2015-5-3 19:37:46 | 显示全部楼层
  1. (defun cx-get-intserss(ss / e e_obj i n runpts sstmp)
  2.         (setq ss(cx-Ss2list ss))
  3.         (while ss
  4.                 (setq e(car ss))
  5.                 (setq e_obj(zvla e))
  6.                 (setq ss(vl-remove e ss))
  7.                 (repeat (setq i(length ss))
  8.                         (setq runpts(append runpts(cx-get_interpts e_obj(zvla(nth(setq i(1- i))ss)))))
  9.                 )
  10.         )
  11.         (cx-divlst runpts 3)
  12. )
 楼主| 发表于 2015-5-4 08:48:27 | 显示全部楼层
本帖最后由 ymcui 于 2015-5-4 08:49 编辑
ZZXXQQ 发表于 2015-5-3 08:04


我试了一下还是不知道如何用这段代码如何用,请指教,还有就是这段代码只选一次,那如何判断那个是S1部份那个是S2部份
因为S1和S2不是多段线,有些地方可能不相连,只要得出S1和S2的交点.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-22 02:05 , Processed in 0.193766 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表