明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1712|回复: 5

关于局布块替换的问题.

[复制链接]
发表于 2003-12-13 11:10:00 | 显示全部楼层 |阅读模式
各位:
     您好!
     我是一个LISP初学者,写了一个局部块替换程序,但只能替换单个, 我想替换多个
怎么写都写不出来, 还有一个问题, 这个程序怎么会编译出错哦.
   局布块替换(不过只能单个地替换哦)
  (defun C:RepB()
        (setvar  "cmdecho" 0)
                (setq Tobject (entsel))
                (setq Rdelete  (car Tobject))
                (if Rdelete
            (progn
                                (setq Robject (entget Rdelete))
                                (setq  InsertP   (cdr  (assoc 10 Robject)))
                                (setq  ScaleXYZ (cdr (assoc 41 Robject)))
                                (setq  Rot (cdr (assoc 50 Robject)))
                                (setq Bname (getsting "please input the Block Name:"))
                                (command  "-insert" Bname "scale" scaleXYZ Insertp Rot)
                                (command "erase" Tobject "")
                            )
                   )
                        (setvar "cmdecho" 1)
                        (princ)
                   )
                   )
发表于 2003-12-13 11:45:00 | 显示全部楼层
替换多个是指循环选择要替换的块,输入新块替换,还是与选中块的块名相同的块都替换成需要的块?
替换单个块这样写:

  1. (defun C:RepB ( / ent ents Bname)
  2.   (setq ent (car (entsel)))
  3.   (if ent
  4.     (progn
  5.       (setq ents (entget ent))
  6.       (setq Bname (getstring "\n输入新块名:"))
  7.       (setq ents (subst (cons 2 Bname) (assoc 2 ents) ents))
  8.       (entmod ents)
  9.     )
  10.   )
  11.   (princ)
  12. )

 楼主| 发表于 2003-12-13 11:54:00 | 显示全部楼层
替换多个是指循环选择要替换的块,输入新块替换
发表于 2003-12-13 13:13:00 | 显示全部楼层
这样,另,给你加了个记忆小功能


  1. (defun C:RepB ( / ent ents Bname)
  2.   (while (setq ent (car (entsel)))
  3.     (progn
  4.       (setq ents (entget ent))
  5.       (if (not bn)
  6.         (setq Bname (getstring "\n输入新块名:"))
  7.         (progn
  8.           (setq Bname (getstring (strcat "\n输入新块名<" bn ">:")))
  9.           (if (= Bname "")
  10.             (setq Bname bn)
  11.           )
  12.         )
  13.       )
  14.       (setq bn Bname)
  15.       (setq ents (subst (cons 2 Bname) (assoc 2 ents) ents))
  16.       (entmod ents)
  17.     )
  18.   )
  19.   (princ)
  20. )
 楼主| 发表于 2003-12-13 13:36:00 | 显示全部楼层
谢谢
发表于 2005-6-26 19:39:00 | 显示全部楼层
meflying 谢谢了我也学到了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 16:43 , Processed in 0.161431 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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