明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1405|回复: 4

[求助]改非0层定义的块为0层定义的块

[复制链接]
发表于 2007-10-3 12:59 | 显示全部楼层 |阅读模式

改非0层定义的块或多次定义的块为为0层定义的块

块的定义不规范,会影响后期工作的麻烦,想实现一个lsp程序,改非0层定义的块,修改成0层上定义的块

发表于 2007-10-3 22:43 | 显示全部楼层
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun C:BLKPRO (/ ss idx bname bnames blkdefobj)
  (princ
    "\nMove all objects in selected block(s) to layer '0'\nColour, linetype & lineweight to 'Bylayer'"
  )
  (if (setq ss (ssget '((0 . "INSERT"))))
    (progn
      (command "undo" "BE")
      (setq idx 0
     bnames '()
      )
      (while (<= idx (1- (sslength ss)))
 (setq bname (cdr (assoc 2 (entget (ssname ss idx)))))
 (if (not (member bname bnames))
   (progn
     (setq bnames (cons bname bnames))
     (setq blkdefobj (vla-item (vla-get-blocks
     (vla-get-activedocument
       (vlax-get-acad-object)
     )
          )
          bname
       )
     )
     (if (= (vla-get-isxref blkdefobj) :vlax-false)
       (vlax-for obj blkdefobj
  (vla-put-layer obj "0")
  (vla-put-color obj acBylayer)
  (vla-put-linetype obj "BYLAYER")
  (vla-put-lineweight obj acLnWtByLayer)
       )
     ) ; end if
   ) ; progn
 )
 (setq idx (1+ idx)
 )
      )
      (command "regenall")
      (command "undo" "End")
    )
  )
)
发表于 2007-10-3 23:03 | 显示全部楼层
未考虑块中块
发表于 2007-10-3 23:11 | 显示全部楼层

You are right. This routine was written a few months ago for a friend of mine.

 楼主| 发表于 2007-10-4 09:23 | 显示全部楼层
恩,感谢alin,程序非常好用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-15 13:46 , Processed in 0.141213 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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