Функции работы с системой

Материал из K3-Macro
Макро | Создание макропрограмм | Переменные и выражения | Вызов из ZIP | Типовые параметры | Создание геом. объектов | Буфер обмена | Сценарии | Параметрические библиотеки | Геометрические характеристики | Атрибуты | Структурные объекты | Текстовые файлы | Системные параметры | Работа с файлами | Редактирование объектов | Удаление объектов | Размеры | Штриховка | Объект «Текст» | Камера | Работа с видом | Наборы параметров | Запрос информации у пользователя | Фильтры | Слои | Графы | Универсальные плоские объекты | Функции работы с системой | Функции работы с объектами сцены | Работа с динамически подключаемыми библиотеками | Функции работы с массивами | Работа со строками | Математические функции | Работа с файлами DBF dBASE IV | Унифицированная работа с базами данных | Вычисление выражений | Присвоение имени объекту | Откатка и восстановление команд | Изменение режима трассировки макропрограмм | Вызов внешних приложений и задач | Проверка условия | Проверка типа переменной | Установка статуса вывода сообщений | Выдача системного сообщения | Выбор объектов | Версия системы | Информация о системе | Проверка принадлежности к списку | Помещение строки в буфер команд | Получение метапути | Установка курсора ожидания | Мебельные команды и функции для макропрограммирования‎

В данном разделе собраны функции, которые сами ничего не вычисляют и не работают с объектами. Данные функции предназначены для хранения и запроса различной системной информации.

Сохранение и восстановление текущего состояния сцены[править | править код]

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> (см. таблицу).

Системная информация
<Varcode>

Возвращает

Тип данных
0

Версия системы

STRING
1

Папка, откуда запущена задача

STRING
2

Полное имя файла текущей сцены

STRING
3

Имя файла конфигурации системы

STRING
4

Полное имя последнего добавленного файла

STRING
5

Папка последнего импорта

STRING
6

Папка последнего экспорта

STRING
7

Полное имя последней запущенной макропрограммы

STRING
8

Полное имя последнего файла шрифта

STRING
9

Путь к последнему текстовому файлу

STRING
10

Комментарий загруженного файла сцены

STRING
11

Имя текущей исполняемой макропрограммы

STRING


20
Система координат:

0 — «По схеме»

1 — Видовая система координат (ВСК)

2 — Пользовательская система координат(ПСК)

3 — Глобальная система координат (ГСК)

Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки/Умолчания для точки) (см. ниже рис. 1)

INT
21

Текущее задание координат

0 — Абсолютные координаты (задаются координаты в текущей системе координат)

1 — Приращения (задаются величины сдвига от последней введенной точки)

Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки/Умолчания для точки) (см. ниже рис. 1)

LOGICAL
22

Текущее задание координат

0 — Декартовы координаты (X, Y, Z)

1 — Полярные координаты (R, A, Z)

Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки/Умолчания для точки) (см. ниже рис. 1)

LOGICAL
23

Текущее режим ортогональности

0 — Режим ортогональности выключен

1 — Режим ортогональности включен

Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки/Умолчания для точки) (см. ниже рис. 1)

LOGICAL
24

Текущий режим округления координат и углов

0 — Округление выключено

1 — Округление включено

Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки/Умолчания для точки) (см. ниже рис. 1)

LOGICAL
25

Шаг округления координат.

Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки/Умолчания для точки) (см. ниже рис. 1)

DOUBLE
26

Шаг округления углов.

Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки/Умолчания для точки) (см. ниже рис. 1)

DOUBLE
27

Текущий режим работы с сеткой

0 — Сетка выключена

1 — Сетка включена

Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки/Сетка и репер) (см. ниже рис. 2)

LOGICAL
28

Шаг сетки.

Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Привязки/Сетка и репер) (см. ниже рис. 2)

DOUBLE
29
Текущая привязка

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)

INT
30

Режим привязки к продолжению объекта.

0 — Выключен

1 — Включен

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

Устанавливается в умолчаниях (команда Установки/Параметры, закладка Интерфейс/Ввод/Автопривязки) (см. ниже рис. 3)

LOGICAL


32

Текущее значение точности сравнения расстояний

double


40

Номер текущего цвета (0...239)

INT
42

Имя текущего слоя

STRING
50
Текущая схема видов.

В текущей версии программы доступна только схема видов с четырьмя видовыми окнами (2х2)

INT
51

Текущий вид. Зависит от схемы окон. Может принимать значение от одного до четырех

INT
52

Развернут ли текущий вид во весь экран?

0 — Не Развернут

1 — Развернут

LOGICAL


58

Режим отображения (RendMode) на текущем видовом окне:

0 — векторное

1 — растровое удаление невидимых линий

2 — полутоновое

3 — заливка цветом объекта

4 — настраиваемое отображение видимых и невидимых линий

5 — по отклонению нормали от вертикали (К3-Тент)

INT


60

Количество объектов верхнего уровня в сцене

INT
61

Количество выбранных объектов в сцене

INT
62

Общее количество всех объектов на всех уровнях

INT
63

Общее количество невидимых объектов

INT


70

Устарело. Не используется.

71

Количество миллиметров в текущей единице измерения.

В текущей версии программы по умолчанию в качестве единицы измерения доступны только миллиметры

DOUBLE
72

Величина стрелки прогиба при отображении плоских кривых (дуг или окружностей).

DOUBLE
73

Количество меридианов.

Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Апроксимация) (см. ниже рис. 4)

INT
74
Параметры аппроксимацииТочность аппроксимации для твердых тел, построенных с помощью операций выдавливания.

Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Апроксимация) (см. ниже рис. 4)

DOUBLE
75

Угол гладкого сопряжения.

Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Апроксимация) (см. ниже рис. 4)

DOUBLE
76

Общий графический коэффициент

Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Режим отображения) (см. ниже рис. 5)

DOUBLE
77

Количество меридианов при гибке.

Устанавливается в умолчаниях (команда Установки/Параметры, закладка Система/Апроксимация) (см. ниже рис. 4)

INT
78

Текущее состояние вывода диагностических сообщений и трассировки макропрограмм:

0 — трассировка макропрограмм отключена, вывод сообщений отключен, режим разработчика отключен;

1 — трассировка макропрограмм включена, вывод сообщений отключен, режим разработчика отключен;

2 — трассировка макропрограмм отключена, вывод сообщений включен, режим разработчика отключен;

3 — трассировка макропрограмм включена, вывод сообщений включен, режим разработчика отключен;

4 — трассировка макропрограмм отключена, вывод сообщений отключен, режим разработчика включен;

5 — трассировка макропрограмм включена, вывод сообщений отключен, режим разработчика включен;

6 — трассировка макропрограмм отключена, вывод сообщений включен, режим разработчика включен;

7 — трассировка макропрограмм включена, вывод сообщений включен, режим разработчика включен.

INT
84

Флаг, сигнализирующий, произошли ли изменения в сцене со времени последнего сохранения или открытия файла

0 — не произошли

1 — произошли

LOGICAL
86

путь к папке %COMMONAPPDATA%\GeoS\<App>\<AppVer>

STRING
87

путь к папке %APPDATA%\GeoS\<App>\<AppVer>

STRING
88

Имя провайдера базы данных. Он зависит от разрядности приложения.

STRING
89

Выдавать предупреждение при поднятии версии K3-файлов (во время их перезаписывания)?

1 — выдавать
0 — не выдавать
ret=SysVar(89) — возвращает 1, если предупреждение выдается и 0 — если не выдается
ret=SetSysVar(89,1) — включает выдачу предупреждения
ret=SetSysVar(89,0) — выключает выдачу предупреждения

В обоих случаях SetSysVar возвращет 1

LOGICAL
91

полный путь к файлу с журналом (<app>.jou).

STRING
92

HWND главного окна приложения (добавлено 12.04.2023)

Указатель
рис. 1
рис. 2
рис. 3
рис. 4
рис. 5

Пример:

=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>. Функция возвращает количество заполненных элементов массива, если не указано иное (см. таблицу).

Системная информация
<Varcode>
Назначение
Количество элементов массива
31

Заполняет массив координатами базовой точки в ГСК

3
33

Заполняет массив координатами последней сколотой точки в ГСК. Следует однако, иметь в виду, что в процессе работы некоторых команд координаты последней сколотой точки могут отличаться от координат точки, где была мышь.

3


41

Заполняет массив значениями цветов служебных элементов окна сцены.

1 — цвет фона;

2 — цвет разделительных линий;

3 — цвет выделение текущего вида;

4 — цвет резины;

5 — цвет курсора;

6 — цвет сетки;

7 — цвет базовой точки;

8 — цвет оси репера “на нас”;

9 — цвет оси репера “от нас”.

9
43

Заполняет массив значениями текущих свойств:

1 — тип линии для создаваемого объекта,

2 — толщина линии для создаваемого объекта,

3 — графический коэффициент для создаваемого объекта


свойства для создаваемого структурного объекта (1-«да»; 0-«нет»):

4 -слой не определен

5 — цвет не определен

6 — тип линий не определен

7 — толщина линий не определена

8 — графический коэффициент не определен


при извлечении объекта из составного объекта (1-«да»; 0-«нет»):

9 — наследовать слой родителя

10 — наследовать цвет родителя

11 — наследовать тип линий родителя

12 — наследовать толщину родителя

13 — наследовать графический коэффициент родителя

От 1 до 13
53

Заполняет массив информацией о статусе камеры

1 — Аксонометрия/Перспектива (0/1);

2 — Есть/Нет вращение вокруг вектора проецирования (1/0);

3 — Есть/Нет дальний предел отображения (1/0);

4 — Есть/Нет ближний предел отображения (1/0);

4
54

Заполняет вектор координатами (в ГСК) начала вектора проецирования текущего вида (точка расположения (to) камеры).

3
55

Заполняет вектор координатами (в ГСК) конца вектора проецирования текущего вида (точка направления (from) камеры).

3
56

Заполняет массив информацией о текущей камере

1 — Угол раствора камеры;

2 — Угол поворота камеры;

3 — Значение ближнего предела видимости;

4 — Значение дальнего предела видимости;

4
57

0 Заносит в массив пределы отображения в окне текущего вида в видовой системе координат.

1 — Xmin

2 — Ymin

3 — Xmax

4 — Ymax

4
80

Заполняет массив длиной до 21 элемента, содержащий параметры текста для четырех типов размеров (линейный, угловой, радиус, диаметр):

1 — Высота символа

2 — Отношение ширины к высоте (в процентах)

3 — Угол наклона шрифта (в градусах)

4 — Разрядка между символами по горизонтали (в процентах)

5 — Разрядка между символами по вертикали (в процентах)

21-й элемент — величина отступа между размерами от базы

до 21
81

Заполняет массив информацией о текущей дате и времени.

1 — Число

2 — Месяц (1 — январь; 12 — декабрь)

3 — Год

4 — День недели (1 — понедельник; 7 — воскресенье)

5 — Часы

6 — Минуты

7 — Секунды

8 — Номер дня с начала года

Возвращает время в секундах с полуночи (00:00:00), 1 января 1970 года, по согласованному универсальному времени (UTC) (полезно для вычисления временного интервала).

8
82

Заполняет массив длиной 9 элементов информацией о системе и ее версии. Ниже представлено назначение и тип параметров по порядку.

1 — Число: Код приложения

  • 0 — К3-Конструктор
  • 3 — K3-Ship
  • 7 — K3-Mebel
  • 8 — K3-Коттедж (Сруб) K3-Cottage
  • 10 — K3-Тент
  • 13 — K3-Коттедж (Каркас) K3-Domus


2 — Число: Конфигурация системы. Зависит от кода приложения. Для Мебель:

  • 0 — ПКМ
  • 1 — Салон
  • 3 — АМБИ
  • 4 — Фасад
  • 5 — ПКМ генератор состава
  • 6 — ПКМ для тестирования
  • 7 — Бесплатная версия

3. — Число: Номер версии приложения

  • 1 — "5.5"
  • 2 — "5.6"
  • 3 — "6.0"
  • 4 — "6.1"
  • 5 — "6.2"
  • 6 — "6.3"
  • 7 — "6.4"
  • 8 — "6.5"
  • 9 — "6.6"
  • 10 — "7.0"
  • 11 — "7.1"
  • 12 — "7.2"
  • 13 — "7.3"
  • 14 — "7.4"
  • 15 — "7.5"
  • 16 — "8.0"
  • 17 — "8.1"
  • 18 — "9.0"
  • 19 — "8.2"
  • 20 — "8.3"
  • 21 — "9.1"
  • 22 — "10.0"

4. — Число: Уровень пользования

  • 0 — рабочая версия
  • 1 — демонстрационная версия
  • 3 — свободно-распространяемая версия
  • 4 — преподавательская версия
  • 5 — студенческая версия
  • 6 — открытая версия

5 — Строка: Номер версии системы(«7.1»)

6 — Строка: Дата компиляции (“2013.07.23”)

7 — Строка: Авторское право ("Группа компаний ГеоС")

8 — Разрядность Windows 32|64

9 — Разрядность приложения 32|64

7
85

Заполняет массив длиной до четырех элементов параметрами текущей штриховки:

1 — тип штриховки (от 0 до 189) 2 — масштаб штриховки 3 — угол наклона штриховки в градусах 4 — режим зависимости параметров штриховки от графического коэффициента сцены:

  • 0 — не зависит;
  • 1 — зависит

Возвращает количество заполненных элементов

4
90

Заполняет массив длиной до 5 элементов, содержащий параметры стиля текста:

1 — Высота символа

2 — Отношение ширины к высоте (в процентах)

3 — Угол наклона шрифта (в градусах)

4 — Разрядка между символами по горизонтали (в процентах)

5 — Разрядка между символами по вертикали (в процентах)

до 5
92
Информация о CmContainer (Доступно с версии 8.1 от 24 октября 2023г.)
  1. — Тип ключа
  2. — Номер ключа
  3. — Системное время ключа (PC)
  4. — Системное время (CmContainer)
  5. — Сертифицированное время (CmContainer)
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[править | править код]

Бесконечный ProgressBar

Для доступа из макросов к бесконечному градуснику (чтобы показать, что мы ещё живы) добавлена функция infinitepb(code, text). Синтаксис:

void infinitepb(1, "Текст на градуснике") — запустить бесконечный ProgressBar.
void infinitepb(2, "") — шаг бесконечного ProgressBar'а. Второй параметр игнорируется.
void infinitepb(3, "") — завершить бесконечный ProgressBar. Второй параметр игнорируется.

Бесконечный ProgressBar нужен при выполнении длительных процессов, чтобы показать, что выполняется работа и система не "зависла". Показывается в центре экрана поверх экрана задачи (см. рисунок).


Макро | Создание макропрограмм | Переменные и выражения | Вызов из ZIP | Типовые параметры | Создание геом. объектов | Буфер обмена | Сценарии | Параметрические библиотеки | Геометрические характеристики | Атрибуты | Структурные объекты | Текстовые файлы | Системные параметры | Работа с файлами | Редактирование объектов | Удаление объектов | Размеры | Штриховка | Объект «Текст» | Камера | Работа с видом | Наборы параметров | Запрос информации у пользователя | Фильтры | Слои | Графы | Универсальные плоские объекты | Функции работы с системой | Функции работы с объектами сцены | Работа с динамически подключаемыми библиотеками | Функции работы с массивами | Работа со строками | Математические функции | Работа с файлами DBF dBASE IV | Унифицированная работа с базами данных | Вычисление выражений | Присвоение имени объекту | Откатка и восстановление команд | Изменение режима трассировки макропрограмм | Вызов внешних приложений и задач | Проверка условия | Проверка типа переменной | Установка статуса вывода сообщений | Выдача системного сообщения | Выбор объектов | Версия системы | Информация о системе | Проверка принадлежности к списку | Помещение строки в буфер команд | Получение метапути | Установка курсора ожидания | Мебельные команды и функции для макропрограммирования‎