明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2609|回复: 12

[已解答] DCL对话框下实时控制图层状态,有什么好的方法

[复制链接]
发表于 2015-1-12 18:11:21 | 显示全部楼层 |阅读模式
本帖最后由 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那是慢死人


有没有更好的解决办法
就像“图层转换器”那样直接、快速???
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2015-1-12 18:29:18 | 显示全部楼层
用while.~~~~~~~~~~~~~~~~~~~~~~~~~~~~
然后读取控件的值.
 楼主| 发表于 2015-1-12 18:47:03 | 显示全部楼层
大哥回帖以前先看帖好吗?

点评

没错呀。是在对话框外嵌套WHILE,退出对话框用LAYER操作图层后再显示对话框。  发表于 2015-1-12 21:53
 楼主| 发表于 2015-1-12 21:58:26 | 显示全部楼层
Z版啊
我的标题写的很清楚啊
是在DCL“实时控制图层状态”
退出DCL再进去的方式
真的不是我要的

点评

ACAD的图层特性管理器也是在退出时才更改图层内容的。  发表于 2015-1-13 08:18
 楼主| 发表于 2015-1-13 10:36:44 | 显示全部楼层
图层转换器里不是啊
设置里选中显示图层内容

 楼主| 发表于 2015-1-13 10:58:31 | 显示全部楼层
图层管理器对话框是居中显示
它本身是否即时显示意义不大

对话框激活时即时显示
正如首贴所述我能做到
只是速度太慢了

退出dcl再打开
影响操作的流畅性
这是最后一招



发表于 2015-1-13 17:36:13 | 显示全部楼层
非模态DCL 能做到>?? 可以去搜索.看看.
 楼主| 发表于 2015-1-13 18:19:59 来自手机 | 显示全部楼层
是的
我的程序的odcl版已经完成
现在在制作dcl版
 楼主| 发表于 2015-1-13 19:00:55 | 显示全部楼层
ODCL毕竟不是CAD本身自带的
所以有些东西很难处理
当然也可能是我水平不够

一个可停靠窗口(control bar)
与CAD自带的特性对话框比较
你在命令行执行一个命令copy
任何时候你的鼠标都可以进入特性窗
做它允许的事情例如改变当前层
鼠标离开特性窗时copy可以继续

但是odcl就没办法做到这一点
必须强行中止当前命令
而当前程序除非做了非常完善的出错处理
被强行中断的最坏结果
可能是程序都不能用了

之所以要做DCL版的
就是为了它的系统独占性

 楼主| 发表于 2015-1-13 19:02:08 | 显示全部楼层
话说
还没试过odcl的模式对话框呢
待俺试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-23 09:54 , Processed in 0.175113 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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