Функции работы с системой
В данном разделе собраны функции, которые сами ничего не вычисляют и не работают с объектами. Данные функции предназначены для хранения и запроса различной системной информации.
Сохранение и восстановление текущего состояния сцены
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 — Глобальная система координат (ГСК) Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки/Умолчания для точки) (см. ниже рис. 1) |
|
|
|
Текущее задание координат 0 — Абсолютные координаты (задаются координаты в текущей системе координат) 1 — Приращения (задаются величины сдвига от последней введенной точки) Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки/Умолчания для точки) (см. ниже рис. 1) |
|
|
|
Текущее задание координат 0 — Декартовы координаты (X, Y, Z) 1 — Полярные координаты (R, A, Z) Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки/Умолчания для точки) (см. ниже рис. 1) |
|
|
|
Текущее режим ортогональности 0 — Режим ортогональности выключен 1 — Режим ортогональности включен Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки/Умолчания для точки) (см. ниже рис. 1) |
|
|
|
Текущий режим округления координат и углов 0 — Округление выключено 1 — Округление включено Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки/Умолчания для точки) (см. ниже рис. 1) |
|
|
|
Шаг округления координат. Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки/Умолчания для точки) (см. ниже рис. 1) |
|
|
|
Шаг округления углов. Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки/Умолчания для точки) (см. ниже рис. 1) |
|
|
|
Текущий режим работы с сеткой 0 — Сетка выключена 1 — Сетка включена Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки/Сетка и репер) (см. ниже рис. 2) |
|
|
|
Шаг сетки. Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки/Сетка и репер) (см. ниже рис. 2) |
|
|
|
Текущая привязка
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 — Привязка параллельно оси Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки/Умолчания для точки) (см. ниже рис. 1) |
|
|
|
Режим привязки к продолжению объекта. 0 — Выключен 1 — Включен Если Привязка к продолжению объекта включена, то при попытке привязаться к пересечению двух отрезков мы привяжемся к точке их пересечения, двже если она не лежит на одном или обоих отрезках. Устанавливается в умолчаниях (команда Установки/Параметры, закладка Интерфейс/Ввод/Автопривязки) (см. ниже рис. 3) |
|
|
|
|
|
|
|
Текущее значение точности сравнения расстояний |
|
|
|
|
|
|
|
Номер текущего цвета (0...239) |
|
|
|
Имя текущего слоя |
|
|
|
Текущая схема видов.
В текущей версии программы доступна только схема видов с четырьмя видовыми окнами (2х2) |
|
|
|
Текущий вид. Может принимать значение от одного до четырех |
|
|
|
Развернут ли текущий вид во весь экран? 0 — Не Развернут 1 — Развернут |
|
|
|
|
|
|
|
Режим отображения (RendMode) на текущем видовом окне: 0 — векторное 1 — растровое удаление невидимых линий 2 — полутоновое 3 — заливка цветом объекта 4 — настраиваемое отображение видимых и невидимых линий 5 — по отклонению нормали от вертикали (К3-Тент) |
|
|
|
|
|
|
|
Количество объектов верхнего уровня в сцене |
|
|
|
Количество выбранных объектов в сцене |
|
|
|
Общее количество всех объектов на всех уровнях |
|
|
|
Общее количество невидимых объектов |
|
|
|
|
|
|
|
Устарело. Не используется. |
|
|
|
Количество миллиметров в текущей единице измерения. В текущей версии программы по умолчанию в качестве единицы измерения доступны только миллиметры |
|
|
|
Величина стрелки прогиба при отображении плоских кривых (дуг или окружностей). |
|
|
|
Количество меридианов. Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Апроксимация) (см. ниже рис. 4) |
|
|
|
Параметры аппроксимацииТочность аппроксимации для твердых тел, построенных с помощью операций выдавливания.
Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Апроксимация) (см. ниже рис. 4) |
|
|
|
Угол гладкого сопряжения. Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Апроксимация) (см. ниже рис. 4) |
|
|
|
Общий графический коэффициент Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Режим отображения) (см. ниже рис. 5) |
|
|
|
Количество меридианов при гибке. Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Апроксимация) (см. ниже рис. 4) |
|
|
|
Текущее состояние вывода диагностических сообщений и трассировки макропрограмм: 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 — Разрядка между символами по вертикали (в процентах) |
|
|
|
Информация о CmContainer (Доступно с версии 8.1 от 24 октября 2023г.)
|
|
Пример:
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 нужен при выполнении длительных процессов, чтобы показать, что выполняется работа и система не "зависла". Показывается в центре экрана поверх экрана задачи (см. рисунок).