onzki 发表于 2022-7-6 10:13:24

向心聚爆Lsp修改(需求

大家好,
 
下面是我经常使用的代码,用于快速阻止/分组对象(与分解相反)。我很久以前从网上得到的,这是丹尼斯·基拉科夫先生提供的。我试图与作者取得联系,但我在谷歌上的搜索一直没有结果。
 
我的修改是在选择之前或之后添加一个提示,以指定块名,例如“键入块名”。
 
对不起,我是lisp新手。我也试图理解每行代码并自己修改,但那些“rtos”、“strcat”、“CDATEX”让我有些头痛,我在短序列中迷路了哈哈。
 
非常感谢。:)
 
------------------
 
;内爆。LSP内爆©1996,Dennis Kiracofe
; 更改^v^CAD Studio
 
(定义C:IMP(/SLCT CDATE BNAME)
(setvar“cmdecho”0)
(princ“\n选择要内爆的项目:”)
(setq SLCT(ssget))
(setq)
CDATEX(rtos(getvar“cdate”)2 9)
BNAME(strcat(substr CDATEX 10)
)
(命令“_block”BNAME“0,0”SLCT”)
(命令
“u插入”BNAME“0,0”“”“”
)
)

asos2000 发表于 2022-7-6 10:34:14

试试这个
(defun C:IMP (/ SLCT CDATE BNAME)
(setvar "cmdecho" 0)
(princ "\nSelect items to IMPLODE: ")
(setq SLCT (ssget))
(setq BName (getstring "\nWhat is block name? "))
(setq BP (getpoint "\n Insertion Point:"))
(command "_block" BNAME BP SLCT "")
(command "_insert" BNAME BP "" "" "")
)

asos2000 发表于 2022-7-6 10:47:56

这个可以多次插入
(defun C:IMP (/ SSel BN BP BP2)
(setvar "cmdecho" 0)
(princ "\nSelect items to IMPLODE: ")
(setq SSel (ssget))
(setq BN (getstring "\nWhat is block name? "))
(setq BP (getpoint "\nBase Point of Block:"))
(command "_block" BN BP SSel "")
(while
   (setq BP2 (getpoint "\n Insertion Point of Block:"))
   (command "_insert" BN BP2 "" "" ""))
)
 
 
这个用来保存原始物体
(defun C:IMP (/ SSel BN BP BP2)
(setvar "cmdecho" 0)
(princ "\nSelect items to IMPLODE: ")
(setq SSel (ssget))
(setq BN (getstring "\nWhat is block name? "))
(setq BP (getpoint "\nBase Point of Block:"))
(command "_block" BN BP SSel "")
(command "_insert" BN BP "" "" "")
(command "Explode" "l")

(while
   (setq BP2 (getpoint "\n Insertion Point of Block:"))
   (command "_insert" BN BP2 "" "" ""))
)

alanjt 发表于 2022-7-6 10:59:32

如果你只是在做随机块(带有随机插入点),谁在乎它们叫什么名字。
实际上,通过选择所需的对象,按住鼠标右键并拖动对象,可以快速生成匿名块。从那里,您将收到移动、复制、粘贴为块的提示。
 
如。

 
 
但是,如果要指定名称,则需要考虑检查以确保名称有效(使用snvalid函数),并确保块名称不存在(tblsearch“block”)。

onzki 发表于 2022-7-6 11:23:36

@Asos2000-谢谢!这些比我要求的要多。它工作得很好,非常有用!
 
@alanjt-我从不知道它的存在。。它很快。谢谢分享!
页: [1]
查看完整版本: 向心聚爆Lsp修改(需求