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.”。没办法运行下去了。求解
页: 1 2 [3] 4
查看完整版本: 文件夹批量处理·pldir(测试版)