Форум профессиональных мебельщиков PROMEBELclub
 
PROMEBELclub - Форум для мебельщиков: конструкторов, дизайнеров, мастеров, технологов и всех, кто имеет отношение к производству и изготовлению мебели. Программы для конструирования и дизайна мебели. Мебельная литература и обучающие пособия.
 
 

Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты

Меню

Маркет


Ответ
 
Опции темы Опции просмотра
Старый 14.09.2019, 00:17  
БАЗИС 11-2023 - Скрипты
 
Аватар для AlexBolton
AlexBolton
Модератор
Регистрация: 19.02.2008
Адрес: www
Сообщений: 3,983

Сказал(а) спасибо: 7,296
Поблагодарили 16,979 раз(а) в 3,229 сообщениях
Версия для печати Отправить по электронной почте
AlexBolton AlexBolton вне форума 14.09.2019, 00:17
Рейтинг: ()

Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 11 в этой теме.

Новшества Базис Мебельщик версии 11:
.....
6. Работоспособность скриптов, созданных в более ранних версиях, не гарантируется в версии БАЗИС 11.
.....
52. Разработана панель инструментов для скриптов, на которую можно вывести, например, часто используемые скрипты, со своими иконками, хинтами и т.д.
53. Добавлена возможность автозапуска выбранного скрипта на любое из двух событий – Загрузка модели, и/или Сохранение модели.
.....

Новшества Базис Мебельщик версии 2021:

16. Отладчик скриптов.



VISUAL CODE

Код:
Примеры скриптов из видео

Вес панелей.js
Выделить панели без облицовки.js
Панель по 3 точкам.js
Прифуговка кромки.js
node.js обновился с 7.0.0 до 8.11.3

Напиши себе Базис или Моя первая тумбочка 2
Комплект - руководство+ файлы+ скрипт

Обратите внимание на полезные ответы в этой теме!

__________________
.
▓▒░ Халявы не бывает ░▒▓

[ Как правильно задавать вопросы на форумах ] | [ Как просто, быстро и правильно опубликовать фото и файлы в сообщении 10.04.2024]

[ USDownloader - удобно и безопасно скачиваем с файлообменников 21.04.2024] | [ Обходим блокировки сайтов, торрентов, месенджеров, ФО - RU - UA]


Любые вопросы по любому системному и мебельному софту, любые конвертации, настройки и т.д. >сюда< (кроме озвученных в мануалах, инструкциях и темах форума) ...

Последний раз редактировалось AlexBolton; 09.01.2024 в 11:56..
Просмотров: 620602
Ответить с цитированием Вверх
14 пользователя(ей) сказали cпасибо:
Старый 24.05.2021, 15:15   #441
Ovsyanicov
Местный
 
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 734
Сказал(а) спасибо: 1,529
Поблагодарили 884 раз(а) в 376 сообщениях
Вес репутации: 403
Ovsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Максим Геннадьевич Посмотреть сообщение
Подскажите есть возможность свое название материала присвоить
PHP код:
var Material Props.NewMaterial("Название",Свое название); 
Спасибо
Именно таким способом - не получится. А для какой цели это нужно? Думаю, можно иначе выйти из положения.
Ovsyanicov вне форума   Ответить с цитированием Вверх
Старый 24.05.2021, 18:09   #442
Slav
Местный
 
Регистрация: 15.05.2012
Адрес: Москва
Сообщений: 259
Сказал(а) спасибо: 43
Поблагодарили 211 раз(а) в 89 сообщениях
Вес репутации: 213
Slav - весьма и весьма положительная личностьSlav - весьма и весьма положительная личностьSlav - весьма и весьма положительная личность
По умолчанию

Добрый день. не пойму где ошибка.. Не силен в скриптах

Скрытый текст


function getart(obj) {
var n = obj.Count;
for (var i = 0; i < n; i++) {
var pan = obj.Objects[i];
if (pan instanceof TFurnPanel)
{
alert(222);
return [pan.Designation,pan.ArtPos];
}
else if ((pan instanceof TFurnBlock) || (pan instanceof TDraftBlock) || (pan instanceof TParamBlock3D))
{
alert(333);
let [oboz,art] = call(getart(pan));
alert(444);
//return [oboz,art];
}

}
}
[свернуть]


функция должна перемалывать внутреннее содержимое блока.. До тех пор пока не найдет первую панель с возвратом артикула . На этапе alert(444); цикл оттормаживается
Slav вне форума   Ответить с цитированием Вверх
Старый 24.05.2021, 19:22   #443
kos100pudov
Местный
 
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
kos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личность
По умолчанию

Цитата:
Сообщение от Ovsyanicov Посмотреть сообщение
Именно таким способом - не получится. А для какой цели это нужно? Думаю, можно иначе выйти из положения.
Цитата:
Сообщение от Максим Геннадьевич Посмотреть сообщение
Подскажите есть возможность свое название материала присвоить
PHP код:
var Material Props.NewMaterial("Название",Свое название); 
Спасибо

Объект.MaterialName='свое название' ;
Или
Объект.MaterialName='свое название\rСвой артикул' ;
kos100pudov вне форума   Ответить с цитированием Вверх
Старый 24.05.2021, 20:06   #444
kos100pudov
Местный
 
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
kos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личность
По умолчанию

Цитата:
Сообщение от Slav Посмотреть сообщение
Добрый день. не пойму где ошибка.. Не силен в скриптах

Скрытый текст


function getart(obj) {
var n = obj.Count;
for (var i = 0; i < n; i++) {
var pan = obj.Objects[i];
if (pan instanceof TFurnPanel)
{
alert(222);
return [pan.Designation,pan.ArtPos];
}
else if ((pan instanceof TFurnBlock) || (pan instanceof TDraftBlock) || (pan instanceof TParamBlock3D))
{
alert(333);
let [oboz,art] = call(getart(pan));
alert(444);
//return [oboz,art];
}

}
}
[свернуть]


функция должна перемалывать внутреннее содержимое блока.. До тех пор пока не найдет первую панель с возвратом артикула . На этапе alert(444); цикл оттормаживается
После алерта 444, return стоит в комментарии. В итоге функция ничего не возвращает.
Тут вообще не понятно, вы пишете про артикул, а в функции идёт работа с обозначением и позицией.
Опишите что нужно по итогу.
kos100pudov вне форума   Ответить с цитированием Вверх
Старый 24.05.2021, 20:13   #445
Максим Геннадьевич
Местный
 
Регистрация: 11.04.2018
Адрес: г.Маркс
Сообщений: 166
Сказал(а) спасибо: 57
Поблагодарили 244 раз(а) в 46 сообщениях
Вес репутации: 139
Максим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личность
По умолчанию

Цитата:
Сообщение от Ovsyanicov Посмотреть сообщение
Именно таким способом - не получится. А для какой цели это нужно? Думаю, можно иначе выйти из положения.
Например. Выделяем панель, запускаем скрипт и в форме NewMaterial устанавливается материал панели и мы оставляем его или меняем на нужный.

Добавлено через 2 минуты
Цитата:
Сообщение от kos100pudov Посмотреть сообщение
Объект.MaterialName='свое название' ;
Или
Объект.MaterialName='свое название\rСвой артикул' ;
Это в теле цикла, а как сделать в форме замена выделенного материала?
Максим Геннадьевич вне форума   Ответить с цитированием Вверх
Старый 24.05.2021, 20:19   #446
kos100pudov
Местный
 
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
kos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личность
По умолчанию

Цитата:
Сообщение от bazuna Посмотреть сообщение
Добрый день!

Подскажите, кто знает, есть ли какая зависимость между координатами контура панели, координатами начальной и конечной точек траектории паза и координатами профиля паза?

Суть вопроса в определении с помощью скрипта проходит ли паз по панели, если да, то с каким отступом от стороны, вдоль которой он построен.

Пример. Строим обычный паз под заднюю стенку ХДФ/ДВП на элемент контура (траектория паза совпадает с элементом контура панели) со смещением, например, 16 мм. Паз появляется на панели. Далее, если отредактировать траекторию, а именно поменять ее начальную и конечную точку, то паз пропадает с панели из-за того, что меняются координаты его профиля, что видно при его редактировании, базис строит его симметрично оси Y.
Есть.
ЛСК панели. Элементы контура панели имеют координаты относительно ЛСК панели. Координаты траектории паза также относительно ЛСК панели.
Тут скорее нужно перевести координаты сечения паза в координаты панели и далее смотреть находится ли контур паза внутри контура панели, либо какие то точки контура паза внутри контура панели..
kos100pudov вне форума   Ответить с цитированием Вверх
Старый 24.05.2021, 21:04   #447
Slav
Местный
 
Регистрация: 15.05.2012
Адрес: Москва
Сообщений: 259
Сказал(а) спасибо: 43
Поблагодарили 211 раз(а) в 89 сообщениях
Вес репутации: 213
Slav - весьма и весьма положительная личностьSlav - весьма и весьма положительная личностьSlav - весьма и весьма положительная личность
По умолчанию

собственно пришел вот к чему: не могу массив вытащить из функции:
Цитата:
obj = Model.Selected
let Arr = getart(obj);
alert (Arr[1]); // а тут нет

function getart(obj) {

var n = obj.Count;
for (var i = 0; i < n; i++) {
var pan = obj.Objects[i];
if (pan instanceof TFurnPanel)
{
let Arr = [];
Arr[1] = pan.Designation;
Arr[2] = pan.ArtPos;
alert (Arr[1]); /// тут работает
return Arr;
}
else if ((pan instanceof TFurnBlock) || (pan instanceof TDraftBlock) || (pan instanceof TParamBlock3D))
{
let Arr = getart(pan);

}
}
};
Slav вне форума   Ответить с цитированием Вверх
Старый 24.05.2021, 23:27   #448
kos100pudov
Местный
 
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
kos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личность
По умолчанию

Цитата:
Сообщение от Slav Посмотреть сообщение
собственно пришел вот к чему: не могу массив вытащить из функции:
obj = Model.Selected;
alert(getart(obj));


function getart(obj) {
let Arr = [];
if (obj instanceof TFurnPanel) {
Arr.push(obj.Designation);
Arr.push(obj.ArtPos);
} else if ((obj instanceof TFurnBlock) || (obj instanceof TDraftBlock) || (obj instanceof TParamBlock3D)) {
for (var i = 0; i < obj.Count; ++i) {
Arr.push(getart(obj[i]));
}
}
return Arr;
}

Добавлено через 2 минуты
Цитата:
Сообщение от Максим Геннадьевич Посмотреть сообщение
Например. Выделяем панель, запускаем скрипт и в форме NewMaterial устанавливается материал панели и мы оставляем его или меняем на нужный.

Добавлено через 2 минуты


Это в теле цикла, а как сделать в форме замена выделенного материала?
Не совсем понял, в какой форме?
kos100pudov вне форума   Ответить с цитированием Вверх
Старый 25.05.2021, 09:04   #449
Максим Геннадьевич
Местный
 
Регистрация: 11.04.2018
Адрес: г.Маркс
Сообщений: 166
Сказал(а) спасибо: 57
Поблагодарили 244 раз(а) в 46 сообщениях
Вес репутации: 139
Максим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личность
По умолчанию

Цитата:
Сообщение от kos100pudov Посмотреть сообщение

Не совсем понял, в какой форме?
Всю голову сломал, думаю нужно вытащить материал из pan и сделать его активным, но как сделать, вот вопрос. Это часть кода.
PHP код:
var pan GetPanel("Укажите панель");
var 
form =  NewForm() ;
var 
Props form.Properties;
form.Width 337;
form.Height 200;
form.Caption "Window1";
form.OKButton true;
form.CancelButton true;
//Нужно материал pan, чтоб отображался в  Material1,
// а не брался из используемого материала

var Material1 Props.NewMaterial("Название",pan.MaterialName);
Material1.SetLayout(615920020);
Material1.OnChange = function (){
  
alert('изменения');
}
//-- window Window1 events
form.OKButton = function (){
form.OnFinish();
}
form.Show(); 
Максим Геннадьевич вне форума   Ответить с цитированием Вверх
Старый 25.05.2021, 17:14   #450
Ovsyanicov
Местный
 
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 734
Сказал(а) спасибо: 1,529
Поблагодарили 884 раз(а) в 376 сообщениях
Вес репутации: 403
Ovsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Максим Геннадьевич Посмотреть сообщение
Всю голову сломал, думаю нужно вытащить материал из pan и сделать его активным, но как сделать, вот вопрос. Это часть кода.
Так как с использованием метода NewMaterial не получается решить задачу, то пошёл другим путём. С костылями, конечно, но свою функцию выполняет, вроде бы:
PHP код:
Undo.RecursiveChanging(Model);
let panel GetPanel("Укажите панель");
let PanelCurrentMaterial panel.MaterialName;
let PanelNewMaterial;
//-- window Window1
Window1 = { Form NewForm() };
Props Window1.Form.Properties;
Window1.Form.Width 560;
Window1.Form.Height 150;
Window1.Form.Caption "Замена материала панели";
Window1.Form.OKButton true;
Window1.Form.CancelButton true;
Window1.Form.MinHeight 150;
Window1.Form.MinWidth 560;
//-- window Window1 properties

Window1.String1 Props.NewString("Материал панели"ExtractMatName(PanelCurrentMaterial));
Window1.String1.SetLayout(204050020);
Window1.String1.AlignWithMargins true;
Window1.String1.Enabled false;
Window1.Material1 Props.NewMaterial("");
Window1.Material1.SetLayout(521402120);
Window1.Material1.AlignWithMargins false;

//-- window Window1 events

Window1.Material1.OnValueChange = function(){
    
Window1.String1.Value ExtractMatName(Window1.Material1.MaterialName);
    
PanelNewMaterial Window1.Material1;
    
alert('Материал изменён');
}

Window1.Form.OnOkButtonClick = function(){
    if(
PanelNewMaterial != undefined){
        
panel.MaterialName PanelNewMaterial.MaterialName;
        
panel.Thickness PanelNewMaterial.Thickness;
        
Model.Build();
    }
}

//-- window Window1 ends
Window1.Form.ShowModal(); 
PS: Сначала была мысль использовать NewSelector(), вместо NewMaterial(), но код уже на пол-пути получался индусским и я оставил эту затею.
Ovsyanicov вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Ответ

Нижняя навигация
Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Базис ЧПУ 2021/2024 AlexBolton Базис-мебельщик 2021-2024 138 26.04.2024 15:25
БАЗИС 10 - Скрипты systland Базис-мебельщик. Скрипты 715 14.04.2024 07:03
V-Ray в Базис Мебельщик 11/2023 nayrogi Система БАЗИС 73 12.04.2024 17:08
БАЗИС 9 - Скрипты Igor_482 Базис-мебельщик. Скрипты 1442 04.04.2024 11:28
БАЗИС 8 - Скрипты Igor_482 Базис-мебельщик. Скрипты 1525 30.03.2024 15:03


Текущее время: 14:52. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© 2007-2023 PROMEBEL

џндекс.Њетрика