乐筑天下

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

[编程交流] 块属性重新编号

[复制链接]

8

主题

1647

帖子

1647

银币

初来乍到

Rank: 1

铜币
36
发表于 2022-7-5 17:44:12 | 显示全部楼层 |阅读模式
大家好,我需要一个Lisp程序的程序,我希望有人能帮助我。我不认为这很复杂,但这超出了我的技能范围。
 
我需要的是一种对SDE块中的属性重新编号的方法。
 
我正在处理的块包含4个属性,但唯一需要更改的属性是“阀号”。(见下面的屏幕截图)。
 
有时,在布置大型灌溉计划时,我可能需要返回并在布局中间的某个位置放置另一个阀门。这意味着我必须重新编号所有其他阀门,手动操作可能需要相当长的时间。
 
理想情况下,我希望有一个例程,让我指定起始阀编号,然后让我单击每个块,在单击每个块时增量更新编号。例如,假设我需要将阀门A-6重新编号为A-40。我希望能够启动例行程序,键入6作为起始数字,然后开始点击块自动重新编号。
 
此外,我的示例中的“阀号”是A-1,但字母并不总是“A”。有时它会是“B”或“C”或任何东西,因此只有破折号后的数字可以更改。
 
感谢您的关注,如果您需要更多信息,请告诉我。我会上传区块,但它属于我的客户,所以我不能。
184418rplltx11y75gchio.jpg
回复

使用道具 举报

28

主题

118

帖子

95

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
136
发表于 2022-7-5 18:03:42 | 显示全部楼层
试试Gile的这款小宝石:
 
https://apps.autodesk.com/ACD/en/Detail/Index?id=8051485828049059617&appLang=en&os=Win32_64
 
希望有帮助。。
 
干杯
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:18:37 | 显示全部楼层
你好
 
请尝试一下我刚刚写的这个程序,告诉我你是如何使用它的,如果你需要任何进一步的功能扩展;
 
  1. (defun c:IncAtts (/ *error* run st blk e at pre num v)
  2. ;;        Tharwat. cadtutor        ;;
  3. ;;        Date:04.May.2016        ;;
  4. (defun *error* (msg)
  5.    (if (and msg
  6.             (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*EXIT*"))
  7.             )
  8.      (princ (strcat "\nError: " msg))
  9.      )
  10.    (princ)
  11.    )
  12. (setq run t)
  13. (while (not (setq *starting:number*
  14.                     (cond ((and (setq st
  15.                                        (getstring
  16.                                          (strcat
  17.                                            "\nSpecify starting number after char: eg. [X-1] <"
  18.                                            (if *starting:number*
  19.                                              *starting:number*
  20.                                              (setq *starting:number* "A-1")
  21.                                              )
  22.                                            ">: "
  23.                                            )
  24.                                          )
  25.                                       )
  26.                                 (eq st "")
  27.                                 )
  28.                            *starting:number*
  29.                            )
  30.                           ((and (wcmatch st "*-#*")
  31.                                 (numberp (+ 2 (vl-string-search "-" st)))
  32.                                 )
  33.                            (setq *starting:number* st)
  34.                            )
  35.                           (t nil)
  36.                           )
  37.                    )
  38.              )
  39.    (princ "\nUncorrect string!. Try again")
  40.    )
  41. (princ "\nSelect attributed block with Tag name <1>:")
  42. (while
  43.    (and
  44.      run
  45.      (setq blk
  46.             (car
  47.               (entsel
  48.                )
  49.               )
  50.            )
  51.      (eq (cdr (assoc 0 (setq e (entget blk)))) "INSERT")
  52.      (eq (cdr (assoc 66 e)) 1)
  53.      (if (vl-some
  54.            '(lambda (x)
  55.               (and (eq (vla-get-tagstring x) "1")
  56.                    (setq at x)
  57.                    )
  58.               )
  59.            (vlax-invoke (vlax-ename->vla-object blk) 'getattributes)
  60.            )
  61.        at
  62.        (progn
  63.          (princ "\nAttributed Block doesn't have tag name <1> !")
  64.          (setq run nil)
  65.          )
  66.        )
  67.      )
  68.     (vla-put-textstring
  69.       at
  70.       (setq pre               (substr *starting:number*
  71.                                       1
  72.                                       (1+ (vl-string-search "-" *starting:number*))
  73.                                       )
  74.             num               (substr
  75.                                 *starting:number*
  76.                                 (+ 2 (vl-string-search "-" *starting:number*))
  77.                                 )
  78.             *starting:number* (strcat pre (itoa (1+ (atoi num))))
  79.             v                 (strcat pre num)
  80.             )
  81.       )
  82.     )
  83. (princ)
  84. )(vl-load-com)
回复

使用道具 举报

8

主题

1647

帖子

1647

银币

初来乍到

Rank: 1

铜币
36
发表于 2022-7-5 18:29:19 | 显示全部楼层
 
谢谢你的链接。这看起来很好,但实际上比我需要的要多。这个程序将被我客户办公室的其他人使用,我担心所有这些选项都会让一些用户感到困惑和不知所措。我正在寻找一些超级简单的东西,可以从命令行运行,没有对话框。只需运行命令,输入起始编号,然后开始。
回复

使用道具 举报

8

主题

1647

帖子

1647

银币

初来乍到

Rank: 1

铜币
36
发表于 2022-7-5 18:33:56 | 显示全部楼层
 
嗨,塔瓦特,这正是我想要的,它似乎工作得很好。谢谢你花时间写这篇文章。这将非常有帮助。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:48:34 | 显示全部楼层
 
很好,很乐意帮忙。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 04:33 , Processed in 0.405096 second(s), 67 queries .

© 2020-2025 乐筑天下

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