87282374 发表于 2008-5-21 13:14:00

[求助]关于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/>

caoyin 发表于 2008-5-21 13:28:00

程序不全啊...

狂刀无痕 发表于 2008-5-21 13:29:00

(assoc 20 ne) dxf组码20?

87282374 发表于 2008-5-21 14:46:00

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

caoyin 发表于 2008-5-21 16:37:00

<p>(command ".scale" <font color="#f70909">ne1</font> "" p1&nbsp; scal )<br/></p><p>变量 ne1 是什么啊???</p>

87282374 发表于 2008-5-21 18:51:00

变量ne1按我的想法是选择集ssa1中的一个块而这个块就是我想进行缩放的!<br/>

ZZXXQQ 发表于 2008-5-21 21:04:00

这样试试:

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

87282374 发表于 2008-5-21 21:41:00

本帖最后由 作者 于 2008-5-22 8:28:07 编辑

运行时提示“点无效”!!!

87282374 发表于 2008-5-22 08:31:00

自己顶一下!帖子快沉底了!

caoyin 发表于 2008-5-22 10:37:00

<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&nbsp; scal )</font><br/></p>
页: [1] 2 3
查看完整版本: [求助]关于lisp中command调用scale命令的问题!