【lisp小挑战·分解属性块】
C大的LISP大挑战到第4季了他的挑战侧重于数学方面的考量
对论坛大多数人来说有点冷门
所以出个对日常工作有点实用价值的题目玩玩
R14开始的附赠程序包里
有个程序BURST用来炸开属性快的同时
保证块内属性值不变
这个程序有个问题
当选择了大量块的时候
或许是因为内存被占用太多
其执行速度会显著降低
比如选100个块耗时0.5秒
选1000个块耗时要100秒
选10000个块耗时要几个小时
本挑战的题目就是
改进该程序
使得
分解当前图纸内的所有块
包括嵌套块
不包括无名块和多重块
最后purge所有垃圾
附件1是测试用的dwg
内含6664个块
我自己的改进程序执行时间大约在4分钟
附件2是burst(原始版).lsp
这个程序的意义
现在的甲方都会要求提供电子版图纸
给他们原版的总是心里不爽
所以要处理一下下啦
本帖最后由 masterlong 于 2012-1-4 20:55 编辑
压缩包的密码是:
当前图纸飞速分解清除所有图块自动保存dwgold·plt·暂留·随时可删
执行命令qburst
onefilexx.lsp这个文件程序中指定需放在d:\下
首次运行前执行下(vl-mkdir "c:\\QGY_TEMP”)
另外这个程序的运行必须在单文档环境下
要改成多文档下运行要稍稍费事一点
正如顶楼所言
原程序速度变慢的原因可能是内存占用太多
这个程序主要的思路是
分解了一定块后保存再打开
再继续执行分解
然后再保存再打开再分解
直到全部分解完成
围绕这个思路这个程序还有一定的优化空间
摒弃这个思路要想达到或超过现有程序的效果
这就超出了我的能力了
楼主这个可以完善一下可以分解多重块吗?或者调用自定义的lisp命令 用自己的burst,测试楼主文件,用时三十几秒 包括嵌套块
不包括无名块和多重块
---- 想问你对 嵌套块 和 多重块 是如何界定的? 嵌套块是指块内有块
多重块是指DXF70/71不为0的块
不包括多重块的原意是指图中不存在这样的块
原题不够严谨补充说明一下
如果是挑战,为何不公布你改进的程序?是想借此机会参考其它人的思路吧? C大也忒太小看人了撒
这么说吧
你的挑战是考量数学
我的挑战是编程的思路
这个程序十年间我前后有过7、8次的重写
现在就公布源码
会把有心参与的人的思路给限制住的
这样吧
放上源码的加密RAR
等合适的时候公布密码好了
明经高手很多菜鸟也很多
我属于不高不菜的中鸟一只
所用的程序99%都是自己打造
编程只考虑自己的需要
也正因为如此
程序向来不够严谨
很少加上出错处理机制
小的BUG也懒于修正
所以向来羞于示人
不过在明经的358贴可以作证
我不是个敝帚自珍的人 都是高人啊,学习了! 不太赞同C大的话
编程思路有时很重要的
它和编程的水平或技巧无关
举个不太恰当的例子
一个人机交互的程序
是否能够记忆上次的输入
对使用者来说差别可是很大的
C大这又是何必呢
这里是技术论坛
但是多数都是业余爱好者
大家有兴趣的是
能对自己的工作有帮助的东西
所以太高深的东西曲高和寡那是自然的
太高深的东西
页:
[1]
2