zhongys 发表于 2003-12-23 22:08:00

请问各高手,如何取得图块内的对象参数

一个块内有两个圆,一个六边形,用(setq en (entget (car (entsel))))得出如下结果
((-1 . <图元名: 40069ea0>) (0 . "CIRCLE") (330 . <图元名: 40069e78>)
(5 . "7C") (100 . "AcDbEntity") (67 . 0) (8 . "0") (100 . "AcDbCircle") (10
353.754 225.839 0.0) (40 . 4.75) (210 0.0 0.0 1.0))

请问各高手,如何取得图块内的两个圆和一个六边形的参数,谢谢!

meflying 发表于 2003-12-24 08:18:00

(setq en (tblsearch "block" (cdr (assoc 2 (entget (car (entsel)))))))
(setq a (cdr (assoc -2 en)))
(setq b (entnext a))

得到的a就是块中的第一个对象,b是第二个,,,但不能确定它是什么,这样一直下去,直到找出所有的对象

SWAYWOOD 发表于 2006-6-16 13:13:00

不是这个块里的图元也会被选到

HuaiYu 发表于 2006-6-18 20:47:00

<P>来一个 VLisp 语句的.....</P>
<P>(defun c:test (/ en *AcadDocument* blocks vn)<BR>&nbsp; (VL-LOAD-COM)<BR>&nbsp; (setq en (vl-catch-all-apply 'entsel (list "\nPlease select a Block object:")))<BR>&nbsp; (if (or (vl-catch-all-error-p en) (null en) (/= (cdr (assoc 0 (entget (car en)))) "INSERT"))<BR>&nbsp;&nbsp;&nbsp; (vl-exit-with-value 0)<BR>&nbsp; )<BR>&nbsp; (setq&nbsp;*AcadDocument* (vla-get-activeDocument (vlax-get-acad-object))<BR>&nbsp;blocks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-get-blocks *AcadDocument*)<BR>&nbsp; )<BR>&nbsp; (setq vn (vla-item blocks (cdr (assoc 2 (entget (car en))))))<BR>&nbsp; (vlax-for ent&nbsp;vn<BR>&nbsp;&nbsp;&nbsp; ;;这里的 ent 就是 块内的图元了,可以对其进行操作&nbsp;<BR>&nbsp;&nbsp;&nbsp; (princ "\n")<BR>&nbsp;&nbsp;&nbsp; (princ (vla-get-ObjectName ent))<BR>&nbsp; )<BR>&nbsp; (prin1)<BR>)<BR></P>
<P>&nbsp;</P>
页: [1]
查看完整版本: 请问各高手,如何取得图块内的对象参数