;; | ---------------------------------------------------------------------------- ;; | MI_Arc2Line ;; | ---------------------------------------------------------------------------- ;; | Function : Convert an ARC to LINE segments ;; | Auguments: 'Cen' - The center point of the ARC ;; | 'Rad' - Radius of ARC ;; | 'StAng' - Start Angle (in radians) ;; | 'EndAng' - End Angle (in radians) ;; | 'GrainTol' - The density of the ARC (in degrees) ;; | Updated : April 22, 1998 ;; | e-mail : rakesh.rao@4d-technologies.com ;; | Web : www.4d-technologies.com ;; | ---------------------------------------------------------------------------- (defun MI_Arc2Line(Cen Rad StAng EndAng GrainTol / CurPt CAng vlist) (setq GrainTol (abs GrainTol)) (if (< EndAng StAng) (setq EndAng (+ (* 2.0 pi) EndAng)) ) (if (= GrainTol 0.0) (setq GrainTol (- EndAng StAng)) (progn (if (> (+ StAng GrainTol) EndAng) (setq GrainTol (- EndAng StAng)) ) )) (setq vlist '() CAng StAng ) (while (<= CAng EndAng) (setq CurPt (polar Cen CAng Rad) vlist (cons CurPt vlist) CAng (+ CAng GrainTol) ) ) (if (/= CAng EndAng) (setq CurPt (polar Cen EndAng Rad) vlist (cons EndAng vlist) )) vlist )