求助!新手写的代码,有几个问题求指点。
本帖最后由 6224jjyy 于 2015-12-5 18:33 编辑程序思路,输入圆的周长为<600>,就画1个周长500的圆,和一个周长100的圆弧。并在圆心标注0.6。
同理,输入圆的周长为<4000>,就画8个周长500的圆,并在圆心标注4。
现在主要有3个问题。。
1、直接用AP加载代码不成功,必须进入lisp编辑器,把代码复制进去,才能加载上。什么原因?
2、(command "layer" "m" "@立管" "c" 1 "" ""),这段代码,不能设置图层的颜色,哪里写错了?
3、我想让圆的的标注,保留1位小数(比如是0.6),下面三行代码,应该怎么改?
如果把系统变量“DIMZIN”改成4,CAD显示是15位小数(如下图所示“0.600000000000000”)。
如果把系统变量“DIMZIN”改成8,CAD显示是整数(如下图所示“0”)。
(setq 圆的周长 (read (rtos 圆的周长 2 1)));转换精度,保留小数点后一位
(setq 圆的标注 (/ 圆的周长 1000))
(command "text" "j" "m" 圆心位置 30 0 圆的标注)
-------------------------------------------------------------------------------------------------------------
(defun c:cc()
(setq 圆的周长 (getint "请输入圆的周长mm :"))
(setq 圆心位置 (GETPOINT "\n指定圆心位置 : "))
(while 圆心位置
(if (= (rem 圆的周长 100) 0)
(command (c1))
(princ "\n输入错误")
)
(setq 圆心位置 (GETPOINT "\n指定圆心位置 : "))
))
(defun c1()
(setq AA nil BB nil ang nil) ;清空参数(必须清空ang)
(setvar "cmdecho" 0) ;关闭系统响应
(setq 图层 (getvar "clayer")) ;备份图层
(setq 颜色 (getvar "Cecolor")) ;备份颜色
(setq AA (/ 圆的周长 500))
(setq BB (rem 圆的周长 500))
(command "layer" "m" "@立管" "c" 5 "" "") ;设置图层(有问题)
(setvar "cecolor" "bylayer") ;设置颜色的系统变量
(setq 圆的周长 (read (rtos 圆的周长 2 1))) ;转换精度,保留小数点后一位
(setq 圆的标注 (/ 圆的周长 1000))
(command "text" "j" "m" 圆心位置 30 0 圆的标注) ;精度有问题
(repeat AA
(COMMAND "circle" 圆心位置 79.58)
)
(cond
((= bb 400)(setq ang (* 360 (/ 400.0 500))))
((= bb 300)(setq ang (* 360 (/ 300.0 500))))
((= bb 200)(setq ang (* 360 (/ 200.0 500))))
((= bb 100)(setq ang (* 360 (/ 100.0 500))))
;(t)可以不要T
)
(COMMAND "arc" "c" 圆心位置 (polar 圆心位置 0 79.58) "a" ang "")
(princ)
(setvar "cmdecho" 1) ;开启系统响应
(setvar "clayer" 图层) ;还原图层
(setvar "Cecolor" 颜色) ;还原颜色
) 本帖最后由 6224jjyy 于 2015-12-5 17:32 编辑
头疼死了。。lisp这么难!写几个简单的代码,总是搞不定,出问题。。
求各路大神的帮助!!!帮忙改一改代码。。思路就是,根据输入值,画圆和圆弧。 (defun c:cc ()
(setq leng (getint "请输入圆的周长mm: "))
(if (= (rem leng 100) 0)
(while (setq p0 (getpoint "\n指定圆心位置: "))
(c1)
)
)
(princ)
)
(defun c1 (/ bb ang)
(command "layer" "m" "立管" "c" 5 "" "")
(setq bb(rem leng 500.)
ang (cond ((= bb 400) (* 360 (/ 400.0 500)))
((= bb 300) (* 360 (/ 300.0 500)))
((= bb 200) (* 360 (/ 200.0 500)))
((= bb 100) (* 360 (/ 100.0 500)))
(t 0)
)
p1(polar p0 0 79.58)
)
(command "text" "j" "m" p0 30 0 (rtos (/ leng 1000.) 2 2))
(repeat (/ leng 500)
(command "circle" p0 79.58)
)
(if (/= ang 0)
(command "arc" "c" p0 p1 "a" ang)
)
) xyp1964 发表于 2015-12-6 10:34 static/image/common/back.gif
非常感谢!!!大爱
我测试一下,很好用。。我再研究研究代码。。再次感谢!
页:
[1]