Функции макропрограммирования в К3-Коттедж

Материал из К3-Коттедж

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

GetBoardMat

GetBoardMat — возвращает номер текущего материала
Синтаксис idCut=GetBoardMat(idWood,idCut)
Выходные параметры
Параметр Описание
idWood ID породы материала доски из глобальной структуры currBoard
idCut ID сечения доски из глобальной структуры currBoard
Возвращаемое значение ID сечения доски или 0 в случае ошибки

SetBoardMat

SetBoardMat — установить материал доски по указанному сечению и породе
Назначение Устанавливает в глобальной структуре currBoard материал доски по указанному сечению и породе
Синтаксис code=SetBoardMat(idCut,idWood)
Параметры
Параметр Описание
idCut ID сечения доски
idWood ID породы материала доски
Возвращаемое значение ID породы материала доски в случае успеха или 0 в случае ошибки

SetCurrBoard

SetCurrBoard — вызов диалога смены текущего материала доски
Назначение Вызывает диалог смены текущего материала доски
Синтаксис code=SetCurrBoard()
Параметры Нет
Возвращаемое значение 1 — если в диалоге выбран новый материал (установлен в currBoard)

0 — если отказались от смены текущего материала

GetBoardEnd

GetBoardEnd — в массив положить текущие параметры подрезки
Назначение Возвращает параметры подрезок левого и правого торца доски из глобальной структуры currBoard
Синтаксис code=GetBoardEnd(OrientW,OrientH,Angle,wcutL,wcutR,arrL,arrR)
Параметры
Параметр Описание
arrL Массив из 5 элементов для параметров подрезки левого торца (выходной)
arrR Массив из 5 элементов для параметров подрезки правого торца (выходной)

Выходные параметры:

Параметр Описание
OrientW Ориентация по ширине: -1 (по левому краю), 0 (по центру), 1 (по правому краю)
OrientH Ориентация по толщине: -1 (по низу), 0 (по центру), 1 (по верху)
Angle Угол поворота доски
wcutL Отпил в мм по длине доски слева
wcutR Отпил в мм по длине доски справа
arrL[1] Тип подрезки левого торца
arrL[2] 1-й параметр подрезки
arrL[3] 2-й параметр подрезки
arrL[4] 3-й параметр подрезки
arrL[5] Битовые маски подрезки левого торца
arrR[1] Тип подрезки правого торца
arrR[2] 1-й параметр подрезки
arrR[3] 2-й параметр подрезки
arrR[4] 3-й параметр подрезки
arrR[5] Битовые маски подрезки правого торца
Возвращаемое значение 15 — в случае успеха
0 — в случае ошибки

SetBoardEnd

SetBoardEnd — установить текущие параметры подрезки доски
Назначение Устанавливает текущие параметры подрезки доски в глобальную структуру currBoard
Синтаксис code=SetBoardEnd(OrientW,OrientH,Angle,wcutL,wcutR,arrL,arrR)
Параметры
Параметр Описание
OrientW Ориентация по ширине: -1 (по левому краю), 0 (по центру), 1 (по правому краю)
OrientH Ориентация по толщине: -1 (по низу), 0 (по центру), 1 (по верху)
Angle Угол поворота доски
wcutL Отпил в мм по длине доски слева
wcutR Отпил в мм по длине доски справа
arrL[1] Тип подрезки левого торца
arrL[2] 1-й параметр подрезки
arrL[3] 2-й параметр подрезки
arrL[4] 3-й параметр подрезки
arrL[5] Битовые маски подрезки левого торца
arrR[1] Тип подрезки правого торца
arrR[2] 1-й параметр подрезки
arrR[3] 2-й параметр подрезки
arrR[4] 3-й параметр подрезки
arrR[5] Битовые маски подрезки правого торца
Возвращаемое значение 15 — в случае успеха
0 — в случае ошибки
Примечание Значения типов подрезки и битовых масок см. в описании функции GetBoardEnd

GetBoardPMat

GetBoardPMat — возвращает номер текущего материала и параметры текущего материала
Назначение Возвращает ID текущего материала и заполняет переменные параметрами текущего сечения доски из глобальной структуры currBoard
Синтаксис idCut=GetBoardPMat(TypeShave,Width,Height,WorkWidth)
Параметры (выходные)
Параметр Описание
TypeShave Тип сечения: 0 (прямоугольная), 1 (фальцованная), 2 (шпунтованная), 3 (вагонка), 4 (блок-хаус)
Width Ширина доски
Height Толщина доски
WorkWidth Ширина полезной части доски (используется при покрытии)
Возвращаемое значение ID сечения доски или 0 в случае ошибки

GetBoardMatP

GetBoardMatP — возвращает ID материала, ближайшего к заданным параметрам
Назначение Находит ID сечения доски с параметрами, наиболее близкими к заданным, но не меньше заданных
Синтаксис idCut=GetBoardMatP(TypeShave,Width,Height)
Параметры
Параметр Описание
TypeShave Тип сечения: 0 (прямоугольная), 1 (фальцованная), 2 (шпунтованная), 3 (вагонка), 4 (блок-хаус)
Width Ширина доски
Height Толщина доски
Возвращаемое значение ID сечения доски или 0 — если не найдено или в случае ошибки

GetBoardName

GetBoardName — получить групповое имя досок по умолчанию
Назначение Получает групповое имя досок по умолчанию
Синтаксис GrpName=GetBoardName()
Параметры Нет
Возвращаемое значение Строка с групповым именем досок. Если строка пустая — групповое имя досок по умолчанию в текущем проекте не задано

SetBoardName

SetBoardName — установить групповое имя досок по умолчанию
Назначение Устанавливает групповое имя досок по умолчанию в текущий проект
Синтаксис code=SetBoardName(GrpName)
Параметры
Параметр Описание
GrpName Строка с групповым именем досок (может быть пустой строкой)
Возвращаемое значение Всегда возвращает 0

GetBoardCr

GetBoardCr — создать доску по трем точкам и параметрам из currBoard
Назначение Создает доску по трем точкам, используя параметры из глобальной структуры currBoard
Синтаксис hBrd=GetBoardCr(arr)
Параметры
Параметр Описание
arr[1] X координата начальной точки доски
arr[2] Y координата начальной точки доски
arr[3] Z координата начальной точки доски
arr[4] X координата конечной точки доски
arr[5] Y координата конечной точки доски
arr[6] Z координата конечной точки доски
arr[7] X координата точки, определяющей плоскость расположения доски
arr[8] Y координата точки, определяющей плоскость расположения доски
arr[9] Z координата точки, определяющей плоскость расположения доски
Возвращаемое значение Ссылка на pK3Obj созданной доски или nullptr, если доску создать не смогли

Типы подрезки торца доски

Значение Описание
0 Без подрезки
1 Скос (по Z): 1 — угол (от -80 до +80), 2 — высота (от 0 до Height)
2 Вырез по дуге: 1 — радиус
3 Просто вырез: 1 — глубина
4 Шип1 (прямой): 1 — глубина, 2 — ширина шипа, 3 — угол (от 0 до M_PI), 4 — зазор сверху, 5 — зазор снизу
5 Шип2 (трапеция): 1 — глубина, 2 — ширина основания шипа, 3 — ширина шипа, 4 — угол (от -M_PI/2 до M_PI/2), 5 — зазор сверху, 6 — зазор снизу
6 Врезка: 1 — глубина (по длине бревна), 2 — ширина (по ширине бревна), 3 — угол с торцем
7 Под бревно: 1 — глубина, 2 — радиус, 3 — поворот вокруг X
8 Шип: 1 — заглубление, 2 — высота шипа, 3 — зазор слева, 4 — зазор справа, 5 — зазор снизу, 6 — зазор сверху
9 Вертикальный скос с прямым пазом: 1 — угол (от -M_PI/2 до M_PI/2), 2 — ширина паза, 3 — глубина паза
10 Вертикальный двусторонний выпуклый скос: 1 — угол слева, 2 — угол справа, 3 — сдвиг от середины бревна
11 Фаска: 1 — срез по Y, 2 — длина среза по X
12 Двойная дуга: 1 — радиус выреза слева, 2 — радиус выреза справа
13 Скругление: 1 — радиус скругления слева, 2 — радиус скругления справа
14 Трапеция (для замка): 1 — глубина выреза, 2 — ширина основания выреза, 3 — ширина выреза (на глубине)
15 Подрезка произвольной плоскостью: 1 — расстояние от вершины до плоскости, 2 — поворот нормали вокруг X, 3 — поворот нормали вокруг Z
16 Вертикальный двусторонний впуклый скос: 1 — угол слева, 2 — угол справа, 3 — сдвиг от середины бревна
17 Двойной скос (по Z): 1 — угол снизу, 2 — угол сверху, 3 — высота скоса снизу, 4 — высота скоса сверху
18 Стык Гербера (ГОСТ) — без параметров, расчет от ширины габарита
19 Стык Гербера1: 1 — длина стыка, 2 — глубина стыка
20 Стык Гербера2: 1 — длина стыка, 2 — глубина стыка, 3 — высота остатка, 4 — длина выемки
21 Стык Гербера3: 1 — длина стыка, 2 — глубина стыка, 3 — высота остатка, 4 — длина выемки
22 Ступеньки с дугой выпуклой: 0 — радиус, 1,2 — параметры внешней ступеньки, 3,4 — параметры внутренней ступеньки
23 Ступеньки с дугой впуклой: 0 — радиус, 1,2 — параметры внешней ступеньки, 3,4 — параметры внутренней ступеньки
24 Шип прямоугольный: 1 — заглубление, 2 — высота шипа, 3 — размер шипа (ширина), 4 — размер шипа (высота), 5 — скругление
25 Сокращенный ласточкин хвост: 0 — высота до хвоста, 1 — радиус скругления, 2 — угол сужения, 3 — толщина хвоста, 4 — угол фрезы, 5 — угол фаски

Битовые маски

Маска Значение Описание
DOM_ST_UP 0x00000001 Режется верхняя половина бревна
DOM_ST_OTKOS 0x00000002 У торца есть лыска под наличник
DOM_ST_RIGTH 0x00000004 Правая подрезка
DOM_ADD_SLOPEN 0x00000008 Только для подрезки стены скатами — выпуск задан по нормали
DOM_ADD_SLOPEV 0x00000010 Только для подрезки стены скатами — выпуск задан по вертикали
DOM_ST_ROTATE 0x00000020 Подрезка в другой плоскости (Гербер при делении досок)
DOM_LEP_FIXANG 0x00000040 Подрезка с фиксацией угла (у скоса при заполнении не пересчитывается угол)
DOM_SL_LIMITGAB 0x00000080 Только для подрезки стены скатами — с ограничением длины по нижней точке
DOM_SL_GORCUT 0x00000100 Только для подрезки стены скатами — горизонтальная подрезка
DOM_LEP_BTL 0x10000000 Подрезка образмеривается по принципу BTL
DOM_LEP_BODY 0x20000000 Подрезка образмеривается по принципу BODY

Функции работы с проёмами

GetWndPar

GetWndPar — получить параметры проёма
Синтаксис code=GetWndPar(hWnd,arr)
Параметры
Параметр Описание
hWnd Адрес объекта (pK3Obj)
arr Массив из 7 элементов (выходные параметры)

Выходные параметры:

Индекс Описание
arr[1] Тип проёма: 0 (дверь), 1 (окно), 2 (проём), 3 (ниша)
arr[2] Форма проёма
arr[3] Ширина проёма
arr[4] Высота проёма (мм)
arr[5] Высота 1-го дополнительного параметра формы (мм)
arr[6] Высота 2-го дополнительного параметра формы (мм)
arr[7] Толщина стены
Возвращаемое значение Уникальный номер проёма или -1 в случае ошибки

GetWndName

GetWndName — дай имя проёма
Синтаксис WndName=GetWndName(hWnd)
Параметры
Параметр Описание
hWnd Ссылка на pK3Obj проёма
Возвращаемое значение Имя проёма (строка)

GetWndVPar

GetWndVPar — параметры подрезки на вертикальном торце
Синтаксис GetWndVPar(hWnd,arr)
Параметры
Параметр Описание
hWnd Ссылка на pK3Obj проёма
arr Массив из 8 элементов (выходные параметры)

Выходные параметры:

Индекс Описание
arr[1] Тип подрезки прямого конца бревна
arr[2] Битовые маски подрезки прямого конца бревна
arr[3] 1-й параметр подрезки
arr[4] 2-й параметр подрезки
arr[5] 3-й параметр подрезки
arr[6] 4-й параметр подрезки
arr[7] 5-й параметр подрезки
arr[8] 6-й параметр подрезки

GetWndAPar

GetWndAPar — параметры подрезки на скошенном торце
Синтаксис GetWndAPar(hWnd,arr)
Параметры
Параметр Описание
hWnd Адрес объекта (hobj)
arr Массив из 8 элементов (выходные параметры)

Выходные параметры:

Индекс Описание
arr[1] Тип подрезки скошенного конца бревна
arr[2] Битовые маски подрезки скошенного конца бревна
arr[3] 1-й параметр подрезки
arr[4] 2-й параметр подрезки
arr[5] 3-й параметр подрезки
arr[6] 4-й параметр подрезки
arr[7] 5-й параметр подрезки
arr[8] 6-й параметр подрезки
Примечание Типы подрезки и битовые маски см. в описании функции GetWndVPar

GetWndMatr

GetWndMatr — дай матрицу проёма
Синтаксис code=GetWndMatr(hWnd,matr)
Параметры
Параметр Описание
hWnd Адрес объекта (hobj)
matr Матрица (массив из 16 элементов) — выходной параметр
Возвращаемое значение 16 — в случае успеха

GetWndObj

GetWndObj — дай указатель на проём
Синтаксис hWnd=GetWndObj()
Параметры Нет
Возвращаемое значение Указатель на глобальный pK3Obj current_window или nullptr

GetWndPoint

GetWndPoint — по параметрам проёма заполнить массив точек
Синтаксис num=GetWndPoint(params,points)
Параметры
Параметр Описание
params[1] Не используется
params[2] Форма проёма
params[3] Ширина (d)
params[4] Высота (h)
params[5] Дополнительный параметр 1 (param1)
params[6] Дополнительный параметр 2 (param2)
params[7] Не используется
points Массив из 24 элементов (8 точек × 3 координаты) — выходной параметр

Выходные параметры:

Индекс Описание
points[1..3] X, Y, Z координаты 1-й точки
points[4..6] X, Y, Z координаты 2-й точки
points[7..9] X, Y, Z координаты 3-й точки
points[10..12] X, Y, Z координаты 4-й точки
points[13..15] X, Y, Z координаты 5-й точки
points[16..18] X, Y, Z координаты 6-й точки
points[19..21] X, Y, Z координаты 7-й точки
points[22..24] X, Y, Z координаты 8-й точки
Возвращаемое значение Количество точек (зависит от формы проёма)

GetWndById

GetWndById — найти указатель на проём по id
Синтаксис hWnd=GetWndById(idWnd)
Параметры
Параметр Описание
idWnd Уникальный номер проёма
Возвращаемое значение Указатель на pK3Obj или 0 в случае ошибки

TransPoint

TransPoint — умножить точку на матрицу
Синтаксис TransPoint(point,matr)
Параметры
Параметр Описание
point Точка (массив из 3 элементов) — входной и выходной параметр
matr Матрица (массив из 16 элементов)

Формы проёма (DOM_WND_FORM)

Значение Описание
0 Прямоугольник
1 Шестиугольник: Param1 — срез по оси X, Param2 — срез по оси Y
2 Арка: радиус скругления — в полширины
3 Скошенный прямоугольник: Param1 — левая высота
4 Пятиугольник: Param1 — меньшая высота
5 Трапеция: Param1 — верхнее основание трапеции
6 Треугольник (прямой угол — левый нижний)
7 Треугольник (прямой угол — правый нижний)
8 Треугольник (прямой угол — левый верхний)
9 Треугольник (прямой угол — правый верхний)
10 Восьмиугольник: Param1 — срез по оси X, Param2 — срез по оси Y
11 Прямоугольник с фаской слева сверху: Param1 — срез по оси X, Param2 — срез по оси Y
12 Прямоугольник с фаской справа сверху: Param1 — срез по оси X, Param2 — срез по оси Y
13 Круглый: радиус — половина высоты
14 Арка с радиусом: Param1 — высота дуги
15 Прямоугольник со скругленными верхними углами: Param1 — радиус скругления
16 Вертикальная трапеция вправо: Param1 — угол снизу, Param2 — угол сверху
17 Вертикальная трапеция влево: Param1 — угол снизу, Param2 — угол сверху
18 Г-образная правая: Param1 — ширина окна, Param2 — высота окна
19 Г-образная левая: Param1 — ширина окна, Param2 — высота окна
20 Скругленная ниша

Функции работы со стенами, балками и проектом

GetWall

GetWall — дай указатель на стену по имени
Синтаксис hWall=GetWall(Name)
Параметры
Параметр Описание
Name Имя стены (строка)
Возвращаемое значение Ссылка на pK3Obj стены

GetBeam

GetBeam — дай указатель на балку по номеру
Синтаксис hBeam=GetBeam(num)
Параметры
Параметр Описание
num Номер балки (целое число)
Возвращаемое значение Ссылка на pK3Obj балки

HRow

HRow — возвращает верхнюю точку ряда в мм по номеру ряда (для текущего материала)
Синтаксис h=HRow(num)
Параметры
Параметр Описание
num Номер ряда (целое число)
Возвращаемое значение Верхняя точка ряда (мм)

HBeam

HBeam — возвращает верхнюю точку балки
Синтаксис h=HBeam(num)
Параметры
Параметр Описание
num Номер балки (целое число)
Возвращаемое значение Верхняя точка балки (мм)

HWall

HWall — возвращает верхнюю точку стены
Синтаксис h=HWall(Name)
Параметры
Параметр Описание
Name Имя стены (строка)
Возвращаемое значение Верхняя точка стены

GetPrjPath

GetPrjPath — возвращает путь до папки проекта
Синтаксис PrjPath=GetPrjPath()
Параметры Нет
Возвращаемое значение Путь до папки проекта (строка). Если проект не открыт — возвращает пустую строку

GetPrjUnit

GetPrjUnit — возвращает единицы измерения проекта
Синтаксис UnitType=GetPrjUnit()
Параметры Нет
Возвращаемое значение
Значение Описание
0 (DOM_MM) Миллиметры
1 (DOM_INCH) Дюймы