qcw911 发表于 2010-12-6 14:25:56

如何编辑局部变量和全体变量(用lisp实现焊缝画法)?

本帖最后由 qcw911 于 2010-12-6 18:05 编辑

用lisp实现焊缝画法
贱人工具箱里面就有一个
仿照那个编写了一个
方法比较笨
别见笑。

里面的局部变量 和全体变量怎么编辑?
标注后出现错误


(defun c:hf()
(get_data)
(draw)
(prin1)
)
(defun draw()
(command "_arc" pts pt1 pt2)
(setq en1 (entlast))
    (setq pt3 (polar pts (+ ang 0) rad))
    (setq pt4 (polar pt2 (+ ang 0) rad))
    (setq pt5 (polar pt1 (+ ang 0) rad))
(repeat(1- nn )
    (command "_arc" pt3 pt5 pt4)
    (setq en2 (entlast))
    (command "_TRIM" en1 "" (list en2 pt3 ) "")
   (setqen1 en2)
    (setq pt3 (polar pt3 (+ ang 0) rad))
    (setq pt4 (polar pt4 (+ ang 0) rad))
    (setq pt5 (polar pt5 (+ ang 0) rad))
)
)
(defun get_data()
(setq pts (getpoint"\n 请输入起点:"))
(setq pte (getpoint pts"\n 请输入终点:"))
(setq rad (getreal"\n请输入半径<1>:"))
(if (null rad) (setq rad 1))
(setq ang (angle pts pte))
(setq pt2 (polar pts (+ ang 0) (* rad 2)))
(setq pt1 (polar pts (+ ang (/ pi 4)) (* rad (sqrt 2))))
(setq dd (distance pts pte))
(setqnn (fix (/ dd rad)))
)





chg 发表于 2010-12-6 18:16:32

本帖最后由 chg 于 2010-12-6 18:17 编辑

局部变量你要在你的(defun c:hf (/ pts pt1 pt2.....)....)声明,如果未在斜线后声明的话,将是全局变量。不光是在命令中,在你自定义的函数中一样可以声明局部变量,当然你要掌握好你到底需要什么变量。

qcw911 发表于 2010-12-6 20:26:09

唉 就是不知道怎么声明

chg 发表于 2010-12-7 21:43:13

我不是给你例子了吗,LISP中不需要专门的声明语句,只要在斜线后把你的变量名写上去就是局部变量了,不写就是全局变量

尘缘一生 发表于 2018-4-29 08:36:39

本帖最后由 尘缘一生 于 2018-4-29 09:46 编辑

修改下:焊缝高度不用输入,用第三点点击即可,这样更准确!

(defun c:hf(/ pts pte rad ang pt1 pt2 pt3 pt4 pt5 dd nn en1 en2)
(setq pts (getpoint "\n请输入起点: ")
    pte (getpoint pts "\n请输入终点: ")
    pt1 (getpoint pte "\n请点出焊缝厚度: ")
)
(setq rad (distance pte pt1))
(setq ang (angle pts pte))
(setq pt2 (polar pts (+ ang 0) (* rad 2)))
(setq pt1 (polar pts (+ ang (/ pi 4)) (* rad (sqrt 2))))
(setq dd (distance pts pte))
(setqnn (fix (/ dd rad)))
(command "_arc" pts pt1 pt2)
(setq en1 (entlast))
(setq pt3 (polar pts (+ ang 0) rad))
(setq pt4 (polar pt2 (+ ang 0) rad))
(setq pt5 (polar pt1 (+ ang 0) rad))
(repeat(1- nn )
    (command "_arc" pt3 pt5 pt4)
    (setq en2 (entlast))
    (command "_TRIM" en1 "" (list en2 pt3 ) "")
    (setqen1 en2)
    (setq pt3 (polar pt3 (+ ang 0) rad))
    (setq pt4 (polar pt4 (+ ang 0) rad))
    (setq pt5 (polar pt5 (+ ang 0) rad))
)
(prin1)
)

taoyi0727 发表于 2018-4-29 08:57:05

就是
(defun c:hf ( / ))

括号里 斜杠前面的是局部变量 斜杠后面的是全局变量
页: [1]
查看完整版本: 如何编辑局部变量和全体变量(用lisp实现焊缝画法)?