АutoLisp: создать функцию, рисующую разными цветами дугу
Формулировка задачи:
АutoLISP
создать функцию, рисующую разными цветами дугу, имеющую заданные координаты начальной и конечной точки и требуемый центральный угол; конечную точку дуги отметить маркером, к ней по касательной провести отрезок заданной длины.Решение задачи: «АutoLisp: создать функцию, рисующую разными цветами дугу»
textual
Листинг программы
- (defun F (spoint epoint alphadegree len)
- (cond
- ((equal spoint epoint) (prompt "\nStart point and end point coincide.\n"))
- ((<= alphadegree 0) (prompt "\nInvalid central angle.\n"))
- ((>= alphadegree 360) (prompt "\nInvalid central angle.\n"))
- ((<= len 0) (prompt "\nInvalid line length.\n"))
- (T
- ((lambda (mpoint chord/2 alpha/2)
- ((lambda (cpoint radius)
- (list
- (entmakex
- (mapcar 'cons
- (list
- 0
- 100 8 ; 62
- 100 10 40 210
- 100 50 51)
- (list
- "ARC"
- "AcDbEntity" (getvar "CLAYER") ;
- "AcDbCircle" cpoint radius '(0 0 1)
- "AcDbArc" (angle cpoint spoint) (angle cpoint epoint))))
- (entmakex
- (mapcar 'cons
- (list
- 0
- 100 8 ; 62
- 100 10 11 210)
- (list
- "LINE"
- "AcDbEntity" (getvar "CLAYER") ;
- "AcDbLine" epoint (polar epoint (+ (* 0.5 pi) (angle cpoint epoint)) len) '(0 0 1))))))
- (polar mpoint (+ (* 0.5 pi) (angle spoint epoint)) (* chord/2 (/ (cos alpha/2) (sin alpha/2))))
- (/ chord/2 (sin alpha/2))))
- (mapcar
- '(lambda (sum) (* 0.5 sum))
- (mapcar '+ spoint epoint))
- (* 0.5 (distance spoint epoint))
- (* 0.5 pi (/ alphadegree 180.0))))))
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д