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

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

Меню

Маркет


Ответ
 
Опции темы Опции просмотра
Старый 21.03.2018, 14:48  
Обсуждение скриптов в Системе Базис
Letos
Консультант
Регистрация: 28.06.2017
Сообщений: 555

Сказал(а) спасибо: 127
Поблагодарили 1,029 раз(а) в 366 сообщениях
Версия для печати Отправить по электронной почте
Letos Letos вне форума 21.03.2018, 14:48
Рейтинг: ()

Если вы не знаете, или не уверены, куда задавать вопрос по скриптам в Системе Базис, то эта тема для вас.
Просмотров: 235687
Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
PravCom (28.07.2021), Максим Геннадьевич (08.06.2018)
Старый 18.04.2018, 11:41   #31
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,029 раз(а) в 366 сообщениях
Вес репутации: 343
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Rudolf Посмотреть сообщение
Добрый день.
Есть ли возможность имортировать через скрипт в Базис 8 данные из формата csv, например
артикул1;длина1;ширина1;колво1
артикул2;длина2;ширина2;колво2
...
После импорта будут созданы панели с этими параметрами.
Вот пример для описанного Вами случая:
PHP код:
//имя файла
var csvName system.askFileName('csv');
//содержимое файла
var content system.readTextFile(csvName);
// массив, элемент которого равен строке из файла
var panels content.split('\r\n');
// позиция (геометрическая) панели
var curPos NewVector(0,0,0);
for (var 
0panels.lengthi++){
    
// массив, содержащий информацию по конкрентой панели
    
var panel panels[i].split(';');
    
// Позиция (артикул) панели
    
var art panel[0];
    
//длина панели
    
var length panel[1];
    
//ширина панели
    
var width panel[2];
    
// кол-во панелей
    
var count panel[3];
    for (var 
0countk++){
        
//добавление панели
        
var AddVertPanel(00widthlength0);
        
//назначение позиции (артикула)
        
p.ArtPos art;
        
// назначение позиции геометрической
        
p.Position curPos;
        
// увеличение позиции по х, чтобы все панели были на одной линии
        
curPos.+= 50;
    }

Писал в 10 версии, но, думаю, будет работать во всех. Если вдруг не заработает, запустите его из встроенного редактора и напишите текст ошибки, попробую исправить.
Letos вне форума   Ответить с цитированием Вверх
3 пользователя(ей) сказали cпасибо:
Ovsyanicov (18.04.2018), Rudolf (19.04.2018), Uncle (18.04.2018)
Старый 18.04.2018, 12:07   #32
Uncle
VIP
 
Аватар для Uncle
 
Регистрация: 31.10.2009
Адрес: Рівне. УкраЇна
Сообщений: 10,580
Сказал(а) спасибо: 14,588
Поблагодарили 20,023 раз(а) в 6,492 сообщениях
Вес репутации: 5257
Uncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспорима
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
PHP код:
Сергей, просветите, пожалуйста, что сделать с PHP-кодом, что бы он стал полноценным скриптом ? ) То есть, вставил в редактор скриптов и сразу можно нажимать Запуск ..
__________________
Уж лучше беспокойство в сомнении, чем успокоенность в заблуждении. .
(Мандзони Алессандро)
------------------------------------
Троллей не кормлю...
Uncle вне форума   Ответить с цитированием Вверх
Старый 18.04.2018, 12:23   #33
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,029 раз(а) в 366 сообщениях
Вес репутации: 343
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Uncle Посмотреть сообщение
Сергей, просветите, пожалуйста, что сделать с PHP-кодом, что бы он стал полноценным скриптом ? ) То есть, вставил в редактор скриптов и сразу можно нажимать Запуск ..
Да. Контейнер "PHP код" я использовал для более красивого отображения на форме, ибо контейнер "код" пишет все сплошным текстом без выделения ключевых слов и комментариев.
Letos вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Uncle (18.04.2018)
Старый 18.04.2018, 13:29   #34
Rudolf
Новичок
 
Регистрация: 29.11.2014
Сообщений: 6
Сказал(а) спасибо: 2
Поблагодарили 4 раз(а) в 1 сообщении
Вес репутации: 0
Rudolf пока не определено
По умолчанию

Огромное спасибо.
Все работает на 99% - читает из файла и создает детали, но почему-то размером 2х2
Алерты перед AddVertPanel показывают правильные цифры, разбираюсь.
Rudolf вне форума   Ответить с цитированием Вверх
Старый 19.04.2018, 10:54   #35
Rudolf
Новичок
 
Регистрация: 29.11.2014
Сообщений: 6
Сказал(а) спасибо: 2
Поблагодарили 4 раз(а) в 1 сообщении
Вес репутации: 0
Rudolf пока не определено
По умолчанию

Нашел проблему.
Значения размеров записывались в переменные как строка.
Вот такой все заработало:
PHP код:
var csvName system.askFileName('csv');
var 
content system.readTextFile(csvName);
var 
panels content.split('\r\n');
var 
curPos NewVector(0,0,0);
for (var 
0panels.lengthi++){
    var 
panel panels[i].split(';');
    var 
art panel[0];
    var 
length Number(panel[1]); // из строки в число
    
var width Number(panel[2]); // из строки в число
    
var count panel[3];
    for (var 
0countk++){
        var 
AddVertPanel(00widthlength0);
        
p.Name art// у меня артикул - имя
        
p.Position curPos;
        
curPos.+= 50;
    }

Rudolf вне форума   Ответить с цитированием Вверх
4 пользователя(ей) сказали cпасибо:
Letos (19.04.2018), Ovsyanicov (19.04.2018), Uncle (19.04.2018), vevolas (28.01.2022)
Старый 19.04.2018, 21:24   #36
bbb i ko
VIP
 
Регистрация: 04.07.2012
Сообщений: 1,945
Сказал(а) спасибо: 3,973
Поблагодарили 3,529 раз(а) в 1,156 сообщениях
Вес репутации: 1043
bbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспорима
По умолчанию

Подскажите пож.(не нашел в мануале): как назначить ориентацию текстуры для создаваемой панели HPanel=AddHorizPanel(...) ?
и еще такой вопрос: кромку на панель ставлю так:
for(var side_butt=0; side_butt < 4; side_butt++){
Butt_Material = arr[row][4+side_butt*3];
if (Butt_Material != '')
{
Butt = HPanel.Butts.Add();
Butt.Material = arr[row][4+side_butt*3];
Butt.Material.Allowance = 0.5;
Butt.Material.ClipPanel = true;
Butt.ElemIndex = side_butt;
Butt.Sign = arr[row][6+side_butt*3];
Butt.Thickness = Number(arr[row][5+side_butt*3],10);
}
}
}
в итоге толщина кромки в БМ не попадает, хотя в исходнике(строка CSV) толщина присутствует
соответственно, что делаю неправильно?
Миниатюры
Безымянный.jpg  
__________________
Автоматизация автоматизаций на АСУ, ТП и тд и тп..
Комплексное решение
bbb i ko вне форума   Ответить с цитированием Вверх
Старый 20.04.2018, 10:00   #37
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,029 раз(а) в 366 сообщениях
Вес репутации: 343
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от bbb i ko Посмотреть сообщение
Подскажите пож.(не нашел в мануале): как назначить ориентацию текстуры для создаваемой панели HPanel=AddHorizPanel(...) ?
HPanel.TextureOrientation = TextureOrientation.Horizontal; //Например

Цитата:
Сообщение от bbb i ko Посмотреть сообщение
и еще такой вопрос: кромку на панель ставлю так:
for(var side_butt=0; side_butt < 4; side_butt++){
Butt_Material = arr[row][4+side_butt*3];
if (Butt_Material != '')
{
Butt = HPanel.Butts.Add();
Butt.Material = arr[row][4+side_butt*3];
Butt.Material.Allowance = 0.5;
Butt.Material.ClipPanel = true;
Butt.ElemIndex = side_butt;
Butt.Sign = arr[row][6+side_butt*3];
Butt.Thickness = Number(arr[row][5+side_butt*3],10);
}
}
}
в итоге толщина кромки в БМ не попадает, хотя в исходнике(строка CSV) толщина присутствует
соответственно, что делаю неправильно?
Сделал тестовый пример у себя на основе вашего кода - у меня все нормально (БМ10). Все, написанное ниже относится к 10 версии, поэтому где-то я могу быть не прав:
1. Вот эти две строки мне не понятны:
Код:
Butt.Material.Allowance = 0.5;
Butt.Material.ClipPanel = true;
в БМ10 свойство Material - строковое. А свойства Allowance и ClipPanel доступны у объекта кромки. Думаю, эти строки должны быть такими:
Код:
Butt.Allowance = 0.5;
Buttl.ClipPanel = true;
2. Самый простой способ проверить, проверить, почему толщина кромки не попадает, это алертом вывести толщину, например:
Код:
alert(Number(arr[row][5+side_butt*3],10))
Butt.Thickness = Number(arr[row][5+side_butt*3],10);
алерт выведет, какое значение вы пытаетесь получить.
Кстати, с дробными числами есть еще одна неприятная вещь: если в строке разделитель дроби - запятая, а не точка, то такое преобразование вернет Nan. Возможно, в этом проблема.


P.S. И, напоследок, пара советов:
  1. У вас идет два присвоения одного и того же сложного значения:
    Код:
    //1
    Butt_Material = arr[row][4+side_butt*3];
    //промежуточный код
    //2
    Butt.Material = arr[row][4+side_butt*3];
    Предлагаю во второй раз брать значение из уже заданной переменной:
    Код:
    //1
    Butt_Material = arr[row][4+side_butt*3];
    //промежуточный код
    //2
    Butt.Material = Butt_Material;
    Так уже идет доступ сразу к Butt_material, а не к arr->arr[row]->arr[row][4+side_butt*3]. Но, что более важно, если что-то изменится (например, нужно будет брать значение не из [4+side_butt*3], а из [2+side_butt*2]), то править код надо будет всего в одном месте, что уменьшает вероятность ошибки при запуске измененного/исправленного кода
  2. У вас очень часто повторяется arr[row]. Можно и его записать в отдельную переменную. Особо видимых плюсов не принесет, поэтому это из разряда "придраться".
  3. И еще из разряда "придраться" по поводу правил хорошего тона. В JS принято называть переменные с маленькой буквы (а названия функций и классов - с большой). Из видимых плюсов - меньше Shift лишний раз нажимать.
Letos вне форума   Ответить с цитированием Вверх
4 пользователя(ей) сказали cпасибо:
bbb i ko (20.04.2018), Briz (26.04.2018), maxgmv (20.04.2018), Ovsyanicov (21.04.2018)
Старый 20.04.2018, 17:44   #38
bbb i ko
VIP
 
Регистрация: 04.07.2012
Сообщений: 1,945
Сказал(а) спасибо: 3,973
Поблагодарили 3,529 раз(а) в 1,156 сообщениях
Вес репутации: 1043
bbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспорима
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Кстати, с дробными числами есть еще одна неприятная вещь: если в строке разделитель дроби - запятая, а не точка, то такое преобразование вернет Nan. Возможно, в этом проблема.
да, спасибо - дело было именно в запятой. Исправил на точку - и все ок.
Сбило с толку, что в материале толщина проставляется, а в кромке - нет. А там как раз целочисленное значение просто.
__________________
Автоматизация автоматизаций на АСУ, ТП и тд и тп..
Комплексное решение
bbb i ko вне форума   Ответить с цитированием Вверх
Старый 25.04.2018, 15:11   #39
Максим Геннадьевич
Местный
 
Регистрация: 11.04.2018
Адрес: г.Маркс
Сообщений: 161
Сказал(а) спасибо: 57
Поблагодарили 241 раз(а) в 45 сообщениях
Вес репутации: 137
Максим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личность
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
И еще хотелось бы узнать, какую ошибку выдает.
Ошибка была банальная. Пример брался из справки Subtraction(contour) и в примере допущена ошибка c.Substraction(Hole).
Максим Геннадьевич вне форума   Ответить с цитированием Вверх
Старый 25.05.2018, 08:22   #40
wizardpnz
Местный
 
Регистрация: 02.07.2011
Сообщений: 190
Сказал(а) спасибо: 93
Поблагодарили 105 раз(а) в 44 сообщениях
Вес репутации: 195
wizardpnz скоро придёт к известностиwizardpnz скоро придёт к известности
По умолчанию

это можно сделать в смете без скриптов назначив каждому материалу сопутствующий материал вес

добавил сопутствующий материал МАССА 1кг на 1кв м зеркала
Миниатюры
масса.png  
wizardpnz вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
anb (25.05.2018)
Ответ

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

Опции темы
Опции просмотра

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обсуждение готовых скриптов Letos Базис-мебельщик. Скрипты 492 04.03.2024 11:42
БАЗИС 8 - общее обсуждение DTioutiou Базис-мебельщик 8 2092 15.08.2023 01:44
БАЗИС 8 - Фурнитура, обсуждение nayrogi Базис-мебельщик 8 1390 16.04.2022 22:47
MasterBox 7. Работа с ящиками в системе БАЗИС Daddy Базис-мебельщик 7 605 13.11.2019 11:13
Общие вопросы по системе БАЗИС 7.0 COBA Базис-мебельщик 7 904 24.08.2016 19:16


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


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

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