明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1853|回复: 8

选择集的问题求助

[复制链接]
发表于 2010-1-21 19:38:00 | 显示全部楼层 |阅读模式
例如图里有一个正方形和一个三角形。能不能通过判断线是否相连或者几条线是否构成封闭区域,来把正方形和三角形定义成2个选择集呢?
发表于 2010-1-21 20:00:00 | 显示全部楼层
可以。
 楼主| 发表于 2010-1-21 20:51:00 | 显示全部楼层
能告诉我方法不
 楼主| 发表于 2010-1-21 21:08:00 | 显示全部楼层

思路已经知道 能告诉我下 如何判断2个图元是否有交点吗? 例如一个直线X1跟圆弧X2是否有交点

发表于 2010-1-21 22:09:00 | 显示全部楼层
vla-intersectwith
明经网友  发表于 2010-1-23 05:13:00

你试试这个,得到实体交点列表

(defun c:get_int0( / ent1 ent2 ps)
  (setq ent1 (car (entsel "选择第一实体:")))
  (setq ent2 (car (entsel "选择第二实体:")))
  (print)
  (setq ps (obj_int ent1 ent2))
)
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;功能:返回两个对象的所有交点
;参数: ent1、ent2 均为ename对象
(defun obj_int (ent1 ent2 / ax_ent_1 ax_ent_2 intpoints points i)
   (setq ax_ent_1 (vlax-ename->vla-object ent1)
         ax_ent_2 (vlax-ename->vla-object ent2)
   )
   (setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone))
   (setq intpoints (vlax-variant-value intpoints))
   (setq i 0)
   (if (> (vlax-safearray-get-u-bound intpoints 1) 0)
     (repeat (/ (+ 1
               (- (vlax-safearray-get-u-bound intpoints 1)
                  (vlax-safearray-get-l-bound intpoints 1)
               )
            )
            3
         )
       (setq points (append points (list (list
         (vlax-safearray-get-element intpoints i)
         (vlax-safearray-get-element intpoints (+ i 1))
         (vlax-safearray-get-element intpoints (+ i 2))
       )))
       )
       (setq i (+ 3 i))
     )
   )
   points
)

回复 支持 反对

使用道具

明经网友  发表于 2010-1-23 05:24:00

(defun c:get_int0( / ent1 ent2 ps)
  (setq ent1 (car (entsel "选择第一实体:")))
  (setq ent2 (car (entsel "选择第二实体:")))
  (print)
  (setq ps (obj_int ent1 ent2))
)
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;功能:返回两个对象的所有交点
;参数: ent1、ent2 均为ename对象
(defun obj_int (ent1 ent2 / ax_ent_1 ax_ent_2 intpoints points i)
   (setq ax_ent_1 (vlax-ename->vla-object ent1)
         ax_ent_2 (vlax-ename->vla-object ent2)
   )
   (setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone))
   (setq intpoints (vlax-variant-value intpoints))
   (setq i 0)
   (if (> (vlax-safearray-get-u-bound intpoints 1) 0)
     (repeat (/ (+ 1
               (- (vlax-safearray-get-u-bound intpoints 1)
                  (vlax-safearray-get-l-bound intpoints 1)
               )
            )
            3
         )
       (setq points (append points (list (list
         (vlax-safearray-get-element intpoints i)
         (vlax-safearray-get-element intpoints (+ i 1))
         (vlax-safearray-get-element intpoints (+ i 2))
       )))
       )
       (setq i (+ 3 i))
     )
   )
   points
)

回复 支持 反对

使用道具

发表于 2010-1-23 16:52:00 | 显示全部楼层
我怎么没有理解楼主说的什么啊
发表于 2010-1-24 20:40:00 | 显示全部楼层

(defun c:get_int0( / ent1 ent2 ps)
  (setq ent1 (car (entsel "选择第一实体:")))
  (setq ent2 (car (entsel "选择第二实体:")))
  (print)
  (setq ps (obj_int ent1 ent2))
)
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;功能:返回两个对象的所有交点
;参数: ent1、ent2 均为ename对象
(defun obj_int (ent1 ent2 / ax_ent_1 ax_ent_2 intpoints points i)
   (setq ax_ent_1 (vlax-ename->vla-object ent1)
         ax_ent_2 (vlax-ename->vla-object ent2)
   )
   (setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone))
   (setq intpoints (vlax-variant-value intpoints))
   (setq i 0)
   (if (> (vlax-safearray-get-u-bound intpoints 1) 0)
     (repeat (/ (+ 1
               (- (vlax-safearray-get-u-bound intpoints 1)
                  (vlax-safearray-get-l-bound intpoints 1)
               )
            )
            3
         )
       (setq points (append points (list (list
         (vlax-safearray-get-element intpoints i)
         (vlax-safearray-get-element intpoints (+ i 1))
         (vlax-safearray-get-element intpoints (+ i 2))
       )))
       )
       (setq i (+ 3 i))
     )
   )
   points
)

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

本版积分规则

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

GMT+8, 2024-10-1 21:25 , Processed in 0.254112 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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