Hi Avcad,test my code maybe suit for you
(defun c:eba (/ opt loc a pia b are crat p1 p2 bx ax arex piax arex1 px1 px2)
(prompt "Select horizontal or vertical")
(initget "h v")
(setq opt (getkword "\nDo you want Ellipse position [h/v]<h>; "))
(if (= opt nil)(setq opt "h"))
(setq loc (getpoint "\nClick location for object <0,0,0>: "))
(if (= loc nil)(setq loc '(0 0 0)))
(setq a (getdist "\nEnter length of major axis <1.35100001>: "))
(if (= a nil)(setq a 1.35100001))
(setq ae (getreal "\nEnter new area of ellipse <5.16>: "))
(if (= ae nil)(setq ae 5.16))
(if
(= a 1.35100001)
(progn ; if length of major axis is default
(setq pia (* pi a))
(setq b (/ ae pia))
(setq are (* pi a b))
(setq crat (abs (/ (- (/ (* (- a b) 100.0) a) 100.0) 100.0)))
(setq rat
(getreal
(strcat "\nEnter new ratio major and minor <" (rtos crat) ">: ")))
(if (= rat nil)(setq rat crat))
(if
(= rat crat)
(progn
(if
(= opt "h")
(progn
(setq p1 (polar loc 0 a))
(setq p2 (polar loc (* pi 0.5) b))
(command "_ellipse" "c" loc p1 p2 "")
) ; progn
(progn
(setq p1 (polar loc (* pi 0.5) a))
(setq p2 (polar loc 0 b))
(command "_ellipse" "c" loc p1 p2 "")
) ; progn
) ; if
) ; progn
(progn
(if
(= opt "v")
(progn
(setq bx (* a rat))
(setq ax (/ bx rat))
(setq arex (* pi ax bx))
(if
(/= ae arex)
(progn
(setq piax (* pi ax))
(setq bx (/ ae piax))
(setq arex1 (* pi ax bx))
(if
(= ae arex1)
(progn
(setq px1 (polar loc 0 ax))
(setq px2 (polar loc (* pi 0.5) bx))
(command "_ellipse" "c" loc px1 px2 "")
) ; progn
) ; if
) ; progn
) ; if
) ; progn
) ; if
(if
(= opt "v")
(progn
(setq bx (* a rat))
(setq ax (/ bx rat))
(setq arex (* pi ax bx))
(if
(/= ae arex)
(progn
(setq piax (* pi ax))
(setq bx (/ ae piax))
(setq arex1 (* pi ax bx))
(if
(= ae arex1)
(progn
(setq px1 (polar loc (* pi 0.5) ax))
(setq px2 (polar loc 0 bx))
(command "_ellipse" "c" loc px1 px2 "")
) ; progn
) ; if
) ; progn
) ; if
) ; progn
) ; if
) ; progn
) ; if
) ; progn
(progn ; if length of major axis not default
(setq pia (* pi a))
(setq b (/ ae pia))
(setq are (* pi a b))
(setq crat (abs (/ (- (/ (* (- a b) 100.0) a) 100.0) 100.0)))
(setq rat
(getreal
(strcat "\nEnter new ratio major and minor <" (rtos crat) ">: ")))
(if (= rat nil)(setq rat crat))
(if
(= rat crat)
(progn
(setq p1 (polar loc 0 a))
(setq p2 (polar loc (* pi 0.5) b))
(command "_ellipse" "c" loc p1 p2 "")
) ; progn
(progn
(if
(= opt "h")
(progn
(setq bx (* a rat))
(setq ax (/ bx rat))
(setq arex (* pi ax bx))
(if
(/= ae arex)
(progn
(setq piax (* pi ax))
(setq bx (/ ae piax))
(setq arex1 (* pi ax bx))
(if
(= ae arex1)
(progn
(setq px1 (polar loc 0 ax))
(setq px2 (polar loc (* pi 0.5) bx))
(command "_ellipse" "c" loc px1 px2 "")
) ; progn
) ; if
) ; progn
) ; if
) ; progn
) ; if
(if
(= opt "v")
(progn
(setq bx (* a rat))
(setq ax (/ bx rat))
(setq arex (* pi ax bx))
(if
(/= ae arex)
(progn
(setq piax (* pi ax))
(setq bx (/ 5.16 piax))
(setq arex1 (* pi ax bx))
(if
(= ae arex1)
(progn
(setq px1 (polar loc (* pi 0.5) ax))
(setq px2 (polar loc 0 bx))
(command "_ellipse" "c" loc px1 px2 "")
) ; progn
) ; if
) ; progn
) ; if
) ; progn
) ; if
) ; progn
) ; if
) ; progn
) ; if
(command "_zoom" "e")
(princ)
)