尘缘一生 发表于 2019-5-20 14:33:28

点取图中参照,如何直接打开?

如题:


      图纸用了参照,如果点取,或选取它,直接把原图打开,继续编辑修改?

mikewolf2k 发表于 2019-5-20 14:50:03

可以添加事件,比如双击啥的。如果点击或者选择就打开的话,那么无意中选中了,那么就慢慢等着ACAD去打开这个文件吧。

自贡黄明儒 发表于 2019-5-20 16:24:15

添加超级链接即可

1291500406 发表于 2019-5-20 22:13:15

本帖最后由 1291500406 于 2019-5-21 09:02 编辑

;;;参照文件路径path值
(vla-get-path(vlax-ename->vla-object (cdr (assoc 330(entget (tblobjname "block" (cdr (assoc 2 (entget(car(entsel "\n点取返回参照文件路径:")))))))))))
相对路径改为电脑的绝对路径再用(command "_open")打开文件即可

;;;提供参考程序
(defun C:bb
(/ ssg xpath i obj enl elist blkdef path n Sub_Path)
(setq ssg (ssget "x" '((0 . "insert"))))
(setq XPath (getvar "dwgprefix")) ;_取得当前文档路径
(setq i 0)(setq n 0)
(if ssg(repeat (sslength ssg)(setq obj(vla-item (vla-get-blocks(vla-get-activedocument
(vlax-get-acad-object)))(cdr (assoc 2 (setq enl (entget (ssname ssg i)))))))
(if (= (vla-get-isxref obj) :vlax-true) ;_判断给定的图块是否为XRef图块
(progn ;;(vla-put-path obj (strcat xpath (vla-get-name obj) ".dwg"));_参照图块路径改为“绝对路径
(setq elist (entget (tblobjname "block" (cdr (assoc 2 enl))))) ;_获取参照图块的图元表
(setq blkdef (vlax-ename->vla-object (cdr (assoc 330 elist))))
(setq path (vla-get-path blkdef)) ;_取得外部参照的路径
(setq m (vl-string-mismatch XPath path 0 0 t)) ;_前面有多少个相同的字符
(setq Sub_Path (substr path (1+ m)));获取图块参照路径的子串
(vla-put-path blkdef (strcat ".\\" Sub_Path)) ;_参照图块路径改为“相对路径”
(setq n (1+ n))))(setq i (1+ i))))
(if (> n 0)(progn (command "_xref" "r" "*")
(prompt (strcat "\n总共有 \" "(itoa n) " \"个参照物体路径改为相对路径.")))
(princ "\n**** 没有外部参照 或 外部参照没有加载 ****"))(princ))


(command "-XREF" "b"(cdr (assoc 2 (entget(car(entsel "\n选择参照块:"))))) "");;绑定
(command "-XREF" "d"(cdr (assoc 2 (entget(car(entsel "\n选择参照块:"))))) "");;拆离
(command "-XREF" "p"(cdr (assoc 2 (entget(car(entsel "\n选择参照块:"))))) );;路径
(command "-XREF" "u"(cdr (assoc 2 (entget(car(entsel "\n选择参照块:"))))) "");;卸载
(command "-XREF" "r"(cdr (assoc 2 (entget(car(entsel "\n选择参照块:"))))) "")   ;;重载
(command "-XREF" "o"(cdr (assoc 2 (entget(car(entsel "\n选择参照块:"))))) "")   ;;覆盖
(command "-XREF" "a"(cdr (assoc 2 (entget(car(entsel "\n选择参照块:"))))) "")   ;;附着



提供相关参照资料
vla-attachexternalreference 贴附外部参照到图形
vla-bind将外部参照并入到图形
vla-detach 从图形拆离外部参照
vla-getconstantattributes 取得图块或外部参照中的固定属性
vla-purgeall 从文件中删除未使用的命名参照,如未使用的图块或图层
vla-reload 重新载入外部参照
vla-setprojectfilepath 设定AUTOCAD寻找外部参照文件的目录
vla-unload 卸载菜单组或外部参照
vla-get-invisible 取得属性,是否参照属性
vla-get-path 取得文件、应用程序或外部参照的路径
vla-put-invisible 设定属性或属性参照是否可见或不可见
;;;只能帮你这么多了



尘缘一生 发表于 2019-5-21 11:51:52

;;;点击打开参照文件,路径path值
(defun C:SL-COP (/ czpath)
        (setq czpath (vla-get-path(vlax-ename->vla-object (cdr (assoc 330(entget (tblobjname "block" (cdr (assoc 2 (entget(car(entsel "\n点取返回参照文件路径:"))))))))))))
        (setq czpath (substr czpath 3))
        (setq czpath (strcat (getvar "DWGPREFIX") czpath ));;;获取当前加载文件的路径 ,构造参照路径字符串
        (vla-open (vla-get-documents (vlax-get-acad-object)) czpath)
)

林霄云 发表于 2019-5-23 09:45:39

直接用xopen即可

1993063 发表于 2019-5-25 14:23:18

直接通过命令TO修改双击事件,把里面的refedit改成xopen
页: [1]
查看完整版本: 点取图中参照,如何直接打开?