提示圆圈的lsp帮助
你好需要有关创建lsp的帮助,该lsp可以:>提示所选圆的总直径,如果输入了新值,则更改为新直径!(输入或右键单击)无更改
我对属性尝试了“更改”命令,但它只要求半径而不是直径。。。
因此,需要有关lisp例程的帮助,该例程可以在选定的圆旁边显示/提示/显示直径&如果键入新值,则圆直径会立即更改!
谢谢 (defunc:test (/ cir ent z )
(while (setq cir (ssget ":E:L" '((0 . "CIRCLE"))))
(setq cur (* (cdr (assoc 40(setq ent (entget (ssname cir 0))))) 2) )
(redraw (ssname cir 0) 3)
(setq
z (cond
((getreal
(strcat
"\nEnter diameter[Enter to accept: <"
(rtos (setq z cur) 2 2)
">: "
)
)
)
(z)
)
)
(entmod
(subst
(cons 40 (/ z 2.0))
(assoc 40 ent)
ent
)
)
)
(princ)
)
几乎,但不是 我没有意识到乘和除2是如此困难。
可能更糟糕的是,OP可以要求使用Sapi提示输入直径值。间谍语音
“输入直径或输入以接受电流”
我想,如果你将精度设置为10位小数,并且使用定制的钻头,或者使用数控激光器,那么可能是这样。我使用了相当普通的度量大小,并将mms中的精度设置为无小数位数,这使它更容易实现。如果忘记了lisp的位置,可以选择一个或多个圆,然后在QUICKPROPERTIES调色板中查找并更改直径,我一直在使用该调色板。自定义,使其显示所需的任何信息,或在“常规属性”对话框的“直径”下显示。在我看来,用lisp来做这样的事情有点像是为了解决白蚁问题而出现在水箱里的灭虫器。还有很多路要走,但所有的路都通向家。 (defun C:TEST11 ()
(defun *error* (msg) (setq *error* nil) (princ))
(setq cirdia (entsel "\nPick circle to change..."))
(setq entdia (entget (car cirdia)))
(setq diarad (cdr (assoc 40 entdia)))
(setq diame (* diarad 2))
(setq dia (getreal (strcat "\nEnter new diameter :")))
(prompt "\nSelect circle to change...")
(setq A (ssget (list (cons '0 "circle")(cons '40 diarad))))
(setq B (sslength A))
(setq X 0)
(repeat B
(setq NAME (ssname A X))
(setq PARAM (entget NAME))
(setq CHECK (cdr (assoc 0 PARAM)))
(if (/= CHECK "CIRCLE")
(progn (ssdel NAME A)
(setq X (1- X)))
) ;_ end of if
(setq X (1+ X))
) ;_ end of repeat
(setq B (sslength A))
(setq RAD (/ DIA 2))
(setq NEWRAD (cons '40 RAD))
(setq X 0)
(repeat B
(setq NAME (ssname A X))
(setq PARAM (entget NAME))
(setq PARAM (subst NEWRAD (assoc 40 PARAM) PARAM))
(entmod PARAM)
(setq X (1+ X))
) ;_ end of repeat
(prompt (strcat "Selected object - Qty:"(rtos b) ""))
(princ)
)
页:
[1]