RU
EN

GBX reference for Woodman Docker

GBX Reference: Parameters, Interface, and Functions

Этот раздел собран как рабочая шпаргалка по файлу генератора GBX: как описывать первую строку //params:, какие элементы интерфейса доступны, какие переменные подготавливает докер и какие функции можно использовать для создания объектов CorelDRAW.

Table of Contents

Формат первой строки

должно начинаться с "//params: " пробел в конце обязательно

далее через запятую описываем поля по шаблону

имя поля только латиницей т.к. это будет переменной для вставки в код

имя поля = значение по умолчанию.

//params: [имя_поля]=[значение_по_умолчанию], ...

📝 Main Value Types and Their Purpose

  • true или false — формируют чекбокс (переключатель включено/выключено).
  • : Значения, разделённые двоеточием : — формируют группу radiobutton (переключателей с выбором одного варианта).
  • text — задаёт простой текстовый заголовок.
  • block — обозначает начало раздела интерфейса.
  • принудительно показать блок можно через параметр showblock#id_check

конец блока endblock;

  • list — создаёт выпадающий список. Имена и значения полей описываются ниже с помощью строки
//list:имя_списка имя_поля=значение, имя_поля=значение, имя_поля=значение

текстовые подписи для элементов прописываются по аналогии в //lang:

пример material=list|show##g/cm3

//list:material g375=11.55, g500=12.7, g585=13.6
//lang: material_g375=Золото 375 проба (9К)
//lang: material_g500=Золото 500 проба (12К)
//lang: material_g585=Золото 585-200 проба (14К)
  • btn — создаёт кнопку, код которой должен лежать в одноименной папке скрипта с именем параметра

пример my_btn=btn для файла myscript.js должен находиться в js/myscript/my_btn.js

для маленького кода код кнопки можно вставить в основной скрипт.

проверка нажатия через условие if (btn=='my_btn')

//params: knopka1=btn, knopla_sdelaj_ohuenno=btn,sklejka=btn|wide, hideall;

if (btn=="sklejka"){ //это код для иммитации кнопки "собрать"
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/** КРАЙНЕ НЕ РЕКОМЕНДУЮ СБОРКУ ДЕЛАТЬ ТАКИМ СПОСБОМ. используйте стандартные кнопки. **/
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
sstop=true; // останавливаем цикл чтобы он не обрабатывал каждый объект а сделал только один раз.
ch_kbx_compens.checked = false; // отключить создание компенсации.
glue_kbx(); // собственно и запускаем функцию сборки
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
}else if(btn=="knopka1"){
// тут код внутри скобок
}else if(btn=="knopla_sdelaj_ohuenno"){
// тут код внутри скобок
}else{
// тут весь остальной код внутри скобок
}

Так же можно задать значение текстового поля через val_имя_поля.

Пример. для поля paz_gap=6 можно поменять значение на 4 через val_paz_gap=4.

  • range — создаёт кнопки вниз - вверх и между ними текстовое поле со значением.

параметры задаются в формате |min#4:

  • min — стартовое (минимальное значение)
  • max — предельное значение
  • step — шаг увеличения кнопками
  • def — значение по умолчанию (при первом запуске)
dot_size=range|min#1|max#10|def#4|step#2,
  • folder — создаёт текстовое поле и кнопку для выбора папки

dxf_folder=folder

  • file — создаёт текстовое поле и кнопку для выбора файла

параметр filter задаёт фильтрацию файлов по типу

dxf_file=file|filter#*.dxf#*.cdr

⚙️ Special Symbols and Actions

Вертикальная черта | разделяет альтернативные действия или состояния параметра.

Специальные действия, которые могут идти через |:

  • check — добавляет чекбокс активности поля. проверка if (!!foo_name) активен или не равен 0 или !foo_name - неактивен или равен 0.

если нужно строго проверить чекбокс, то к имени поля добавлям "ch_gbx_" - ch_gbx_<имя_поля>.

  • пример if(!ch_gbx_size) — проверка на то что галочка не установлена
  • glue — склейка текущего элемента в одну строку с предыдущим.
  • br — только для списка вариантов: каждая радиокнопка со своей строки, подпись поля отдельной строкой сверху, весь блок прижат вправо. Подпись варианта при этом идёт перед самой кнопкой, поэтому кнопки встают ровным столбиком по правому краю. Без модификатора весь список идёт одной строкой. Ставится в конце значения: fill_mode=hex:random:max|br.
  • active — активация связанных элементов или параметров по их ID.
  • deactive — деактивация связанных элементов или параметров по их ID.
  • even — проверка значения на чётность.
  • odd — проверка значения на нечётность.
  • mm — отменяет проверку чётности, если установлен чекбокс mm.
  • un — очень узкая
  • narrow — задаёт узкий стиль кнопке
  • wide — задаёт широкий стиль полю ввода
  • uwide — очень широкая (65%)
  • wide10 — ширина 10%
  • wide25 — ширина 25%
  • wide50 — ширина 50%
  • wide75 — ширина 75%
  • wide90 — ширина 90%
  • mid — средняя ширина (25%)
  • free — свободная ширина.
  • center — выравнивание по центру
  • left — выравнивание по левому краю
  • bold — жирное начертание текста
  • italic — курсивное начертание текста
  • notitle — убирает заголовок у элемента
  • read — делает поле ввода только для чтения
  • show — действие для списка - показывает значение в специальном поле.

формат |show#prefix#postfix |show## |show##postfix |show#prefix#

  • save — действие для списка в который пользователь может добавить свое поле
  • showblock — скрывает или показывает блок чтобы видеть, что внутри параметр установлен и влияет на создание.

📌 Other Features

  • Parameters могут быть пустыми — служат для визуального или логического разделения.

Специальные параметры:

  • br — разрыв строки (перенос).
  • hr — горизонтальная линия.
  • endblock (необязательно) — закрывает раздел. Раздел также закрывается началом следующего блока или в конце строки.
  • hidethhi — для скрытия полей толщина и высота
  • hideshippaz — для скрытия кнопок с цветом шипов/пазов
  • hidebtns — для скрытия нижних кнопок "создать" и "склеить"
  • hidetools — для скрытия нижних инструментов перегородки, шипы и гибкий рез
  • hideall — для скрытия всех этих блоков
  • addbtns=btn1|btn2 — Можно добавить кнопки из интерфейса. Пример: addbtns=btn_cmnborder|btn_monoline_font
*** служебные параметры
  • maxLimit=X — Задаёт лимит на предупреждении о выборе большого числа объектов. По умолчанию значение 5. maxLimit=666
  • noduplicateS — параметр который не создает копию объекта S = s.Duplicate() а использует оригинальный объект
  • noMove — предотвращает перемещение исходного объекта вверх
  • noOS — убирает перебор объектов. все переменные объекта не доступны. Доступны:

HI, TH, join, copy, last, color_paz, color_ship, color_vstr, color_grav, color_3mm, color_cut, OScnt

  • delLast — исключает объект sLast из перебора
  • delFirst — исключает объект sFirst из перебора

ID параметров используются для связи и взаимного включения/выключения через active и deactive.

пример (все должно быть в 1 строку)

//params: name=korobka, mm=false|glue, paz_wi=7|odd|mm, paz_le=5|odd|mm, paz_hi=5|odd|mm, paz_gap=6, close_dno=open:dno:side, close_side=open|active#make_shoes_cover:close|deactive#make_shoes_cover:vstr|deactive#make_shoes_cover, cover_box=false|deactive#make_shoes_bot_holes#make_shoes_cover, slide_box=false|deactive#make_shoes_bot_holes#make_shoes_cover, round_corners=true, circle_vstr=false,covertext=block, make_shoes_cover=false|active#cover_gap#cover_height#make_shoes_holes|deactive#cover_box#slide_box, cover_gap=1, cover_height=15, endblock,text_shoe_holes=text, make_shoes_holes=true, make_shoes_bot_holes=true|glue, make_shoe_holes_four=false;

Parameters и правила:

самая первая строчка, обязательно начало с "//params: ":

  • name=korobka — имя модели
  • mm=false|glue — чекбокс mm, действие glue (склейка с предыдущим)
  • paz_wi=7|odd|mm — числовое значение, проверка на нечетность, mm отменяет проверку
  • paz_le=5|odd|mm — длина паза, с теми же проверками
  • paz_hi=5|odd|mm — высота паза, с теми же проверками
  • paz_gap=6 — числовое значение, шаг между пазами
  • close_dno=open:dno:side — radiobutton с тремя вариантами

close_side=open|active#make_shoes_cover:close|deactive#make_shoes_cover:vstr|deactive#make_shoes_cover — radiobutton с активацией/деактивацией элементов

  • cover_box=false|deactive#make_shoes_bot_holes#make_shoes_cover — чекбокс с деактивацией связанных элементов
  • slide_box=false|deactive#make_shoes_bot_holes#make_shoes_cover — чекбокс с деактивацией связанных элементов
  • round_corners=true — чекбокс
  • circle_vstr=false — чекбокс
  • covertext=block — начало раздела интерфейса

make_shoes_cover=false|active#cover_gap#cover_height#make_shoes_holes|deactive#cover_box#slide_box — чекбокс с активацией/деактивацией связанных элементов

  • cover_gap=1 — числовое значение
  • cover_height=15 — числовое значение
  • endblock — закрытие раздела
  • text_shoe_holes=text — текстовый заголовок
  • make_shoes_holes=true — чекбокс
  • make_shoes_bot_holes=true|glue — чекбокс с действием glue
  • make_shoe_holes_four=false — чекбокс

Так же можно добавить свои подписи на русском и других языках.

//lang:  — строка для добавления локализованных подписей и описаний если их не существует в языковом пакете самого докера
  • должна начинаться с "//lang: " с пробелом в конце
  • далее идёт имя_переменной, опционально через | указывается язык (например, en, ru)
  • после знака = краткий текс и (подпись), через | можно добавить подробное описание

Цифровые значения

Shift = 1, Ctrl = 2, Alt = 4;
  • если язык ru, его можно не указывать (по умолчанию русский)
  • подробное описание не обязательно, можно указать только краткий текст

Examples

//lang: title1=Настройка пазов|Тут можно настроить пазы по количеству.
//lang: title2=Вводятся только нечетные значения|Нечетные значения потому что так получается красивая симметрия.
//lang: round_corners=Скругление углов|Скругление углов коробки
//lang: round_corners|en=Round corners

Для кнопок создать и собрать можно добавить свои действия на функциональные кнопки Ctrl+Alt+Shift+...

Учтите, что кнопка собрать сначала выполняет основную сборку шип/пазов, а затем выполняет функциональные кнопки.

для скрипта myscript.js файлы должны находиться в js/myscript/

для кнопки Создать make.js

для кнопки Собрать glue.js

этот скрипт выполняется для каждого выбранного объекта.

Если вам не нужно выполнять много раз в конце кода последней строчкой пишем

        break;

Описывать в начале файла так же как язык.

    //lang: — строка для добавления функциональных кнопок
  • должна начинаться с "//lang: " с пробелом в конце
  • далее идёт номер кнопки и опционально через | указывается язык (например, en, es)

Цифровые значения кнопок Shift = 1, Ctrl = 2, Alt = 4;

Все комбинации это просто сумма цифровых значений

Examples

            //lang: 5=Собрать со сдвигом|Собрать коробку со сдвигом элементов вправо
            //lang: 5|en=Make with shift|Make with shift elements to the right

5 - это сумма 4+1 те. кнопки Shift и Alt

Справочник по конструктору SHAPE и функциям

пример:

var rect = rectangle(50,50,200,100,5);

создаст прямоугольник левый нижний угол координата 50,50 шириной 200 и высотой 100мм

🧱 Primitives (более подробное описание в самом низу)

  • line(...)
  • Creates a line or curve. Поддерживает массивы и Bezier-сегменты.
  • rectangle(x, y, w, h[, r1[, r2, r3, r4]])
  • Creates a rectangle по левому нижнему углу и ширине и высоте. Радиусы углов опциональны.
  • rectangleXY(x1, y1, x2, y2 [, r1[, r2, r3, r4]])
  • Creates a rectangle по левому нижнему углу и правому верхнему. Радиусы углов опциональны.
  • circle(x, y, r[, r2])
  • Creates a circle or ellipse.
  • poly([x1,y1, x2,y2, ...])
  • Creates a polygon from an array of points.
  • text(X, Y, text, size, font, params)
  • Создаёт и размещает текстовую надпись в документе.
shipy(shape, side, ...) или shipy(x1, y1, x2, y2, ...)
  • Создаёт пользовательскую кривую на стороне shape или по координатам.

Поддерживает инверсию сторон с префиксом "-".

  • line_teeth(x1, y1, x2, y2, nums, th, direction, shift)
  • Создает прямоугольные шипы вдоль линии. Шипы имеют небольшое сужение для лучшей посадки.
  • line_slots(x1, y1, x2, y2, nums, th, direction, shift)
  • Создает прямоугольные пазы для сопряжения с шипами. Каждый паз создается как отдельный прямоугольный объект.
  • perf(obj, dash, gap)
  • Создаёт перфорацию
  • function makeGlueFlap(points, height, slopeAngle, join)
  • Создаёт вдоль линии клапан для склепки Point - массив из 2х точек [x1,y1, x2,y2].
  • pointOnCircle(cx, cy, r, angleDegrees, r2)
  • Возвращает координаты точки на окружности под углом angleDegrees. Если задан r2, то возвращает координаты двух точек.

📦 Predefined Variables

Перед созданием объекта SHAPE, автоматически подготавливаются переменные для упрощённой работы:

!регистр переменных очень важен!

  • s — Исходный объект (кореловский). (s маленькое)
  • S — Копия исходного объекта (карабокса). Для него применимы все методы (функции) описанные ниже
  • W — Ширина объекта (s.SizeWidth).
  • H — Высота объекта (s.SizeHeight).
  • A — Площадь текущего объекта.
  • allA — Площадь всех объекта.
  • LE — Длина всех кривых текущего объекта.
  • allLE — Длина всех кривых всех объектов.
  • L — Левая координата (s.LeftX).
  • R — Правая координата (s.RightX).
  • T — Верхняя координата (s.Topy).
  • B — Нижняя координата (s.Bottomy).
  • HI — Значение из поля ввода высота коробки
  • TH — Значение из поля ввода толщина
  • X — Центр X: либо CenterX
  • Y — Центр Y: либо CenterY
  • join — Строка "join", используется как флаг режима.
  • copy — Строка "copy", используется как флаг режима.
  • last — Строка "last", заменяет последнюю использованную координату.
  • color_paz — Цвет для пазов.
  • color_ship — Цвет для шипов.
  • color_vstr — Цвет для встречных пазов.
  • color_grav — Цвет для гравировки.
  • color_3mm — Цвет для 3мм.
  • color_cut — Цвет для реза.
  • rnd_num — Случайный номер для идентификации объектов
  • sNum — Номер объекта если случайный номер был присвоен объекту. genNum(s.name)
  • addShape — Признак добавления объекта s в выделение. Если false, то объект s не добавляется в выделение.
  • lastnum — Признак последнего использованного номера. Можно использовать для идентификации объектов в цикле.
  • toDel — Флаг чекбокса удалять исходный объект или нет.
  • compensation — Размер компенсации или ноль если чекбокс не стоит.
  • sfirst и slast — флаги проверка первый это объект или последний.
  • sindex — порядковый номер текущего объекта в OS.Shapes()
  • sstop — флаг для прерывания обхода всех объектов.
  • OScnt — общее количество объектов в OS.Shapes()
  • delMe — если эту переменную присвоить объекту, то при сборке он удалится. S.name(delMe);
  • sLast — Последний объект в выборке (параметр delLast удалит его из перебора)
  • sFirst — Первый объект в выборке (параметр delFirst удалит его из перебора)

для того чтобы выполнить только 1 раз для любого количества выбранных объектов есть 2 способа

  • 1) в конце кода добавить sstop = true; тогда код выполнится только с первым объектом и завершится.
  • 2) использовать проверку if (slast) тогда код выполнится только с последним объектом.

getShape

🔧 Конструктор SHAPE(corelShape, type)

Оборачивает объект CorelDRAW (Shape) в удобный интерфейс для манипуляций.

📏 Geometry and Positioning

  • W(val) — Ширина. Получить или установить ширину.
  • H(val) — Высота. Получить или установить высоту.
  • L(val) — Левая граница (LeftX).
  • R(val) — Правая граница (RightX).
  • T(val) — Верхняя координата (TopY).
  • B(val) — Нижняя координата (BottomY).
  • X(val) — Центр по оси X. Учитывает флажок ch_sett_center.
  • Y(val) — Центр по оси Y. Учитывает флажок ch_sett_center.
  • setCenter — Задать центр вращения

🎨 Color and Fill

  • setColor([R,G,B]) — Устанавливает цвет обводки в RGB.
  • setColor([C,M,Y,K]) — Устанавливает цвет обводки в CMYK.
  • setFill([R,G,B]) — Устанавливает цвет заливки в RGB.
  • setFill([C,M,Y,K]) — Устанавливает цвет заливки в CMYK.
  • если передать false — то уберется абрис или заливка.
  • copyFill — Копирует заливку объекта
  • copyOutline — Копирует абрис объекта
  • copyColor — Копирует и заливку и абрис.
  • setFont(font, size) — Задать шрифт и/или размер если это Текст.

✂️ Shape Operations

  • name(val) — Получает или устанавливает имя объекта.
  • cut(shape) — Обрезает текущую форму по другой (shape).
  • weld(shape) — Объединяет текущую форму с другой (shape).
  • join(shape, reduce, dist) — Объединяет и соединяет кривые. сокращать и дистанция поиска соединения
  • intersect(shape) — Создаёт пересечение между двух объектов.
  • del() — Удаляет текущую форму.
  • copy(x, y) — Копирует объект и смещает на (x, y).
  • copyTo(x, y) — Копирует объект и переносит его центр в (x, y).
  • move(x, y) — Перемещает объект на (x, y).
  • moveTo(x, y) — Перемещает центр объекта в точку (x, y).
  • resize(w, h, aspect) — Изменяет размер формы, добавляя к текущим размерам.
  • setSize(w, h, aspect) — Устанавливает точный размер формы, с учётом пропорций.
  • repeat(dx, dy, hCnt, vCnt) — Строит массив из объектов.
  • findbyName(name, OS, ingroup, strong) — Ищет объект по имени. Возвращает первую найденную форму или false, если объект не найден.

если strong = false ищет не строгое совпадение имени

  • removeHoles() — Удаляет все отверстия в объекте.
  • breakNodes(nodes, split2) — Разрывает указанные узлы (массив номеров узлов)

если split2=true то разваливает деталь и возвращает массив об\ектов (кусков)

  • add(sr) — Добавляет объект в выделение (если sr) либо в любой другой ShapeRange. krug.add(sr);
  • range.getShape(i) — если range коллекция - взять i-тый объект.
  • createRange() — Создавать коллекцию var range = createRange();

🔄 Transformations

  • flipX(x, mode) — Отражение по оси X. mode: "copy", "join", undefined.
  • flipY(y, mode) — Отражение по оси Y. mode: "copy", "join", undefined.
  • flip([x1,y1,x2,y2], mode) — Отражение относительно произвольной линии.
  • rotate(angle, centerX, centerY) — Поворот на угол вокруг точки.
  • angle() — Получает текущий угол.
  • angle(val) — Устанавливает абсолютный угол.
  • resize(W, H, aspect) — Увеличивает размер на W и H. При aspect=true сохраняет пропорции.
  • setSize(W, H, aspect) — Устанавливает абсолютные размеры. Если aspect=true и один из параметров 0, сохраняет пропорции.
  • scale(k) — Масштабирует форму пропорционально по обоим осям.
  • fitScale(W, H) — Масштабирует форму пропорционально так, чтобы она вписалась в прямоугольник W×H.
* Все методы трансформации можно применять как к конкретному объекту, так и к последнему.

📌 Global Functions

  • lastColor(arr) — Установить цвет обводки.
  • lastFill(arr) — Установить цвет заливки.
  • lastflipX(x, mode) — Отразить объект по вертикальной оси X с координатой x (если не задана — по центру объекта).

Режимы:

  • undefined — изменить текущий объект;
  • "copy" — вернуть отражённую копию;
  • "join" — объединить с отражённой копией.
  • lastflipY(y, mode) — Отразить объект по горизонтальной оси Y с координатой y (если не задана — по центру объекта).

Режимы аналогичны flipX.

  • lastflip([x1,y1,x2,y2], mode) — Отразить объект относительно произвольной линии, заданной двумя точками.

Режимы те же: изменить текущий, вернуть копию или объединить с копией.

  • lastjoin(obj) — Объединить с другим объектом.
  • lastrotate(angle[, cx, cy]) — Повернуть на угол (в градусах) относительно точки (cx, cy).
  • Если точки не заданы — вокруг центра объекта.
  • lastgetAngle() — Получить текущий угол поворота объекта.
  • lastsetAngle(val) — Установить абсолютный угол поворота объекта (в градусах).
  • FillXY(X, Y) — Создаёт объект используя интерактивную заливку.
  • del() — Удалить объект.
  • contur(shape, gap, dir) — Создаёт внутренний (dir=0 или "in") или внешний (dir=1 или другое) контур объекта.
  • raspred(shape, line, gap, mode, even)
  • Распределяет объекты вдоль линии.

mode: "qty" — по количеству, "dist" — по расстоянию, "qty_by_gap" — количество по шагу.

even — равномерное распределение (по умолчанию true).

  • genNum(txt) — Извлекает номер из имени объекта (например: rect_123 → 123).
do_flex( OS, opts, mode)	- создаёт гибкий рез из объекта. Задавать можно только нужные параметры. Остальные подтянутся из интерфейса.

OS = ActiveShapeRange // активный диапазон выбора объектов или объект

var opts = {
// --- базовые параметры ---
shft: 2, 		                         // нажатые клавиши-модификаторы
thickness: 3,                            // толщина линии/реза (по умолчанию из интерфейса val_gbx_th)
height: 50,                              // высота реза/перемычки (по умолчанию val_gbx_hi)
gap: 30,                                 // зазор между элементами (10 * thickness)
deleteSource: false,                     // удалить исходный объект после операции (true/false)
step: 3,                                 // интервал реза (по умолчанию val_kbx_flex_step)
qty: 5,                                  // количество перемычек (по умолчанию val_kbx_flex_qty)
perSize: 2,                              // размер перемычки (по умолчанию val_kbx_flex_per_size)
makeContour: false,                      // создавать контур в полтолщины (true/false)
makeSlots: false,                         // добавлять шипы (true/false)
pazQty: 5,                               // количество шипов (по умолчанию val_flex_sh_qty)

mmMode: false // режим мм вместо количества шипов (true/false)

};
mode = "flex";  		// "startpoint", "restore", "perimetr", "flex"

Пример: do_flex(s); //создать гибкий рез из объекта s по параметрам гибкого реза в докере.

  • calcAngleJoint(t1, t2, origangle, mode)
// Расчет соединения деталей под углом
// t1 - толщина шипа (вставляемой детали)
// t2 - толщина детали куда вставляется
// angle - угол наклона (90° = вертикально, 0° = горизонтально)
// mode - режим расчета (0 - close, 1 - open, 2 - full)

Результат (возвращаемый объект)

Функция возвращает объект с основными параметрами соединения:

  • tennon — длина шипа (рассчитанная длина выступающей части).
  • slot — ширина паза (рассчитанная ширина отверстия для шипа).
  • cut1 — дополнительная длина/глубина с одной стороны соединения (зависит от режима и угла).
  • cut2 — дополнительная длина/глубина с другой стороны соединения.
  • add1 — вспомогательный параметр: tennon - cut1.
  • add2 — вспомогательный параметр: slot - cut2.
  • debug — объект с отладочной информацией (промежуточные значения для проверки формул).
var result = calcAngleJoint(10, 12, 90, 0);
// Результат:
{
tennon: 10,
slot: 12,
cut1: 0,
cut2: 0,
add1: 10,
add2: 12,
debug: {...}
}

📝 Note

  • Если метод вызывается без аргумента, он возвращает значение.
  • Если метод вызывается с аргументом, он устанавливает новое значение.
  • Если объект не указан, используется последний (lastObject).

Подробное описание функций создания примитивов (объектов в кореле)

🧱 Primitives

line(...)

  • Creates a line or curve. Поддерживает массивы и Bezier-сегменты.

Examples

просто 4 координаты для единичного отрезка.

  • line(x1, y1, x2, y2)

Первая линия массив из 4х элементов. далее один массив с вложенным массивом кажой последующей точки.

  • line([x1, y1, x2, y2][[addx1,addy1],[addx2,addy2],...])

Функция: line(a, b, c, d, e, f, g, h)

Purpose:

Создаёт отрезок или кривую линии с возможностью добавления дополнительных сегментов.

Может использоваться для построения как простой прямой, так и сложной кривой с несколькими сегментами.

Call Formats

Функция поддерживает несколько форматов вызова с разным количеством и типом аргументов:

  • 1. line([x1, y1, x2, y2])
  • создаёт прямую от (x1, y1) до (x2, y2).
  • 2. line([x1, y1, x2, y2, cx1, cy1, cx2, cy2])
  • создаёт кривую Безье от (x1, y1) до (x2, y2) с управляющими точками (cx1, cy1) и (cx2, cy2).
  • 3. line([[x1, y1, x2, y2], [[x3, y3], [x4, y4, R], [cx1, cy1, cx2, cy2, x5, y5]]])
  • создаёт базовую линию, к которой добавляются дополнительные сегменты (прямые, дуги или кривые).

Parameters

  • a–h (Number | Array) — координаты начальных и конечных точек, управляющих точек, или массивы координат.

Варианты аргументов

  • 1. Если передан один аргумент и это массив из 4-х или 8-ми элементов — он используется как startLine.
  • 2. Если передано два массива:
  • первый — startLine (4 или 8 координат),
  • второй — addLines, массив сегментов, где каждый сегмент:
  • [x, y] — прямая линия до точки (x, y),
  • [x, y, R] — прямая линия с фаской (fillet) радиуса R в точке,
  • [cx1, cy1, cx2, cy2, x, y] — кривая Безье,
  • [cx1, cy1, cx2, cy2, x, y, R] — кривая с фаской в конце.
  • 3. Если передано 4 отдельных числа (x1, y1, x2, y2) — используется как простая прямая линия.
  • 4. Если передано 8 отдельных чисел — создаётся кривая.

Features

  • Дополнительные сегменты добавляются к последнему пути (SubPath) основной линии.
  • Если сегмент содержит параметр R, применяется фаска (Fillet) к предыдущей вершине.
  • Return Value — объект Shape, обёрнутый с помощью createShape.

Usage Example

// Простая линия
line(10, 10, 100, 10);

// Кривая с управляющими точками
line(10, 10, 100, 100, 30, 30, 70, 70);

// С дополнительными сегментами
line([10, 10, 100, 10], [

[150, 20], // Прямая

[200, 40, 5], // Прямая с фаской 5

[250, 60, 270, 70, 300, 90], // Кривая

[350, 100, 370, 110, 400, 130, 4] // Кривая с фаской 4

]);

rectangle(x, y, w, h[, r1[, r2, r3, r4]])

  • Creates a rectangle. Радиусы углов опциональны.

Функция: rectangle(x1, y1, wi, hi, r1, r2, r3, r4)

Purpose:

Creates a rectangle с возможностью задания радиусов скругления углов.

Parameters

  • x1 (Number) — координата X левого угла прямоугольника.
  • y1 (Number) — координата Y нижнего угла прямоугольника.
  • wi (Number) — ширина прямоугольника.
  • hi (Number) — высота прямоугольника.
  • r1 (Number, необязательный) — радиус скругления всех углов, если указан только он.
  • r2 (Number, необязательный) — радиус скругления правого верхнего угла.
  • r3 (Number, необязательный) — радиус скругления правого нижнего угла.
  • r4 (Number, необязательный) — радиус скругления левого нижнего угла.

Description

  • Если переданы только 4 параметра (x1, y1, wi, hi), создаётся прямоугольник без скруглений.
  • Если передано 5 параметров, то пятый параметр используется как радиус скругления для всех четырёх углов.
  • Если передано 8 параметров, то последние четыре задают радиус скругления для каждого угла отдельно (в порядке: левый верхний, правый верхний, правый нижний, левый нижний).

Return Value

  • Объект Shape, созданный на основе прямоугольника с указанными параметрами, обёрнутый функцией createShape.

Usage Example

// Прямоугольник 100x50 без скруглений, с левым верхним углом (10,10)
rectangle(10, 10, 100, 50);

// Прямоугольник 100x50 с радиусом скругления 10 для всех углов
rectangle(10, 10, 100, 50, 10);

// Прямоугольник 100x50 с разными радиусами для каждого угла
rectangle(10, 10, 100, 50, 5, 10, 15, 20);

circle(x, y, r[, r2])

  • Creates a circle or ellipse.

Функция: circle(x, y, r1, r2)

Purpose:

Создаёт окружность или эллипс с заданными параметрами центра и радиусов.

Parameters

  • x (Number) — координата X центра окружности/эллипса.
  • y (Number) — координата Y центра окружности/эллипса.
  • r1 (Number) — радиус окружности или первый радиус эллипса (горизонтальный).
  • r2 (Number, необязательный) — второй радиус эллипса (вертикальный). Если не указан, создаётся окружность.

Description

  • Если переданы 3 параметра (x, y, r1), создаётся окружность с центром в (x, y) и радиусом r1.
  • Если переданы 4 параметра (x, y, r1, r2), создаётся эллипс с центром в (x, y) и радиусами r1 (горизонтальный) и r2 (вертикальный).
  • Если передано другое количество параметров, функция возвращает null.

Return Value

  • Объект Shape, созданный на основе окружности или эллипса, обёрнутый функцией createShape.

Usage Example

// Создать окружность с центром (50,50) и радиусом 20
circle(50, 50, 20);

// Создать эллипс с центром (50,50), горизонтальным радиусом 40 и вертикальным радиусом 20
circle(50, 50, 40, 20);

poly([x1,y1, x2,y2, ...])

  • Creates a polygon from an array of points.

Пример: poly([x1, y1, x2, y2, x3, y3])

Функция: poly(points)

Purpose:

Создаёт многоугольник (полигон) из последовательности точек.

Parameters

  • points (Array of Numbers) — массив чисел, представляющий координаты точек в формате [x1, y1, x2, y2, x3, y3, ...].

Минимум должен содержать координаты двух точек (4 числа).

Description

  • Проверяет, что массив points содержит минимум 4 элемента (минимум две точки).
  • Создаёт первую линию между первой и второй точками (points[0], points[1]) и (points[2], points[3]).
  • Получает подмаршрут (SubPath) последнего сегмента.
  • Для каждой последующей пары координат (x, y) добавляет линейный сегмент к подмаршруту.
  • Возвращает объект Shape, обёрнутый функцией createShape с типом "poly".

Return Value

  • Объект Shape — многоугольник, построенный из переданных точек.
  • Если параметр points невалиден (меньше 4 чисел), возвращается null.

Usage Example

// Создать многоугольник из 4 точек
poly([10, 10, 100, 10, 100, 50, 10, 50]);

shipy(sx, sy, stx, sty, qty_or_len, ph, clo, sgap, lgap, rgap, bylen, colr)

или

shipy(shape, side, qty_or_len, ph, clo, sgap, lgap, rgap, bylen, colr) или
  • Создаёт пользовательскую кривую на стороне shape или по координатам.

Поддерживает инверсию сторон с префиксом "-".

либо указываем 4 координаты линии вдоль которой надо рисовать шипы.

Пример 1: shipy(x1, y1, x2, y2, ..., options)

если в первый переметр передать объект, то он рисует шипы вдоль указанной грани (второй параметр T,B,L,R)

Пример 2: shipy(shape, "T", qty, thikness, ...)

Purpose:

Создаёт серию прямоугольных пазов вдоль заданной линии между точками (sx, sy) и (stx, sty).

Пазы чередуются с пропусками и могут быть смещены, повернуты и раскрашены.

Parameters

  • sx, sy (Number) — координаты начальной точки линии.
  • stx, sty (Number) — координаты конечной точки линии.
  • qty_or_len (Number) — количество пазов (если bylen = false) или длина одного паза (если bylen = true).
  • ph (Number) — высота (глубина) паза, перпендикулярно линии.
  • clo (Boolean) — режим чередования. true — начинается с пропуска, false — с паза. По умолчанию: true.
  • sgap (Number) — смещение пазов вверх или вниз относительно линии (по нормали). По умолчанию: 0.
  • lgap (Number или [Number, Number]) — левый отступ. Если передан массив, то:
  • первый элемент — увеличивает или уменьшает длину распределения с этой стороны,
  • второй элемент — увеличивает или уменьшает первый шип с этой стороны.
  • rgap (Number или [Number, Number]) — правый отступ. Если передан массив, то:
  • первый элемент — увеличивает или уменьшает длину распределения с этой стороны,
  • второй элемент — увеличивает или уменьшает первый шип с этой стороны.
  • bylen (Boolean) — если true, qty_or_len интерпретируется как длина паза, иначе — как количество. По умолчанию: false.
  • colr (Array или false) — цвет заливки пазов. Передаётся в виде массива (например, [255, 0, 0]) или кореловского объекта color. Если false — заливка не применяется.

Features

  • Если задано чётное количество пазов — оно автоматически уменьшается на 1.
  • Минимальное количество пазов — 3.
  • Пазы создаются как прямоугольники, повернутые вдоль исходной линии.
  • Вспомогательная линия для выравнивания создаётся временно и удаляется по завершении.

Пример:

shipy(0, 0, 100, 0, 5, 10, true, 0, [5, 10], [5, 10], false, [255, 0, 0]);
  • создаёт 5 пазов по горизонтали, высотой 10, с началом отступа,
  • с отступами по краям (первый/последний — 10), и красной заливкой.

Шиповые соединения для картонных коробок

Функции для создания шипов и пазов для картонных коробок

line_teeth(x1, y1, x2, y2, nums, th, direction, shift)

Создает прямоугольные шипы вдоль линии. Шипы имеют небольшое сужение для лучшей посадки.

Parameters

  • x1, y1 - координаты начала линии
  • x2, y2 - координаты конца линии
  • nums - количество шипов
  • th - высота шипов
  • direction - направление выступа шипов:
  • "left" или "up" - шипы слева/сверху от линии
  • "right" или "down" - шипы справа/снизу от линии
  • shift - смещение шипов вдоль линии (опционально):
  • числовое значение - смещение на заданное расстояние
  • "half" - смещение на половину шага
  • "-half" - смещение на половину шага в обратную сторону
  • максимальное смещение ограничено длиной одного сегмента

line_slots(x1, y1, x2, y2, nums, th, direction, shift)

Создает прямоугольные пазы для сопряжения с шипами. Каждый паз создается как отдельный прямоугольный объект.

Parameters идентичны функции line_teeth:

  • x1, y1 - координаты начала линии
  • x2, y2 - координаты конца линии
  • nums - количество пазов (должно совпадать с количеством шипов)
  • th - глубина пазов (должна совпадать с высотой шипов)
  • direction - направление углубления пазов (противоположное шипам):
  • "left" или "up" - пазы слева/сверху от линии
  • "right" или "down" - пазы справа/снизу от линии
  • shift - смещение пазов вдоль линии (должно совпадать со смещением шипов)

Usage

Для создания сопрягаемых деталей:

  • 1. Используйте одинаковые значения nums и th для шипов и пазов
  • 2. Направление (direction) для пазов должно быть противоположным шипам
  • 3. Для смещения используйте одинаковые значения shift

Пример:

// Создание шипов
line_teeth(0, 0, 100, 0, 5, 10, "up", "half");

// Создание ответных пазов
line_slots(0, 50, 100, 50, 5, 10, "down", "half");

perf(dash, gap)

Функция perf предназначена для создания пунктирного контура объекта и имеет следующие характеристики:

Parameters функции

  • s — входной объект (может быть типа SHAPE или другого типа)
  • punkt_dash — длина штриха пунктира
  • punkt_gap — длина промежутка между штрихами

text(X, Y, text, size, font, params)

Создаёт и размещает текстовую надпись в документе.

Parameters

X (число) — координата X точки привязки текста.

Y (число) — координата Y точки привязки текста.

text (строка) — содержимое текстовой надписи.

size (число) — размер шрифта в единицах документа или в миллиметрах (если указан параметр mm).

font (строка) — имя шрифта.

params (массив строк) — набор дополнительных опций для форматирования и выравнивания текста.

Поддерживаемые значения в params:

Размер и позиционирование

"mm" — размер шрифта задаётся в миллиметрах.

"wide", "width" — задаёт ширину текста по size.

"top" — позиционирование по верхней границе (TopY = Y).

"right" — позиционирование по правой границе (RightX = X).

Выравнивание

"l", "textleft" — выравнивание по левому краю.

"r", "textright" — выравнивание по правому краю.

"c", "textcenter" — выравнивание по центру.

Начертание

"b", "bold" — полужирный шрифт.

"i", "italic", "cursive" — курсивное начертание.

"u", "under", "underline" — подчёркнутый текст.

Возвращает:

Объект, содержащий созданную текстовую фигуру (txt).

Features работы:

Если указан mm или wide, размер текста подгоняется в миллиметрах.

Если используется wide, ширина текста регулируется по высоте size.

При отсутствии top и right текст привязывается по левому нижнему углу в точке (X, Y).

Метод возвращает объект с текстовой фигурой, созданной на активном слое.

Examples:

    text(50, 100, "Hello World", 12, "Arial");

Создаёт текст Hello World размером 12 пунктов шрифтом Arial с привязкой по левому нижнему углу в точке (50, 100).

    text(200, 150, "Label", 10, "Times New Roman", ["mm", "bold", "italic", "right"]);

Создаёт текст Label шрифтом Times New Roman размером 10 мм, полужирным курсивом, с привязкой по правому краю в точке (200, 150).

    text(100, 50, "Centered Text", 20, "Verdana", ["wide", "c"]);

Создаёт центрированный текст Centered Text шрифтом Verdana с высотой 20 мм и подгонкой ширины текста к размеру 12mm.

🔞 Справочник геометрических функций (math.js)

Координаты и преобразования

  • normalizeCoordinates(coords) — Нормализует координаты в объект {x, y} из массива [x, y] или объекта
  • distXY(x1, y1, x2, y2) — Вычисляет расстояние между двумя точками
  • getEndXY(X, Y, L, ANG) — Находит конечную точку отрезка заданной длины и угла от начальной точки
  • rotatePoint(x, y, angle, xR, yR) — Поворачивает точку на заданный угол вокруг центра вращения
  • getMidPoint(x1, y1, x2, y2) — Находит середину отрезка между двумя точками
  • getTriangleArea(x1, y1, x2, y2, x3, y3) — Вычисляет площадь треугольника по трем точкам
  • isPointOnLine(px, py, x1, y1, x2, y2, tolerance) — Проверяет, лежит ли точка на отрезке с заданной точностью
  • polarToCartesian(r, angle) — Преобразует полярные координаты в декартовы
  • cartesianToPolar(x, y) — Преобразует декартовы координаты в полярные

Углы и тригонометрия

  • normalizeAngle(angle) — Нормализует угол в диапазон 0-360 градусов
  • getAngleDifference(angle1, angle2) — Вычисляет минимальную разность между двумя углами
  • toRad(degrees) — Преобразует градусы в радианы
  • toDeg(radians) — Преобразует радианы в градусы
  • getLineAngle(x1, y1, x2, y2, inDegrees) — Вычисляет угол наклона линии между двумя точками
  • getAngleByTwoCatets(a, b) — Вычисляет угол по противолежащему и прилежащему катетам (atan)
  • getAngleByTwoCatetsAtan2(a, b) — Вычисляет угол по катетам с использованием atan2
  • getOppositeKatetbyAdjacentKatetandAngle(adjKatet, angle) — Находит противолежащий катет по прилежащему и углу
  • getAdjacentKatetbyOppositeKatetandAngle(oppKatet, angle) — Находит прилежащий катет по противолежащему и углу
  • getHypotenuseByCatets(adjKatet, oppKatet) — Вычисляет гипотенузу по двум катетам
  • getOppositeKatetbyHypotenuseandAngle(hypotenuse, angle) — Находит противолежащий катет по гипотенузе и углу
  • getAdjacentKatetbyHypotenuseandAngle(hypotenuse, angle) — Находит прилежащий катет по гипотенузе и углу

Сложные геометрические вычисления

  • HypotenuseEndPoint(startPoint, adjacentEndPoint, angleInDegrees) — Вычисляет конечную точку гипотенузы по начальной точке, конечной точке прилежащего катета и углу между гипотенузой и прилежащим катетом. Возвращает объект с координатами и длинами сторон.

префиксы для файлов от пользователей начинаются на x

  • xa — GROSSLASER

Color utils — краткая справка (func.js)

  • function getColor(color) — Приводит входные данные к объекту Color из любого вида: [R,G,B], [C,M,Y,K] или #hex цвета.
  • getSColor(s, byFill, strict) — взять цвет объекта возвращает кореловский Color

getbyName(name, OS, ingroup, strong) -> ShapeRange : взять объекты по имени

getByFill(color, os) -> ShapeRange : фигуры с заливкой color

getByOutline(color, os) -> ShapeRange : фигуры с обводкой color

getByColor(color, byFill, os) -> ShapeRange : поиск по цвету (fill/outline по приоритету)

copyFill(trgt, src) : копирует заливку

copyOutline(trgt, src) : копирует обводку

copyColor(trgt, src) : копирует заливку и обводку

setFill(S, color) : устанавливает заливку

setColor(S, color, mode) : устанавливает цвет (outline|fill|both)

getColor(color) -> Color : преобразует вход к Color (RGB/CMYK/hex/id/obj)

Support Derevyashkin's project and get an exclusive macro panel!
Additional CorelDRAW macros from other authors:

Tools, generators for the docker, and standalone macros.

Statistics
since 23.04.2022
Users
11 625
Active
892
Clicks
5 530 569
Verification
Confirm this value: