明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 19560|回复: 108

[讨论] 组装自己的DCL菜单,欢迎大家一起来练习

    [复制链接]
发表于 2014-10-20 22:44 | 显示全部楼层 |阅读模式
首先,论坛里面很多高手已经写出dcl菜单。
http://bbs.mjtd.com/thread-109056-1-1.html
http://bbs.mjtd.com/thread-109086-1-1.html
http://bbs.mjtd.com/thread-84942-1-1.html
还有很多很多,不一一列举了。

到这里,个人觉得这些面板菜单都还不够完美,没办法自动生成及更新。

下面,咱们来讨论下如何利用lisp生成DCL面板菜单所需要的menu列表文件,以便生成和更新。
个人思路:
1.读取文件夹及lsp文件列表
2.分别读取lsp文件中"(defun c:"后面到"("中间的字符,算作是命令
3.分别连接起文件名及命令。最终形成"文件名称+命令"的格式,如:"坐标标注.lsp,zbbz"
4.保存到一个txt文件中,让高手们写的DCL面板菜单来调用。

~放个未完成的例子,
  1. ;; 将此文件拖入ACAD绘图区,生成工具箱菜单要用的命令列表
  2. ;菜单列表写入文本文件,一行一个
  3. (defun write-lst2txt (lst ff)
  4.   (setq file (open ff "w"))
  5.   (foreach str lst (write-line str file))
  6.   (close file)
  7. )
  8. ;读取lsp文件内的命令,链接到文件名上
  9. ;最终形成"文件名称+命令"的格式,如:"坐标标注.lsp,zbbz"
  10. ;未完成
  11. (defun read-c: (ff)
  12.   (setq file (open ff "r"))
  13.   
  14. )
  15. ;====开始===
  16. (vl-load-com)
  17. (princ "\n")
  18. (setq path (getvar "lastprompt"))
  19. (if (wcmatch (strcase path) "*(LOAD "*")
  20.   (setq  str  (vl-string-search "(LOAD "" path)
  21.         path (substr path
  22.          (+ str 8)
  23.          (- (vl-string-search "")" path) str 7)
  24.        )
  25.   )
  26. );获取路径
  27. (setq path (strcase (vl-filename-directory path) t))
  28. (setq lst1 (vl-directory-files path "*.lsp"));获取文件列表
  29. (setq lst2 (cddr(vl-directory-files path nil -1)));获取目录列表,排除掉"." ".." 这两项
  30. (setq lstn '() lstnx '())
  31. (foreach n lst2
  32. (setq lstn (vl-directory-files (strcat path "/" n) "*.lsp")
  33.        lstn (mapcar '(lambda(x)(strcat n "-" x))lstn)
  34.        lstnx (cons lstn lstnx)
  35.        )  
  36. )
  37. (setq lst3 '())
  38. (foreach a lstnx (setq lst3 (append a lst3)))
  39. (setq lst3 (append lst1 lst3))
  40. (setq ff (strcat (vl-string-translate "/" "\" path) "\\menu.txt"));菜单保存文件名
  41. (write-lst2txt lst3 ff);写入
"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

发表于 2016-10-26 13:00 | 显示全部楼层
非常好的程序,谢谢楼主分享啊 。
发表于 2016-10-25 14:36 | 显示全部楼层
学习学习------->
发表于 2023-2-25 16:12 | 显示全部楼层
好东西 !学习了!
 楼主| 发表于 2014-10-20 22:51 | 显示全部楼层
本帖最后由 77077 于 2014-10-20 23:04 编辑

占楼,以备后用~~~

例如,我的目录是
  1. E:.
  2. │  menu.txt
  3. │  将此文件拖入ACAD绘图区更新菜单.LSP
  4. │  无标题2.lsp

  5. ├─1
  6. │      1.lsp
  7. │      2.lsp
  8. │      3.lsp

  9. ├─2
  10. │      1.lsp
  11. │      2.lsp
  12. │      3.lsp

  13. ├─3
  14. │      1.lsp
  15. │      2.lsp
  16. │      3.lsp

  17. └─4
  18.         1.lsp
  19.         2.lsp
  20.         3.lsp
复制代码
生成的是

  1. 将此文件拖入ACAD绘图区更新菜单.LSP
  2. 无标题2.lsp
  3. 1/1.lsp
  4. 1/2.lsp
  5. 1/3.lsp
  6. 2/1.lsp
  7. 2/2.lsp
  8. 2/3.lsp
  9. 3/1.lsp
  10. 3/2.lsp
  11. 3/3.lsp
  12. 4/1.lsp
  13. 4/2.lsp
  14. 4/3.lsp
复制代码
发表于 2014-10-21 09:08 | 显示全部楼层
学习了。。。好东西。。
发表于 2014-10-21 10:07 | 显示全部楼层
适合自己就好!!!!!
发表于 2014-10-25 16:20 | 显示全部楼层
一直在关注楼主的东东!
发表于 2014-10-25 18:03 | 显示全部楼层
帮楼主顶贴了
发表于 2014-10-25 19:43 | 显示全部楼层
有点高深看不懂啊
发表于 2014-10-25 20:34 | 显示全部楼层
什么东西那么神秘,需要回复才能看到
发表于 2014-10-25 21:13 | 显示全部楼层
学习学习
发表于 2014-10-25 21:21 | 显示全部楼层
看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-25 20:46 , Processed in 0.327681 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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