参股银行 发表于 2009-7-1 17:54:00

CAD 插入一图块,插入后,怎么判断其坐标?

<p><br/>CAD 插入一图块,插入后,不用点击图块,电脑如何读出刚才插入的图块坐标(属性)呢?</p><p>请帮忙,感激不尽</p>

ZZXXQQ 发表于 2009-7-1 20:38:00

<p>试试(getvar "LASTPOINT")</p>

参股银行 发表于 2009-7-4 23:01:00

<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>

ZZXXQQ 发表于 2009-7-5 08:13:00

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)
)

参股银行 发表于 2009-7-6 20:24:00

<p>版主,我试了一下,出现如下错误(我插入的块是一幅1:500的图,我调了很久,没有成功呢):</p><p><br/>; 错误: 参数类型错误: lentityp nil</p>

hawnn 发表于 2009-7-6 22:46:00

<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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq b (cdr (assoc 10 a)))</p><p>)</p>

ZZXXQQ 发表于 2009-7-7 11:28:00

<a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=76775">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=76775</a>
页: [1]
查看完整版本: CAD 插入一图块,插入后,怎么判断其坐标?