ronglicai 发表于 2003-8-9 16:01:00

请教难题:CAD如何绘制满足y=sinx 曲线?

srf 发表于 2003-8-11 11:05:00

我前段刚好完成了这个程序,请你试用!
(DEFUN C:TBOX2_ZXQX( / sp s e d q am l x y pt)
       (SETVAR "CMDECHO" 0)
       (SETVAR "BLIPMODE" 0)
       ;; (SYSBACKUP)
       (princ "\n绘制正弦曲线,锐锋工作室 2003.5")
       (setvar "osmode" 0)
       (command "layer" "s" "1_粗实线" "")
       (setq sp (getpoint "\n起始点: "))
       (setq s (getreal "\n起始角度(rad)<0.0>: "))
       (if (null s) (setq s 0.0))
       (setq e (getreal "\n终了角度(rad)<2pi>: "))
       (if (null e) (setq e (* 2.0 pi)))
       (initget 7)
       (setq am (getreal "\n振幅: "))
       (initget 7)
       (setq l (getreal "\n一个周期的波长: "))
       (setq d (getreal "\n绘图步长(rad)<0.1>: "))
       (if (null d) (setq d 0.1))
       (setq q (polar sp 0 (* l 1.2)))
       (command "pline" sp "w" 0 0 q "w" 1.3 0 (polar q 0 4) "")
       (setq q (polar sp (* 0.5 pi) (* am 1.2)))
       (command "pline" (polar sp (* 1.5 pi) (* am 1.2)) "w" 0 0 q "w" 1.3 0 (polar q (* 0.5 pi) 4) "")
       (setq Q s)
       (setq x (car sp))
       (setq y (+ (cadr sp) (* am (sin Q))))
       (command "pline" (list x y) "w" 0 0)
       (setq Q (+ Q d))
       (while (<= Q e)
         (setq x (+ x (/ (* l d) (* 2.0 pi))))
         (setq y (+ (cadr sp) (* am (SIN Q))))
         (command(list x y))
         (setq Q (+ Q d))
       )
       (setq d (- e (- q d))
             q e
       )
       (setq x (+ x (/ (* l d) (* 2.0 pi))))
       (setq y (+ (cadr sp) (* am (SIN Q))))
       (command(list x y))               
       (command "")
       (command "pedit" "l" "f" "")
       ;; (SYSRESTORE)
       (PRINC)
)
                      srf            E- MAIL:lts@lts.ac.cn   
                                       ltsrf@peoplemail.com.cn

zfbj 发表于 2003-8-11 17:12:00

这个问题的方法理论上适用于所有的数学曲线。
用小段直线或者多段线来模拟曲线,计算出关键点的位置,然后连接起来即可。

carl712 发表于 2010-2-22 18:00:00

咋没人回复啊,我可不会啊
页: [1]
查看完整版本: 请教难题:CAD如何绘制满足y=sinx 曲线?