找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 22617|回复: 71

[研讨] 源码 图库管理小程序 2013年5月25日 第3更

  [复制链接]

已领礼包: 1个

财富等级: 恭喜发财

发表于 2013-5-23 21:00:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 yxpxa 于 2013-5-25 05:20 编辑




  1. ;; 图库管理程序
  2. ;; 来自小东空间,转载请注明出处
  3. ;; by 小蜜蜂    QQ:9034598   2013-5-25
  4. (or dcl_getversionex
  5. (progn
  6.    (defun Load:OdclRuntime ( / acadversion arxname dclarxfile *error*)
  7.      (defun *error* (msg)
  8.        (princ (strcat "\n 图库管理程序 加载失败,文件 " arxname " 缺失")))
  9.       (setq acadversion (substr (getvar "acadver") 1 2))
  10.       (setq arxname (strcat "OpenDCL." acadversion ".arx"))
  11.       (if (setq dclarxfile (findfile arxname))
  12.         (if (null (member arxname (arx)))(arxload dclarxfile))
  13.         (exit))  ;;如果没有 opendcl.arx ,后面的主程序将不加载。
  14.    )(Load:OdclRuntime)
  15. )
  16. )
  17. (vl-load-com)
  18. ;;图库管理程序
  19. ;;全局变量:
  20. ;;  dxss-ssrCtrol 为 dwgPreview 和 text 控件的名称列表
  21. ;;  dxss-objCtrol 为 dwgPreview 和 text 控件的对象列表
  22. ;;  dxss-sumPage 总页面数
  23. ;;  dxss-curpage 当前页面数,起始数为 0
  24. ;;  dxss-picture 当前所选图像框,起始数为 0
  25. ;;
  26. (defun c:dxss( / n)
  27. ;;建立16个图像控件名称列表  dxss-ssrCtrol
  28. (setq n 0 dxss-ssrCtrol '())
  29. (repeat 16
  30.   (setq n (1+ n) dxss-ssrCtrol
  31.      (cons (list (strcat "dxss_mainWin_DwgPreview" (itoa n))
  32.                  (strcat "dxss_mainWin_TextBox" (itoa n))) dxss-ssrCtrol))
  33. )(setq dxss-ssrCtrol(reverse dxss-ssrCtrol))
  34. ;;控件属性字符定义
  35. (setq dxss-KjvaLue '(("dxss_mainWin_ComboBox2" " \"Text\"")
  36.                   ("dxss_mainWin_TextBox17" " \"Text\"")
  37.                   ("dxss_mainWin_TextBox18" " \"Text\"")
  38.                   ("dxss_mainWin_TextBox19" " \"Text\"")
  39.                   ("dxss_mainWin_TextBox20" " \"Text\"")
  40.                   ("dxss_mainWin_CheckBox1" " \"Value\"")
  41.                   ("dxss_mainWin_CheckBox2" " \"Value\"")
  42.                   ("dxss_mainWin_CheckBox3" " \"Value\""))
  43.       dxss-Option "程*序#设%置")
  44. ;;建立搜索图库全路径
  45. (or dxss-path (setq dxss-path (findfile "e:\\tk")))
  46. (dxss_tkini)
  47. (dcl_project_load "dxss.odcl" t)
  48. (dcl_form_show dxss_mainWin)
  49. (princ)
  50. )
  51. ;;图库初始化
  52. (defun dxss_tkini()
  53. ;;建立搜索图库全路径
  54. (setq dxss-FullName (mapcar '(lambda(x)(findfile (strcat dxss-path "\\" x)))
  55.                  (vl-directory-files dxss-path "*.dwg" 1)))
  56.                  
  57. ;;计算当前页面及总页面
  58. (setq dxss-curpage 0 dxss-picture 0 n (length dxss-FullName)
  59.       dxss-sumpage (+ (fix (/ n 16))(if (> (rem n 16) 0) 1 0)))
  60. (dxss_loadDescrib)
  61. )

  62. ;;主窗口初始化
  63. (defun c:dxss_mainWin_OnInitialize (/)
  64. ;;给名称列表赋予对象句柄
  65. (setq dxss-objCtrol (mapcar '(lambda(x) (mapcar '(lambda(y)
  66.                      (eval (read y))) x)) dxss-ssrCtrol))
  67.                      
  68. ;;填充列表盒
  69. (mapcar '(lambda(x)(dcl_ListBox_AddList dxss_mainWin_ListBox1
  70.           (vl-filename-base x))) dxss-FullName)
  71. (dxss_updataPic 0) ;;显示首页
  72. (dcl_Control_SetText dxss_mainWin_ComboBox1 (getvar "CLAYER")) ;;层
  73. (dcl_Control_SetText dxss_mainWin_TextBox21 (dxss-trim dxss-path 19))
  74. (if dxss-txtc (c:dxss_mainWin_CheckBox1_OnClicked  ;;XY输入框是否有效
  75.                (nth 5 (cadr (assoc dxss-Option dxss-txtc)))))
  76. (dxss_objProfun) ;;装载图像单击事件
  77. (dxss_setcurval) ;;控件赋值
  78. (dxss_objSjfun)  ;;图像双击事件
  79. )

  80. ;;刷新当前页面的 dxss-objCtrol 控件列表
  81. (defun dxss_updataPic( mm / n Wss Nss tem ssc m nn)
  82. (setq n 0 Wss '() Nss '())
  83. (setq m (if (< mm (1- dxss-sumpage)) 16 (rem (length dxss-FullName) 16))) ;;当前图像数
  84. (while (< n m)
  85.     (setq nn (+ (* mm 16) n)
  86.           tem (nth nn dxss-FullName)
  87.           Wss (cons (list (car (nth n dxss-objCtrol)) tem) Wss)
  88.           Nss (cons (list (cadr (nth n dxss-objCtrol)) (vl-filename-base tem)) Nss)
  89.           n (+ n 1)))
  90.   ;;清除所有图像及文本框
  91.   (mapcar '(lambda(x)(dcl_DWGPreview_Clear (car x))) dxss-objCtrol)
  92.   (mapcar '(lambda(x)(dcl_Control_SetBackColor (car x) -22)) dxss-objCtrol)
  93.   (mapcar '(lambda(x)(dcl_Control_SetText (cadr x) "")) dxss-objCtrol)
  94.   ;;赋值
  95.   (mapcar '(lambda(x)(apply 'dcl_DWGPreview_LoadDwg x)) Wss)
  96.   (mapcar '(lambda(x)(apply 'dcl_Control_SetText x)) Nss)
  97.   
  98.   (dcl_Control_SetCaption dxss_mainWin_Label3
  99.      (strcat "当前第  " (itoa (+ dxss-curpage 1))  "  页   共  " (itoa dxss-sumpage) "  页"))
  100. )

  101. ;;建立16个图像框的单击事件
  102. (defun dxss_objProfun()
  103. (foreach x (mapcar 'car dxss-ssrCtrol) (eval (read
  104.    (strcat "(defun c:" x "_OnClicked(/ m)"
  105.         "(setq m (+ (* dxss-curpage 16) (vl-position \"" x "\" (mapcar 'car dxss-ssrCtrol))))"
  106.         "(if (< m (length dxss-FullName))(progn "
  107.         "(setq dxss-picture m dxss-curpage (fix (/ m 16)))(dxss_updataPic dxss-curpage)"
  108.         "(dcl_Control_SetBackColor " x " 1)"    ;;1 代表选中后的背景是红色
  109.         "(dcl_DWGPreview_LoadDwg " x " (nth dxss-picture dxss-FullName))"
  110.         "(dcl_ListBox_SetCurSel dxss_mainWin_ListBox1 dxss-picture)(dxss_loaditem))))")
  111. )))
  112. )
  113. ;;建立16个图像框的双击事件
  114. (defun dxss_objSjfun()
  115. (foreach x (mapcar 'car dxss-ssrCtrol) (eval (read
  116.    (strcat "(defun c:" x "_OnDblClicked(/)(dxss-savedata)"
  117.            "(setq s (car (cadr (assoc dxss-Option dxss-txtc))))"
  118.            "(cond ((= s \"插入\")(c:dxss_mainWin_TextButton6_OnClicked))"
  119.            "((= s \"预览\")(c:dxss_Form1_TextButton4_OnClicked))"
  120.            "((= s \"属性\")(dcl_Form_Show dxss_Attrib))(t nil)))")
  121. )))
  122. )
  123. ;;创建所有控件的取值函数
  124. (defun dxss_getcurval( / ss)
  125. (setq ss "dcl_Control_GetProperty")
  126. (mapcar '(lambda(x) (eval (read (strcat "(" ss " " (car x) (cadr x) ")")))) dxss-KjvaLue)
  127. )
  128. ;;创建所有控件的赋值函数
  129. (defun dxss_setcurval( / x s ss sL)
  130. (setq ss "dcl_Control_SetProperty" sL (cadr (assoc dxss-Option dxss-txtc)) n 0)
  131. (repeat (length sL)
  132.    (setq x (nth n dxss-KjvaLue)
  133.          s (if (< n 5) (strcat "\"" (nth n sL) "\"")(itoa (nth n sL))))
  134.    (eval (read (strcat "(" ss " " (car x) (cadr x) " " s ")")))
  135.    (setq n (1+ n))
  136. )
  137. )
  138. ;;单击列表盒事件
  139. (defun c:dxss_mainWin_ListBox1_OnSelChanged (ItemIndexOrCount Value / mm)
  140. (setq dxss-picture ItemIndexOrCount)
  141. (setq mm (fix (/ dxss-picture 16))) ;;计算当前页面
  142. (if (/= mm dxss-curpage)(setq dxss-curpage mm))
  143. (eval (read (strcat "(c:" (car (nth (- dxss-picture (* mm 16)) dxss-ssrCtrol)) "_OnClicked)")))
  144. )
  145. ;;预览
  146. (defun c:dxss_Form1_TextButton4_OnClicked (/)
  147. (setq ss (nth dxss-picture dxss-FullName)
  148.        dd (strcat (vl-filename-directory ss) "\\" (vl-filename-base ss) ".sld"))
  149. (setq dxss-xx  (if (findfile dd) dd ss))
  150. (if (findfile dd) (dcl_Form_Show dxss_PreViewSld)(dcl_Form_Show dxss_PreViewDwg))
  151. )
  152. (defun c:dxss_PreViewDwg_OnInitialize (/)
  153. (dcl_DWGPreview_LoadDwg dxss_PreViewDwg_DwgPreview1 dxss-xx)
  154. (setq dxss-xx nil)
  155. )
  156. (defun c:dxss_PreViewSld_OnInitialize (/)
  157. (dcl_SlideView_Load dxss_PreViewSld_SlideView1 dxss-xx)
  158. (setq dxss-xx nil)
  159. )

  160. ;;上一页
  161. (defun c:dxss_mainWin_TextButton1_OnClicked (/)
  162.   (if (> dxss-curpage 0)(setq dxss-curpage (1- dxss-curpage)))
  163.   (setq dxss-picture (* dxss-curpage 16))
  164.   (dxss_updataPic dxss-curpage)
  165. )
  166. ;;下一页
  167. (defun c:dxss_mainWin_TextButton2_OnClicked (/)
  168.   (if (< dxss-curpage (- dxss-sumpage 1))(setq dxss-curpage (1+ dxss-curpage)))
  169.   (setq dxss-picture (* dxss-curpage 16))
  170.   (dxss_updataPic dxss-curpage)
  171. )
  172. ;;块插入 需要优化
  173. (defun c:dxss_mainWin_TextButton6_OnClicked (/ *error* a x1 x2 x3 x4 x5 x6 x7 s1 s2 s3)
  174.                               ;  qname name xex mouse pt ent nK xxx
  175. (defun *error* (msg)
  176.   (setvar "cmdecho" a)
  177.   (princ "ESC 退出")
  178.   (princ)
  179.   )
  180. (setq a (getvar "cmdecho"))
  181. (setvar "cmdecho" 0)
  182. (setq xxx (dcl_Control_GetText dxss_mainWin_ComboBox1))  ;;图层
  183. (dxss-savedata) ;;保存数据
  184. (setq qname (nth dxss-picture dxss-FullName)
  185.       name (vl-filename-base qname)
  186.      xex (cadr (assoc dxss-Option dxss-txtc))
  187.       x1 (atof (nth 1 xex))  ;;X比例
  188.       x2 (atof (nth 2 xex))  ;;Y比例
  189.       x3 (/ (* (atof (nth 3 xex)) pi) 180)  ;;旋转角度
  190.       x4 (atof (nth 4 xex))  ;;整体比例
  191.       x5 (nth 5 xex)  ;;锁定比例
  192.       x6 (nth 6 xex)  ;;多块插入
  193.       x7 (nth 7 xex))  ;;是否分解
  194. (if (<= x1 0) (setq x1 1))
  195. (if (<= x2 0) (setq x2 1))
  196. (if (<= x4 0) (setq x4 1))
  197. (if (= x5 1) (setq s1 x4 s2 x4 s3 x4)(setq s1 x1 s2 x2 s3 1))
  198. (dcl_form_close dxss_mainWin)
  199. ;;第一步,导入块到文件后删除
  200. (if (null (tblsearch "block" name))(progn
  201.      (command "-insert" qname "0,0" "" "" "")(entdel(entlast))))
  202. ;;生成第一个块的dxf
  203. (setq firstB (list '(0 . "INSERT") (cons 8 xxx) (cons 2 name) (cons 10 '(0 0 0))
  204.                     (cons 41 s1)(cons 42 s2)(cons 43 s3)(cons 50 x3)))
  205. ;;
  206. (setq n 0)
  207. (while (progn
  208. (entmakex firstB) (setq CnTnNew t)   ;;这个ent不保存
  209. (princ "\n请指定插入点 或 按任意键取消: ")
  210. (while (and (or (= (car (setq mouse (grread t 13 1))) 5)(= (car mouse) 12)(= (car mouse) 2)) CnTnNew)
  211.   (setq KK (car mouse))
  212.   (if (= KK 2)(setq CnTnNew nil))
  213.   (if (or (= KK 3)(= KK 5)) (progn  ;;3为正常的鼠标左键,5为移动点
  214.     (setq pt (cadr mouse)
  215.          ent (entget(entlast))
  216.           Nk (subst (cons 10 pt)(assoc 10 ent) ent))
  217.     (entmod nk)
  218.    ))
  219. )
  220. (if (= x7 1) (while (= (cdr (assoc 0 (entget (entlast)))) "INSERT")
  221.                            (command ".explode" (entlast))))  ;;无论加了多少层图块,一次性分解!

  222.   (if (= x6 1) (princ (setq n (1+ n))))
  223.   (and CnTnNew (= x6 1)))
  224. )
  225. (if (= x6 1) (progn(entdel(entlast))
  226.     (princ (strcat "\r温馨提示: 您按下了键盘,程序退出  ")))
  227. )
  228. (setvar "cmdecho" a)
  229. (princ)
  230. )

  231. ;;保存数据
  232. (defun dxss-savedata (/ data)
  233.   (setq data (list dxss-Option (dxss_getcurval)))
  234.   (if (assoc dxss-Option dxss-txtc)
  235.      (setq dxss-txtc (subst data (assoc dxss-Option dxss-txtc) dxss-txtc))
  236.      (setq dxss-txtc (cons data  dxss-txtc)))
  237.   (write_read "w" (strcat dxss-path "\\description.txt") dxss-txtc)
  238. )

  239. ;;显示图块属性
  240. (defun c:dxss_mainWin_TextButton5_OnClicked (/)(dcl_Form_Show dxss_Attrib))

  241. ;;属性窗口初始化
  242. (defun c:dxss_Attrib_OnInitialize (/ ss dd ssL ssr fn f ssc)
  243. (setq ss  (nth dxss-picture dxss-FullName)
  244.       dd (strcat (vl-filename-directory ss) "\\" (vl-filename-base ss) ".sld")
  245.       ssL (vl-file-systime ss))
  246. (setq ssr (strcat "文件路径:  " ss "\n\n创建日期:  "
  247.            (itoa (car ssL)) " 年 " (itoa (cadr ssL)) " 月 " (itoa (nth 3 ssL)) " 日"
  248.            "\n\n文件大小:  " (itoa (vl-file-size ss)) " 字节"
  249.            "\n\n幻 灯 片: " (if (setq hd (findfile dd)) dd "无")
  250.     (if hd (strcat "\n\n幻灯片大小: " (itoa (vl-file-size hd)) " 字节") "")
  251.            ))
  252. (dxss_loadDescrib)
  253. (setq ssc (cadr (assoc (vl-filename-base ss) dxss-txtc)))
  254. (setq ssc (if ssc (strsub "\r\n" "^$~" ssc) ""))
  255. (dcl_Control_SetText dxss_Attrib_TextBox1 ssc)
  256. (dcl_Control_SetCaption dxss_Attrib_Label1 ssr)
  257. )
  258. ;;加载说明文件
  259. (defun dxss_loadDescrib( / p)
  260. (setq p (strcat dxss-path "\\description.txt")
  261.       dxss-txtc (write_read "r" p nil))
  262. )
  263. ;;保存说明文件
  264. (defun dxss_saveDescrib( / ss tem fn f)
  265. (setq yy (dcl_Control_GetText dxss_Attrib_TextBox1))
  266. (if (/= yy "")(progn
  267.    (setq ss (vl-filename-base (nth dxss-picture dxss-FullName))
  268.          xx (strsub "^$~" "\r\n" yy))
  269.    (if (assoc ss dxss-txtc)
  270.      (setq dxss-txtc (subst (list ss xx) (assoc ss dxss-txtc) dxss-txtc))
  271.      (setq dxss-txtc (cons (list ss xx)  dxss-txtc)))
  272.   (write_read "w" (strcat dxss-path "\\description.txt") dxss-txtc)
  273. ))(dxss_loaditem)
  274. )
  275. ;;选择文件路径
  276. (defun c:dxss_mainWin_TextButton8_OnClicked (/)
  277. (setq pss (dcl_SelectFolder "选择图库加载路径..." dxss-path))
  278. (if pss (progn
  279.   (setq dxss-path pss) (dxss_tkini)
  280.   (dcl_ListBox_Clear dxss_mainWin_ListBox1)
  281.   (c:dxss_mainWin_OnInitialize)
  282. ))
  283. )
  284. ;;关闭属性窗口
  285. (defun c:dxss_Attrib_TextButton1_OnClicked (/)
  286. (dxss_saveDescrib)(dcl_form_close dxss_Attrib)
  287. )
  288. ;;读写文件
  289. (defun write_read(Key Fpath Data / f k Lss ss ncn)
  290.   (setq k (strcase Key)) ;;将关键字统一转换为大写
  291.   (cond
  292.     ((= k "W")(if (and Fpath Data (= (type Fpath) 'STR))
  293.        (progn
  294.            (setq Lss (vl-prin1-to-string Data))
  295.            (setq f (open Fpath "w"))
  296.            (princ Lss f)
  297.            (close f)
  298.            t)))
  299.     ((= k "R")(if (and Fpath (= (type Fpath) 'STR) (findfile Fpath))
  300.        (progn
  301.            (setq f (open Fpath "r")
  302.                 ss (read-line f)
  303.                 Lss (read ss))
  304.            (close f)
  305.            Lss)
  306.            Data))
  307.     (t nil))
  308. )
  309. ;;长路径截短以适应 text 显示,doslib有这个函数
  310. (defun dxss-trim(ss n / k L)
  311. (setq L (strlen ss))
  312. (if (> L n)(progn
  313.     (setq k (fix (/ (- n 3) 2)))
  314.     (strcat (substr ss 1 (+ k 3)) "..." (substr ss (- L k -3))) ;;非偶数截取可能会乱码
  315. ) ss)
  316. )
  317. (princ)


Lisp代码、odcl 对话框 以及测试图库下载。用法:全部释放到 E:\tk 下,路径可修改

改了半天,收点币^_^




2010-05-25_041507.png
2010-05-25_041526.png
aa.gif

tk.rar

300.06 KB, 下载次数: 576, 下载积分: D豆 -1 , 活跃度 1

售价: 8 D豆  [记录]

这个是第3版

评分

参与人数 3D豆 +18 贡献 +1 收起 理由
/db_自贡黄明儒_ + 3 很给力!经验;技术要点;资料分享奖!
marting + 5 很给力!经验;技术要点;资料分享奖!
XDSoft + 10 + 1 好主题奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 343个

财富等级: 日进斗金

发表于 2013-6-12 00:08:32 | 显示全部楼层
QQ图片20130612000203.jpg

增加文件夹有分类情况,不可能所有的块都在一个文件夹下的,如主库有A1  A2   A3文件夹,各个主库下面有子库B1  B2   B3   B4等文件夹,每个子库文件下都有DWG的图块列表文件
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 0 反对 1

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

 楼主| 发表于 2013-5-23 21:07:17 | 显示全部楼层
本帖最后由 yxpxa 于 2013-6-27 16:54 编辑

感谢大家的支持,原计划第4更未完成就停止,时隔一个月后发现回复不少,说明这个代码还有用。
先将3.5代码发布如下。
时间长忘了更新了那块,大致如下

面板参数保存到注册表
图库可按文件夹分类
缩略图优先显示同名 sld 幻灯
...

3.5版源码下载
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:dxss.rar 
下载次数:573  文件大小:10.38 KB 
下载权限: 不限 以上  [免费赚D豆]



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-23 22:52:45 | 显示全部楼层
yxpxa 发表于 2013-5-23 21:07
代码和界面,力求简洁,在实现主要功能和消除bug的前提下,用最少的控件和最短的代码。
为保持和 Odcl 的 ...

我看你的代码,就想给你简化下,你说的当然可以了,用READ,EVAL来实现。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-23 22:54:27 | 显示全部楼层
XDSoft 发表于 2013-5-23 22:52
我看你的代码,就想给你简化下,你说的当然可以了,用READ,EVAL来实现。

给你贴段代码,你参照下

[pcode=lisp,true]
(defun defunfunc ()
  (foreach x (list "SunCone" "zzEmluator" "Lmdsx" "ZZ3DNK")
    (eval (read (strcat "(defun c:" x "_OnClicked(/)(dcl_sendstring \"" x
                        "\n\"))"
                )
          )
    )
  )
  (setq tabfunc_cg (list "SUNLAYER" "SUNJZPICKSET" "setmark" "SUNCHGroup"
                         "SUNBHPickSet" "SUN_GROUPCHK" "SUNBHGROUP"
                         "SUNBHPREFIX" "SUNBHSORT" "SUNPickYC" "SUNPickRes"
                         "SUNYCRES" "SUNINVERSE" "SUNBATINVERSE"
                         "SUNDelAtLine"
                   )
        tabfunc_jm (list "SUN_ArchH" "SUN_ArchElev" "MODPOLYLEN")
        tabfunc_zk (list "SUNELEVZK" "SUNSelReP" "SUNSelSwap" "SUNDSXZKOFF"
                         "SUNDSXZKON" "SUNDSXZKMROW" "SUNDSXZKSort"
                         "SUNDSXZKMove" "SUNDSXZKAlign" "SUNDSXZKMI"
                         "SUNDSXTxtMi"
                   )
        tabfunc_tool (list "SUNMKFTDWG" "SUNCGMX" "SUNGJWK" "MODPOLYLEN"
                           "SUNGJTOP" "SUNTLCR" "SUNDrawOrderTop"
                           "SUNScaleFit" "SUN_ZK_MKGROUP"
                     )
        FuncList (list tabfunc_cg tabfunc_jm tabfunc_zk tabfunc_tool)
  )
  (foreach n FuncList
    (foreach x n
      (eval (read (strcat "(defun c:" x
                          "_OnClicked(/)(dcl_sendstring \"XDTB_" x "\n\"))"
                  )
            )
      )
    )
  )
)

[/pcode]

上面这些代码,就是我的ODCL里面的 按钮点击的时候,回调函数调用的代码,执行往命令行发字符串运行命令。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

 楼主| 发表于 2013-5-24 09:33:55 | 显示全部楼层
感谢!
非常强大的代码
我怎么把 eval 忘了。
程序已更新,版主有功夫测试一下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2688个

财富等级: 家财万贯

发表于 2013-5-24 10:28:31 | 显示全部楼层
考虑还不是很全面吧,建议把牢固版主的自动加载支持opendcl的库文件加进去
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

 楼主| 发表于 2013-5-25 04:46:48 | 显示全部楼层
本帖最后由 yxpxa 于 2013-5-25 04:49 编辑

第3次小更新了一下:
可以制作同名的幻灯,也可以不要幻灯,就是显示预览的时候模糊了点。
采用 grread 函数来显示多块插入功能
每个图块可自定义说明、程序设置均保存在当前图块路径的 txt 文本
图库路径可自定义修改

后面待修改实现的功能:
1 读取属性块数据并插入
2 多文件夹图块支持
3 插入的时候右键结束
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-5-25 08:56:47 | 显示全部楼层
图库管理程序 加载失败,文件 OpenDCL.16.arx 缺失 怎么回事?

点评

10下载吧  发表于 2013-5-25 16:53
哈,你用的是R16啊,这个需要 OpenDCL 的支持,你需要下载 OpenDCL.16.arx  发表于 2013-5-25 14:41
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 345个

财富等级: 日进斗金

发表于 2013-5-25 12:31:33 | 显示全部楼层
yxpxa 发表于 2013-5-25 04:46
第3次小更新了一下:
可以制作同名的幻灯,也可以不要幻灯,就是显示预览的时候模糊了点。
采用 grread 函 ...

建议这里列表换成文件夹目录——便于分类,点取即可读取文件夹内的图块。
QQ截图20130525123007.png

点评

已经调好了,现在有两个模式 如果当前路径下存在 dwg 文件,列表盒将显示 dwg 文件 如果当前路径下没有 dwg 文件,列表盒将显示下一层有 dwg 文件的文件夹名称  发表于 2013-5-25 17:04
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

 楼主| 发表于 2013-5-25 16:52:50 | 显示全部楼层
本帖最后由 yxpxa 于 2013-5-25 16:58 编辑

汗,在 OpenDCL 版块,还有人没有支持文件的。
以下给出 7.0.0.12 版的 OpenDCL.*.arx 支持文件 (配套的CAD版本均为32位)

AutoCAD R16 版本系列:  2004  2005  2006 下载
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:OpenDCL.16.arx.rar 
下载次数:94  文件大小:440.54 KB 
下载权限: 不限 以上  [免费赚D豆]



AutoCAD R17 版本系列: 2007  2008  2009 下载
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:OpenDCL.17.arx.rar 
下载次数:197  文件大小:472.84 KB 
下载权限: 不限 以上  [免费赚D豆]



用法:解压缩到相应 CAD 版本的支持路径下即可,程序将自动搜素并加载之。


楼上的要求就是多文件模式,加了几行代码,现在已经调好了。将在第4更发布,敬请期待。
现在有个问题2
如何判断一个 *.dwg 是块文件还是图纸文件?
图像控件都无差别的显示了,但是块插入的时候就会没反应。
另外读取块属性也不会,需要用到 vla 对象函数,谁能帮忙写个函数。


评分

参与人数 1D豆 +4 收起 理由
XDSoft + 4 有始有终奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-25 17:00:12 | 显示全部楼层
yxpxa 发表于 2013-5-25 16:52
汗,在 OpenDCL 版块,还有人没有支持文件的。
以下给出 7.0.0.12 版的 OpenDCL.*.arx 支持文件 (配套的CA ...

准备到第几更呢:P

点评

昨天半夜整的3更,大概就是半夜三更的意思 天亮了就不更了。^_^  发表于 2013-5-25 17:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-1 22:29:37 | 显示全部楼层
留个印,留着往后学习
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2221个

财富等级: 金玉满堂

发表于 2013-6-3 15:42:09 | 显示全部楼层
DEAR SIR, GREAT
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-8 17:15:24 | 显示全部楼层
安装后提示 OpenDCL.18.arx 缺失 怎么办

点评

你安装OPENDCL实时运行库了吗?  详情 回复 发表于 2013-6-8 19:49
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-6-8 19:49:20 | 显示全部楼层
yangist 发表于 2013-6-8 17:15
安装后提示 OpenDCL.18.arx 缺失 怎么办

你安装OPENDCL实时运行库了吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 21:46 , Processed in 0.242018 second(s), 67 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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