Shoey 发表于 2022-7-5 18:44:46

打开时发出外部参照警报

大家好
 
我们使用阿卡多克。lsp在打开dwg文件时加载一些lsp例程。
我想在此文件中添加一个“警报”功能。
 
理想情况下,我希望打开dwg,然后如果发现任何未加载的外部参照,请将
打开警报框,通知用户图形包含卸载的外部参照。
 
我已获得以下代码。。
 

;;code by PBEJSE
(defun c:SelXref(/ Xr_lst)
(vlax-for blk (vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object)))
(if (eq (vla-get-isXref blk) :vlax-true)
(setq Xr_lst
(cons
(cons
(vla-get-name blk)
(if (> (vla-get-count blk) 0)
"Loaded" "Unloaded"))
Xr_lst))))
(foreach n Xr_lst (print n))
(princ))

 
我想一个类似的代码来做什么,我喜欢,但挣扎。
有人能给我指路吗?

Tharwat 发表于 2022-7-5 19:14:38

试试这个:
 

(defun c:XrefAlert (/ l)
(vlax-for blk (vla-get-blocks
               (vla-get-activedocument (vlax-get-acad-object))
               )
   (if (and (eq (vla-get-isXref blk) :vlax-true)
            (= 0 (setq a (vla-get-count blk)))
            )
   (setq l (vl-list* "," (vla-get-name blk) l))
   )
)
(if l (alert (strcat "Name of Unloaded Xrefs drawings < " (apply 'strcat (cdr l)) " >")))
(princ)
)(vl-load-com)

Lee Mac 发表于 2022-7-5 19:29:55

另一个:
(   (lambda ( / s x )
       (while (setq x (tblnext "block" (not x)))
         (if (= 4 (logand 36 (cdr (assoc 70 x))))
               (setq s (vl-list* "\n" (cdr (assoc 2 x)) s))
         )
       )
       (if s (alert (strcat "This drawing contains the following unloaded xrefs:\n" (apply 'strcat s))))
       (princ)
   )
)

Shoey 发表于 2022-7-5 20:02:55

谢谢Tharwat和Lee Mac。
2个很棒的建议。也适用于嵌套附着的外部参照!
谢谢你的时间。
 
进一步说,这可以通过卸载图像和PDF参考底图来实现吗??
 
干杯
页: [1]
查看完整版本: 打开时发出外部参照警报