|
|
|
|
|
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..
|
Просмотров: 438131
|
14.09.2018, 14:46
|
#271
|
Местный
Регистрация: 30.03.2010
Адрес: Минск
Сообщений: 291
Сказал(а) спасибо: 1,884
Поблагодарили 226 раз(а) в 96 сообщениях
Вес репутации: 246
|
Помогите починить старый скрипт Установка опор на плоскость, не работает в Б10. Вылазят ошибки в логе и окно свойств не показывается.
PHP код:
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;
otsZada = Prop.NewNumber('Отступ Зад',50);
otsPereda = Prop.NewNumber('Отступ Перед',50);
otsBoka = Prop.NewNumber('Отступ бока',50);
K_row = Prop.NewNumber('Количество рядов',2);
K_row.OnChange = function() {
if (K_row.Value<2) {
K_row.Value=2
}
}
Krepej = Prop.NewFurniture('Ножки');
Povorachivat = Prop.NewBool('Поворачивать')
PovernutDop = Prop.NewCombo('Развернить ножку на', '0\n90\n180\n270');
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 (Krepej.Value)
{
otsZad = otsZada.Value
otsPered = otsPereda.Value;
otsBok = otsBoka.Value;
ryadov = K_row.Value;
lnpv = GabarityContura(Obj);
ln = NewPoint(lnpv[0].x+otsBok,lnpv[0].y+otsPered);
pv = NewPoint(lnpv[1].x-otsBok,lnpv[1].y-otsZad);
mejdu_ryadov = (pv.x-ln.x)/(ryadov-1)
ryad=1
while (ryad<ryadov+1)
{
if(Povorachivat.Value)
{
ugolPovorotaPered=(-(135+(90*(ryad-1)/(ryadov-1))))
ugolPovorotaZad=(-(45-(90*(ryad-1)/(ryadov-1))))
}
else
{
ugolPovorotaPered=0
ugolPovorotaZad=0
}
p1 = NewPoint(ln.x+(mejdu_ryadov*(ryad-1)), ln.y)
p2 = NewPoint(ln.x+(mejdu_ryadov*(ryad-1)), pv.y)
Krepej.Value.Mount1(Obj,Obj.ObjectToGlobal(p1), ugolPovorotaPered + Math.round(PovernutDop.Value));
Krepej.Value.Mount1(Obj,Obj.ObjectToGlobal(p2), ugolPovorotaZad + Math.round(PovernutDop.Value));
ryad++;
}
}
}
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
}
Спасибо.
|
|
|
Пользователь сказал cпасибо:
|
|
14.09.2018, 15:23
|
#272
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,032 раз(а) в 366 сообщениях
Вес репутации: 345
|
Цитата:
Сообщение от andronf
Помогите починить старый скрипт Установка опор на плоскость, не работает в Б10. Вылазят ошибки в логе и окно свойств не показывается.
Спасибо.
|
Строки 88-89 замените на эти:
Код:
p1 = NewVector(ln.x+(mejdu_ryadov*(ryad-1)), ln.y, 0)
p2 = NewVector(ln.x+(mejdu_ryadov*(ryad-1)), pv.y, 0)
Они создают трёхмерную точку вместо двумерной.
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
20.09.2018, 09:20
|
#273
|
Местный
Регистрация: 30.03.2010
Адрес: Минск
Сообщений: 291
Сказал(а) спасибо: 1,884
Поблагодарили 226 раз(а) в 96 сообщениях
Вес репутации: 246
|
Приветствую всех! Поправил свой скрипт из 271 поста строчками из 272 поста и все хорошо заработало, сразу. А теперь когда его запускаю происходит странная картина: окно свойств, где надо вибирать опоры не появляется, но скрипт отрабатывает и ставит опоры, которые ставились прошлый раз и в вроде бы с программой тоже все нормально, но если базис закрыть, то появляется окно с ошибкой, что обратился не в ту область памяти. Хелп.
|
|
|
20.09.2018, 09:49
|
#274
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,032 раз(а) в 366 сообщениях
Вес репутации: 345
|
Цитата:
Сообщение от andronf
Приветствую всех! Поправил свой скрипт из 271 поста строчками из 272 поста и все хорошо заработало, сразу. А теперь когда его запускаю происходит странная картина: окно свойств, где надо вибирать опоры не появляется, но скрипт отрабатывает и ставит опоры, которые ставились прошлый раз и в вроде бы с программой тоже все нормально, но если базис закрыть, то появляется окно с ошибкой, что обратился не в ту область памяти. Хелп.
|
Проверил у себя - всё нормально. У вас окно свойств вообще не показывается, или не показываются только поля начиная с поля выбора опоры? И такой еще вопрос - в лог хоть какая-нибудь ошибка вылезает?
|
|
|
20.09.2018, 12:43
|
#275
|
Местный
Регистрация: 30.03.2010
Адрес: Минск
Сообщений: 291
Сказал(а) спасибо: 1,884
Поблагодарили 226 раз(а) в 96 сообщениях
Вес репутации: 246
|
Попробую объяснить. Мне кажется, что со скриптом все нормально, но его работа сказывается на самочувствии базиса. Иногда все нормально проходит, а иногда нет. Допустим выделил я дно, окно свойств у меня всегда открыто, запускаю скрипт, он как будто сразу отрабатывает,ставит опоры и завершает свою работу, т.е. окно свойств немного моргнет и все, никаких настроек и параметров скрипта нет и нет кнопки построить. Как то так. Думаю может на работу скрипта оказывает влияние другой крепеж, который воткнут в панель.
В логе ошибок нет.
Последний раз редактировалось andronf; 20.09.2018 в 13:36.
|
|
|
20.09.2018, 14:29
|
#276
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,032 раз(а) в 366 сообщениях
Вес репутации: 345
|
Цитата:
Сообщение от andronf
Попробую объяснить. Мне кажется, что со скриптом все нормально, но его работа сказывается на самочувствии базиса. Иногда все нормально проходит, а иногда нет. Допустим выделил я дно, окно свойств у меня всегда открыто, запускаю скрипт, он как будто сразу отрабатывает,ставит опоры и завершает свою работу, т.е. окно свойств немного моргнет и все, никаких настроек и параметров скрипта нет и нет кнопки построить. Как то так. Думаю может на работу скрипта оказывает влияние другой крепеж, который воткнут в панель.
В логе ошибок нет.
|
Попробуйте этот скрипт. Проблема с "Запустился и сразу завершился" должна исчезнуть. Если повезёт, то и Access Violation пропадёт.
|
|
|
Пользователь сказал cпасибо:
|
|
20.09.2018, 14:52
|
#277
|
VIP
Регистрация: 31.10.2009
Адрес: Рівне. УкраЇна
Сообщений: 10,580
Сказал(а) спасибо: 14,588
Поблагодарили 20,027 раз(а) в 6,492 сообщениях
Вес репутации: 5258
|
Цитата:
Сообщение от andronf
но если базис закрыть, то появляется окно с ошибкой, что обратился не в ту область памяти
|
У меня, к стати, такая же ошибка вылетает после этого скрипта. При чем, в диспетчере задач остается висеть процес bazis.exe ещё долгое время после закрытия программы. Или вручную завершаю или со временем появляется окно "Завершена работа программы Базис Мебельщик - искать решение ... и т.д."
__________________
Уж лучше беспокойство в сомнении, чем успокоенность в заблуждении. .
(Мандзони Алессандро)
------------------------------------
Троллей не кормлю...
|
|
|
20.09.2018, 15:53
|
#278
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,032 раз(а) в 366 сообщениях
Вес репутации: 345
|
Цитата:
Сообщение от Uncle
У меня, к стати, такая же ошибка вылетает после этого скрипта. При чем, в диспетчере задач остается висеть процес bazis.exe ещё долгое время после закрытия программы. Или вручную завершаю или со временем появляется окно "Завершена работа программы Базис Мебельщик - искать решение ... и т.д."
|
Попробуйте попользоваться таким вариантом скрипта:
Код:
function forEachInList(list, func){
if (!func)
return;
for (var i = 0; i < list.Count; i++){
var obj = list.Objects[i];
func(obj);
if (obj.List){
forEachInList(obj.AsList(), func);
}
}
}
UnSelectAll();
var positions = prompt("Введите номера позиций через пробел");
var nums = positions.split(' ');
forEachInList(Model, function(obj) {
if (nums.indexOf(obj.ArtPos) >= 0) {
obj.Selected = true;
}
})
Если с этим скриптом всё будет нормально и моё предположение верно, то проблема в функции Model.forEach.
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
20.09.2018, 15:59
|
#279
|
VIP
Регистрация: 31.10.2009
Адрес: Рівне. УкраЇна
Сообщений: 10,580
Сказал(а) спасибо: 14,588
Поблагодарили 20,027 раз(а) в 6,492 сообщениях
Вес репутации: 5258
|
Цитата:
Сообщение от Letos
Если с этим скриптом всё будет нормально
|
Протестировал три раза работу скрипта с последующим закрытием программы - ошибки пока не было.
__________________
Уж лучше беспокойство в сомнении, чем успокоенность в заблуждении. .
(Мандзони Алессандро)
------------------------------------
Троллей не кормлю...
|
|
|
15.10.2018, 08:39
|
#280
|
Новичок
Регистрация: 20.04.2014
Сообщений: 24
Сказал(а) спасибо: 2
Поблагодарили 13 раз(а) в 5 сообщениях
Вес репутации: 0
|
помогайте форумчане.
Panel.AddPlastic(МатLak,true);
строчка кода наносит пластик на панель. а какой код позволяет назначить ориентацию текстуры пластика?
|
|
|
|
|
|
Нижняя навигация
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 17:22. Часовой пояс GMT +3.
|