乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 99|回复: 9

[编程交流] 图层过滤器特性

[复制链接]

91

主题

428

帖子

326

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
474
发表于 2022-7-6 07:32:56 | 显示全部楼层 |阅读模式
大家好,
有没有办法定义一个属性过滤器,让lyers排除一些模式?
 
(假设要隐藏以“3D”开头的层,wcmatch函数中的匹配模式是“~3D*”…)
 
感谢您的帮助。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:41:31 | 显示全部楼层
下面是一个供您考虑的示例:
 
  1. ([color=BLUE]defun[/color] c:addfilter ( [color=BLUE]/[/color] dc fn xd )
  2.    
  3.    ([color=BLUE]setq[/color] fn [color=MAROON]"No 3D"[/color])
  4.    
  5.    ([color=BLUE]if[/color]
  6.        ([color=BLUE]and[/color]
  7.            ([color=BLUE]setq[/color] xd
  8.                ([color=BLUE]cdr[/color]
  9.                    ([color=BLUE]assoc[/color] 360
  10.                        ([color=BLUE]entget[/color]
  11.                            ([color=BLUE]cdr[/color]
  12.                                ([color=BLUE]assoc[/color] 330
  13.                                    ([color=BLUE]entget[/color]
  14.                                        ([color=BLUE]tblobjname[/color] [color=MAROON]"LAYER"[/color] [color=MAROON]"0"[/color])
  15.                                    )
  16.                                )
  17.                            )
  18.                        )
  19.                    )
  20.                )
  21.            )
  22.            ([color=BLUE]or[/color] ([color=BLUE]setq[/color] dc ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] -1 ([color=BLUE]dictsearch[/color] xd [color=MAROON]"ACAD_LAYERFILTERS"[/color]))))
  23.                ([color=BLUE]setq[/color] dc
  24.                    ([color=BLUE]dictadd[/color] xd [color=MAROON]"ACAD_LAYERFILTERS"[/color]
  25.                        ([color=BLUE]entmakex[/color]
  26.                           '(
  27.                                (0 . [color=MAROON]"DICTIONARY"[/color])
  28.                                (100 . [color=MAROON]"AcDbDictionary"[/color])
  29.                                (280 . 0)
  30.                                (281 . 1)
  31.                            )
  32.                        )
  33.                    )
  34.                )
  35.            )
  36.            ([color=BLUE]null[/color] ([color=BLUE]dictsearch[/color] dc fn))
  37.        )
  38.        ([color=BLUE]dictadd[/color] dc fn
  39.            ([color=BLUE]entmakex[/color]
  40.                ([color=BLUE]list[/color]
  41.                   '(0 . [color=MAROON]"XRECORD"[/color])
  42.                   '(100 . [color=MAROON]"AcDbXrecord"[/color])
  43.                   '(280 . 1)
  44.                    ([color=BLUE]cons[/color] 1 fn)
  45.                   '(1 . [color=MAROON]"~3D *"[/color])
  46.                   '(1 . [color=MAROON]"*"[/color])
  47.                   '(1 . [color=MAROON]"*"[/color])
  48.                   '(70 . 0)
  49.                   '(1 . [color=MAROON]"*"[/color])
  50.                   '(1 . [color=MAROON]"*"[/color])
  51.                   '(-3
  52.                        (
  53.                            [color=MAROON]"ACAD"[/color]
  54.                            (1000 . [color=MAROON]"( NAME== "~3D *" )"[/color])
  55.                        )
  56.                    )
  57.                )
  58.            )
  59.        )
  60.    )
  61.    ([color=BLUE]princ[/color])
  62. )
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
474
发表于 2022-7-6 07:49:34 | 显示全部楼层
李,非常感谢。
 
这是非常有用的,绝对是我要求的代码,但我在修改您的程序以定义一个过滤器以包括一些模式并排除一些其他模式时遇到了一个问题。
 
例如,当我定义一个过滤器以包括“2D*”并排除“3D”时,我改变了模式“3D*,2D*”,但它不起作用。
我的复习有什么问题?
 
 
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:54:11 | 显示全部楼层
 
据我所知,我不认为图层特性过滤器的“名称”字段可以处理具有多个模式的通配符(每个模式必须作为过滤器的新规则输入,然后使用包含或逻辑门处理规则)。
 
但是,由于层名称不能同时以“2D*”和“3D*”开头,因此过滤器只需为“2D*”即可仅包含带有此前缀的层,因此自动排除带有“3D*”前缀的层。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 08:02:13 | 显示全部楼层
这有点过时,但你可以用-LA来做同样的事情-la off 2d*T 3d*on 1d*
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
474
发表于 2022-7-6 08:10:53 | 显示全部楼层
 
李,你说得对。我的例子并不好。让我一步一步地解释我的问题:
 
首先,我想确认您的代码是否正常,问题可能是由于AutoCAD的错误。
 
 
 
假设您有一个包含以下图层的图形:
[列表]
  • “3D门建筑”
  • “3D窗户建筑”
  • “2D门建筑”
  • “2D窗户建筑”
  • “3D HVAC机械”
  • “2D HVAC机械”
  • “门建筑”
  • “窗户建筑”
  • “HVAC机械”
  • “柱结构”
  • “梁结构”
  • ...
    1-要定义一个过滤器来显示与“*-architecture”匹配的层,使用“*-architecture”,您的代码运行良好。
     
    2-要定义一个过滤器来隐藏与“*-架构”匹配的层,使用“~*-架构”,代码运行良好。
     
    3-要定义一个过滤器来显示与“*-架构”或“*-结构”匹配的层,使用“*-架构,*-结构”,代码可以正常工作。
     
    4-要定义过滤器以显示与“*-架构”或“3D*”匹配的层,使用“*-架构,3D*”,代码无法按预期工作。
     
    5-要定义一个过滤器来隐藏匹配“*-架构”或“*-结构”的层,使用“~*-架构,~*-结构”,代码不起作用。
     
    6-要定义一个过滤器来隐藏匹配“*-架构”的层或显示匹配“3D*”的层,使用“~*-架构,3D*”,代码不起作用。
    (???)
     
    有什么建议吗?
     
    图层过滤器示例。图纸
  • 回复

    使用道具 举报

    91

    主题

    428

    帖子

    326

    银币

    后起之秀

    Rank: 20Rank: 20Rank: 20Rank: 20

    铜币
    474
    发表于 2022-7-6 08:16:21 | 显示全部楼层
    BIGAL,我不想关闭图层。事实上,图层过滤器在图层“下拉菜单”或“图层窗口”中隐藏图层。
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-6 08:22:58 | 显示全部楼层
     
    对于图形中的此过滤器,您将“Architectural”误贴为“Aechitectural”
     
     
    由于过滤器中的每个规则都是使用OR逻辑应用的,“~*-架构”规则将允许“-Structural”层,类似地,“~*-Structural”规则将允许“-Structural”层,因此两者都将保留。
     
    您需要使用:“(*-架构,*-结构)”来排除两者,但是,此过滤器将存储在ACLYDICTIONARY字典中,而不是ACAD\u LAYERFILTERS字典中,因此需要不同的代码。
     
     
    如果我理解了你的意图,我认为这是不可能的,因为这需要逻辑:即排除“*-架构”并包括“3D*”
    回复

    使用道具 举报

    91

    主题

    428

    帖子

    326

    银币

    后起之秀

    Rank: 20Rank: 20Rank: 20Rank: 20

    铜币
    474
    发表于 2022-7-6 08:32:38 | 显示全部楼层
     
     
     
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-6 08:34:09 | 显示全部楼层
    非常欢迎你,阿汉哈,我希望你能从我的简单示例中了解更多关于字典结构的信息
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

    QQ|关于我们|小黑屋|乐筑天下 繁体中文

    GMT+8, 2025-3-10 04:02 , Processed in 0.384527 second(s), 72 queries .

    © 2020-2025 乐筑天下

    联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表