用户偏好LISP例程i
大家好。。。这是我的第一个帖子,所以请帮我学习正确的过程!我已经写了一个基本的例程,让我的脚在AutoLISP世界湿。我的目标是执行一系列命令,如果愿意的话,可以“重启”我的界面(缩放扩展、qsave、将当前层设置为0等等)
我的两个目标是将圆角半径设置为“0”(例如,不是1/4”),并将revcloud弧长设置为1/4(例如,与1/8相反)
我作为非会员浏览了论坛,但似乎没有一个解决方案能“解决”我的问题。就我所知,除了fillet和revcloud之外,一切似乎都在运行。在下面的代码中,我确实包含了revcloud弧长,但我已经分别对这两部分进行了研究,试图在不关注另一部分的情况下让其中一部分工作。。。它们都在“zoom”函数之上,因为我使用该函数作为已知函数来查看命令是否会执行。(最大化显示仍有效,但半径不变,弧长不变)提前感谢您的帮助!
;向上
;9/21/2016
;修订日期:2016年10月11日
;斯诺伯德著
;
(defun c:up()
(setvar“clayer”“0”)
(命令“qsave”)
(setvar“filletrad”0.0)
(setq“CloudArcSize”。25)
(命令“zoom”“e”)
(命令“regen”)
(命令“layon”)
(setvar“osmode”1211)
(setvar“autosnap”1211)
(普林斯)
)
(你如何让代码包装的东西工作,使它以更好的格式?我试着点击,突出显示…我是一个笨蛋:-() 这是错误的,将导致语法错误:
(setq“CloudArcSize”。25)
不要将值声明为字符串变量。。。
这是正确的:
(setq CloudArcSize.25)
为了快速参考格式,请使用VLIDE调试界面粘贴代码并单击按钮“格式”,或选择所需内容并单击“格式选择”按钮。。。 请看一下,它允许您为圆角命令输入任何半径,而无需担心额外设置的半径步长“f0”f12 f12-34请参见代码。它也做圆和偏移。
; Enter the filet radius as part of a command line entry f100 offset O234 circle c123-45
; note - is used for decimal point
; original code and methology by Alan H
; assistance and code that worked by Lee-Mac
; OCT 2015
( (lambda nil
(vl-load-com)
(foreach obj (cdar (vlr-reactors :vlr-command-reactor))
(if (= "fillet-reactor" (vlr-data obj))
(vlr-remove obj)
)
)
(vlr-command-reactor "fillet-reactor" '((:vlr-unknowncommand . fillet-reactor-callback)))
)
)
(defun filletrad ( / rad)
(setq rad (distof (substr com 2) 2))
(if (<= 0.0 rad)
(progn
(setvar 'filletrad rad)
(vla-sendcommand fillet-reactor-acdoc "_.fillet ")
)
)
)
(defun makecirc ( / rad radd)
(setq rad (distof (substr com 2) 2))
(if (<= 0.0 rad)
(progn
(setvar 'circlerad rad)
(setq pt (getpoint "Pick centre pt"))
(vla-sendcommand fillet-reactor-acdoc "_.Circle !pt")
)
)
)
(defun offdist ( / dist)
(setq dist (distof (substr com 2) 2))
(if (<= 0.0 dist)
(progn
(setvar 'offsetdist dist)
(vla-sendcommand fillet-reactor-acdoc "_.Offset")
)
)
)
(defun pipeoff ( / dist)
(setq dist (distof (substr com 2) 2))
(if (<= 0.0 dist)
(progn
(setq poff (strcat "P" (rtos dist 2 3)))
(if (not poff)(load "Pipe offsets"))
(vla-sendcommand fillet-reactor-acdoc poff)
)
)
)
(defun fillet-reactor-callback ( obj com )
(setq com (vl-string-translate "-" "." (strcase (car com))))
(cond
( (and
(wcmatch com "~*[~F.0-9]*")
(wcmatch com "F*")
(wcmatch com "~F*F*")
(wcmatch com "~*.*.*")
) ; and
(filletrad)
)
((and
(wcmatch com "~*[~C.0-9]*")
(wcmatch com "C*")
(wcmatch com "~C*C*")
(wcmatch com "~*.*.*")
) ;and
(makecirc)
)
((and
(wcmatch com "~*[~O.0-9]*")
(wcmatch com "O*")
(wcmatch com "~O*O*")
(wcmatch com "~*.*.*")
) ; and
(offdist)
)
((and
(wcmatch com "~*[~P.0-9]*")
(wcmatch com "P*")
(wcmatch com "~P*P*")
(wcmatch com "~*.*.*")
) ; and
(pipeoff)
)
) ; master cond
) ; defun
(princ)
(or fillet-reactor-acdoc
(setq fillet-reactor-acdoc (vla-get-activedocument (vlax-get-acad-object)))
)
(princ)
=
Your Code Here
页:
[1]