乐筑天下

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

[编程交流] 属性块实体层

[复制链接]

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 20:25:44 | 显示全部楼层 |阅读模式
你好
有人请帮我用一个lisp程序,它改变了所有标签在一个属性块层为单一层由用户选择。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 20:32:51 | 显示全部楼层
你好
 
你知道指挥官吗?
如果没有帮助,如果可能的话,请用一张示例图来详细说明您的目标。
回复

使用道具 举报

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 20:38:22 | 显示全部楼层
谢谢你的回复。
 
是的,我用过几次巴特曼指挥。使用该命令,我可以更改属性块每个标记的层。但使用该命令,我们只能通过单独选择每个标记来更改层。因此,如果我有一个带有许多标记的属性块,它会变得很乏味。
 
但我的目标是将属性块的所有标记层更改为公共层。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-5 20:46:49 | 显示全部楼层
 
但是,您可以使用块编辑器更改标记层,然后运行Attsync。
 
让我问一下,属性定义的图层是否因每个绘图任务而异?或者它是所有人的永久层?
回复

使用道具 举报

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 20:50:09 | 显示全部楼层
你好,pBe,
我正在寻找LISP,因为这是我现在正在尝试的自动化过程的一部分。
 
是的,属性定义的图层因每个绘图任务而异。但在大约70%的会话中,它是单层的“注释参考”
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-5 20:53:57 | 显示全部楼层
 
你说的自动化过程是指批量?还是你在一个接一个地打开文件?
 
 
那30%呢?这是怎么起作用的?
 
一个lisp例程很简单,我只是想理解它背后的逻辑,我很确定有人正在为此编写代码。
 
我只是在开始编写lisp代码之前确保我理解了所有条件
回复

使用道具 举报

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 21:03:12 | 显示全部楼层
感谢您的关注pBe,
 
让我解释一下我的惯例,
 
我有很多套图纸,每套包含大约20张图纸。每个图形都包含一个属性块。
该块通常包含多达30个标记。
我打开一个图形,然后使用BATTMAN或只需双击块,将块的所有标记层更改为单个所需层。
 
70%意味着…在我工作的10个集合中,有7个需要将层更改为层“Note ref”。即在大多数图纸中,块的所有标记都转换为“Note ref”。
 
撇开这些百分比不谈,
我希望我已经向你澄清了。
请询问是否需要提供更多信息
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 21:07:07 | 显示全部楼层
你好
 
试试看,让我知道
 
  1. (defun c:Test (/ _doc ss name l)
  2. ;;;        Tharwat 31.12.2014        ;;
  3. (if
  4.    (and
  5.      (or
  6.        (tblsearch "LAYER" "Note-ref")
  7.        (progn (alert
  8.                 "Layer name < Note-ref > is not found in the drawing !!"
  9.               )
  10.               nil
  11.        )
  12.      )
  13.      (princ "\n Select Attributed Blocks ...")
  14.      (ssget "_:L" '((0 . "INSERT") (66 . 1)))
  15.    )
  16.     (progn
  17.       (setq _doc (vla-get-ActiveDocument (vlax-get-acad-object)))
  18.       (vlax-for s (setq ss (vla-get-ActiveSelectionSet _doc))
  19.         (if (not (member (setq name (vla-get-effectivename s)) l))
  20.           (setq l (cons name l))
  21.         )
  22.       )
  23.       (vla-startUndomark _doc)
  24.       (vlax-for x (vla-get-blocks _doc)
  25.         (if (member (vla-get-name x) l)
  26.           (vlax-for b x
  27.             (vla-put-layer b "Note-ref")
  28.           )
  29.         )
  30.       )
  31.       (mapcar '(lambda (n) (command "_.attsync" "_name" n)) l)
  32.       (vla-endundomark _doc)
  33.       (if ss
  34.         (vla-delete ss)
  35.       )
  36.     )
  37. )
  38. (princ)
  39. )(vl-load-com)
回复

使用道具 举报

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 21:10:50 | 显示全部楼层
这代码很好用Tharwat
 
你能用代码要求用户从图形中可用的图层中选择图层吗。?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 21:18:15 | 显示全部楼层
 
试试这个,让我知道。
 
  1. (defun c:Test (/ *error* _dialog cho _doc dlg ss name l lay)
  2. ;;;        Tharwat 31.12.2014        ;;
  3. (defun *error* (msg)
  4.    (if (and dlg (findfile dlg))
  5.      (vl-file-delete dlg)
  6.    )
  7.    (if cho
  8.      (setvar 'CMDECHO cho)
  9.    )
  10.    (if (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*EXIT*"))
  11.      (princ (strcat "\n** Error: " msg " **"))
  12.    )
  13.    (princ)
  14. )
  15. ;;;                        ;;;
  16. (defun _dialog (/ nm id f l lay layers)
  17.    (cond
  18.      ((not
  19.         (and
  20.           (setq dlg (vl-filename-mktemp nil nil ".dcl"))
  21.           (setq f (open dlg "w"))
  22.           (write-line
  23.             "options : dialog {label = "Layers"; height = 6;
  24.             spacer_1 ;
  25.             : popup_list { key = "lst";}
  26.             : boxed_row {
  27.             : button { label = "Okay"; key = "oki"; width = 12;}
  28.             : button { label = "Exit"; key = "esc"; is_default = true; is_cancel = true; width = 12;}}}"
  29.             f
  30.           )
  31.           (not (close f))
  32.         )
  33.       )
  34.       (alert "Can't load the temporary file <!>")
  35.      )
  36.      ((or (not dlg)
  37.           (not (> (setq id (load_dialog dlg)) 0))
  38.           (not (new_dialog
  39.                  "options"
  40.                  id
  41.                )
  42.           )
  43.       )
  44.       (princ "\n Can not load Dialog !")
  45.      )
  46.      (t
  47.       (while (setq l (tblnext "LAYER" (not l)))
  48.         (if (not (wcmatch (setq nm (cdr (assoc 2 l))) "*|*"))
  49.           (setq layers (cons nm layers))
  50.         )
  51.       )
  52.       (setq layers (acad_strlsort layers))
  53.       (start_list "lst")
  54.       (mapcar 'add_list layers)
  55.       (end_list)
  56.       (action_tile
  57.         "oki"
  58.         "(setq lay (get_tile "lst"))(done_dialog)"
  59.       )
  60.       (action_tile "esc" "(done_dialog)")
  61.       (start_dialog)
  62.       (unload_dialog id)
  63.       (vl-file-delete dlg)
  64.      )
  65.    )
  66.    (if lay
  67.      (nth (atoi lay) layers)
  68.    )
  69. )
  70. ;;                            ;;;
  71. (if
  72.    (and (setq lay (_dialog))
  73.         (princ "\n Select Attributed Blocks ...")
  74.         (ssget "_:L" '((0 . "INSERT") (66 . 1)))
  75.    )
  76.     (progn
  77.       (setq cho  (getvar 'CMDECHO)
  78.             _doc (vla-get-ActiveDocument (vlax-get-acad-object))
  79.       )
  80.       (setvar 'CMDECHO 0)
  81.       (vlax-for s (setq ss (vla-get-ActiveSelectionSet _doc))
  82.         (if (not (member (setq name (vla-get-effectivename s)) l))
  83.           (setq l (cons name l))
  84.         )
  85.       )
  86.       (vla-startUndomark _doc)
  87.       (vlax-for x (vla-get-blocks _doc)
  88.         (if (member (vla-get-name x) l)
  89.           (vlax-for b x
  90.             (vla-put-layer b lay)
  91.           )
  92.         )
  93.       )
  94.       (mapcar '(lambda (n) (command "_.attsync" "_name" n)) l)
  95.       (vla-endundomark _doc)
  96.       (setvar 'CMDECHO cho)
  97.       (if ss
  98.         (vla-delete ss)
  99.       )
  100.     )
  101. )
  102. (princ)
  103. )(vl-load-com)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 09:05 , Processed in 0.414383 second(s), 72 queries .

© 2020-2025 乐筑天下

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