fjutcivil 发表于 2013-7-17 11:09:22

求高手指导 困恼很久 很多其他的插件都想这么做 就是不知道怎么写

本帖最后由 fjutcivil 于 2014-4-20 11:17 编辑

............................

piao1887 发表于 2013-7-17 11:36:13

加个循环就行了

fjutcivil 发表于 2013-7-17 11:42:08

piao1887 发表于 2013-7-17 11:36 static/image/common/back.gif
加个循环就行了

关键是我不懂啊 帮帮我吧

Andyhon 发表于 2013-7-17 12:59:53

SZ进行设置a b 的值
请参考站内 uReal or uDist

加个循环...
(if ...
改 ===>
(While ...

ll_j 发表于 2013-7-17 13:51:15

(defun c:p0 (/ c)    ;虽然纯数字可以作为命令名,但不建议使用
(if (not p0_a)   ;预设a、b,对于全局变量,建议使用稍复杂的变量名,子函数也同
    (setq p0_a 3000)
)
(if (not p0_b)
    (setq p0_b 0.0027)
)
(initget 6 "S")   ;非零非负
(setq n (getint "\n输入参数n 或 [参数ab设置(S)]: "))
(cond
    ((= n "S")      ;关键字
   (p0::s)      ;调用参数设置子函数
   (c:p0)         ;设置完毕回主程序
    )
    ((= n nil) nil) ;回车、右键、空格退出
    (t            ;其它情况——正常输入
   (if (>= n 100)
       (progn (p0::out) (c:p0))   ;执行完毕回主程序,形成循环
       (progn (princ "\n参数n必须不小于100。") (c:p0))
   )
    )
)
(princ)
)

(defun p0::out (/ pt d c)      ;输出子函数
(initget 5)   ;非空非负
(setq pt (getpoint "\n文字点: "))
(setq d (/ (- n (* (/ n 10) 10)) 10.0)
      c (rtos (* (- p0_a (* (/ n 10) 10))
                   p0_b
                   (if (equal d 0.0 0.001)
                     1
                     d
                   )
                )
                2
                2
          )
)
(entmake
    (list
      '(0 . "TEXT")
      (cons 10 pt)
      '(40 . 300)
      (cons 1 c)
      '(50 . 0)
      '(41 . 0.7)
      '(72 . 0)
      '(73 . 0)
    )
)
)

(defun p0::s (/ p0_a0 p0_b0)   ;设置子函数
(if (not p0_a)
    (setq p0_a 3000)
)
(if (not p0_b)
    (setq p0_b 0.0027)
)
(initget 4)         ;非零非负
(setq p0_a0 (getint (strcat "\n输入参数a <" (itoa p0_a) "> : ")))
(if p0_a0
    (setq p0_a p0_a0)
)
(setq p0_b0 (getreal (strcat "\n输入参数b <" (rtos p0_b) "> : ")))
(if p0_b0
    (setq p0_b p0_b0)
)
)

fjutcivil 发表于 2013-7-17 15:02:54

ll_j 发表于 2013-7-17 13:51 static/image/common/back.gif


哈 谢啦 大神 每次都麻烦你

fl202 发表于 2013-7-23 14:18:12

你应该学习下dcl,参数多了,用dcl输入会比较方便。
页: [1]
查看完整版本: 求高手指导 困恼很久 很多其他的插件都想这么做 就是不知道怎么写