Несмотря на многообразие возможностей и развитость инструментов проектирования в современных САПР, у любого пользователя всегда найдутся проблемы и задачи, для решения которых их будет недостаточно. Здесь может быть несколько различных вариантов: либо используемая система предлагает слишком «громоздкий» способ, либо она неэкономична в плане компьютерных ресурсов, либо требуется приобретение достаточно дорогих программных модулей, предназначенных для решения более общих проблем. Одним словом, причин для «неудовлетворенности» работой любой САПР может быть достаточно много, несмотря на то, что в целом существенных претензий к ней нет. Просто по мере приобретения профессионального опыта и опыта автоматизированного проектирования пользователь часто «вырастает» из используемой системы. Возникает противоречие: он понимает, как можно быстро и «красиво» решать стоящие перед ним задачи, но не находит для этого адекватных инструментов.
Перейти на другую систему — не вариант. Даже в том случае, если в ней окажутся инструменты для эффективного решения некоторой конкретной задачи, через какоето время возникнут другие, и всё вернется на круги своя. Ни одна система не сможет учесть пожелания и запросы всех своих потенциальных пользователей. Затраты же на адаптацию к новой системе и перевод в нее уже наработанных проектов могут оказаться весьма существенными. Хорошо, если предприятие небольшое, а конструктор и технолог — это один и тот же человек. В противном случае может оказаться, что далеко не всем сотрудникам новая система по нраву…
Гораздо более перспективным является другой вариант: «найти» в системе средства расширения функциональности и реализовать с их помощью свои идеи. Безусловно, для этого придется изучить основы программирования, но, как известно, дорогу осилит идущий. Тем более что это не такая уж «страшная» штука, и в этом автор постарается убедить, по крайней мере, одну часть великого сообщества инженеровпроектировщиков — конструкторов и технологов мебельных предприятий. Если же в используемой САПР нет никаких средств расширения функциональности или хотя бы перспектив их появления — это может говорить только об одном: критерии выбора системы были в свое время недостаточно продуманы. Но это тема отдельного разговора.
Параметризация — путь к успеху
Специфика мебельной промышленности заключается в том, что она имеет дело непосредственно с заказчиком, запросы которого в настоящее время смещаются в сторону высокого качества, индивидуального дизайна, быстрого получения заказанных изделий и приемлемой стоимости. В условиях конкуренции мебельщиков он обязательно найдет себе поставщика, который ему все это сможет предложить. Хорошо, чтобы таким поставщиком оказалось ваше предприятие. Необходимым условием для этого является оптимизация всех проектных операций — перевод их в максимально автоматический режим выполнения.
Одной из особенностей проектирования корпусной мебели является необходимость выполнения целого ряда типовых операций для различных изделий, например установка полкодержателей, штанг или пантографов, фрезеровка кухонных фасадов, облицовка кромок панелей. При этом на разных предприятиях алгоритмы их выполнения могут быть различными. Это зависит от технологии изготовления, используемого оборудования, особенностей применяемой фурнитуры и других моментов. Реализовать все эти нюансы в коммерческой САПР, ориентированной на массовое применение, невозможно. Значит, «спасение утопающих — дело рук самих утопающих».
Именно параметризация предоставляет неограниченные возможности для автоматизации специфических проектных операций. Важным ее преимуществом является то, что разработка параметрических моделей, алгоритмов и пользовательских диалогов осуществляется штатными средствами базовой САПР — теми привычными средствами, с которыми пользователь работает в режиме диалога при традиционном проектировании изделий. Меняется только способ обращения к ним.
Параметризация позволяет выполнять сложные проектные операции и вносить изменения в модель несколькими простыми движениями. Это существенно экономит время создания проектов и вносит определенную упорядоченность в работу конструктора или технолога.
Скриптовые языки программирования
Как отмечалось выше, для того чтобы в полной мере ощутить всю прелесть параметризации, необходимо научиться программировать. В системе БАЗИС средством расширения функциональности является скриптовый язык программирования JavaScript.
Скриптом, как известно, называется некоторый программный сценарий выполнения определенной последовательности действий. Синтаксис и семантика команд в скрипте определяются соответствующей предметной областью. Другими словами, «мебельные» скрипты системы БАЗИС оперируют объектами, из которых создается корпусная мебель, — панелями, крепежной и декоративной фурнитурой, конструкционными и облицовочными материалами и т.д. При этом команды языка соответствуют привычным проектным операциям, например установить панель в заданном месте, облицевать торец панели, скрепить две панели определенным образом. Помимо этого скриптовый язык включает простые алгоритмические структуры управления, такие как присвоение значений, ветвления и циклы, а также ряд вспомогательных функций.
Скриптовые языки являются прекрасным инструментом для людей, которые только начинают изучать программирование. Для написания неплохих прикладных программ достаточно знать только структуру языка и, естественно, уметь работать в базовой САПР.
Рис. 1. Проектируемая модель
Скриптовые языки идеально сочетают простоту программирования с высокой гибкостью. К тому же скрипты имеют открытый код, то есть всегда можно взять разработанный кемто модуль и без особого труда подстроить его для решения собственных задач.
В силу того что в скриптах САПР БАЗИС практически отсутствуют какиелибо ограничения на доступ к возможностям системы, уровню вложенности формируемых объектов и сложности геометрических форм, можно создавать программы любого уровня подробности и детализации, вплоть до автоматического построения целого мебельного ансамбля.
Однако изза большого количества возможных вариаций необходимы определенные ограничения на сложность скриптов, компромиссные решения между усложнением программы и разделением ее на более простые фрагменты.
В системе БАЗИС разработана универсальная среда создания параметрических моделей. Тем не менее следует четко представлять себе, что первостепенное значение имеют всетаки знания предметной области и навыки проектирования. Скрипты — это мощный инструмент, который при грамотном использовании открывает практически неограниченные возможности для повышения производительности труда конструкторов и технологов.
Язык JavaScript настолько прост в изучении, что можно немедленно приступить к написанию болееменее сложного скрипта.
Как написать свой скрипт
Для демонстрации принципов создания скриптов разработаем программу построения параметрической модели тумбочки, показанной на рис. 1. Программу можно набрать в любом текстовом редакторе, сохранить в файле и загружать по мере необходимости. Однако более удобным является использование встроенного редактора (рис. 2).
Рис. 2. Окно встроенного редактора скриптов
Создадим скрипт для построения тумбочки из двух основных функций:
MakeProperties() — определение параметров;
Make() — построение тумбочки с заданными параметрами.
Основное тело скрипта будет выглядеть так:
FileOptions = ‘Настройки.xml’;
MakeProperties();
Action.Properties.Load(FileOptions);
Action.OnFinish = function() {
Action.Properties.Save(FileOptions);
}
BtnMake = NewButtonInput(‘Закончить’);
BtnMake.OnChange = function() {
Make();
Action.Finish();
}
Make();
Action.Continue();
Дадим краткие комментарии к командам:
- строка FileOptions = ‘Настройки.xml’; — задает имя файла для сохранения текущих значений параметров тумбочки;
- вызов функции MakeProperties(); — активирует окно ввода параметров построения;
- Action.Properties.Load(FileOptions); — загрузка заданных параметров из файла с именем FileOptions в активный скрипт, который определяется ключевым словом Action;
- свойство OnFinish активного скрипта определяет действие, которое необходимо выполнить после построения объекта с заданными параметрами. В данном случае они будут сохраняться для последующего использования;
- строка BtnMake = NewButtonInput(‘Закончить’); — позволяет создать кнопку для управления построением тумбочки. Последующие строчки определяют действия, выполняемые при нажатии на эту кнопку: построение тумбочки — Make(), завершение работы — Action.Finish(), то есть результат построения добавляется в текущую модель редактора БАЗИСМебельщик, после чего работа скрипта заканчивается. После этого построенная модель тумбочки становится частью проектируемого изделия, к которой применимы любые операции графического редактора;
- Make(); — построение тумбочки с текущими параметрами в области скрипта;
- Action.Continue(); — ожидание реакции пользователя. К моменту выполнения данной команды на экране монитора расположены модель тумбочки, окно ввода параметров и кнопка Закончить. Пользователь может изменять те или иные параметры и визуально оценивать результаты перестроения. При получении требуемого варианта он нажимает на кнопку, и модель передается в БАЗИСМебельщик.
Это весь код основной части скрипта.
Функция ввода параметров
Для ввода параметров скрипта используется стандартное окно свойств редактора БАЗИСМебельщик, которое состоит из двух столбцов: первый — название параметра, второй — его значение. Конфигурацию окна, то есть необходимый набор параметров и их значений, определяет пользователь при помощи обращения к определенным функциям (рис. 3).
Рис. 3. Окно свойств скрипта
Описание любой функции начинается с ключевого слова и ее имени. В рассматриваемом случае — function MakeProperties(). Далее создается объект, соответствующий окну свойств, в который последовательно добавляются нужные свойства:
Prop = Action.Properties;
Image = Prop.NewImage(‘Схема изделия’, ‘Схема.jpg’);
Image.MaxHeight = 250;
Результатом выполнения этих команд будет отображение окна свойств и вывод свойства с именем Схема изделия и значением в виде изображения с максимальной высотой 250 пикселов, загруженного из файла Схема.jpg.
Основными конструктивными размерами тумбочки являются габариты, отступ от уровня пола до дна и размер фаски под плинтус на боковинах. Для формирования соответствующих объектов задаются команды:
Dl = Prop.NewNumber(‘Ширина’, 500);
Gl = Prop.NewNumber(‘Глубина’, 400);
H = Prop.NewNumber(‘Высота’, 700);
Hd = Prop.NewNumber(‘Размер до дна’, 50);
Fas = Prop.NewNumber(‘Размер фаски’, 50);
В этом случае, например, ширина тумбочки будет задаваться в строке с соответствующим параметром, а ее значение по умолчанию равняться 500 мм. В программу значение ширины передается через свойство Value объекта Dl, то есть Dl.Value.
Далее определяем материал панелей корпуса и внутренней полки, а также облицовочные материалы для видимых и невидимых кромок панелей, объединяя эти свойства в группу с названием Корпус:
Korpus = Prop.NewGroup(‘Корпус’)
MatKorp = Korpus.NewMaterial(‘Материал корпуса’);
KrVidimKorp = Korpus.NewButt(‘Видимая кромка’);
KrNotVidimKorp = Korpus.NewButt(‘Невидимая кромка’);
По умолчанию в качестве материалов будут установлены те материалы, которые определены в системе БАЗИСМебельщик в качестве текущих для построения. Для их изменения необходимо соответствующую строку сделать активной и нажать кнопку выбора. После этого появится стандартное окно со списком материалов, в котором назначается новый текущий материал (рис. 4).
Рис. 4. Ввод материала корпуса
Аналогичным образом определяем группу для задания материала задней стенки:
BackWall = Prop.NewGroup(‘Задняя стенка’);
MatBackWall = BackWall.NewMaterial(‘Материал’);
Последняя группа свойств определяет параметры двери:
Door = Prop.NewGroup(‘Дверь’)
MatDoor = Door.NewMaterial(‘Материал’);
KrDoor = Door.NewButt(‘Кромка’);
Petli = Door.NewFurniture(‘Петли’);
Назначение первых трех команд очевидно. Четвертая команда активирует стандартный диалог выбора фурнитуры (рис. 5).
Рис. 5. Окно выбора фурнитуры
Далее формируем профиль и контур фрезерования. Профиль (сечение) фрезы представляет собой замкнутый контур, который создается средствами редактора БАЗИСМебельщик и записывается в файл в виде фрагмента. Следовательно, для определения профиля фрезы надо вызвать диалог открытия файла. После выбора нужного файла его имя будет присвоено свойству Value объекта фурнитуры Freza и отображено в строке Профиль фрезы.
Это делается следующей группой команд:
Freza = Dver.NewSelector(‘Профиль фрезы’);
Freza.OnClick = function() {
Freza.Value = system.askFileName(‘frw’);
};
Далее переходим к определению контура, по которому будет выполняться фрезерование. В мебельной промышленности фасады с фрезеровкой называют филенчатыми, или, кратко, филенкой. Предположим, что создаваемый скрипт будет иметь возможность формировать четыре типа различных контуров. В этом случае для выбора нужного типа контура надо предусмотреть раскрывающийся список из четырех строк (комбинация символов n является разделителем строк):
TipFilenki = Dver.NewCombo(‘Тип филенки’, ‘Тип1nТип2nТип3nТип4’);
Для построения контура и его позиционирования на фасаде задаются еще два числовых параметра: радиус сопряжения и расстояние от края панели до соответствующей стороны:
OtstupFil = Dver.NewNumber(‘Отступ филенки от края’, 80);
Rad = Dver.NewNumber(‘Радиус сопряжений’, 80);
В завершение определения структуры окна свойств добавим кнопку, которая будет управлять передачей в редактор БАЗИСМебельщик модели построенной тумбочки, а также определим те действия, которые будут выполняться при ее нажатии:
OkBtn = Prop.NewButton(‘Построить’);
OkBtn.OnClick = function() {
Make();
Action.Finish();
}
Данными командами формирование конфигурации окна свойств можно закончить. Однако в этом случае для контроля того, как изменение какоголибо параметра влияет на вид тумбочки, придется нажимать кнопку Построить. Это не очень удобно. Организуем перестроение модели при любом изменении параметров с одновременным анализом их корректности. В качестве примера такого анализа приведем проверку, не превышает ли размер фаски отступа от пола:
Prop.OnChange = function() {
if (Fas.Value > Hd.Value) alert (‘Фаска больше отступа от пола.’)
Make();
}
При некорректном соотношении высоты фаски и отступа от пола вызывается системная функция alert, которая выдает предупреждающее сообщение. Естественно, что для корректной работы скрипта необходимо проверять все взаимозависимые комбинации параметров и выполнять перестроение модели только при отсутствии ошибок.
Рабочая область скрипта
Все построения посредством команд скрипта выполняются в его рабочей области, которая автоматически формируется при запуске скрипта, и по умолчанию параллельно передаются в графический редактор БАЗИСМебельщик. Это далеко не всегда удобно. Так, в рассматриваемом примере построения тумбочки логичнее было бы сначала изменением параметров добиться желаемого результата, а только потом передать модель в редактор.
Для управления рабочей областью скрипта и ее взаимодействия с редактором БАЗИСМебельщик существуют следующие инструменты:
- свойство активного скрипта Action.Continue() — позволяет отобразить содержимое рабочей области скрипта и остановить его выполнение в ожидании реакции пользователя. Если результаты построения правильны, то для их передачи в редактор БАЗИСМебельщик и завершения работы скрипта достаточно выполнить любую команду редактора, например установить панель. Если же правой кнопкой мыши вызвать контекстное меню и в выпадающем списке выбрать строку Отменить команду, то скрипт завершится без передачи информации в редактор. В обоих случаях рабочая область скрипта будет очищена;
- метод активного скрипта Action.Commit() — предназначен для передачи всех объектов, созданных на данный момент из рабочей области скрипта, в область редактора БАЗИСМебельщик. При этом рабочая область скрипта очищается, но скрипт продолжает работать;
- метод активного скрипта Action.Finish() — работает аналогично предыдущему, только он завершает работу скрипта;
- метод активного скрипта Action.Cancel() — завершение работы скрипта с очисткой его рабочей области, но без передачи информации в редактор;
- функция DeleteNewObjects() — очистка рабочей области скрипта.
Заключение
Таким образом, реализация возможности разработки встроенных программ на языке JavaScript позволяет создавать приложения, расширяющие функциональность САПР БАЗИС, интерфейс которых полностью соответствует интерфейсу системы. Для завершения формирования скрипта построения тумбочки осталось только запрограммировать сам процесс построения. Это не более сложная задача, чем программирование интерфейса, но об этом — в следующей статье.
САПР и графика 2`2014
Приветствую!
Меня зовут Юрий, я мебельщик с 2016 года, но во втором поколении. Живу/работаю в небольшом городе Улан-Удэ (тот что за Байкалом). У нас небольшая но гордая фирма по производству корпусной мебели на заказ и изделий из искусственного камня.
В начале неоднозначного 2020 года — находясь в поиске вектора развития своих профессиональных навыков — начал изучение Базис Скриптов. И со временем пришёл к мысли — было бы очень даже хорошо поделиться своими знаниями, и умениями с другими.
Всегда рад Вашим отзывам, мнениям, поддержке, спонсорству.
Но более рад — помогать и подсказывать вам!
Базис Скрипт. Окно Свойств. Скрипт построения типового изделия
В данном уроке мы разберём основные моменты создания интерфейса скрипта в окне свойств, а также напишем скрипт создающий топовой стол
Базис Скрипт. Нанесение кромки на панель с помощью скрипта
Здравствуйте, уважаемые коллеги, мы
продолжаем наш курс по изучению Скриптов в Базис Мебельщике. Сегодня мы разберём
нанесение и работу с кромкой посредством скриптов.
Как мы проходили ранее
– Панель является объектом, включающим в себя ряд свойств, методов и объектов.
Одним
из объектов входящих в панель – является объект Butts – кромка панели
Читать далее
Базис Скрипт. Создание интерфейса, панель свойств, форма
Первое знакомство с панелью свойств, разбираемся как отложить завершение скрипта и создаем элементы управления на панели инструментов
Основы скриптописания — Контур панели
Здравствуйте, уважаемые коллеги, мы продолжаем наш курс по изучению Скриптов в Базис Мебельщике. И сегодня начнём подробнее знакомиться с объектом панели в контексте Базис Скрипта.
Панель в самую первую очередь представляет из себя плоскую геометрическую фигуру — со своим контуром. По умолчанию, да и намного чаще всего остального мы работаем с прямоугольными контурами, без разных углов, без вырезов, отверстий и пр
Читать далее
Базис Скрипт. Основы Построения
Здравствуйте, уважаемые коллеги, сегодня мы продолжаем наш курс по изучению Скриптов в Базис Мебельщике.
Как упоминал я на прошлом уроке — пора нам отойти от каких то фундаментальных, но не столь интересных основ, к более увлекательным, практическим моментам, затрагивающих конкретно функции базиса.
Сегодня мы познакомимся с основами построения, а именно панелей!
Читать далее
Базис Скрипт. Знакомство с JavaScript. Циклы
Здравствуйте, уважаемые коллеги, сегодня мы продолжаем наш курс по изучению
Скриптов в Базис Мебельщике. И тема нашего ролика циклы и ветвления.
В прошлом видео мы остановились на циклах, и сегодня рассмотрим какие циклы
бывают в JavaScript и как они работают.
Читать далее
Базис Скрипт. Знакомство с JavaScript. Ветвления
Здравствуйте, уважаемые коллеги, сегодня мы продолжаем наш курс по изучению Скриптов в Базис Мебельщике. И тема нашего ролика — ветвления
Мы с Вами познакомились с одним из основополагающих элементов программирования — переменная, но данный элемент является лишь частицей, кирпичиком — из которого строится код и программа, а циклы и ветвления это узлы, конструкции, сборки — благодаря чему наш код работает именно так как нам необходимо.
Читать далее
Базис Скрипт. Знакомство с JavaScript. Переменные
Знакомство с редактором скриптов
Здравствуйте!
Сегодня мы познакомимся с инструментами для написания скриптов.
Скрипты как и само программирование в общем — это по сути своей — написание текста, и для работы со скриптами мы можем использовать любой текстовой редактор. Как стандартный, на подобии:
Microsoft Word
Читать далее
Знакомство со Скриптами в Базис Мебельщике
Здравствуйте уважаемые коллеги!
Мы начинаем цикл уроков — посвящённый небольшой функции программы Базис Мебельщик — которая даёт нам очень большие возможности, расширяя наш инструментарий и делая нашу работу проще и комфортнее.
С одним из обновлений Базис Мебельщика 8ой версии — добавили новый пункт меню — Скрипты. Это было больше 10 лет назад
Что такое скрипты?
Читать далее
00:00:11
Shipra Das official
СМОТРЕТЬ
5 дней назад
3 просмотров
#viral #subscribe #ytshorts
00:16:56
oneTechnology
СМОТРЕТЬ
7 лет назад
13 790 просмотров
Базис Мебельщик8 Пример использования скриптов
00:02:20
深夜のお宝BOX
СМОТРЕТЬ
1 год назад
51 271 просмотров
【現役女優限定!】ムチムチ♡豊満美女:40代熟女Ver.
00:00:15
Risky ramadan
СМОТРЕТЬ
1 год назад
50 просмотров