求高手帮我改一下这个程序
(defun c:Qblock(/ a b c d e f val val1) ;主函数开始(setq val(getvar "cmdecho")) ;获系统变量“是否回显”参数
(setvar "cmdecho" 0) ;设command 函数运行期间,AutoCAD 不回显提示和输入
(defun *error* (msg) ;按ESC键时的处理方法
(setvar "GRIPSIZE" val1) ;按ESC键时把夹点恢复原来大小
(princ"")
;(princ msg)
;(princ)
)
(setq a(cadr(ssgetfirst)));判断当前图形是否有既被夹取的对象,如果有则把这个选择集赋予变量a
(if(= a nil) ;如果变量a为空时
(progn
(setq val1(getvar "GRIPSIZE")) ;获得系统夹点大小
(print "-> 请选择要设为块的对象或按<Esc>退出") ;显状态栏提示的信息
(setq b(ssget));创建一个选择集
(Initget 1) ;为随后的交互输入函数getpoint创关键字
(setq c(getpoint"\n指定基点:"));获得一个三维点坐标
;(setq d(list (car c) (cadr c)));转换为二维点坐标(在此不必要)
(command "undo" "group") ;为Undo编组
(command "copybase" c b "");调用AUTOCAD的COPYBASE命令
(Command "erase" b "");调用AUTOCAD的ERASE命令删除B选择集
(command "pasteblock" c);调用AUTOCAD的PASTEBLOCK命令
(command "undo" "end") ;Undo编组结束
(prompt "\n***** 对象设为块成功! *****") ;显状态栏提示的信息
)
(progn ;如果变量a不为空时
(setq val1(getvar "GRIPSIZE")) ;获得系统夹点大小
(setvar "GRIPSIZE" 1) ;设夹点大小
(print "-> 所选对象将设为块或按<Esc>退出:") ;显状态栏提示的信息
(Initget 1) ;为随后的交互输入函数getpoint创关键字
(setq c(getpoint"\n指定基点:"));获得一个三维点坐标
(setvar "GRIPSIZE" val1) ;把夹点恢复原来大小
;(setq d(list (car c) (cadr c)));转换为二维点坐标(在此不必要)
(command "undo" "group") ;为Undo编组
(command "copybase" c a "");调用AUTOCAD的COPYBASE命令
(Command "erase" a "");调用AUTOCAD的ERASE命令删除B选择集
(command "pasteblock" c);调用AUTOCAD的PASTEBLOCK命令
(command "undo" "end") ;Undo编组结束
(prompt "\n***** 对象设为块成功! *****") ;显状态栏提示的信息
)
);IF结束
(princ);静默退出
(setvar "cmdecho" val) ;设command 函数运行期间,AutoCAD 的回显提示和输入恢复原状
);主函数结束
;;;--------------------------------END----------------------------------------
这个程序就是我们复制粘贴为块的一个操作,用起来比较卡
我想自动以时间(年月日时分秒)为块名快速建快
怎么没人发话呀,杯具啊 本帖最后由 【KAIXIN】 于 2011-12-23 14:31 编辑
【KAIXIN】 发表于 2011-12-23 14:27 static/image/common/back.gif
又是明经币!!! pzweng 发表于 2011-12-23 14:33 static/image/common/back.gif
又是明经币!!!
要明经币是让想要程序的朋友,充值一点明经币
为明经做一点点贡献! 【KAIXIN】 发表于 2011-12-23 14:27 static/image/common/back.gif
给你补回明经币了 没得币了
页:
[1]