|
|
|
|
|
21.12.2017, 12:21
|
|
Заявки на создание скрипта.
systland
VIP
Регистрация: 30.10.2007
Адрес: Москва
Сообщений: 565
Сказал(а) спасибо: 303
Поблагодарили 451 раз(а) в 189 сообщениях
21.12.2017, 12:21
Рейтинг:
()
Тема создана для размещения заявок на написание скриптов.
Для того, чтобы заявка была рассмотрена, необходимо составить максимально понятное техзадание :
1. Описать, какую задачу должен выполнять скрипт.
2. Какие данные должны использоваться скриптом.
3. Алгоритм (последовательность действий) работы скрипта.
Заявки типа "Мне нужен скрипт для расстановки полок" или подобные рискуют остаться без внимания.
Любые заявки не обязательны для рассмотрения. Если Вам не ответили, значит по какой-либо причине нет возможности её выполнить.
Альтернативный вариант - обратиться лично к тем, кто может оказать такую услугу
Другие сообщения, не соответствующие назначению темы, будут удалены без предупреждения!
Просьба после того, как заявка будет выполнена и утратившая актуальность по другим причинам, оставлять соответствующее сообщение в этой же теме или обратится к модератору для закрытия заявки.
Последний раз редактировалось Uncle; 03.02.2020 в 20:07..
Причина: Поправил шапку
|
Просмотров: 326015
|
23.03.2021, 12:29
|
#121
|
Пользователь
Регистрация: 22.07.2014
Адрес: Sochi
Сообщений: 83
Сказал(а) спасибо: 143
Поблагодарили 135 раз(а) в 36 сообщениях
Вес репутации: 154
|
#Запрос. 3D DXF в Мебельщик.
Доброго времени суток.
#Запрос.
Импорт файла 3D DXF в Мебельщик.
Без скрипта: Алгоритм таков, загружаю в 3CAD, отрезкам предаю тело 1мм. После загружаю в мебельщик.
|
|
|
05.04.2021, 14:44
|
#122
|
Новичок
Регистрация: 28.01.2021
Сообщений: 17
Сказал(а) спасибо: 49
Поблагодарили 2 раз(а) в 2 сообщениях
Вес репутации: 0
|
Здравствуйте. Есть стандартный скрипт в 8БМ "Облицовка кромкой". Может кто-нибудь его изменить чтобы он работал не на всех панелях, а только на выделенных и облицовывал "все кромки/видимые/открытые". Скрипт прилагается.
|
|
|
07.04.2021, 19:23
|
#123
|
Местный
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
|
Цитата:
Сообщение от Human2Q
Текстовое значение же есть, можно подбирать заглужку с таким же текстовым значением
|
Решается через смету, операции и сопутствующие материалы.
Создаёте операцию допустим "заглушка эксцентрика белая", параметр для этой операции "кол-во глухих отверстий d15", кэтой операции назначает сопутствующие материал "заглушка эксц.белая"..
Делаете подобные операции для всех цветов заглушек.
По аналогии делаете такие же операции для всех видов заглушек.
Потом для удобства можно сделать операцию допустим "кол-во всех заглушек белые", параметр с модели не указываете, к данной операции по сопутствия подвязываете все ранее созданные операции, заглушки от которых используются для белого материала.
Далее эту обобщенную операцию подвязываете сопутствием ко всем белым материалам.
И вуаля.
Так называемая групповая операция не обязательна, можно все "вложенные" в неё сразу на материал назначить, просто мне было так удобнее, одну назначил а не десять)
У нас все работает и на лдсп и на профиль реагирует.
|
|
|
07.04.2021, 23:21
|
#124
|
Местный
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 195
|
Цитата:
Сообщение от Mullerr
Здравствуйте. Есть стандартный скрипт в 8БМ "Облицовка кромкой". Может кто-нибудь его изменить чтобы он работал не на всех панелях, а только на выделенных и облицовывал "все кромки/видимые/открытые". Скрипт прилагается.
|
Скрытый текст
Код:
Materials = [];
PanelByMaterial = [];
var PanelChanged = 0;
var Selected = Model.SelectionCount;
Model.forEachPanel(
function(Obj) {
if (Selected && !Obj.Selected)
return
var MtName = Obj.MaterialName;
var Index = Materials.indexOf(MtName);
if (Index < 0) {
Index = Materials.push(MtName) - 1;
var Panels = [];
PanelByMaterial.push(Panels);
}
PanelByMaterial[Index].push(Obj);
});
len = Materials.length;
system.log(len);
for (var i = 0; i < len; ++i) {
var Gr = Action.Properties.NewCombo(Materials[i], 'На видимые\nНа все\nУдалить');
Gr.NewButt('Кромка');
BtnPanSel = Gr.NewSelector('Панелей', PanelByMaterial[i].length + ' шт');
BtnPanSel.Tag = i;
BtnPanSel.OnClick = function(Sel) {
UnSelectAll();
var Panels = PanelByMaterial[Sel.Tag];
var len = Panels.length;
for (var j = 0; j < len; ++j) {
Panels[j].Selected = true;
}
};
BtnMake = Gr.NewButton('Применить');
BtnMake.Tag = i;
BtnMake.OnClick = function(Sel) {
UnSelectAll();
var Panels = PanelByMaterial[Sel.Tag];
var Gr = Action.Properties.Items[Sel.Tag];
CurAction = Gr.ItemIndex;
var Butt = Gr.Items[0];
plen = Panels.length;
system.log('make butts: ' + plen);
for (var j = 0; j < plen; ++j) {
if (MakeButts(Panels[j], CurAction, Butt))
PanelChanged++;
}
Action.Hint = 'отредактировано панелей: ' + PanelChanged;
Action.Commit();
};
}
NewButtonInput("Закончить").OnChange = function() { Action.Finish() };
NewButtonInput("Снять выделение").OnChange = function() { UnSelectAll() };
function MakeButts(Panel, Action, Butt) {
var res = false;
system.log('Panel: ' + Panel.Name);
if (Action < 2 ) {
if (Panel.Butts.Count === 0) {
for (var i = 0; i < Panel.Contour.Count; i++) {
if ((Action == 1) || (Panel.IsButtVisible(i, 1))) { //проверяет соприкасеется ли кромящиеся сторана(i) с другой пнелью на растояние 1мм
system.log('Editing panel butt ' + i);
StartEditing(Panel);
Panel.AddButt(Butt, i);
res = true;
}
}
}
}
if (Action == 2) {
if (Panel.Butts.Count > 0) {
StartEditing(Panel);
Panel.Butts.Clear();
res = true;
}
}
return res;
}
Action.Continue();
[свернуть]
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
09.04.2021, 21:05
|
#125
|
VIP
Регистрация: 31.10.2009
Адрес: Рівне. УкраЇна
Сообщений: 10,580
Сказал(а) спасибо: 14,588
Поблагодарили 20,026 раз(а) в 6,492 сообщениях
Вес репутации: 5258
|
Нужен скрипт по типу функции в Excel "Найти/Заменить" для замены символов (отдельные знаки, буквы, цифры, слова, словосочетания) в наименованиях профилей и панелей.
Алгоритм примерно следующий:
1. Запустить скрипт.
2. В панели свойств поле для ввода "Найти". Вводим в это поле символы, которые нужно найти и заменить.
3. Нажимаем кнопку "Найти". Скрипт находит все сочетания указанных символов.
4. В поле "Заменить на" вводим символы, на которые нужно заменить найденные. Если поле остается пустым, значит найденные символы удаляются. Если ввести в поле замены ""пробел"", то есть, между кавычками нажать клавишу пробел, найденные символы заменяются соответственно на пробел...
5. Нажимаем кнопочку "Заменить".
Готов отблагодарить материально.
Решено. Обсуждение здесь
__________________
Уж лучше беспокойство в сомнении, чем успокоенность в заблуждении. .
(Мандзони Алессандро)
------------------------------------
Троллей не кормлю...
Последний раз редактировалось Uncle; 11.04.2021 в 13:52.
|
|
|
Пользователь сказал cпасибо:
|
|
12.04.2021, 17:24
|
#126
|
Новичок
Регистрация: 28.01.2021
Сообщений: 17
Сказал(а) спасибо: 49
Поблагодарили 2 раз(а) в 2 сообщениях
Вес репутации: 0
|
sergio1982, Спасибо. Можно добавить нанесение кромки на "открытые" торцы и чтобы в процессе нанесения на "видимые" торцы удалялась старая кромка Только с "видимых" торцов и клеилась новая?
|
|
|
14.04.2021, 23:33
|
#127
|
Местный
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 195
|
Mullerr
Попытался сделать "правильно", удалять кромки только с тех сторон которые будут облицованы, но не вышло.
Добавил DeleteMode, сначала удаляются все кромки, потом наносятся новые.
Скрытый текст
Код HTML:
var DeleteMode = 1 // Удалять все кромки перед нанесением
var ButtVisible = 1 // Насколько мм не закрыта кромка панели чтобы считать её видимой
Materials = [];
PanelByMaterial = [];
var PanelChanged = 0;
var Selected = Model.SelectionCount;
Model.forEachPanel(
function(Obj) {
if (Selected && !Obj.Selected)
return
var MtName = Obj.MaterialName;
var Index = Materials.indexOf(MtName);
if (Index < 0) {
Index = Materials.push(MtName) - 1;
var Panels = [];
PanelByMaterial.push(Panels);
}
PanelByMaterial[Index].push(Obj);
});
len = Materials.length;
system.log(len);
for (var i = 0; i < len; ++i) {
var Gr = Action.Properties.NewCombo(Materials[i], 'На видимые\nНа все\nУдалить');
Gr.NewButt('Кромка');
BtnPanSel = Gr.NewSelector('Панелей', PanelByMaterial[i].length + ' шт');
BtnPanSel.Tag = i;
BtnPanSel.OnClick = function(Sel) {
UnSelectAll();
var Panels = PanelByMaterial[Sel.Tag];
var len = Panels.length;
for (var j = 0; j < len; ++j) {
Panels[j].Selected = true;
}
};
BtnMake = Gr.NewButton('Применить');
BtnMake.Tag = i;
BtnMake.OnClick = function(Sel) {
UnSelectAll();
var Panels = PanelByMaterial[Sel.Tag];
var Gr = Action.Properties.Items[Sel.Tag];
CurAction = Gr.ItemIndex;
var Butt = Gr.Items[0];
plen = Panels.length;
system.log('make butts: ' + plen);
for (var j = 0; j < plen; ++j) {
if (MakeButts(Panels[j], CurAction, Butt))
PanelChanged++;
}
Action.Hint = 'отредактировано панелей: ' + PanelChanged;
Action.Commit();
};
}
NewButtonInput("Закончить").OnChange = function() { Action.Finish() };
NewButtonInput("Снять выделение").OnChange = function() { UnSelectAll() };
function MakeButts(Panel, Mode, Butt) {
var res = false;
system.log('Panel: ' + Panel.Name);
if (Mode == 2 || DeleteMode) {
if (Panel.Butts.Count > 0) {
StartEditing(Panel);
Panel.Butts.Clear();
res = true;
}
}
if (Mode < 2) {
StartEditing(Panel);
for (var i = 0; i < Panel.Contour.Count; i++) {
if ((Mode == 1) || (Panel.IsButtVisible(i, ButtVisible))) { //проверяет соприкасеется ли кромящиеся сторана(i) с другой пнелью на растояние 1мм
system.log('Editing panel butt ' + i);
Panel.AddButt(Butt, i)
res = true;
}
}
}
Panel.Build();
return res;
}
Action.Continue();
[свернуть]
|
|
|
Пользователь сказал cпасибо:
|
|
27.04.2021, 22:06
|
#128
|
Местный
Регистрация: 15.05.2012
Адрес: Москва
Сообщений: 259
Сказал(а) спасибо: 43
Поблагодарили 211 раз(а) в 89 сообщениях
Вес репутации: 213
|
Коллеги. Нужен скрипт для поиска и выделения панелей с габаритами имеющими дробные окончания размеров. Как такое написать?
|
|
|
28.04.2021, 06:51
|
#129
|
Местный
Регистрация: 11.04.2018
Адрес: г.Маркс
Сообщений: 166
Сказал(а) спасибо: 57
Поблагодарили 244 раз(а) в 46 сообщениях
Вес репутации: 139
|
Цитата:
Сообщение от Slav
Коллеги. Нужен скрипт для поиска и выделения панелей с габаритами имеющими дробные окончания размеров. Как такое написать?
|
Пробуйте
PHP код:
Model.forEachPanel(
function(obj) {
var xo = ((obj.GSize.x ^ 0) === obj.GSize.x) ;
var yo = ((obj.GSize.y ^ 0) === obj.GSize.y) ;
if( !xo || !yo) {
obj.Selected = true;
}
}
);
Но помните, что в БМ кол-во знаков после запятой 3, а панель может иметь больше знаков. Т.е панель 720,000 , а на самом деле 720,000008 и скрипт эту панель выделит.
|
|
|
28.04.2021, 09:11
|
#130
|
Местный
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
|
Цитата:
Сообщение от Максим Геннадьевич
Пробуйте
PHP код:
Model.forEachPanel(
function(obj) {
var xo = ((obj.GSize.x ^ 0) === obj.GSize.x) ;
var yo = ((obj.GSize.y ^ 0) === obj.GSize.y) ;
if( !xo || !yo) {
obj.Selected = true;
}
}
);
Но помните, что в БМ кол-во знаков после запятой 3, а панель может иметь больше знаков. Т.е панель 720,000 , а на самом деле 720,000008 и скрипт эту панель выделит.
|
Можно перед проверкой добавить принудительное округление до 3х знаков, все равно сам базис также округлит. И потом проверять.
|
|
|
Пользователь сказал cпасибо:
|
|
|
|
|
Нижняя навигация
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 17:47. Часовой пояс GMT +3.
|