Функции работы с системой
В данном разделе собраны функции, которые сами ничего не вычисляют и не работают с объектами. Данные функции предназначены для хранения и запроса различной системной информации.
Сохранение и восстановление текущего состояния сцены
INT GetSnap()
Функции GetSnap запоминает текущее состояние системы. А именно:
- Положение системы координат;
- Текущую привязку;
- Текущую работу с координатами (в абсолютных единицах или в приращениях, декартовы или цилиндрические координаты);
- Режим «Орто» включен или нет;
- Текущее расположение окон;
- Текущее состояние при создании/редактировании размеров (графический коэффициент);
- Текущий фильтр;
- Текущий слой;
- Текущий цвет;
- Текущий тип линии;
- Текущая толщина линии;
- Текущее состояние привязок.
- Текущий графический коэффициент
- Текущий масштаб измеряемых величин
Свойства создаваемого структурного объекта
- Цвет не определен
- Слой не определен
- Тип линии не определен
- Толщина линии не определена
Функция возвращает количество запомненных положений.
INT ReSnap([INT <Num>])
Функция ReSnap восстанавливает запомненное функцией GetSnap
состояние системы. После вызова функции количество запомненных состояний системы уменьшается.
Необязательный параметр <Num>
указывает, к какому, начиная с конца, состоянию системы надо вернуться. Если он не указан, происходит возвращение к последнему запомненному состоянию. Функция возвращает количество запомненных состояний системы
Например, функция GetSnap
была вызвана дважды и в памяти находятся два запомненных состояния системы. Первый вызов функции ReSnap
без параметра восстановит последнее запомненное состояние системы, второй вызов без параметра – предпоследнее состояние системы.
Для восстановления сразу предпоследнего состояния достаточно выполнить
ReSnap(2);
Точность сравнения расстояний
double SetEpsD(double <NewEps>)
Функция SetEpsD устанавливает новое значение для точности сравнения расстояний (см sysvar(32)). Функция возвращает предыдущее значение точности сравнения расстояний или -1 при попытке установить не положительное значение.
Запрос у системы различной информации
SysVar
VARIANT SysVar(INT <Varcode>)
Функция SysVar возвращает различную системную информацию, в зависимости от значения параметра <Varcode>
(см. таблицу).
|
Возвращает |
|
---|---|---|
|
Версия системы |
|
|
Папка, откуда запущена задача |
|
|
Полное имя файла текущей сцены |
|
|
Имя файла конфигурации системы |
|
|
Полное имя последнего добавленного файла |
|
|
Папка последнего импорта |
|
|
Папка последнего экспорта |
|
|
Полное имя последней запущенной макропрограммы |
|
|
Полное имя последнего файла шрифта |
|
|
Путь к последнему текстовому файлу |
|
|
Комментарий загруженного файла сцены |
|
|
Имя текущей исполняемой макропрограммы |
|
|
|
|
|
0 – «По схеме» 1 - Видовая система координат (ВСК) 2 - Пользовательская система координат(ПСК) 3 – Глобальная система координат (ГСК) Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки) |
|
|
Текущее задание координат 0 – Абсолютные координаты (задаются координаты в текущей системе координат) 1 – Приращения (задаются величины сдвига от последней введенной точки) Устанавливается по команде «Установки» «Привязки» (см. ниже рисунок «Привязки») |
|
|
Текущее задание координат 0 – Декартовы координаты (X, Y, Z) 1 – Цилиндрические координаты (R, A, Z) Устанавливается по команде «Установки» «Привязки» (см. ниже рисунок «Привязки») |
|
|
Текущее режим ортогональности 0 – Режим ортогональности выключен 1 – Режим ортогональности включен Устанавливается по команде «Установки» «Привязки» (см. ниже рисунок «Привязки») |
|
|
Текущий режим округления координат и углов 0 – Округление выключено 1 – Округление включено Устанавливается по команде «Установки» «Привязки» (см. ниже рисунок «Привязки»). Величины округления устанавливаются там же |
|
|
Шаг округления координат. Устанавливается по команде «Установки» «Привязки» (см. ниже рисунок «Привязки») |
|
|
Шаг округления углов. Устанавливается по команде «Установки» «Привязки» (см. ниже рисунок «Привязки») |
|
|
Текущий режим работы с сеткой 0 – Сетка выключена 1 – Сетка включена Устанавливается по команде «Установки» «Привязки» (см. ниже рисунок «Привязки»). |
|
|
Шаг сетки. Устанавливается по команде «Установки» «Привязки» (см. ниже рисунок «Привязки»). |
|
|
Текущая привязка 0 – Привязка отсутствует (None) 1 - Автопривязка (AutoSnap) 2 – Привязка к концу отрезка или дуги (Endpoint) 3 – Привязка к центру окружности или дуги (Centerpoint) 4 – Привязка к середине отрезка (Midpoint) 5- Привязка к пересечению объектов (Intersect) 6- Привязка к перпендикуляру (Perpend) 7 – Привязка к ближайшей точке объекта (Near) 8 – Привязка по касательной к дуге или окружности (TangentPoint) 9 – Привязка к квадранту окружности или дуги (Quadrant) 10 –Привязка к концу контура (Endpath) 11 – Привязка к узлу (Node) 12 – Привязка к пересечению контуров (Pathinter) Устанавливается в пользовательских умолчаниях (команда Установки/Параметры, закладка Система/Привязки) |
|
|
Режим привязки к продолжению объекта. 0 – Выключен 1 – Включен Устанавливается по команде «Установки» «Привязки» (см. ниже рисунок «Привязки») |
|
|
|
|
|
Текущее значение точности сравнения расстояний |
|
|
|
|
|
Номер текущего цвета (0...239) |
|
|
Имя текущего слоя |
|
|
|
|
|
Текущий вид. Зависит от схемы окон. Может принимать значение от одного до четырех |
|
|
Развернут ли текущий вид во весь экран? 0 – Не Развернут 1 - Развернут |
|
|
|
|
|
Режим отображения (RendMode) на текущем видовом окне: 0 - векторное 1 - растровое удаление невидимых линий 2 - полутоновое |
|
|
|
|
|
Количество объектов верхнего уровня в сцене |
|
|
Количество выбранных объектов в сцене |
|
|
Общее количество всех объектов на всех уровнях |
|
|
Общее количество невидимых объектов |
|
|
|
|
|
Устарело. Не используется. |
|
|
В текущей версии программы по умолчанию в качестве единицы измерения доступны только миллиметры |
|
|
Величина стрелки прогиба при отображении плоских кривых (дуг или окружностей). |
|
|
Количество меридианов (см. ниже рисунок «Параметры аппроксимации»). |
|
|
Точность аппроксимации для твердых тел, построенных с помощью операций выдавливания. Устанавливается в пользовательских умолчаниях (команда Установки/Параметры, закладка Система/Аппроксимация) |
|
|
Угол гладкого сопряжения (см. выше рисунок «Параметры аппроксимации»). |
|
|
Общий графический коэффициент (см. рисунок). Устанавливается в пользовательских умолчаниях (команда Установки/Параметры, закладка Система/Режим отображения) |
|
|
Количество меридианов при гибке |
|
|
Текущее состояние вывода диагностических сообщений и трассировки макропрограмм: 0 - трассировка макропрограмм отключена, вывод сообщений отключен, режим разработчика отключен; 1 - трассировка макропрограмм включена, вывод сообщений отключен, режим разработчика отключен; 2 - трассировка макропрограмм отключена, вывод сообщений включен, режим разработчика отключен; 3 - трассировка макропрограмм включена, вывод сообщений включен, режим разработчика отключен; 4 - трассировка макропрограмм отключена, вывод сообщений отключен, режим разработчика включен; 5 - трассировка макропрограмм включена, вывод сообщений отключен, режим разработчика включен; 6 - трассировка макропрограмм отключена, вывод сообщений включен, режим разработчика включен; 7 - трассировка макропрограмм включена, вывод сообщений включен, режим разработчика включен. |
|
|
Флаг, сигнализирующий, произошли ли изменения в сцене со времени последнего сохранения или открытия файла 0 – не произошли 1 - произошли |
|
|
путь к папке %COMMONAPPDATA%\GeoS\<App>\<AppVer> |
|
|
путь к папке %APPDATA%\GeoS\<App>\<AppVer> |
|
|
Имя провайдера базы данных. Он зависит от разрядности приложения. |
|
|
Выдавать предупреждение при поднятии версии K3-файлов (во время их перезаписывания)?
В обоих случаях SetSysVar возвращет 1 |
|
|
полный путь к файлу с журналом (<app>.jou). |
|
|
HWND главного окна приложения (добавлено 12.04.2023) |
|
Пример:
=SysVar(0); "Система \"K3-Mebel PKM\" Версия 7.4.971 RC 14 декабря 2016г." =SysVar(1); "C:\\Program Files\\Geos\\К3 Мебель ПКМ 7.4\\Bin\\" =SysVar(28); 10
SysArr
INT SysArr(INT <Varcode>, VARIANT ARRAY <Info>)
Функция заполняет массив <Info>
различной системной информацией, в зависимости от значения параметра <Varcode>
. Функция возвращает количество заполненных элементов массива, если не указано иное (см. таблицу).
|
|
|
---|---|---|
|
Заполняет массив координатами базовой точки в ГСК |
|
|
Заполняет массив координатами последней сколотой точки в ГСК. Следует однако, иметь в виду, что в процессе работы некоторых команд координаты последней сколотой точки могут отличаться от координат точки, где была мышь. |
|
|
|
|
|
Заполняет массив значениями цветов служебных элементов окна сцены. 1 - цвет фона; 2 - цвет разделительных линий; 3 - цвет выделение текущего вида; 4 - цвет резины; 5 - цвет курсора; 6 - цвет сетки; 7 - цвет базовой точки; 8 - цвет оси репера “на нас”; 9 - цвет оси репера “от нас”. |
|
|
Заполняет массив значениями текущих свойств: 1 - тип линии для создаваемого объекта, 2 - толщина линии для создаваемого объекта, 3 - графический коэффициент для создаваемого объекта
свойства для создаваемого структурного объекта (1-«да»; 0-«нет»): 4 -слой не определен 5 - цвет не определен 6 - тип линий не определен 7 - толщина линий не определена 8 - графический коэффициент не определен
при извлечении объекта из составного объекта (1-«да»; 0-«нет»): 9 - наследовать слой родителя 10 - наследовать цвет родителя 11 - наследовать тип линий родителя 12 - наследовать толщину родителя 13 - наследовать графический коэффициент родителя |
|
|
Заполняет массив информацией о статусе камеры 1 - Аксонометрия/Перспектива (0/1); 2 - Есть/Нет вращение вокруг вектора проецирования (1/0); 3 - Есть/Нет дальний предел отображения (1/0); 4 - Есть/Нет ближний предел отображения (1/0); |
|
|
Заполняет вектор координатами (в ГСК) начала вектора проецирования текущего вида (точка расположения (to) камеры). |
|
|
Заполняет вектор координатами (в ГСК) конца вектора проецирования текущего вида (точка направления (from) камеры). |
|
|
Заполняет массив информацией о текущей камере 1 - Угол раствора камеры; 2 - Угол поворота камеры; 3 - Значение ближнего предела видимости; 4 - Значение дальнего предела видимости; |
|
|
0 Заносит в массив пределы отображения в окне текущего вида в видовой системе координат. 1 – Xmin 2 – Ymin 3 – Xmax 4 – Ymax |
|
|
Заполняет массив длиной до 21 элемента, содержащий параметры текста для четырех типов размеров (линейный, угловой, радиус, диаметр): 1 - Высота символа 2 - Отношение ширины к высоте (в процентах) 3 - Угол наклона шрифта (в градусах) 4 - Разрядка между символами по горизонтали (в процентах) 5 - Разрядка между символами по вертикали (в процентах) 21-й элемент - величина отступа между размерами от базы |
|
|
Заполняет массив информацией о текущей дате и времени. 1 - Число 2 – Месяц (1 – январь; 12 – декабрь) 3 - Год 4 - День недели (1 – понедельник; 7 – воскресенье) 5 - Часы 6 - Минуты 7 - Секунды 8 - Номер дня с начала года Возвращает время в секундах с полуночи (00:00:00), 1 января 1970 года, по согласованному универсальному времени (UTC) (полезно для вычисления временного интервала). |
|
|
Заполняет массив длиной 9 элементов информацией о системе и ее версии. Ниже представлено назначение и тип параметров по порядку. 1 - Число: Код приложения
3. - Число: Номер версии приложения
4. - Число: Уровень пользования
5 - Строка: Номер версии системы(«7.1») 6 - Строка: Дата компиляции (“2013.07.23”) 7 – Строка: Авторское право ("Группа компаний ГеоС") 8 - Разрядность Windows 32|64 9 - Разрядность приложения 32|64 |
|
|
Заполняет массив длиной до четырех элементов параметрами текущей штриховки: 1 - тип штриховки (от 0 до 189) 2 - масштаб штриховки 3 - угол наклона штриховки в градусах 4 - режим зависимости параметров штриховки от графического коэффициента сцены:
Возвращает количество заполненных элементов |
|
|
Заполняет массив длиной до 5 элементов, содержащий параметры стиля текста: 1 - Высота символа 2 - Отношение ширины к высоте (в процентах) 3 - Угол наклона шрифта (в градусах) 4 - Разрядка между символами по горизонтали (в процентах) 5 - Разрядка между символами по вертикали (в процентах) |
|
Пример:
BPoint 100 200 300; Defarrays a[9]; =SysArr(31,a); 3 =a[1]; 100 =a[2]; 200 =SysArr(41,a); 9 =a[1]; 7 =a[9]; 0
Бесконечный ProgressBar
Для доступа из макросов к бесконечному градуснику (чтобы показать, что мы ещё живы) добавлена функция infinitepb(code, text). Синтаксис:
void infinitepb(1, "Текст на градуснике")
— запустить бесконечный ProgressBar.void infinitepb(2, "")
— шаг бесконечного ProgressBar'а. Второй параметр игнорируется.void infinitepb(3, "")
— завершить бесконечный ProgressBar. Второй параметр игнорируется.
Бесконечный ProgressBar нужен при выполнении длительных процессов, чтобы показать, что выполняется работа и система не "зависла". Показывается в центре экрана поверх экрана задачи (см. рисунок).