找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1850|回复: 21

[求助] 批量绑定外部参照

[复制链接]
发表于 2021-3-14 11:51:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
各位大神,本人由于工作需要,想做一个可以批量绑定外部参照的小程序,如下,运行时不报错,但是不能实现绑定功能,请问是什么原因?希望各位大神不吝赐教,谢谢!
(arxload "acetutil.arx" nil)
(vl-load-com)
(defun c:plbd (/ OLDECHO APP DWGNAME2 path num dwgname OLDLSP doc ent)
  (setq OLDECHO (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setq path
         (strcat
           (vl-string-right-trim
                 "\\"
                 (strcase (acet-ui-pickdir
                            "选择目录"
                            (vl-string-right-trim "\\" (getvar "dwgprefix"))
                            "批量修改"
                            )
                          )
                 )
           "\\"
           )
        )
  (setq OLDLSP (getvar "ACADLSPASDOC"))
  (setvar "ACADLSPASDOC" 0)
  (setvar "BINDTYPE" 1)
  (setq dwgname (vl-directory-files path "*.dwg"))
  (setq num 0)
  (if (/= dwgname nil)
    (progn
      (setq APP (vlax-get-acad-object))
      (repeat (length dwgname)
        (setq DWGNAME2 (strcase (strcat path (nth num dwgname))))
        (setq doc (vla-open (vla-get-documents app) DWGNAME2))
       
        (command "-xref" "bind" "*")
        (command "ZOOM" "ALL")
       
        (vla-save doc)
        (vla-close doc :vlax-false)
        (setq num (1+ num))
        )
      (vlax-release-object doc)
      (vlax-release-object APP)
     )
    (prompt "\n所选目录中为有任何图形!!")
   )
  (setvar "ACADLSPASDOC" OLDLSP)
  (setvar "cmdecho" OLDECHO)
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 375个

财富等级: 日进斗金

发表于 2021-3-15 16:16:55 | 显示全部楼层
感谢楼主分享学习!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 375个

财富等级: 日进斗金

发表于 2021-3-15 16:22:20 | 显示全部楼层
如果你的参照中有被卸载或是未找到参照的情况,这种批量绑定一定会失败的。建议在绑定之前,需要判断所有外部参照的状态,若为卸载状态,应直接拆离,未找到参照文件那种,这就要好好研究了

点评

我加载后,是这个:no function definition: ACET-UI-PICKDIR。 是需要调用(arxload "acetutil.arx" nil)里的acetutil.arx吗,分享一个来,一起调试  详情 回复 发表于 2021-3-17 09:23
当外部参照的状态没有问题时,你是单独绑单个外部参照还是批量绑外部参照呀  详情 回复 发表于 2021-3-17 09:16
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 375个

财富等级: 日进斗金

发表于 2021-3-16 10:56:33 | 显示全部楼层
问问,处理结果怎样呢???
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-16 19:48:54 | 显示全部楼层
SHUNDocker 发表于 2021-3-16 10:56
问问,处理结果怎样呢???

图纸外部参照设置没问题,每张图纸单独绑定都没问题,我自己怀疑是中间command那两句在程序在运行的时候没执行,应该是我调用的方式有问题,还不清楚怎么解决。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2021-3-17 08:01:40 | 显示全部楼层
可以可以正合我意
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 914个

财富等级: 财运亨通

发表于 2021-3-17 08:17:32 | 显示全部楼层
做一个有用的人
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 375个

财富等级: 日进斗金

发表于 2021-3-17 09:16:01 | 显示全部楼层
SHUNDocker 发表于 2021-3-15 16:22
如果你的参照中有被卸载或是未找到参照的情况,这种批量绑定一定会失败的。建议在绑定之前,需要判断所有外 ...

当外部参照的状态没有问题时,你是单独绑单个外部参照还是批量绑外部参照呀
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 375个

财富等级: 日进斗金

发表于 2021-3-17 09:23:47 | 显示全部楼层
SHUNDocker 发表于 2021-3-15 16:22
如果你的参照中有被卸载或是未找到参照的情况,这种批量绑定一定会失败的。建议在绑定之前,需要判断所有外 ...

我加载后,是这个:no function definition: ACET-UI-PICKDIR。
是需要调用(arxload "acetutil.arx" nil)里的acetutil.arx吗,分享一个来,一起调试
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-17 20:13:10 | 显示全部楼层
SHUNDocker 发表于 2021-3-17 09:23
我加载后,是这个:no function definition: ACET-UI-PICKDIR。
是需要调用(arxload "acetutil.arx" nil ...

你用的是多少的cad?我用2020本身就带啊

点评

用的cad2012版,很老了  详情 回复 发表于 2021-3-18 09:27
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 375个

财富等级: 日进斗金

发表于 2021-3-18 09:27:30 | 显示全部楼层
IronLord 发表于 2021-3-17 20:13
你用的是多少的cad?我用2020本身就带啊

用的cad2012版,很老了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2021-3-18 10:26:24 | 显示全部楼层
http://bbs.xdcad.net/thread-714057-1-2.html

你的代码可以参考这个帖,把核心代码替换下试试
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2021-3-18 10:33:44 | 显示全部楼层
有用有用号
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2021-3-18 11:58:56 | 显示全部楼层
CAD的文件命令下有一个电子传递的命令--选择文件表图签--点添加文件选择你需要批量绑定的文件--选好之后双击右侧传递设置中默认的STANDARD进入如下命令框--按需要选择设置,这里可以根据需要将参照文件和被参文件按照相对路径放置到你需要的目录下,或者勾选右侧的绑定外部参照,选择绑定,再在路径选项下选择将所有文件放入一个文件夹中。按确定返回上级菜单再次确定即可导出参照文件和被参文件或者导出绑定好的CAD文件用于传递。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

发表于 2021-3-18 19:49:27 | 显示全部楼层
报错的原因应该是新开了一个DWG文档,LISP代码是不能跨文档运行的

  1. (setq doc (vla-open (vla-get-documents app) DWGNAME2))

执行时,原文档程序发生中断,打开一个新文档,此时ActiveDocument是新文档,新文档打开完毕后,原文档自动获得Focus,后续代码在原文档中继续执行。

最近也在研究这个问题,可以用
  1. (vla-sendCommand doc "xref ")
复制代码

向新打开的文档发送要执行的程序,但是并没有完全解决。在CAD2010上多文档可以连续执行,但是在CAD2014上,向新文档发送完命令后需要手动ctrl+tab切换文档才可以连续执行,猜测是某个系统变量影响的,哪位有思路告知一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-22 22:40 , Processed in 0.221834 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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