|
|
|
|
|
21.03.2018, 14:48
|
|
Обсуждение скриптов в Системе Базис
Letos
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,035 раз(а) в 367 сообщениях
21.03.2018, 14:48
Рейтинг:
()
Если вы не знаете, или не уверены, куда задавать вопрос по скриптам в Системе Базис, то эта тема для вас.
Обратите внимание на полезные ответы в этой теме!
|
Просмотров: 258047
|
2 пользователя(ей) сказали cпасибо:
|
|
07.06.2022, 09:55
|
#371
|
Местный
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 481 раз(а) в 147 сообщениях
Вес репутации: 196
|
Да, там написано про это, решение не искал.
|
|
|
07.06.2022, 11:10
|
#372
|
Местный
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 481 раз(а) в 147 сообщениях
Вес репутации: 196
|
Да там не ясно, может и на метр сдвинуть, может вообще не сдвинуть.
|
|
|
07.06.2022, 12:07
|
#373
|
Пользователь
Регистрация: 03.12.2019
Сообщений: 89
Сказал(а) спасибо: 28
Поблагодарили 117 раз(а) в 34 сообщениях
Вес репутации: 86
|
Цитата:
Сообщение от sergio1982
Да там не ясно, может и на метр сдвинуть, может вообще не сдвинуть.
|
да, точно, когда несколько панелей выделяешь кидает черти куда их
тогда вопрос остается открытым.
а можно это не через контур, а через резиновую нить как-то реализовать?
|
|
|
07.06.2022, 12:42
|
#374
|
Местный
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 481 раз(а) в 147 сообщениях
Вес репутации: 196
|
Цитата:
Сообщение от Артем Валерьевич
а через резиновую нить как-то реализовать?
|
Да это возможно, но моих познаний тут не хватает.
Это работает только в "правильном" направлении текущего вида.
Самому хотелось бы знать, как поправить, чтобы вытягивало в нужную сторону, когда повёрнут текущий вид, или была повёрнута панель, и.т.п.
PHP код:
p = Model.Selected
Shift = 100
Contour = p.Contour
Contour.Min = GetMin(Contour)
Contour.Max = GetMax(Contour)
Dir = 'Вправо'
Dir = 'Влево'
Dir = 'Вниз'
Dir = 'Вверх'
var xs = Contour.Min.x
var xe = Contour.Max.x
var Width = xe - xs
var ys = Contour.Min.y
var ye = Contour.Max.y
var Height = ye - ys
StartEditing(p);
if (Dir == 'Вправо') {
Contour.Elastic(xs + Width / 2, ys, xe, ye, Shift, 0)
}
else if (Dir == 'Влево') {
Contour.Elastic(xs, ys, xs + Width / 2, ye, -Shift, 0)
}
else if (Dir == 'Вверх') {
Contour.Elastic(xs, ys + Height / 2, xe, ye, 0, Shift)
}
else if (Dir == 'Вниз') {
Contour.Elastic(xs, ys, xe, ys + Height / 2, 0, -Shift)
}
p.Build();
function GetMin(cont) {
var result = {
x: 100000000,
y: 100000000
}
for (var i = 0; i < cont.Count; i++) {
var item = cont.Objects[i];
switch (item.ElType) {
case (1): //ElementType.Line
var p1 = item.AsLine().Pos1;
var p2 = item.AsLine().Pos2;
result.x = Math.min(result.x, p1.x, p2.x);
result.y = Math.min(result.y, p1.y, p2.y);
break;
case (2): //ElementType.Arc
var p1 = item.AsArc().Pos1;
var p2 = item.AsArc().Pos2;
var c = item.AsArc().Center;
result.x = Math.min(result.x, p1.x, p2.x, c.x);
result.y = Math.min(result.y, p1.y, p2.y, c.y);
break;
case (3): //ElementType.Circle
var cir = item.AsCircle();
var c = cir.Center;
result.x = Math.min(result.x, c.x - cir.CirRadius);
result.y = Math.min(result.y, c.y - cir.CirRadius);
}
}
return result;
}
function GetMax(cont) {
var result = {
x: -100000000,
y: -100000000
}
for (var i = 0; i < cont.Count; i++) {
var item = cont.Objects[i];
switch (item.ElType) {
case (1): //ElementType.Line
var p1 = item.AsLine().Pos1;
var p2 = item.AsLine().Pos2;
result.x = Math.max(result.x, p1.x, p2.x);
result.y = Math.max(result.y, p1.y, p2.y);
break;
case (2): //ElementType.Arc
var p1 = item.AsArc().Pos1;
var p2 = item.AsArc().Pos2;
var c = item.AsArc().Center;
result.x = Math.max(result.x, p1.x, p2.x, c.x);
result.y = Math.max(result.y, p1.y, p2.y, c.y);
break;
case (3): //3ElementType.Circle
var cir = item.AsCircle();
var c = cir.Center;
result.x = Math.max(result.x, c.x + cir.CirRadius);
result.y = Math.max(result.y, c.y + cir.CirRadius);
}
}
return result;
}
|
|
|
Пользователь сказал cпасибо:
|
|
07.06.2022, 16:04
|
#375
|
Пользователь
Регистрация: 03.12.2019
Сообщений: 89
Сказал(а) спасибо: 28
Поблагодарили 117 раз(а) в 34 сообщениях
Вес репутации: 86
|
Цитата:
Сообщение от sergio1982
Да это возможно, но моих познаний тут не хватает.
Это работает только в "правильном" направлении текущего вида.
Самому хотелось бы знать, как поправить, чтобы вытягивало в нужную сторону, когда повёрнут текущий вид, или была повёрнута панель, и.т.п.
|
Зато тут не сдвигает панели.
А можно как-то узнать вертикальная выделена панель или горизонтальная? /нашел/
Последний раз редактировалось Артем Валерьевич; 07.06.2022 в 16:44.
|
|
|
09.06.2022, 22:19
|
#376
|
Новичок
Регистрация: 25.09.2020
Сообщений: 2
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
|
Всем доброго вечера! Подскажите, пожалуйста, есть ли способ какой-нибудь с помощью скрипта создавать параметрические фрагменты со смещением по глубине, задав размер, как на картинке.
https://drive.google.com/file/d/1xLq...oI1WYD/preview
Последний раз редактировалось AlexBolton; 18.06.2022 в 17:02.
Причина: ссылка
|
|
|
22.06.2022, 16:57
|
#377
|
Местный
Регистрация: 15.10.2019
Адрес: Кишинёв
Сообщений: 198
Сказал(а) спасибо: 492
Поблагодарили 72 раз(а) в 31 сообщениях
Вес репутации: 90
|
Подскажите пож-ста, что не так делаю:
Хочу след. результат - Выделяю необходимые детали, тыкаю на скрипт, получаю закромлённые детальки без повторов кромления, если некоторые детали уже были закромлены.
PHP код:
var buttExists = panel.Butts.Count > 0 // проверяю, есть ли кромка на выделенных панелях var panel = Model.Selected.AsPanel; if (panel){ Undo.Changing(panel) panel.Butts.Delete(0); // если есть - удаляю }
function AddButts(Panel) { for(var i = 0; i < Panel.Contour.Count; i++){ //перебераю весь массив Butt = Panel.Butts.Add(); //установить кромку методом Butts Butt.ElemIndex = i; // стороны кромления Butt.ClipPanel = true; //подрезка Butt.Material = "2.0_ABS"; //наименование кромки \r артикул Butt.Sign = "x"; //обозначение кромки Butt.Thickness = (2.0); //толщина кромки } Panel.Build(); } for (var k = 0; k < Model.SelectionCount; k++) AddButts(Model.Selections[k]);
|
|
|
22.06.2022, 17:48
|
#378
|
Пользователь
Регистрация: 03.12.2019
Сообщений: 89
Сказал(а) спасибо: 28
Поблагодарили 117 раз(а) в 34 сообщениях
Вес репутации: 86
|
а первая переменная где еще используется? для чего она?)
|
|
|
22.06.2022, 18:39
|
#379
|
Местный
Регистрация: 15.10.2019
Адрес: Кишинёв
Сообщений: 198
Сказал(а) спасибо: 492
Поблагодарили 72 раз(а) в 31 сообщениях
Вес репутации: 90
|
Цитата:
Сообщение от Артем Валерьевич
а первая переменная где еще используется? для чего она?)
|
я так понимаю, что идёт проверка наличия кромки на панелях,
переменная buttExists только для проверки наличия кромки, но видимо не правильно
|
|
|
22.06.2022, 19:58
|
#380
|
Местный
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 734
Сказал(а) спасибо: 1,529
Поблагодарили 886 раз(а) в 376 сообщениях
Вес репутации: 405
|
1. переменная panel используется раньше, чем объявлена - так нельзя;
2. переменная buttExists не используется после объявления, хотя может;
3. участок кода panel.Butts.Delete(0) удаляет только кромку с индексом 0, а Вам, я полагаю, нужно удалять всю кромку с панели, так? Если да, то надо проходить циклом по всем кромкам панели или использовать panel.Butts.Clear() для удаления всех кромок;
4. проверку наличия кромки лучше включить в функцию AddButts() - в Вашем варианте она не работает.
Попробуйте такой вариант:
PHP код:
function AddButts(Panel) {
var buttExists = Panel.Butts.Count > 0; // проверяю, есть ли кромка на выделенных панелях
if (buttExists) {
Undo.Changing(Panel);
Panel.Butts.Clear(); // если есть - удаляю
}
for (var i = 0; i < Panel.Contour.Count; i++) { //перебераю весь массив
Butt = Panel.Butts.Add(); //установить кромку методом Butts
Butt.ElemIndex = i; // стороны кромления
Butt.ClipPanel = true; //подрезка
Butt.Material = "2.0_ABS"; //наименование кромки \r артикул
Butt.Sign = "x"; //обозначение кромки
Butt.Thickness = (2.0); //толщина кромки
}
Panel.Build();
}
for (var k = 0; k < Model.SelectionCount; k++)
AddButts(Model.Selections[k]);
|
|
|
Пользователь сказал cпасибо:
|
|
|
|
|
Нижняя навигация
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 15:38. Часовой пояс GMT +3.
|