SnoBird 发表于 2022-7-5 17:07:35

用户偏好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)
(普林斯)
)
 
 
 
 
(你如何让代码包装的东西工作,使它以更好的格式?我试着点击,突出显示…我是一个笨蛋:-()

marko_ribar 发表于 2022-7-5 17:27:57

这是错误的,将导致语法错误:
(setq“CloudArcSize”。25)
 
不要将值声明为字符串变量。。。
 
这是正确的:
(setq CloudArcSize.25)
 
为了快速参考格式,请使用VLIDE调试界面粘贴代码并单击按钮“格式”,或选择所需内容并单击“格式选择”按钮。。。

BIGAL 发表于 2022-7-5 17:57:50

请看一下,它允许您为圆角命令输入任何半径,而无需担心额外设置的半径步长“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

SLW210 发表于 2022-7-5 18:12:32

页: [1]
查看完整版本: 用户偏好LISP例程i