乐筑天下

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

[编程交流] Lisp请帮忙。。。。。。

[复制链接]
Cat

6

主题

45

帖子

39

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 09:46:47 | 显示全部楼层 |阅读模式
早上好Lispers,
我使用下面的lisp在一些图形中定位两个属性标记,但我需要能够选择目标块,因为它是整个图形中的一个常见标记。我比你知道的还要感激。
 
  1. (defun c:chgnonc (/ tagname new_val i ss en ch an ad)
  2. (setq tagname "TERM01")
  3. (setq new_val "3")
  4. (and (setq i -1 ss (ssget "X" '((0 . "INSERT")(66 . 1))))
  5.       (while (setq en (ssname ss (setq i (1+ i))))
  6.              (setq ch nil
  7.                    an (entnext en)
  8.                    ad (entget an))
  9.              (while (= "ATTRIB" (cdr (assoc 0 ad)))
  10.                     (and (= (strcase (cdr (assoc 2 ad)))
  11.                             (strcase tagname))
  12.                          (entmod (subst (cons 1 new_val)
  13.                                         (assoc 1 ad) ad))
  14.                          (setq ch T))
  15.                     (setq an (entnext an)
  16.                           ad (entget an)))
  17.              (if ch (entupd en))))
  18. (setq tagname "TERM02")
  19. (setq new_val "4")
  20. (and (setq i -1 ss (ssget "X" '((0 . "INSERT")(66 . 1))))
  21.       (while (setq en (ssname ss (setq i (1+ i))))
  22.              (setq ch nil
  23.                    an (entnext en)
  24.                    ad (entget an))
  25.              (while (= "ATTRIB" (cdr (assoc 0 ad)))
  26.                     (and (= (strcase (cdr (assoc 2 ad)))
  27.                             (strcase tagname))
  28.                          (entmod (subst (cons 1 new_val)
  29.                                         (assoc 1 ad) ad))
  30.                          (setq ch T))
  31.                     (setq an (entnext an)
  32.                           ad (entget an)))
  33.              (if ch (entupd en))))
  34. (prin1))
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 10:09:34 | 显示全部楼层
[列表]
  • 通过从(ssget)调用中删除“X”参数,您现在必须选择插入
  • 您可以在(2“*”)字段中添加块名过滤。使用块名或模式“BLK1、BLK2”或“BLK*”编辑“*”值,或将所有块保留为“*”。它接受通配符字符串搜索。
  • 通过制作编辑值的关联列表(ev),您只需遍历该集合一次。根据需要在列表中添加或删除原子。但一定要保留正确的(在本例中为点对)
    [/列表]
     
    1. [b][color=BLACK]([/color][/b]defun chmultag [b][color=FUCHSIA]([/color][/b]/ ev ss en ch an ad tn[b][color=FUCHSIA])[/color][/b]
    2. [b][color=FUCHSIA]([/color][/b]setq ev '[b][color=NAVY]([/color][/b][b][color=MAROON]([/color][/b][color=#2f4f4f]"TERM01"[/color] . [color=#2f4f4f]"3"[/color][b][color=MAROON])[/color][/b]
    3.             [b][color=MAROON]([/color][/b][color=#2f4f4f]"TERM02"[/color] . [color=#2f4f4f]"4"[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
    4. [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]0 . [color=#2f4f4f]"INSERT"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]2 . [color=#2f4f4f]"*"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]66 . 1[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
    5.       [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
    6.              [b][color=MAROON]([/color][/b]setq ch nil
    7.                    an [b][color=GREEN]([/color][/b]entnext en[b][color=GREEN])[/color][/b]
    8.                    ad [b][color=GREEN]([/color][/b]entget an[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
    9.              [b][color=MAROON]([/color][/b]while [b][color=GREEN]([/color][/b]= [color=#2f4f4f]"ATTRIB"[/color] [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 0 ad[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
    10.                     [b][color=GREEN]([/color][/b]setq tn [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 2 ad[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
    11.                     [b][color=GREEN]([/color][/b]and [b][color=BLUE]([/color][/b]assoc tn ev[b][color=BLUE])[/color][/b]
    12.                          [b][color=BLUE]([/color][/b]setq ch T[b][color=BLUE])[/color][/b]
    13.                          [b][color=BLUE]([/color][/b]entmod [b][color=RED]([/color][/b]subst [b][color=PURPLE]([/color][/b]cons 1 [b][color=TEAL]([/color][/b]cdr [b][color=OLIVE]([/color][/b]assoc tn ev[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
    14.                                         [b][color=PURPLE]([/color][/b]assoc 1 ad[b][color=PURPLE])[/color][/b] ad[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
    15.                     [b][color=GREEN]([/color][/b]setq an [b][color=BLUE]([/color][/b]entnext an[b][color=BLUE])[/color][/b]
    16.                           ad [b][color=BLUE]([/color][/b]entget an[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
    17.              [b][color=MAROON]([/color][/b]and ch [b][color=GREEN]([/color][/b]entupd en[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
    18.              [b][color=MAROON]([/color][/b]ssdel en ss[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
    19. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

     
     
    未经测试。
     
    玩得开心-大卫
  • 回复

    使用道具 举报

    Cat

    6

    主题

    45

    帖子

    39

    银币

    初来乍到

    Rank: 1

    铜币
    30
    发表于 2022-7-6 10:12:51 | 显示全部楼层
    谢谢大卫。我希望能够使用旧的lisp(因为我是lisp村的白痴),并能够获得用户输入来选择带有十字路口或窗户的街区。这些块并不一致,但反映了不同设备的NO或NC接触状态),但这可能是一个很高的要求。
    回复

    使用道具 举报

    26

    主题

    1495

    帖子

    20

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    118
    发表于 2022-7-6 10:23:40 | 显示全部楼层
    只需从(ssget)调用中删除“X”。这将强制用户输入。
     
     
    至于NO&NC,块是否具有唯一的名称?
     
     
    -大卫
    回复

    使用道具 举报

    Cat

    6

    主题

    45

    帖子

    39

    银币

    初来乍到

    Rank: 1

    铜币
    30
    发表于 2022-7-6 10:45:51 | 显示全部楼层
     
     
    不一致,大卫。我再试试。不管怎样,我都很感激。
    回复

    使用道具 举报

    106

    主题

    1万

    帖子

    101

    银币

    顶梁支柱

    Rank: 50Rank: 50

    铜币
    1299
    发表于 2022-7-6 10:54:24 | 显示全部楼层
    您可以为选项P L I W C X WP CP等的ssget check帮助添加额外的“mode”,这样您就可以将交叉窗口作为默认的拾取方法以及过滤。
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-7 00:15 , Processed in 0.491656 second(s), 64 queries .

    © 2020-2025 乐筑天下

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