明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: shalei021647

批量将一个文件夹内的所有dwg文件的图框左下角设为原点

  [复制链接]
 楼主| 发表于 2011-11-16 19:44:50 | 显示全部楼层
刚到屋,经测试,还是不行啊,每张图的左角点都是(75,85)左右。我觉得是不是与这个批量处理的软件有关系啊,因为我在单张图里面用你写的这个代码,确实能到原点。而批处理起来就不行了。郁闷
 楼主| 发表于 2011-11-16 19:53:09 | 显示全部楼层
本帖最后由 shalei021647 于 2011-11-16 20:26 编辑
xiaxiang 发表于 2011-11-16 11:24
经非严谨测试,如下代码似乎可行。请再测试

我现在改成这样的代码了:

  1. (setvar "cmdecho" 0);;暂时在命令函数运行时关闭回显提示和输入
  2. (command "ucs" "w");;把当前坐标系设为世界
  3. (setq dimscaley (getvar"dimscale") dimlfacy (getvar"dimlfac"));;获取原图当前使用的标注样式的全局比例因子和测量单位比例因子
  4. (setvar "dimscale" 1);;把当前标注样式的全局比例改为1
  5. (setvar "dimlfac" 1);;把当前标注样式的测量单位比例因子改为1
  6. (command "-purge" "a" "" "n")
  7. (command "zoom" "e")
  8. (command "base" (list (car (getvar"extmin")) (cadr (getvar "extmin")) 0.0000))
  9. (command "move" "all" "" (list (car (getvar"extmin")) (cadr (getvar "extmin")) 0.0000) (list 0.0000 0.0000 0.0000))
  10. (setvar "dimscale" dimscaley);;恢复原标注样式的全局比例
  11. (setvar "dimlfac" dimlfacy);;恢复原标注样式的测量单位比例因子
  12. (command "zoom" "e")
  13. (setvar "cmdecho" 1)






可是还是不太行,主要就是这两张图纸(我上面传的压缩包里面第二张和第三张),也就是这两个图,。在用上面的代码批处理的时候,除了这两张图都能成功的将左角点移到原点。而这两张,无论是我单独打开这两个文件用命令处理,还是批处理,都不能将左角点归到原点去。图框外面也没有啥东西啊,郁闷的很。

又经过半天的测试,突然发现,这两个图纸我先把里面的所有的图移动一下位置,然后,再用命令就能把左角点移动到原点了,费解啊

刚才又发现,这个先移动的位置必须是从原点方向往正x和正y方向移动后,再用命令才好使。真的很费解,难道是图形界限的问题?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2011-11-17 00:38:04 | 显示全部楼层
shalei021647 发表于 2011-11-16 19:53
我现在改成这样的代码了:

试一下我的程序

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

非常好用的程序!!!代码贴上更精彩!  发表于 2011-11-18 15:48
 楼主| 发表于 2011-11-17 01:13:24 | 显示全部楼层
本帖最后由 shalei021647 于 2011-11-17 01:25 编辑
xiaxiang 发表于 2011-11-16 11:24
经非严谨测试,如下代码似乎可行。请再测试

今天终于把问题解决了,代码如下:

  1. (setvar "cmdecho" 0);;暂时在命令函数运行时关闭回显提示和输入
复制代码
我估计是坐标系变换的问题。晕死了。经测试用这个代码再加上那个批处理程序,可以批量成功的把左下角点移动当前坐标系的零点了。唉。痛苦啊。
把附件上传上来供大家分享,由于不懂lisp,七拼八拼的,可能代码有些臃肿,望见谅。另外非常感谢夏香大侠的热心帮助。
这个附件要配合那个cad批打程序使用,最好是1.2版的,1.0版的俺没有测试。

这个是在单独dwg文件中使用的,加载后,命令为move00 如果单独使用也没有啥意思,主要是用来测试效果用的。
最好总结一下,似乎那个cad批打程序使用的时候,cad一定不要是打开状态,如果是打开状态,批处理完了的话,肯定会出错。就是达不到想要的效果,我也不明白是咋回事,如果cad是在关闭状态下启动这个批打软件的话,就没问题。





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2011-11-17 01:29:58 | 显示全部楼层
xianaihua 发表于 2011-11-17 00:38
试一下我的程序

多谢帮助,第一次测试,只把左下角点移动到了X轴上,也就是说y是零,但x不是零,第二次测试,cad出现错误提示。卡死了,最后只能强行关闭。
发表于 2011-11-17 07:32:59 | 显示全部楼层
本帖最后由 xianaihua 于 2011-11-17 07:52 编辑
shalei021647 发表于 2011-11-17 01:29
多谢帮助,第一次测试,只把左下角点移动到了X轴上,也就是说y是零,但x不是零,第二次测试,cad出现错误 ...


?,我在我的机子上用没问题!
注意:因为在程序使用了ObjectDBX,也就是说,在不打开图的情况下,处理你的图纸,所以,你在使用的时候,必须将所有要处理的图纸关闭,否则会出错。

还有,如果你的图形中,图框的四个边线没有将图形中所有对象包含,在移动中会出现移动位置不合适。因为本程序是通过判断图形中所有对象的最大边界框来确定图框左下角坐标的,如果在图框的左边、下面,含有任何实体对象,就会导致取得的最大边框坐标出错。
发表于 2011-11-17 08:47:10 | 显示全部楼层
恭喜!能解决问题就好!这个确实很头疼,我研究了两天,一张图纸都没画!所以你得给我加100分作为补偿
 楼主| 发表于 2011-11-17 09:37:41 | 显示全部楼层
xianaihua 发表于 2011-11-17 07:32
?,我在我的机子上用没问题!
注意:因为在程序使用了ObjectDBX,也就是说,在不打开图的情况下,处理 ...

兄台能否帮忙测试一下我上传的图纸,因为我一个图中有三个图框在一排,边框最底边是在一水平线上。
 楼主| 发表于 2011-11-17 09:38:26 | 显示全部楼层
xiaxiang 发表于 2011-11-17 08:47
恭喜!能解决问题就好!这个确实很头疼,我研究了两天,一张图纸都没画!所以你得给我加100分作为补偿[em14 ...

呵呵,非常感谢,我也是近两天两夜没干别的事了,现在眼睛都是红通通的
发表于 2011-11-17 17:05:07 | 显示全部楼层
用vba打开文件,调用lisp程序运行,vba关闭文件
vba批量处理文件比较简单,两者结合


lisp好像是在打开文件后才加载程序,文件关闭后程序就结束了,下一个文件就没法自动处理了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 17:36 , Processed in 0.180003 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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