下面是一个小程序,以前好好的。现在不好用了。希望高手哥哥姐姐们帮忙
; input Cn,Xd,Xq three data
(defun input-data ()
(setq cn (getreal "\nplease input Cn (cosa=?): "))
(setq xd (getreal "\nplease input Xd : "))
(setq xq (getreal "\nplease input Xq : "))
(command "layer" "m" "1" "c" "1" "" "")
(command "limits" '(-3.0 -1.5) '(2.0 2.0))
(command "zoom" "a")
)
; draw five circles of power
(defun circle ()
(setq radius 0.2)
(setq pt '(0.0 0.0))
(setq pt1 '(0.02 -0.09))
(command "text" pt1 "0.06" "0" "0")
(while (<= radius 1.0)
(setq pt1 (append (list (+ (car pt1) 0.2)) (list (cadr pt1))))
(setq radius1 (rtos radius 2 1))
(command "text" pt1 "0.06" "0" radius1)
(command "circle" pt radius)
(setq radius (+ 0.2 radius))
)
(setq pt1 '(-2.5 0.0))
(setq pt2 '(1.4 0.0))
(setq pt3 '(0.0 -1.2))
(setq pt4 '(0.0 1.2))
(command "line" pt1 pt2 "")
(command "line" pt3 pt4 "")
(setq pt1 (polar pt2 (* pi (/ 173.0 180)) 0.1))
(setq pt3 (polar pt2 (* pi (/ 187.0 180)) 0.1))
(command "solid" pt1 pt3 pt2 "" "")
(setq pt3 (polar pt4 (* pi (/ 263.0 180)) 0.1))
(setq pt5 (polar pt4 (* pi (/ 277.0 180)) 0.1))
(command "solid" pt3 pt5 pt4 "" "")
(setq pt2 (append (list (- (car pt2) 0.05)) (list (- 0.12))))
(command "text" pt2 "0.06" "0" "Qn/Sn")
(setq pt4 (append (list 0.05) (list (- (cadr pt4) 0.06))))
(command "text" pt4 "0.06" "0" "Pn/Sn")
(setq pangle (- (/ pi 2) (atan (sqrt (- 1 (* cn cn))) cn)))
(setq pta (polar pt pangle 1.0))
(setq ptb (polar pt (- pi pangle) 1.0))
(setq ol (/ 1 xd))
(setq lo2 (/ (- (/ 1 xq) (/ 1 xd)) 2))
(setq oo2 (+ lo2 ol))
(setq pto2 (polar pt pi oo2))
(setq ptl (polar pt pi ol))
(setq pto1 (polar pt pi (+ oo2 lo2)))
(setq pt1 (polar pto2 (* 1.5 pi) (+ 0.2 lo2)))
(setq pt2 (polar pto2 (* 0.5 pi) (+ 0.2 lo2)))
(setq pt3 (polar ptl (* 1.5 pi) 0.8))
(setq pt4 (polar ptl (* 0.5 pi) 1.5))
(command "line" pt pta ptb "")
(command "circle" pto2 lo2)
(command "line" pt1 pt2 "")
(command "line" pt3 pt4 "")
(command "line" pto1 pta "")
(setq pt1 nill pt2 nill pt3 nill pt4 nill radius1 nill)
)
;draw current limits-line
(defun pline1 ()
(command "layer" "m" "2" "c" "2" "" "")
(setq angleo1 (angle pto1 pta))
(setq ptl1 (polar pto2 (* 2 angleo1) lo2))
(setq al1 (distance ptl1 pta))
(setq anglen (/ angleo1 10))
(setq ptxp (list '()))
(setq n 10)
(while (>= n 0)
(setq ptln (polar pto2 (* 2 (* n anglen)) lo2))
(setq o1ln (distance pto1 ptln ))
(setq o1xn (+ o1ln al1))
(setq ptxn (polar pto1 (* n anglen) o1xn))
(setq ptxp (append ptxp (list ptxn)))
(setq n (1- n))
)
(command "pline" pta )
(setq i 1)
(while (<= i 11)
(command (nth i ptxp))
(setq i (1+ i))
)
(command "")
(command "pedit" pta "f" "")
(setq ptln nill o1ln nill o1xn nill ptxn nill)
)
; draw theory and run limits-line
(defun pline2 ()
(command "layer" "m" "1" "c" "1" "" "")
(setq fo1 (* 0.1 al1))
(command "circle" pto1 fo1)
(command "layer" "m" "2" "c" "2" "" "")
(setq ld 1.4)
(setq lo1 (+ lo2 lo2))
(setq angleo2 (atan (/ 1.4 lo1)))
(setq anglen (/ angleo2 20))
(setq ptex (list '()))
(setq ptkx (list '()))
(setq n 0)
(while (<= n 20)
(setq ptc (polar pto2 (* 2 (* n anglen)) lo2))
(setq co1 (distance pto1 ptc))
(setq do1 (/ lo1 (cos (* n anglen))))
(setq eo1 (- do1 co1))
(setq pte (polar pto1 (* n anglen) eo1))
(setq ptex (append ptex (list pte)))
(setq ptg (polar pto1 (+ pi (* n anglen)) fo1))
(setq ge (distance ptg pte))
(setq yk (cadr pte))
(setq anglek (atan (/ yk ge) (sqrt (- 1 (* (/ yk ge) (/ yk ge))))))
(setq ptk (polar pto1 anglek ge))
(setq ptkx (append ptkx (list ptk)))
(setq n (1+ n))
)
(command "pline")
(setq i 1)
(while (<= i 21)
(command (nth i ptex))
(setq i (1+ i))
)
(command "")
(setq pt1 (nth 18 ptex))
(command "pedit" pt1 "f" "")
(command "pline")
(setq i 1)
(while (<= i 21)
(command (nth i ptkx))
(setq i (1+ i))
)
(command "")
(setq pt2 (nth 18 ptkx))
(command "pedit" pt2 "f" "")
(setq ptc nill co1 nill do1 nill eo1 nill pte nill)
(setq ptg nill ge nill yk nill anglek nill ptk nill)
(setq ptx (polar '(0 0) pi (+ ol lo1 fo1 0.2)))
(command "break" '(-2.5 0.0) "f" '(-2.5 0.0) ptx)
)
;text,dim etc
(defun ptext ()
(command "layer" "m" "1" "c" "1" "" "")
(setq ptt1 (polar pt (* 1.4 pi) 1.0))
(setq ptt2 (polar ptt1 (* 1.2 pi) 0.15))
(command "line" ptt1 ptt2 "")
(setq ptt2 (append (list (- (car ptt2) 0.28)) (list (- (cadr ptt2) 0.09))))
(command "text" ptt2 "0.08" "0" "功率园" )
(command "text" '(-0.66 -0.38) "0.08" "0" "欠励运行" )
(command "text" '(0.34 -0.38) "0.08" "0" "过励运行" )
(setq ptt1 (append (list (- (car pta) 0.2)) (list (cadr pta))))
(setq ptt2 (polar ptt1 (* 0.25 pi) (+ 0.08 (- 1 cn))))
(command "line" ptt1 ptt2 "")
(command "text" ptt2 "0.08" "0" "功率限制线" )
(setq ptt1 (polar pto2 (* 1.4 pi) lo2))
(setq ptt2 (polar ptt1 (* 1.25 pi) 0.2))
(command "line" ptt1 ptt2 "")
(setq ptt2 (append (list (- (car ptt2) 0.14)) (list (- (cadr ptt2) 0.09))))
(command "text" ptt2 "0.08" "0" "失励园" )
(setq ptt1 (nth 7 ptxp))
(setq ptt2 (polar ptt1 (/ pi 3) 0.3))
(command "line" ptt1 ptt2 "")
(command "text" ptt2 "0.08" "0" "转子电流限制线" )
(setq ptt1 (nth 20 ptex))
(setq ptt2 (polar ptt1 (/ pi 2.5) 0.5))
(command "line" ptt1 ptt2 "")
(command "text" ptt2 "0.08" "0" "理论稳定极限线" )
(setq ptt1 ( nth 20 ptkx))
(setq ptt2 (polar ptt1 (/ pi 4) 0.4))
(command "line" ptt1 ptt2 "")
(command "text" ptt2 "0.08" "0" "运行稳定极限线" )
(command "text" '(-0.53 -1.33) "0.08" "0" "功率特性曲线")
)
(defun pdata ()
(setq ptt1 (append (list (- (car ptx) 0.2)) (list (cadr (nth 20 ptex)))))
(command "text" ptt1 "0.08" "0" "COS%%Cn= ")
(setq ptt2 (append (list (+ (car ptt1) 0.55)) (list (cadr ptt1))))
(setq cn1 (rtos cn 2 2))
(command "text" ptt2 "0.08" "0" cn1)
(setq ptt1 (append (list (car ptt1)) (list (- (cadr ptt1) 0.15))))
(command "text" ptt1 "0.08" "0" "Xd= ")
(setq ptt2 (append (list (+ (car ptt1) 0.3)) (list (cadr ptt1))))
(setq xd1 (rtos xd 2 4))
(command "text" ptt2 "0.08" "0" xd1)
(setq ptt1 (append (list (car ptt1)) (list (- (cadr ptt1) 0.15))))
(command "text" ptt1 "0.08" "0" "Xq= ")
(setq ptt2 (append (list (+ (car ptt1) 0.3)) (list (cadr ptt1))))
(setq xq1 (rtos xq 2 4))
(command "text" ptt2 "0.08" "0" xq1)
(setq ptt1 '(1.0 -0.35))
(command "text" ptt1 "0.08" "0" "额定功角: ")
(setq ptt2 (append (list (+ (car ptt1) 0.4)) (list (cadr ptt1))))
(setq angleo11 (rtos (* 180 (/ angleo1 pi)) 2 4))
(command "text" ptt2 "0.08" "0" angleo11)
(setq ptt1 (append (list (car ptt1)) (list (- (cadr ptt1) 0.15))))
(command "text" ptt1 "0.08" "0" "失励园半径: ")
(setq ptt2 (append (list (+ (car ptt1) 0.48)) (list (cadr ptt1))))
(setq lo21 (rtos lo2 2 4))
(command "text" ptt2 "0.08" "0" lo21)
(setq ptt1 (append (list (car ptt1)) (list (- (cadr ptt1) 0.15))))
(command "text" ptt1 "0.08" "0" "额定励磁电流值: ")
(setq ptt2 (append (list (+ (car ptt1) 0.64)) (list (cadr ptt1))))
(setq al11 (rtos al1 2 4))
(command "text" ptt2 "0.08" "0" al11)
(setq ptt1 (append (list (car ptt1)) (list (- (cadr ptt1) 0.15))))
(command "text" ptt1 "0.08" "0" "空载励磁电流值: ")
(setq ptt2 (append (list (+ (car ptt1) 0.64)) (list (cadr ptt1))))
(setq ol1 (rtos ol 2 4))
(command "text" ptt2 "0.08" "0" ol1)
(setq ptt1 (append (list (car ptt1)) (list (- (cadr ptt1) 0.15))))
(command "text" ptt1 "0.08" "0" "调相容量: ")
(setq ptt2 (append (list (+ (car ptt1) 0.4)) (list (cadr ptt1))))
(setq kc1 (car (nth 11 ptxp)))
(setq kc1 (rtos kc1 2 4))
(command "text" ptt2 "0.08" "0" kc1)
)
;excute command,call constituent functions
(defun C:POWER ()
(input-data)
(setq sblip (getvar "blipmode"))
(setq scmde (getvar "cmdecho"))
(setvar "blipmode" 0)
(setvar "cmdecho" 0)
(circle)
(pline1)
(pline2)
(ptext)
(setq ptext nill)
(pdata)
(setvar "blipmode" sblip)
(setvar "cmdecho" scmde)
)
输入数据为:0.8
1.0434
0.677 |