|
|
|
|
|
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..
|
Просмотров: 425170
|
18.03.2020, 16:14
|
#521
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
|
Цитата:
Сообщение от Letos
Недавно наткнулся на то, что функция разрушения блока работает некорректно. А именно оставляет каждый второй элемент в блоке и, в результате, они удаляются вместе с блоком.
|
Возможно, кому-то приходила идея, но он боялся спросить: теперь функция опционально рекурсивная (можно разрушить как вложенные в корневой блок блоки, так и вообще все блоки в корне):
Новый код функции разрушения блока
PHP код:
/**
* Разрушить блок
* @param {List3D} block Блок для разрушения
* @param {boolean} recursive Флаг - разрушать ли вложенные блоки
*/
function DestroyBlock(block, recursive) {
// Если блок - Модель, то ничего не делаем, иначе посыпятся аксессы
if (block == Model)
return;
// Флаг, создан ли блок скриптом (находится во временной области модели)
var blockIsScript = block.IsOwner(Model.Temp);
Undo.Changing(block);
// список вложенных блоков. Используется если разрушение рекурсивное
var blocklist = [];
// Идём от последнего элемента к первому, т.к. при удалении объекта из блока,
// кол-во элементов внутри уменьшается.
for (var i = block.Count - 1; i >= 0; i--) {
var obj = block.Objects[i];
//Если не скриптовый блок, сохраняем изменения объекта в истории вручную
if (!blockIsScript) {
Undo.Changing(obj);
Undo.OwnerChanging(obj);
}
obj.ReTransform(obj.Owner, block.Owner);
obj.Owner = block.Owner;
if (obj.List) {
blocklist.push(obj);
}
}
DeleteObject(block);
if (recursive) {
for (var i = 0; i < blocklist.length; i++) {
DestroyBlock(blocklist[i], true);
}
}
}
[свернуть]
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
22.03.2020, 15:09
|
#522
|
Местный
Регистрация: 25.04.2009
Сообщений: 201
Сказал(а) спасибо: 118
Поблагодарили 29 раз(а) в 15 сообщениях
Вес репутации: 208
|
Подскажите как выделить панели из полуфабрикатов. и по возможности как несколько панелей объединить в полуфабрикат
|
|
|
23.03.2020, 11:06
|
#523
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
|
Цитата:
Сообщение от a_riva
Подскажите как выделить панели из полуфабрикатов. и по возможности как несколько панелей объединить в полуфабрикат
|
Объединение выделенных панелей в полуфабрикат
PHP код:
var block = AddDraftBlock('полуфабрикат');
Action.Commit();
// Послдений объект модели - созданный полуфабрикат
block = Model.Objects[Model.Count - 1];
// Перебор всех выделенных объектов
for (var i = 0; i < Model.SelectionCount; i++){
var obj = Model.Selections[i];
// Записываем изменение объекта
Undo.Changing(obj);
// Записываем изменнение родителя объекта
Undo.OwnerChanging(obj);
// Менеям локальное преобразование объекта, чтобы при изменении родителя
// объект остался на том же месте с тем же поворотом
obj.ReTransform(obj.Owner, block);
// Назначаем нового родителя.
obj.Owner = block;
}
Model.UnSelectAll();
block.Selected = true;
[свернуть]
Выделение панелей в полуфабрикатах
PHP код:
function selectInList(list, select){
for (var i = 0; i < list.Count; i++){
obj = list[i];
if (obj instanceof TFurnPanel){
obj.Selected = select;
}
else if (obj.List){
selectInList(obj, select || (obj instanceof TDraftBlock));
}
}
}
selectInList(Model, false)
[свернуть]
|
|
|
4 пользователя(ей) сказали cпасибо:
|
|
30.03.2020, 14:22
|
#524
|
Местный
Регистрация: 25.04.2009
Сообщений: 201
Сказал(а) спасибо: 118
Поблагодарили 29 раз(а) в 15 сообщениях
Вес репутации: 208
|
подскажите пжста как получить содержимое поля "примечание" в карточке материала, базы материалов
Последний раз редактировалось a_riva; 30.03.2020 в 15:00.
|
|
|
30.03.2020, 16:18
|
#525
|
Местный
Регистрация: 02.07.2011
Сообщений: 191
Сказал(а) спасибо: 93
Поблагодарили 105 раз(а) в 44 сообщениях
Вес репутации: 196
|
sql запросом к файлу БД
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
05.04.2020, 11:17
|
#526
|
Местный
Регистрация: 25.04.2009
Сообщений: 201
Сказал(а) спасибо: 118
Поблагодарили 29 раз(а) в 15 сообщениях
Вес репутации: 208
|
Цитата:
Сообщение от wizardpnz
sql запросом к файлу БД
|
а к базе БМ11, он (скрипт sql) подключается? что-то пока не получается. переместили в корень, путь базы на латинском? сама база на латинском, без пробелов и не работает(
|
|
|
06.04.2020, 22:25
|
#527
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
|
Цитата:
Сообщение от a_riva
а к базе БМ11, он (скрипт sql) подключается? что-то пока не получается. переместили в корень, путь базы на латинском? сама база на латинском, без пробелов и не работает(
|
В этом сообщении скрипт для подсчёта веса изделий. Для доступа к базе используется модуль для Node.js (в папке node_modules). Там основная проблема - путь к базе должен содержать только латинские символы (пока побороть это не получилось).
|
|
|
17.06.2020, 17:58
|
#528
|
Местный
Регистрация: 11.04.2018
Адрес: г.Маркс
Сообщений: 162
Сказал(а) спасибо: 57
Поблагодарили 242 раз(а) в 45 сообщениях
Вес репутации: 137
|
Mount не срабатывает
У меня не работает или вообще не работает. Пытаюсь установить фурнитуру через Mount , но не срабатывает именно в 10 версии. Подскажите в чем может быть дело. Спасибо
PHP код:
var FileOptions = 'Save.xml';
var left = GetPanel("Укажите левую панель");
left.Build();
var prop = Action.Properties;
var blockMat = prop.NewMaterial('Материал');
var blockFurn = blockMat.NewFurniture('Крепеж');
NewBtn = NewButtonInput('Закончить');
NewBtn.OnChange = function() {
Action.Commit();
Action.Finish();
}
prop.OnChange = function() {
MakeShelf();
}
function MakeShelf(){
DeleteNewObjects();
var pan = AddHorizPanel(left.GabMax.x, 0, 400, 400, 500);
pan.Build();
blockFurn.Value.Mount( pan,left, left.GabMax.x, 508, 200);
}
MakeShelf();
Action.Continue();
|
|
|
19.06.2020, 10:01
|
#529
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
|
Цитата:
Сообщение от Максим Геннадьевич
У меня не работает или вообще не работает. Пытаюсь установить фурнитуру через Mount , но не срабатывает именно в 10 версии. Подскажите в чем может быть дело. Спасибо
|
У меня нормально. После выбора левой панели и выбора фурнитуры поставилась горизонтальная панель с выбранной фурнитурой по середине (парам. Евровинт, если это имеет значение). Проверял на БМ демо 10.6.2.25692 от 25.01.2019.
Может быть, зависит от панелей и фурнитуры, может от версии БМ
|
|
|
19.06.2020, 21:27
|
#530
|
Местный
Регистрация: 11.04.2018
Адрес: г.Маркс
Сообщений: 162
Сказал(а) спасибо: 57
Поблагодарили 242 раз(а) в 45 сообщениях
Вес репутации: 137
|
Цитата:
Сообщение от Letos
У меня нормально. После выбора левой панели и выбора фурнитуры поставилась горизонтальная панель с выбранной фурнитурой по середине (парам. Евровинт, если это имеет значение). Проверял на БМ демо 10.6.2.25692 от 25.01.2019.
Может быть, зависит от панелей и фурнитуры, может от версии БМ
|
Самое интересное, что если создам две панели то функция срабатывает, а если выбираю панель то не работает. У меня версия демо 10.1.0.21913 от 07.07.2017. Попробую сменить версию. Спасибо
Цитата:
Сообщение от Letos
БМ демо 10.6.2.25692 от 25.01.2019.
|
Не поделитесь демо версией? Перерыл интернет, но так и не нашел
|
|
|
|
|
|
Нижняя навигация
|
|
Опции темы |
|
Опции просмотра |
Линейный вид
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 15:17. Часовой пояс GMT +3.
|