明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: tm20038175

如何通过块内一点得到该块所有组成图元名?

  [复制链接]
发表于 2014-2-9 13:45:40 | 显示全部楼层
学习学习!!!!
发表于 2014-2-9 23:08:20 | 显示全部楼层
学习学习!!!!,看看G版的里面有没有我需要的。
发表于 2014-2-16 16:35:37 | 显示全部楼层
这个楼中楼还需回复才能看,也就是需要才回复了
发表于 2014-2-17 09:05:11 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2014-2-17 09:21:55 | 显示全部楼层
进来看看
发表于 2014-2-21 04:25:05 | 显示全部楼层
今晚上失眠了

(defun v13_getalltkbox( / tkbss x box i )
        (setq tkbss (ssget "x" '((0 . "insert")(2 . "QGY_V13_TK-*")(-4 . "!=")(62 . 250))))                ;;图块名称根据需要修改
        (setq tkbss (ss2list tkbss))
        (setq *alltkbox* '())
        (foreach x tkbss
                (setq box (entbox x))
                (setq *alltkbox* (cons (list box x) *alltkbox*))
        )
        *alltkbox*        ;;全局参数
)

(defun v13_po_seltk_1_new( thepo / temp po pa pb bbox btkb loop )
        (if (setq btkb Nil
                                 po (if thepo
                                                 thepo
                                                 (getpoint "\n 请在目标图框内部点击...")
                                          )
                 )
                (progn
                        (setq loop T i (length *alltkbox*))
                        (while loop
                                (setq bbox (car (nth (setq i (1- i)) *alltkbox*)))
                                (setq pa (car bbox) pb (cadr bbox))
                                (if (and (<= (car  pa) (car  po) (car  pb))
                                                        (<= (cadr pa) (cadr po) (cadr pb))
                                         )
                                         (setq loop (vla-ZoomScaled (vlax-get-acad-object) 1.1 acZoomScaledRelative)
                                                          loop (vla-ZoomPrevious (vlax-get-acad-object))
                                                          loop Nil
                                                          btkb (cadr (nth i *alltkbox*))
                                         )
                                         (if (= i 0) (setq loop Nil))
                                )
                        )
                        btkb
                )
        )
        btkb
)

;;选择集转为图元列表
(defun ss2list( ss )
        (if (= 'PICKSET (type ss))
                (reverse (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) (mapcar 'cadr (ssnamex ss))))
        )
)

;;单个图元包围盒
(defun entbox( ent / ll ur )
        (vla-getboundingbox (vlax-ename->vla-object ent) 'll 'ur)
        (mapcar 'vlax-safearray->list (list ll ur))
)



;;使用方法
;|
(v13_getalltkbox)
(setq seltkb (v13_po_seltk_1_new nil))
|;
发表于 2014-2-25 21:08:36 | 显示全部楼层
看看,谢谢
发表于 2014-5-17 17:52:31 | 显示全部楼层
学习一下如何
发表于 2014-5-18 09:06:32 | 显示全部楼层
看G版大作,认真学习。。。
发表于 2014-11-16 17:26:08 | 显示全部楼层
单击一个图框块里面一点,得到此图框的边界。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 06:34 , Processed in 0.155425 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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