求DCL合并
因用UG转出的DWG图档较多。经常要删除,不胜其烦,想在CAD中用指令操作。已写好LSP及DCL(DCL用LSP写的),我对于DCL的处理也是一知半解,求将两个整合在一起。本帖最后由 ZZXXQQ 于 2014-11-27 19:59 编辑
tianyi1230 发表于 2014-11-27 08:20 http://bbs.mjtd.com/static/image/common/back.gif
楼主意思是打包为vlx后缀的插件?(defun c:ddwg(/ AcadObject AcadDocument mSpace folder filelst kt)
(vl-load-com)
(defun *error* (msg)(princ))
(setq AcadObject (vlax-get-acad-object)
AcadDocument (vla-get-ActiveDocument Acadobject)
mSpace (vla-get-ModelSpace Acaddocument)
)
(am1)
(setq folder (acet-ui-pickdir (strcat "选择要删除" ar_num "文件的文件夹: ")))
;(princ folder)
(if (/= folder nil) (progn
(setq filelst (vl-directory-files Folder ar_num 1))
(setq filelst (GetAllFiles folder ar_num))
(alert
(strcat "\n\t警告\n此操作会删除当前文件夹下的所有" ar_num "文件\n文件不可恢复,请慎重操作!")
)
(initget "Y N ")
(setq kt (getkword(strcat "\n [确认删除当前文件夹下的所有" ar_num "文件,文件不可恢复(Yes)/不删除<No>]: ")))
(if (= kt "Y")
(foreach v filelst (vl-file-delete v))
)
)
(princ (strcat "\n 该文件夹下没有"ar_num "文件"))
)
(princ)
)
(defun GetAllFiles (dir typ);;;by明经
(append
(mapcar '(lambda (x) (strcat dir "\\" x))
(vl-directory-files dir typ 1)
)
(apply 'append
(mapcar '(lambda (x) (GetAllFiles (strcat dir "\\" x) typ))
(vl-remove-if
'(lambda (x) (wcmatch x "`.,`.`."))
(vl-directory-files dir "*" -1)
)
)
)
)
)
(defun am1()
(setq dcl_name "am1");;;定义对话框名称
(setq dcl_nx3 ":dialog{label=\"文件删除\";");;;统一对话框表头,可以外部引用
(setq dcl_nx2 (strcat dcl_name dcl_nx3))
(setq dcl_name (strcat (getenv "temp") "\\" dcl_name ".dcl"))
(setqf (open dcl_name "w"))
(write-line dcl_nx2 f)
(foreach x '(
"spacer_1 ;"
":row{"
":edit_box{label=\"文件路径\";key=\"edit_path\";edit_width=40;}"
":button{label=\"<\";key=\"path_ok\";width=5;}"
"}"
"spacer_1 ;"
":row{"
":boxed_radio_column{"
"label=\"文件格式\";"
"key=\"ext\";"
":radio_button{label=\"dwg\";key=\"d1\";value=\"1\";}"
":radio_button{label=\"dxf\";key=\"d2\";}"
":radio_button{label=\"bak\";key=\"d3\";}"
":radio_button{label=\"dat\";key=\"d4\";}"
":radio_button{label=\"txt\";key=\"d5\";}"
":radio_button{label=\"log.*\";key=\"d6\";}"
":radio_button{label=\"xml\";key=\"d7\";}"
"}"
":boxed_radio_column{label=\"警告\";"
"spacer_1;"
":text{label=\"警告\";alignment=centered;}"
"spacer_1;"
":text{label=\"此操作会删除当前文件夹下的所有批定格式文件\";alignment=centered;}"
"spacer_1;"
":text{label=\"文件不可恢复,请慎重操作!\";alignment=centered;}"
"spacer_1;"
"spacer_1;"
"spacer_1;"
"}"
"}//关闭橫列元件"
"spacer_1 ;"
"ok_cancel;"
"}")
(princ x f)
(write-line "" f)
)
(close f)
(if (> (setq dcl_id (load_dialog dcl_name)) 0) (progn
(if (new_dialog "am1" dcl_id) (progn
(action_tile "accept" "(readata) (done_dialog 1")
(action_tile "cancel" "(done_dialog 0)")
(setq kt (start_dialog))
) (princ "\n无法显示对话框!"))
(unload_dialog dcl_id)
) (princ "\n无法加载对话框!"))
(if (= kt 1)
(setq ar_num (strcat "*." ar_num))
)
(princ)
)
(defun readata ()
(setq ar_num
(nth(atoi(substr(get_tile "ext") 2 1)) '("dwg" "dxf" "bak" "dat" "txt" "log.*" "xml"))
)
)
楼主意思是打包为vlx后缀的插件? tianyi1230 发表于 2014-11-27 08:20 static/image/common/back.gif
楼主意思是打包为vlx后缀的插件?
理解有问题!
楼主的意思是 两个合成一个lisp
楼主,貌似你的主程序还有问题吧,你这不仅仅要合并啊 意思是给LSP加个DCL ZZXXQQ 发表于 2014-11-27 09:13 static/image/common/back.gif
无法加载对话框!
ymcui 发表于 2014-11-27 14:16 static/image/common/back.gif
无法加载对话框!
":key=\"ext\";"====>>>"key=\"ext\";" ZZXXQQ 发表于 2014-11-27 09:13 static/image/common/back.gif
Z版还真是不一般的热心啊,楼主的程序都不完整, path_okkey 都没用上,不能指定路径, 请问楼主你怎么用? 要是不用对话框,使用DDWG这个程式也可以用的。
页:
[1]