明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: masterlong

[源码] 文件夹批量处理·pldir(测试版)

[复制链接]
 楼主| 发表于 2014-6-4 16:42 | 显示全部楼层
尝试一下解决添加文件夹无反应的问题
请运行不成功又懂编程的同学协助一下


(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总是能返回一个字符串


以上是在我的电脑里的测试过程
请运行不成功的同学
按我上述的过程走一遍并报告下结果
看看到底是哪里不一样

发表于 2014-6-15 21:48 | 显示全部楼层
楼主这个写的不错,建议增加批量替换函数名称,变量名称功能
发表于 2014-6-18 20:51 | 显示全部楼层
06CAD运行不行,还请楼主明查,顶楼主!
发表于 2014-6-20 15:00 | 显示全部楼层
谢谢楼主啊..
发表于 2014-10-24 23:08 来自手机 | 显示全部楼层
自动执行的lsp能分享下吗?
发表于 2015-9-6 22:29 来自手机 | 显示全部楼层
D C L做得很好,楼主很厉害
发表于 2015-9-20 13:04 | 显示全部楼层
不行Error: no function definition: MPRIN1
 楼主| 发表于 2015-10-10 12:01 | 显示全部楼层
(defun mprin1( biao )
        (foreach x biao
                (princ "\n")
                (prin1 x)
        )
(princ)
)

程序调试过程中查看数据用的
源代码里直接屏蔽掉相关语句也可以
发表于 2015-12-14 17:12 | 显示全部楼层
添加单个文件,文件列表中不显示,,
添加路径按钮无效
发表于 2016-4-27 11:54 | 显示全部楼层
楼主,我用cad2006进行操作,已经添加了doslib文件,运行程序,可以出现面板,不过点击“添加路径”却显示“DOSLib error: path argument expected.”。没办法运行下去了。求解
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-22 09:12 , Processed in 0.220551 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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