设为首页
收藏本站
登录
|
[加入论坛]
开启辅助访问
切换到窄版
站内搜索
首页
BBS
化工技术网- 赠人玫瑰 手有余香
»
首页
›
≡供配电、输发电、自控、公用、制图专区≡
›
『 化工制图 』
›
[转帖]一个图层工具
返回列表
查看:
2129
|
回复:
1
[转帖]一个图层工具
[复制链接]
2443725
当前离线
狗仔卡
2443725
发表于 2004-5-6 15:32
|
显示全部楼层
|
阅读模式
;;;**************************************************************************<BR>;;;1.删除某个层<BR>(defun c:hqddellayer ()<BR> (vl-load-com)<BR> (setq acadObject (vlax-get-acad-object))<BR> (setq acadDocument (vlax-get-property acadObject 'ActiveDocument))<BR> (setq LayersObj (vla-get-layers acadDocument ))<BR> (setq actlaystr (vla-get-name (vla-get-activeLayer acadDocument)))<BR> (setq k T)<BR> (while k<BR> (setq layname (getstring "\n请输入要删除的层名<退出>: "))<BR> (if (/= layname "")<BR> (progn <BR> (setq vlalay (vl-catch-all-apply 'vla-item (list LayersObj layname)))<BR> (if (vl-catch-all-error-p vlalay);;判断层是否存在<BR> (prompt (strcat "\n" layname " 层不存在,请重新输入."))<BR> (progn<BR> (if (and (/= layname actlaystr) (/= layname "0"))<BR> (progn<BR> (if (ssget "X" (list (cons 8 layname)))<BR> (princ "\n图层中含有实体,不能删除!")<BR> (progn<BR> (vla-delete vlalay)<BR> (princ (strcat "\n已成功删除" layname "层!"))<BR> )<BR> )<BR> )<BR> (princ "\n不能当删除前层和 0 层!")<BR> ) <BR> )<BR> ) <BR> )<BR> (setq k nil)<BR> )<BR> )<BR> (princ)<BR>) <BR>;;;**************************************************************************<BR>;;;2.关闭选取实体所在层<BR>(defun c:hqdsellayoff ()<BR> (vl-load-com)<BR> (setq acadObject (vlax-get-acad-object))<BR> (setq acadDocument (vlax-get-property acadObject 'ActiveDocument))<BR> (setq LayersObj (vla-get-layers acadDocument ))<BR> (setq k T)<BR> (while k<BR> (setq layent (entsel "\n请选取要关闭层中的一个实体<退出>: "))<BR> (if layent <BR> (progn<BR> (setq layent (car layent))<BR> (setq layentvla (vlax-ename->vla-object layent)) <BR> (setq laystr (vla-get-layer layentvla))<BR> (vla-put-layeron (vla-item LayersObj laystr) :vlax-False) <BR> )<BR> (setq k nil)<BR> )<BR> )<BR> (princ)<BR>) <BR>;;;**************************************************************************<BR>;;;3.打开所有层 <BR>(defun c:hqdalllayon ()<BR> (vl-load-com)<BR> (setq acadObject (vlax-get-acad-object))<BR> (setq acadDocument (vlax-get-property acadObject 'ActiveDocument))<BR> (setq LayersObj (vla-get-layers acadDocument ))<BR> (vlax-for lay LayersObj<BR> ; (setq layvla (vla-item LayersObj (vla-get-name lay)))<BR> ; (vla-put-layeron layvla :vlax-True)<BR> (vla-put-layeron lay :vlax-True)<BR> )<BR> (princ)<BR>)
;;;**************************************************************************<BR>;;;4.冻结选取实体所在层 <BR>(defun c:hqdsellayfreeze ()<BR> (vl-load-com)<BR> (setq acadObject (vlax-get-acad-object))<BR> (setq acadDocument (vlax-get-property acadObject 'ActiveDocument))<BR> (setq LayersObj (vla-get-layers acadDocument ))<BR> (setq k T)<BR> (while k<BR> (setq layent (entsel "\n请选取要冻结层中的一个实体<退出>: "))<BR> (if layent <BR> (progn<BR> (setq layent (car layent))<BR> (setq layentvla (vlax-ename->vla-object layent)) <BR> (setq laystr (vla-get-layer layentvla))<BR> (setq actlaystr (vla-get-name (vla-get-activeLayer acadDocument)))<BR> (if ( /= laystr actlaystr)<BR> (vla-put-freeze (vla-item LayersObj laystr) :vlax-True)<BR> (princ "\n不能冻结当前层!")<BR> ) <BR> )<BR> (setq k nil)<BR> )<BR> )<BR> (princ)<BR>) <BR>;;;**************************************************************************<BR>;;;5.解冻所有层 <BR>(defun c:hqdallfreeze ()<BR> (vl-load-com)<BR> (setq acadObject (vlax-get-acad-object))<BR> (setq acadDocument (vlax-get-property acadObject 'ActiveDocument))<BR> (setq LayersObj (vla-get-layers acadDocument ))<BR> (setq actlaystr (vla-get-name (vla-get-activeLayer acadDocument)))<BR> (vlax-for lay LayersObj<BR> (if ( /= (vla-get-name lay) actlaystr)<BR> (vla-put-freeze lay :vlax-false)<BR> )<BR> )<BR>(vla-regen acadDocument acAllViewPorts)<BR> (princ)<BR>)<BR>;;;**************************************************************************<BR>;;;6.锁定或解锁选取实体所在层 <BR>(defun c:hqdsellaylock ()<BR> (vl-load-com)<BR> (setq acadObject (vlax-get-acad-object))<BR> (setq acadDocument (vlax-get-property acadObject 'ActiveDocument))<BR> (setq LayersObj (vla-get-layers acadDocument ))<BR> (setq k T)<BR> (while k<BR> (setq layent (entsel "\n请选取要锁定或解锁层中的一个实体<退出>: "))<BR> (if layent <BR> (progn<BR> (setq layent (car layent))<BR> (setq layentvla (vlax-ename->vla-object layent)) <BR> (setq laystr (vla-get-layer layentvla))<BR> (setq layvla (vla-item LayersObj laystr))<BR> (setq laylock (vla-get-lock layvla))<BR> (if (= laylock :vlax-false)<BR> (progn<BR> (vla-put-lock layvla :vlax-True)<BR> (princ (strcat "\n" laystr " 层已锁"))<BR> )<BR> ( progn<BR> (vla-put-lock layvla :vlax-false)<BR> (princ (strcat "\n" laystr " 层已解锁")) <BR> )<BR> ) <BR> )<BR> (setq k nil)<BR> )<BR> )<BR> (princ)<BR>) <BR>;;;**************************************************************************
;;关闭除所选实体所在层以外的所有层<BR>(defun c:lnn(/ q)<BR>(setq q(car(entsel "pick:")))<BR>(setq q(cdr(assoc 8(entget q))))<BR>(setvar "CLAYER" q)<BR>(command "-layer" "off" "*" "n" "")<BR>)
回复
使用道具
举报
提升卡
置顶卡
沉默卡
变色卡
koalabear
当前离线
狗仔卡
koalabear
发表于 2004-5-10 04:00
|
显示全部楼层
楼主从哪整地这程序,不错啊,就是太麻烦.一般建了一个图层很少删除阿,
回复
支持
反对
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
[加入论坛]
本版积分规则
发表回复
回帖后跳转到最后一页
化工技术网- 赠人玫瑰 手有余香
(
苏ICP备14035884号
)
快速回复
返回顶部
返回列表