Форум профессиональных мебельщиков PROMEBELclub

Форум профессиональных мебельщиков PROMEBELclub (https://промебельклуб.рф/forum/index.php)
-   Базис-мебельщик. Скрипты (https://промебельклуб.рф/forum/forumdisplay.php?f=273)
-   -   БАЗИС 10 - Скрипты (https://промебельклуб.рф/forum/showthread.php?t=12463)

Letos 17.10.2017 14:46

Цитата:

Сообщение от RAYMAN2100 (Сообщение 435698)
Добрый день! Подскажите пожалуйста почему не работаю скрипты для 10 версии. Были созданы в 9 версии и все работало.
Показал данную проблему программисту, попробовали написать в редакторе скриптов вот это и запустить alert("hello");
Но выдало ошибку. В чем проблема. Спасибо

А можете скрин с ошибкой показать? А то так сложно ответить. Ну и если не сложно, то код скрипта, который не работает (хотя, в случае с 'alert("hello")' достаточно будет и скрина).

Ovsyanicov 17.10.2017 16:31

Вложений: 1
Цитата:

Сообщение от RAYMAN2100 (Сообщение 435698)
Добрый день! Подскажите пожалуйста почему не работаю скрипты для 10 версии. Были созданы в 9 версии и все работало.
Показал данную проблему программисту, попробовали написать в редакторе скриптов вот это и запустить alert("hello");
Но выдало ошибку. В чем проблема. Спасибо

Движок в 10-ке претерпел изменения, так что некоторые функции, работавшие в 9-ке, теперь не работают и, соответственно, скрипты необходимо переписывать.
Однако такая штука как alert работает так, как положено:
Вложение 122431

RAYMAN2100 18.10.2017 21:34

Вложений: 1
Добрый вечер. Большое спасибо всем ответившим на мое сообщение.
Прикрепляю скриншот ошибки после запуска простейшего скрипта.

AlexBolton 18.10.2017 23:03

Цитата:

Сообщение от RAYMAN2100 (Сообщение 435851)
Прикрепляю скриншот ошибки после запуска простейшего скрипта.

WinXP ?

Ovsyanicov 19.10.2017 09:36

Цитата:

Сообщение от RAYMAN2100 (Сообщение 435851)
Прикрепляю скриншот ошибки после запуска простейшего скрипта.

Скриншот, мягко говорю, неинформативен. Для подробностей надо нажать надпись нажмите здесь в окне с ошибкой.

Цитата:

Сообщение от AlexBolton (Сообщение 435855)
WinXP ?

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

AlexBolton 19.10.2017 09:54

Цитата:

Сообщение от Ovsyanicov (Сообщение 435881)
На 7-ке вчера поймал такую же ошибку доступа к памяти с таким же адресом, но не при запуске скрипта, а при банальном закрытии программы.

тут ещё можно ковыряться, а вот с node.dll БМ10 помахал пользователям WindowsXP на прощанье по-английски плюшкой...

http://s019.radikal.ru/i630/1710/8f/18e04933c853.jpg http://s019.radikal.ru/i634/1710/1b/42243b99aa73.png
последняя версия для Windows XP - 5.12.0, в БМ10 - 7.0.0, без комментариев

то есть здесь нужно писать для пользователей: "MS Windows XP SP3 - ограниченный функционал".....

Sergenald 24.10.2017 15:39

День добрый. Вот такая задумка появилась: в окне properties сначала добавляется для верхнего щита кромка общая. за тем свёрнутой группой идут детальные настройки для каждой кромки по отдельности.

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


menu = Action.Properties;
AllButtTop = menu.NewButt('Общая кромка');
ButtTop = menu.NewGroup ('Детальная настройка')
{
ButtTop_0 = ButtTop.NewButt('Первая кромка');
ButtTop_1 = ButtTop.NewButt('Вторая кромка');
ButtTop_2 = ButtTop.NewButt('Третья кромка');
ButtTop_3 = ButtTop.NewButt('Четвёртая кромка');
}
ButtTop.Expanded = false;
[свернуть]

И всё бы ни чего, НО. Хотел при активации группы присваивать значение AllButtTop всем ниже идущим переменным кромок. Да только переменные создаются в типе ScriptButtProperties. В котором из свойств (по мануалу) только Thickness и Width, а из методов SetActive(). Что, как получается, исключает возможность занесения в них информации скриптом, что меня неимоверно расстраивает. Так вот вопрос: есть ли возможность провернуть сие действие именно в окне properties? Или в данной реализации без бубна ни куда?

AnRusik 31.10.2017 11:55

Коллеги. Не пойму что нужно исправить, чтобы этот же скрипт работал в Базис 10? *PARDON*
Спасибо.

Цитата:

Сообщение от Uncle (Сообщение 425112)
Уважаемые знатоки скрипта.. Подскажите, пожалуйста. Имеется скрипт для установки подпятников на торцы боковин:

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


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();













true;





//////////////////////////////////////////


//////////////////////////////////////////

////////////////////////////////////////// --------- ОКНО СВОЙСТВ


function MakeProperties() {

Prop = Action.Properties;



otsPered = Prop.NewNumber('Отступ Перед',50);
otsZad = Prop.NewNumber('Отступ Зад',70);


K_row = Prop.NewNumber('Количество на деталь',2);

K_row.OnChange = function() {

if (K_row.Value<1) {

K_row.Value=1
}
}

Krepej = Prop.NewFurniture('Ножки в торец или подпятники');
V_razniyeStorony = Prop.NewBool('В разные стороны')
V_Drugiye_razniyeStorony = Prop.NewBool('В ДРУГИЕ разные стороны')
PovernutDop = Prop.NewCombo('Развернить ножку на X', '0\n90\n180\n270');
PovernutDopY = Prop.NewCombo('Развернить ножку на Y', '0\n90\n180\n270');
PovernutDopZ = Prop.NewCombo('Развернить ножку на Z', '0\n90\n180\n270');
OtrazitX = Prop.NewBool('Отразить X')
OtrazitY = Prop.NewBool('Отразить Y')
OtrazitZ = Prop.NewBool('Отразить Z')
NaSeredinuTolshiny = Prop.NewBool('НаСерединуТолщины(дляТипаРучка))')


OkBtn = Prop.NewButton('Построить',true);


OkBtn.OnClick = function() {
Make(); //Вызываем функцию построения всех панелей
Action.Finish();
}







Prop.OnChange = function() {
//if (Fas.Value > Hd.Value) alert('Предупреждение! Фаска больше чем высота дна.')
Make(); //Вызываем функцию построения всех панелей
};


}





//Obj = Model.Selected;


function Make()
{
DeleteNewObjects();
//FileFreza = 'Фреза1.frw';
// conturFrezi=NewContour();
// conturFrezi.Load(FileFreza);
Model.forEach (function(Obj) {

if (Obj.Selected == true)

{
Nojki(Obj)




}
} )





}

function Nojki(Obj) {

//if (system.fileExists(Krepej.Value))
if (Krepej.Value)
{


otsPered_=otsPered.Value;
otsZad_=otsZad.Value;

ryadov = K_row.Value;


lnpv = GabarityContura(Obj);


ln =lnpv[0];
pv = lnpv[1];



//Niz = OpredelitNiz(Obj, ln, pv)

// NizWdol = p.ContourWidth
// NizH = p.ContourHeight

// пока не определили

if(V_razniyeStorony.Value)
{

ugolPovorotaPered=(-(135+(90*(ryad-1)/(ryadov-1)))) + Math.round(PovernutDop.Value)
ugolPovorotaZad=(-(45-(90*(ryad-1)/(ryadov-1)))) + Math.round(PovernutDop.Value)

}
else
{

ugolPovorotaPered=0
ugolPovorotaZad=0
}







mejdu_ryadov = (pv.x-ln.x-otsPered_-otsZad_)/(ryadov-1)

seredinaX = ln.x + (pv.x - ln.x) / 2

if (Math.round(ryadov)==1)
{

p1 = NewPoint(seredinaX, ln.y)

podp = Ustanovit1Krepiyoj(Obj, p1, ugolPovorotaPered)


}
else if (ryadov>1)
{
p1 = NewPoint( pv.x - otsPered_ , ln.y)

Ustanovit1Krepiyoj(Obj, p1, ugolPovorotaPered)

otsZad_ = ln.x + otsZad_
p1 = NewPoint(otsZad_, ln.y)


Ustanovit1Krepiyoj(Obj, p1, ugolPovorotaZad)

ryad=3

while (ryad<ryadov+1)
{







p1 = NewPoint(otsZad_+mejdu_ryadov*(ryad-2), ln.y)





Ustanovit1Krepiyoj(Obj, p1, ugolPovorotaPered)



ryad++;
}
}
//Niz.Free()

}


}

function Ustanovit1Krepiyoj(Obj, p1, ugolPovorota, drstorona ) {


pos = Obj.ObjectToGlobal(NewVector(p1.x, p1.y,0))


podp = Krepej.Value.Mount1(Obj, pos, ugolPovorota);



podp.Rotate(podp.NToGlobal(AxisX), Math.round(PovernutDop.Value) * (Math.PI / 180))
podp.Rotate(podp.NToGlobal(AxisY), Math.round(PovernutDopY.Value) * (Math.PI / 180))
podp.Rotate(podp.NToGlobal(AxisZ), Math.round(PovernutDopZ.Value) * (Math.PI / 180))
// podp.Translate(NewVector(SmestitX.Value, SmestitY.Value, SmestitZ.Value))
if (NaSeredinuTolshiny.Value)
{

/*x=podp.PositionX
y=podp.PositionY
z=podp.PositionZ
*/
posL = Obj.GlobalToObject(podp.Position)
pos1 = NewVector(posL.x, posL.y, Obj.Thickness/2)
posG = Obj.ObjectToGlobal(pos1)

//ppp = AddPanel(5, 5)
//ppp.Translate(posG)

podp.Position = (posG)
}
return podp
}


function OpredelitNiz(Obj, ln, pv)
{
//Obj = Obj.AsPanel
tolshina = Obj.Thickness;
ln_ = Obj.ObjectToGlobal(ln);
pv_ = Obj.ObjectToGlobal(pv);
p = AddPanel(pv.x, tolshina)
p.Thickness = 0.000000001;
p.Translate(ln_)
p.Rotation = Obj.Rotation
p.Rotate(p.NToGlobal(AxisX), 90)

return p

}



function GabarityContura(Obj)

{
var text = '';


ln = NewPoint(0, 0); //левый низ
lv = NewPoint(0, 0); //левый верх
pn = NewPoint(0, 0); //правый низ
pv = NewPoint(0, 0); //правый верх контура

kontur = Obj.Contour;

kstoron = kontur.Count;
// var k_ne_krugov = 0;
for (i = 0; i < kstoron; i++) {
if (kontur[i].ElType != 3) { //k_ne_krugov = k_ne_krugov+1

ln = NewPoint(Math.round(kontur[i].Pos1.x * 10) / 10, Math.round(kontur[i].Pos1.y * 10) / 10);
lv = NewPoint(Math.round(kontur[i].Pos1.x * 10) / 10, Math.round(kontur[i].Pos1.y * 10) / 10);
pn = NewPoint(Math.round(kontur[i].Pos1.x * 10) / 10, Math.round(kontur[i].Pos1.y * 10) / 10);
pv = NewPoint(Math.round(kontur[i].Pos1.x * 10) / 10, Math.round(kontur[i].Pos1.y * 10) / 10);
}

};



for (i = 0; i < kstoron; i++) {
if (kontur[i].ElType != 3) {
Pos1x = Math.round(kontur[i].Pos1.x * 10) / 10;
Pos1y = Math.round(kontur[i].Pos1.y * 10) / 10;
Pos2x = Math.round(kontur[i].Pos2.x * 10) / 10;
Pos2y = Math.round(kontur[i].Pos2.y * 10) / 10;


if (ln.x > Pos1x) {
ln.x = Pos1x
};
if (ln.x > Pos2x) {
ln.x = Pos2x
};
if (ln.y > Pos1y) {
ln.y = Pos1y
};
if (ln.y > Pos2y) {
ln.y = Pos2y
};

if (lv.x > Pos1x) {
lv.x = Pos1x
};
if (lv.x > Pos2x) {
lv.x = Pos2x
};
if (lv.y < Pos1y) {
lv.y = Pos1y
};
if (lv.y < Pos2y) {
lv.y = Pos2y
};

if (pn.x < Pos1x) {
pn.x = Pos1x
};
if (pn.x < Pos2x) {
pn.x = Pos2x
};
if (pn.y > Pos1y) {
pn.y = Pos1y
};
if (pn.y > Pos2y) {
pn.y = Pos2y
};

if (pv.x < Pos1x) {
pv.x = Pos1x
};
if (pv.x < Pos2x) {
pv.x = Pos2x
};
if (pv.y < Pos1y) {
pv.y = Pos1y
};
if (pv.y < Pos2y) {
pv.y = Pos2y
};

}
};

text4 = ('ln ---- ' + ln.x + ' - ' + ln.y + '\n' +
'lv ---- ' + lv.x + ' - ' + lv.y + '\n' +
'pn ---- ' + pn.x + ' - ' + pn.y + '\n' +
'pv ---- ' + pv.x + ' - ' + pv.y + '\n');
// alert(text4);
ln_v = ln; //левый низ выреза
pv_v = pv; //правый верх выреза

if (ln_v.x < lv.x) {
ln_v.x = lv.x
};
if (ln_v.y < pn.y) {
ln_v.y = pn.y
};

if (pv_v.x > pn.x) {
pv_v.x = pn.x
};
if (pv_v.y > lv.y) {
pv_v.y = lv.y
};





SeredinaVisotiPaneli = (pv_v.y - ln_v.y) * 0.5;
SeredinaShiriniPaneli = (pv_v.x - ln_v.x) * 0.5;






lnpv = []




lnpv.push(ln_v);
lnpv.push(pv_v);



return lnpv
}
[свернуть]


Если указан в качестве устанавливаемого подпятник, созданный как фурнитура, все работает корректно. Если же указать подпятник, созданный как составная фурнитура, устанавливается непонятно как. Но при замене установленной скриптом фурнитуры "Подпятник" составная фурнитура устанавливается корректно...
В чем причина? Можно ли как то исправить скрипт?
Прилагаю оба подпятника для экспериментов:
Вложение 119778
Вложение 119779

P.S. Скрипт писал не я, где взял - не помню, вроде тут же на форуме..


Igor_482 01.11.2017 13:24

i need help
 
Подскажите решение для задачи:

Уже установленной фурнитуре (параметрической) необходимо добавить дополнительное отверстие, т.е. добавить объекту фурнитуры "Holes" новый "Items". Существует функция объекта Holes.Add() (аргументы конечно же неизвестны, т.к. функция не документирована), но при её вызове БМ10 падает. В БМ9 было следующее рабочее решение Holes.Add(new Object()).

Кто знает решение, подскажите пожалуйста. Без наработанных скриптов как без рук - рутинные операции просто убивают.

Letos 02.11.2017 10:01

Цитата:

Сообщение от Sergenald (Сообщение 436250)
есть ли возможность провернуть сие действие именно в окне properties? Или в данной реализации без бубна ни куда?

Я поковырялся и нашел свойство Material - оно, думаю, должно за это отвечать, но если попытаться присвоить его в другой компонент, то присваивается undefined. Попытка вывести материал алертом закончилась аксессом в ноде. Это, думаю, должен был быть лучший вариант.
Нашел вариант:
Код:

AllButtTop.OnChange = ()=>{
    AllButtTop.Save('file.xml');
    ButtTop_0.Load('file.xml');
    ButtTop_1.Load('file.xml');
    ButtTop_2.Load('file.xml');
    ButtTop_3.Load('file.xml');
}

Может не самый лучший и медленнее, но должен сработать.

Добавлено через 9 минут
Цитата:

Сообщение от AnRusik (Сообщение 436781)
Коллеги. Не пойму что нужно исправить, чтобы этот же скрипт работал в Базис 10?

Попытался запустить. Выдал ошибку в этом месте
Код:

OkBtn.OnClick = function() {
Переменная OkBtn была undefined.
Исправил предыдущую строчку (убрал второй параметр в функции)
Код:

OkBtn = Prop.NewButton('Построить');
И скрипт запустился. Дальше я не проверял, поэтому возможны еще какие-то ошибки во время пользования скриптом.


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

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