你好
我是新来的,所以如果我要求一些已经写好的东西,不要生气。
所以,正如标题所说,我需要一个lisp例程来更改块的属性。
具体来说,我需要更改块中多个点的高程。
我在网上找到了一些lisp例程,但并没有达到我的预期。
这是一个最接近我要求的Lisp程序的句子:
(defun pluserr (msg)(if msg (princ msg))(command "_.undo" "_end")(if ps (setvar "pickstyle" ps))(if olderr (setq *error olderr))(princ))(defun c:smileytongue:lus (/ ps plusval ent elist numstr num tval plcs elist2)(setq ps nil plusval nil ent nil elist nil numbstr nil num nil tval nilplcs nil elis2 nil)(setq olderr *error* *error* pluserr)(command "_.undo" "_g")(setq ps (getvar "pickstyle"))(setvar "pickstyle" 0)(setq plusval (getreal "\n Plus value: "))(setq plcs (getint "\nHow many decimal places? <0>: "))(if (null plcs) (setq plcs 0))(setq ent (nentsel))(while ent(setq elist (entget (car ent)))(setq numstr (cdr (assoc 1 elist)))(setq num (atof numstr))(setq tval (+ plusval num))(setq total (rtos tval 2 plcs))(setq elist2 (subst (cons 1 total) (cons 1 numstr) elist))(entmod elist2)(if (= (cdr (assoc 0 elist)) "ATTRIB")(command "regen"))(setq ent (nentsel)));end while(setvar "pickstyle" ps)(command "_.undo" "_end")(setq *error olderr)(princ))
好这很好,但它允许选择多个对象或整个块。
它还改变了点的整个高程,但我想将原始高程添加到新高程。举个例子:如果我有一个高程为230,33的点,并想“删除”该高程为0,5。所以一个新的高度是229,83。
因此,如果我为多个点更改此高程,则会将选定点的所有高程减0,5(或我确定的其他值)。
我附上了一张我的点块看起来是什么样子的照片
如果有人能帮助我,我会很高兴。