乐筑天下

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

[编程交流] 重命名块

[复制链接]

2

主题

389

帖子

387

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 07:08:46 | 显示全部楼层
我认为我很好地理解了这个概念,我想我只是不知道它实际上是在哪里提供的。它看起来确实令人印象深刻。我喜欢这些解决方案的一点是,原始名称位于新名称框中。这既可以识别原始块,也可以进行部分编辑。非常方便。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:10:09 | 显示全部楼层
 
你这么说真是太好了。。。不幸的是,我和你们一样,仍在等待Autodesk员工完成他们的应用程序审查,以便可以在Autodesk Exchange上发布。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 07:12:17 | 显示全部楼层
 
我必须说。在同一个职位上,我从来没有受到过侮辱和赞扬。做得好。
 
回答你的问题:考虑到最初的问题(我回答的问题)有多模糊,我想检查OP是否真正知道RENAME命令的存在。很多时候,人们请求LISP来完成一个已经可以由本机命令执行的任务。首先我们学习系统,然后我们学习操作它。
 
现在,考虑到OP在他们的第二篇文章中提供的额外信息,我很高兴提供我已经编写的代码,正如您所指出的,但未能链接到您自己。顺便说一句,我很感激有一个链接,因为如果它过时了,我非常乐意更新。我已经发布了很多代码,并没有很好地跟踪它。
 
我很抱歉没有早点看这个,但我大部分周末都在我的工作室或和孩子们在一起。
 
这是我的块重命名函数。它将允许用户选择块图元,然后指定新名称。现有名称显示在弹出对话框中,用户可以根据需要查看和稍微更改现有名称。我相信我已经解释了所有问题,但没有什么是可以保证的。我希望这有帮助。
 
  1. (defun c:RenB (/ obj old new)
  2. ;; Rename Selected Block
  3. ;; Required Subroutines: AT:GeSel, AT:Getstring
  4. ;; Alan J. Thompson, 03.10.10 / 07.15.10
  5. (if
  6.    (and
  7.      (AT:GetSel
  8.        entsel
  9.        "\nSelect block to rename: "
  10.        (lambda (x)
  11.          (if
  12.            (and (eq "INSERT" (cdr (assoc 0 (entget (car x)))))
  13.                 (/= 4
  14.                     (logand (cdr (assoc 70 (tblsearch "BLOCK" (cdr (assoc 2 (entget (car x))))))) 4)
  15.                 )
  16.            )
  17.             (setq obj (vlax-ename->vla-object (car x)))
  18.          )
  19.        )
  20.      )
  21.      (setq old (if (vlax-property-available-p obj 'effectivename)
  22.                  (vla-get-effectivename obj)
  23.                  (vla-get-name obj)
  24.                )
  25.      )
  26.      (not (vl-position
  27.             (setq new (AT:GetString "Specify new block name:" old))
  28.             (list old "" nil)
  29.           )
  30.      )
  31.    )
  32.     (cond
  33.       ((tblsearch "BLOCK" new) (alert (strcat """ new "" already exists!")))
  34.       ((not (snvalid new)) (alert (strcat """ new "" is an invalid name!")))
  35.       ((and (snvalid new) (not (tblsearch "block" new)))
  36.        (if
  37.          (vl-catch-all-error-p
  38.            (vl-catch-all-apply
  39.              'vla-put-name
  40.              (list
  41.                (vla-item (vla-get-blocks
  42.                            (cond (*AcadDoc*)
  43.                                  ((setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
  44.                            )
  45.                          )
  46.                          old
  47.                )
  48.                new
  49.              )
  50.            )
  51.          )
  52.           (alert (strcat "Block: " old " could not be renamed to: " new))
  53.           (alert (strcat "Block: " old " renamed to: " new))
  54.        )
  55.       )
  56.     )
  57. )
  58. (princ)
  59. )
  60. (defun AT:GetSel (meth msg fnc / ent)
  61. ;; meth - selection method (entsel, nentsel, nentselp)
  62. ;; msg - message to display (nil for default)
  63. ;; fnc - optional function to apply to selected object
  64. ;; Ex: (AT:GetSel entsel "\nSelect arc: " (lambda (x) (eq (cdr (assoc 0 (entget (car x)))) "ARC")))
  65. ;; Alan J. Thompson, 05.25.10
  66. (while
  67.    (progn (setvar 'ERRNO 0)
  68.           (setq ent (meth (cond (msg)
  69.                                 ("\nSelect object: ")
  70.                           )
  71.                     )
  72.           )
  73.           (cond ((eq (getvar 'ERRNO) 7) (princ "\nMissed, try again."))
  74.                 ((eq (type (car ent)) 'ENAME)
  75.                  (if (and fnc (not (fnc ent)))
  76.                    (princ "\nInvalid object!")
  77.                  )
  78.                 )
  79.           )
  80.    )
  81. )
  82. ent
  83. )
  84. (defun AT:GetString (#Title #Default / #FileName #FileOpen #DclID #NewString)
  85. ;; Getstring Dialog Box
  86. ;; #Title - Title of dialog box
  87. ;; #Default - Default string within edit box
  88. ;; Alan J. Thompson, 08.25.09
  89. (setq #FileName (vl-filename-mktemp "" "" ".dcl")
  90.        #FileOpen (open #FileName "W")
  91. )
  92. (foreach x '("TempEditBox : dialog {" "key = "Title";" "label = "";"
  93.               "initial_focus = "Edit";" "spacer;" ": row {" ": column {" "alignment = centered;"
  94.               "fixed_width = true;" ": text {" "label = "";" "}" "}" ": edit_box {"
  95.               "key = "Edit";" "allow_accept = true;" "edit_width = 40;" "fixed_width = true;" "}"
  96.               "}" "spacer;" ": row {" "fixed_width = true;" "alignment = centered;" ": ok_button {"
  97.               "width = 11;" "}" ": cancel_button {" "width = 11;" "}" "}" "}//"
  98.              )
  99.    (write-line x #FileOpen)
  100. )
  101. (close #FileOpen)
  102. (setq #DclID (load_dialog #FileName))
  103. (new_dialog "TempEditBox" #DclID)
  104. (set_tile "Title" #Title)
  105. (set_tile "Edit" #Default)
  106. (action_tile "accept" "(setq #NewString (get_tile "Edit"))(done_dialog)")
  107. (action_tile "cancel" "(done_dialog)")
  108. (start_dialog)
  109. (unload_dialog #DclID)
  110. (vl-file-delete #FileName)
  111. #NewString
  112. )
回复

使用道具 举报

2

主题

389

帖子

387

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 07:16:24 | 显示全部楼层
:lol:谢谢。五年后,是时候了!坚持下去,它会变得更好,或者更糟,或者,好吧,不管怎样。。。。(以防万一有人错过了……我的任何评论都不是有意侮辱。)是的,同意。我只是希望我知道如何像一些比我新的人一样操纵它。哦,等等。你说的是AutoCAD,不是吗?这是我找到它的地方。但我认为是一样的;日期相同。我没有张贴它,因为我在想(可能是错误的)你最好祝福它,等等。再次,做得好。 
http://forums.augi.com/showthread.php?121288-使用LISP重命名-a-block/page2
 
我可不愿意为此道歉!“对不起,我一直在明确我的优先事项。”真为你高兴!我相信这里很多其他好人也这么做。
回复

使用道具 举报

2

主题

389

帖子

387

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 07:19:22 | 显示全部楼层
我能说什么?你是个职业选手! 
是的,很多人都这么说。(注意那些不懂的人。别担心。我只是借此机会就标点符号开玩笑。) 
这通常是一个漫长的等待吗?不要觉得有义务回答这个问题。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:22:35 | 显示全部楼层
 
在我相对较短的旅程中,我从alanjt(这条线索)和其他许多人那里得到了很多帮助(见左侧的“加入日期”,当时我不知道什么是Defun)。
 
 
现在这太可悲了。。。没有一点轻浮的生活是什么!?!
 
 
 
 
 
简单的回答是。。。视情况而定。
 
在我有限的经验中,答案是肯定的“是”,并且来自一个拥有Autodesk Developer Network(ADN)成员资格的人。
 
我第一次提交的应用程序还没有发布,这就足够了。。。简而言之,Autodesk不喜欢我将我的应用程序称为“AutoCAD防病毒软件”,因为他们的新[设计糟糕]安全协议,这是我在Beta论坛中非常批评的一点,在这里我很礼貌地这样说,因此我将我的应用程序重命名为“AutoCAD黑名单”
 
应用程序通过XML文件(提供)根据用户定义的“定义”查找和“黑名单”文件(即Acad.fas),并可以在将其加载到启动序列之前将其“黑名单”中(一些公司仅使用未编译的代码,一些公司不使用,等等。因此使用用户定义的XML)。
 
我不介意这么多,是杰出的ADN开发人员指示我,我必须准备一份所有已知AutoCAD病毒的列表(20多年来他们从未这样做过),将它们放在我的网站上(这很好),并删除所有用户交互(意味着在用户不知道或没有任何控制的情况下实现这些文件名;我会很生气!)。。。当AutoCAD病毒为Acad时。[lsp[fas[vlx]]和AcadDoc。[lsp[fas[vlx]],我倾向于相信用户应该决定什么是,什么是不被处理的。最后,在通过电子邮件陈述了数周之后,我的案例得以升级,他们删除了这个愚蠢的要求。
 
我的第二个应用程序“为AutoCAD右键单击重命名”仍然没有完成初步审查。。。状态仅在Autodesk Exchange的“我的上传”页面的队列中显示“待定”。我已经启动了其他几个插件(比如光栅切换插件),但在您提交审查之前,实际上需要做很多工作,所以我们将看看它是如何发展的。
 
干杯
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 07:25:15 | 显示全部楼层
 
我只是在跟你开玩笑。
 
我感谢你张贴的链接,这是可以接受的。我已经把它贴到了公共论坛上,所以它可以让全世界继续分享,如果有价值的话。如果你有这个链接,我宁愿把它贴出来,而不是另一个代码副本,只保留最少的版本。我没有网站,所以你可以在论坛上找到我的父母。
 
提供的augi链接上的代码已更新。谢谢你的发帖。
回复

使用道具 举报

96

主题

322

帖子

234

银币

后起之秀

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

铜币
474
发表于 2022-7-6 07:28:31 | 显示全部楼层
:);)SOOOOOOO thnx到所有特别的nod684和GP\U
太好了
这些Lisp程序很好用
回复

使用道具 举报

17

主题

193

帖子

179

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
84
发表于 2022-7-6 07:31:10 | 显示全部楼层
 
 
很好的常规,艾伦!
谢谢分享
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 07:37:03 | 显示全部楼层
 
谢谢,非常欢迎。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-16 01:15 , Processed in 2.223732 second(s), 71 queries .

© 2020-2025 乐筑天下

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