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

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

Меню

Маркет


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

Сказал(а) спасибо: 7,296
Поблагодарили 16,973 раз(а) в 3,228 сообщениях
Версия для печати Отправить по электронной почте
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..
Просмотров: 619278
Ответить с цитированием Вверх
14 пользователя(ей) сказали cпасибо:
Старый 14.01.2022, 00:22   #601
АлКузнецов
Местный
 
Аватар для АлКузнецов
 
Регистрация: 15.04.2012
Адрес: Санкт-Петербург
Сообщений: 104
Сказал(а) спасибо: 56
Поблагодарили 276 раз(а) в 63 сообщениях
Вес репутации: 212
АлКузнецов как роза среди колючекАлКузнецов как роза среди колючекАлКузнецов как роза среди колючек
По умолчанию

Цитата:
Сообщение от Максим Геннадьевич Посмотреть сообщение
...модель и на ней установлен крепеж Эксцентрик, который имеет составные части Шток и Бочонок. Хотелось бы вывести в логи или алерт названия составных частей. Т.е скрипт ищет составную фурнитуру и выдает имена составных частей.

Мой вариант решения, как обратиться элементам к составной фурнитуры


PHP код:

function ToArray(Object) {
var 
Result = new Array();
for (var 
0Object.Counti++) {
if (
Object[i].Value) {
Result.push(Object[i].Value);
}
};
return 
Result;
};


function 
typHole(_n)
{
var = 
_t
        
switch (true)
        {
    case 
_n == 0:
        
_t 'автоматическое опр.';
    break;
    case 
_n == 1:
        
_t 'сквозное отверстие';
    break;
    case 
_n == 2:
        
_t 'глухое отверстие';
    break;
        }
   return 
_t;
}

function 
typFasteners(_d_h)
{
var 
_n  _d _h;
var 
_t '???';
//console.log('_n ='+_n); //шпргалка индексов

        
switch (true)
        {
    case 
_n == 75:
        
_t 'Евровинт-конфирмат Ø' + (_d 2) +'x'+_h;
    break;
    case 
_n == 55:
        
_t 'Евровинт-конфирмат Ø' + (_d 2) +'x'+_h;
    break;
    case 
_n == 17:
        
_t 'шток-саморез';
    break;
    case 
_n == 21:
        
_t 'бусола М6';
    break;
    case 
_n == 42:
        
_t 'Шток стяжки экцентриковой';
    break;
    case 
_n == 28:
        
_t 'экцентрик стяжки';
    break;
    case 
_n == 48:
        
_t 'Чашка';
    break;
        case 
_n == 29.5:
        
_t 'шкант торец';
    break;
        case 
_n == 20.5:
        
_t 'шкант пласть';
    break;
        }
   return 
_t;
}

/** цикл перебора всех элементов модели
 * @param {List3D} list
 * @param {(obj: Object3)=>{}} func
 */
function forEachInList(list, func){
    if (!
func)
        return;
    for (var 
0< list.Counti++){
        var 
obj = list.Objects[i];
        
func(obj);
        if (
obj.List){
            
forEachInList(obj.AsList(), func);
        }
    }
}

forEachInList(Model, function(obj)    // поиск блоков модели
{
            if (
obj instanceof TFastener) {
        var 
ListElem obj.GetParams('AdvParamData').FindNode('Elements');
            if (
ListElem) {var NameHoleParts ToArray(ListElem).reverse();}; 
/**
ВНИМАНИЕ: ToArray(ListElem).reverse() инвертирует порядок списка 
по умолчаню должно быть ToArray(ListElem) увы частный случай собираю "на костлях"

        toDO [0] : нужна функция возвращающая начало координат контура панелели (Верт/гор/Фронт), испольуя Gabmin панели,  Contour2D панели, тощину панели  и  Position крепежа
        toDO [1] : нужна функция возвращающая панели как Object в которые врезается фурнитура или отверстие 
        */

        
var _Panel = {Thickness16Width400Height400}; 
        
// виртуальная панель для будущей отлаки

        
var _p obj.Name;   // имя крепежа
        
alert('"' _p '" cодержит ' obj.Holes.Count ' вложеных отверстия' );
        
console.log(" кол-во вложенных обьектов = " obj.Holes.Count" тип вложенных обьектов = " obj.Holes);

        for(var 
0obj.Holes.Counti++)    //перебор вложенных элементов
         
{
        var 
_f obj.Holes[i];   // обращаеся к объекту
        
alert(typHole(_f.DrillMode) +' Ø' _f.Diameter 'x' +_f.Depth ' <'typFasteners(_f.Diameter_f.Depth)+'> "'+NameHoleParts[i]+'"');
        
console.log(typHole(_f.DrillMode) + ' Ø' _f.Diameter 'x' +_f.Depth ' <'typFasteners(_f.Diameter_f.Depth)+'> "'+NameHoleParts[i]+'"');
        
//console.log('obj.Holes[' +i '].DrillMode = ' + typHole(_f.DrillMode));   // тип сверлениея пласть(0)/торец (1)
        //console.log('obj.Holes[' +i '].Diameter = '+ _f.Diameter);    // диметр заявлена в мануале
        //console.log('obj.Holes[' +i '].Depth = '+ _f.Depth);          // глубина заявлена в мануале

        
console.log('положение "' _p '" {x:'obj.Position.', y:' obj.Position.', z:' obj.Position.'}');
        
console.log('базовая точка  {x:'_f.Position.', y:' _f.Position.', z:' _f.Position.'}');
        
console.log('направление {x:'_f.Direction.x  ', y:' _f.Direction.', z:' _f.Direction.'}');
        
console.log('точка на контуре гор.Панели  {x:'+ (_f.Position.x) + ', y:' + (_Panel.Height obj.Position.z) + ', z:' + (_Panel.Thickness _f.Position.y) + '}');
        
console.log('точка на контуре верт.Панели  {x:'+ (obj.Position.z) + ', y:' + (_Panel.Thickness _f.Position.y) + ', z:' + (_f.Position.z) + '}');
        
console.log('точка на контуре фронт.Панели  {x:'+ (_f.Position.x) + ', y:' + (_Panel.Thickness _f.Position.y) + ', z:' + (obj.Position.z) + '}');
                  }
        
//obj.Selected = true;
    
}
}); 
[свернуть]


В перспективе можно допилить скрипт, который будет автоматически менять положение торцевых отверстий и глубину отверстий в пласть, при изменении толщины панели.

Например


это всё не работающие размышлизы на экране. Важен принцип и идея
PHP код:
// меняем губину бочонка Эксцентрика
obj.Holes[i].Depth _Panel.Thickness/5
или

PHP код:
// устанавливаем положение штока Эксцентрика по центру панели
obj.Holes[i].Position._Panel.Thickness/2
[свернуть]


Жаль, но как переименовать элементы составной фурнитуры (используя данные диаметра и глубины) -- я пока не представляю.
__________________
С уважением Кузнецов Александр
АлКузнецов вне форума   Ответить с цитированием Вверх
Старый 14.01.2022, 08:40   #602
kos100pudov
Местный
 
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
kos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личность
По умолчанию

Цитата:
Сообщение от АлКузнецов Посмотреть сообщение

Жаль, но как переименовать элементы составной фурнитуры (используя данные диаметра и глубины) -- я пока не представляю.
Мои мысли таковы..
Читать отверстия умеем. Читать составные части теперь умеем. Это дает возможность получения нужной инфы.
Корректировать отверстия умеем. Корректировать названия составных частей теперь умеем.
А если нужно изменить и отверстие и название составных частей сразу, то наверное проще просто производить замену одной составной фурнитуры на другую, можно руками, можно скриптом.
Да и в любом случае, какое либо изменение мы же делаем осознано, т.е. просто нужно грамотно прописать все условия.
__________________
Оно поди конечно если, а как коснись чего-нибудь, так вот те на пожалуйста..

Последний раз редактировалось kos100pudov; 14.01.2022 в 09:15.
kos100pudov вне форума   Ответить с цитированием Вверх
Старый 14.01.2022, 10:41   #603
АлКузнецов
Местный
 
Аватар для АлКузнецов
 
Регистрация: 15.04.2012
Адрес: Санкт-Петербург
Сообщений: 104
Сказал(а) спасибо: 56
Поблагодарили 276 раз(а) в 63 сообщениях
Вес репутации: 212
АлКузнецов как роза среди колючекАлКузнецов как роза среди колючекАлКузнецов как роза среди колючек
По умолчанию

Цитата:
Сообщение от kos100pudov Посмотреть сообщение
Корректировать названия составных частей теперь умеем.
Интересно как? Дупустим есть задача: нужно переименовывать заклушку эксцентрика под цвет ЛДСП, (с белой на черную или серую). Получить цвет панели можно

Попробовал пелеименовать и добавить элемент фурнитуры в лоб
PHP код:
function ToArray(Object) {
var 
Result = new Array();
for (var 
0Object.Counti++) {
if (
Object[i].Value) {
Result.push(Object[i].Value);
}
};
return 
Result;
};

Object GetObject('Укажите фурнитуру');
var 
Elements Object.GetParams('AdvParamData').FindNode('Elements');
if (
Elements) {
var 
mass_elem ToArray(Elements);
const 
_num mass_elem.length+1;

     for (var 
0_num; ++i)
     {
          if (
mass_elem[i] != undefined)
          {
     
mass_elem[i]= mass_elem[i] + ' newTitle';
          
alert(mass_elem[i]);
          }
          else
          {
          
mass_elem[i] = 'noTitle';
          
alert(mass_elem[i])
          }
}

};

// Control
console.log('частей крепежа после редактирования ' mass_elem.length)
     for (var 
0mass_elem.length; ++i)
     {

          if (
mass_elem[i] != undefined)
          {
          
console.log(mass_elem[i]);
          }
       }; 
и у меня не получилось. Нет сам скрипт, пусть и с "пинками", но работает.
Однако, переименования и добавления частей не поисходит. Лезть ради этого SQL-ем в базу — не хочу.

Что я упускаю?
__________________
С уважением Кузнецов Александр

Последний раз редактировалось АлКузнецов; 14.01.2022 в 11:36.
АлКузнецов вне форума   Ответить с цитированием Вверх
Старый 14.01.2022, 15:32   #604
kos100pudov
Местный
 
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
kos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личность
По умолчанию

Цитата:
Сообщение от АлКузнецов Посмотреть сообщение
Интересно как? Дупустим есть задача: нужно переименовывать заклушку эксцентрика под цвет ЛДСП, (с белой на черную или серую).
непосредственно переименовать любую из частей СОСТАВНОЙ ПАРАМЕТРИЧЕСКОЙ фурнитуры, введя новое название вручную:

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

var obj = GetObject('Укажите фурнитуру');
var Elements = obj.GetParams('AdvParamData').FindNode('Elements');

if (Elements) {
for (var i = 0; i < Elements.Count; i++) {
if (Elements[i].Value) {
var new_name = prompt('текущий элемент - ' + Elements[i].Value + '\r\n\r\nвведите новое название при необходимости');
if (new_name) {
Elements[i].Value = new_name;
}
}
}
}
obj.Build();
[свернуть]


с выбором названия из базы материалов:

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

var obj = GetObject('Укажите фурнитуру');
var Elements = obj.GetParams('AdvParamData').FindNode('Elements');

if (Elements) {
for (var i = 0; i < Elements.Count; i++) {
if (Elements[i].Value) {
if (confirm('текущий элемент - ' + Elements[i].Value + '\r\n\r\nвыбрать новое название из базы материалов?')) {
Elements[i].Value = Action.ChooseMaterial();
}
}
}
}
obj.Build();
[свернуть]


ну а далее можно уже развивать...

понятно что таким способом меняется только название.
"телесная" составляющая остается прежней)
__________________
Оно поди конечно если, а как коснись чего-нибудь, так вот те на пожалуйста..
kos100pudov вне форума   Ответить с цитированием Вверх
5 пользователя(ей) сказали cпасибо:
Ovsyanicov (14.01.2022), PravCom (14.01.2022), Travolta741 (17.01.2022), АлКузнецов (14.01.2022), Джекидс (15.01.2022)
Старый 15.01.2022, 19:00   #605
PravCom
Местный
 
Регистрация: 15.10.2019
Адрес: Кишинёв
Сообщений: 198
Сказал(а) спасибо: 492
Поблагодарили 72 раз(а) в 31 сообщениях
Вес репутации: 89
PravCom скоро придёт к известности
По умолчанию

Цитата:
Сообщение от kos100pudov Посмотреть сообщение
https://drive.google.com/file/d/1kv2...ew?usp=sharing
подскажите пожалуйста, как создаётся такая составная параметрическая фурнитура?
в стандартных средствах базиса не нашёл, неужели скриптом?

возможно глупый вопрос задаю, просто не пользовался никогда такой.
PravCom вне форума   Ответить с цитированием Вверх
Старый 15.01.2022, 19:17   #606
Максим Геннадьевич
Местный
 
Регистрация: 11.04.2018
Адрес: г.Маркс
Сообщений: 166
Сказал(а) спасибо: 57
Поблагодарили 244 раз(а) в 46 сообщениях
Вес репутации: 139
Максим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личность
По умолчанию

Цитата:
Сообщение от PravCom Посмотреть сообщение
подскажите пожалуйста, как создаётся такая составная параметрическая фурнитура?
В параметрах крепежа
Миниатюры
Screenshot_1.jpg  
Максим Геннадьевич вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
PravCom (15.01.2022)
Старый 15.01.2022, 21:29   #607
PravCom
Местный
 
Регистрация: 15.10.2019
Адрес: Кишинёв
Сообщений: 198
Сказал(а) спасибо: 492
Поблагодарили 72 раз(а) в 31 сообщениях
Вес репутации: 89
PravCom скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Максим Геннадьевич Посмотреть сообщение
В параметрах крепежа
Семён Семёныч..... спасибо, осознал
PravCom вне форума   Ответить с цитированием Вверх
Старый 25.01.2022, 18:57   #608
Igor_482
VIP
 
Аватар для Igor_482
 
Регистрация: 03.09.2008
Сообщений: 174
Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
Вес репутации: 367
Igor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личность
По умолчанию Информация о работе с составными частями параметрической фурнитуры и её отверстиями

Цитата:
Сообщение от Igor_482 Посмотреть сообщение
Выкладывал ранее скрипт редактирования установленного параметрического крепежа и его составных частей, код работы с составными частями начинается в 323-й строке кода.

Обновленная, более точная информация о работе с составными частями параметрической фурнитуры и дополнение информации по работе с самими отверстиями


PHP код:
oList[i] - [object TFastener]

var 
oAdvParamData oList[i].GetParams();
var 
oElements     oAdvParamData.FindOrCreate('Elements'); // получение или создание списка составных частей параметрической фурнитуры
oAdvParamData.DeleteNode('Elements'); // удаления списка составных частей параметрической фурнитуры
oElements.NodeNew().Value 'Наименование составной части (строка из БД или произвольная)'// добавление составной части параметрической фурнитуры

// Процедура добавления нового отверстия параметрического крепежа, унифицирована для БМ 9-2021
try {
  var 
oNewHole oList[i].Holes.NewHole(); // БМ 10-2021
} catch (oError) {
  
oList[i].Holes.Add(new Object()); // БМ 9
  
var oNewHole oList[i].Holes.Last();
};
oList[i].Holes.Capacity oList[i].Holes.Count;

// Процедура необходимая при изменении кол-ва отверстий, их размеров, позиции или направления для корректного перестроения и отображения последних в модели
oList[i].DrillHoles(oList[i].Owner);
oList[i].MakeFromHoles(); 
[свернуть]

📹 пример использования кода в боевых условиях

Последний раз редактировалось Igor_482; 25.01.2022 в 19:30.
Igor_482 вне форума   Ответить с цитированием Вверх
5 пользователя(ей) сказали cпасибо:
AlexBolton (27.01.2022), kos100pudov (25.01.2022), Ovsyanicov (26.01.2022), PravCom (25.01.2022), АлКузнецов (25.01.2022)
Старый 26.01.2022, 10:20   #609
kos100pudov
Местный
 
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
kos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личность
По умолчанию

Цитата:
Сообщение от Igor_482 Посмотреть сообщение
........
Уважаемый Igor_482!
Не могли бы вы чуть подробнее "поковырять" на тему дополнительных материалов.
Как добавлять вы описали - за это просто огромное спасибо!!!
Как очистить/удалиь весь список, я разобрался.
А как допустим изменить количество уже внесенного в список материала и как удалить какой то конкретный материал из списка не пойму..

А и еще непонятка... Если допустим я пытаюсь внести материал который уже есть в списке, то он добавляется отдельной строкой, но вот его количество берется из уже существующего.. Как бы это обыграть...
__________________
Оно поди конечно если, а как коснись чего-нибудь, так вот те на пожалуйста..
kos100pudov вне форума   Ответить с цитированием Вверх
Старый 27.01.2022, 14:01   #610
kos100pudov
Местный
 
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
kos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личность
По умолчанию

Цитата:
Сообщение от kos100pudov Посмотреть сообщение
Уважаемый Igor_482!
Не могли бы вы чуть подробнее "поковырять" на тему дополнительных материалов.
Как добавлять вы описали - за это просто огромное спасибо!!!
Как очистить/удалиь весь список, я разобрался.
А как допустим изменить количество уже внесенного в список материала и как удалить какой то конкретный материал из списка не пойму..

А и еще непонятка... Если допустим я пытаюсь внести материал который уже есть в списке, то он добавляется отдельной строкой, но вот его количество берется из уже существующего.. Как бы это обыграть...
Сам себе ответил)))
Набросал некую памятку по добавлению/редактированию/удалению дополнительных материалов.
Изучайте кому нужно.

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

/*
для добавления/изменения/удаления объекту дополнительных материалов необходимо
обратиться к объекту
обратиться к свойству 'Param' объекта
внутри 'Param' обратиться к записи 'MaterialAttendance'
(проверить наличие, при необходимости создать запись 'MaterialAttendance')
внутри 'MaterialAttendance' обратиться к записи 'List'
(проверить наличие, при необходимости создать запись 'List')
далее 'List' должен содержать именованые или неименованые записи, что то типа "строк" с данными. каждая "строка" отвечает за конкретный материал.
каждая "строка" может иметь уникальное название, если оно задавалось при создании, а может и не иметь уникальности.
если имя "строки" используется, то не должно содержать только цифры, иначе будет расцениваться как число и к ней будет сложно обратиться.
(использование полного наименования материала (с артикулом) в качестве названия "строки" облегчает ее поиск в дальнейшем).
внутри каждой "строки" должны быть записи (поля) с именами 'Art', 'Name', 'Count' - соответственно артикул, наименование и количество материала.

удалить все дополнительные материалы можно удалив или очистив запись 'MaterialAttendance' или 'List'
удалить конкретный материал из списка дополнителных можно удалив нужную "строку".
если известно имя "строки" то можно удалить непосредственно ее
если не знаем имя "строки" то перебираем все "строки", сравниваем значения свойств 'Art', 'Name', 'Count', и найдя нужную удаляем
*/

//обращение к объекту
var obj_select = Model.Selected;

//обращение к свойству Params выбранного объекта
var obj_params = obj_select.Params;

//***********************************************************************
//обращение к 'MaterialAttendance'

//создание записи с нуля. не использовать если уже существует
var obj_mat_attend = obj_params.NodeNew('MaterialAttendance');

//проверка наличия записи и создание при отсутствии. подходит для создания с нуля и чтения/редактирования/удаления
var obj_mat_attend = obj_params.FindOrCreate('MaterialAttendance');

//проверка наличия записи БЕЗ создания. подходит для чтения/редактирования/удаления. не использовать для создания с нуля
var obj_mat_attend = obj_params.FindNode('MaterialAttendance');

//***********************************************************************
//обращение к 'List'

//создание записи с нуля. не использовать если уже существует
var obj_mat_attend_list = obj_mat_attend.NodeNew('List');

//проверка наличия записи и создание при отсутствии. подходит для создания с нуля и чтения/редактирования/удаления
var obj_mat_attend_list = obj_mat_attend.FindOrCreate('List');

//проверка наличия записи БЕЗ создания. подходит для чтения/редактирования/удаления. не использовать для создания с нуля
var obj_mat_attend_list = obj_mat_attend.FindNode('List');

//***********************************************************************
//обращение к "строке" и ее данным если используется имя "строки"
//имя "строки" не должно содержать только цифры, иначе будет расцениваться как число и к ней будет сложно обратиться

//создание "строки" с нуля. не использовать если "строка" с таким именем уже существует
var obj_mat_attend_item = obj_mat_attend_list.NodeNew('имя строки');

//проверка наличия "строки" и создание при отсутствии. подходит для создания с нуля и чтения/редактирования/удаления
var obj_mat_attend_item = obj_mat_attend_list.FindOrCreate('имя строки');

//проверка наличия "строки" БЕЗ создания. подходит для чтения/редактирования/удаления. не использовать для создания с нуля
var obj_mat_attend_item = obj_mat_attend_list.FindNode('имя строки');


//создание "полей" с нуля. не использовать если "поля" уже существуют
var obj_mat_attend_art = obj_mat_attend_item.NodeNew('Art');
var obj_mat_attend_name = obj_mat_attend_item.NodeNew('Name');
var obj_mat_attend_count = obj_mat_attend_item.NodeNew('Count');

//проверка наличия "полей" и создание при отсутствии. подходит для создания с нуля и чтения/редактирования/удаления
var obj_mat_attend_art = obj_mat_attend_item.FindOrCreate('Art');
var obj_mat_attend_name = obj_mat_attend_item.FindOrCreate('Name');
var obj_mat_attend_count = obj_mat_attend_item.FindOrCreate('Count');

//проверка наличия "полей" БЕЗ создания. подходит для чтения/редактирования/удаления. не использовать для создания с нуля
var obj_mat_attend_art = obj_mat_attend_item.FindNode('Art');
var obj_mat_attend_name = obj_mat_attend_item.FindNode('Name');
var obj_mat_attend_count = obj_mat_attend_item.FindNode('Count');


//обращение к данным "полей". запись
obj_mat_attend_art.Value = 'артикул'; //строковое значение с артикулом материала
obj_mat_attend_name.Value = 'наименование'; //строковое значение с наименованием материала
obj_mat_attend_count.Value = 50;//числовое значение с кол-вом материала
//обращение к данным "полей". чтение))
alert(obj_mat_attend_art.Value); //получаем строку с артикулом материала
alert(obj_mat_attend_name.Value); //получаем строку с наименованием материала
alert(obj_mat_attend_count.Value); //получаем строку с кол-вом материала

//***********************************************************************
//***********************************************************************
//***********************************************************************
//***********************************************************************

//обращение к "строке" и ее данным если имя "строки" не задано или неизвестно

//создание "строки" с нуля. при каждом использовании будет добавляться "строка"
var obj_mat_attend_item = obj_mat_attend_list.NodeNew('');
//или
var obj_mat_attend_item = obj_mat_attend_list.NodeNew();

//поиск и обращение к "строке" без имени или при незнании имени
for (var i=0; i<obj_mat_attend_list.Count; ++i){
var obj_mat_attend_item = obj_mat_attend_list[i];
//тут уже что то делаем, например производим сравнение
//на основании наличия и значений полей 'Art', 'Name', 'Count'
}

//***********************************************************************
//***********************************************************************
//***********************************************************************
//***********************************************************************

//очистка 'MaterialAttendance' от данных. сама запись 'MaterialAttendance' при этом остается
obj_mat_attend.Clear();
//удаление 'MaterialAttendance' со всеми данными
obj_mat_attend.Delete();


//очистка 'List' от данных. сама запись 'List' при этом остается
obj_mat_attend_list.Clear();
//удаление 'List' со всеми данными
obj_mat_attend_list.Delete();


//очистка "строки" от "полей" и их значений. сама "строка" при этом остается
obj_mat_attend_item.Clear();
//удаление "строки" со всеми данными
obj_mat_attend_item.Delete();
[свернуть]


все данные "расковырял" на основании первоисточника от Igor_482, за что ему большая благодарность!!!

единственное что не понял, при каких либо действиях, измененные данные не сразу отображаются в окне свойств объекта. ну это не страшно..
__________________
Оно поди конечно если, а как коснись чего-нибудь, так вот те на пожалуйста..
kos100pudov вне форума   Ответить с цитированием Вверх
4 пользователя(ей) сказали cпасибо:
darcheg (19.05.2023), PravCom (27.01.2022), АлКузнецов (11.02.2022), Джекидс (27.01.2022)
Ответ

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


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Базис ЧПУ 2021/2024 AlexBolton Базис-мебельщик 2021-2024 138 Вчера 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


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


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

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