MVH 发表于 2007-6-5 08:33

三种曲线的画法,LISP语言

;画正弦曲:x=a , y=sin a ;

(defun c:zxqx(/ da bp Ai lpt bp1 bp2)

(initget 1)

(setq bp (getpoint "\n 起始点?:"))

(initget 7)

(setq da (getangle "\n 角度增量?:"))

(setq Ai 0 Ae (* pi 2.0) bp1 (car bp) bp2 (car (cdr bp)))

(while (< Ai Ae)

(setq lpt (append lpt (list (list (+ bp1 Ai) (+ bp2 (sin Ai))))))

(setq Ai (+ Ai da))

)

(setq lpt (append lpt (list (list (+ bp1 Ae) (+ bp2 (sin Ae))))))

(setvar "cmdecho" 0)

(command "pline")

(foreach pt lpt (command pt))

(command ^c)

(command "pedit" "l" "f")

(command ^c)

(setvar "cmdecho" 1)

)

MVH 发表于 2007-6-5 08:34

;渐开线画法x=br*(cos(a)+a*sin(a))

y=br*(sin(a)-a*cos(a));

(defun c:jkx(/ ti lpt ae pt bp1 bp2)

(initget 1)

(setq bp (getpoint "\n 起始点?:"))

(initget 7)

(setq br (getreal "\n 基圆半径?:"))

(initget 5)

(setq ai (getangle "\n 起始角度?:"))

(initget 7)

(setq ae (getangle "\n 终止角度?:"))

(initget 7)

(setq da (getangle "\n 角度增量?:"))

(setq bp1 (car bp) bp2 (car (cdr bp)))

(while (< ai ae)

(setq lpt (append lpt (list (list (+ bp1 (* br (+ (cos ai) (* ai (sin ai))))) (+ bp2 (* br (- (sin ai) (* ai (cos ai)))))))))

(setq ai (+ ai da))

)

(setq lpt (append lpt (list (list (+ bp1 (* br (+ (cos ae) (* ae (sin ae))))) (+ bp2 (* br (- (sin ae) (* ae (cos ae)))))))))

(setvar "cmdecho" 0)

(command "pline")

(foreach pt lpt (command pt))

(command ^c)

(command "pedit" "l" "f")

(command ^c)

(setvar "cmdecho" 1)

)

MVH 发表于 2007-6-5 08:35

螺旋线画法:x=r*cos(2pi/k) , y=r*sin(2pi/k) , z=(+/-)s/k .
; s:导程(+=右旋,-=左旋),k:每圈等分数。

(defun c:yzlxx(/ bp r a s k n bp1 bp2 bp3 dmax di da pt lpt)

(initget 1)

(setq bp (getpoint "\n 螺旋线中心:"))

(initget 7)

(setq r (getdist bp "\n 螺旋线半径:"))

(initget 3)

(setq s (getreal "\n 导程:(+/右旋,-/左旋)"))

(initget 7)

(setq n (getreal "\n 圈数:"))

(initget 6)

(setq k (getint "\n 每圈等分数<36>:(宜取36的整倍数)"))

(if (not k) (setq k 36))

(setq bp1 (car bp) bp2 (cadr bp) bp3 (caddr bp))

(setq dmax (fix(* k n)))

(setq da (/(* 2 pi) k))

(setq a 0)

(setq di 0)

(while (<= di dmax)

(setq lpt (append lpt (list (list (+ bp1 (* r (cos a))) (+ bp2 (* r (sin a))) (+ bp3 (* (/ s k) di))))))

(setq di (+ di 1))

(setq a (+ da a))

)

(setvar "cmdecho" 0)

(command "3dpoly")

(foreach pt lpt (command pt))

(command ^c)

(setvar "cmdecho" 1)

)

apple_k 发表于 2007-6-16 14:22

楼主~您这贴确实值得顶一下~

hswx1230 发表于 2007-7-16 16:51

好东西!!

hunter_009 发表于 2009-6-21 17:06

请教楼主一个问题,如何将一张图中所有直线的端点坐标导出到EXCEL中呢
页: [1]
查看完整版本: 三种曲线的画法,LISP语言