看看是否满足你的要求?- (defun calNum(str n / newStr);一个给字符串增加某一值的子函数
- (setq newStr (itoa (+ (atoi str) n)))
- (repeat (- (strlen str) (strlen newStr))
- (setq newStr (strcat "0" newStr))
- )
- newStr
- )
- (defun c:canal () ;;定义主函数名称
- (setq base (getpoint "\n路线起点:")) ;;获取起点坐标
- (setq center (getpoint base "\n路线终点:")) ;;获取终点坐标
- (setq mark (getstring "\n输入第一个设备的桩号:")) ;;获得第一个设备桩号如 K00+000形式
- (setq end (list (car center) (cadr base))) ;;固定纵坐标
- (command "line" base end "") ;;做直线
- (setq lenth (distance base center)) ;;获取路线长度
- (setq off (fix (/ (- lenth 50) 50))) ;;获取要排列的个数
- (setq base1 base) ;;保存起点坐标给base1变量
- (setq oo (substr mark 2 2)) ;;00位转整
- (setq ooo (substr mark 5 3)) ;;000位转整
- (setq os (getvar "osmode"))
- (setvar "osmode" 0)
- (setvar "cmdecho" 0)
- (repeat off ;;开始循环,重复off次
- (setq lenth1 (polar base1 0 50)) ;;极坐标方式寻找圆心,并存入变量lenth1中
- (command "circle" lenth1 5) ;;画圆
- (if (>= (atoi ooo) 1000)
- (progn
- (setq ooo (calNum ooo -1000))
- (setq oo (calNum oo 1))
- );这里注意if只能带两个参数,也就是两个表达式,如果你某种条件要操作的表达式多于一个,必须使用progn
- )
- (command "text" (polar lenth1 (/ PI 2) 10) 3 "" (strcat "k" oo "+" ooo))
- (setq base1 lenth1) ;;循环因子
- (setq ooo (calNum ooo 50))
- )
- (setvar "osmode" os);恢复os值
- (princ)
- )
|