А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))))))

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы