nnutting 发表于 2022-7-6 06:57:24

外部参照Lisp例程

寻求以下例程的帮助:
 
-通过键入XO,然后单击参照,从图形中打开外部参照。
-通过键入XRX,然后单击参照,从图形中分离外部参照。
-通过键入XRR重新加载图形中的所有外部参照
 
提前谢谢你。

Lee Mac 发表于 2022-7-6 07:01:04

 
打开外部参照
 
.....

Lee Mac 发表于 2022-7-6 07:05:16

 
快速一:
 
(defun c:xrx ( / xn xr )
   (while
       (progn (setvar 'ERRNO 0) (setq xr (car (entsel "\nSelect XRef to Detach: ")))
         (cond
               (   (= 7 (getvar 'ERRNO))
                   (princ "\nMissed, try again.")
               )
               (   (eq 'ENAME (type xr))
                   (if
                     (not
                           (and
                               (eq "INSERT" (cdr (assoc 0 (entget xr))))
                               (= 4 (logand 4 (cdr (assoc 70 (tblsearch "BLOCK" (setq xn (cdr (assoc 2 (entget xr)))))))))
                           )
                     )
                     (princ "\nObject is not an XRef.")
                   )
               )
         )
       )
   )
   (if xr (vla-detach (vlax-ename->vla-object (cdr (assoc 330 (entget (tblobjname "BLOCK" xn)))))))
   (princ)
)
(vl-load-com) (princ)

Lee Mac 发表于 2022-7-6 07:07:02

 
(defun c:xrr nil
   (vlax-for block (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
       (if (eq :vlax-true (vla-get-isxref block)) (vla-reload block))
   )
   (princ)
)
(vl-load-com) (princ)

nnutting 发表于 2022-7-6 07:12:00

谢谢李麦克。。。
我在程序参数中找不到xopen。。。有没有其他方法可以修改键命令,这样就可以使用XO而不是键入整个命令?

rkent 发表于 2022-7-6 07:13:25

单击外部参照,单击鼠标右键,打开外部参照。
 
键入XO并点击tab,点击enter。
 
在pgp中,为xopen设置XO。

alanjt 发表于 2022-7-6 07:18:45

启动文件中很少有外部参照宏。。。
 
;; turn off all xref layers
(defun c:XF (/) (command "_.-layer" "_off" "*|*" "") (princ))

;; turn on all xref layers
(defun c:XN (/) (command "_.-layer" "_on" "*|*" "") (princ))

;UNLOAD ALL XREFS
(defun c:xu (/) (command "_.-xref" "_UNLOAD" "*") (princ))


;RELOAD ALL XREFS
(defun c:XE (/) (command "_.-xref" "_RELOAD" "*" ) (princ))

nnutting 发表于 2022-7-6 07:21:54

rkent。。。
我正在跑步2010。。。右键单击外部参照在2011年和2012年起作用。我的新公司还没有决定使用新软件。

Lee Mac 发表于 2022-7-6 07:23:41

否则,只需:
 
(defun c:xo nil (command "_.xopen" pause) (princ))

alanjt 发表于 2022-7-6 07:25:56

不需要暂停。
页: [1] 2
查看完整版本: 外部参照Lisp例程