Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Взаимодействие с пользователем



Взаимодействие с пользователем заключается в запросах различных данных, объектов, выводе сообщений. Эти действия реализуются объектом AcadUtility, коллекцией AcadSelectionSets и ее объектом AcadSelectionSet.

Инициализация ограничений ввода

procedure InitializeUserInput(Bits: Byte; KeyWordList: OleVariant);

Вызов метода InitializeUserInput задает ограничения по вводу данных для методов: GetKeyword, GetInteger, GetReal, GetDistance, GetAngle, GetOrientation, GetPoint, и GetCorner.

Параметры:

  • Bits— битовый флаг, являющийся суммой бит в соответствии с их весами; обязательный
Бит Описание
Запрещает NULL ввод, т.е. предотвращает ввод пользователем только Enter или пробела
Запрещает ввод нуля
Запрещает ввод отрицательных чисел
Разрешает ввод координат точек за пределами чертежных лимитов даже если системная переменная LIMCHECK установлена в 1.
Не используется
Использовать для " резиновой нити" штриховую линию вместо сплошной
Игнорировать Z-координату точек для метода GetDistance
Разрешает ввод любых данных
  • KeyWordList — строка, которая задает допустимые ключевые слова; необязательный. Ключевые слова разделяются пробелом. Если при вводе ключевого слова разрешен сокращенный вариант — обязательная часть вводится в верхнем регистре.

Примеры использования:

// не разрешен NULL вводAcad.ActiveDocument.Utility.InitializeUserInput(1); // не разрешен NULL ввод и использовать для " резиновой нити" штриховую линию (33 = 32 + 1)Acad.ActiveDocument.Utility.InitializeUserInput(33); // не разрешен NULL ввод, заданы ключевые словаAcad.ActiveDocument.Utility.InitializeUserInput(1, 'Yes No');

Вывод сообщений в командную строку

procedure Prompt( const Message: WideString); — функция выводит в командную строку текст Message

Параметры:

  • Message — текст сообщения; необязательный

Пример использования:

Acad.ActiveDocument.Utility.Prompt('Press any key...');

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

function GetPoint(Point: OleVariant; Prompt: OleVariant): OleVariant;

Параметры:

  • Point — 3-х элементный массив координат начальной точки; необязательный
  • Prompt — текст подсказки, выводимой в командную строку; необязательный

Возвращаемое значение — 3-х элементный массив координат точки.

Пример использования:

var Pnt1, Pnt2: OleVariant; begin // Запрос у пользователя координат первой точки Pnt1: = Acad.ActiveDocument.Utility.GetPoint(, 'Укажите первую точку: '); // Запрос у пользователя координат второй точки с отображением " резиновой нити" от первой точки Pnt2: = Acad.ActiveDocument.Utility.GetPoint(Pnt1, 'Укажите вторую точку: '); // Построение отрезка из первой во вторую точку Acad.ActiveDocument.ModelSpace.AddLine(Pnt1, Pnt2); end;

Запрос угла прямоугольника

function GetCorner (Point: OleVariant; Prompt: OleVariant): OleVariant;

Параметры:

  • Point — 3-х элементный массив координат начальной точки; обязательный
  • Prompt — текст подсказки, выводимой в командную строку; необязательный

Возвращаемое значение — 3-х элементный массив координат точки.

Пример использования:

var Pnt1, Pnt2, Pnt3, Pnt4: OleVariant; begin // Запрос у пользователя координат первой точки Pnt1: = Acad.ActiveDocument.Utility.GetPoint(, 'Укажите первый угол: '); // Запрос у пользователя координат второй точки с // отображением " резинового прямоугольника" от первой точки Pnt2: = Acad.ActiveDocument.Utility.GetCorner(Pnt1, 'Укажите второй угол: '); // Вычисление остальных координат прямоугольника Pnt3: = AcadPoint(Pnt1[0], Pnt2[1]); Pnt4: = AcadPoint(Pnt2[0], Pnt1[1]); // Построение прямоугольника Acad.ActiveDocument.ModelSpace.AddLine(Pnt1, Pnt3); Acad.ActiveDocument.ModelSpace.AddLine(Pnt3, Pnt2); Acad.ActiveDocument.ModelSpace.AddLine(Pnt2, Pnt4); Acad.ActiveDocument.ModelSpace.AddLine(Pnt4, Pnt1); end;

Запрос угла

function GetAngle(Point: OleVariant; Prompt: OleVariant): Double;

Параметры:

  • Point — 3-х элементный массив координат начальной точки; необязательный
  • Prompt — текст подсказки, выводимой в командную строку; необязательный

Возвращаемое значение — угол в радианах против часовой стрелки (т.е. игнорирует значение ANGDIR).

Функция выводит в командную строку подсказку Prompt и ожидает от пользователя ввода либо значения угла (в текущем формате угловых единиц), либо ввода 2-х точек прямой с отображением " резиновой нити". При получении угла учитываются переменные ANGBASE и ANGDIR.

Пример использования:

var Ang: Double; begin // Запрос у пользователя угла Ang: = Acad.ActiveDocument.Utility.GetAngle(, 'Укажите значение угла: '); ShowMessage(Format('Задан угол %f градусов', [RadToDeg(Ang)])); end;

Запрос расстояния

function GetDistance(Point: OleVariant; Prompt: OleVariant): Double;

Параметры:

  • Point — 3-х элементный массив координат начальной точки; необязательный
  • Prompt — текст подсказки, выводимой в командную строку; необязательный

Возвращаемое значение — расстояние.

Функция выводит в командную строку подсказку Prompt и ожидает от пользователя ввода либо одной точки (если параметр Point опущен) либо 2-х точек с отображением " резиновой нити"

Пример использования:

var Dist: Double; begin // Запрос у пользователя точек для расчета расстояния Dist: = Acad.ActiveDocument.Utility.GetDistance(, 'Select first point: '); // Вывод значения расстояния в командную строку Acad.ActiveDocument.Utility.Prompt(Format('Distance = %f', [Dist])); end;

Запрос целого числа

function GetInteger(Prompt: OleVariant): Smallint;

Параметры:

  • Prompt — текст подсказки, выводимой в командную строку; необязательный

Возвращаемое значение — введенное пользователем целое число.

Пример использования:

var Int: Smallint; begin // Запрос у пользователя целого числа Int: = Acad.ActiveDocument.Utility.GetInteger('Введите целое число < -32768...32767>: '); // Вывод значения в командную строку Acad.ActiveDocument.Utility.Prompt(Format('Число = %d', [Int])); end;

Запрос вещественного числа

function GetReal(Prompt: OleVariant): Double;

Параметры:

  • Prompt — текст подсказки, выводимой в командную строку; необязательный

Возвращаемое значение — введенное пользователем вещественное число.

Пример использования:

var Dbl: Double; begin // Запрос у пользователя целого числа Dbl: = Acad.ActiveDocument.Utility.GetReal('Введите вещественное число: '); // Вывод значения в командную строку Acad.ActiveDocument.Utility.Prompt(Format('Число = %f', [Dbl])); end; Создание штриховки

Чтобы создавать штриховку, сначала создайте объект Hatch, используя метод AddHatch. После того, как объект Hatch был создан, добавьте внешний цикл, используя метод AppendOuterLoop. Внешний цикл должен быть закрыт и должен быть создан прежде, чем можно добавить любые внутренние циклы. После того, как был создан допустимый внешний цикл, добавляют внутренние циклы, по одному, используя метод AppendInnerLoop.

ПРЕДУПРЕЖДЕНИЕ! Как только объект Hatch был создан, Вы должны добавить внешний цикл к объекту Hatch для того, чтобы он стал допустимым объектом AutoCAD. Если Вы делаете любой другой запрос операции кроме метода AppendOuterLoop, AutoCAD введет непредсказуемое состояние.

 

AddHatch

RetVal = object.AddHatch(PatternType, PatternName,

Associativity [, HatchObjectType])

 

Object

ModelSpace Коллекция, PaperSpace Коллекция, Block Объект или объекты обращающиеся к этому методу.

PatternType

AcPatternType or AcGradientPatternType перечисление; только для ввода
Если значение перечисления HatchObjectType - acHatchObject, то используйте перечисление AcPatternType; если значение перечисления HatchObjectType - AcGradientObject, то используйте перечисление AcGradientPatternType.

PatternName

String; только для ввода

Если значение перечисления HatchObjectType - acHatchObject, то PatternName должен содержать название образца штриховки. Если значение перечисления HatchObjectType - acGradientObject, то PatternName должен содержать один из названия образца градиента, перечисленные в GradientName.

Associativity

Boolean; только для ввода

TRUE: Штриховка будет ассоциативна.

FALSE: Штриховка не будет ассоциативна.

HatchObjectType

HatchObjectType; дополнительный; только для ввода
Значение по умолчанию - значение перечисления AcHatchObjectType AcHatchObject. Если значение перечисления AcHatchObjectType - AcGradientObject, то PatternType должен иметь тип AcGradientPatternType и PatternName должен содержать название образца градиента.

RetVal

Hatch объект

Недавно созданный объект Hatch.

// свойства штриховки

hatchObj: =MSpace.AddHatch(1, 'SOLID', True);

// передаем обсласть

hatchObj.AppendOuterLoop (RectHatch);

// финализируем границы

hatchObj.Evaluate;

AppendOuterLoop

object.AppendOuterLoop (loop)

 

Object

Hatch

Объект или объекты, обращающиеся к этому методу.

Loop

Object (массив объектов); только для ввода

Массив объектов, формирующих закрытую границу. Массив может состоять из одного или более объектов. Если используется больше чем один объект, их оконечные точки должны совпасть для цикла, который будет создан. Цикл может содержать следующие типы объектов: Line, Polyline, Circle, Ellipse, Spline, Region

 

Замечания

 

После того, как объект Hatch был создан, используя метод AddHatch, добавьте внешний цикл. Внешний цикл должен быть закрыт и должен быть создан прежде, чем любые внутренние циклы можно добавить. После того, как допустимый внешний цикл был создан, добавляет любые внутренние циклы, по одному, используя метод AppendInnerLoop.

 

Как только Вы закончили определять границы для штриховки, используете метод Evaluate чтобы вычислять линии штриховки или заполнения для границ, затем используйте метод Regen, чтобы модифицировать отображение штриховки.

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2017-03-03; Просмотров: 852; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.022 с.)
Главная | Случайная страница | Обратная связь