[求助]关于lisp中command调用scale命令的问题!
关于lisp中command调用scale命令的问题!<br/> (setq n 0)<br/> (setq n11 0)<br/> (repeat sn<br/> (progn<br/> (setq a1on (ssname ssa1 n)<br/> ne (entget a1on)<br/> ax (assoc 41 ne)<br/> scal (abs (/ str0 (cdr ax)))<br/> p1 (list (cdr (assoc 10 ne)) (cdr (assoc 20 ne)) 0)<br/> )<br/> (command "_scale" ne "" p1 "" scal "")<br/><br/> )<br/> (setq n (1+ n))<br/> )<br/>以上程序无法实现对选择集中的块进行放大!<br/> 程序不全啊... (assoc 20 ne) dxf组码20? (defun c:tykb (/ a1 a0 a1e a1n a1_obj szj str<br/> jd ssa1 sn n pro a1on ne na1e newa1<br/> cmd newa a1x a1y newaxy ne1 str0 str1 roscal<br/> p1 p2 scal<br/> )<br/> (setq a1 (entsel "请选择图块:")<br/> a0 (car a1)<br/> a1e (entget a0)<br/> a1n (assoc 2 a1e)<br/> a1_obj (assoc 0 a1e)<br/> na1e (assoc 50 a1e)<br/> ax (assoc 41 a1e)<br/> cmd (getvar "cmdecho")<br/> szj (ssadd a0)<br/> )<br/> (setq p1 (list 0 0 0))<br/> (Setq str0 (getreal "\n请输入要缩放块的比例: ")<br/><br/> )<br/> (setq roscal (strcat "\n比例因子为:" (rtos str0)))<br/><br/> (setq ssa1 (ssget "x" (list a1n))<br/> sn (sslength ssa1)<br/> )<br/> (sssetfirst ssa1 szj)<br/> (princ (strcat "\n您选择的块名为:"<br/> (cdr a1n)<br/> "; 共有 "<br/> (itoa sn)<br/> "个。 "<br/> "旋转角度为: "<br/> (angtos (cdr na1e))<br/> " 比例因子为: "<br/> (rtos (cdr ax))<br/> )<br/><br/><br/> )<br/> (princ "\n")<br/> (princ)<br/><br/>;;; (setq pro (cons 50 jd))<br/> (setq n 0)<br/> (setq n11 0)<br/> (repeat sn<br/> (progn<br/> (setq a1on (ssname ssa1 n)<br/> ne (entget a1on)<br/> ax (assoc 41 ne)<br/> scal (/ str0 (abs (cdr ax) ))<br/> p1 (cdr (assoc 10 ne)) <br/> )<br/> (command ".scale" ne1 "" p1 scal )<br/> )<br/> (setq n (1+ n))<br/> <br/> )<br/> (sssetfirst nil nil)<br/> (setvar "cmdecho" cmd)<br/> (alert (strcat "您选择的块名为:"<br/> (cdr a1n)<br/> "; \n共有 "<br/> (itoa n)<br/> " 个 \n被改变为 "<br/> roscal<br/> )<br/> )<br/> (princ)<br/><br/>) <p>(command ".scale" <font color="#f70909">ne1</font> "" p1 scal )<br/></p><p>变量 ne1 是什么啊???</p> 变量ne1按我的想法是选择集ssa1中的一个块而这个块就是我想进行缩放的!<br/> 这样试试:(setq n 0)
(setq n11 0)
(repeat sn
(setq a1on (ssname ssa1 n)
ne (entget a1on)
ax (assoc 41 ne)
scal (abs (/str0(cdr ax)))
p1 (cdr (assoc 10 ne))
)
(command "_scale" a1on "" p1 "" scal "")
(setq n (1+ n))
)
本帖最后由 作者 于 2008-5-22 8:28:07 编辑
运行时提示“点无效”!!! 自己顶一下!帖子快沉底了! <p>变量ne1按我的想法是选择集ssa1中的一个块而这个块就是我想进行缩放的!</p><p>4 楼的帖子没有看到对 ne1 赋值啊??</p><p>ZZXXQQ 版主已经把问题指出来了,</p><p>就是把 4 楼代码中的</p><p><font color="#000000">(</font><a href="http://www.mjtd.com/object/autolisp/command.htm" target="_black"><font color="#000000">command</font></a><font color="#000000"> "_scale" a1on "" p1 "" scal "")</font></p><p><font color="#000000">改为</font></p><p><font color="#000000">(command ".scale" ne1 "" p1 scal )</font><br/></p>