明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: wudechao

[源码] 把参照绝对路径改为相对路径

    [复制链接]
发表于 2014-6-3 22:57 | 显示全部楼层
绝对路径改相对路径,这个功能很好,哪位高手能完善程序,搞一个最终版本
发表于 2014-6-6 12:16 | 显示全部楼层
wudechao 发表于 2014-6-3 18:12
你这段代码好象不能修改参照路径更改后的图,比如:原来被参照的文件放在文件根目录下,现在改为子目录下.

我的图都在文件根目录下,看起来方便
发表于 2014-6-16 10:59 | 显示全部楼层
楼主 你这个代码64位的cad2014用不了啊
发表于 2014-7-23 11:35 | 显示全部楼层
怎么08也不能用!!!!!
发表于 2015-2-10 15:11 | 显示全部楼层
命令: (LOAD "C:/Users/Administrator/Desktop/xl/参照.lsp") ; 错误: 输入的列表有缺陷
发表于 2015-9-5 13:18 | 显示全部楼层
对于嵌套参照无效
发表于 2015-9-30 11:33 | 显示全部楼层
本帖最后由 mj0000 于 2015-9-30 11:35 编辑
wudechao 发表于 2014-6-3 18:12
你这段代码好象不能修改参照路径更改后的图,比如:原来被参照的文件放在文件根目录下,现在改为子目录下.

改了下代码,支持子目录
  1. ;;;;参照图块路径改为“相对路径” 且 自动重载XREF ---- 支持子目录
  2. (defun C:Tools-BLK-XrefPathAutoLoad (/ ssg xpath i obj enl elist blkdef path n Sub_Path)
  3.   (setq ssg (ssget "x" '((0 . "insert"))))
  4.   (setq XPath (getvar "dwgprefix")) ;_取得当前文档路径
  5.   (setq i 0)
  6.   (setq n 0)
  7.   (if ssg
  8.     (repeat (sslength ssg)
  9.       (setq obj (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (cdr (assoc 2 (setq enl (entget (ssname ssg i)))))))
  10.       (if (= (vla-get-isxref obj) :vlax-true) ;_判断给定的图块是否为XRef图块
  11.         (progn
  12.           ;;(vla-put-path obj (strcat xpath (vla-get-name obj) ".dwg"));_参照图块路径改为“绝对路径
  13.           (setq elist (entget (tblobjname "block" (cdr (assoc 2 enl))))) ;_获取参照图块的图元表
  14.           (setq blkdef (vlax-ename->vla-object (cdr (assoc 330 elist))))
  15.           (setq path (vla-get-path blkdef)) ;_取得外部参照的路径
  16.           (setq m (vl-string-mismatch XPath path 0 0 t)) ;_前面有多少个相同的字符
  17.          (setq Sub_Path (substr path (1+ m))) ;获取图块参照路径的子串
  18.           (vla-put-path blkdef (strcat ".\" Sub_Path)) ;_参照图块路径改为“相对路径”
  19.           (setq n (1+ n))
  20.         )
  21.       )
  22.       (setq i (1+ i))
  23.     )
  24.   )
  25.   (if (> n 0)
  26.     (progn
  27.       (command "_xref" "r" "*")
  28.       (prompt (strcat "\n总共有 " " (itoa n) " "个参照物体路径改为相对路径."))
  29.     )
  30.     (princ "\n**** 没有外部参照 或 外部参照没有加载 ****")
  31.   )
  32.   (princ)
  33. )
发表于 2015-9-30 11:34 | 显示全部楼层
风流少年时 发表于 2015-9-5 13:18
对于嵌套参照无效

嵌套的得去嵌套文件修改
发表于 2015-10-23 11:09 | 显示全部楼层
flytoday 发表于 2014-5-23 18:41
最讨厌设计院的图插入参照啦………你说没事搞布局与参照干嘛………烦不烦啊…………给别人电子档时候参照没 ...

看兄台这么回复应该不是设计院的,所以不知道一线设计人员的痛苦,真正做了才知道你这么说是多麽的搞笑和无知!
 楼主| 发表于 2015-11-13 12:46 | 显示全部楼层
clinber 发表于 2014-6-16 10:59
楼主 你这个代码64位的cad2014用不了啊

不好意思,ffg-getfolder函数复制少了一段代码.现在可以用了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 10:28 , Processed in 0.194653 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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