Пример программы генерации 3D твердотельной модели и рабочего чертежа.

  1. Запрос координат точки:

Листинг 1.1 Запрос координат 2D точки.

(setq p1 (if p1 p1 (list 0 0)))

(setq szP1 (strcat “Enter point 1 :”))

(setq Paux (getpoint szP1))

(setq p1 (if Paux Paux p1))

Листинг1.1 указывает как запрашивать в цикле координаты 2D точки с внедрением динамически создаваемой строчки запроса.

1-ая строка куска, представленного в Листиге Пример программы генерации 3D твердотельной модели и рабочего чертежа. 1.1, инспектирует существует ли точечная переменная p1, т.к. она могла быть сотворена в момент предшествующей итерации цикла либо предшествующего пуска программки в текущем сеансе работы с AutoCAD. Функция if, если переменная p1 уже существует, возвращает ее значения без конфигурации, если переменная p1 имеет значение nil (не существует), вызывает функцию Пример программы генерации 3D твердотельной модели и рабочего чертежа. list для формирования перечня из координат точки (0, 0). Итог выполнения функции if (предшествующее значение переменной p1 либо точка (0, 0)) присваивается в качестве нового значения переменной p1.

2-ая строчка в рассматриваемом куске динамически сформировывает строчку подсказки и сохраняет ее в строковой переменной szP1. К примеру, если к этому моменту переменная p1 хранит значения Пример программы генерации 3D твердотельной модели и рабочего чертежа. координат точки (5 7), то в переменной szP1 будет сохранена строчка “Enter point 1 :”. Этот текст будет появляться в зоне подсказки AutoCAD после выполнения рассматриваемой строчки кода. Согласно применяемым в командной строке AutoCAD соглашениям, значения приведенные в угловых скобках, являются значениями предлагаемыми по дефлоту, и юзер может их избрать, просто нажав Пример программы генерации 3D твердотельной модели и рабочего чертежа. кнопку Enter. Потому что от итерации к итерации значение точки p1 может изменяться, то текст подсказки должен формироваться динамически, что и достигается в коде рассматриваемой строчки. Функции car и cadr возвращают соответственно координаты x, y точки p1 (в формате с плавающей точкой). Функция rtos конвертирует число в строчку текста Пример программы генерации 3D твердотельной модели и рабочего чертежа.. Для рассматриваемого листинга вызовы (rtos (car p1)) и (rtos (cadr p1)) вернут строчки “5” и “7”. Функция strcat делает слияние строк в одну строчку текста. В нашем примере строчки “Enter point 1 :” преобразуются в строчку “Enter point 1 :”, которая записывается в качестве значения переменной szP1 и будет применена для вывода текста подсказки во Пример программы генерации 3D твердотельной модели и рабочего чертежа. время запроса.

3-я строчка делает запрос данных у юзера. Функция getpoint выводит в зону подсказки содержимое строковой переменной szP1, информируя юзера о требуемых действиях с его стороны и предлагая в угловых скобках значение по дефлоту. После чего функция getpoint ждет действий юзера. Если юзер согласится со значениями по дефлоту, то Пример программы генерации 3D твердотельной модели и рабочего чертежа. он должен надавить кнопку [Enter]. Это действие будет воспринято как отказ от ввода данных и функция getpoint вернет значение nil. Если юзер не согласен со значением по дефлоту, то он должен указать точку при помощи мыши либо ввести ее координаты с клавиатуры. В данном случае функция getpoint вернет перечень с Пример программы генерации 3D твердотельной модели и рабочего чертежа. координатами введенной точки. Итог выполнения функции getpoint будет сохранен во вспомогательной переменной Paux.

В четвертой строке проводится анализ ответа юзера. Если юзер ввел значения координат точки в ответ на запрос функции getpoint, то они были сохранены в переменной Paux и, в случае подстановки этой переменной в качестве Пример программы генерации 3D твердотельной модели и рабочего чертежа. условия в функцию if, она будет трактоваться как значение T (поистине). Так как эта же переменная стоит в качестве выражения выполняемого в случае выполнения условия в функции if, то ее же значение и будет возвращено функцией if, а потом сохранено в качестве нового значения переменной p1. Если юзер согласился Пример программы генерации 3D твердотельной модели и рабочего чертежа. со значениями по дефлоту, отказавшись от ввода других значений, то переменная Paux в качестве условия будет трактоваться как nil (неверно) и в качестве возвращаемого значения функции if будут переданы неизмененные координаты точки p1.

Таким макаром, зависимо от предыстории работы программки и действий юзера в итоге выполняемого куска кода может реализоваться одна Пример программы генерации 3D твердотельной модели и рабочего чертежа. из 3-х ситуаций:

1) точка p1 инициализируется координатами 0,0;

2) точка p1 сохраняет свои координаты без конфигураций;

3) юзер задает мышью либо с клавиатуры новые значения координат точки p1.

  1. Проверка значений на соответствие их допустимому спектру:

Листинг 1.2 Запрос координат 2D точки, соответственных допустимому спектру.

(setq p1 (if p1 p1 (list Пример программы генерации 3D твердотельной модели и рабочего чертежа. 0 0)))

(setq szP1 (strcat “Enter point 1 :”))

(setq Paux (getpoint szP1))

(setq p1 (if Paux Paux p1))

(setq Xmin 12 Xmax 120 Ymin –300 Ymax 300)

(while (not (and (< Xmin (car p1))

(> Xmax (car p1))

(< Ymin (cadr p1))

(> Ymax (cadr p1))

)

)

(setq szP1 (strcat “Enter point 1 :”))

(setq Paux (getpoint szP1))

(setq p1 (if Paux Paux Пример программы генерации 3D твердотельной модели и рабочего чертежа. p1))

)

По сопоставлению с листингом 1.1 тут добавлены строчки инициализации спектра допустимых значений координат 2D точки и цикл проверки их текущих значений на соответствие допустимому спектру с требованием повторного ввода координат в случае недопустимых значений.

1-ые 4 строчки вточности такие же, как и в листинге 1.1. Их подробное обсуждение см. в п.1.

5-ая строчка задает Пример программы генерации 3D твердотельной модели и рабочего чертежа. (setq Xmin 12 Xmax 120 Ymin –300 Ymax 300) границы спектра допустимых значений для каждой из координат 2D точки.

В 6-ой строке начинается цикл проверки текущих значений координат 2D точки на соответствие спектру допустимых значений. К этому моменту координаты точки либо заданы юзером в ответ на 1-ый вызов функции getpoint в строке 3, либо Пример программы генерации 3D твердотельной модели и рабочего чертежа. сохранились без конфигураций с момента предшествующего выполнения программки (повторный вызов программки и юзер отказался от ввода новых значений, нажав [Enter]), либо проинициализированы значениями по дефлоту (0 0), данными в строке 1 (1-ый вызов программки и юзер отказался от ввода значений, нажав [Enter]). Цикл проверки реализован при помощи функции while. Она имеет последующий Пример программы генерации 3D твердотельной модели и рабочего чертежа. формат:

(while [ …[]…])

В листинге 1.2 условие имеет последующий вид

(not (and ( Xmax (car p1)) ( Ymax (cadr p1))))

Тут функции car и cadr извлекают координаты точки p1. Функции сопоставления ассоциируют значения координат с границами спектра, к примеру, (< Ymin (cadr p1)) инспектирует превосходит ли значение ординаты точки p1 нижнюю границу Ymin спектра допустимых Пример программы генерации 3D твердотельной модели и рабочего чертежа. значений. Функции сопоставления возвращают логические значения T либо nil.

Функция and определяет есть ли выход текущих значений координат за какую-либо из границ спектра, т.е. есть ли хотя бы одно значение nil, возвращенное какой-нибудь из функций сопоставления. Если есть выход за границы спектра, то функция Пример программы генерации 3D твердотельной модели и рабочего чертежа. and возвращает значение nil, которое инвертируется в T при помощи функции not. В данном случае, когда условие равно T, происходит переход к выполнению тела цикла, позволяющего юзеру повторно ввести значения. Запрос повторного ввода будет продлятся до того времени, пока юзер не задаст точку находящуюся в границах обозначенного спектра Пример программы генерации 3D твердотельной модели и рабочего чертежа..

Если при вычислении условия было получено значение nil, т.е. обе координаты точки оказались в границах спектра допустимых значений, тело цикла не производится и от юзера не требуется повторного задания точки.

  1. Расчет характеристик модели и чертежа на базе данных, приобретенных от юзера:
  2. Построение 3D твердотельной модели.
  3. Подготовка шаблона чертежа.


primer-opisaniya-fajlovogo-tipa-v-paskale.html
primer-opredelenie-osobih-umenij-i-podschet-znachenij-umenij.html
primer-opredeleniya-usilij-v-sechenii-promezhutochnoj-opori-pod-avtodorogu-na-osnovnoe-sochetanie-nagruzok.html