|
|
|
|
|
13.01.2014, 13:22
|
|
Скрипты. Готовые решения для БМ8-2024
Igor_482
VIP
Регистрация: 03.09.2008
Сообщений: 174
Сказал(а) спасибо: 34
Поблагодарили 795 раз(а) в 113 сообщениях
13.01.2014, 13:22
Рейтинг:
()
Этот раздел предназначен для размещения готовых скриптов.
Здесь находятся ТОЛЬКО готовые скрипты. Для обсуждения есть отдельная тема: Обсуждение готовых скриптов.
Авторам: - Давать уникальные названия скриптам (не совпадающие с названием уже выложенных скриптов, за исключением обновлений скрипта)
- Указывать работоспособность в разных версиях БМ.
- Общее описание работы скрипта.
- Если презентованный скрипт платный указывать стоимость, условия и контакты для приобретения.
Версии, указанные модератором, как прошедшие проверку:
8 - Демо-версия 8.0.7.9649
8н - "народная" 8.0.12.12765
9 - Демо-версия 9.0.8.18908
10 - Демо-версия 10.0.0.21602
Последний раз редактировалось AlexBolton; 03.03.2023 в 21:03..
|
Просмотров: 569119
|
13 пользователя(ей) сказали cпасибо:
|
|
26.05.2023, 10:16
|
#261
|
Местный
Регистрация: 20.02.2013
Адрес: Казань
Сообщений: 368
Сказал(а) спасибо: 845
Поблагодарили 791 раз(а) в 212 сообщениях
Вес репутации: 332
|
Цитата:
Сообщение от Артем Валерьевич
Получается вам нужен вынос траектории за габарит фасада. Насколько мм?
И второй момент - если фреза идет не во весь фасад, а только до середины по вертикали, то оставляем таректорию как есть?
С углами пока точно не смогу
|
В вашем скрипте отступ сверху снизу ставлю отрицательное значение и он выносит паз за пределы детали на значение какое мне нужно. 90% фасадов идут со сквозными пазами
|
|
|
26.05.2023, 11:22
|
#262
|
Пользователь
Регистрация: 03.12.2019
Сообщений: 89
Сказал(а) спасибо: 28
Поблагодарили 118 раз(а) в 34 сообщениях
Вес репутации: 87
|
Цитата:
Сообщение от Дмитрий Дали
В вашем скрипте отступ сверху снизу ставлю отрицательное значение и он выносит паз за пределы детали на значение какое мне нужно. 90% фасадов идут со сквозными пазами
|
Попробуйте этот вариант:
Код:
/*
Скрипт вертикальной фрезеровки панелей
26.05.2023 (с) Артем, email - asked77@gmail.com
*/
UnSelectAll();
Panel = GetPanel("Выберите панель");
// Action.DS.DrawMode = 2;
Undo.RecursiveChanging(Panel);
Prop = Action.Properties;
// ------------------------------------------------------------------------------------------------------------------------------
sLeft = Prop.NewNumber('Отступ слева:', 50);
sRight = Prop.NewNumber('Оступ справа:', 0);
sButton = Prop.NewButton('Выровнять отступы?');
sUp = Prop.NewNumber('--- сверху:', 50);
sDown = Prop.NewNumber('--- снизу:', 50);
// ------------------------------------------------------------------------------------------------------------------------------
sWidth = Prop.NewNumber('Ширина паза:', 0);
sHeight = Prop.NewNumber('Глубина паза:', 0);
sStep = Prop.NewNumber('Сдвиг паза по глубине:');
sStep.MinValue = 0; sStep.MaxValue = 3;
sInterval = Prop.NewNumber('Интервал между пазами:', 10);
sText = Prop.NewString('Имя паза:', 'stripes');
// ------------------------------------------------------------------------------------------------------------------------------
sCount = Prop.NewNumber('Убрать паз справа', 0);
sForm = Prop.NewSelector('Выбрать форму паза', '');
sTere = Prop.NewBool('Перемычки', true);
sLeft.BackColor = sUp.BackColor = sDown.BackColor = sInterval.BackColor = sCount.BackColor = sForm.BackColor = sStep.BackColor = 15728607;
sRight.Enabled = sWidth.Enabled = sHeight.Enabled = sText.Enabled = false;
// ------------------------------------------------------------------------------------------------------------------------------
sButton.OnClick = () => {
while (Math.abs(sLeft.Value - sRight.Value) > 1) {
sLeft.Value = ((sLeft.Value + sRight.Value) / 2).toFixed(0);;
}
CreateStripes(sForm.Value);
};
Prop.NewButton('Ok').OnClick = () => {
CreateStripes(sForm.Value);
Action.Finish();
};
sForm.OnClick = () => {
sForm.Value = system.askFileName('frw');
CreateStripes(sForm.Value);
};
sLeft.OnChange = sUp.OnChange = sDown.OnChange = sInterval.OnChange = sDown.OnChange = sStep.OnChange = sStep.OnChange = sTere.OnChange = sCount.OnChange = () => {
CreateStripes(sForm.Value);
}
FileOptions = 'stripes.xml';
Action.Properties.Load(FileOptions);
Action.OnFinish = () => {
Action.Properties.Save(FileOptions);
}
CreateStripes(sForm.Value);
Action.Continue();
function CreateStripes(sF) {
for (i = Panel.Cuts.Count - 1; i >= 0; i--) {
if (Panel.Cuts.Cuts[i].Name == sText.Value) {
Panel.Cuts.Delete(i);
}
}
yMin = Panel.GMin.y + sDown.Value;
yMax = Panel.GMax.y - sUp.Value;
if (sF) {
Cut = Panel.AddCut(sText.Value);
Cut.Contour.Load(sF);
Cut.Contour.Move(0, Panel.Thickness + sStep.Value);
sWidth.Value = Cut.Contour.Width.toFixed(2);
sHeight.Value = Cut.Contour.Height.toFixed(2);
sStep.MaxValue = sHeight.Value;
x = Math.round((Panel.Contour.Width - sLeft.Value) / (sWidth.Value + sInterval.Value));
sRight.Value = ((Panel.Contour.Width - sLeft.Value) - (x - 1 - sCount.Value) * (sWidth.Value + sInterval.Value) - sWidth.Value).toFixed(0);
for (k = 0; k < x - sCount.Value; k++) {
[yMin, yMax] = [yMax, yMin];
Cut.Trajectory.AddLine(Panel.GMin.x + sLeft.Value + sWidth.Value / 2 + k * (sWidth.Value + sInterval.Value), yMin, Panel.GMin.x + sLeft.Value + sWidth.Value / 2 + k * (sWidth.Value + sInterval.Value), yMax);
if (sTere.Value) {
Cut.Trajectory.AddLine(Panel.GMin.x + sLeft.Value + sWidth.Value / 2 + k * (sWidth.Value + sInterval.Value), yMin, Panel.GMin.x + sLeft.Value + sWidth.Value / 2 + (k + 1) * (sWidth.Value + sInterval.Value), yMin);
}
}
if (sTere.Value) Cut.Trajectory.Delete(Cut.Trajectory.Count - 1);
};
Panel.Build();
}
Последний раз редактировалось Артем Валерьевич; 26.05.2023 в 15:17.
|
|
|
8 пользователя(ей) сказали cпасибо:
|
|
24.06.2023, 13:34
|
#263
|
VIP
Регистрация: 11.07.2008
Сообщений: 1,019
Сказал(а) спасибо: 261
Поблагодарили 315 раз(а) в 143 сообщениях
Вес репутации: 359
|
Скрипт с заменой кромки - шикарен. А можно ли в нем допилить, чтобы был еще и выбор лдсп? Было бы вообще супер.... выбираю белое лдсп - заменяю в нем кромку на белую, черное - на черную....
|
|
|
18.07.2023, 10:46
|
#264
|
Местный
Регистрация: 15.04.2012
Адрес: Санкт-Петербург
Сообщений: 104
Сказал(а) спасибо: 56
Поблагодарили 277 раз(а) в 63 сообщениях
Вес репутации: 214
|
Нет: — другая логика и математика построения контура не предусмотрена.
Или вам изгиб буквой 'S' нужен?
__________________
С уважением Кузнецов Александр
|
|
|
09.10.2023, 00:56
|
#265
|
Местный
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 455
Сказал(а) спасибо: 243
Поблагодарили 1,099 раз(а) в 210 сообщениях
Вес репутации: 389
|
Градиент кружков.
1) выделяем панель.
2) запускаем скрипт.
3) настраиваем.
4) "Закончить".
Была задача сделать кружки как у уважаемого конкурента.
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
|
Последний раз редактировалось AlexBolton; 25.12.2023 в 13:41.
Причина: оформление
|
|
|
13 пользователя(ей) сказали cпасибо:
|
|
17.10.2023, 00:16
|
#266
|
Новичок
Регистрация: 02.12.2014
Сообщений: 19
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
|
Цитата:
Сообщение от v22884
Линии
(ля тока не вручную эту фигню.)
1) выбираем несколько панелей( желательно лежащий в одной плоскости)
2) запускаем скрипт.
3) меняем количество линии.
4) по желанию тыкаем "ЕЩЁ".
Не идеально, но вроде сносно. Кто доделает буду признателен.
*** скрытый текст ***
|
Отлично работает, пробовал переделать его под квадраты или круги,нихрена не получается.
|
|
|
05.11.2023, 07:53
|
#267
|
Местный
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 455
Сказал(а) спасибо: 243
Поблагодарили 1,099 раз(а) в 210 сообщениях
Вес репутации: 389
|
Контур 2д на центр панели.
1) запускаем скрипт.
2) скрипт просит указать панель - указываем панель.
3) скрипт просит указать 2д контур - указываем 2д контур.
Бывает надо разместить 2д контур на центр панели, например, какие-нибудь вензеля фасадов(которые базис пока не может(по крайней мере в 10 и 11)).
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
|
Последний раз редактировалось AlexBolton; 25.12.2023 в 13:39.
Причина: оформление
|
|
|
4 пользователя(ей) сказали cпасибо:
|
|
06.11.2023, 09:04
|
#268
|
Местный
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 455
Сказал(а) спасибо: 243
Поблагодарили 1,099 раз(а) в 210 сообщениях
Вес репутации: 389
|
Цитата:
Сообщение от АндрейSIMX1
Здравствуйте, так и не нашли рабочую версию скрипта текста?
|
Этот?
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
|
Последний раз редактировалось AlexBolton; 25.12.2023 в 13:39.
Причина: оформление
|
|
|
11.11.2023, 19:39
|
#269
|
Новичок
Регистрация: 04.03.2018
Сообщений: 1
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
|
Цитата:
Сообщение от kos100pudov
Доброго дня!
Скрипт для сборки нескольких моделей в одну для группового редактирования и последующей их перезаписи.
В архиве по ссылке (сюда не помещается)) ) два скрипта и ехе-шник.
https://drive.google.com/file/d/1xs0...ew?usp=sharing
Последовательность такая:
открываем новую модель.
Запускаем скрипт "все модели в одну модель.js" - он собирает в одну модель все модели из выбранных папок с их подпапками, только из указанных папок и указанных самостоятельных файлов.
Далее можно произвести какие то манипуляции.
Запускаем скрипт "блоки модели в отдельные файлы.js" - перезапишет все загруженные модели после манипуляций по тем же директориям и названиями.
ехе-шник "read_file_models.exe" должен находится в папке со скриптом "блоки модели в отдельные файлы.js".
Немного подробнее о работе со скриптом в их заголовках.
пы.сы. кстати кто подскажет как более изящно сделать динамически изменяемое "меню", буду признателен.
пы.сы.пы.сы. работает в БМ2022, должен работать в БМ2021, в остальных версиях не проверялось. В БМ8 работать не будет.
|
по ссылке ничего нет, перезалейте плиз.
|
|
|
13.11.2023, 11:29
|
#270
|
Пользователь
Регистрация: 03.12.2019
Сообщений: 89
Сказал(а) спасибо: 28
Поблагодарили 118 раз(а) в 34 сообщениях
Вес репутации: 87
|
Облицовки панелей
Скрипт для переименования материалов панели с облицовками, их артикула, толщины и направления текстуры. Создали слоеный пирог и потом к любой его части спокойно добрались, поменяли название, толщину и прочее. Работает с выбранными панелями. Проверено в 2023 версии.
https://cloud.mail.ru/public/SFg4/HLZDHh3iC
Скрытый текст
PHP код:
/*
Скрипт переименования материалов панели с облицовками, их артикула, толщины и направления текстуры
07.11.2023 (с) Артем, email - asked77@gmail.com
*/
nameP = []; artP = []; thickP = []; textO = [];
if (Model.SelectionCount == 0) endAction();
tempT = Model.Selections[0].Plastics.Count;
for (i = 1; i < Model.SelectionCount; i++) {
if (Model.Selections[i].Plastics.Count != tempT) endAction();
}
obj = Model.Selections[0];
result = confirm("Редактирование облицовок у выделенных панелей:\n. Можно выбрать несколько панелей\n. Важно какая панель выбрана первой\n. Остальные получат те же свойства");
if (!result) Action.Finish();
Undo.RecursiveChanging(Model);
initP();
panList1 = Action.Properties.NewCombo('Материал', '-'); panList1.ComboItems = nameP;
panList2 = Action.Properties.NewCombo('Артикул', '-'); panList2.ComboItems = artP; panList2.Enabled = false;
panList3 = Action.Properties.NewCombo('Толщина', '-'); panList3.ComboItems = thickP; panList3.Enabled = false;
panList4 = Action.Properties.NewCombo('Текстура', '-'); panList4.ComboItems = textO; panList4.Enabled = false;
l1 = Action.Properties.NewLabel(' ');
buttCancel = Action.Properties.NewButton('Выход');
l1 = Action.Properties.NewLabel(' ');
panEdit1 = Action.Properties.NewString('Материал', '-'); panEdit1.Visible = false;
panEdit2 = Action.Properties.NewString('Артикул', '-'); panEdit2.Visible = false;
panEdit3 = Action.Properties.NewString('Толщина', '-'); panEdit3.Visible = false;
panEdit4 = Action.Properties.NewString('Текстура', '-'); panEdit4.Visible = false;
buttOk = Action.Properties.NewButton('Заменить'); buttOk.Visible = false;
panList1.OnChange = function () {
if (panList1.ItemIndex > 0) {
l = panList1.ItemIndex;
panList2.Value = artP[l]; panList2.ItemIndex = l;
panList3.Value = thickP[l]; panList3.ItemIndex = l;
panList4.Value = textO[l]; panList4.ItemIndex = l;
panEdit1.Visible = true; panEdit2.Visible = true; panEdit3.Visible = true; panEdit4.Visible = true; buttOk.Visible = true;
panEdit1.Value = panList1.Value; panEdit2.Value = panList2.Value; panEdit3.Value = panList3.Value; panEdit4.Value = panList4.Value;
} else {
panList2.Value = '-'; panList2.ItemIndex = 0;
panList3.Value = '-'; panList3.ItemIndex = 0;
panList4.Value = '-'; panList4.ItemIndex = 0;
panEdit1.Visible = false; panEdit2.Visible = false; panEdit3.Visible = false; panEdit4.Visible = false; buttOk.Visible = false;
}
}
buttCancel.OnClick = function () {
Action.Finish();
}
buttOk.OnClick = function () {
l = panList1.ItemIndex;
for (i = 0; i < Model.SelectionCount; i++) {
objF = Model.Selections[i]
if (l == 1) {
objF.MaterialName = panEdit1.Value + '\r ' + panEdit2.Value;
objF.Thickness = panEdit3.Value;
objF.TextureOrientation = panEdit4.Value;
} else {
objF.Plastics[l - 2].Material = panEdit1.Value + '\r ' + panEdit2.Value;
objF.Plastics[l - 2].Thickness = panEdit3.Value;
objF.Plastics[l - 2].TextureOrientation = panEdit4.Value;
}
// objF.GenerateNewId();
objF.Build();
}
initP();
panList1.ComboItems = nameP; panList2.ComboItems = artP; panList3.ComboItems = thickP; panList4.ComboItems = textO;
nameP[l] = panEdit1.Value; artP[l] = panEdit2.Value; thickP[l] = panEdit3.Value; textO[l] = panEdit4.Value;
panList1.Value = panEdit1.Value; panList2.Value = panEdit2.Value; panList3.Value = panEdit3.Value; panList4.Value = panEdit4.Value;
panList2.ItemIndex = l; panList2.ItemIndex = l; panList3.ItemIndex = l; panList4.ItemIndex = l;
}
function initP() {
nameP.length = 0; artP.length = 0; thickP.length = 0; nameP.length = 0;
nameP.push('-'); artP.push('-'); thickP.push('-'); textO.push('-');
nameP.push(ExtractMatName(obj.MaterialName)); artP.push(ExtractMatCode(obj.MaterialName)); thickP.push(obj.Thickness); textO.push(obj.TextureOrientation);
if (obj.Plastics.Count > 0) {
for (let k = 0; k < obj.Plastics.Count; k++) {
nameP.push(ExtractMatName(obj.Plastics[k].Material));
artP.push(ExtractMatCode(obj.Plastics[k].Material));
thickP.push(obj.Plastics[k].Thickness);
textO.push(obj.Plastics[k].TextureOrientation);
}
}
}
function endAction() {
alert("Не выбраны панели или у них разная облицовка");
Action.Finish();
}
Action.Continue();
[свернуть]
Последний раз редактировалось AlexBolton; 25.12.2023 в 13:40.
Причина: оформление
|
|
|
11 пользователя(ей) сказали cпасибо:
|
|
|
|
|
Нижняя навигация
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 02:57. Часовой пояс GMT +3.
|