明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3493|回复: 9

lisp调用command命令太多,导致系统内存耗尽

[复制链接]
发表于 2003-10-15 09:54:00 | 显示全部楼层 |阅读模式
我编了个lisp程序,是三维实体布局优化的,因为功能的要求,必须要靠调用AutoCAD命令来实现。

昨晚,让计算机算了一晚上,早上来看,出现“系统虚拟内存严重不足”的警告,查看任务管理器,发现“物理内存可用数”只有1024K了,我的机器是256M内存的,Autocad还可以运行,但无法退出了,任务管理器里看是“无响应”。

检查了程序,发现command命令运行了多次,如下:
(command "_.ucs"...)           324,000次
(command "_.insert" ...)         32,400次
(command "_.explode"...)       32,400次
(command "_.interfere"...)      32,400次

目前的程序只是一个模块,如果是整个程序运行起来,计算量还要增加上万倍,那系统不是要垮了?

高手们有什么好建议吗?
 楼主| 发表于 2003-10-15 21:45:00 | 显示全部楼层
今天做了一天的试验,分别把不同的command命令各运行了几万次,看它们消耗内存的情况,结果发现,ucs、interfere命令消耗内存很小,运行上万次只消耗十几M,可以接受,但insert每次运行都消耗大约500K,运行次数多了就受不了了。

这个程序是三维实体布局优化的,多个实体要以不同的角度摆放在不同的地方,就是要找到一个摆法,使一个评价函数最优,而且各个实体不能相互干涉。我用的方法是每次优化先用ucs命令使坐标移动、旋转到指定位置、角度,insert块,将块explode成实体,用interfere检测干涉,再进行评价计算,最后删除实体,进行下一次优化。优化完成后,要求实体不出现在图形中。

程序中,每次insert的块,explode后生成的实体都删除了,而且块参照也用purge清理了,Autocad还消耗那么多的内存,不知道是什么原因?

各位高手,有什么看法吗?
 楼主| 发表于 2003-10-16 09:29:00 | 显示全部楼层
大虾们,看看是怎么回事啊,给我提供点解决的思路也行啊。
发表于 2003-10-18 20:19:00 | 显示全部楼层
可怜啊,为什么要用那么多的COMMAND的呵呵,少用点啊,用别的函数代啊~
发表于 2003-10-20 03:42:00 | 显示全部楼层
如果实体不是很复杂,可不可以使用一些简单的实体来代替,不使用插入,也不炸开,

(定义实体名)
(while (not (and 评价函数最优 检测干涉通过))
         (移动、旋转)
)
 楼主| 发表于 2003-10-22 19:54:00 | 显示全部楼层
我也不想用那么多command命令,可lisp没有相应的函数,只能调用Autocad的命令。
我现在已经将程序做了大改,不用那么多的insert命令了,只insert一次,以后都用rotate3d和move。
检测干涉的语句是:
    (command "interfere" t1 "" t2 "" "y" "n")
t1、t2是参与检测的两组实体选择集,"y"表示生成干涉实体。检查是否有干涉实体产生,就能知道是否发生了干涉,然后删除这些干涉实体。
这样做,我觉得没什么问题,可Autocad还是在不停地消耗内存,直到内存耗尽,难道是Autocad的bug?
发表于 2003-10-22 20:09:00 | 显示全部楼层
在中间加上(GC)看看
 楼主| 发表于 2003-10-25 10:10:00 | 显示全部楼层
请问(GC)是什么命令?
发表于 2003-10-25 10:28:00 | 显示全部楼层
强制收集无用数据,释放不再使用的节点函数
 楼主| 发表于 2003-10-26 17:52:00 | 显示全部楼层
唉,还是不行啊,内存一直在不停地消耗,直到出现“虚拟内存严重不足”的警告,然后Autocad被关闭。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-2 14:29 , Processed in 0.180078 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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