masterlong
发表于 2014-6-4 16:42:34
尝试一下解决添加文件夹无反应的问题
请运行不成功又懂编程的同学协助一下
(defun addpath( / lastpath thispath )
(if (null (setq lastpath (getcfg "AppData/路径指引/上次批处理选择路径"))) ;;公用设置,若此句删除,每次自动定位“我的文档”
(setq lastpath "")
)
(setq thispath (dos_getdir "指定文件夹" lastpath "选择要批量操作的文件夹" Nil))
(if thispath
(if (assoc thispath alldwg)
(if (= 6 (dos_msgbox "已添加此路径。\n\n是否重新搜索?" "提示" 4 3))
(progn
(setcfg "AppData/路径指引/上次批处理选择路径" thispath)
(addpath_main thispath)
)
)
(progn
(setcfg "AppData/路径指引/上次批处理选择路径" thispath)
(addpath_main thispath)
)
)
(mode_tile "cancel" 2)
)
(princ)
)
程序的意图很简单
给lastpath设置一个路径或空的字符串
在调用“选择文件夹”窗口的时侯
自动定位于lastpath指向的文件夹
如果lastpath为空字符串
自动定位于“我的文档”
选择一个有效文件夹后执行相应操作
根据革天明的说法
问题出现在红色代码这里
用最笨的办法测试一遍
在命令行中执行下面8行代码
(dos_getdir "指定文件夹" "d:\\111" "选择要批量操作的文件夹" Nil)
(dos_getdir "指定文件夹" "d:\\111\\" "选择要批量操作的文件夹" Nil)
(dos_getdir "指定文件夹" "d:\\222" "选择要批量操作的文件夹" Nil)
(dos_getdir "指定文件夹" "d:\\222\\" "选择要批量操作的文件夹" Nil)
(dos_getdir "指定文件夹" "" "选择要批量操作的文件夹" Nil)
(dos_getdir "指定文件夹" "乱填" "选择要批量操作的文件夹" Nil)
(dos_getdir "指定文件夹" nil "选择要批量操作的文件夹" Nil)
(dos_getdir "指定文件夹" 123 "选择要批量操作的文件夹" Nil)
其中d:\111存在d:\222不存在
第1、2行代码都指向了d:\111
第3~6行代码都指向了“我的文档”
第7、8行代码报参数错误
由上可见只要lastpath为字符串
程序都能正常动作
即使lastpath参数类型错误
程序也不是“没有反应”
也就是程序确实卡在了红色代码这里
关闭CAD后删除CAD下的acad2004.cfg文件
再打开CAD时自动创建acad2004.cfg
所以也可以排除CFG文件不存在导致的BUG
执行代码(getcfg "AppData/不存在/不存在的配置")
结果为nil
执行代码
(setcfg "AppData/存在/存在的配置" "为啥捏")
(getcfg "AppData/存在/不存在的配置")
结果为""
结合红色代码的其它部分
lastpath总是能返回一个字符串
以上是在我的电脑里的测试过程
请运行不成功的同学
按我上述的过程走一遍并报告下结果
看看到底是哪里不一样
我爱lisp
发表于 2014-6-15 21:48:46
楼主这个写的不错,建议增加批量替换函数名称,变量名称功能
一张单程票
发表于 2014-6-18 20:51:33
06CAD运行不行,还请楼主明查,顶楼主!
xujinhua
发表于 2014-6-20 15:00:40
谢谢楼主啊..
hooboxu
发表于 2014-10-24 23:08:46
自动执行的lsp能分享下吗?
caogis
发表于 2015-9-6 22:29:32
D C L做得很好,楼主很厉害
kfboy
发表于 2015-9-20 13:04:37
不行Error: no function definition: MPRIN1
masterlong
发表于 2015-10-10 12:01:22
(defun mprin1( biao )
(foreach x biao
(princ "\n")
(prin1 x)
)
(princ)
)
程序调试过程中查看数据用的
源代码里直接屏蔽掉相关语句也可以
wkq004
发表于 2015-12-14 17:12:05
添加单个文件,文件列表中不显示,,
添加路径按钮无效
峰云于雾
发表于 2016-4-27 11:54:30
楼主,我用cad2006进行操作,已经添加了doslib文件,运行程序,可以出现面板,不过点击“添加路径”却显示“DOSLib error: path argument expected.”。没办法运行下去了。求解