乐筑天下

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

[编程交流] 块编辑Lisp

[复制链接]

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 10:41:56 | 显示全部楼层
无论如何。。。下面是:
  1. (vl-load-com)
  2. (defun c:be (/ opt ss n)
  3. (setq *be:selection* nil)
  4. (if *be:reactor*
  5.    (setq *be:reactor* (vlr-remove *be:reactor*))
  6. )
  7. (initget "-2d -3d Reference")
  8. (if (setq opt (nentselp "\nSelect block entity or [-2d/-3d/Ref]: "))
  9.    (cond
  10.      ((= (type opt) 'STR)
  11.       (if (wcmatch opt "-2d,-3d")
  12.         (setq opt (strcat "(Part Number)" opt))
  13.       )
  14.       (if (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 opt))))
  15.         (progn
  16.           (setq n (sslength ss))
  17.           (while (>= (setq n (1- n)) 0)
  18.             (setq *be:selection* (cons (ssname ss n) *be:selection*))
  19.           )
  20.           (VLR-Reaction-Set (setq *be:reactor* (vlr-editor-reactor "BE")) :vlr-commandEnded 'be:CallBack)
  21.           (setq ss (ssadd (car *be:selection*)))
  22.           (command "._ZOOM" "_Object" ss "")
  23.           (c:BE1)
  24.         )
  25.       )
  26.      )
  27.      ((= (type opt) 'LIST)
  28.       (command ".-RefEdit" opt "_Ok")
  29.       (while (> (getvar "CMDACTIVE") 0) (command ""))
  30.      )
  31.    )
  32. )
  33. (princ)
  34. )
  35. (defun be:CallBack (ro ci / ss)
  36. (if (eq (strcase (car ci)) "REFCLOSE")
  37.    (progn
  38.      (setq ss (ssadd (car *be:selection*)))
  39.      (or *ActiveDoc* (setq *ActiveDoc* (vla-get-ActiveDocument (vlax-get-acad-object))))
  40.      (sssetfirst nil ss)
  41.      (vla-SendCommand *ActiveDoc* "._ZOOM\n_Object\n")
  42.      (vla-SendCommand *ActiveDoc* "BE1\n")
  43.    )
  44. )
  45. (if (and (not *be:selection*) *be:reactor*)
  46.    (setq *be:reactor* (vlr-remove *be:reactor*))
  47. )
  48. (princ)
  49. )
  50. (defun c:BE1 (/ ss)
  51. (setq ss             (ssadd (car *be:selection*))
  52.        *be:selection* (cdr *be:selection*)
  53. )
  54. (sssetfirst nil ss)
  55. (command ".-RefEdit" "_Ok")
  56. (while (> (getvar "CMDACTIVE") 0) (command ""))
  57. )
  58. ;; Clear reactors
  59. (setq rlst (vlr-reactors))
  60. (foreach item rlst
  61. (foreach ro (cdr item)
  62.    (if (= "BE" (vlr-data ro))
  63.      (vlr-remove ro)
  64.    ) ;_ end of if
  65. ) ;_ end of foreach
  66. ) ;_ end of foreach
  67. (setq *be:selection* nil)
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 10:44:25 | 显示全部楼层
哇!
 
你确实为反应堆写了一个。
我稍后再查。。。忙于工作
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 10:47:57 | 显示全部楼层
事实上我不明白你为什么要这么做。您正在编辑块。然后,一旦完成编辑,就可以再次编辑它。冲洗并重复每个块的副本。
 
对不起,也许我只是愚蠢
回复

使用道具 举报

31

主题

170

帖子

139

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 10:50:27 | 显示全部楼层
我不想使用它,因为Bedit不会在适当的位置编辑块。。。它会打开块编辑器,我宁愿在图形中编辑块,因为我使用其他块的参考点。
 
不确定它是否有用,但我所有的图形和块都已标准化,因此每个块都在(0,0,0)处有一个插入点,并且在每个块中(0,0,0)处有一个点实体。这会使这成为可能吗?
回复

使用道具 举报

31

主题

170

帖子

139

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 10:53:38 | 显示全部楼层
 
这是原帖子的问题吗?
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 10:56:20 | 显示全部楼层
不,这是关于我在第11篇文章中写的代码。基本上,它会选择所有名为Reference的块。如果有多个,它将对每个。。。等待用户关闭参照编辑,然后再转到下一个。但如果它是一个块:如果你编辑了一个,你就编辑了所有的块。因此,为什么需要再次编辑第二份? 
顺便说一句,我讨厌使用RefEdit,它会导致出现错误、奇怪的图层/样式名称、带有关联DIM和图案填充的丑陋东西,等等。我更喜欢使用外部参照,然后将一个覆盖到另一个,这样我就可以获得每个点之间的那些参照。但如果你是被迫的,那就顺其自然吧。无论如何,在pBe和我之间,我想我们已经解决了你的请求,不是吗?
回复

使用道具 举报

31

主题

170

帖子

139

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 11:02:23 | 显示全部楼层
 
我不是在寻找编辑多个块的方法。。。我只是想用一种简便的方法来指定我在绝大多数绘图中使用的三个块中的哪一个,我想编辑而不必单击。
 
 
真的,我从来没有遇到过任何问题。。。此外,我认为我没有很好地描述我第一次尝试做的事情,因为我认为这比我需要的要复杂得多,但感谢你在这一点上的帮助。
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 11:03:39 | 显示全部楼层
无论如何欢迎你
 
所以重读你原来的帖子。。。答案是在发出-RefEdit命令之前先使用sssetfirst。
回复

使用道具 举报

31

主题

170

帖子

139

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 11:09:32 | 显示全部楼层
 
啊,打得好,从没想过在激活命令之前选择对象。。。如果其他人感兴趣,我会得到以下信息:
 
  1. 7

 
再次感谢大家的帮助!!!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 21:13 , Processed in 0.745708 second(s), 68 queries .

© 2020-2025 乐筑天下

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