明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1442|回复: 18

[提问] 打开含有关键字的图层,对块不好用

[复制链接]
发表于 2019-10-20 12:56 | 显示全部楼层 |阅读模式
30明经币
本帖最后由 dakui 于 2019-10-21 13:36 编辑

下面代码功能:打开含有某个关键字的图层。
可是有一种情况无法解决,就是块内的图元和块所在的图层不在同一个层内的情况。
例如:
块内图元 GA1_GFU_ANA-CIR
              GA1_GFU_ANA-LIN
块图层    GA1_GFU_ANA
参考附件 test2.DWG
请朋友们帮忙解决

(defun c:lybs (/ AcadObject AcadDocument LayersObj ss n i ent ob lay vlay)
       (setq AcadObject (vlax-get-acad-object)
              AcadDocument (vla-get-ActiveDocument AcadObject)
                  LayersObj (vla-get-layers AcadDocument)
       );end setq
(setq UserWord "*ANA*")
(setq t0 (* 86400 (getvar "tdusrtimer")))
          (if (setq ss (ssget "X" (list (cons 8 UserWord))))
              (progn
                     (vlax-for vlay LayersObj
                            (vla-put-layeron vlay :vlax-false)
                     );end vlax-for
                     (setq n (sslength ss))
                     (setq i (- n 1))
                     (repeat n
                            (setq ent (ssname ss i)
                                   ob (vlax-ename->vla-object ent)
                                   lay (vla-get-layer ob)
                                   vlay (vla-item LayersObj lay)
                            );end setq
                            (vla-put-layeron vlay :vlax-true)
                            (setq i (1- i))
                     );end repeat
                   (princ (strcat "\n***** 图层名:" UserWord " *****"))
       ));end if
(setq t1 (* 86400 (getvar "tdusrtimer")))
(setq time (- t1 t0))
(princ " 用时:< ")
(princ time)
(princ " >秒")
(princ)
);end defun


附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

程序和块 半毛钱关系都没有吧
发表于 2019-10-20 12:56 | 显示全部楼层

程序和块 半毛钱关系都没有吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

 楼主| 发表于 2019-10-21 09:11 | 显示全部楼层
这个问题,我觉得很多人都遇到过,希望大家能够参与解决
回复

使用道具 举报

发表于 2019-10-21 10:33 | 显示全部楼层
你给的条件不够,解决是把图块不同层解决还是只是解决程序不正确的问题,还有你的程序应该不全,既然你知道关键字就直接把块里的图层写上去就行了
回复

使用道具 举报

 楼主| 发表于 2019-10-21 10:57 | 显示全部楼层
本帖最后由 dakui 于 2019-10-21 11:00 编辑
start4444 发表于 2019-10-21 10:33
你给的条件不够,解决是把图块不同层解决还是只是解决程序不正确的问题,还有你的程序应该不全,既然你知道 ...

谢谢你的回答
我描述的可能还不够准备。图块本身不作调整,是指图层开关命令想做修改。
程序是全的,像这样的块有成百上千,图层名字无法记入。
回复

使用道具 举报

 楼主| 发表于 2019-10-23 07:32 | 显示全部楼层
本帖最后由 dakui 于 2019-10-23 07:35 编辑
叮咚 发表于 2019-10-22 10:15
程序和块 半毛钱关系都没有吧

非常感谢大神的慷慨解囊,是我的思路有问题。
还有一事想请教一下,就是打开*ANA*图层的同时,
不关闭已经打开的图层
回复

使用道具 举报

发表于 2019-10-23 07:37 | 显示全部楼层
dakui 发表于 2019-10-23 07:32
非常感谢大神的慷慨解囊,是我的思路有问题。
还有一事想请教一下,就是打开*ANA*图层的同时,
不关闭 ...

代码其实很简单,你仔细想想。
回复

使用道具 举报

 楼主| 发表于 2019-10-23 07:40 | 显示全部楼层
叮咚 发表于 2019-10-23 07:37
代码其实很简单,你仔细想想。

谢谢大神闪回。说实话,昨天晚上试着在大神的代码基础上修改,弄了一晚上没弄有个结果
回复

使用道具 举报

发表于 2019-10-23 07:46 | 显示全部楼层
dakui 发表于 2019-10-23 07:40
谢谢大神闪回。说实话,昨天晚上试着在大神的代码基础上修改,弄了一晚上没弄有个结果

(vla-put-layeron vlay :vlax-false)

里边有这句,删除就可以了

点评

解决了困扰我很长时间的一个难题。之前用command去做的,效率太低。  发表于 2019-10-23 07:54

评分

参与人数 1明经币 +1 金钱 +20 收起 理由
dakui + 1 + 20 神马都是浮云,再次感谢大神。

查看全部评分

回复

使用道具 举报

发表于 2019-10-23 11:11 | 显示全部楼层
叮咚 发表于 2019-10-20 12:56
程序和块 半毛钱关系都没有吧

你好大神,能否加一个功能,就是能够返回恢复原来全部图层打开的状态
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-30 23:41 , Processed in 1.181272 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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