Читаем Введение в Автолисп полностью

(initget [биты] [строка]). Функция устанавливает ключевые слова и режимы, в которых работают функции группы getxxx, кроме getstring и getvar. В практике часто используется конструкция:

(initget 1 “Yes No”).

Режимы работы функций определяются битовыми значениями, которые накладывают определенные ограничения на ввод данных. В частности, использованный в примере бит 1 запрещает пустой ввод, бит 2 - ввод нулевого значения, бит 4 - ввод отрицательных чисел.

Аргумент строка содержит ключевые слова, подчиняющиеся определенным правилам. Каждое ключевое слово должно отделяться от других одним или несколькими пробелами, из доступных символов содержать только буквы, цифры и дефис, при ответах на запрос можно использовать аббревиатуры, если ключевые слова записаны одним из двух следующих способов:

• подобно тому, как это осуществляется при вводе в командную строку опций Автокада, часть ключевого слова записывается прописными буквами, которые и используются в качестве аббревиатуры, а остальная часть - строчными буквами (например: “LType”, “eXit”, “toP”);

• ключевое слово записывается прописными буквами, а сразу следом за ним через запятую записывается аббревиатура (например: “LTYPE,LT” ). Некоторое неудобство этого способа заключается в том, что аббревиатура обязательно должна включать первую букву слова. Поэтому запись “EXIT,X” не будет восприниматься.

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

Функция initget в некоторых случаях может использоваться и без ключевых слов, ограничивая возможности ошибочного ввода данных. Подобные ситуации нередко возникают как следствие невнимательности или усталости оператора. В следующем примере запрещен пустой ввод, ввод нулевого или отрицательного значения:

(initget (+ 1 2 4))

(setq lenline

(getreal "\nВведите длину отрезка:_”)

).

Битовые значения представлены арифметической функцией (+ 12 4) только с целью наглядности. Обычно битовые значения, если они используются (например, в описываемой в разделе 6.6 системной переменной OSMODE), сразу представляются их суммой. В рассматриваемом случае это должно выглядеть так:

(initget 7).

Более подробно принципы использования функции initget освещены в [1, 3, 4].

Возвращаясь к примеру, описанному в разд. 4.1, организуем запрос, нужно ли перемещать набор в новое положение.

(initget “Yes No”)

(setq x (getkword “\nПepeмecтить набор? (Yes or No): "))

(if (= x “Yes”)

(command “move” ss “” pt1 pause)

)

В этом примере немаловажно следующее обстоятельство. В функции initget опущен аргумент биты, следовательно на ввод не накладываются никакие ограничения. Это дает возможность установить выбор по умолчанию, которое в данном случае представляет собой отказ от перемещения набора. Поэтому пустой ввод, т.е. нажатие клавиши Enter, вызывает именно эту реакцию. Ввод же литер “Y”, “у” или слов “Yes”, “yes” организует базовую точку набора pt1, после чего программа будет ожидать указание нового положения базовой точки.

<p>4.4. Вычерчивание болта</p>

Ранее уже говорилось о том, что оформление стандартных элементов чертежей (узлов, деталей и т.п.) в виде блоков приводит к разрастанию графической базы данных до немыслимых размеров. Целесообразнее написать программу, которая обрисовывала бы часто используемые детали в соответствии с заданными параметрами. Рассмотрим структуру такой программы на примере вычерчивания болта (рис. 1).

Основными параметрами болта являются: наружный d и внутренний dвн диаметры резьбы, длина стержня l и длина нарезки l0 . Для упрощения демонстрационной программы ycтановим высоту головки болта hг равной 0.7d, большую хорду головки в плане равной 2d, глубину нарезки равной 0.87t, где t - шаг резьбы. Эти параметры соответствуют стандарту метрической резьбы. Болт изобразим в упрощенном виде, т.е. без обрисовки фасок на головке и стержне. В качестве точки вставки примем точку пересечения оси болта с линией опорной поверхности головки (точка p5 на рис. 1). Предполагаем, что в чертеже созданы ранее необходимые слои (например, путем загрузки описанных выше стандартных форматов). Обозначение точек на чертеже соответствует идентификаторам, используемым в программе.

Рис. 1. Условное изображение болта. Обозначения точек соответствуют идентификаторам, принятым в программе

;;; ===============================================

(defun C:BOLT ()

;;; Ввод параметров болта

(setq p5 (getpoint “Insertion point:_"))

(setq dia (getdist “\nInput diameter:_”))

(setq l1 (getdist “\nInput length of bolt:_"))

(setq I2 (getdist “\nInput length of screw:_"))

;;; Угловые точки головки болта

(setq p6 (polar p5 (/ pi 2.0) dia))

(setq p7 (polar p6 pi (* dia 0.7)))

(setq p8 (polar p7 (+ pi (/ pi 2.0)) (* 2.0 dia)))

(setq p9 (polar p8 0.0 (* dia 0.7)))

;;; Концевые точки ребер головки

(setq p1 (polar p8 (/ pi 2.0) (* dia 0.5)))

(setq p4 (polar p1 (/ pi 2.0) dia))

;;; Угловые точки стержня болта

(setq p2 (polar p1 0.0 (+ l1 (* dia 0.7))))

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных