lml2023 发表于 2023-9-15 16:54:59

悬赏,求大神开发个把外部参照一键修改为某个图层

1、要求把外部参照整体的图层(注意是壳,就是外部参照块,不是内部的各个图层,外部参照内部不变),一键改为图层“0-0-参照图层”

845245015 发表于 2023-9-15 16:55:00

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;将文件中全部外部参照归置于"0-0-参照图层"图层
;命令:XCC
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(Defun C:XCC ( )
(vl-load-com)
;--------------------------------------------------------------------------------------
(setq Nme (getstring "\n请输入图层名称:<0-0-参照图层>"))
(if (or (= 33 (ascii Nme))(= 0 (ascii Nme)))
    (setq Nme "0-0-参照图层")
    )
(if (= (tblsearch "layer" Nme) nil)
    (entmake (list
         '(0 . "LAYER")
         '(100 . "AcDbSymbolTableRecord")
         '(100 . "AcDbLayerTableRecord")
         '(70 . 4)
         '(290 . 1)
         (cons 2 Nme)
         (cons 62 8)
         )
       )
    )
(setvar "clayer" Nme)
(if (setq ss (ssget "x" '((0 . "insert"))))
    (progn
      (setq sl (sslength ss))
      (while (setq e (ssname ss (setq sl (1- sl))))
      (if (vlax-property-available-p
            (setq obj (vlax-ename->vla-object e))
            'Path
            )
    (progn
          (vl-catch-all-apply 'vla-put-layer (list obj Nme))
    ;(print (vla-get-name obj))
    )
      )
      )
    )
)

;--------------------------------------------------------------------------------------
(prin1)
)

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ssyfeng 发表于 2023-9-15 21:08:43

本帖最后由 ssyfeng 于 2023-9-16 15:13 编辑

应该是这样吧.....



lml2023 发表于 2023-9-16 09:50:05

ssyfeng 发表于 2023-9-15 21:08
不太明白什么意思.....

外部参照,不是一个整块吗,整块会在某个图层上,我需要的是把整块外部参照所有的,改到一个图层上,比如10个外部参照,一次性改图层到”0-0-参照图层”上。


下面的这个BT0是把块(含外部参照,并当成块)归到"0-0-块图层"这个图层
,我希望的是我只改变外部参照的图层

;;25-图块归0图层BT0
    (defun c:BT0 ( )
(alert "天神提醒:
                   请先用插件进行   外部参照块图层整理。
                   命令【BR0】外部参照图层整理,所有外部参照归入图层【0-0-参照图层】。
                   然后锁定参照图层,即可不改变参照图层,否则外部参照也会被归入本图层。
                   有图层0-0-块图层,则加入本图层;无0-0-块图层,则自动建立0-0-块图层。
                   继续执行      请空格!!!")

      (if (setq ss (ssget "_A" (list (cons 0 "INSERT"))))
            (progn
                (setq i 0)
                (repeat (sslength ss)
                  (setq ent (ssname ss i))
                  (setq dxf (entget ent))
                  (entmod (subst (cons 8 "0-0-块图层")(assoc 8 dxf) dxf))
                  (entupd ent)
                  (setq i (1+ i))
                )
            )
      )
    )

lml2023 发表于 2023-9-16 15:55:56

ssyfeng 发表于 2023-9-15 21:08
应该是这样吧.....

可以,不过比楼上慢了一点,明天给你评2个币,还有就是稍微比楼上卡一点

lml2023 发表于 2023-9-16 15:59:01

ssyfeng 发表于 2023-9-15 21:08
应该是这样吧.....

谢谢,老总的插件

菜鸟初来乍到 发表于 2024-4-13 11:33:19

本帖最后由 菜鸟初来乍到 于 2024-4-13 11:34 编辑

845245015 发表于 2023-9-15 16:55

大神,能帮忙修改一下吗?就是参照图层建立好放好参照之后,自动改回到原来的图层为当前图层

tensir 发表于 2024-7-1 18:28:49

感谢作者的分享!
页: [1]
查看完整版本: 悬赏,求大神开发个把外部参照一键修改为某个图层