|
|
|
|
|
06.06.2017, 08:56
|
|
БАЗИС 10 - Скрипты
systland
VIP
Регистрация: 30.10.2007
Адрес: Москва
Сообщений: 565
Сказал(а) спасибо: 303
Поблагодарили 451 раз(а) в 189 сообщениях
06.06.2017, 08:56
Рейтинг:
()
Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 10 в этой теме.
Последний раз редактировалось systland; 26.12.2017 в 11:52..
|
Просмотров: 434593
|
23.11.2018, 12:59
|
#301
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
|
Цитата:
Сообщение от Анатолий.ru
Ошибка во вложении.
|
Спасибо за скриншот. Сам впервые встречаю такую ошибку. Я надеялся на то, что в описании ошибки будет хоть какая-то информация о том, что и как произошло, но, видно, не судьба. Единственное, что могу посоветовать, это (если вы уверены, что ошибка в приведённом вами куске кода) писать результат функции NewVector в отдельную переменную и ёё же передавать в функцию RotateTo. Если поможет - хорошо, если нет - проблема, скорее всего, в реализации функции RotateTo или/и ViewAll().
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
25.11.2018, 16:42
|
#302
|
Пользователь
Регистрация: 22.07.2014
Адрес: Sochi
Сообщений: 83
Сказал(а) спасибо: 143
Поблагодарили 135 раз(а) в 36 сообщениях
Вес репутации: 154
|
Проекция V2.0
Цитата:
Сообщение от Letos
Сам впервые встречаю такую ошибку...... Если поможет - хорошо, если нет - проблема, ).
|
Спасибо вам Letos, вы единственный кто откликнулся.
Поправил скрипт ошибок больше нет! Второй день юзаю без проблем.
Скрытый текст
Action.DS.Camera.RotateTo(NewVector(0.4773502691896255,
0.39,
0.5773502655)); //Повернуть камеру
Action.Finish();
Action.Continue();
Action.Control.ViewAll(); //Показать все [свернуть]
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
30.11.2018, 11:41
|
#303
|
Местный
Регистрация: 02.07.2011
Сообщений: 191
Сказал(а) спасибо: 93
Поблагодарили 105 раз(а) в 44 сообщениях
Вес репутации: 196
|
Кто знает как работает функция
Action.OnKeyDown
или как отследить нажатие кнопок на клавиатуре
|
|
|
30.11.2018, 12:28
|
#304
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
|
Цитата:
Сообщение от wizardpnz
Кто знает как работает функция
Action.OnKeyDown
или как отследить нажатие кнопок на клавиатуре
|
Посмотрел с отладчиком - не приходит на функцию, которую я задаю, так что скорее всего она никак не работает.
|
|
|
30.11.2018, 12:34
|
#305
|
Местный
Регистрация: 02.07.2011
Сообщений: 191
Сказал(а) спасибо: 93
Поблагодарили 105 раз(а) в 44 сообщениях
Вес репутации: 196
|
когда ставишь панель руками и жмёшь пробел у неё меняются точка привязки
хотел реализовать такое и вращение панели
вообщем поиграть в тетрис в базисе
|
|
|
30.11.2018, 13:22
|
#306
|
Местный
Регистрация: 02.07.2011
Сообщений: 191
Сказал(а) спасибо: 93
Поблагодарили 105 раз(а) в 44 сообщениях
Вес репутации: 196
|
Как вернуть Фокус на сцену, после нажатия кнопки
Prop.NewButton('start');
перестаёт работать привязка курсора по нажатию (Shift, Ctrl, Alt)
Код:
Action.Control.SetFocus();
нашёл
сделал вместо перехвата кнопок просто кнопки на панели свойств
|
|
|
01.12.2018, 23:17
|
#307
|
Новичок
Регистрация: 11.07.2018
Сообщений: 13
Сказал(а) спасибо: 22
Поблагодарили 1 раз в 1 сообщении
Вес репутации: 0
|
Всем привет! Во общем нужна помощь людей которые понимают что и как делать в редакторе скриптов.
Есть скрипт для дверей-купе, я его методам тыка подогнал под Aristo, то есть Вертикальные профиля "С" у меня правильного размера, так же горизонты то же правильного размера, так же вставка 4мм(Зеркало) правильно рассчитывается.
Хотел бы узнать как можно скрипт переделать что-бы можно было выбирать вставку 4-8-10мм, какой будет цвет, и как можно добавить шлегель, и уплотнитель?
Качал от сюда
Сам скрипт вот(я же правильно понимаю что он вместе с базисом идёт?):
Код:
SetCamera(p3dFront);
OkBtn = NewButtonInput("Построить")
OkBtn.OnChange = function() {
Action.Finish()
}
Left = GetEdge("Укажите левую границу", AxisY).First.x;
Right = GetEdge("Укажите правую границу", AxisY).First.x;
Top = GetEdge("Укажите верхнюю границу", AxisX).First.y;
Bottom = GetEdge("Укажите нижнюю границу", AxisX).First.y;
SetCamera(p3dLeft);
Front = GetEdge('Укажите переднюю границу', AxisY).First.z;
if (Left > Right) {
AAA = Left;
Left = Right;
Right = AAA;
}
if (Bottom > Top) {
AAA = Bottom;
Bottom = Top;
Top = AAA;
}
FileOptions = 'SaveKupe.xml';
MakeProp();
Action.Properties.Load(FileOptions);
Action.OnFinish = function() {
Action.Properties.Save(FileOptions);
}
function MakeProp()
{
Prop = Action.Properties;
VidProf = Prop.NewCombo('Тип профиля ручки', 'Профиль С\nПрофиль Н');
KolDv = Prop.NewCombo('Количество дверей', '2\n3\n4\n5');
KolDv.OnChange = function ()
{
KolDv.ChildrenEnabled = KolDv.Value;
}
Centr4 = KolDv.NewBool('Две центральные спереди');
if (KolDv.ItemIndex == 2)
Centr4.Visible = true
else
Centr4.Visible = false
KolRaz = Prop.NewCombo('Количество секция', '1\n2\n3\n4\n5\n6\n7')
ColorProf = Prop.NewCombo('Цвет профиля', 'Золото матовое\nХром матовый\nБлестящая бронза\nШампань матовая\nШампань блестящая\nВенге\nВишня\nДуб дымчатый\nОрех итальянский\nОрех французский\nВенге темный')
Prop.OnChange = function ()
{
if (KolDv.ItemIndex == 2)
Centr4.Visible = true
else
Centr4.Visible = false
DeleteNewObjects();
PR()
Raschet();
MakeNap();
MakeDoors();
}
Btn = Prop.NewButton('Построить')
Btn.OnClick = function()
{
Action.Finish()
}
}
KolRaz.OnChange = function () {
DeleteNewObjects();
Raschet();
MakeNap();
MakeDoors();
}
KolDv.OnChange = function () {
DeleteNewObjects();
Raschet();
MakeNap();
MakeDoors();
}
//задание параметров профилей, ниши и т.д.
WidthNiche = Right - Left; //ширина ниши
HeightNiche = Top - Bottom; //высота ниши
LengthNaprav = WidthNiche - 2; //длина нижней и верхней направляющих
HeightProf = HeightNiche - 40; //высота профиля ручки
HeightProfBot = 57; //высота нижнего профиля двери
HeightProfTop = 22; //высота верхнего профиля двери
HeightProfCentr = 25; //высота среднего профиля двери
ThickRamcka = 14.5; //толщина горизонтальных профилей двери
ThickNapBot = 6; //толщина нижней направляющей
WidthNapBot = 63; //ширина нижней направляющей
WidthNapTop = 80; //ширина верхней направляющей
ZagNapol = 7; //заглубление наполнения двери толщиной 4 мм
ZdvigProf = 8.75; //здиг асимметричного профиля относительно симметричного
ZaglubRam = 0.5; //заглубление горизонтальных профилей в профиль ручку
AxisFront = WidthNapTop * 0.5; //Z передней двери
AxisBack = WidthNapTop * 0.75; //Z задней двери
ZvigNapBot = (WidthNapTop - WidthNapBot) * 0.5;
function PR()
{
if (VidProf.ItemIndex == 0)
{
WidthProf = 27; //ширина асимметричного профиля двери
ThickProf = 33.5; //толщина асимметричного профиля двери
//Положенеие по глубине задней двери для асимметричного профиля
ZdvigRamckaCback = Front - AxisBack - (ThickRamcka * 0.5) - ZdvigProf;//горизонтальные профиля
DspProfCback = Front - AxisBack - (10 / 2) - ZdvigProf;//ДСП (наполнение)
ZdvigProfCback = Front - AxisBack - (ThickProf * 0.5);//профиль ручка
NapZ = Front - ZvigNapBot - ZdvigProf;//Z нижней направляющей для асимметричного профиля
CutProf = 'Профиль С.frw';
MaterialProf = 'Ветрикальный профиль С ' + ColorProf.Value;
}
else
{
WidthProf = 35; //ширина симметричного профиля двери
ThickProf = 34; //толщина симметричного профиля двери
//Положенеие по глубине задней двери для симметричного профиля
ZdvigRamckaCback = Front - AxisBack - (ThickRamcka * 0.5);
DspProfCback = Front - AxisBack - (10 / 2); //ДСП (наполнение)
ZdvigProfCback = Front - AxisBack - (ThickProf * 0.5);//профиль ручка
NapZ = Front - ZvigNapBot;//Z нижней направляющей для симметричного профиля
CutProf = 'Профиль Н.frw';
MaterialProf = 'Ветрикальный профиль Н ' + ColorProf.Value;
}
}
function Raschet()
{
Nalog = KolDv.Value - 1; //кол-во пересечений дверей
//system.log("Ниша = " + WidthNiche);
WidthDver = ((WidthNiche + (WidthProf * Nalog)) / KolDv.Value); //ширина двери
WidthDverC = Math.floor(WidthDver);
Ost = ((WidthNiche + (WidthProf * Nalog)) % WidthDverC) / KolDv.Value;
if (Ost > 0)
Add = 1
else
Add = 0
WidthDverC1 = WidthDverC + Add;
Ost3 = (1 - Ost) * KolDv.Value;
ZdviX = Ost3 * 0.25;
LengthProfRam = (WidthDverC1 - (WidthProf * 2)) + (ZaglubRam * 2); //длинна горизонтальныз профилей
LengthProfRam1 = Math.floor(LengthProfRam);
//параметры для установки разделительного профиля
Count = KolRaz.Value;
Raztop = Top - 30 - HeightProfTop;//верх ниши
Razbotton = Bottom + 10 + HeightProfBot;//низ ниши
SectionRaz = Raztop - Razbotton;
Section = (SectionRaz - ((Count - 1) * HeightProfCentr)) / Count;
//определение параметров для установки элементов дверей по оси X
LeftX = Left + WidthProf; //левая граница + толщина профиля ручки
RightX = WidthDverC1 - WidthProf; //правая граница - толщина профиля рчки
LeftDsp = LeftX - ZagNapol; //граница наполнения слева
RightDsp = RightX + ZagNapol + Left; //граница наполнения справа
LeftRam = Left + WidthProf - ZaglubRam; //граница слева горизонт профилей
SN = (WidthNiche * 0.5);
SN1 = Math.floor(SN);
//координаты установки дверей
HalfProf = WidthProf * 0.5
Right5 = WidthNiche - WidthDverC1;//координата Х правой двери
Right3 = SN - (WidthDverC1 * 0.5)
}
function Doors4()
{
WidthDver = (WidthNiche + (WidthProf * 2)) / KolDv.Value; //ширина двери
WidthDverC = Math.floor(WidthDver);
Ost = ((WidthNiche + (WidthProf * 2)) % WidthDverC) / KolDv.Value;
if (Ost > 0)
Add = 1
else
Add = 0
WidthDverC1 = WidthDverC + Add;
Ost3 = (1 - Ost) * KolDv.Value;
ZdviX = Ost3 * 0.5;
LengthProfRam = (WidthDverC1 - (WidthProf * 2)); //длинна горизонтальныз профилей
LengthProfRam1 = Math.floor(LengthProfRam);
RightX = WidthDverC1 - WidthProf; //правая граница - толщина профиля рчки
RightDsp = RightX + ZagNapol + Left; //граница наполнения справа
Right5 = WidthNiche - WidthDverC1;//координата Х правой двери
}
function MakeNap()
{
BotNap = AddExtrusion(); //нижняя направляющая для асимметричного профиля
BotNap.MaterialName = "Направляющая нижняя двухполозная " + ColorProf.Value;
BotNap.MaterialWidth = WidthNapBot;
File = 'Направляющая нижняя.frw';
BotNap.Contour.Load(File);
BotNap.Rotate(AxisY, -90);
BotNap.Thickness = LengthNaprav;
BotNap.Position = NewVector(Right - 1, Bottom, NapZ)
BotNap.Name = "Направляющая нижняя";
BotNap.Build();
TopNap = AddExtrusion(); //верхняя направляющая
TopNap.MaterialName = "Направляющая верхняя двухполозная " + ColorProf.Value;
TopNap.MaterialWidth = WidthNapTop;
File = 'Направляющая верхняя.frw';
TopNap.Contour.Load(File);
TopNap.Rotate(AxisY, -90);
TopNap.Thickness = LengthNaprav;
TopNap.Position = NewVector(Right - 1, Top, Front)
TopNap.Name = "Направляющая верхняя";
TopNap.Build();
}
function MakeDoors()
{
switch (KolDv.ItemIndex)
{
case 0:
DverC();//установка 1-ой двери
BlDoorC2 = AddCopy(BlDoorC);//установка 2-ой двери
BlDoorC2.Position = NewVector(Right5, 0, AxisFront)
BlDoorC.AnimType = AnimationType.SDoorLeft;
BlDoorC2.AnimType = AnimationType.SDoorRight;
BlDoorC2.Build();
break
case 1:
DverC();//установка 1-ой двери
BlDoorC2 = AddCopy(BlDoorC);//установка 2-ой двери
BlDoorC2.Position = NewVector(Right3, 0, AxisFront)
BlDoorC3 = AddCopy(BlDoorC);//установка 3-ей двери
BlDoorC3.Position = NewVector(Right5, 0, 0)
BlDoorC.AnimType = AnimationType.SDoorLeft;
BlDoorC2.AnimType = AnimationType.SDoorRight;
BlDoorC3.AnimType = AnimationType.SDoorRight;
BlDoorC2.Build();
BlDoorC3.Build();
break
case 2:
if (Centr4.Value == true)
{
Doors4();
DverC();//установка 1-ой двери
BlDoorC2 = AddCopy(BlDoorC);//установка 2-ой двери
BlDoorC2.Position = NewVector(SN - WidthDverC1, 0, AxisFront);
BlDoorC3 = AddCopy(BlDoorC);//установка 3-ей двери
BlDoorC3.Position = NewVector(SN, 0, AxisFront);
BlDoorC4 = AddCopy(BlDoorC);//установка 4-ой двери
BlDoorC4.Position = NewVector(Right5, 0, 0);
BlDoorC.AnimType = AnimationType.SDoorLeft;
BlDoorC2.AnimType = AnimationType.SDoorRight;
BlDoorC3.AnimType = AnimationType.SDoorLeft;
BlDoorC4.AnimType = AnimationType.SDoorRight;
BlDoorC2.Build();
BlDoorC3.Build();
BlDoorC4.Build();
}
else
{
DverC();//установка 1-ой двери
BlDoorC2 = AddCopy(BlDoorC);//установка 2-ой двери
BlDoorC2.Position = NewVector((SN - WidthDverC1 + HalfProf), 0, AxisFront);
BlDoorC3 = AddCopy(BlDoorC);//установка 3-ей двери
BlDoorC3.Position = NewVector((SN - WidthProf * 0.5), 0, 0);
BlDoorC4 = AddCopy(BlDoorC);//установка 4-ой двери
BlDoorC4.Position = NewVector(Right5, 0, AxisFront);
BlDoorC.AnimType = AnimationType.SDoorLeft;
BlDoorC2.AnimType = AnimationType.SDoorRight;
BlDoorC3.AnimType = AnimationType.SDoorLeft;
BlDoorC4.AnimType = AnimationType.SDoorRight;
BlDoorC2.Build();
BlDoorC3.Build();
BlDoorC4.Build();
}
break
case 3:
DverC();//установка 1-ой двери
BlDoorC2 = AddCopy(BlDoorC);//установка 2-ой двери
BlDoorC2.Position = NewVector((WidthDverC1 - ZdviX - WidthProf), 0, AxisFront);
BlDoorC3 = AddCopy(BlDoorC);//установка 3-ей двери
BlDoorC3.Position = NewVector(Right3, 0, 0);
BlDoorC4 = AddCopy(BlDoorC);//установка 4-ой двери
BlDoorC4.Position = NewVector((WidthNiche - WidthDverC1 * 2) + WidthProf + ZdviX, 0, AxisFront);
BlDoorC5 = AddCopy(BlDoorC);//установка 5-ой двери
BlDoorC5.Position = NewVector(Right5, 0, 0);
BlDoorC.AnimType = AnimationType.SDoorLeft;
BlDoorC2.AnimType = AnimationType.SDoorRight;
BlDoorC3.AnimType = AnimationType.SDoorLeft;
BlDoorC4.AnimType = AnimationType.SDoorRight;
BlDoorC5.AnimType = AnimationType.SDoorRight;
BlDoorC2.Build();
BlDoorC3.Build();
BlDoorC4.Build();
BlDoorC5.Build();
break
}
}
function DverC()
{
BlDoorC = BeginBlock("Дверь купе")
ProfCL = AddExtrusion(); //профиль ручка асимметричный левый
ProfCL.MaterialName = MaterialProf;
ProfCL.MaterialWidth = WidthProf;
File = CutProf;
ProfCL.Contour.Load(File);
ProfCL.Rotate(AxisX, -90);
ProfCL.Thickness = HeightProf;
ProfCL.Position = NewVector(Left, Bottom + 10, ZdvigProfCback);
ProfCL.Name = "Профиль ручка";
ProfCR = AddExtrusion(); //профиль ручка асимметричный правый
ProfCR.MaterialName = MaterialProf;
ProfCR.MaterialWidth = WidthProf;
File = CutProf;
ProfCR.Contour.Load(File);
ProfCR.Contour.Symmetry(0, 0, 0, 1, false);
ProfCR.Rotate(AxisX, -90);
ProfCR.Thickness = HeightProf;
ProfCR.Position = NewVector(WidthDverC1 + Left, Bottom + 10, ZdvigProfCback);
ProfCR.Name = "Профиль ручка";
ProfBot = AddExtrusion(); //профиль нижний
ProfBot.MaterialName = "Рамка нижняя " + ColorProf.Value;
ProfBot.MaterialWidth = HeightProfBot;
File = 'Профиль нижний.frw';
ProfBot.Contour.Load(File);
ProfBot.Rotate(AxisY, 90);
ProfBot.Thickness = LengthProfRam1;
ProfBot.Position = NewVector(LeftRam, Bottom + 10, ZdvigRamckaCback)
ProfBot.Name = "Профиль нижний";
ProfTop = AddExtrusion(); //профиль верхний
ProfTop.MaterialName = "Рамка верхняя " + ColorProf.Value;
ProfTop.MaterialWidth = HeightProfTop;
File = 'Профиль верхний.frw';
ProfTop.Contour.Load(File);
ProfTop.Rotate(AxisY, 90);
ProfTop.Thickness = LengthProfRam1;
ProfTop.Position = NewVector(LeftRam, Top - 30, ZdvigRamckaCback)
ProfTop.Name = "Профиль верхний";
PosY1 = Razbotton;
PosY2 = Razbotton;
//профиль разделительный
for (var k = 1; k < Count; k++)
{
PosY1 += Section;
ProfRazd = AddExtrusion();
ProfRazd.MaterialName = "Рамка средняя " + ColorProf.Value;
ProfRazd.MaterialWidth = HeightProfTop;
File = 'Профиль разделительный.frw';
ProfRazd.Contour.Load(File);
ProfRazd.Rotate(AxisY, 90);
ProfRazd.Thickness = LengthProfRam1;
ProfRazd.Position = NewVector(LeftRam, PosY1, ZdvigRamckaCback)
ProfRazd.Name = "Профиль средний";
PosY1 += HeightProfCentr;
}
//установка наполнения
for (var k = 0; k < Count; k++)
{
PosY2;
ActiveMaterial.Make('Зеркало 4мм', 4);
Ydsp1 = (SectionRaz - (Section + HeightProfCentr) * (Count - 1)) + 11
Ydsp = Math.floor(Ydsp1);
DSP = AddFrontPanel(LeftDsp, PosY2 - 8, RightDsp, Ydsp + PosY2, DspProfCback);
DSP.TextureOrientation = ftoVertical;
DSP.Name = "Панель двери"
PosY2 = Section + HeightProfCentr + PosY2;
}
EndBlock();
BlDoorC.Build();
}
PR()
Raschet();
MakeNap();
MakeDoors();
SetCamera(p3dFront);
Action.Continue();
Я знаю много спрашиваю, и возможно много чего в одном нельзя сделать, но мне хотя бы расскажите какие строки за что отвечаю(я знаю что там расписанно всё)
И ещё вопрос, как или чем редактировать frw файлы?
Последний раз редактировалось igor_medved; 02.12.2018 в 09:45.
|
|
|
03.12.2018, 10:19
|
#308
|
Местный
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 734
Сказал(а) спасибо: 1,529
Поблагодарили 884 раз(а) в 376 сообщениях
Вес репутации: 403
|
Цитата:
Сообщение от igor_medved
Я знаю много спрашиваю, и возможно много чего в одном нельзя сделать, но мне хотя бы расскажите какие строки за что отвечаю(я знаю что там расписанно всё)
|
Большинство строк в этом скрипте снабжены комментариями, так что разобраться в нем не сложно. Однако, если у Вас отсутствуют познания в JavaScript, то я бы посоветовал заняться сперва его изучением.
FRW-файлы редактируются в Базисе, это старый формат фрагмента.
|
|
|
Пользователь сказал cпасибо:
|
|
03.12.2018, 11:21
|
#309
|
Новичок
Регистрация: 11.07.2018
Сообщений: 13
Сказал(а) спасибо: 22
Поблагодарили 1 раз в 1 сообщении
Вес репутации: 0
|
Цитата:
Сообщение от Ovsyanicov
Большинство строк в этом скрипте снабжены комментариями, так что разобраться в нем не сложно. Однако, если у Вас отсутствуют познания в JavaScript, то я бы посоветовал заняться сперва его изучением.
FRW-файлы редактируются в Базисе, это старый формат фрагмента.
|
В Базисе не открывается, к большому сожалению!
|
|
|
03.12.2018, 17:58
|
#310
|
Местный
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 734
Сказал(а) спасибо: 1,529
Поблагодарили 884 раз(а) в 376 сообщениях
Вес репутации: 403
|
Цитата:
Сообщение от igor_medved
В Базисе не открывается, к большому сожалению!
|
Чтобы открыть FRW-файл, в котором сохранены 2D-элементы (например, какой-либо контур), выполняем по пунктам:
1. Главное меню/Файл/Создать/ Чертеж;
2. снова Главное меню/Файл/Поставить фрагмент;
3. выбрать необходимый файл;
4. на листе чертежа указать ЛКМ точку привязки фрагмента.
Чтобы открыть FRW-файл, в котором сохранены 3D-объекты (например, какая-либо фурнитура), выполняем по пунктам:
1. Главное меню/Файл/Создать/ Модель (или Главное меню/Файл/Создать/ Фурнитура или Главное меню/Файл/Создать/ Фрагмент, зависит от задачи);
2. снова Главное меню/Файл/Поставить фрагмент;
3. выбрать необходимый файл;
4. на модели указать ЛКМ точку привязки фрагмента.
|
|
|
6 пользователя(ей) сказали cпасибо:
|
|
|
|
|
Нижняя навигация
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 23:07. Часовой пояс GMT +3.
|