kjb59 发表于 2022-7-6 10:49:01

在20中替换动态块

我已经用动态积木工作了一年了。我是LISP编程新手。我从tek tips的vbcad中找到了这段代码,从我在MATLAB中的工作经验中,我似乎认识到了一些事情。
 
因为ACAD 2010仍然缺少支持
 
该例程应该用另一个块替换动态块。用户选择块,并将预定义的替换块插入其位置。
 
但是,当我使用例程并选择一个块时,它将不允许我选择块,无论是常规块还是动态块,返回“0个选定块”。然后,该函数继续返回“未选择可替换块”
 
它还将设置可见性,但如果我无法选择要替换的块,则该可见性既不在这里也不在那里。
 
有没有关于如何使动态块可替换的想法,或者我在这里遗漏了什么。
 
rec.dwg将是要插入的块。test是我试图替换其中块的dwg。
 
-克格勃
测验图纸
记录.dwg
dyntemp。lsp

Lt Dan's l 发表于 2022-7-6 12:42:45

在此处找到http://forums.autodesk.com/t5/AutoCAD-Express-Tools/Block-Replace-possible-wishlist-item/m-p/361602
 
defun c:TEST (/ ENT1 BL1 NWNM OLD ODNM)
;;LOOKS LIKE robkimross WROTE IT IN 06-09-2005
(prompt "Select blocks to replace: ")
(and
   (setq ENT1 (ssget "_:S" '((0 . "INSERT"))))
   (setq NEWBL "NAME OF BLOCK WHICH TAKES THE PLACE OF OLD BLOCK")
   (not (command "insert" NEWBL nil))
   (setq N (sslength ENT1))
   (setq I 0)
   (repeat N
   (setq BL1 (entget (ssname ENT1 I)))
   (setq NWNM (cons 2 NEWBL))
   (setq OLD (assoc 2 BL1))
   (setq ODNM (cdr OLD))
   (entmod (subst NWNM OLD BL1))
   (setq I (1+ I))
   ) ;_ repeat
) ;_ and
(prin1)
) ;_ defun]
页: [1]
查看完整版本: 在20中替换动态块