乐筑天下

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

[编程交流] AutoLisp切换多个

[复制链接]

3

主题

4

帖子

1

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 08:00:11 | 显示全部楼层 |阅读模式
你好
我刚刚开始编程,很难创建一个可以与按钮一起使用以打开或关闭多个层的程序。
 
关于如何开始,有什么建议吗?
 
迈克尔。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:22:14 | 显示全部楼层
为什么不使用图层状态管理器?
LAYERSTATE-->恢复
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:32:46 | 显示全部楼层
通过使用图层状态可以实现相同的结果。
但是,如果要为此编写AutoLISP例程,则可以在前面的讨论中找到解决方案:
[列表]
  • http://www.cadtutor.net/forum/showthread.php?8718
  • http://www.cadtutor.net/forum/showthread.php?23568
    [/列表]
  • 回复

    使用道具 举报

    3

    主题

    4

    帖子

    1

    银币

    初来乍到

    Rank: 1

    铜币
    15
    发表于 2022-7-6 08:45:33 | 显示全部楼层
    感谢您的回复,我将查看图层状态管理器。我希望有一个按钮,这样它可以对那些习惯使用按钮的人友好,并且不太适应变化和可见性状态。
     
    干杯
     
    迈克尔。
    回复

    使用道具 举报

    35

    主题

    2471

    帖子

    2447

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    174
    发表于 2022-7-6 08:52:22 | 显示全部楼层
    可以使用以下宏创建按钮:
    1. (command "_LAYER" "_A" "_R" [color=blue][i]LayerStateName[/i][/color] "" "")
    回复

    使用道具 举报

    VVA

    1

    主题

    308

    帖子

    308

    银币

    初来乍到

    Rank: 1

    铜币
    8
    发表于 2022-7-6 09:10:10 | 显示全部楼层
    尝试使用
    1. (defun layer-filters-status-change
    2.       (lstnames / vla:lrs vla:xdic vla:dic vla:spsc name datatype datavalue onoff sps)
    3. (setq lstnames (list lstnames))
    4. ;|=======================================================================================
    5. * layer-filters-status-change
    6. * http://www.caduser.ru/forum/index.php?PAGE_NAME=message&FID=34&TID=20414&MID=114022#message114022
    7. * Arguments [Type]:
    8.   lstnames = String - the name of the group filter
    9. * Return [Type]:
    10.   nil
    11. *
    12. * If at least one layer group filter is turned off, all the layers of the filter are also included
    13. * Use:
    14. ^C^C(if (not layer-filters-status-change)(load "layer-filters-status-change"))(layer-filters-status-change "AT")
    15. * Create command (on\off group filters AT): (defun C:AT ()(layer-filters-status-change "AT"))
    16. * Macros:
    17. * 'AT;
    18. =======================================================================================|;
    19. (defun massoc (key alist / x nlist)
    20. (foreach x alist
    21.    (if (eq key (car x))(setq nlist (cons (cdr x) nlist))))
    22. (reverse nlist))
    23. (vl-load-com)
    24. (setq vla:lrs (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))
    25. (if (= (vla-get-hasextensiondictionary vla:lrs) :vlax-true)
    26.    (progn
    27.      (setq lstnames (mapcar 'strcase lstnames))
    28.      (setq vla:xdic (vla-getextensiondictionary vla:lrs))
    29.      (setq vla:dic nil)
    30.      (if (progn (vlax-for item   vla:xdic
    31.         (if (= (vla-get-name item) "ACLYDICTIONARY")
    32.           (setq vla:dic item)
    33.           ) ;_  if
    34.         ) ;_  vlax-for
    35.       vla:dic
    36.       ) ;_  progn
    37.   (progn
    38.     (vlax-for vla:spsc vla:dic
    39.       (if
    40.         (progn
    41.      (setq name (vla-get-name vla:spsc))
    42.      (vla-getxrecorddata vla:spsc 'datatype 'datavalue)
    43.      (member (strcase (vlax-variant-value
    44.               (vlax-safearray-get-element
    45.                 datavalue
    46.                 (vl-position 300 (vlax-safearray->list datatype))
    47.                 ) ;_  vlax-safearray-get-element
    48.               ) ;_  vlax-variant-value
    49.                  ) ;_  strcase
    50.              lstnames
    51.              ) ;_  member
    52.      ) ;_  progn
    53.          (progn
    54.     (setq sps (entget(vlax-vla-object->ename vla:spsc))
    55.           sps (massoc 330 (member (assoc 300 sps) sps))
    56.           sps (vl-remove-if 'null (mapcar 'entget sps))
    57.           sps (mapcar '(lambda (x)(cons (cdr(assoc 2 x))(cdr(assoc 62 x)))) sps))
    58.     (if (vl-member-if '(lambda (x)(minusp (cdr x))) sps)
    59.       (setq onoff :vlax-true)
    60.       (setq onoff :vlax-false)
    61.       )
    62.      (setq sps (mapcar '(lambda (x)(vla-Item vla:lrs x)) (mapcar 'car sps)))
    63.      (mapcar '(lambda (x)(vla-put-layeron x onoff)) sps)
    64.    
    65.       ) ;_  progn
    66.          ) ;_  if
    67.       ) ;_  vlax-for
    68.     (vlax-release-object vla:dic)
    69.     )
    70.   ) ;_ if
    71.      (vlax-release-object vla:xdic)
    72.      ) ;_  progn
    73.    ) ;_  if
    74. (vlax-release-object vla:lrs)
    75. (princ)
    76. )

    如何工作
    1.创建图层组过滤器(例如,名称为AT)
    2.创建命令
    1. (defun C:AT ()(layer-filters-status-change "AT"))

    3.键入命令行AT或“AT”
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-9 20:05 , Processed in 0.476682 second(s), 75 queries .

    © 2020-2025 乐筑天下

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