DCL对话框下实时控制图层状态,有什么好的方法
本帖最后由 masterlong 于 2015-1-12 18:12 编辑commnd方式
(command "layer" "off" layname "")
对话框中不能用
entmod方式
(setq layst (entget (tblobjname "layer" layname)))
(setq co (assoc 62 layst))
(entmod (subst (cons 62 (* -1 (cdr co))) co layst))
要结束对话框才能起效
vla方式
(setq *doc* (vla-get-ActiveDocument (vlax-get-acad-object)))
(setq *layers* (vla-get-Layers *doc*))
(vlax-for x *layers*
(if (= (strcase (vla-get-name x)) (strcase layname))
(vla-put-layeron x :vlax-false)
)
)
(vla-regen *doc* 1)
可以实时显示
但是必须要有最后一句
regen对于稍大一点的dwg那是慢死人
有没有更好的解决办法
就像“图层转换器”那样直接、快速??? 用while.~~~~~~~~~~~~~~~~~~~~~~~~~~~~
然后读取控件的值. 大哥回帖以前先看帖好吗? Z版啊
我的标题写的很清楚啊
是在DCL“实时控制图层状态”
退出DCL再进去的方式
真的不是我要的 图层转换器里不是啊
设置里选中显示图层内容
图层管理器对话框是居中显示
它本身是否即时显示意义不大
对话框激活时即时显示
正如首贴所述我能做到
只是速度太慢了
退出dcl再打开
影响操作的流畅性
这是最后一招
非模态DCL 能做到>?? 可以去搜索.看看. 是的
我的程序的odcl版已经完成
现在在制作dcl版 ODCL毕竟不是CAD本身自带的
所以有些东西很难处理
当然也可能是我水平不够
一个可停靠窗口(control bar)
与CAD自带的特性对话框比较
你在命令行执行一个命令copy
任何时候你的鼠标都可以进入特性窗
做它允许的事情例如改变当前层
鼠标离开特性窗时copy可以继续
但是odcl就没办法做到这一点
必须强行中止当前命令
而当前程序除非做了非常完善的出错处理
被强行中断的最坏结果
可能是程序都不能用了
之所以要做DCL版的
就是为了它的系统独占性
话说
还没试过odcl的模式对话框呢
待俺试试
页:
[1]
2