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

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

Меню

Маркет


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

Сказал(а) спасибо: 7,296
Поблагодарили 16,956 раз(а) в 3,223 сообщениях
Версия для печати Отправить по электронной почте
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
Комплект - руководство+ файлы+ скрипт

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

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

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

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


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

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

Цитата:
Сообщение от Letos Посмотреть сообщение
Я проверял на 11 версии, у вас тоже на 11?
Только на 10. Ключ от 11 дома забыл )

Добавлено через 14 минут
Цитата:
Сообщение от Letos Посмотреть сообщение
Проблема так все равно не решится. В один и тот же массив pat трижды переписываются значения в индексах с 0 по 2 (в цикле по i). А в массив FA каждый раз записывается ссылка на массив pat (в цикле по j).
Вы правы, каюсь)
Не обратил внимание на вывод в консоль содержимого FA, а только на pat.
Кстати, в консоли 11 версии вывод содержимого массивов выглядит более наглядным, чем в 10.
Ovsyanicov вне форума   Ответить с цитированием Вверх
Старый 25.02.2020, 22:20   #182
wizardpnz
Местный
 
Регистрация: 02.07.2011
Сообщений: 191
Сказал(а) спасибо: 93
Поблагодарили 105 раз(а) в 44 сообщениях
Вес репутации: 196
wizardpnz скоро придёт к известностиwizardpnz скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Габариты как у любого объекта:
PHP код:
var min Model.GMin;
var 
max Model.GMax
По сути, это будут точки минимум/максимум вложенных элементов (также, как и у блока). Разницы между GMin и GabMin у модели быть не должно, ибо её ЛСК равна ГСК (в теории, возможно изменить поворот всей модели, но на практике таких случаев я не встречал).
мне нужно именно габаритной рамки а там показывает больше если деталь вылезла за габарит
wizardpnz вне форума   Ответить с цитированием Вверх
Старый 26.02.2020, 09:31   #183
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от wizardpnz Посмотреть сообщение
мне нужно именно габаритной рамки а там показывает больше если деталь вылезла за габарит
Тогда можно за основу брать габариты модели, а потом смотреть по модели, есть ли габрамка:

Код

PHP код:
var min Model.GMin
var 
max Model.GMax;
for (var 
0Model.Counti++){
    if (
Model.Objects[i] instanceof TModelLimits){
        var 
lim Model.Objects[i];
        
min lim.GabMin;
        
max lim.GabMax;
    }

[свернуть]


P.S. Похоже имелись в виду те размеры, которые задаются в параметрах изделия. К ним не получилось достучаться через скрипты - в Article их точно нет.
Letos вне форума   Ответить с цитированием Вверх
Старый 26.02.2020, 09:37   #184
rombler
Пользователь
 
Регистрация: 13.01.2020
Сообщений: 69
Сказал(а) спасибо: 48
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
rombler пока не определено
По умолчанию

Разобрался я в чем была причина. В процессе конвертации приходится часто использовать функцию eval() т.к о наличии переменных я узнаю в процессе чтения файла.
Мало того в этой переменной которую нужно было скопировать я использовал массив объектов. Получилось вот так:
pat1 = [ equi: [ 5 ], equin: [ 1 ], equis: [ 1 ] ]
picarr[1] = pat1;
pat1 = [ equi: [ 20 ], equin: [ 1 ], equis: [ 1 ] ]
picarr[2] = pat1;
результат:
[ <1 empty item>,
[ equi: [ 22 ], equin: [ 1 ], equis: [ 1 ] ],
[ equi: [ 22 ], equin: [ 1 ], equis: [ 1 ] ] ]
и как только не бился не получается скопировать правильно.
Пробовал pat1.concat() и pat1.slice(0). Не работают эти функции с массивом объектов.
С обычным массивом вида pat1[0] всё работает нормально.

p/s обнаружил что если создавать переменную используя eval(), то переменная находится в глобальной области видимости.
rombler вне форума   Ответить с цитированием Вверх
Старый 26.02.2020, 09:43   #185
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
Восклицание Чтение внутренних параметров объектов

Написал небольшую рекурсивную функцию для просмотра xbs объектов (например, параметры эластичности в блоке):
PHP код:
function ViewNode(nodeowner){
    var 
nodeopt owner.NewString(node.Namenode.Value || '');
    for (var 
0node.Counti++){
        
ViewNode(node[i], nodeopt);
    }

Принимает на вход xbs объект и родительский компонент на панели свойств.

Небольшой пример по использованию - вывод информации о выделенном объекте(берётся свойство Params у объекта), с последующим запросом на выделение до отмены скрипта.

код

PHP код:
function ViewNode(nodeowner){
    var 
nodeopt owner.NewString(node.Namenode.Value || '');
    for (var 
0node.Counti++){
        
ViewNode(node[i], nodeopt);
    }
}

Action.Continue();
var 
props Action.Properties;
var 
obj Model.Selected || GetObject('Select object');
while (
obj){
    
Model.UnSelectAll();
    
obj.Selected true;
    
props.Clear();
    
ViewNode(obj.Paramsprops);
    
obj GetObject('Select object');

[свернуть]
Letos вне форума   Ответить с цитированием Вверх
Старый 26.02.2020, 10:20   #186
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от rombler Посмотреть сообщение
Разобрался я в чем была причина. В процессе конвертации приходится часто использовать функцию eval() т.к о наличии переменных я узнаю в процессе чтения файла.
Мало того в этой переменной которую нужно было скопировать я использовал массив объектов. Получилось вот так:
pat1 = [ equi: [ 5 ], equin: [ 1 ], equis: [ 1 ] ]
picarr[1] = pat1;
pat1 = [ equi: [ 20 ], equin: [ 1 ], equis: [ 1 ] ]
picarr[2] = pat1;
результат:
[ <1 empty item>,
[ equi: [ 22 ], equin: [ 1 ], equis: [ 1 ] ],
[ equi: [ 22 ], equin: [ 1 ], equis: [ 1 ] ] ]
и как только не бился не получается скопировать правильно.
Пробовал pat1.concat() и pat1.slice(0). Не работают эти функции с массивом объектов.
С обычным массивом вида pat1[0] всё работает нормально.

p/s обнаружил что если создавать переменную используя eval(), то переменная находится в глобальной области видимости.
Если я правильно понял и вам нужно создать копию массива, в которой будут копии (а не ссылки) объектов, тогда можно создать новый массив и копировать в него объекты, например так:

код

PHP код:
var pat1 = {
    
abc 5,
    
bca 1
}
var 
pat2 = {
    
abc10,
    
bca1,
    
xyz1
}
var 
picarr = [pat1pat2];
//Создание копии массива
var picarr2 = [];
for (var 
0picarr.lengthi++){
    var 
obj = new Object();
    
Object.assign(objpicarr[i])
    
// изменяем свойства копии, чтобы убедиться, что у исходного ничего не меняется
    
obj.abc += 5;
    
obj.bca--; 
    
picarr2.push(obj);
}
console.log(picarr2); 
[свернуть]


Касательно приведённого вами кода - вы не определяете переменную (с помощью var/let), соответственно, при первом её упоминании, она создаётся в глобальном пространстве (даже если вы её задали в теле цикла).

P.S. Взял приведённый вами код, изменил определение pat1 (квадратные на фигурные, чтобы объект получился, а то так ошибки сыпет) и у меня заработало нормально:

Код и лог

Код:
PHP код:
picarr = [];
pat1 = { equi: [ ], equin: [ ], equis: [ ] }
picarr[1] = pat1;
pat1 = { equi: [ 20 ], equin: [ ], equis: [ ] }
picarr[2] = pat1;
console.log(picarr); 
Лог:
Код:
[ <1 empty item>, 
{ equi: [ 5 ], equin: [ 1 ], equis: [ 1 ] },  
{ equi: [ 20 ], equin: [ 1 ], equis: [ 1 ] } ]
[свернуть]
Letos вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
rombler (26.02.2020)
Старый 26.02.2020, 13:58   #187
rombler
Пользователь
 
Регистрация: 13.01.2020
Сообщений: 69
Сказал(а) спасибо: 48
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
rombler пока не определено
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Если я правильно понял и вам нужно создать копию массива, в которой будут копии (а не ссылки) объектов, тогда можно создать новый массив и копировать в него объекты, например так:

код

PHP код:
var pat1 = {
    
abc 5,
    
bca 1
}
var 
pat2 = {
    
abc10,
    
bca1,
    
xyz1
}
var 
picarr = [pat1pat2];
//Создание копии массива
var picarr2 = [];
for (var 
0picarr.lengthi++){
    var 
obj = new Object();
    
Object.assign(objpicarr[i])
    
// изменяем свойства копии, чтобы убедиться, что у исходного ничего не меняется
    
obj.abc += 5;
    
obj.bca--; 
    
picarr2.push(obj);
}
console.log(picarr2); 
[свернуть]
Да спасибо.
Создал пример моего кода в намного упрощенной версии. Там все нормально получается без всяких ухищрений.
В моем же коде, запросто, переменная никак не копировалась. Ваш код помог. Теперь буду остальные участки переделывать из массива в объекты.
rombler вне форума   Ответить с цитированием Вверх
Старый 28.02.2020, 10:36   #188
rombler
Пользователь
 
Регистрация: 13.01.2020
Сообщений: 69
Сказал(а) спасибо: 48
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
rombler пока не определено
По умолчанию

Назрел ещё один вопрос. Использую форму/список при добавлении элементов в этот список на 11 версии базиса и запуске этой формы выходит вот такая ошибка:
cannot assign a nil to a tstringlist
Есть ли какие то изменения касаемые списков в 11 версии базиса или как програмно добавить в список элементы?
rombler вне форума   Ответить с цитированием Вверх
Старый 28.02.2020, 11:25   #189
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от rombler Посмотреть сообщение
Назрел ещё один вопрос. Использую форму/список при добавлении элементов в этот список на 11 версии базиса и запуске этой формы выходит вот такая ошибка:
cannot assign a nil to a tstringlist
Есть ли какие то изменения касаемые списков в 11 версии базиса или как програмно добавить в список элементы?
Это косяк объекта типа Combo. программно можно обойти это так: вместо
Код:
Window1.Combo1.ComboItems = ["123123", "12321", "fsad"];
добавлять элементы по одному
PHP код:
Window1.Combo1.ComboItems.Add("123123");
Window1.Combo1.ComboItems.Add("12321");
Window1.Combo1.ComboItems.Add("fsad"); 
Letos вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
Ovsyanicov (28.02.2020), rombler (28.02.2020)
Старый 28.02.2020, 13:25   #190
rombler
Пользователь
 
Регистрация: 13.01.2020
Сообщений: 69
Сказал(а) спасибо: 48
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
rombler пока не определено
По умолчанию

Ещё подскажите пожалуйста как из формы выбрать деталь?
Т.е простая команда var panel = GetPanel("Укажите панель"); выполняемая из формы дает зависание всей системы.
Выбрать деталь не могу потому что события выполняются в форме и в форме нажать закрыть не могу потому что события переданы на сцену.
rombler вне форума   Ответить с цитированием Вверх
Ответ

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


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

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

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

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


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


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

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