CAD 插入一图块,插入后,怎么判断其坐标?
<p><br/>CAD 插入一图块,插入后,不用点击图块,电脑如何读出刚才插入的图块坐标(属性)呢?</p><p>请帮忙,感激不尽</p> <p>试试(getvar "LASTPOINT")</p> <p>我用下面的程序试验了一下,显示是零,应该是对的</p><p>但是,我插入的图块,cad几何图形属性里X,Y,Z怎么全是零呢,应该有坐标啊?</p><p>(defun c:lp()<br/>(setq i(getvar "lastpoint"))<br/>(setq x (car i) y (cadr i) )<br/>(princ x )<br/>(princ y )<br/>)</p> lastpoint只能读出刚插入图块的插入点坐标,图块内其它点无法得到。下面是个例子:
;列出刚插入图块部分内容 明经 ZZXXQQ 2009.7.5
(defun c:tt ()
(if (and (setq s1 (entlast))
(setq ent (entget s1))
(= (cdr(assoc 0 ent)) "INSERT")) (progn
(setq pti (cdr(assoc 10 ent)))
(setq ent1 ent)
(while (/= (cdr(assoc 0 (setq ent1 (entget(entnext(cdr(assoc -1 ent1))))))) "SEQEND")
(setq att (cdr(assoc 0 ent1)))
(cond
((= att "ATTRIB")
(princ (strcat "\n属性:" (cdr(assoc 2 ent1)) " " (cdr(assoc 1 ent1))))
)
((= att "LINE")
(setq pt1 (cdr(assoc 10 ent1)) pt2 (cdr(assoc 11 ent1)))
(princ (strcat "\n直线:x1=" (rtos(car pt1) 2) "y1=" (rtos(cadr pt1) 2)
"x2=" (rtos(car pt2) 2) "y2=" (rtos(cadr pt2) 2)))
)
((= att "ARC")
(setq pc (cdr(assoc 10 ent1)) r (cdr(assoc 40 ent1))
ps (polar pc (cdr(assoc 50 ent1)) r)
pe (polar pc (cdr(assoc 51 ent1)) r))
(princ (strcat "\n圆弧:圆心x=" (rtos(car pc) 2) "y=" (rtos(cadr pc) 2) "半径r=" (rtos r 2)
"起点x=" (rtos(car ps) 2) "y=" (rtos(cadr ps) 2)
"终点x=" (rtos(car pe) 2) "y=" (rtos(cadr pe) 2)))
)
((= att "CIRCLE")
(setq pc (cdr(assoc 10 ent1)) r (cdr(assoc 40 ent1)))
(princ (strcat "\n圆:圆心x=" (rtos(car pc) 2) "y=" (rtos(cadr pc) 2) "半径r=" (rtos r 2)))
)
)
)
))
(princ)
)
<p>版主,我试了一下,出现如下错误(我插入的块是一幅1:500的图,我调了很久,没有成功呢):</p><p><br/>; 错误: 参数类型错误: lentityp nil</p> <p>(getvar "LASTPOINT")</p><p>我刚试了一下,好像不能读lsp中用(getpoint)获取的点座标;</p><p></p><p>看下面这段代码能不能帮你</p><p></p><p>(setq a (entget (entlast)))</p><p>(if (= (cdr (assoc 0 a)) "INSERT")</p><p> (setq b (cdr (assoc 10 a)))</p><p>)</p> <a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=76775">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=76775</a>
页:
[1]