明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2549|回复: 8

[基础] 求DCL合并

[复制链接]
发表于 2014-11-26 17:35:27 | 显示全部楼层 |阅读模式
因用UG转出的DWG图档较多。经常要删除,不胜其烦,想在CAD中用指令操作。已写好LSP及DCL(DCL用LSP写的),我对于DCL的处理也是一知半解,求将两个整合在一起。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2014-11-27 09:13:43 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2014-11-27 19:59 编辑
tianyi1230 发表于 2014-11-27 08:20
楼主意思是打包为vlx后缀的插件?
  1. (defun c:ddwg  (/ AcadObject AcadDocument mSpace folder filelst kt)
  2.   (vl-load-com)
  3.   (defun *error* (msg)(princ))
  4.   (setq AcadObject (vlax-get-acad-object)
  5.           AcadDocument (vla-get-ActiveDocument Acadobject)
  6.           mSpace        (vla-get-ModelSpace Acaddocument)
  7.   )
  8.   (am1)
  9.   (setq folder (acet-ui-pickdir (strcat "选择要删除" ar_num "文件的文件夹: ")))
  10.     ;(princ folder)
  11.   (if (/= folder nil) (progn
  12.    (setq filelst (vl-directory-files Folder ar_num 1))
  13.    (setq filelst (GetAllFiles folder ar_num))
  14.    (alert
  15.      (strcat "\n\t警告\n此操作会删除当前文件夹下的所有" ar_num "文件\n文件不可恢复,请慎重操作!")
  16.    )
  17.    (initget "Y N ")
  18.    (setq kt (getkword(strcat "\n [确认删除当前文件夹下的所有" ar_num "文件,文件不可恢复(Yes)/不删除<No>]: ")))
  19.    (if (= kt "Y")
  20.     (foreach v filelst (vl-file-delete v))
  21.    )
  22.   )
  23.    (princ (strcat "\n 该文件夹下没有"ar_num "文件"))
  24.   )
  25.   (princ)
  26. )
  27. (defun GetAllFiles (dir typ);;;by明经
  28.   (append
  29.     (mapcar '(lambda (x) (strcat dir "\" x))
  30.       (vl-directory-files dir typ 1)
  31.     )
  32.     (apply 'append
  33.       (mapcar '(lambda (x) (GetAllFiles (strcat dir "\" x) typ))
  34.         (vl-remove-if
  35.           '(lambda (x) (wcmatch x "`.,`.`."))
  36.           (vl-directory-files dir "*" -1)
  37.         )
  38.       )
  39.     )
  40.   )
  41. )
  42. (defun am1()
  43.   (setq dcl_name "am1");;;定义对话框名称
  44.   (setq dcl_nx3 ":dialog{label="文件删除";");;;统一对话框表头,可以外部引用
  45.   (setq dcl_nx2 (strcat dcl_name dcl_nx3))
  46.   (setq dcl_name (strcat (getenv "temp") "\" dcl_name ".dcl"))
  47.   (setq  f (open dcl_name "w"))
  48.   (write-line dcl_nx2 f)
  49.   (foreach x '(
  50.     "spacer_1 ;"
  51.     ":row{"
  52.     ":edit_box{label="文件路径";key="edit_path";edit_width=40;}"
  53.     ":button{label="<";key="path_ok";width=5;}"
  54.      "}"
  55.     "spacer_1 ;"
  56.      ":row{"
  57.      ":boxed_radio_column{"
  58.         "label="文件格式";"
  59.         "key="ext";"
  60.         ":radio_button{label="dwg";key="d1";value="1";}"
  61.         ":radio_button{label="dxf";key="d2";}"
  62.         ":radio_button{label="bak";key="d3";}"
  63.         ":radio_button{label="dat";key="d4";}"
  64.         ":radio_button{label="txt";key="d5";}"
  65.         ":radio_button{label="log.*";key="d6";}"
  66.         ":radio_button{label="xml";key="d7";}"
  67.      "}"
  68.     ":boxed_radio_column{label="警告";"
  69.     "spacer_1;"
  70.     ":text{label="警告";alignment=centered;}"
  71.     "spacer_1;"
  72.     ":text{label="此操作会删除当前文件夹下的所有批定格式文件";alignment=centered;}"
  73.     "spacer_1;"
  74.     ":text{label="文件不可恢复,请慎重操作!";alignment=centered;}"
  75.     "spacer_1;"
  76.     "spacer_1;"
  77.     "spacer_1;"
  78.      "}"
  79.      "}  //关闭橫列元件"
  80.     "spacer_1 ;"
  81.     "ok_cancel;"
  82.     "}")
  83. (princ x f)
  84. (write-line "" f)
  85. )
  86. (close f)
  87. (if (> (setq dcl_id (load_dialog dcl_name)) 0) (progn
  88. (if (new_dialog "am1" dcl_id) (progn
  89.   (action_tile "accept" "(readata) (done_dialog 1")
  90.   (action_tile "cancel"   "(done_dialog 0)")
  91.   (setq kt (start_dialog))
  92. ) (princ "\n无法显示对话框!"))
  93. (unload_dialog dcl_id)
  94. ) (princ "\n无法加载对话框!"))
  95. (if (= kt 1)
  96. (setq ar_num (strcat "*." ar_num))
  97. )
  98. (princ)
  99. )
  100. (defun readata ()
  101. (setq ar_num
  102.    (nth(atoi(substr(get_tile "ext") 2 1)) '("dwg" "dxf" "bak" "dat" "txt" "log.*" "xml"))
  103. )
  104. )
回复 支持 0 反对 1

使用道具 举报

发表于 2014-11-27 08:20:43 | 显示全部楼层
楼主意思是打包为vlx后缀的插件?
发表于 2014-11-27 08:26:18 | 显示全部楼层
tianyi1230 发表于 2014-11-27 08:20
楼主意思是打包为vlx后缀的插件?

理解有问题!

楼主的意思是 两个合成一个lisp

楼主,貌似你的主程序还有问题吧,你这不仅仅要合并啊
 楼主| 发表于 2014-11-27 08:31:17 | 显示全部楼层
意思是给LSP加个DCL
发表于 2014-11-27 14:16:57 | 显示全部楼层
ZZXXQQ 发表于 2014-11-27 09:13

无法加载对话框!




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2014-11-27 14:25:56 | 显示全部楼层
ymcui 发表于 2014-11-27 14:16
无法加载对话框!

":key=\"ext\";"====>>>"key=\"ext\";"
发表于 2014-11-27 22:24:23 | 显示全部楼层
ZZXXQQ 发表于 2014-11-27 09:13

Z版还真是不一般的热心啊,楼主的程序都不完整, path_ok  key 都没用上,不能指定路径, 请问楼主你怎么用?
 楼主| 发表于 2014-11-28 10:15:15 | 显示全部楼层
要是不用对话框,使用DDWG这个程式也可以用的。

点评

你现在用上对话框了,如何选择文件夹位置? path_ok 程序中都没有驱动  发表于 2014-11-28 11:52
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-1 09:11 , Processed in 0.246233 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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