一个烂尾的程序
(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: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的三倍,仍然有可能粘在一起,不知有什么方法,可以让两者的位置调整到最佳状态 楼主继续啊
测试了一下,很不错
页:
[1]