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

Материал из 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 – Глобальная система координат (ГСК)

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

INT
21

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

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

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

Устанавливается по команде «Установки» «Привязки» (см. ниже рисунок «Привязки»)

LOGICAL
22

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

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

1 – Цилиндрические координаты (R, A, Z)

Устанавливается по команде «Установки» «Привязки» (см. ниже рисунок «Привязки»)

LOGICAL
23

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

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

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

Устанавливается по команде «Установки» «Привязки» (см. ниже рисунок «Привязки»)

LOGICAL
24

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

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

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

Устанавливается по команде «Установки» «Привязки» (см. ниже рисунок «Привязки»). Величины округления устанавливаются там же

LOGICAL
25

Шаг округления координат. Устанавливается по команде «Установки» «Привязки» (см. ниже рисунок «Привязки»)

DOUBLE
26

Шаг округления углов. Устанавливается по команде «Установки» «Привязки» (см. ниже рисунок «Привязки»)

DOUBLE
27

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

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

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

Устанавливается по команде «Установки» «Привязки» (см. ниже рисунок «Привязки»).

LOGICAL
28

Шаг сетки. Устанавливается по команде «Установки» «Привязки» (см. ниже рисунок «Привязки»).

DOUBLE
29
Файл:Sysvar29.png
Привязки

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

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)

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

INT
30

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

0 – Выключен

1 – Включен

Устанавливается по команде «Установки» «Привязки» (см. ниже рисунок «Привязки»)

LOGICAL


32

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

double


40

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

INT
42

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

STRING
50
Файл:Sysvar50.png
Схема видов




Текущая схема видов. Номера идут от одного до десяти слева направо сверху вниз.
Команда Вид/Выбрать схему окон

INT
51

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

INT
52

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

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

1 - Развернут

LOGICAL


58

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

0 - векторное

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

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

INT


60

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

INT
61

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

INT
62

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

INT
63

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

INT


70

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

71
Файл:Sysvar71A.png
Выбор текущей единицы измерения




Количество миллиметров в текущей единице измерения. Допускается изменять, если в сцене не создавалось ни одного объекта

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

DOUBLE
72

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

DOUBLE
73

Количество меридианов (см. ниже рисунок «Параметры аппроксимации»).

INT
74
Файл:Sysvar74.png
Параметры аппроксимации

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

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

DOUBLE
75

Угол гладкого сопряжения (см. выше рисунок «Параметры аппроксимации»).

DOUBLE
76
Параметры отображения

Общий графический коэффициент (см. рисунок).

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

DOUBLE
77

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

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)

Указатель

Пример:

=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

Пример:

 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.png
Бесконечный ProgressBar

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

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

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


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