乐筑天下

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

[编程交流] 层状反应器

[复制链接]

2

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 15:55:50 | 显示全部楼层 |阅读模式
我想知道是否有人有一个在布局选项卡上切换图层的图层编辑器示例。
 
 
我的想法是将文本放置在活动选项卡的选项卡上的不同层上。
例如,我有一个布局为5的文件,所以我想将文字放置在图层anno text sheet 1或anno text sheet 2上,依此类推。
 
 
任何帮助都会很好。
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 16:04:48 | 显示全部楼层
你为什么不冻结图层?
回复

使用道具 举报

2

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 16:20:05 | 显示全部楼层
我以前有一个lisp或reactor,当我切换布局并键入txt时,会生成一个名为c-anno-tabname-text的层(比如c-anno-C005-text,然后我所要做的就是冻结c-anno-C004-text和c-anno-C006-text层。但我在某些地方丢失了它。
回复

使用道具 举报

16

主题

99

帖子

83

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-5 16:22:08 | 显示全部楼层
嗨,丽莎。
 
这取决于布局选项卡的命名是否正确:
i、 e.C001、C002等。
 
简要测试。
 
 
  1. (defun c:TabNameOn ()
  2. (vl-load-com)
  3. (if (not com:react)
  4.    (progn
  5.      (setq com:react
  6.   (vlr-command-reactor nil
  7.     '((:vlr-commandWillStart . ComReactBegin)
  8.       (:vlr-commandEnded . ComReactEnd)
  9.       (:vlr-commandCancelled . ComReactCancel))))
  10.      (princ "\n<<< Command reactor Switched ON >>>")
  11.       ); end progn
  12.      ); end if
  13.    (princ)
  14.    ); end of c:TabNameOn
  15. (defun c:TabNameOff ()
  16.    (if com:react
  17.      (progn
  18.       (vlr-Remove com:react)
  19.       (setq com:react nil)
  20.       (princ "\n<<< Command reactor Switched OFF >>> ")
  21.       ); end progn
  22.      ); end if
  23.    ); end of c:TabNameOff
  24. (defun ComReactBegin (react args / layname comLst nLay)
  25.    (setq layname (getvar 'ctab))
  26.    (setq layname (strcase (strcat "C-ANNO-" layname "-TEXT")))
  27.    (setq comLst '(((layname 3)
  28.                    "MTEXT"
  29.                    "DTEXT"
  30.                    "TEXT"
  31.                    "EATTEXT"
  32.                    "QLEADER"
  33.                    "MLEADER"
  34.                    "LEADER"
  35.                    "REVCLOUD"
  36.                    "TABLE"
  37.                    "DATAEXTRACTION"
  38.                   )
  39.                  ) ; end comLst
  40.    ) ; end setq
  41.    (foreach itm comLst
  42.      (if (member (car args) itm)
  43. (progn
  44.   (if (not (tblsearch "LAYER" layname))
  45.     (progn
  46.      (setq nLay (vla-Add (vla-get-Layers
  47.         (vla-get-ActiveDocument
  48.           (vlax-get-acad-object))) layname))
  49.      (vla-put-Color nLay (cadar itm))
  50.      (setq com:resFlg T)
  51.      ); end progn
  52.     ); end if
  53.    (setq com:oldLay (getvar 'clayer)
  54.          com:resFlg T)
  55.    (setvar 'clayer layname)
  56.   ); end progn
  57. ); end if
  58.      ); end foreach
  59.    (princ)
  60.    ); end of ComReactBegin
  61. (defun ComReactEnd(react args)
  62.    (if com:resFlg
  63.      (progn
  64. (setq com:resFlg nil)
  65.        (setvar 'clayer com:oldLay)
  66.       ); end progn
  67.      ); end if
  68.    (princ)
  69.    ); end of ComReactEnd
  70. (defun ComReactCancel(react args)
  71.    (if com:resFlg
  72.      (progn
  73. (setq com:resFlg nil)
  74.        (setvar 'clayer com:oldLay)
  75.       ); end progn
  76.      ); end if
  77.    (princ)
  78.    ); end of ComReactCancel
  79. (princ "\nType TABNAMEON to switch-on and TABNAMEOFF switch-off command reactor! ")
  80. (c:TabNameOn)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 16:31:37 | 显示全部楼层
你好
 
试试这个;
  1. (vl-load-com)
  2. ;; Tharwat - 16.Oct.2017        ;;
  3. (defun SetLayerApp ()
  4. (or *SetLayerReactor*
  5.    (setq *SetLayerReactor* (vlr-sysvar-reactor nil '((:vlr-sysVarChanged . SetLayer))))
  6. )
  7. )
  8. (defun SetLayer (e p / l)
  9. (if (or (eq (car p) "CLAYOUT") (eq (car p) "CTAB"))
  10.    (and (or (tblsearch "LAYER" (setq l (strcat "anno-text-" (setq *currenttab* (getvar 'CTAB)))))
  11.             (vla-add (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) l))
  12.         (setvar 'CLAYER l)
  13.         )
  14.    )
  15. )
  16. (SetLayerApp)
回复

使用道具 举报

16

主题

99

帖子

83

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-5 16:46:55 | 显示全部楼层
非常简洁的塔尔瓦!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 16:52:48 | 显示全部楼层
 
谢谢你,菲利普。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:58:57 | 显示全部楼层
可能更容易使用vlr layoutswitched事件。。。
  1. (vl-load-com)
  2. (foreach rtr (cdar (vlr-reactors :vlr-miscellaneous-reactor))
  3.    (if (= "layout-text-reactor" (vlr-data rtr)) (vlr-remove rtr))
  4. )
  5. (vlr-miscellaneous-reactor "layout-text-reactor" '((:vlr-layoutswitched . layout-text-reactor-callback)))
  6. (defun layout-text-reactor-callback ( rtr arg / lyn )
  7.    (if (/= "model" (strcase (car arg) t))
  8.        (progn
  9.            (vla-put-freeze
  10.                (vla-add
  11.                    (cond
  12.                        (layout-text-reactor-layers)
  13.                        ((setq layout-text-reactor-layers (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))))
  14.                    )
  15.                    (setq lyn (strcat "anno-text-" (car arg)))
  16.                )
  17.                :vlax-false
  18.            )
  19.            (setvar 'clayer lyn)
  20.        )
  21.    )
  22.    (princ)
  23. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 13:08 , Processed in 1.100460 second(s), 68 queries .

© 2020-2025 乐筑天下

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