明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1364|回复: 3

[提问] 批量将某一图层做成外部块【自己解决了】

[复制链接]
发表于 2016-2-16 18:05:21 | 显示全部楼层 |阅读模式
本帖最后由 sasufa 于 2016-2-18 15:48 编辑

                                        ;程序用来提取某个文件夹下所有dwg文件中某一个图层
(defun c:batch ()
  (setq path "C:\\Users\\dell\\Desktop\\text - 副本") ;文件夹路径
  (setq layer "te")                        ;图层名
  (setq        files (VL-DIRECTORY-FILES
                path
                "*.dwg"
                1
              )
  )
  (foreach dwgname files
    (if        (/= (strcase
              (setq
                dwgname        (strcat        path
                                "\\"
                                dwgname
                        )
              )
            )
            (strcase (strcat (getvar "dwgprefix") (getvar "dwgname")))
        )
      (progn
;        (PRINT dwgname)
        (command "_.undo" "be")
        (setvar "clayer" "0")
        (command "-layer" "u" "*" "t" "*" "")
        (command "-insert" dwgname "0,0,0" "1" "" "0")
        (command "-layer" "u" "*" "t" "*" "")
;;;处理动作
        (vl-cmdf "explode" "all" "" "")
        (setq mm (ssget "X" (list (cons 8 layer))))
        (setq dwgname (vl-filename-base dwgname))
        (vl-cmdf "-wblock" dwgname "" "0,0" mm "")

      )
    )
  )
  (princ)
)

 楼主| 发表于 2016-2-18 15:46:32 | 显示全部楼层
                                        ;程序用来提取某个文件夹下所有dwg文件中某一个图层
(defun c:batch ()
  (setq path "C:\\Users\\dell\\Desktop\\text - 副本") ;文件夹路径
  (setq layer "te")                        ;te是图层名
  (setq        files (VL-DIRECTORY-FILES
                path
                "*.dwg"
                1
              )
  )
  (foreach dwgname files
    (if        (/= (strcase
              (setq
                dwgname        (strcat        path
                                "\\"
                                dwgname
                        )
              )
            )
            (strcase (strcat (getvar "dwgprefix") (getvar "dwgname")))
        )
      (progn
;        (PRINT dwgname)
        (command "_.undo" "be")
        (setvar "clayer" "0")
        (command "-layer" "u" "*" "t" "*" "")
        (command "-insert" dwgname "0,0,0" "1" "" "0")
        (command "-layer" "u" "*" "t" "*" "")
;;;处理动作
        (vl-cmdf "explode" "all" "" "")
        (setq mm (ssget "X" (list (cons 8 layer))))
        (setq dwgname (vl-filename-base dwgname))
        (vl-cmdf "-wblock" dwgname "" "0,0" mm "")

      )
    )
  )
  (princ)
)




回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-2-17 17:11:15 | 显示全部楼层
有人帮忙不
-wblock这个怎么把整个图层作为选集啊
 楼主| 发表于 2016-2-17 18:09:41 | 显示全部楼层
(defun c:tqtc  ()
  解决了 使用后 选择某个东西  就会把整个层做成外部块 名字是原文件名  路径自动在我的文档里


(VL-LOAD-COM)
  (setq file (strcat (getvar "dwgname")))
  (setq layer (assoc 8 (entget (car (entsel "\n选择要提取的图层: ")))))
  (setq mm (ssget "X" (list layer)))
  (vl-cmdf "-wblock" file "" "0,0" mm "")
  )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 16:46 , Processed in 0.176766 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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