Функции работы с системой
В данном разделе собраны функции, которые сами ничего не вычисляют и не работают с объектами. Данные функции предназначены для хранения и запроса различной системной информации.
Сохранение и восстановление текущего состояния сцены
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 нужен при выполнении длительных процессов, чтобы показать, что выполняется работа и система не "зависла". Показывается в центре экрана поверх экрана задачи (см. рисунок).