Базис скрипты руководство

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Рис. 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. Окно свойств скрипта

Рис. 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. Ввод материала корпуса

Рис. 4. Ввод материала корпуса

Аналогичным образом определяем группу для задания материала задней стенки:

BackWall = Prop.NewGroup(‘Задняя стенка’);

MatBackWall = BackWall.NewMaterial(‘Материал’);

Последняя группа свойств определяет параметры двери:

Door = Prop.NewGroup(‘Дверь’)

MatDoor = Door.NewMaterial(‘Материал’);

KrDoor = Door.NewButt(‘Кромка’);

Petli = Door.NewFurniture(‘Петли’);

Назначение первых трех команд очевидно. Четвертая команда активирует стандартный диалог выбора фурнитуры (рис. 5).

Рис. 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 лет назад
Что такое скрипты?

Читать далее

Начиная с 10-й версии Базис-Мебельщик поддерживает отладку скриптов через Visual Studio Code в ОС Microsoft Windows 7 и выше. Для установки Visual Studio Code перейдите по ссылке https://code.visualstudio.com/download и выберите загрузку для Windows. После загрузки откройте установщик и следуйте инструкциям по установке.

Данная страница поможет вам настроить Visual Studio Code для отладки скриптов в модуле Базис-Мебельщик.

Общие сведения

Настройка конфигурационного файла

Точки останова

Процесс отладки

  • Пошаговая отладка
  • Просмотр значений и выражений

Вопросы и ответы

Общие сведения

Процесс отладки призван ускорять поиск ошибок в скрипте путем остановки скрипта в нужном месте и просмотра данных.
Редактор Visual Studio Code позволяет отлаживать некоторые программы и скрипты с помощью расширений. Одним из таких расширений является bazis-debug, которое позволяет отлаживать скрипты в модуле Базис-Мебельщик.

Для отладки скриптов в Visual Studio Code необходимо:

  1. Установить Visual Studio Code и расширение Базис-Отладчик. Рекомендуем ознакомиться с инструкцией «Настройка VSCode для редактирования скриптов».
  2. Настроить файл конфигурации.

После выполнения всех действий можно приступать непосредственно к отладке.

Настройка конфигурационного файла

Для отладки скрипта в Visual Studio Code вам необходимо настроить файл конфигурации launch.json. Этот файл содержит настройки взаимодействия отладчика Visual Studio Code и модуля Базис-Мебельщик. Файл конфигурации можно автоматически сгенерировать, для этого выполните следующие действия:

  1. Откройте вкладку «Отладка»debugicon
  2. Нажмите кнопку «Открыть launch.json»gear. Если файл конфигурации отсутствует, он будет создан в открытой папке.
  3. Добавьте новую конфигурацию. Для отладки скриптов в модуле Базис-Мебельщик выберите Базис.
  4. Настройте файл конфигурации, или воспользуйтесь стандартными сгенерированными настройками.

Основные параметры файла конфигурации:

  • type — тип среды отладки. Используемое значение — bazis.
  • request — тип запуска отладчика. Используемое значение — launch.
  • name — название конфигурации. Используется для отображения в окне отладки. По умолчанию Запустить программу.
  • program — полный путь к файлу запускаемого скрипта. По умолчанию ${file} — текущий открытый файл в редакторе.
  • stopOnEntry — параметр, указывающий, приостанавливать ли скрипт во время вхождения на первой строке. По умолчанию false.
  • noDebug — запуск скрипта без отладки. По умолчанию false.
  • args — дополнительные аргументы, передаваемые в Базис-Мебельщик. По умолчанию [].
  • sourceMaps — использовать Javascript source maps (Необходимо для отладки Typescript). По умолчанию false.
  • port — порт отладки. По умолчанию 5858.
  • address — сетевой адрес компьютера. По умолчанию localhost.
  • timeout — время (в мс), в течение которого ждать подключения. По умолчанию 10000.

Точки останова

Точки останова позволяют остановить скрипт во время выполнения и посмотреть значения переменных, для определения правильности выполнения скрипта. Строка кода, на которой стоит точка останова, будет выполняться следующей.
Чтобы установить точку останова, поставьте курсор на нужную строку и нажмите F9, либо нажмите ЛКМ возле номера строки.

breakpoints
Также точке останова можно задать условие, при этом отладчик остановится на ней только тогда, когда условие равно true. Пример: переменной bar установили значение 45. Если после определения переменной поставить точку останова и задать ей условие bar > 100, то программа в этой точке никогда не остановится. Если поставить условие bar < 100, то программа всегда будет останавливаться в этой точке.

conditional_breakpoints

Процесс отладки

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

  1. Откройте скрипт, который хотите отладить (если у вас параметр program равен ${file})
  2. Установите точки останова
  3. Перейдите на вкладку «Отладка»debugicon
  4. Нажмите кнопку «Начать отладку».
    Если параметр stopOnEntry равен false и не активна ни одна точка останова, то скрипт просто выполнится, как будто был запущен в редакторе скриптов в приложении.

примечание:

Для запуска отладки вместо выполнения пунктов 3 и 4 можно нажать кнопку F5.

Пошаговая отладка

Для перехода к следующему действию в скрипте нажмите кнопку «Шаг с обходом» F10 f10 , для пошаговой отладки метода (захода внутрь) нажмите кнопку «Шаг с заходом» F11 f11.

step_by_step_debugging

Просмотр значений и выражений

В секции «Контрольное значение» вы можете просмотреть значения переменных или выражений. Для добавления выражения нажмите кнопку «Добавить выражение» в секции «Контрольное значение» и введите выражение в появившееся окно для ввода. Внимание: НЕ следует использовать оператор присваивания = в секции просмотра выражений, это перезапишет переменную.

watches

Вопросы и ответы

  • В: У меня в скрипте вместо кириллицы отображаются непонятные символы.
    О: Это проблемы с кодировкой. Следует пересохранить файл в кодировке UTF-8 (с BOM).
    encoding

  • В: В какой папке следует хранить конфигурационный файл launch.json?
    О: Мы советуем хранить конфигурационный файл в корневой папке скриптов. В Visual Studio Code есть встроенный проводник explorer. Он показывает все файлы и папки, находящиеся в корневой открытой папке, и позволяет создать новые файлы и папки.

  • В: Если я сохраню файл скрипта в кодировке UTF-8(с BOM), смогу ли я корректно запустить скрипт в предыдущих версиях модуля?
    О: Да, если файл в формате js. Если файл в формате ts, то при отладке будет скомпилирован файл с таким же названием, но расширением js, который вы также сможете использовать в предыдущих версиях модуля.

Изменения в скриптах в системе Базис:

Общие сведения:

  1. Здесь представлены обновления и дополнения функционала скриптов
    в следующем формате: текст, описывающий изменение функционала и код в формате
    файла определений TypeScript.
  2. Изменения в экспериментальном файле определений
    experimental.d.ts
    (в расширении VSCode) здесь не описываются.

Важные изменения

Базис 10. Обновление. Май 2018

Базис 10. Обновление. Январь 2018

Базис 10. Обновление. Июль 2017

Базис 10. Первый релиз. Июнь 2017


Важные изменения:

  1. Базис 10. Обновление. Январь 2018 — developerApiVersion и apiVersion;
  2. Базис 10. Первый релиз. Июнь 2017 — Схемы крепежа;

Базис 10. Обновление. Май 2018:

Обновлено автодополнение для 2D элемента:

interface Elem2D {
    ElType: ElementType;
    IsLine(): boolean;
    AsLine(): Line2D;
    IsCircle(): boolean;
    AsCircle(): Circle2D;
    IsEllipse(): boolean;
    AsEllipse(): Ellipse2D;
    IsArc(): boolean;
    AsArc(): Arc2D;
    IsList(): boolean;
    AsList(): Contour2D;
    ObjLength(): number;
}

Обновлено автодополнение для объекта «кромка»:

interface PanelButt {
    ElemIndex: number;
    Sign: string;
    Material: string;
    Thickness: number;
    Width: number;
    ClipPanel: boolean;
    Overhung: number;
    Allowance: number;
    CutIndex: number;
    Profile: Contour2D;
}

Добавлена функция выбора материала из базы.

interface Action3D {
    ChooseMaterial(): string;
}

Добавлены функции для извлечения имени и кода материала из полного имени материала

function ExtractMatName(material: string): string;
function ExtractMatCode(material: string): string;

Базис 10. Обновление. Январь 2018:

Добавлена функция поворота камеры

function OrientCamera(dir: Vector);

Добавлена функция замены фурнитуры

interface Action3D {
    ReplaceFurniture(Old: string[], New: InfFurniture[], Fasteners: Object3[]);
}

Добавлено свойство артикула модели

interface FurnArticle{
    Name: string
    NameWithCode(): string;
    Code: string;
    FurnType: string;
    Author: string;
    Subject: string;
    Enterprise: string;
    Notes: string;
    OrderCode: string;
    OrderName: string;
    DatumMode: DatumMode;
}

var Article: FurnArticle;

Добавлена функция расстановки позиций

enum FurnPositionMode{
    All = 0,
    New = 1,
    Check = 2
}
interface Action3D {
    ArrangePositions(Mode: TFurnPositionMode, Model: List3D): boolean;
}

Добавлены функции создания модели/фурнитуры/фрагмента и функция отмены изменений, сделанных в скрипте

 interface Action3D {
    NewModel();
    NewFurniture();
    NewFragment();

    Revert();
 }
  1. Исправлена установка схем крепежа из скриптов.
    Теперь схемы ставятся через поле выбора фурнитуры (функция MountScheme).
  2. Добавлена установка секций из скриптов через поле выбора фурнитуры (функция MountBox)
  3. Для поля выбора фурнитуры
    • Добавлен фильтр по типу монтирования
    • Добавлено свойство только для чтения, возвращающее тип монтирования выбранной фурнитуры
interface InFurniture extends InControl {
    MountScheme(panel1: Panel, panel2: Panel, FurniturePosition: FurniturePosition, BasisPoint: Vector): Object3;
    MountBox(Position: Vector, Size: Vector, axisZ: Vector, axisY: Vector): Object3;
    DatumModeFilter: DatumMode;
    DatumMode: DatumMode;
}

interface InfFurniture {
    MountScheme(panel1: Panel, panel2: Panel, FurniturePosition: FurniturePosition, BasisPoint: Vector): Object3;
    MountBox(Position: Vector, Size: Vector, axisZ: Vector, axisY: Vector): Object3;
    DatumModeFilter: DatumMode;
    DatumMode: DatumMode;
}

declare enum FurniturePosition {
    Inside,
    Outside,
    Up,
    Down
}

declare enum DatumMode{
    None,
    Face,
    FaceFace,
    FaceButt,
    FaceEdge,
    ParallelFaces,
    Box,
    Scheme
}

Только для InfFurniture
(недоступно для элемента выбора фурнитуры на динамической панели)
:

  1. Добавлено сохранение параметров фурнитуры в строку и извлечение
    параметров фурнитуры из строки.
  2. Добавлено создание объекта фурнитуры только с параметрами толщин.

Добавлен метод выбора фурнитуры и создание объекта, содержащего информацию о
фурнитуре, из корневого свойства (Action.Properties).
Изменено описание корневого свойства скрипта.

interface InfFurniture {
    EncodeToString(): string;
    DecodeFromString(str: string);
    Choose(): boolean;
}

interface Action3D{
    Properties: RootProperties;
}

declare interface RootProperties extends ScriptProperty{
    NewFurnitureValue(): InfFurniture;
}

Добавлено новое свойство developerApiVersion.

ЭТО ВАЖНО: версия Bazis API (system.apiVersion) теперь имеет тип Number и
следует спецификации «Семантического версионирования»
(подробнее на сайте http://semver.org/lang/ru/) в формате ХХУУ,
где ХХ — мажор версия и УУ — минор версия. Начинается с номера 1001.

Минор версия (УУ, в данном случае 01) — увеличивается, когда в API сделаны изменения,
совместимые с предыдущими версиями или добавлены новые функции.
Например: скрипт, написанный в версии 1001, будет работать в версии 1003.
Но не гарантируется, что скрипт, написанный в версии 1003,
будет работать в версии 1001 (например, если функции, используемые в скрипте
были добавлены в версии).

Мажор версия (в данном случае 10) — увеличивается, когда в API сделаны изменения,
несовместимые с предыдущей версией. Например: скрипт, написанный в версии 10ХХ
с большой долей вероятности может неправильно работать в версии 11ХХ и наоборот.

interface System{
    apiVersion: number;
    developerApiVersion: number;
}

Добавлено свойство Scrollable у типа ScriptGroupProperty (только для форм).
При значении true добавляет на компонент типа «группа» полосы прокрутки;

interface ScriptGroupProperty{
    Scrollable: boolean;
}

Добавлено свойство IsNotStandart для объекта TovarItems (для Салона).
Возвращает true, если объект не стандартный.

interface ScItemTovarList{
    IsNotStandart: boolean;
}

Добавлено свойство IsOwner для типа Object3.
Возвращает true, если объект obj (параметр функции) является родителем
текущего объекта, то есть текущий объект вложен в объект obj. Метод работает
рекурсивно, то есть идет по всему дереву модели вплоть до корневого элемента
(самой модели). У всех объектов в модели IsOwner(Model) возвращает true

interface Object3{
    IsOwner(obj: Object3): boolean;
}

Добавлено описание 2Д элементов.

declare enum ElementType{
    Unknown,
    Line,
    Arc,
    Circle,
    List,
    Ellipse
}
declare interface Elem2D{
    ElType: ElementType;
    IsLine(): boolean;
    AsLine(): Line2D;
    IsCircle(): boolean;
    AsCircle(): Circle2D;
    IsEllipse(): boolean;
    AsEllipse(): Ellipse2D;
    IsArc(): boolean;
    AsArc(): Arc2D;
    IsList(): boolean;
    AsList(): Contour2D;
}
declare interface Line2D extends Elem2D{
    Pos1: Point;
	Pos2: Point;
}
declare interface Arc2D extends Elem2D{
    Pos1: Point;
    Pos2: Point;
	Center: Point;
	ArcDir: boolean;

}
declare interface Circle2D extends Elem2D{
    Center : Point;
    CirRadius: number;
	Dir: boolean;
}
interface Ellipse2D extends Elem2D{
    Center: Point;
    MajorRadius: number;
    MinorRadius: number;
    MajorAxisAngle: number;
    Dir: boolean;
}

interface Contour2D {
	Objects: Elem2D[];
}

Базис 10. Обновление. Июль 2017:

Добавлен импорт-экспорт SVG

function NewImportExport(): ImportExport;

interface ImportExport{
    SVG: ImportExportSVG;
}

interface ImportExportSVG{
    CurveQuality: number;
    GroupElems: boolean;
    Save(filename: string, contour: Contour2D): boolean;
    Load(filename: string, contour: Contour2D): boolean;
}

Добавлены новые функции для работы с файлами.
Функция require в объекте System переименована в include

interface System {
    include(filename: string);
    askFolder(caption?: string, defaultFolder?: string): string;
    getFileName(filename: string): string;
    getFileNameWithoutExtension(filename: string): string;
    askFileNameSave(ext: string): string;
}

Добавлена функция рекурсивного добавления эквидистанты контура

interface Contour2D{
    AddEquidistantRecursive(contour: Contour2D, offset: number, Side: boolean, Rounding: boolean);
}

Добавлены загрузка сохранение и имя файла модели

interface Action3D {
    LoadModel(filename: string): boolean;
    SaveModel(filename: string);
    ModelFilename: string;
}

Добавлено форматирование имени материала

declare function FormatMatName(matName: string): string;

Базис 10. Первый релиз. Июнь 2017:

Добавлена функция создания полуфабриката и тонирование изображения

interface Action3D {
    RayTraceScene();
    OnRayTraceFinished: Function;
}

declare function AddDraftBlock(name: string): Block;

Добавлен анализ модели

declare enum ErrorType {
    ObjIntersection,
    FastIntersection,
    FastIncorrect,
    MatNotExists,
    MatOutOfStock,
    PanelTooLarge,
    PlasticTooLarge,
    PanelNotFixed

}

declare interface InspectorError {
    ErrorType: ErrorType;
    ErrorObjectsCount: number;
    ErrorObjects: Array<Object3>;
    ErrorMessage: string;
    ObjectsNames: string;

}

declare interface InspectorOptions {
    ObjIntersectionAnalyze: boolean;
    FastIntersectionAnalyze: boolean;
    FastIncorrectAnalyze: boolean;
    PanelNotFixedAnalyze: boolean;
    PanelTooLargeAnalyze: boolean;
    PlasticTooLargeAnalyze: boolean;
    MatNotExistsAnalyze: boolean;
    MatOutOfStockAnalyze: boolean;

}

declare interface ModelInspector {
    Run(Model: List3D);
    ErrorList: Array<InspectorError>;
    Options: InspectorOptions;

}

declare function NewModelInspector(): ModelInspector;

Добавлено свойство элемента товара для скриптов в Салоне.

declare interface ScItemTovar {
    Article: string;
    Name: string;
    Material: string;
    GroupMaterial: string;
    TypeElement: string;
    ObjList: List3D;
}

declare interface ScItemTovarList {
    Items: Array<ScItemTovar>;
    Count: number;
    TovarName: string;
    TovarArticul: string;
    FindByName(name: string, CaseSensitive: boolean): ScItemTovar;
}

declare var TovarItems: ScItemTovarList;

Схемы крепежа:

  • Удалено описание интерфейсов FurnitureScheme и FurnitureSchemes.
  • Удалены функции OpenFurnitureScheme, OpenFurnitureSchemes, NewFurnitureScheme.

Понравилась статья? Поделить с друзьями:
  • Дексалгин 500 таблетки инструкция по применению цена
  • Духовой шкаф куперсберг инструкция по применению электрический встраиваемый
  • Как отключить подписку старт на айфоне пошаговая инструкция
  • Бравекто 2 таблетки в упаковке новинка инструкция
  • Игрушка поющий кактус инструкция по применению