明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4912|回复: 22

[求助]关于lisp中command调用scale命令的问题!

  [复制链接]
发表于 2008-5-21 13:14:00 | 显示全部楼层 |阅读模式
关于lisp中command调用scale命令的问题!
  (setq n 0)
  (setq n11 0)
  (repeat sn
    (progn
    (setq a1on (ssname ssa1 n)
      ne   (entget a1on)
      ax   (assoc 41 ne)
      scal (abs (/  str0  (cdr ax)))
      p1   (list (cdr (assoc 10 ne)) (cdr (assoc 20 ne)) 0)
    )
    (command "_scale" ne "" p1 "" scal "")

    )
    (setq n (1+ n))
  )
以上程序无法实现对选择集中的块进行放大!
发表于 2008-5-21 13:28:00 | 显示全部楼层
程序不全啊...
发表于 2008-5-21 13:29:00 | 显示全部楼层
(assoc 20 ne) dxf组码20?
 楼主| 发表于 2008-5-21 14:46:00 | 显示全部楼层
(defun c:tykb (/     a1       a0     a1e   a1n   a1_obj     szj   str
           jd    ssa1  sn     n     pro   a1on  ne     na1e  newa1
           cmd   newa  a1x     a1y   newaxy  ne1       str0     str1  roscal
           p1    p2       scal
          )
  (setq    a1     (entsel "请选择图块:")
    a0     (car a1)
    a1e    (entget a0)
    a1n    (assoc 2 a1e)
    a1_obj (assoc 0 a1e)
    na1e   (assoc 50 a1e)
    ax     (assoc 41 a1e)
    cmd    (getvar "cmdecho")
    szj    (ssadd a0)
  )
  (setq p1 (list 0 0 0))
  (Setq    str0 (getreal "\n请输入要缩放块的比例: ")

  )
  (setq roscal (strcat "\n比例因子为:" (rtos str0)))

  (setq    ssa1 (ssget "x" (list a1n))
    sn   (sslength ssa1)
  )
  (sssetfirst ssa1 szj)
  (princ (strcat "\n您选择的块名为:"
         (cdr a1n)
         "; 共有 "
         (itoa sn)
         "个。 "
         "旋转角度为: "
         (angtos (cdr na1e))
         "   比例因子为: "
         (rtos (cdr ax))
     )


  )
  (princ "\n")
  (princ)

;;;  (setq pro (cons 50 jd))
  (setq n 0)
  (setq n11 0)
  (repeat sn
    (progn
    (setq a1on (ssname ssa1 n)
      ne   (entget a1on)
      ax   (assoc 41 ne)
      scal (/  str0  (abs (cdr ax) ))
      p1   (cdr (assoc 10 ne))
    )
   (command ".scale" ne1 "" p1  scal )
    )
    (setq n (1+ n))
    
  )
  (sssetfirst nil nil)
  (setvar "cmdecho" cmd)
  (alert (strcat "您选择的块名为:"
         (cdr a1n)
         "; \n共有 "
         (itoa n)
         " 个 \n被改变为  "
         roscal
     )
  )
  (princ)

)
发表于 2008-5-21 16:37:00 | 显示全部楼层

(command ".scale" ne1 "" p1  scal )

变量 ne1 是什么啊???

 楼主| 发表于 2008-5-21 18:51:00 | 显示全部楼层
变量ne1按我的想法是选择集ssa1中的一个块而这个块就是我想进行缩放的!
发表于 2008-5-21 21:04:00 | 显示全部楼层
这样试试:
  1.   (setq n 0)
  2.   (setq n11 0)
  3.   (repeat sn
  4.     (setq a1on (ssname ssa1 n)
  5.       ne   (entget a1on)
  6.       ax   (assoc 41 ne)
  7.       scal (abs (/  str0  (cdr ax)))
  8.       p1   (cdr (assoc 10 ne))
  9.     )
  10.     (command "_scale" a1on "" p1 "" scal "")
  11.     (setq n (1+ n))
  12.   )
 楼主| 发表于 2008-5-21 21:41:00 | 显示全部楼层
本帖最后由 作者 于 2008-5-22 8:28:07 编辑

运行时提示“点无效”!!!
 楼主| 发表于 2008-5-22 08:31:00 | 显示全部楼层
自己顶一下!帖子快沉底了!
发表于 2008-5-22 10:37:00 | 显示全部楼层

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

4 楼的帖子没有看到对 ne1 赋值啊??

ZZXXQQ 版主已经把问题指出来了,

就是把 4 楼代码中的

(command "_scale" a1on "" p1 "" scal "")

改为

(command ".scale" ne1 "" p1  scal )

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-19 17:22 , Processed in 0.206995 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表