明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1448|回复: 5

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

[复制链接]
发表于 2010-12-6 14:25 | 显示全部楼层 |阅读模式
本帖最后由 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 ) "")
   (setq  en1 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))
  (setq  nn (fix (/ dd rad)))
)





"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2010-12-6 18:16 | 显示全部楼层
本帖最后由 chg 于 2010-12-6 18:17 编辑

局部变量你要在你的(defun c:hf (/ pts pt1 pt2.....)....)声明,如果未在斜线后声明的话,将是全局变量。不光是在命令中,在你自定义的函数中一样可以声明局部变量,当然你要掌握好你到底需要什么变量。
 楼主| 发表于 2010-12-6 20:26 | 显示全部楼层
唉 就是不知道怎么声明
发表于 2010-12-7 21:43 | 显示全部楼层
我不是给你例子了吗,LISP中不需要专门的声明语句,只要在斜线后把你的变量名写上去就是局部变量了,不写就是全局变量
发表于 2018-4-29 08:36 | 显示全部楼层
本帖最后由 尘缘一生 于 2018-4-29 09:46 编辑

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

  1. (defun c:hf(/ pts pte rad ang pt1 pt2 pt3 pt4 pt5 dd nn en1 en2)
  2.   (setq pts (getpoint "\n请输入起点: ")
  3.     pte (getpoint pts "\n请输入终点: ")
  4.     pt1 (getpoint pte "\n请点出焊缝厚度: ")
  5.   )
  6.   (setq rad (distance pte pt1))
  7.   (setq ang (angle pts pte))
  8.   (setq pt2 (polar pts (+ ang 0) (* rad 2)))
  9.   (setq pt1 (polar pts (+ ang (/ pi 4)) (* rad (sqrt 2))))
  10.   (setq dd (distance pts pte))
  11.   (setq  nn (fix (/ dd rad)))
  12.   (command "_arc" pts pt1 pt2)
  13.   (setq en1 (entlast))
  14.   (setq pt3 (polar pts (+ ang 0) rad))
  15.   (setq pt4 (polar pt2 (+ ang 0) rad))
  16.   (setq pt5 (polar pt1 (+ ang 0) rad))
  17.   (repeat  (1- nn )
  18.     (command "_arc" pt3 pt5 pt4)
  19.     (setq en2 (entlast))
  20.     (command "_TRIM" en1 "" (list en2 pt3 ) "")
  21.     (setq  en1 en2)
  22.     (setq pt3 (polar pt3 (+ ang 0) rad))
  23.     (setq pt4 (polar pt4 (+ ang 0) rad))
  24.     (setq pt5 (polar pt5 (+ ang 0) rad))
  25.   )
  26.   (prin1)
  27. )

发表于 2018-4-29 08:57 | 显示全部楼层
就是
(defun c:hf ( / ))

括号里 斜杠前面的是局部变量 斜杠后面的是全局变量
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-19 08:33 , Processed in 0.292321 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表