Форум профессиональных мебельщиков PROMEBELclub
 
PROMEBELclub - Форум для мебельщиков: конструкторов, дизайнеров, мастеров, технологов и всех, кто имеет отношение к производству и изготовлению мебели. Программы для конструирования и дизайна мебели. Мебельная литература и обучающие пособия.
 
 

Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты

Меню

Маркет


Ответ
 
Опции темы Опции просмотра
Старый 13.01.2014, 13:22  
БАЗИС 8 - Скрипты
 
Аватар для Igor_482
Igor_482
VIP
Регистрация: 03.09.2008
Сообщений: 174

Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
Версия для печати Отправить по электронной почте
Igor_482 Igor_482 вне форума 13.01.2014, 13:22
Рейтинг: ()

ВНИМАНИЕ! Правила выкладывания скриптов.

1. Если в скрипте нет ссылок на фурнитуру, фрагменты и.т.д то достаточно его упаковать в архив и выложить.

2. Если в скрипте есть ссылки на фурнитуру, фрагменты и т.д. то архив должен содержать папку с самим скриптом и всеми файлами на которые есть ссылки в тексте скрипта.


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

__________________________________________________ _______________

Интересует информация по редактору скриптов в БМ8. Существует ли справочная документация и примеры использования скриптов в БМ8. Какие возможности дает данная функция? Владеющим информацией по данному вопросу просьба поделиться ею.

Новое в скриптописании для БМ:

Скрытый текст

while (true)
Вот полный список новшеств, добавленных в скрипты с момента их выхода:

14 декабря 2014

Добавлена поддержка эластичных блоков

List3D : {
IsElastic: new HDefinition("?Boolean:", 'Являетсяли объект эластичным'),
ElasticResize: new HDefinition("?Vector:newSize", 'Растянуть объект до требуемых размеров'),
}

27 ноября 2014

Вспомогательные геометрические алгоритмы, реализованы в глобальном объекте geometry

geometry : new HDefinition("Geometry2D", 'Вспомогательные геометрические функции'),

Geometry2D : {
Intersect: new HDefinition("?Array.<Point>:elem1,elem2", 'Вычислить точки пересечения двухмерных элементов'),
Compare: new HDefinition("?Boolean:elem1,elem2", 'Сравнить элементы'),
Distance: new HDefinition("?Number:elem1,elem2", 'Найти кратчайшее расстояние между элементами'),
Area: new HDefinition("?Number:contour", 'Найти площадь контура')
}

17 ноября 2014

Работа с пользовательскими свойствами

Object3 : {
UserPropCount: new HDefinition("Number", 'Количество пользовательских свойств'),
UserProperty: new HDefinition('Array.<Object>', 'Значение свойства по его имени или индексу'),
UserPropertyName: new HDefinition('Array.<String>', 'Названия свойств')
}

Новые элементы управления на панели свойств

ScriptProperty: {
NewColor: new HDefinition("?ScriptColorProperty:'Название'", 'Создать свойство типа цвет'),
NewSeparator: new HDefinition("?ScriptProperty", 'Создать разделитель')
}

ScriptColorProperty: {
Value: new HDefinition("Number")
},

----------------------------------------------------------------------------------------------------
29 сентября 2014

system.apiVersion = 90 -> Bazis9
system.apiVersion = 85 -> Bazis8

----------------------------------------------------------------------------------------------------
15 сентября 2014

Contour2D : {
Min: new HDefinition("Point", 'Левый нижний угол охватывающего прямоугольника'),
Max: new HDefinition("Point", 'Правый верхний угол охватывающего прямоугольника'),
AddEquidistant : new HDefinition("?undefined:contour,offset,false,false", 'Добавить эквидистанту контура. Последние 2 параметры отвечают за направление и скругление')
}

ScriptProperty: {
OnDeactivate : new HDefinition("Function", 'Обработчик деактивации свойства или меню'),
OnValueValidate : new HDefinition("Function", 'Проверка корректности значения'),
ValueValid: new HDefinition("Boolean", 'Флаг корректности введенного значения, выставляется обработчиком OnValueValidate'),
Validate: new HDefinition("?Boolean:", 'Проверить значение свойства и вложенных свойств')
}

----------------------------------------------------------------------------------------------------
2 сентября 2014

ScriptProperty: {
NameEditable: new HDefinition("Boolean", 'Разрешить редактирование имени (для создания таблиц)'),
NewSeparator: new HDefinition("?ScriptProperty", 'Создать разделитель')
}

----------------------------------------------------------------------------------------------------
9 августа 2014

Добавлены подменю в кнопки

InButton : {
NewSubMenu : new HDefinition('?InButton:"Меню"', 'Создать подменю'),
Combo: new Definition("Boolean", 'Отдельная стрелка для подменю')
},

Добавлены всплывающие меню и цвет фона для всех свойств. Созданы обработчики активации и изменения свойства.
Прежнее событие OnChange срабатывало не только при изменении самого параметра, но и при изменении дочерних свойств.
OnValueChange срабатывает только при изменении значения свойства.

ScriptProperty: {
BackColor: new HDefinition("Number", 'Цвет фона'),
PopupMenu: new HDefinition("ScriptMenu", 'Всплывающее меню'),
OnActivate : new HDefinition("Function", 'Обработчик активации свойства пользователем'),
OnValueChange : new HDefinition("Function", 'Обработчик изменения свойства')
Tag: new HDefinition("Number", 'Пользовательское число'),
}

Добавлено выпадающее меню:

ScriptProperty: {
DropDownMenu: new HDefinition("ScriptMenu", 'Выпадающее меню')
}

----------------------------------------------------------------------------------------------------
21 апреля 2014:

Добавлены свойства и методы:

ScriptMaterialProperty: {
Width: new HDefinition("Number", "Ширина листа"),
}

ScriptButtProperty: {
Thickness: new HDefinition("Number", "Толщина кромки"),
Width: new HDefinition("Number", "Ширина ленты"),
}

Contour2D : {
IsPointInside: new HDefinition("?Boolean:x,y", "Находится ли точка внутри контура?"),
IsInContour: new HDefinition("?Boolean:contour", "Находится ли контур внутри другого?"),
IsClosedContour: new HDefinition("?Boolean:", "Является ли контур замкнутым?"),
IsContourRectangle: new HDefinition("?Boolean:", "Является ли контур прямоугольным?"),
OrderContours: new HDefinition("?Boolean:true", "Упорядочить элементы контура в одном направлении")
}


----------------------------------------------------------------------------------------------------
6 февраля 2014

Реализовано подключение и вызов функций COM и OLE объектов

ScriptProperty : {
Expanded: new HDefinition("Boolean", 'Развернуты ли вложенные свойства')
}

Добавлен метод:
NewCOMObject: new HDefinition("?IDispatch:'CLSID'", 'Создать новый COM объект по его типу')
[свернуть]

Нажмите на изображение для увеличения
Название: Базис.jpg
Просмотров: 1497
Размер:	36.4 Кб
ID:	86248

Обратите внимание на полезные ответы в этой теме!


Последний раз редактировалось systland; 26.12.2017 в 11:52.. Причина: Добавил объявление.
Просмотров: 1392045
Ответить с цитированием Вверх
6 пользователя(ей) сказали cпасибо:
Старый 09.04.2015, 15:31   #771
yavsochi
Местный
 
Аватар для yavsochi
 
Регистрация: 28.07.2008
Адрес: Краснодарский край, г. Сочи
Сообщений: 350
Сказал(а) спасибо: 1,107
Поблагодарили 554 раз(а) в 178 сообщениях
Вес репутации: 338
yavsochi - это имя известно всемyavsochi - это имя известно всемyavsochi - это имя известно всемyavsochi - это имя известно всемyavsochi - это имя известно всемyavsochi - это имя известно всем
По умолчанию

Цитата:
Подскажите, можно ли прописать скрипт для просчета кромки в изделии?
Цитата:
Это с успехом делает модуль Смета.
Скорее всего у человека нету сметы, вот и хочет скриптом это реализовать!!!
__________________
yavsochi вне форума   Ответить с цитированием Вверх
Старый 09.04.2015, 15:37   #772
Сергей Валерьевич
Местный
 
Аватар для Сергей Валерьевич
 
Регистрация: 20.07.2010
Адрес: Семикаракорск
Сообщений: 1,003
Сказал(а) спасибо: 2,638
Поблагодарили 1,965 раз(а) в 572 сообщениях
Вес репутации: 751
Сергей Валерьевич репутация неоспоримаСергей Валерьевич репутация неоспоримаСергей Валерьевич репутация неоспоримаСергей Валерьевич репутация неоспоримаСергей Валерьевич репутация неоспоримаСергей Валерьевич репутация неоспоримаСергей Валерьевич репутация неоспоримаСергей Валерьевич репутация неоспоримаСергей Валерьевич репутация неоспоримаСергей Валерьевич репутация неоспоримаСергей Валерьевич репутация неоспорима
По умолчанию

Цитата:
Скорее всего у человека нету сметы, вот и хочет скриптом это реализовать!!!
еще количество кромки можно в раскрое посмотреть, в информации о текущем раскрое.
__________________
Опыт - это то, что получаешь, не получив того, что хотел.
Сергей Валерьевич вне форума   Ответить с цитированием Вверх
Старый 09.04.2015, 23:36   #773
DTioutiou
VIP
 
Аватар для DTioutiou
 
Регистрация: 05.05.2008
Адрес: Коломна
Сообщений: 10,452
Сказал(а) спасибо: 14,824
Поблагодарили 20,865 раз(а) в 5,387 сообщениях
Вес репутации: 5413
DTioutiou репутация неоспоримаDTioutiou репутация неоспоримаDTioutiou репутация неоспоримаDTioutiou репутация неоспоримаDTioutiou репутация неоспоримаDTioutiou репутация неоспоримаDTioutiou репутация неоспоримаDTioutiou репутация неоспоримаDTioutiou репутация неоспоримаDTioutiou репутация неоспоримаDTioutiou репутация неоспорима
По умолчанию

Цитата:
Сообщение от Сергей Валерьевич Посмотреть сообщение
еще количество кромки можно в раскрое посмотреть, в информации о текущем раскрое.
Можно, но там только прямолинейная. Чем больше криволинейной облицовки - тем больше недостоверности. Поэтому истинное количество во всех случаях - только в Смете.
DTioutiou вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
andronf (10.04.2015)
Старый 10.04.2015, 09:39   #774
Am0ralist
Местный
 
Регистрация: 16.11.2011
Адрес: Москва / Пенза
Сообщений: 1,135
Сказал(а) спасибо: 307
Поблагодарили 1,257 раз(а) в 524 сообщениях
Вес репутации: 516
Am0ralist за этого человека можно гордитсяAm0ralist за этого человека можно гордитсяAm0ralist за этого человека можно гордитсяAm0ralist за этого человека можно гордитсяAm0ralist за этого человека можно гордитсяAm0ralist за этого человека можно гордитсяAm0ralist за этого человека можно гордитсяAm0ralist за этого человека можно гордитсяAm0ralist за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от yavsochi Посмотреть сообщение
Скорее всего у человека нету сметы, вот и хочет скриптом это реализовать!!!

в тему

американцы:
- мы придумали, как через заднее отверстие удалять аппендицит и не оставлять шрамов!
японцы:
- да мы уже все операции в брюшной полости можем через него делать!
русские:
- удивили... у нас уже сто лет даже гланды через него удаляют!
[свернуть]


К чем это я.
А. Так вот скрипт, который будет кромить с учетом траектории: добавляя/убирая толщину кромки на прифуговку, добавляя необходимые величины свесов - это я понимаю.

А "эмулировать" модуль, который стоит максимум 12к и его хватит на несколько сетевых мест (ибо постоянно он не нужен, и его можно иметь один на 2-3 сотрудника) - это вот как гланды удалять через...
__________________
Нахожусь в режиме поиска интересных задач, связанных с Базисом. Москва, 2015.
Am0ralist вне форума   Ответить с цитированием Вверх
5 пользователя(ей) сказали cпасибо:
andronf (10.04.2015), DTioutiou (10.04.2015), Kudesnick (10.04.2015), systland (10.04.2015), Uncle (10.04.2015)
Старый 12.04.2015, 16:08   #775
Rdva
Новичок
 
Регистрация: 26.05.2012
Сообщений: 2
Сказал(а) спасибо: 5
Поблагодарили 1 раз в 1 сообщении
Вес репутации: 0
Rdva пока не определено
По умолчанию

Цитата:
Сообщение от Oldman Посмотреть сообщение
Еще хорошо было бы добавить детали с пазами и с облицованной пластью.

Скрытый текст

function Paz(obj){
if (obj.Cuts.Count != 0){
return true;
}
}


function Plastic(obj){
if (obj.Plastics.Count != 0){
return true;
}
}
[свернуть]
Rdva вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Oldman (13.04.2015)
Старый 12.04.2015, 17:57   #776
topic
Консультант
 
Аватар для topic
 
Регистрация: 20.07.2008
Адрес: Киев, Украина
Сообщений: 294
Сказал(а) спасибо: 130
Поблагодарили 328 раз(а) в 130 сообщениях
Вес репутации: 286
topic как роза среди колючекtopic как роза среди колючекtopic как роза среди колючекtopic как роза среди колючек
По умолчанию

Комрады, подскажите, как с помощью скриптов вытянуть из модели данные о присадке - плоскость детали, диаметр отверстия, глубина отверстия...?
topic вне форума   Ответить с цитированием Вверх
Старый 13.04.2015, 09:27   #777
luciffer
Пользователь
 
Регистрация: 21.02.2015
Адрес: Тамбов
Сообщений: 41
Сказал(а) спасибо: 15
Поблагодарили 40 раз(а) в 10 сообщениях
Вес репутации: 124
luciffer на пути к лучшему
По умолчанию

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

Скрытый текст

Left = 0;
Right = 0;
Top = 0;
Bottom = 0;

// если это не режим редактирования, то указываем границы
if (!ParametricBlock) {
SetCamera(p3dFront);
Left = GetEdge('Укажите левую границу', AxisY).GFirst.x;
Right = GetEdge('Укажите правую границу', AxisY).GFirst.x;
Top = GetEdge('Укажите верхнюю границу', AxisX).GFirst.y;
Bottom = GetEdge('Укажите нижнюю границу', AxisX).GFirst.y;

if (Left > Right) {
aaa = Left
Left = Right
Right = aaa
}
if (Bottom > Top) {
aaa = Bottom
Bottom = Top
Top = aaa
}
}
MakeProp();

if (!ParametricBlock) {
FileOptions = 'Save.xml';
Action.Properties.Load(FileOptions);
SzLeft.Value = Left;
SzBottom.Value = Bottom;
SzWidth.Value = Right - Left;
SzHeight.Value = Top - Bottom;
if (Bottom > 820)
DepthVal.Value = 280;
else
DepthVal.Value = 500;
Action.OnFinish = function() {
Action.Properties.Save(FileOptions);
}
}

BtnOK = NewButtonInput("Построить")
BtnOK.OnChange = function() {
Action.Finish()
}

function MakeProp() {
Prop = Action.Properties;

//группа корпус
Korp = Prop.NewGroup('Корпус');
SzLeft = Korp.NewNumber('Лево', Left);
SzLeft.Visible = false;
SzBottom = Korp.NewNumber('Низ', Bottom);
SzBottom.Visible = false;
SzWidth = Korp.NewNumber('Ширина', Right - Left);
SzHeight = Korp.NewNumber('Высота', Top - Bottom);
DepthVal = Korp.NewNumber('Глубина');
DepthVal.Value = 500
SideMat = Korp.NewMaterial('ДСП корпуса');
ButtC = Korp.NewButt('Кромка корпуса')

//группа вставная полка
PolkaVs = Prop.NewBool('Вставная полка')
PolkaVs.Value = true
PolkaVs.OnChange = function() {
PolkaVs.ChildrenEnabled = PolkaVs.Value
}
CountPol = PolkaVs.NewNumber('Количество')
CountPol.Value = 1
ShelfOffset = PolkaVs.NewNumber('Отступ с боков');
ShelfOffset.Value = 0
ShelfZag = PolkaVs.NewNumber('Заглубление')
ShelfZag.Value = 20
// группа двпо
Dvpo = Prop.NewBool('задняя стенка')
Dvpo.Value = true
Dvpo.OnChange = function() {
Dvpo.ChildrenEnabled = Dvpo.Value
}
MatZadSt = Dvpo.NewMaterial('Двпо')
//группа фасад
Doors = Prop.NewBool('Двери')
Doors.Value = true
Doors.OnChange = function() {
Doors.ChildrenEnabled = Doors.Value
}

MatFas = Doors.NewMaterial('Материал')
ButtD = Doors.NewButt('Кромка')
KolDv = Doors.NewCombo('Кол-во дверей', '1\n2')
PetliLeftRight = Doors.NewCombo('Петли', 'Слева\nСправа');
if (SzWidth.Value > 600)
{
PetliLeftRight.Enabled = false;
KolDv.Enabled = false;
}
else
{
if (SzWidth.Value == 600)
{
KolDv.Enabled = true;
if (KolDv.ItemIndex == 0)
PetliLeftRight.Enabled = true;
else
PetliLeftRight.Enabled = false;
}
else
{
KolDv.Enabled = false;
PetliLeftRight.Enabled = true;
}
}

//группа столешница
Stolesh = Prop.NewBool('Столешница')
Stolesh.Value = true
Stolesh.OnChange = function() {
Stolesh.ChildrenEnabled = Stolesh.Value
}
MatStol = Stolesh.NewMaterial('Материал')

// группа фурнитура
FurnGroup = Prop.NewGroup('Фурнитура');
Ручка = FurnGroup.NewFurniture('Ручка');
Angle = FurnGroup.NewCombo('Угол поворота ручки', '0\n90')
ОпораПерёд = FurnGroup.NewFurniture('ОпораПерёд');
ОпораЗад = FurnGroup.NewFurniture('ОпораЗад');
Петля = FurnGroup.NewFurniture('Петля');
НавескаЛевая = FurnGroup.NewFurniture('Навеска Левая');
НавескаПравая = FurnGroup.NewFurniture('Навеска Правая');
if (SzHeight.Value > 820)
{
НавескаЛевая.Enabled = true;
НавескаПравая.Enabled = true;
ОпораПерёд.Enabled = true;
ОпораЗад.Enabled = true;
} else {
НавескаЛевая.Enabled = true;
НавескаПравая.Enabled = true;
ОпораПерёд.Enabled = true;
ОпораЗад.Enabled = true;
}
Евровинт = FurnGroup.NewFurniture('Евровинт');
Полкодержатель = FurnGroup.NewFurniture('Полкодержатель');
Шкант = FurnGroup.NewFurniture('Шкант');

Btn = Prop.NewButton('Построить')
//обработка нажатия кнокпи
Btn.OnClick = function() {
Action.Finish()
}
}

function Primenit()
{
if (SzWidth.Value > 600)
{
PetliLeftRight.Enabled = false;
KolDv.Enabled = false;
}
else
{
if (SzWidth.Value == 600)
{
KolDv.Enabled = true;
if (KolDv.ItemIndex == 0)
PetliLeftRight.Enabled = true;
else
PetliLeftRight.Enabled = false;
}
else
{
KolDv.Enabled = false;
PetliLeftRight.Enabled = true;
}
}

if (SzHeight.Value > 820)
{
НавескаЛевая.Enabled = true;
НавескаПравая.Enabled = true;
ОпораПерёд.Enabled = true;
ОпораЗад.Enabled = true;
} else {
НавескаЛевая.Enabled = true;
НавескаПравая.Enabled = true;
ОпораПерёд.Enabled = true;
ОпораЗад.Enabled = true;
}

if (Angle.ItemIndex == 0)
Fi = 0;
else
Fi = 90;

if (DepthVal.Value <= 199)
alert('Глубина копуса менее 200 мм!\nВедите значение заново.')
else
MakeShelf();
}

Action.OnStart = function()
{
//обработка событий в любых полях ввода свойства
Prop.OnChange = Primenit;
Primenit();
};

Action.Continue();

function EvrAndShkant(Panel1, Panel2, X, Y, Z, Sdvig) {
Евровинт.Value.Mount(Panel1, Panel2, X, Y, Z);
Шкант.Value.Mount(Panel1, Panel2, X, Y, Z + Sdvig);
}

function Petlya(Panel1, Panel2, X, Y, Z) {
Петля.Value.Mount(Panel1, Panel2, X, Y, Z);
}

function PetliLeft() { if (SzHeight.Value > 1000) { Petlya(LeftPanel, (DverL || DverR || DverL1), LeftX, Bottom + 500, Depth);}
Petlya(LeftPanel, (DverL || DverR || DverL1), LeftX, Bottom + 110, Depth);
Petlya(LeftPanel, (DverL || DverR || DverL1), LeftX, Top - 114, Depth);
}

function PetliRight() { if (SzHeight.Value > 1000) { Petlya(RightPanel, (DverL || DverR || DverL1), LeftX, Bottom + 500, Depth);}
Petlya(RightPanel, (DverL || DverR || DverL1), LeftX, Bottom + 110, Depth);
Petlya(RightPanel, (DverL || DverR || DverL1), LeftX, Top - 114, Depth);
}

function Ruchka(Panel, X, Y, Z, S) {
Ручка.Value.Mount1(Panel, X, Y, Z, S)
}

function Dver1() //установка оной двери с петлями и ручкой
{
DB1 = BeginBlock("Дверь");
MatFas.SetActive();
DverL = AddFrontPanel(Left + Fuga, Bottom + Fuga, Right - Fuga, Top - Fuga, Depth);
DverL.TextureOrientation = ftoVertical; //направление текстуры
DverL.AddButt(ButtD, 0);
DverL.AddButt(ButtD, 1);
DverL.AddButt(ButtD, 2);
DverL.AddButt(ButtD, 3);

if (PetliLeftRight.ItemIndex == 0) {
if (Bottom > 820) {
Ruchka((DverL || DverR || DverL1), RightX - 30, Y2 + 114, DepthDver, Fi);
DverL.Name = 'Дверь левая';
EndBlock();
DB1.AnimType = AnimationType.DoorLeft;
PetliLeft();
} else {
Ruchka((DverL || DverR || DverL1), RightX - 30, Y1 - 114, DepthDver, Fi);
DverL.Name = 'Дверь левая';
EndBlock();
DB1.AnimType = AnimationType.DoorLeft;
PetliLeft();
}
} else {
if (Bottom > 820) {
Ruchka((DverL || DverR || DverL1), LeftX + 30, Y2 + 114, DepthDver, Fi);
DverL.Name = 'Дверь правая';
EndBlock();
DB1.AnimType = AnimationType.DoorRight;
PetliRight();
} else {
Ruchka((DverL || DverR || DverL1), LeftX + 30, Y1 - 114, DepthDver, Fi);
DverL.Name = 'Дверь правая';
EndBlock();
DB1.AnimType = AnimationType.DoorRight;
PetliRight();
}
}
}

function Dver2() //установка двух дверей с петлями и ручками
{
MatFas.SetActive()
DB2 = BeginBlock("Дверь")
DverL = AddFrontPanel(Left + Fuga, Bottom + Fuga, CentrX - Fuga, Top - Fuga, Depth);
DverL.TextureOrientation = ftoVertical; //направление текстуры
DverL.AddButt(ButtD, 0);
DverL.AddButt(ButtD, 1);
DverL.AddButt(ButtD, 2);
DverL.AddButt(ButtD, 3);
DverL.Name = 'Дверь левая';
if (Bottom > 820) {
Ruchka(DverL, CentrX - 30, Y2 + 114, DepthDver, Fi);
EndBlock();
DB2.AnimType = AnimationType.DoorLeft;
PetliLeft();
} else {
Ruchka(DverL, CentrX - 30, Y1 - 114, DepthDver, Fi);
EndBlock();
DB2.AnimType = AnimationType.DoorLeft;
PetliLeft();
}

DB3 = BeginBlock("Дверь");
DverR = AddFrontPanel(CentrX + Fuga, Bottom + Fuga, Right - Fuga, Top - Fuga, Depth);
DverR.TextureOrientation = ftoVertical; //направление текстуры
DverR.AddButt(ButtD, 0);
DverR.AddButt(ButtD, 1);
DverR.AddButt(ButtD, 2);
DverR.AddButt(ButtD, 3);
DverR.Name = 'Дверь правая';
if (Bottom > 820) {
Ruchka(DverR, CentrX + 30, Y2 + 114, DepthDver, Fi);
EndBlock();
DB3.AnimType = AnimationType.DoorRight;
PetliRight();
} else {
Ruchka(DverR, CentrX + 30, Y1 - 114, DepthDver, Fi);
EndBlock();
DB3.AnimType = AnimationType.DoorRight;
PetliRight();
}
}

function MakeShelf() {
DeleteNewObjects();

// границы теперь возьмем из параметров (т.к. они сохраняютя)
Left = SzLeft.Value;
Bottom = SzBottom.Value;
Right = SzLeft.Value + SzWidth.Value;
Top = SzBottom.Value + SzHeight.Value;

if (Bottom > 820)
NameBL = 'Полка ';
else
NameBL = 'Тумба ';

SH = Right - Left;
SH1 = SH.toFixed().toString();
BL = BeginParametricBlock(NameBL + SH1);
Depth = DepthVal.Value;
Offset = ShelfOffset.Value;
SideMat.SetActive();
DepthDver = Depth + SideMat.Thickness;
LeftX = Left + SideMat.Thickness;
RightX = Right - SideMat.Thickness;
Y1 = Top - SideMat.Thickness;
Y2 = Bottom + SideMat.Thickness;
Z1 = -3;
MatZadSt.SetActive();
Zadst = AddFrontPanel(LeftX - 14, Y1 + 14, RightX + 14, Y2 - 14, Z1); //установка задней стенки
Smech = Z1 + Zadst.Thickness;
CZ = Zadst.Contour;
SideMat.SetActive();
Fuga = 1.5; //зазаор для дверей
Fuga2 = 1.5; //зазаор для дверей
Fuga3 = 1.5; //зазаор для дверей
CentrX = ((Right - Left) * 0.5 + Left);
Odds = SH.toFixed(); //ширина корпуса
if (Bottom > 820) {
LeftPanel = AddVertPanel(0, Bottom, Depth, Top, Left); //установка левого бока
RightPanel = AddVertPanel(0, Bottom, Depth, Top, RightX); //установка правого бока
Dno = AddHorizPanel(LeftX, 0, RightX, Depth, Bottom); // установка дна
LeftPanel.AddButt(ButtC, 0);
LeftPanel.AddButt(ButtC, 1);
LeftPanel.AddButt(ButtC, 2);
RightPanel.AddButt(ButtC, 0);
RightPanel.AddButt(ButtC, 1);
RightPanel.AddButt(ButtC, 2);
Dno.AddButt(ButtC, 2);
} else {
LeftPanel = AddVertPanel(0, Bottom + 16, Depth, Top, Left); //установка левого бока
RightPanel = AddVertPanel(0, Bottom + 16, Depth, Top, RightX); //установка правого бока
Dno = AddHorizPanel(LeftX - 16, 0, RightX + 16, Depth, Bottom); // установка дна
LeftPanel.AddButt(ButtC, 1);
RightPanel.AddButt(ButtC, 1);
Dno.AddButt(ButtC, 1);
Dno.AddButt(ButtC, 2);
Dno.AddButt(ButtC, 3);
}
if (Bottom < 820){
Cok = AddFrontPanel(Left, Bottom - 100, Right, Bottom - 5, Depth - 50);//установка цоколя
Cok.TextureOrientation = ftoVertical;
Cok.AddButt(ButtC, 1);
Cok.AddButt(ButtC, 2);
Cok.AddButt(ButtC, 3);
Cok.AddButt(ButtC, 0);
Cok.Name = 'Цоколь';
}
PosY = Bottom;
YInc = ((Top - Bottom) - SideMat.Thickness) / 2;
ShLeft = LeftX + Offset; //зазор для вкалдной полки слева
ShRight = RightX - Offset; //зазор для вкалдной полки справа
Prol = ((Y1 - Y2) - SideMat.Thickness * CountPol.Value) / (CountPol.Value + 1)

//задание текстур для панелей
LeftPanel.TextureOrientation = ftoVertical;
RightPanel.TextureOrientation = ftoVertical;
Dno.TextureOrientation = ftoHorizontal;
Zadst.TextureOrientation = ftoVertical;
/*
//пазы на панелях
Cut1 = LeftPanel.AddCut('Паз 16 (4х6)');
Cut1.Trajectory.AddLine(18, 0, 18, LeftPanel.ContourHeight);
Cut1.Contour.AddRectangle(-2, 0, 2, 6);
Cut2 = RightPanel.AddCut('Паз 16 (4х6)');
Cut2.Trajectory.AddLine(18, 0, 18, RightPanel.ContourHeight);
Cut2.Contour.AddRectangle(-2, RightPanel.Thickness, 2, RightPanel.Thickness - 6)
Cut3 = Dno.AddCut('Паз 16 (4х6)');
Cut3.Trajectory.AddLine(0, -18, Dno.ContourWidth, -18);
Cut3.Contour.AddRectangle(-2, Dno.Thickness - 6, 2, Dno.Thickness);
*/
LeftPanel.Name = 'Бок левый';
RightPanel.Name = 'Бок правый';
Zadst.Name = 'Задняя стенка';

if (Bottom > 820) {
Planka = AddHorizPanel(LeftX, 0, RightX, Depth, Top - SideMat.Thickness); // установка крышки сверху
Planka.TextureOrientation = ftoHorizontal; //направление текстуры
/*
Cut4 = Planka.AddCut('Паз 16 (4х6)'); //паз
Cut4.Trajectory.AddLine(0, -18, Planka.ContourWidth, -18);
Cut4.Contour.AddRectangle(-2, 0, 2, 6);
*/
Planka.AddButt(ButtC, 2);
Planka.Name = 'Полка'
} else {
PlankaZ = AddHorizPanel(LeftX, 0, RightX, 80, Top - SideMat.Thickness); //установка задней планки
PlankaP = AddHorizPanel(LeftX, Depth, RightX, Depth - 80, Top - SideMat.Thickness); //установка передней планки
PlankaP.TextureOrientation = ftoHorizontal; //направление текстуры
PlankaZ.TextureOrientation = ftoHorizontal; //направление текстуры
/*
Cut5 = PlankaZ.AddCut('Паз 16 (4х6)'); //паз
Cut5.Trajectory.AddLine(0, -18, PlankaZ.ContourWidth, -18);
Cut5.Contour.AddRectangle(-2, 0, 2, 6);
*/
PlankaZ.AddButt(ButtC, 2);
PlankaP.AddButt(ButtC, 0);
PlankaP.Name = 'Планка передняя';
PlankaZ.Name = 'Планка задняя';
}

if (Doors.Value == true) {
if (Odds == 600) //корпус равен строго 600 мм установка дверей, петель и ручек
{
if (KolDv.ItemIndex == 0 /*confirm('Установить одну дверь?\nНет - установятся две двери!')*/)
Dver1()
else
Dver2()
} else { //корпус не равен 600 мм
if (Odds < 600)
Dver1()
else
Dver2()
}
}
A1 = Depth - 37; //установка первого евровинта
A2 = A1 % 32; //остаток от глубины корпуса
Zag = ShelfZag.Value; //заглубление вставной полки спереди
WidthPol = Depth - Smech - ShelfZag.Value
//установка вставной полки
if (ShelfZag.Value < 0 || WidthPol <= 142) {
alert('Значение заглубления полки не корректно!\nВедите значение заново.')
} else {
if (PolkaVs.Value == true) {
for (var k = 0; k < CountPol.Value; k++)
if (ShelfOffset.Value < 0 || ShelfOffset.Value > 5) {
alert('Значение отступа полки не корректно!\nВведите значение заново.')
} else {
if (ShelfOffset.Value > 0) {
Y2 += Prol;
SideMat.SetActive();
Zpol = Depth - Zag;
Polka = AddHorizPanel(ShLeft, Smech, ShRight, Zpol, Y2);
//ZPD1 = A2 + 64; //отв под полкодержатель сзади
//OstFase = (Zpol - ZPD1) % 32;
//ZPD2 = Zpol - OstFase - 32
Polka.TextureOrientation = ftoHorizontal;
Polka.AddButt(ButtC, 2);
Polka.Name = 'Полка вставная';
Polkoder = Полкодержатель.Value;
Polkoder.Mount(Polka, LeftPanel, ShLeft, Y2, Zpol - 40);
Polkoder.Mount(Polka, RightPanel, ShRight, Y2, Zpol - 40);
Polkoder.Mount(Polka, LeftPanel, ShLeft, Y2, Smech + 40);
Polkoder.Mount(Polka, RightPanel, ShRight, Y2, Smech + 40);
Y2 += SideMat.Thickness;
} else {
Y2 += Prol;
SideMat.SetActive();
Zpol = Depth - Zag;
Polka = AddHorizPanel(ShLeft, Smech, ShRight, Zpol, Y2);
//ZPD1 = A2 + 64; //отв под полкодержатель сзади
//OstFase = (Zpol - ZPD1) % 32;
//ZPD2 = Zpol - OstFase - 32
Polka.TextureOrientation = ftoHorizontal;
Polka.AddButt(ButtC, 2);
Polka.Name = 'Полка';
EvrAndShkant(Polka, LeftPanel, ShLeft, Y2, Zpol - 40);
EvrAndShkant(Polka, RightPanel, ShRight, Y2, Zpol - 40);
EvrAndShkant(Polka, LeftPanel, ShLeft, Y2, Smech + 40);
EvrAndShkant(Polka, RightPanel, ShRight, Y2, Smech + 40);
Y2 += SideMat.Thickness;
}
}
}
}
if (Bottom > 820) //построения для глубины меньше 315
{
Dno.Name = 'Полка';

CZ.Clear();
CZ.AddLine(0, -Zadst.GSize.y, 0, -43);
CZ.AddLine(0, -43, 16, -43);
CZ.AddLine(16, -43, 16, 0);
CZ.AddLine(16, 0, Zadst.GSize.x - 16, 0);
CZ.AddLine(Zadst.GSize.x - 16, 0, Zadst.GSize.x - 16, -43);
CZ.AddLine(Zadst.GSize.x - 16, -43, Zadst.GSize.x, -43);
CZ.AddLine(Zadst.GSize.x, -43, Zadst.GSize.x, -Zadst.GSize.y);
CZ.AddLine(Zadst.GSize.x, -Zadst.GSize.y, 0, -Zadst.GSize.y);

EvrAndShkant(Dno, LeftPanel, ShLeft, Y2, Depth - 40);
EvrAndShkant(Dno, RightPanel, ShRight, Y2, Depth - 40);
EvrAndShkant(Dno, LeftPanel, ShLeft, Y2, Smech + 40);
EvrAndShkant(Dno, RightPanel, ShRight, Y2, Smech + 40);
EvrAndShkant(Planka, LeftPanel, ShLeft, Y2, Depth - 40);
EvrAndShkant(Planka, RightPanel, ShRight, Y2, Depth - 40);
EvrAndShkant(Planka, LeftPanel, ShLeft, Y2, Smech + 40);
EvrAndShkant(Planka, RightPanel, ShRight, Y2, Smech + 40);
NavesL = НавескаЛевая.Value;
NavesL.Mount(Planka, LeftPanel, LeftX, Y1, Smech);
NavesR = НавескаПравая.Value;
NavesR.Mount(Planka, RightPanel, RightX, Y1, Smech);
} else //построения для глубины больше 315
{
Dno.Name = 'Дно';
if (Stolesh.Value == true) {
MatStol.SetActive()
Stol = AddExtrusion();
SK = Stol.Contour;
LS1 = SK.AddLine(0, 0, 0, 25);
LS2 = SK.AddLine(0, 25,600, 25);
LS3 = SK.AddLine(600, 25,600, 0);
LS4 = SK.AddLine(600, 0, 0, 0);
SK.RoundingEx(LS2, LS3, Depth + 95 - 1, 25 - 1, 9);
Stol.Rotate(AxisY, -90);
Stol.Contour.Move(Depth - 550, Top);
Stol.PositionX = Left;
Stol.Thickness = (Left - Right);
Stol.Name = 'Столешница';
Stol.Build();
}

EvrAndShkant(LeftPanel, Dno, ShLeft, Y2, Depth - 40);
EvrAndShkant(RightPanel, Dno, ShRight, Y2, Depth - 40);
EvrAndShkant(LeftPanel, Dno, ShLeft, Y2, Smech + 40);
EvrAndShkant(RightPanel, Dno, ShRight, Y2, Smech + 40);
EvrAndShkant(PlankaZ, LeftPanel, ShLeft, Y2, Depth - 40);
EvrAndShkant(PlankaZ, RightPanel, ShRight, Y2, Depth - 40);
EvrAndShkant(PlankaP, LeftPanel, ShLeft, Y2, Smech + 40);
EvrAndShkant(PlankaP, RightPanel, ShRight, Y2, Smech + 40);
Opora1 = ОпораПерёд.Value;
Opora2 = ОпораЗад.Value;
Opora1.Mount1(Dno, LeftX + 40, -10, Depth -76, 0);
Opora2.Mount1(Dno, LeftX + 40, -10, Smech + 56, 0);
Opora1.Mount1(Dno, RightX - 40, -10, Depth - 76, 0);
Opora2.Mount1(Dno, RightX - 40, -10, Smech + 56, 0);
}
BL = EndParametricBlock();
}
[свернуть]
luciffer вне форума   Ответить с цитированием Вверх
Старый 14.04.2015, 09:44   #778
luciffer
Пользователь
 
Регистрация: 21.02.2015
Адрес: Тамбов
Сообщений: 41
Сказал(а) спасибо: 15
Поблагодарили 40 раз(а) в 10 сообщениях
Вес репутации: 124
luciffer на пути к лучшему
По умолчанию

Цитата:
Сообщение от luciffer Посмотреть сообщение
Люди добрые) если не сложно помогите скрипт доработать...хочу в него вставить возможность создания ящиков, но что то не могу понять как это сделать...в общем хочу сделать чтобы можно было выбирать материал и количество ящиков

Скрытый текст

Left = 0;
Right = 0;
Top = 0;
Bottom = 0;

// если это не режим редактирования, то указываем границы
if (!ParametricBlock) {
SetCamera(p3dFront);
Left = GetEdge('Укажите левую границу', AxisY).GFirst.x;
Right = GetEdge('Укажите правую границу', AxisY).GFirst.x;
Top = GetEdge('Укажите верхнюю границу', AxisX).GFirst.y;
Bottom = GetEdge('Укажите нижнюю границу', AxisX).GFirst.y;

if (Left > Right) {
aaa = Left
Left = Right
Right = aaa
}
if (Bottom > Top) {
aaa = Bottom
Bottom = Top
Top = aaa
}
}
MakeProp();

if (!ParametricBlock) {
FileOptions = 'Save.xml';
Action.Properties.Load(FileOptions);
SzLeft.Value = Left;
SzBottom.Value = Bottom;
SzWidth.Value = Right - Left;
SzHeight.Value = Top - Bottom;
if (Bottom > 820)
DepthVal.Value = 280;
else
DepthVal.Value = 500;
Action.OnFinish = function() {
Action.Properties.Save(FileOptions);
}
}

BtnOK = NewButtonInput("Построить")
BtnOK.OnChange = function() {
Action.Finish()
}

function MakeProp() {
Prop = Action.Properties;

//группа корпус
Korp = Prop.NewGroup('Корпус');
SzLeft = Korp.NewNumber('Лево', Left);
SzLeft.Visible = false;
SzBottom = Korp.NewNumber('Низ', Bottom);
SzBottom.Visible = false;
SzWidth = Korp.NewNumber('Ширина', Right - Left);
SzHeight = Korp.NewNumber('Высота', Top - Bottom);
DepthVal = Korp.NewNumber('Глубина');
DepthVal.Value = 500
SideMat = Korp.NewMaterial('ДСП корпуса');
ButtC = Korp.NewButt('Кромка корпуса')

//группа вставная полка
PolkaVs = Prop.NewBool('Вставная полка')
PolkaVs.Value = true
PolkaVs.OnChange = function() {
PolkaVs.ChildrenEnabled = PolkaVs.Value
}
CountPol = PolkaVs.NewNumber('Количество')
CountPol.Value = 1
ShelfOffset = PolkaVs.NewNumber('Отступ с боков');
ShelfOffset.Value = 0
ShelfZag = PolkaVs.NewNumber('Заглубление')
ShelfZag.Value = 20
// группа двпо
Dvpo = Prop.NewBool('задняя стенка')
Dvpo.Value = true
Dvpo.OnChange = function() {
Dvpo.ChildrenEnabled = Dvpo.Value
}
MatZadSt = Dvpo.NewMaterial('Двпо')
//группа фасад
Doors = Prop.NewBool('Двери')
Doors.Value = true
Doors.OnChange = function() {
Doors.ChildrenEnabled = Doors.Value
}

MatFas = Doors.NewMaterial('Материал')
ButtD = Doors.NewButt('Кромка')
KolDv = Doors.NewCombo('Кол-во дверей', '1\n2')
PetliLeftRight = Doors.NewCombo('Петли', 'Слева\nСправа');
if (SzWidth.Value > 600)
{
PetliLeftRight.Enabled = false;
KolDv.Enabled = false;
}
else
{
if (SzWidth.Value == 600)
{
KolDv.Enabled = true;
if (KolDv.ItemIndex == 0)
PetliLeftRight.Enabled = true;
else
PetliLeftRight.Enabled = false;
}
else
{
KolDv.Enabled = false;
PetliLeftRight.Enabled = true;
}
}

//группа столешница
Stolesh = Prop.NewBool('Столешница')
Stolesh.Value = true
Stolesh.OnChange = function() {
Stolesh.ChildrenEnabled = Stolesh.Value
}
MatStol = Stolesh.NewMaterial('Материал')

// группа фурнитура
FurnGroup = Prop.NewGroup('Фурнитура');
Ручка = FurnGroup.NewFurniture('Ручка');
Angle = FurnGroup.NewCombo('Угол поворота ручки', '0\n90')
ОпораПерёд = FurnGroup.NewFurniture('ОпораПерёд');
ОпораЗад = FurnGroup.NewFurniture('ОпораЗад');
Петля = FurnGroup.NewFurniture('Петля');
НавескаЛевая = FurnGroup.NewFurniture('Навеска Левая');
НавескаПравая = FurnGroup.NewFurniture('Навеска Правая');
if (SzHeight.Value > 820)
{
НавескаЛевая.Enabled = true;
НавескаПравая.Enabled = true;
ОпораПерёд.Enabled = true;
ОпораЗад.Enabled = true;
} else {
НавескаЛевая.Enabled = true;
НавескаПравая.Enabled = true;
ОпораПерёд.Enabled = true;
ОпораЗад.Enabled = true;
}
Евровинт = FurnGroup.NewFurniture('Евровинт');
Полкодержатель = FurnGroup.NewFurniture('Полкодержатель');
Шкант = FurnGroup.NewFurniture('Шкант');

Btn = Prop.NewButton('Построить')
//обработка нажатия кнокпи
Btn.OnClick = function() {
Action.Finish()
}
}

function Primenit()
{
if (SzWidth.Value > 600)
{
PetliLeftRight.Enabled = false;
KolDv.Enabled = false;
}
else
{
if (SzWidth.Value == 600)
{
KolDv.Enabled = true;
if (KolDv.ItemIndex == 0)
PetliLeftRight.Enabled = true;
else
PetliLeftRight.Enabled = false;
}
else
{
KolDv.Enabled = false;
PetliLeftRight.Enabled = true;
}
}

if (SzHeight.Value > 820)
{
НавескаЛевая.Enabled = true;
НавескаПравая.Enabled = true;
ОпораПерёд.Enabled = true;
ОпораЗад.Enabled = true;
} else {
НавескаЛевая.Enabled = true;
НавескаПравая.Enabled = true;
ОпораПерёд.Enabled = true;
ОпораЗад.Enabled = true;
}

if (Angle.ItemIndex == 0)
Fi = 0;
else
Fi = 90;

if (DepthVal.Value <= 199)
alert('Глубина копуса менее 200 мм!\nВедите значение заново.')
else
MakeShelf();
}

Action.OnStart = function()
{
//обработка событий в любых полях ввода свойства
Prop.OnChange = Primenit;
Primenit();
};

Action.Continue();

function EvrAndShkant(Panel1, Panel2, X, Y, Z, Sdvig) {
Евровинт.Value.Mount(Panel1, Panel2, X, Y, Z);
Шкант.Value.Mount(Panel1, Panel2, X, Y, Z + Sdvig);
}

function Petlya(Panel1, Panel2, X, Y, Z) {
Петля.Value.Mount(Panel1, Panel2, X, Y, Z);
}

function PetliLeft() { if (SzHeight.Value > 1000) { Petlya(LeftPanel, (DverL || DverR || DverL1), LeftX, Bottom + 500, Depth);}
Petlya(LeftPanel, (DverL || DverR || DverL1), LeftX, Bottom + 110, Depth);
Petlya(LeftPanel, (DverL || DverR || DverL1), LeftX, Top - 114, Depth);
}

function PetliRight() { if (SzHeight.Value > 1000) { Petlya(RightPanel, (DverL || DverR || DverL1), LeftX, Bottom + 500, Depth);}
Petlya(RightPanel, (DverL || DverR || DverL1), LeftX, Bottom + 110, Depth);
Petlya(RightPanel, (DverL || DverR || DverL1), LeftX, Top - 114, Depth);
}

function Ruchka(Panel, X, Y, Z, S) {
Ручка.Value.Mount1(Panel, X, Y, Z, S)
}

function Dver1() //установка оной двери с петлями и ручкой
{
DB1 = BeginBlock("Дверь");
MatFas.SetActive();
DverL = AddFrontPanel(Left + Fuga, Bottom + Fuga, Right - Fuga, Top - Fuga, Depth);
DverL.TextureOrientation = ftoVertical; //направление текстуры
DverL.AddButt(ButtD, 0);
DverL.AddButt(ButtD, 1);
DverL.AddButt(ButtD, 2);
DverL.AddButt(ButtD, 3);

if (PetliLeftRight.ItemIndex == 0) {
if (Bottom > 820) {
Ruchka((DverL || DverR || DverL1), RightX - 30, Y2 + 114, DepthDver, Fi);
DverL.Name = 'Дверь левая';
EndBlock();
DB1.AnimType = AnimationType.DoorLeft;
PetliLeft();
} else {
Ruchka((DverL || DverR || DverL1), RightX - 30, Y1 - 114, DepthDver, Fi);
DverL.Name = 'Дверь левая';
EndBlock();
DB1.AnimType = AnimationType.DoorLeft;
PetliLeft();
}
} else {
if (Bottom > 820) {
Ruchka((DverL || DverR || DverL1), LeftX + 30, Y2 + 114, DepthDver, Fi);
DverL.Name = 'Дверь правая';
EndBlock();
DB1.AnimType = AnimationType.DoorRight;
PetliRight();
} else {
Ruchka((DverL || DverR || DverL1), LeftX + 30, Y1 - 114, DepthDver, Fi);
DverL.Name = 'Дверь правая';
EndBlock();
DB1.AnimType = AnimationType.DoorRight;
PetliRight();
}
}
}

function Dver2() //установка двух дверей с петлями и ручками
{
MatFas.SetActive()
DB2 = BeginBlock("Дверь")
DverL = AddFrontPanel(Left + Fuga, Bottom + Fuga, CentrX - Fuga, Top - Fuga, Depth);
DverL.TextureOrientation = ftoVertical; //направление текстуры
DverL.AddButt(ButtD, 0);
DverL.AddButt(ButtD, 1);
DverL.AddButt(ButtD, 2);
DverL.AddButt(ButtD, 3);
DverL.Name = 'Дверь левая';
if (Bottom > 820) {
Ruchka(DverL, CentrX - 30, Y2 + 114, DepthDver, Fi);
EndBlock();
DB2.AnimType = AnimationType.DoorLeft;
PetliLeft();
} else {
Ruchka(DverL, CentrX - 30, Y1 - 114, DepthDver, Fi);
EndBlock();
DB2.AnimType = AnimationType.DoorLeft;
PetliLeft();
}

DB3 = BeginBlock("Дверь");
DverR = AddFrontPanel(CentrX + Fuga, Bottom + Fuga, Right - Fuga, Top - Fuga, Depth);
DverR.TextureOrientation = ftoVertical; //направление текстуры
DverR.AddButt(ButtD, 0);
DverR.AddButt(ButtD, 1);
DverR.AddButt(ButtD, 2);
DverR.AddButt(ButtD, 3);
DverR.Name = 'Дверь правая';
if (Bottom > 820) {
Ruchka(DverR, CentrX + 30, Y2 + 114, DepthDver, Fi);
EndBlock();
DB3.AnimType = AnimationType.DoorRight;
PetliRight();
} else {
Ruchka(DverR, CentrX + 30, Y1 - 114, DepthDver, Fi);
EndBlock();
DB3.AnimType = AnimationType.DoorRight;
PetliRight();
}
}

function MakeShelf() {
DeleteNewObjects();

// границы теперь возьмем из параметров (т.к. они сохраняютя)
Left = SzLeft.Value;
Bottom = SzBottom.Value;
Right = SzLeft.Value + SzWidth.Value;
Top = SzBottom.Value + SzHeight.Value;

if (Bottom > 820)
NameBL = 'Полка ';
else
NameBL = 'Тумба ';

SH = Right - Left;
SH1 = SH.toFixed().toString();
BL = BeginParametricBlock(NameBL + SH1);
Depth = DepthVal.Value;
Offset = ShelfOffset.Value;
SideMat.SetActive();
DepthDver = Depth + SideMat.Thickness;
LeftX = Left + SideMat.Thickness;
RightX = Right - SideMat.Thickness;
Y1 = Top - SideMat.Thickness;
Y2 = Bottom + SideMat.Thickness;
Z1 = -3;
MatZadSt.SetActive();
Zadst = AddFrontPanel(LeftX - 14, Y1 + 14, RightX + 14, Y2 - 14, Z1); //установка задней стенки
Smech = Z1 + Zadst.Thickness;
CZ = Zadst.Contour;
SideMat.SetActive();
Fuga = 1.5; //зазаор для дверей
Fuga2 = 1.5; //зазаор для дверей
Fuga3 = 1.5; //зазаор для дверей
CentrX = ((Right - Left) * 0.5 + Left);
Odds = SH.toFixed(); //ширина корпуса
if (Bottom > 820) {
LeftPanel = AddVertPanel(0, Bottom, Depth, Top, Left); //установка левого бока
RightPanel = AddVertPanel(0, Bottom, Depth, Top, RightX); //установка правого бока
Dno = AddHorizPanel(LeftX, 0, RightX, Depth, Bottom); // установка дна
LeftPanel.AddButt(ButtC, 0);
LeftPanel.AddButt(ButtC, 1);
LeftPanel.AddButt(ButtC, 2);
RightPanel.AddButt(ButtC, 0);
RightPanel.AddButt(ButtC, 1);
RightPanel.AddButt(ButtC, 2);
Dno.AddButt(ButtC, 2);
} else {
LeftPanel = AddVertPanel(0, Bottom + 16, Depth, Top, Left); //установка левого бока
RightPanel = AddVertPanel(0, Bottom + 16, Depth, Top, RightX); //установка правого бока
Dno = AddHorizPanel(LeftX - 16, 0, RightX + 16, Depth, Bottom); // установка дна
LeftPanel.AddButt(ButtC, 1);
RightPanel.AddButt(ButtC, 1);
Dno.AddButt(ButtC, 1);
Dno.AddButt(ButtC, 2);
Dno.AddButt(ButtC, 3);
}
if (Bottom < 820){
Cok = AddFrontPanel(Left, Bottom - 100, Right, Bottom - 5, Depth - 50);//установка цоколя
Cok.TextureOrientation = ftoVertical;
Cok.AddButt(ButtC, 1);
Cok.AddButt(ButtC, 2);
Cok.AddButt(ButtC, 3);
Cok.AddButt(ButtC, 0);
Cok.Name = 'Цоколь';
}
PosY = Bottom;
YInc = ((Top - Bottom) - SideMat.Thickness) / 2;
ShLeft = LeftX + Offset; //зазор для вкалдной полки слева
ShRight = RightX - Offset; //зазор для вкалдной полки справа
Prol = ((Y1 - Y2) - SideMat.Thickness * CountPol.Value) / (CountPol.Value + 1)

//задание текстур для панелей
LeftPanel.TextureOrientation = ftoVertical;
RightPanel.TextureOrientation = ftoVertical;
Dno.TextureOrientation = ftoHorizontal;
Zadst.TextureOrientation = ftoVertical;
/*
//пазы на панелях
Cut1 = LeftPanel.AddCut('Паз 16 (4х6)');
Cut1.Trajectory.AddLine(18, 0, 18, LeftPanel.ContourHeight);
Cut1.Contour.AddRectangle(-2, 0, 2, 6);
Cut2 = RightPanel.AddCut('Паз 16 (4х6)');
Cut2.Trajectory.AddLine(18, 0, 18, RightPanel.ContourHeight);
Cut2.Contour.AddRectangle(-2, RightPanel.Thickness, 2, RightPanel.Thickness - 6)
Cut3 = Dno.AddCut('Паз 16 (4х6)');
Cut3.Trajectory.AddLine(0, -18, Dno.ContourWidth, -18);
Cut3.Contour.AddRectangle(-2, Dno.Thickness - 6, 2, Dno.Thickness);
*/
LeftPanel.Name = 'Бок левый';
RightPanel.Name = 'Бок правый';
Zadst.Name = 'Задняя стенка';

if (Bottom > 820) {
Planka = AddHorizPanel(LeftX, 0, RightX, Depth, Top - SideMat.Thickness); // установка крышки сверху
Planka.TextureOrientation = ftoHorizontal; //направление текстуры
/*
Cut4 = Planka.AddCut('Паз 16 (4х6)'); //паз
Cut4.Trajectory.AddLine(0, -18, Planka.ContourWidth, -18);
Cut4.Contour.AddRectangle(-2, 0, 2, 6);
*/
Planka.AddButt(ButtC, 2);
Planka.Name = 'Полка'
} else {
PlankaZ = AddHorizPanel(LeftX, 0, RightX, 80, Top - SideMat.Thickness); //установка задней планки
PlankaP = AddHorizPanel(LeftX, Depth, RightX, Depth - 80, Top - SideMat.Thickness); //установка передней планки
PlankaP.TextureOrientation = ftoHorizontal; //направление текстуры
PlankaZ.TextureOrientation = ftoHorizontal; //направление текстуры
/*
Cut5 = PlankaZ.AddCut('Паз 16 (4х6)'); //паз
Cut5.Trajectory.AddLine(0, -18, PlankaZ.ContourWidth, -18);
Cut5.Contour.AddRectangle(-2, 0, 2, 6);
*/
PlankaZ.AddButt(ButtC, 2);
PlankaP.AddButt(ButtC, 0);
PlankaP.Name = 'Планка передняя';
PlankaZ.Name = 'Планка задняя';
}

if (Doors.Value == true) {
if (Odds == 600) //корпус равен строго 600 мм установка дверей, петель и ручек
{
if (KolDv.ItemIndex == 0 /*confirm('Установить одну дверь?\nНет - установятся две двери!')*/)
Dver1()
else
Dver2()
} else { //корпус не равен 600 мм
if (Odds < 600)
Dver1()
else
Dver2()
}
}
A1 = Depth - 37; //установка первого евровинта
A2 = A1 % 32; //остаток от глубины корпуса
Zag = ShelfZag.Value; //заглубление вставной полки спереди
WidthPol = Depth - Smech - ShelfZag.Value
//установка вставной полки
if (ShelfZag.Value < 0 || WidthPol <= 142) {
alert('Значение заглубления полки не корректно!\nВедите значение заново.')
} else {
if (PolkaVs.Value == true) {
for (var k = 0; k < CountPol.Value; k++)
if (ShelfOffset.Value < 0 || ShelfOffset.Value > 5) {
alert('Значение отступа полки не корректно!\nВведите значение заново.')
} else {
if (ShelfOffset.Value > 0) {
Y2 += Prol;
SideMat.SetActive();
Zpol = Depth - Zag;
Polka = AddHorizPanel(ShLeft, Smech, ShRight, Zpol, Y2);
//ZPD1 = A2 + 64; //отв под полкодержатель сзади
//OstFase = (Zpol - ZPD1) % 32;
//ZPD2 = Zpol - OstFase - 32
Polka.TextureOrientation = ftoHorizontal;
Polka.AddButt(ButtC, 2);
Polka.Name = 'Полка вставная';
Polkoder = Полкодержатель.Value;
Polkoder.Mount(Polka, LeftPanel, ShLeft, Y2, Zpol - 40);
Polkoder.Mount(Polka, RightPanel, ShRight, Y2, Zpol - 40);
Polkoder.Mount(Polka, LeftPanel, ShLeft, Y2, Smech + 40);
Polkoder.Mount(Polka, RightPanel, ShRight, Y2, Smech + 40);
Y2 += SideMat.Thickness;
} else {
Y2 += Prol;
SideMat.SetActive();
Zpol = Depth - Zag;
Polka = AddHorizPanel(ShLeft, Smech, ShRight, Zpol, Y2);
//ZPD1 = A2 + 64; //отв под полкодержатель сзади
//OstFase = (Zpol - ZPD1) % 32;
//ZPD2 = Zpol - OstFase - 32
Polka.TextureOrientation = ftoHorizontal;
Polka.AddButt(ButtC, 2);
Polka.Name = 'Полка';
EvrAndShkant(Polka, LeftPanel, ShLeft, Y2, Zpol - 40);
EvrAndShkant(Polka, RightPanel, ShRight, Y2, Zpol - 40);
EvrAndShkant(Polka, LeftPanel, ShLeft, Y2, Smech + 40);
EvrAndShkant(Polka, RightPanel, ShRight, Y2, Smech + 40);
Y2 += SideMat.Thickness;
}
}
}
}
if (Bottom > 820) //построения для глубины меньше 315
{
Dno.Name = 'Полка';

CZ.Clear();
CZ.AddLine(0, -Zadst.GSize.y, 0, -43);
CZ.AddLine(0, -43, 16, -43);
CZ.AddLine(16, -43, 16, 0);
CZ.AddLine(16, 0, Zadst.GSize.x - 16, 0);
CZ.AddLine(Zadst.GSize.x - 16, 0, Zadst.GSize.x - 16, -43);
CZ.AddLine(Zadst.GSize.x - 16, -43, Zadst.GSize.x, -43);
CZ.AddLine(Zadst.GSize.x, -43, Zadst.GSize.x, -Zadst.GSize.y);
CZ.AddLine(Zadst.GSize.x, -Zadst.GSize.y, 0, -Zadst.GSize.y);

EvrAndShkant(Dno, LeftPanel, ShLeft, Y2, Depth - 40);
EvrAndShkant(Dno, RightPanel, ShRight, Y2, Depth - 40);
EvrAndShkant(Dno, LeftPanel, ShLeft, Y2, Smech + 40);
EvrAndShkant(Dno, RightPanel, ShRight, Y2, Smech + 40);
EvrAndShkant(Planka, LeftPanel, ShLeft, Y2, Depth - 40);
EvrAndShkant(Planka, RightPanel, ShRight, Y2, Depth - 40);
EvrAndShkant(Planka, LeftPanel, ShLeft, Y2, Smech + 40);
EvrAndShkant(Planka, RightPanel, ShRight, Y2, Smech + 40);
NavesL = НавескаЛевая.Value;
NavesL.Mount(Planka, LeftPanel, LeftX, Y1, Smech);
NavesR = НавескаПравая.Value;
NavesR.Mount(Planka, RightPanel, RightX, Y1, Smech);
} else //построения для глубины больше 315
{
Dno.Name = 'Дно';
if (Stolesh.Value == true) {
MatStol.SetActive()
Stol = AddExtrusion();
SK = Stol.Contour;
LS1 = SK.AddLine(0, 0, 0, 25);
LS2 = SK.AddLine(0, 25,600, 25);
LS3 = SK.AddLine(600, 25,600, 0);
LS4 = SK.AddLine(600, 0, 0, 0);
SK.RoundingEx(LS2, LS3, Depth + 95 - 1, 25 - 1, 9);
Stol.Rotate(AxisY, -90);
Stol.Contour.Move(Depth - 550, Top);
Stol.PositionX = Left;
Stol.Thickness = (Left - Right);
Stol.Name = 'Столешница';
Stol.Build();
}

EvrAndShkant(LeftPanel, Dno, ShLeft, Y2, Depth - 40);
EvrAndShkant(RightPanel, Dno, ShRight, Y2, Depth - 40);
EvrAndShkant(LeftPanel, Dno, ShLeft, Y2, Smech + 40);
EvrAndShkant(RightPanel, Dno, ShRight, Y2, Smech + 40);
EvrAndShkant(PlankaZ, LeftPanel, ShLeft, Y2, Depth - 40);
EvrAndShkant(PlankaZ, RightPanel, ShRight, Y2, Depth - 40);
EvrAndShkant(PlankaP, LeftPanel, ShLeft, Y2, Smech + 40);
EvrAndShkant(PlankaP, RightPanel, ShRight, Y2, Smech + 40);
Opora1 = ОпораПерёд.Value;
Opora2 = ОпораЗад.Value;
Opora1.Mount1(Dno, LeftX + 40, -10, Depth -76, 0);
Opora2.Mount1(Dno, LeftX + 40, -10, Smech + 56, 0);
Opora1.Mount1(Dno, RightX - 40, -10, Depth - 76, 0);
Opora2.Mount1(Dno, RightX - 40, -10, Smech + 56, 0);
}
BL = EndParametricBlock();
}
[свернуть]
и можно ли вообще так сделать?
luciffer вне форума   Ответить с цитированием Вверх
Старый 15.04.2015, 14:05   #779
luciffer
Пользователь
 
Регистрация: 21.02.2015
Адрес: Тамбов
Сообщений: 41
Сказал(а) спасибо: 15
Поблагодарили 40 раз(а) в 10 сообщениях
Вес репутации: 124
luciffer на пути к лучшему
По умолчанию

Небольшая доработка: добавил выбор материала цоколя + выбор кромки на него.(раньше был под цвет корпуса)



p.s.: всё же если кто знает как сюда выбор ящиков вставить помогите с этим делом пожалуйста) заранее благодарен)
Вложения
Тип файла: zip Кухонные шкафчики.zip (16.9 Кб, 177 просмотров)
luciffer вне форума   Ответить с цитированием Вверх
3 пользователя(ей) сказали cпасибо:
Kerby (21.04.2015), kmboris13 (05.09.2018), С.А. (03.11.2016)
Старый 20.04.2015, 14:16   #780
luciffer
Пользователь
 
Регистрация: 21.02.2015
Адрес: Тамбов
Сообщений: 41
Сказал(а) спасибо: 15
Поблагодарили 40 раз(а) в 10 сообщениях
Вес репутации: 124
luciffer на пути к лучшему
По умолчанию

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

Нижняя навигация
Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БАЗИС 9 - Скрипты Igor_482 Базис-мебельщик. Скрипты 1442 04.04.2024 11:28
БАЗИС 9 nayrogi Базис-мебельщик 9 785 01.10.2022 23:13
БАЗИС-ЧПУ 8 chingisnah Базис-мебельщик 8 119 21.12.2017 22:04
Заявки на скрипты dr_john Система БАЗИС 37 01.03.2016 10:36
Базис-7,"Народный Базис"и Windows-8 sergeyzak18 "НАРОДНЫЙ" базис 23 16.01.2014 00:37


Текущее время: 02:34. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© 2007-2023 PROMEBEL

џндекс.Њетрика