皇上快溜 发表于 2016-8-7 23:52:04

一个烂尾的程序

(defun c:q1 ()
(setvar "cmdecho" 0)
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(setq dd (getdist "\n圆半径<5>: "))
(if (null dd)
    (setq dd 5)
)
(setq num (getint "\n起始编号<1>: "))
(if (null num)
    (setq num 1)
)

(if (= shuoming nil) (setq shuoming "0"))
(princ "\n说明: Or [螺母(1) /轴(2) /轴承(3)] <")
(princ shuoming)(princ ">: ")
(setq shuoming (getstring ))
         (if (= shuoming "")(setq shm "")) ;(setq tt shuoming)
         (if (= shuoming "1") (setq shm "螺母"))
         (if (= shuoming "2") (setq shm "轴"))
(setq shuoming shm)

(setq dd2 (/ dd 5.))
(while (setq pt1 (getpoint "\n第一点<退出>: "))
    (command "donut" 0 dd2 pt1 "")
    (setq pt2(getpoint pt1 "\n第二点<退出>: ")
          pt2a (polar pt2 (angle pt2 pt1) dd)
    )

    (command "Ortho" "on")
    (setq pt3 (getpoint pt2 "\n方向:"))
    (command "Ortho" "off")
    (setq pt3 (polar pt2 (angle pt2 pt3) dd))

    (command "line" pt1 pt2a "")
    (command "circle" pt2 dd)
    (command "text" "m" pt2 (/ dd 1.3) 0 (itoa num))
    (command "text" "m" pt3 (/ dd 1.3) 0 shm)
    (setq num (1+ num))
)
(setvar "osmode" os)
(princ)
)

皇上快溜 发表于 2016-8-8 00:13:45

本帖最后由 皇上快溜 于 2016-8-8 00:30 编辑

首先,该程序主要部分来自明经,感谢原作者,我是在其基础上添加了一些东西,另外还要感谢版主 ZZXXQQ。添加部分受了他的指点

无奈,基础太差,程序然是个烂尾的程序。求各位指点点,,
问题有两个
1:从球号1递进到球号2时,程序不能循环到(if (= shuoming nil) (setq shuoming "0"))处。
想在球号2时输入别的选项
2:文字(图中“螺母”)插入点定义任然不理想.
(setq pt3 (polar pt2 (angle pt2 pt3) dd))处的dd为球号半径,想把它改为dd的三倍,不知道怎么定义。
另外,处于水平位置时,如图中的球号3,那种情形。文字插入点即使dd的三倍,仍然有可能粘在一起,不知有什么方法,可以让两者的位置调整到最佳状态

LIULISHENG 发表于 2017-9-25 14:56:30

楼主继续啊

czb203 发表于 2020-8-6 21:28:48


测试了一下,很不错
页: [1]
查看完整版本: 一个烂尾的程序