- 积分
- 15939
- 明经币
- 个
- 注册时间
- 2006-9-1
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 mj0000 于 2014-5-10 15:08 编辑
这两天在折腾出图的事,在布局中布图调整视口中图层显示太折腾人了,所以就有了这个东西
函数有参考龙版的代码,谢了
论坛中其他源码函数也试过,但是都不支持通配符操作,还是用command方式支持通配符,速度也不慢,可以接受
以下是源码,需要的自己改图层
- ;;;按功能在指定视口中冻结特定图层
- (defun C:Tools-LAY-SKGNDJ (/ DjKeyN DjKey VP)
- (princ "\n*** 选择视口前,请保持视口中有效图层开启 ***")
- (if (= (getvar "tilemode") 0)
- (progn
- (initget 7 "1 2 3 4")
- (setq Key (getkword "\n需要设置的视口功能: 1-总平面图 / 2-分区铺装索引平面图 / 3-竖向平面图 / 4-定位平面图"))
- (cond
- ((= Key "1") (setq DjKey "*ELEV*,*COOR*,*IDEN*,*LEAD*,*SYMB*,*PUB_DIM*")) ;_总平面图
- ((= Key "2") (setq DjKey "*ELEV*,*COOR*,*SYMB*,*PUB_DIM*")) ;_分区铺装索引平面图
- ((= Key "3") (setq DjKey "*填充*,*HATCH*,*COOR*,*IDEN*,*LEAD*,*SYMB*,*PUB_DIM*")) ;_竖向平面图
- ((= Key "4") (setq DjKey "*填充*,*HATCH*,*ELEV*,*IDEN*,*LEAD*,*SYMB*")) ;_定位平面图
- )
- (if (setq VP (entsel "\n选择要冻结图层的视口:"))
- (FreezLayInVPCmd (car VP) DjKey)
- )
- )
- (princ "\n该命令仅允许在布局空间有效运行!")
- )
- (princ)
- )
- ;;;支持通配符
- (defun FreezLayInVPCmd (Ven Lst / ENT)
- (if (and (= (getvar "tilemode") 0) (= (getvar "cvport") 1)) ;_判断鼠标是否在布局空间
- (progn
- (setq ENT (cdr (assoc 69 (entget Ven))))
- (command "_.MSPACE") ;_切换到模型空间
- (setvar "cvport" ENT)
- (command "_.vplayer" "F" LST "" "") ;_在模型空间中操作,冻结
- (command "_PSPACE") ;_切换到布局空间
- )
- (princ "\n*** 该命令仅允许在布局空间有效运行,请将鼠标切换到布局空间 ***")
- )
- )
|
|