Javascript эффективный инструмент конструктора технолога для расширения функциональности сапр базис

Обновлено: 01.05.2024

Скрипт для подсчёта всей площади поверхности объекта. Погрешность вычислений зависит от параметров Базиса "Гладкость дуг" (меньше - хуже) и "ядро C3D" (выкл. - хуже).

Вложения

constructor

Active Member

Вложения

constructor

Active Member

Скрипт для БМ-10 и 11 версий - Выделение по маске.

Параметры выделения:
1) Кромка.
2) Паз.
3) Имя панели.
4) Имя панели содержит.
5) Контур не прямоугольный.
6) Контур с дугами или окружностями.

Во вложении 2 варианта скриптов, тот что в rar архиве имеет больше функционала для выделения.

Вложения

constructor

Active Member

Скрипт на угловой радиусный кухонный шкаф. Вогнутый радиус положительное число, выгнутый отрицательное число.

Вложения

constructor

Active Member

Небольшой скрипт для построения шип-паз двух перпендикулярных пересекающихся панелей. Если панели нужно под углом, то панели выставить как обычно, запустить скрип и потом вращать как нужно, например крыша домика. Работает в Базис Мебельщик 8 (народная)

Кубик.jpg

Вложения

constructor

Active Member

Скрипт отработан в народном Базис-мебельщик 8 версии.
Скрипт для расчёта фурнитуры, профилей, погонажа, кромки и площади заготовок всей модели, или выделенного (подсвеченная фурнитура включительно).

Вложения

constructor

Active Member

Cкрипт из двух форм генерирующий название видов покраски и красящий детали согласно ценовой группе. Внимание скрипт определяет ценовую группу по цифрам артикула материала. Для каждой ценовой группы свой список расцветок и эффектов покраски. Для Базиса 10 и 11 версий

Вложения

constructor

Active Member

Скрипт для Базис-мебельщик 8 - изменяет размер выделенных панелей. Полезно для кромлённых панелей. Можно установить нужный размер, или добавить или отнять от текущего размера каждой панели. Также это удобно и для некромлёных панелей, при изменении нескольких панелей с разными размерами. Толщина - если -1, то не изменять.

1.jpg

Вложения

Matew

Member

Скрипт obl - b3d строит 3д модели панелей в мебельщике из файла раскроя.

Откройте его в текстовом редакторе. Первая строка
Zazor = 60; //зазор между панелями в стопке
Зазор между панелями в стопке можете установить свой.
Еще есть строка комментария, которая относится к следующей строке.
//Если в названии размеры не нужны, то закомментировать следующую строку. Поставить в ее начале //
Panel.Name = Panel.Name + ' (' + Dl + ' x ' + Sh + ' x ' + Panel.Thickness + ')';


Павел Бунаков, д.т.н., ведущий программист ООО «Базис-Центр»,

Роман Колесников, ведущий программист ООО «Базис-Центр»,

Сергей Мещанинов, программист ООО «Базис-Центр»

Система встроенного программирования в САПР БАЗИС зарекомендовала себя как удобный инструмент для реализации специфических проектных операций. В новой версии системы добавлена возможность разработки скриптов в среде Visual Studio Code.

Мебельная промышленность — одна из наименее зависимых от политических и экономических потрясений. Мебель нужна людям всегда, независимо от курса валюты, времени года или флуктуаций в экономике. Даже в кризис мебельные магазины не пустуют, разве что у людей изменяются запросы и вместо элитной мебели они покупают мебель эконом­класса.

Подтверждением этого служит довольно большой спрос на высокотехнологичное оборудование для мебельного производства и программное обеспечение для автоматизации проектирования. Сегодня найти предприятие, где не использовались бы пильные центры, фрезерно­присадочные станки с ЧПУ или современное кромкооблицовочное оборудование, практически невозможно. А вот спрос на механические форматно­раскроечные станки падает уже несколько лет.

Уровень массовой автоматизации предприятий по производству корпусной мебели весьма высок. Специализированные САПР охватывают все дизайнерские, конструкторские, технологические и производственные службы предприятий, а также частично реализуют маркетинговые, учетные, снабженческие и управленческие функции. К ним относятся многофункциональные программные комплексы, преимущественно отечественной разработки. Однако в силу высокой вариативности подходов и методов проектирования и производства мебели на разных предприятиях автоматизировать одинаково эффективно все проектные операции не представляется возможным. Это делает актуальной разработку программных средств для расширения функциональности мебельных САПР силами самих пользователей. Безусловно, такой аппарат не станет массовым, поскольку требует определенных знаний, навыков и затрат времени, но для «продвинутых» пользователей это настоящая находка. Тем более что свои наработки они часто выкладывают в свободный доступ, делая их достоянием всех мебельщиков.

Зачем программировать?

Практически всё, что можно создать при помощи скриптов, можно реализовать и с помощью интерактивного инструментария системы БАЗИС, причем это будет быстрее, чем написание и отладка скрипта (если говорить о единичной модели или операции). Возникает закономерный вопрос: а есть ли смысл тратить время на программирование?

Разрабатывать скрипт для построения единичной эксклюзивной модели абсолютно бессмысленно. Однако есть множество ситуаций, когда затраты на создание скриптов не только оправдываются, но и приносят реальные выгоды. Назовем некоторые из них:

  • часто возникает необходимость «ускоренного» моделирования, то есть быстрого создания достаточно сложной модели, например при работе с клиентом. С помощью графического редактора это может занять немало времени, а подходящий скрипт построит модель практически мгновенно в соответствии с размерами, представленными клиентом, и его пожеланиями;
  • для качественного проектирования изделий в системе БАЗИС (как, впрочем, и в любой САПР) требуется хорошая конструкторская подготовка, а найти специалистов соответствующего уровня не всегда удается. Применение скриптов значительно понижает профессиональную планку за счет простоты использования и заложенных в них алгоритмов контроля корректности действий;
  • скрипты существенно снижают психоэмоциональную нагрузку на проектировщика в процессе работы. При их использовании он сосредотачивается на наиболее важных аспектах, а многие «мелкие» вещи (крепление панелей, облицовывание торцов и т.п.) выполняются автоматически;
  • скрипты — прекрасное средство унификации конструкции изделий, что особенно актуально для технологов. Ситуацию, когда каждый «творит, как хочет», можно полностью исключить;
  • при наличии модельных рядов выпускаемой продукции, особенно если различия в рядах не только размерные, но и качественные, скрипты позволяют избежать необходимости создания большого количества 3D­моделей и их организации в виде библиотек. Любые изменения в модельном ряду гораздо проще реализовать доработкой алгоритма в скрипте, нежели вносить изменения во все модели ряда;
  • с помощью скриптов легко производится экспорт информации из любой модели в различные сторонние программы, используемые на предприятии.

Встроенное программирование в САПР БАЗИС

Подход к расширению функциональных возможностей, воплощенный в системе БАЗИС, можно назвать профессионально ориентированным программированием. Разработка встроенных модулей выполняется на языке JavaScript, расширенном дополнительным набором объектов и функций для взаимодействия с файловой системой и системой БАЗИС.

Скриптовый язык выбран в силу легкости его освоения людьми, не имеющими серьезных знаний в области вычислительной техники и программирования [1]. Он прекрасно сочетает в себе простоту написания кода с возможностью создания достаточно сложных по структуре программных модулей. Скрипты имеют открытый код, поэтому далеко не всегда требуется их разработка «с нуля». В Интернете накоплено достаточно большое количество самых разных скриптов для системы БАЗИС, что позволяет адаптировать сторонние разработки под свои нужды с минимальными затратами.

Тем не менее семантика команд реализована в соответствии со спецификой предметной области. Данные, с которыми работает программист, являются составными объектами корпусной мебели: панели, фурнитура, крепеж, облицовочный материал и т.д. Команды — это, по сути, наименования проектных операций, например облицевать торец панели, скрепить две панели по схеме «торец — пласть» или установить штангу для одежды. Приведем пример простого скрипта, позволяющего построить корпус (без задней стенки) из текущего материала:

var Толщина = ActiveMaterial.Thickness;

AddVertPanel(0, Толщина, 700, 1800 ­ Толщина, 0);

AddVertPanel(0, Толщина, 700, 1800 ­ Толщина, 1000 ­ Толщина);

AddHorizPanel(0, 0, 1000, 700, 0);

AddHorizPanel(0, 0, 1000, 700, 1800 ­ Толщина);

Небольшого знания английского языка и программирования достаточно, чтобы понять смысл каждой команды. Естественно, как и в любом алгоритмическом языке, в скриптах можно использовать все необходимые алгоритмические конструкции, такие как ветвления или циклы, а также библиотеку встроенных функций.

Среда скриптового программирования в САПР БАЗИС открывает практически полный доступ ко всем графическим, и не только, возможностям системы. В ней можно создавать столь же сложные модели мебельных изделий, как и при интерактивном проектировании, поскольку нет ограничений на вложенность программируемых объектов и сложность геометрических форм контуров. Для написания и использования скриптов не требуется установки каких­либо дополнительных программ — всё необходимое уже встроено в систему БАЗИС.

Одной из отличительных особенностей проектирования корпусной мебели является большое количество типовых проектных решений, различающихся размерами, материалом и фурнитурой. Это относится и к технологическим процессам изготовления. С точки зрения автоматизации подобная ситуация требует параметризации моделей и проектных операций. Именно параметризация способна повысить скорость проектирования и унифицировать проектные решения, не жертвуя при этом индивидуальностью проектируемых изделий.

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

Возможности встроенного редактора

Скриптовое программирование в системе БАЗИС реализовано достаточно давно. Первоначально оно было встречено пользователями весьма осторожно, поскольку в некоторых параметрических мебельных системах программирование типовых моделей (прототипов) является сложной задачей и выполняется разработчиками систем. Одни мебельщики сталкивались с подобными проблемами, когда для любого изменения модельного ряда приходилось обращаться к разработчикам, другие — слышали об этом. В любом случае имело место мнение о том, что создание программ для САПР — очень трудная задача, доступная только самим разработчикам. Когда же выяснилось, что программирование в системе БАЗИС существенно отличается от этого стереотипа, стали появляться первые, достаточно простые макросы.

Рис. 1. Окно редактора скриптов

Рис. 1. Окно редактора скриптов

Легкость изучения языка JavaScript и появление хорошего методического обеспечения в виде документации и видеороликов, созданных как разработчиками системы БАЗИС, так и ее пользователями, быстро сделали свое дело: сложность встроенных программ начала возрастать. Они стали многофункциональными и структурированными приложениями, а их интерфейс — более совершенным. Это привело к увеличению времени разработки и усложнению процесса отладки. Функциональности встроенного редактора скриптов (рис. 1) вполне хватало для разработки приложений средней сложности, однако для работы с большими программами ее оказалось недостаточно. Возникла необходимость в подключении или разработке более мощного средства, которое позволило бы в полном объеме реализовать типовую процедуру локализации и исправления ошибок, которая включает следующие операции:

  • установка контрольных точек в тех местах программы, которые, возможно, являются источником ошибки;
  • запуск скрипта и его «вывод» на одну из контрольных точек;
  • переход к пошаговому выполнению команд;
  • изучение структуры стека для определения той цепочки шагов, которые привели в данную контрольную точку;
  • исследование значений переменных с целью обнаружения их отклонения от ожидаемых значений, с использованием, в случае необходимости, выражений для вычисления интересующих значений;
  • изменение значений переменных и повторение выполнения определенного фрагмента кода.

Анализ рынка интегрированных средств отладки показал, что заниматься разработкой собственной среды нет необходимости, а сравнение наиболее известных вариантов склонило чашу весов в сторону Visual Studio Code.

Среда Visual Studio Code

Visual Studio Code — это современный кроссплатформенный редактор исходного кода программ, написанных на наиболее популярных языках программирования, в частности на JavaScript. Он является открытым программным обеспечением, то есть распространяется бесплатно и имеет доступный для редактирования исходный код. Первая версия редактора была представлена компанией Microsoft в апреле 2015 года, а через год появился рабочий релиз. За столь небольшой промежуток времени Visual Studio Code стал исключительно популярным в среде программистов благодаря легкости освоения, которая сочетается с широкими возможностями по созданию, редактированию и отладке программного кода. Редактор неплохо документирован и легко устанавливается.

Для быстрого написания исходного кода и его эффективной отладки Visual Studio Code имеет следующие действенные средства:

  • контекстные подсказки и подсветка синтаксиса;
  • автодополнение кода с использованием технологии IntelliSense, то есть распознавание типовых конструкций используемого языка по первым вводимым символам и автоматическое построение нужного шаблона;
  • вставка заранее заготовленных блоков кода для упрощения его повторного использования;
  • средства навигации по коду и его рефакторинга;
  • встроенный отладчик;
  • распределенная система управления версиями Git — свободно распространяемое и удобное средство для организации коллективной работы программистов над проектом;
  • расширение функционала за счет плагинов.

Интересной и нужной возможностью Visual Studio Code являются задачи. Благодаря им можно выполнить любую команду командной строки и увидеть результат ее выполнения непосредственно из среды разработки. Это дает возможность подключения внешних инструментов, например компиляторов или средств тестирования.

Таким образом, сочетание простоты и мощности Visual Studio Code стало веским аргументом в его пользу при выборе средства для разработки встроенных приложений для системы БАЗИС.

Node.js — новый движок для скриптового программирования

В новой версии системы БАЗИС 10 для исполнения скриптов используется новый движок на основе Node.js. Он имеет ряд существенных преимуществ:

  • поддержка современных стандартов языка JavaScript. Язык достаточно быстро развивается. В последней версии стандарта предусмотрены, например, именованные параметры функций, блочная область видимости, вложенные модули и множество других вещей, очень интересных для программистов;
  • поддержка синтаксиса языка TypeScript, позволяющего работать с типизированными данными, чего не было в классическом JavaScript. Это не только позволяет избежать ошибок по причине записи несовместимых типов, но и делает функцию автодополнения более «интеллектуальной»;
  • наличие большого количества функций для работы с системой;
  • возможность организации эффективной модульной структуры программы с использованием уже существующих модулей, утилит, библиотек и фреймворков. Для удобства работы с любыми сторонними решениями они представляются в виде пакетов, то есть некоторого набора функциональных возможностей. Их установка и обновление реализуются с помощью системы управления пакетами или менеджера. В движке Node. js используется пакетный менеджер NPM, который по умолчанию устанавливается вместе с ним.

Технология разработки скрипта

Основная особенность разработки скриптов в системе БАЗИС заключается в том, что для реализации своих замыслов пользователь может использовать практически все алгоритмы, созданные ее разработчиками. Именно это делает их разработку сравнительно несложным процессом.

Рассмотрим пример. Одной из часто используемых проектных операций у мебельщиков является замена материалов, из которых изготовлено изделие. В системе БАЗИС есть соответствующая команда (рис. 2), но она работает только с материалами одинаковой толщины, поскольку в противном случае возможно множество алгоритмов перестроения геометрии модели, и выбрать оптимальный из них проблематично.

Рис. 2. Окно замены материалов

Рис. 2. Окно замены материалов

Рис. 3. Visual Studio Code с расширением для системы БАЗИС

Рис. 3. Visual Studio Code с расширением для системы БАЗИС

Рис. 4. Окно скрипта замены материалов

Рис. 4. Окно скрипта замены материалов

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

  1. Устанавливаем Visual Studio Code со специальным расширением для системы БАЗИС (рис. 3).
  2. Разрабатываем дизайн окна ввода исходных данных и описываем соответствующую форму. Для работы скрипта необходимо выбрать все материалы, используемые в текущей модели, и дать возможность для каждого из них задавать новый материал (рис. 4). Кроме того, если на модели выделены некоторые панели, желательно указать, выполнять замену надо для всех панелей или только для выделенных. Код описания формы приведен на рис. 5.
  3. Описываем алгоритм пересчета. Толщина панелей меняется автоматически в соответствии с новым материалом. Расположение их в зависимости от выбранного алгоритма может изменяться или оставаться неизменным. Например, для сохранения ширины изделия левая габаритная панель остается на месте, тогда как правая панель смещается на расстояние, равное разности толщин старого и нового материалов. Толщину внутренних перегородок можно изменять симметрично.
  4. Корректируем размеры примыкающих панелей.
  5. Все вновь построенные панели передаем в БАЗИС.

Рис. 5. Код описания формы

Рис. 5. Код описания формы

Рис. 6. Интерфейс выбора вариантов редактирования панелей

Рис. 6. Интерфейс выбора вариантов редактирования панелей

Можно сделать более универсальный вариант. По сути, пересчет геометрии определяется тем, как изменяется положение панелей, у которых меняется материал. Дадим пользователю возможность изменять принятые в пункте 3 правила, предложив их в качестве умолчаний. Для этого отобразим в «окошках», расположенных справа и слева от вертикальных панелей, соответственно сверху и снизу от горизонтальных панелей, суммарное значение изменения толщины (рис. 6). Теперь можно, изменяя те или иные значения, определять алгоритм пересчета геометрии. Разумеется, необходим контроль корректности ввода, ведь пользователь может случайно ввести значения, превышающие разность толщин материалов. Для удобства работы с новым скриптом его можно оформить в виде дополнительной инструментальной панели с кнопками модуля БАЗИС­Мебельщик (рис. 7).

Рис. 7. Инструментальная панель для скрипта

Рис. 7. Инструментальная панель для скрипта

Заключение

Опытный конструктор всегда стремится использовать в своей работе максимум возможностей применяемой САПР. С этой точки зрения встроенное программирование в системе БАЗИС можно рассматривать как возможность выполнять некоторые проектные операции не предусмотренным в системе способом. Однако для этого надо уметь и проектировать, и программировать. Разработка скриптов в умелых руках может стать отличным средством повышения эффективности работы всех специалистов мебельного производства.

Несмотря на многообразие возможностей и развитость инструментов проектирования в современных САПР, у любого пользователя всегда найдутся проблемы и задачи, для решения которых их будет недостаточно. Здесь может быть несколько различных вариантов: либо используемая система предлагает слишком «громоздкий» способ, либо она неэкономична в плане компьютерных ресурсов, либо требуется приобретение достаточно дорогих программных модулей, предназначенных для решения более общих проблем. Одним словом, причин для «неудовлетворенности» работой любой САПР может быть достаточно много, несмотря на то, что в целом существенных претензий к ней нет. Просто по мере приобретения профессионального опыта и опыта автоматизированного проектирования пользователь часто «вырастает» из используемой системы. Возникает противоречие: он понимает, как можно быстро и «красиво» решать стоящие перед ним задачи, но не находит для этого адекватных инструментов.

Перейти на другую систему — не вариант. Даже в том случае, если в ней окажутся инструменты для эффективного решения некоторой конкретной задачи, через какое­то время возникнут другие, и всё вернется на круги своя. Ни одна система не сможет учесть пожелания и запросы всех своих потенциальных пользователей. Затраты же на адаптацию к новой системе и перевод в нее уже наработанных проектов могут оказаться весьма существенными. Хорошо, если предприятие небольшое, а конструктор и технолог — это один и тот же человек. В противном случае может оказаться, что далеко не всем сотрудникам новая система по нраву…

Гораздо более перспективным является другой вариант: «найти» в системе средства расширения функциональности и реализовать с их помощью свои идеи. Безусловно, для этого придется изучить основы программирования, но, как известно, дорогу осилит идущий. Тем более что это не такая уж «страшная» штука, и в этом автор постарается убедить, по крайней мере, одну часть великого сообщества инженеров­проектировщиков — конструкторов и технологов мебельных предприятий. Если же в используемой САПР нет никаких средств расширения функциональности или хотя бы перспектив их появления — это может говорить только об одном: критерии выбора системы были в свое время недостаточно продуманы. Но это тема отдельного разговора.

Параметризация — путь к успеху

Специфика мебельной промышленности заключается в том, что она имеет дело непосредственно с заказчиком, запросы которого в настоящее время смещаются в сторону высокого качества, индивидуального дизайна, быстрого получения заказанных изделий и приемлемой стоимости. В условиях конкуренции мебельщиков он обязательно найдет себе поставщика, который ему все это сможет предложить. Хорошо, чтобы таким поставщиком оказалось ваше предприятие. Необходимым условием для этого является оптимизация всех проектных операций — перевод их в максимально автоматический режим выполнения.

Одной из особенностей проектирования корпусной мебели является необходимость выполнения целого ряда типовых операций для различных изделий, например установка полкодержателей, штанг или пантографов, фрезеровка кухонных фасадов, облицовка кромок панелей. При этом на разных предприятиях алгоритмы их выполнения могут быть различными. Это зависит от технологии изготовления, используемого оборудования, особенностей применяемой фурнитуры и других моментов. Реализовать все эти нюансы в коммерческой САПР, ориентированной на массовое применение, невозможно. Значит, «спасение утопающих — дело рук самих утопающих».

Именно параметризация предоставляет неограниченные возможности для автоматизации специфических проектных операций. Важным ее преимуществом является то, что разработка параметрических моделей, алгоритмов и пользовательских диалогов осуществляется штатными средствами базовой САПР — теми привычными средствами, с которыми пользователь работает в режиме диалога при традиционном проектировании изделий. Меняется только способ обращения к ним.

Параметризация позволяет выполнять сложные проектные операции и вносить изменения в модель несколькими простыми движениями. Это существенно экономит время создания проектов и вносит определенную упорядоченность в работу конструктора или технолога.

Скриптовые языки программирования

Как отмечалось выше, для того чтобы в полной мере ощутить всю прелесть параметризации, необходимо научиться программировать. В системе БАЗИС средством расширения функциональности является скриптовый язык программирования JavaScript.

Скриптом, как известно, называется некоторый программный сценарий выполнения определенной последовательности действий. Синтаксис и семантика команд в скрипте определяются соответствующей предметной областью. Другими словами, «мебельные» скрипты системы БАЗИС оперируют объектами, из которых создается корпусная мебель, — панелями, крепежной и декоративной фурнитурой, конструкционными и облицовочными материалами и т.д. При этом команды языка соответствуют привычным проектным операциям, например установить панель в заданном месте, облицевать торец панели, скрепить две панели определенным образом. Помимо этого скриптовый язык включает простые алгоритмические структуры управления, такие как присвоение значений, ветвления и циклы, а также ряд вспомогательных функций.

Скриптовые языки являются прекрасным инструментом для людей, которые только начинают изучать программирование. Для написания неплохих прикладных программ достаточно знать только структуру языка и, естественно, уметь работать в базовой САПР.

Рис. 1. Проектируемая модель

Рис. 1. Проектируемая модель

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

В силу того что в скриптах САПР БАЗИС практически отсутствуют какие­либо ограничения на доступ к возможностям системы, уровню вложенности формируемых объектов и сложности геометрических форм, можно создавать программы любого уровня подробности и детализации, вплоть до автоматического построения целого мебельного ансамбля.

Однако из­за большого количества возможных вариаций необходимы определенные ограничения на сложность скриптов, компромиссные решения между усложнением программы и разделением ее на более простые фрагменты.

В системе БАЗИС разработана универсальная среда создания параметрических моделей. Тем не менее следует четко представлять себе, что первостепенное значение имеют все­таки знания предметной области и навыки проектирования. Скрипты — это мощный инструмент, который при грамотном использовании открывает практически неограниченные возможности для повышения производительности труда конструкторов и технологов.

Язык JavaScript настолько прост в изучении, что можно немедленно приступить к написанию более­менее сложного скрипта.

Как написать свой скрипт

Для демонстрации принципов создания скриптов разработаем программу построения параметрической модели тумбочки, показанной на рис. 1. Программу можно набрать в любом текстовом редакторе, сохранить в файле и загружать по мере необходимости. Однако более удобным является использование встроенного редактора (рис. 2).

В предыдущей статье, посвященной инструментальным средствам расширения функциональности САПР корпусной мебели БАЗИС [1], рассказывалось о том, как организовать пользовательский интерфейс встроенных скриптовых программ. Для получения полного представления о методике их разработки рассмотрим вторую часть задачи построения параметрической модели типового изделия (тумбочки) — моделирование панелей и фурнитуры. Напомним, что речь идет о функции Make(), цель работы которой заключается в формировании полного набора элементов, образующих тумбочку, в области скрипта.

Начало работы

Функция построения тумбочки Make() вызывается в трех случаях:

  • при запуске скрипта для построения модели с параметрами, заданными по умолчанию или считанными из файла настроек;
  • при любом изменении параметров в окне свойств;
  • по окончании работы скрипта.

Описание функции в языке JavaScript выглядит следующим образом:

Перед началом построения необходимо выполнить несколько вспомогательных операций:

  • очистить область скрипта, поскольку в ней могут находиться ранее построенные объекты;
  • определить толщину материала задней стенки. В моделируемом варианте тумбочки задняя стенка устанавливается в пазы, формируемые на габаритных панелях. Материал, из которого она изготавливается (MatBackWall), задается пользователем в окне свойств. Знание толщины этого материала необходимо для расчета ширины пазов. Определить ее значение можно за два действия: назначить материал задней стенки текущим материалом (метод SetActive()), то есть материалом построения всех последующих панелей, и сохранить соответствующее свойство в некоторой переменной (ThickBackWall);
  • установить новый текущий материал — материал, из которого собственно и изготавливается тумбочка (MatKorp). Он также задается пользователем в окне свойств;
  • сохранить толщину текущего материала в некоторой переменной (Thick);

Команды, реализующие эти операции, выглядят следующим образом:

Построение корпуса

Построение тумбочки (как и любой другой корпусной мебели) представляет собой процесс размещения панелей в пространстве (глобальной системе координат) с их позиционированием друг относительно друга. Традиционно мебельщики разделяют панели по их ориентации в пространстве на горизонтальные, вертикальные и фронтальные панели. На рис. 1 иллюстрируется это разделение, а также показывается положение центра локальной системы координат для каждого типа панелей и направления осей координат.

При установке панель считается прямоугольной (с геометрической точки зрения — это параллелепипед), поэтому для ее определения в глобальной системе координат необходимо указать:

  • две координаты, задающие положение вершины прямоугольника, соответствующей началу локальной системы координат (точка привязки);
  • две координаты, задающие положение противоположенной диагональной вершины;
  • координату, определяющую положение панели в пространстве.

Рис. 1. Глобальная и локальные системы координат панелей

Рис. 1. Глобальная и локальные системы координат панелей

В дальнейшем контур панели можно редактировать произвольным образом. Толщина панели определяется толщиной текущего материала. С учетом обозначений, приведенных на рис. 1, функции создания панелей имеют следующие параметры:

  • AddHorizPanel(x1, z1, x2, z2, y) — горизонтальная панель;
  • AddVertPanel(z1, y1, z2, y2, x) — вертикальная панель;
  • AddFrontPanel(x1, y1, x2, y2, z) — фронтальная панель.

Для определения крышки тумбочки (горизонтальная панель) необходимо выполнить вызов функции AddHorizPanel:

Cover= AddHorizPanel(0, 0, Dl.Value, Gl.Value, H.Value ­ Thick);

Смысл параметров вызова таков:

  • первая пара параметров говорит о том, что начало локальной системы координат панели совпадает с началом глобальной системы координат;
  • размер панели по оси X равен значению ширины тумбочки Dl.Value (см. предыдущую статью);
  • размер панели по оси Z равен значению глубины тумбочки Gl.Value;
  • поскольку точкой привязки горизонтальной панели является ее «нижняя» вершина и при этом сама панель не должна «выступать» за габарит тумбочки по высоте, для задания ее координаты по оси Y необходимо из значения высоты тумбочки (H.Value) вычесть толщину панели (Thick), определенную выше.

Для идентификации построенной панели в конструкторско­технологических документах зададим ее наименование:

Следующая операция — облицовка кромок панели материалами, заданными в окне свойств. Предположим, что задняя кромка панели облицовывается материалом «невидимая кромка» (KrNotVidimKorp), а остальные — материалом «видимая кромка» (KrVidimKorp). Оба эти материала задаются в окне свойств. Для облицовки используется метод панели AddButt(material, elem). Первый параметр определяет облицовочный материал, а второй — номер элемента контура, на который наносится облицовка. Элементы контура упорядочены против часовой стрелки и нумеруются с нуля. Нулевым элементом контура панели считается отрезок, начинающийся в точке начала локальной системы координат и направленный вдоль той оси, координата по которой указывается первым параметром в функции создания панели. Для горизонтальной панели нулевым элементом является задняя кромка. Таким образом, для облицовки всех кромок необходимо выполнить четыре вызова метода AddButt:

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

Cut = Cover.AddCut(‘Паз для задней стенки’);

Рис. 2. Параметры построения паза

Рис. 2. Параметры построения паза

Паз определяется двумя параметрами: траекторией и контуром поперечного сечения (рис. 2). Примем следующие параметры паза:

  • глубина — 10 мм;
  • ширина — на 0,5 мм больше толщины задней стенки;
  • отступ от задней кромки крышки — 10 мм.

Траектория паза представляет собой отрезок, параллельный задней кромке крышки, смещенный от нее «внутрь» на 10 мм. Координаты траектории задаются в системе координат панели, поэтому величина смещения будет отрицательной (см. рис. 1). Контур паза — прямоугольник. С учетом этого для построения паза следует выполнить команды:

Traj.AddLine(0, ­10, Dl.Value, ­10);

ContPaz.AddRectangle(0, 0, ­ ThickBackWall ­ 0.5, 10);

Построение крышки на этом завершается. Для ее визуализации необходимо обратиться к методу Build, который реализует построение панели в соответствии с заданными параметрами:

Левая боковина стенки тумбочки (вертикальная панель) строится аналогично крышке, но с небольшими отличиями.

LeftWall = AddVertPanel(0, 0, Gl.Value, H.Value ­ Thick, 0);

LeftWall.Name = ‘Боковина левая’;

В заднем нижнем углу панели строится фаска под плинтус. Геометрически она представляет собой отрезок с углом наклона 45°, начальная и конечная точки которого расположены на указанном расстоянии от угла (Fas.Value). Для построения фаски используется метод Facet объекта Contour, параметрами которого являются координаты точки, ближайшей к фаске, и данное расстояние:

LeftWall.Contour.Facet(0, 0, Fas.Value);

Еще одно отличие от построения крышки заключается в облицовке кромок: «верхнюю» кромку (второй элемент контура) облицовывать не надо, поскольку она закрывается крышкой:

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

Cut = LeftWall.AddCut(‘ Паз для задней стенки’);

Traj.AddLine(10, 0, 10, H.Value ­ Thick);

ContPaz.AddRectangle(0, 0, ­ ThickBackWall ­ 0.5, 10);

Правая боковина тумбочки зеркально симметрична левой боковине, поэтому для ее построения отобразим левую боковину симметрично относительно вертикальной плоскости, проходящей параллельно ей через середину тумбочки:

RightWall = AddSymmetry(LeftWall, NewVector(Dl.Value / 2, 0, 0), AxisX);

Параметры функции симметричного отображения следующие:

  • отображаемый объект — ранее построенная левая боковина;
  • координаты точки, через которую проходит плоскость симметрии, в глобальной системе координат (функция NewVector из трех действительных чисел (координат) создает объект «точка»);
  • вектор нормали к плоскости симметрии, который в данном случае совпадает с осью Х глобальной системы координат. Он определяет ориентацию плоскости в пространстве.

При создании новой панели с помощью симметричного отражения в нее копируются все свойства исходной панели. Единственное свойство, которое надо изменить в правой боковине, — название панели:

RightWall.Name = ‘Боковина правая’;

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

Дно (горизонтальная панель) и цокольная планка (фронтальная панель) строятся аналогичным образом. Отличия в том, что у дна не облицовываются боковые кромки (элементы 1 и 3), а у цокольной планки облицовывается только нижняя кромка (элемент 0).

Цокольная планка размещается между боковинами (то есть ее длина равна ширине тумбочки, уменьшенной на две толщины текущего материала) с заглублением на 20 мм. Последнее означает, что ее координата по оси Z равна глубине тумбочки, уменьшенной на 20 мм и толщину текущего материала (см. рис. 1). Соответствующий фрагмент скрипта имеет вид (параметр Hd.Value — отступ дна от поверхности пола):

Bottom = AddHorizPanel(Thick, 0, Dl.Value ­ Thick, Gl.Value, Hd.Value);

Cut = Dno.AddCut(‘ Паз для задней стенки’);

Traj.AddLine(0, ­10, Dl.Value ­ Thick, ­10);

ContPaz.AddRectangle(0, Thick, ­ ThickBackWall ­ 0.5, Thick ­ 10);

Socle = AddFrontPanel(Thick, 0, Dl.Value–2*Thick, Hd.Value, Gl.Value ­ 20 ­ Thick);

Построение вкладной полки и задней стенки

Полка располагается посередине между дном и крышкой тумбочки «впритык» к задней стенке, с заглублением на 30 мм относительно переднего среза и с боковыми зазорами по 1 мм с каждой стороны (рис. 3). Для ее построения используется функция AddHorizPanel(x1, z1, x2, z2, y). Первые четыре параметра, определяющие контур панели, в соответствии с рис. 3 вычисляются следующим образом:

  • координаты точки привязки (левой задней точки) — (Thick + 1, 10 + ThickBackWall);
  • координаты точки, определяющей размер прямоугольного контура панели (правой передней точки) — (Dl.Value­ Thick­ 1, Gl.Value­ 30).

Для указания положения полки по оси Y надо найти середину внутреннего пространства тумбочки и совместить с ним середину «толщины» панели. Другими словами, координата полки по вертикали будет расположена ниже середины внутреннего пространства тумбочки на величину 0,5* Thick.

Рис. 3. Параметры построения полки

Рис. 3. Параметры построения полки

Для нахождения координаты средней точки из высоты тумбочки (H.Value) вычитается толщина крышки (Thick), отступ дна от пола (Hd. Value) и толщина дна (Thick), после чего берется половина найденного значения:

Hp = (H.Value ­ Thick ­ Hd.Value– Thick)*0.5;

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

Hp = Hp­ 0.5 * Thick;

Начало глобальной системы координат находится «на уровне пола», поэтому для определения положения полки по высоте к полученному значению следует прибавить расстояние от «пола» до верхней пласти дна:

Hp = Hp + Hd.Value + Thick;

Таким образом, команда построения полки будет иметь вид:

Polka = AddHorizPanel(Thick + 1, 10 + ThickBackWall, Dl.Value ­ Thick ­ 1, Gl.Value ­ 30, Hp);

Назначение остальных команд очевидно:

Построение задней стенки отличается от построения остальных панелей двумя нюансами:

устанавливается новый текущий материал MatBackWall;

панель устанавливается с зазором 1 мм по периметру.

BackWall = AddFrontPanel(Thick ­ 9, Hd.Value + Thick ­ 9, Dl.Value ­ Thick + 9, H.Value ­ Thick + 9, 10);

BackWall.Name = ‘Задняя стенка’;

Построение двери

Дверь является составным элементом (блоком), включающим собственно панель и ручку. Начало блока задается специальной командой BeginBlock с указанием его имени, а конец — командой EndBlock():

Dver = AddFrontPanel(2, Hd.Value + 2, Dl.Value ­ 2, H.Value ­ 2, Gl.Value);

Следующий шаг — установка ручки. Фурнитура в системе БАЗИС представляет собой графическое изображение, создаваемое пользователем и хранящееся в файле [2]. Для определения типа ручки используется функция OpenFurniture, в качестве параметра которой задается имя файла:

Handle = OpenFurniture(‘Ручка­скоба 128.f3d’);

Установка любой фурнитуры (в том числе и ручек) на плоскость производится с помощью метода Mount1(Panel, x, y, z, Angle). Первым параметром определяется панель, далее задаются координаты точки установки в глобальной системе координат и угол поворота относительно ее исходного положения:

Handle.Mount1(Dver, Dl.Value ­ 2 ­ 40, H.Value ­ 115, Gl.Value + ThickDver, 0);

На передней пласти двери сделан декоративный вырез — филенка. С точки зрения моделирования она представляет собой паз сложного поперечного сечения, соответствующего профилю фрезы, построенный по некоторой траектории. Отличие от построения паза для задней стенки в основном состоит в том, что контур поперечного сечения не строится явно, а берется из файла и присваивается переменной FileFreza. Естественно, предварительно необходимо убедиться в существовании нужного файла. Команды построения возможных траекторий (в проектируемом скрипте предусматривается четыре их вида) рассматривать не будем. Отметим только, что любая траектория представляет собой последовательность отрезков и дуг, а для организации выбора из четырех вариантов удобно использовать оператор switch. Таким образом, построение филенки будет выглядеть следующим образом:

Контур траектории филенки был построен в плоскости, проходящей через точку привязки фронтальной панели, которая находится на «задней» поверхности двери (см. рис. 1). Его необходимо переместить на «переднюю» поверхность, то есть сдвинуть по оси Z на толщину материала двери — Dver.Thickness.

Для моделирования открытия двери в модуле БАЗИС­Мебельщик установим тип анимации­ — левая дверь:

Расстановка крепежа

Крепеж представляет собой фурнитуру, предназначенную для соединения между собой двух панелей. Для его установки используется метод Mount(Panel1, Panel2, x, y, z), первыми двумя параметрами которого являются соединяемые панели. Из трех координат точно требуется указывать только одну — ту, вдоль которой располагаются элементы крепежа. Две другие координаты лишь обозначают сектор размещения. Например, петли устанавливаются вдоль вертикальной оси, поэтому точные значения присваиваются координате Y, а координаты X и Z определяют сектор, в котором будет расположен крепеж. Полкодержатели устанавливаются вдоль горизонтальной оси Z, координаты по которой и задаются точно; сектор же определяется координатами X и Y.

Тип крепежа указывается пользователем в окне свойств. Он может быть как параметрическим, так и произвольным. Предположим, что устанавливаемые петли являются параметрическим крепежом, а в переменной SY находится точная координата по оси Y одной из них. Тогда для установки петли на модель необходимо выполнить команды:

FPetli.Mount(LeftWall, Dver, 2 * Thick, SY, 0);

Точки с координатами (x=2*Thick, z=0) однозначно определяют сектор, в котором будет размещена петля — внутреннее пространство тумбочки.

Предположим далее, что полкодержатели относятся к классу произвольного крепежа и их параметры находятся в файле. Для размещения одного из них рассчитана точная координата SZ по оси Z. В этом случае установка полкодержателя выполняется командами:

Polkodergatel.Mount(Polka, LeftWall, 2 * Thick, 0, SZ);

Аналогичным образом устанавливаются все элементы крепежа, и создание скрипта для построения тумбочки считается завершенным. После этого команда построения тумбочки, по сути, становится встроенной командой модуля БАЗИС­Мебельщик и может вызываться с любыми параметрами.

Заключение

Данный цикл статей не ставит своей целью обучение программированию на языке JavaScript. Для этого существуют специальные учебные пособия [3, 4, 5]. Да и сам скрипт можно было бы написать более компактно и изящно. Главная задача публикации — показать, что самостоятельная разработка программ на JavaScript в среде САПР БАЗИС вполне доступна конструкторам и технологам мебельных предприятий. Ведь при внимательном рассмотрении программы оказывается, что она представляет собой последовательность действий, которые необходимо произвести при привычном конструировании мебели в системе БАЗИС. Только они не выполняются в режиме диалога, а записываются по определенным правилам.

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

Скрипты для Базис Мебельщика - прекрасная возможность автоматизировать большое количество операций, действий, функций. Облегчив себе трудовой процесс.

Здесь Вы сможете найти уроки по скриптам, небольшие статьи, готовые решения.

А также принять активное обсуждения различных вопросов и предложений

Поддержка канала на YouTube

Скрипты для Базис Мебельщика

Скрипты для Базис Мебельщика запись закреплена

Продолжение вчерашнего урока!

Строим стол, используя наше окошко свойств для ввода параметров.

Спасибо всем кто поддержал и поддерживает!

Александр Белов

Скрипты для Базис Мебельщика

Скрипты для Базис Мебельщика запись закреплена

Новый урок на канале!

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

Можете поддержать канал и данный курс финансово
Перевод на карту Сбера либо Тинькоф по номеру телефона 89024509542 (Юрий Анатольевич Д.)

Скрипты для Базис Мебельщика

Скрипты для Базис Мебельщика запись закреплена

Аж в АПРЕЛЕ был один внеочередной урок по нанесению кромки

Но только в текстовом виде.

Скрипты для Базис Мебельщика

Скрипты для Базис Мебельщика запись закреплена

Обещался ранее, да все не в масть как говорится было

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

Скрипт - Схема крепежа для Базис Мебельщика 8

Ранее я рассказывал принцип работы и было несколько упоминаний в телеграм канале
t.me/bm_script

В видео также показана и рассказана работа, не без огрехов конечно
Но поэтому я и хочу выпустить в релиз данный скрипт - для того чтобы Вы, конечные пользователи, повлияли на вектор развития и функционал данного скрипта

Предлагаю приобрести данное решение - за скромные 2 000 рублей
Напоминаю что абсолютное большинство скриптов вы покупаете с неограниченной поддержкой - все последующие обновления в рамках оговоренного функционала Вы получаете бесплатно

😁

А в честь праздника (или может даже праздников) - предлагаю 10% скидки, но только два дня - 23 февраля, и 8 марта

Скрипты для Базис Мебельщика

Скрипты для Базис Мебельщика запись закреплена

Приветствую! Новый урок! Знакомство с панелью инструментов и создание интерфейса для собственного скрипта.
Знакомимся с функциями которые управляют процессом работы скрипта, и пишем первый простой интерфейс для управления работой скриптом.

Скрипты для Базис Мебельщика

Скрипты для Базис Мебельщика запись закреплена

Добрый вечер! Новый урок с темой - Контур панели
Мы начнем разбирать основы работы с панелью, именно с контуром.

Хочется спросить у достопочтенной публики - стоит ли параллельно выкладывать закрытый платный курс? Проголосуйте пожалуйста стоит ли и какую тему нам с Вами разобрать?

Максим Титов

Скрипты для Базис Мебельщика

Скрипты для Базис Мебельщика запись закреплена

Добрый субботний вечер! Новый урок, Новая тема!

😊

Первый урок в этом году, уже начинаем разбирать команды самого базиса

😁

И там есть небольшое предложение о конкурсе и что то типо домашнего задания, может у Вас будет время попрактиковаться

Хорошего отдыха! Спасибо за поддержку и Ваше внимание!

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

Скрипты для Базис Мебельщика

Скрипты для Базис Мебельщика запись закреплена

Сегодня суббота? Вечер? Время для урока по изучению скриптов!

Пока мы идем по самым основам - для того что бы конструктор/мебельщик ни разу не встречающийся с программированием мог усвоить самые основные и необходимые понятия, и принципы.

😊

А после - мы будет делать, писать, изобретать вместе - то что интересно, необходимо и занимательно!
Показать полностью.

😀

Принимаю заявки на скрипты для уроков - дабы накопить к практике ряд идей для реализации

Также можете почитать текстовую версию урока

Спасибо Вам и приятного просмотра!

Скрипты для Базис Мебельщика

Скрипты для Базис Мебельщика запись закреплена

Представляю вам третий урок из обучающего курса

😊

В нем мы разберём что такое переменная, как она появляется, что в себе хранит и что с ней можно делать

Базис Скрипт. Знакомство с JS. Переменные

Скрипты для Базис Мебельщика

Скрипты для Базис Мебельщика запись закреплена

В нем мы познакомимся с основными инструментами для написания скриптов, и чуть ближе с Редакторов Скриптов в БМ

Также для всеобщего удобства, и для желающих
Показать полностью.
Существует канал в Telegram - https://t.me/bm_script
Как основное место публикации заметок, коротких видео по скриптам, и пр.
Появилась странице на Boosty
На (https://boosty.to/mebel.dy) данном ресурсе публикуются текстовые версии уроков. а также тут Вы сможете удобно поддержать данный проект, в будущем получить взамен - доступ к закрытым "расширенным" урокам по скриптам, также дополнительные материалы и пр.

Также поддержать проект можно старым добрым переводом на карту по номеру телефона 89024509542 (Юрий Анатольевич Д)

😁

Хочется верить что все не зря, и у Вас уже есть подвижки в изучении нового для себя - ведь главное начать, а там разберемся
Спасибо Вам!

Читайте также: