本帖最后由 shalei021647 于 2011-12-8 21:29 编辑
楼主,你说的图框大小不一样,是指每个图框的长与宽之比不一样吗,如果楼主所有图框各自的长宽之比一样的话,并且图框外面没有其他的图形的话。有一个方法可以实现哦。就是在用(command "Erase" "all" "r" "c" pt1 pt3 "")这个命令前,先把所有的图框进行一个放大或是缩小,也就是你先制定一个标准图框的大小来确定坐标。如果你的图框外面没有其他的图形,可以用如下的命令把图框的左下角点定为原点
-
- (setvar "cmdecho" 0);;暂时在命令函数运行时关闭回显提示和输入
- (command "-layer" "u" "*" "");;解锁所有图层
- (command "-layer" "on" "*" "");;打开所有图层
- (command "-layer" "t" "*" "");;解冻所有图层
- (command "-purge" "a" "" "n");;purg清理无用项目
- (command "zoom" "e")
- (command "ucs" "w")
- (command "move" "all" "" (getvar"extmin") '(0 0 0))
- (command "zoom" "e")
- (command "ucs" "o" (getvar"extmin"))
- (setvar "cmdecho" 1)
然后再对其进行放大或是缩小,因为可以提取到图框的左下角点与右上角点,那么这两个角点X坐标之差就是某个图框的实际长度,用这个长度除以你所制定的标准图框的长度,得到一个比例,然后再全选这个图形,以左下角点为基点,按这个比例进行放大或是缩小,这样的话,你不同的图框就达到了相同的大小了。然后再用(command "Erase" "all" "r" "c" pt1 pt3 "")这个命令去删除图框吧,因为大小相同了,并且都是图框左下角点为原点,所以基本上,pt1与pt3这两个点就是固定的值了,删除图框后,再以原点为基点,全选所有图形,按之前的那个比例的倒数进行放大或是缩小,这样就又恢复到他原来的大小了。
当然这只是在一个图形中这么做,如果你按这个思路写出了所有的命令,那么你再下载一个cad批量处理工具,论坛里面有,那就可以实现对多个图形进行此lisp命令的操作了。呵呵,我也是刚接触lisp,如果楼主需要的话,可以加QQ14583477,帮你研究一下。理论上来说,如果你的所有图形的长宽之比是一样的,并且图框外面没有图形的话,是能够批量实现的。
|