Параметрические изображения объектов проектирования на основе использования языка АВТОЛИСП в среде АВТОКАД. Притыкин Ф.Н. - 98 стр.

UptoLike

Составители: 

98
На рис. 7.4 приняты следующие обозначения: 1 – создание наборов
примитивов, построенных студентом; 2 – формирование списков, задаю-
щих координаты точек построенных примитивов; 3 – существует ли в на-
боре примитивов прямых горизонталь, проходящая через заданную
точку A
2
; 4 – существуют ли в наборе примитивов прямых прямая, прохо-
дящая через конечную точку горизонтальной проекции горизонтали и яв-
ляющаяся линией проекционной связи; 5 – существует ли в наборе прими-
тивов прямых прямая, проходящая через точку A
1
и имеющая угол накло-
на 45
о
по отношению к оси Ox; 6 – существует ли текст обозначения
фронтальной проекции точки, принадлежащей горизонтали; 7 – существу-
ет ли текст обозначения горизонтальной проекции точки, принадлежащей
горизонтали; 8 – выполнено ли правильно текстовое обозначение индек-
сов обозначений точек; 9 – задача решена верно с максимальной рейтин-
говой оценкой; 10 – задача не имеет правильного решения; 11 – задача
имеет неполное решение, а графические построения имеют частичную
рейтинговую оценку.
При выполнении текстовых обозначений проверяется положение ба-
зовой точки текста, которое должно быть в заданной зоне, а также индекс
обозначений. Один из фрагментов текстовой программы, осуществляю-
щей проверку графических построений задачи рис. 7.3, имеет следующий
вид:
;======================= начало – prov-t1-z1 =======================
;программа оценки правильности графических построений
(DEFUN prov-t1-z1 ()
(Clean_sl7)
(SETQ LL (ssget "X" '((8 . "4")(0 . "LINE"))); создание набора примитивов из линий
cc (ssget "X" '((8 . "4")(0 . "CIRCLE"))) ; создание набора примитивов из окружностей
tt (ssget "W" '(100 10) '(130 40)) ; создание набора примитивов, входящих в рамку
i 0 PN0 (list) PK0 (list) ; создание нулевых списков
); Цикл, предназначенный для формирования списков, задающий координаты
;начальных и конечных точек прямых линий
(IF (/= LL nil)
(while (< i (sslength LL))
(setq LL0 (entget(ssname LL i))
LLN (cdr (reverse (cdr (reverse (assoc 10 LL0)))))
     На рис. 7.4 приняты следующие обозначения: 1 – создание наборов
примитивов, построенных студентом; 2 – формирование списков, задаю-
щих координаты точек построенных примитивов; 3 – существует ли в на-
боре примитивов прямых горизонталь, проходящая через заданную
точку A2; 4 – существуют ли в наборе примитивов прямых прямая, прохо-
дящая через конечную точку горизонтальной проекции горизонтали и яв-
ляющаяся линией проекционной связи; 5 – существует ли в наборе прими-
тивов прямых прямая, проходящая через точку A1 и имеющая угол накло-
на 45о по отношению к оси Ox; 6 – существует ли текст обозначения
фронтальной проекции точки, принадлежащей горизонтали; 7 – существу-
ет ли текст обозначения горизонтальной проекции точки, принадлежащей
горизонтали; 8 – выполнено ли правильно текстовое обозначение индек-
сов обозначений точек; 9 – задача решена верно с максимальной рейтин-
говой оценкой; 10 – задача не имеет правильного решения; 11 – задача
имеет неполное решение, а графические построения имеют частичную
рейтинговую оценку.
     При выполнении текстовых обозначений проверяется положение ба-
зовой точки текста, которое должно быть в заданной зоне, а также индекс
обозначений. Один из фрагментов текстовой программы, осуществляю-
щей проверку графических построений задачи рис. 7.3, имеет следующий
вид:


;======================= начало – prov-t1-z1 =======================
;программа оценки правильности графических построений
(DEFUN prov-t1-z1 ()
  (Clean_sl7)
  (SETQ LL (ssget "X" '((8 . "4")(0 . "LINE"))); создание набора примитивов из линий
     cc (ssget "X" '((8 . "4")(0 . "CIRCLE"))) ; создание набора примитивов из окружностей
     tt (ssget "W" '(100 10) '(130 40)) ; создание набора примитивов, входящих в рамку
     i 0 PN0 (list) PK0 (list) ; создание нулевых списков
  ); Цикл, предназначенный для формирования списков, задающий координаты
;начальных и конечных точек прямых линий
  (IF (/= LL nil)
    (while (< i (sslength LL))
     (setq LL0 (entget(ssname LL i))
          LLN (cdr (reverse (cdr (reverse (assoc 10 LL0)))))

                                            98