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

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

Меню

Маркет


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

Сказал(а) спасибо: 7,296
Поблагодарили 16,954 раз(а) в 3,222 сообщениях
Версия для печати Отправить по электронной почте
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..
Просмотров: 613368
Ответить с цитированием Вверх
14 пользователя(ей) сказали cпасибо:
Старый 24.01.2020, 15:09   #131
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от alexrain Посмотреть сообщение
Добрый день.
Подскажите, пожалуйста.
Почему выдает ошибку на 181 строчке?!?

Вот код:

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

SetCamera(p3dFront);
ViewAll();

LevBok = GetPanel("Укажите левую боковину");
LevBok.Selected = true;
PravBok = GetPanel("Укажите правую боковину");
PravBok.Selected = true;
Top = GetEdge('Укажите верхнюю границу фасада ящика (грязный размер)', AxisX).GFirst.y;
Action.ShowEdges = true;
Bottom = GetEdge('Укажите нижнюю границу фасада ящика (грязный размер)', AxisX).GFirst.y;
SetCamera(p3dLeft);
ViewAll();
InsideEdge = GetEdge('Укажите границу внутреннего пространства', AxisY).GFirst.z;
SetCamera(p3dIsometric);
ViewAll();

XLeft = LevBok.GabMax.x;
XRigh = PravBok.GabMin.x;

if (XLeft > XRigh) {
AAA = LevBok;
LevBok = PravBok;
PravBok = AAA;
}

if (Bottom > Top) {
AAA = Bottom;
Bottom = Top;
Top = AAA;
}

var KH = Top - Bottom; // Расстояние между верхней и нижней границами
var LT = LevBok.GabMax.z - InsideEdge; // Внутренняя глубина корпуса
var KB = LevBok.GabMin.x + PravBok.GabMax.x; // Внешняя ширина корпуса
var LW = PravBok.GabMin.x - LevBok.GabMax.x; // Внутренняя ширина корпуса

MakeProperties();

Action.Continue();

function MakeProperties() {

Prop = Action.Properties;

//ImageTipYash = Prop.NewImage('Тип устанавливаемого ящика', 'Логотип Metabox plus.jpg');
//ImageTipYash.MaxHeight = 23;

KolYash = Prop.NewCombo('Количество ящиков', 'n\n1 ящик\n2 ящика\n3 ящика\n4 ящика');
Seperator = KolYash.NewSeparator();

//ImageKorDvaYash = KolYash.NewImage('', 'Стол с 2-мя ящиками.jpg');
//ImageKorTriYash = KolYash.NewImage('', 'Стол с 3-мя ящиками.jpg');
//ImageKorFourYash = KolYash.NewImage('', 'Стол с 4-мя ящиками.jpg');
//Seperator = KolYash.NewSeparator();

// параметры для установки 1-го ящика
ParYashH = KolYash.NewGroup('Конструктив ящика');
H = ParYashH.NewNumber('Высота ящика (гр. размер)', KH);
H.Visible = false;
VrzRuchkaH = ParYashH.NewCombo('Наличие торцевой ВРЕЗНОЙ ручки', 'Нет ручки\nВрезная ручка №30\nВрезная ручка №389\nВрезная ручка №404/405/406');
NaklRuchkaH = ParYashH.NewBool('Наличие торцевой НАКЛАДНОЙ ручки', false);
NL = ParYashH.NewCombo('Глубина ящика', 'Стандарт (NL=500)\nNL=450\nNL=400\nNL=350\nNL=270');
NL1 = ParYashH.NewCombo('Глубина ящика', 'Стандарт (NL=450)\nNL=400\nNL=350\nNL=270');
NL2 = ParYashH.NewCombo('Глубина ящика', 'Стандарт (NL=400)\nNL=350\nNL=270');
NL3 = ParYashH.NewCombo('Глубина ящика', 'Стандарт (NL=350)\nNL=270');
NL4 = ParYashH.NewCombo('Глубина ящика', 'Стандарт (NL=270)');
Seperator = ParYashH.NewSeparator();

// параметры для установки 2-х и более ящиков
ParYashH2 = KolYash.NewGroup('Общие параметры');
VrzRuchkaH2 = ParYashH2.NewCombo('Наличие торцевых ВРЕЗНЫХ ручек (для всех ящиков)', 'Нет ручки\nВрезная ручка №30\nВрезная ручка №389\nВрезная ручка №404/405/406');
NaklRuchkaH2 = ParYashH2.NewBool('Наличие торцевых НАКЛАДНЫХ ручек (для всех ящиков)', false);
Seperator = ParYashH2.NewSeparator();

// параметры верхнего ящика (установка 2-х ящиков)
ParYashH2V = KolYash.NewGroup('Конструктив верхнего ящика - X2');
H2V = ParYashH2V.NewNumber('Высота ящика (гр. размер)', KH / 2);
VrzRuchkaH2V = ParYashH2V.NewCombo('Наличие торцевой ВРЕЗНОЙ ручки', 'Нет ручки\nВрезная ручка №30\nВрезная ручка №389\nВрезная ручка №404/405/406');
NaklRuchkaH2V = ParYashH2V.NewBool('Наличие торцевой НАКЛАДНОЙ ручки', false);
NLH2V = ParYashH2V.NewCombo('Глубина ящика', 'Стандарт (NL=500)\nNL=450\nNL=400\nNL=350\nNL=270');
NL1H2V = ParYashH2V.NewCombo('Глубина ящика', 'Стандарт (NL=450)\nNL=400\nNL=350\nNL=270');
NL2H2V = ParYashH2V.NewCombo('Глубина ящика', 'Стандарт (NL=400)\nNL=350\nNL=270');
NL3H2V = ParYashH2V.NewCombo('Глубина ящика', 'Стандарт (NL=350)\nNL=270');
NL4H2V = ParYashH2V.NewCombo('Глубина ящика', 'Стандарт (NL=270)');
// параметры нижнего ящика (установка 2-х ящиков)
ParYashH2N = KolYash.NewGroup('Конструктив нижнего ящика - X1');
H2N = ParYashH2N.NewNumber('Высота ящика (гр. размер)', KH / 2);
VrzRuchkaH2N = ParYashH2N.NewCombo('Наличие торцевой ВРЕЗНОЙ ручки', 'Нет ручки\nВрезная ручка №30\nВрезная ручка №389\nВрезная ручка №404/405/406');
NaklRuchkaH2N = ParYashH2N.NewBool('Наличие торцевой НАКЛАДНОЙ ручки', false);
NLH2N = ParYashH2N.NewCombo('Глубина ящика', 'Стандарт (NL=500)\nNL=450\nNL=400\nNL=350\nNL=270');
NL1H2N = ParYashH2N.NewCombo('Глубина ящика', 'Стандарт (NL=450)\nNL=400\nNL=350\nNL=270');
NL2H2N = ParYashH2N.NewCombo('Глубина ящика', 'Стандарт (NL=400)\nNL=350\nNL=270');
NL3H2N = ParYashH2N.NewCombo('Глубина ящика', 'Стандарт (NL=350)\nNL=270');
NL4H2N = ParYashH2N.NewCombo('Глубина ящика', 'Стандарт (NL=270)');
Seperator = ParYashH2N.NewSeparator();

// параметры для установки 3-х ящиков
ParYashH3 = KolYash.NewGroup('Общие параметры');
VrzRuchkaH3 = ParYashH3.NewCombo('Наличие торцевых ВРЕЗНЫХ ручек (для всех ящиков)', 'Нет ручки\nВрезная ручка №30\nВрезная ручка №389\nВрезная ручка №404/405/406');
NaklRuchkaH3 = ParYashH3.NewBool('Наличие торцевых НАКЛАДНЫХ ручек (для всех ящиков)', false);
Seperator = ParYashH3.NewSeparator();

// параметры верхнего ящика (установка 3-х ящиков)
ParYashH3V = KolYash.NewGroup('Конструктив верхнего ящика - X3');
H3V = ParYashH3V.NewNumber('Высота ящика (гр. размер)', (KH / 2) / 2);
VrzRuchkaH3V = ParYashH3V.NewCombo('Наличие торцевой ВРЕЗНОЙ ручки', 'Нет ручки\nВрезная ручка №30\nВрезная ручка №389\nВрезная ручка №404/405/406');
NaklRuchkaH3V = ParYashH3V.NewBool('Наличие торцевой НАКЛАДНОЙ ручки', false);
NLH3V = ParYashH3V.NewCombo('Глубина ящика', 'Стандарт (NL=500)\nNL=450\nNL=400\nNL=350\nNL=270');
NL1H3V = ParYashH3V.NewCombo('Глубина ящика', 'Стандарт (NL=450)\nNL=400\nNL=350\nNL=270');
NL2H3V = ParYashH3V.NewCombo('Глубина ящика', 'Стандарт (NL=400)\nNL=350\nNL=270');
NL3H3V = ParYashH3V.NewCombo('Глубина ящика', 'Стандарт (NL=350)\nNL=270');
NL4H3V = ParYashH3V.NewCombo('Глубина ящика', 'Стандарт (NL=270)');
// параметры среднего ящика (установка 3-х ящиков)
ParYashH3S = KolYash.NewGroup('Конструктив среднего ящика - X2');
H3S = ParYashH3S.NewNumber('Высота ящика (гр. размер)', (KH / 2) / 2);
VrzRuchkaH3S = ParYashH3S.NewCombo('Наличие торцевой ВРЕЗНОЙ ручки', 'Нет ручки\nВрезная ручка №30\nВрезная ручка №389\nВрезная ручка №404/405/406');
NaklRuchkaH3S = ParYashH3S.NewBool('Наличие торцевой НАКЛАДНОЙ ручки', false);
NLH3S = ParYashH3S.NewCombo('Глубина ящика', 'Стандарт (NL=500)\nNL=450\nNL=400\nNL=350\nNL=270');
NL1H3S = ParYashH3S.NewCombo('Глубина ящика', 'Стандарт (NL=450)\nNL=400\nNL=350\nNL=270');
NL2H3S = ParYashH3S.NewCombo('Глубина ящика', 'Стандарт (NL=400)\nNL=350\nNL=270');
NL3H3S = ParYashH3S.NewCombo('Глубина ящика', 'Стандарт (NL=350)\nNL=270');
NL4H3S = ParYashH3S.NewCombo('Глубина ящика', 'Стандарт (NL=270)');
// параметры нижнего ящика (установка 3-х ящиков)
ParYashH3N = KolYash.NewGroup('Конструктив нижнего ящика - X1');
H3N = ParYashH3N.NewNumber('Высота ящика (гр. размер)', KH / 2);
VrzRuchkaH3N = ParYashH3N.NewCombo('Наличие торцевой ВРЕЗНОЙ ручки', 'Нет ручки\nВрезная ручка №30\nВрезная ручка №389\nВрезная ручка №404/405/406');
NaklRuchkaH3N = ParYashH3N.NewBool('Наличие торцевой НАКЛАДНОЙ ручки', false);
NLH3N = ParYashH3N.NewCombo('Глубина ящика', 'Стандарт (NL=500)\nNL=450\nNL=400\nNL=350\nNL=270');
NL1H3N = ParYashH3N.NewCombo('Глубина ящика', 'Стандарт (NL=450)\nNL=400\nNL=350\nNL=270');
NL2H3N = ParYashH3N.NewCombo('Глубина ящика', 'Стандарт (NL=400)\nNL=350\nNL=270');
NL3H3N = ParYashH3N.NewCombo('Глубина ящика', 'Стандарт (NL=350)\nNL=270');
NL4H3N = ParYashH3N.NewCombo('Глубина ящика', 'Стандарт (NL=270)');
Seperator = ParYashH3N.NewSeparator();

// параметры для установки 4-х ящиков
ParYashH4 = KolYash.NewGroup('Общие параметры');
VrzRuchkaH4 = ParYashH4.NewCombo('Наличие торцевых ВРЕЗНЫХ ручек (для всех ящиков)', 'Нет ручки\nВрезная ручка №30\nВрезная ручка №389\nВрезная ручка №404/405/406');
NaklRuchkaH4 = ParYashH4.NewBool('Наличие торцевых НАКЛАДНЫХ ручек (для всех ящиков)', false);
Seperator = ParYashH4.NewSeparator();

// параметры 4-го ящика (установка 4-х ящиков)
ParYashH44 = KolYash.NewGroup('Конструктив 4-го ящика ящика - X4');
H44 = ParYashH44.NewNumber('Высота ящика (гр. размер)', KH / 4);
VrzRuchkaH44 = ParYashH44.NewCombo('Наличие торцевой ВРЕЗНОЙ ручки', 'Нет ручки\nВрезная ручка №30\nВрезная ручка №389\nВрезная ручка №404/405/406');
NaklRuchkaH44 = ParYashH44.NewBool('Наличие торцевой НАКЛАДНОЙ ручки', false);
NLH44 = ParYashH44.NewCombo('Глубина ящика', 'Стандарт (NL=500)\nNL=450\nNL=400\nNL=350\nNL=270');
NL1H44 = ParYashH44.NewCombo('Глубина ящика', 'Стандарт (NL=450)\nNL=400\nNL=350\nNL=270');
NL2H44 = ParYashH44.NewCombo('Глубина ящика', 'Стандарт (NL=400)\nNL=350\nNL=270');
NL3H44 = ParYashH44.NewCombo('Глубина ящика', 'Стандарт (NL=350)\nNL=270');
NL4H44 = ParYashH44.NewCombo('Глубина ящика', 'Стандарт (NL=270)');
// параметры 3-го ящика (установка 4-х ящиков)
ParYashH43 = KolYash.NewGroup('Конструктив 3-го ящика ящика - X3');
H43 = ParYashH43.NewNumber('Высота ящика (гр. размер)', KH / 4);
VrzRuchkaH43 = ParYashH43.NewCombo('Наличие торцевой ВРЕЗНОЙ ручки', 'Нет ручки\nВрезная ручка №30\nВрезная ручка №389\nВрезная ручка №404/405/406');
NaklRuchkaH43 = ParYashH43.NewBool('Наличие торцевой НАКЛАДНОЙ ручки', false);
NLH43 = ParYashH43.NewCombo('Глубина ящика', 'Стандарт (NL=500)\nNL=450\nNL=400\nNL=350\nNL=270');
NL1H43 = ParYashH43.NewCombo('Глубина ящика', 'Стандарт (NL=450)\nNL=400\nNL=350\nNL=270');
NL2H43 = ParYashH43.NewCombo('Глубина ящика', 'Стандарт (NL=400)\nNL=350\nNL=270');
NL3H43 = ParYashH43.NewCombo('Глубина ящика', 'Стандарт (NL=350)\nNL=270');
NL4H43 = ParYashH43.NewCombo('Глубина ящика', 'Стандарт (NL=270)');
// параметры 2-го ящика (установка 4-х ящиков)
ParYashH42 = KolYash.NewGroup('Конструктив 2-го ящика ящика - X2');
H42 = ParYashH42.NewNumber('Высота ящика (гр. размер)', KH / 4);
VrzRuchkaH42 = ParYashH42.NewCombo('Наличие торцевой ВРЕЗНОЙ ручки', 'Нет ручки\nВрезная ручка №30\nВрезная ручка №389\nВрезная ручка №404/405/406');
NaklRuchkaH42 = ParYashH42.NewBool('Наличие торцевой НАКЛАДНОЙ ручки', false);
NLH42 = ParYashH42.NewCombo('Глубина ящика', 'Стандарт (NL=500)\nNL=450\nNL=400\nNL=350\nNL=270');
NL1H42 = ParYashH42.NewCombo('Глубина ящика', 'Стандарт (NL=450)\nNL=400\nNL=350\nNL=270');
NL2H42 = ParYashH42.NewCombo('Глубина ящика', 'Стандарт (NL=400)\nNL=350\nNL=270');
NL3H42 = ParYashH42.NewCombo('Глубина ящика', 'Стандарт (NL=350)\nNL=270');
NL4H42 = ParYashH42.NewCombo('Глубина ящика', 'Стандарт (NL=270)');
// параметры нижнего ящика (установка 4-х ящиков)
ParYashH41 = KolYash.NewGroup('Конструктив нижнего ящика - X1');
H41 = ParYashH41.NewNumber('Высота ящика (гр. размер)', KH / 4);
VrzRuchkaH41 = ParYashH41.NewCombo('Наличие торцевой ВРЕЗНОЙ ручки', 'Нет ручки\nВрезная ручка №30\nВрезная ручка №389\nВрезная ручка №404/405/406');
NaklRuchkaH41 = ParYashH41.NewBool('Наличие торцевой НАКЛАДНОЙ ручки', false);
NLH41 = ParYashH41.NewCombo('Глубина ящика', 'Стандарт (NL=500)\nNL=450\nNL=400\nNL=350\nNL=270');
NL1H41 = ParYashH41.NewCombo('Глубина ящика', 'Стандарт (NL=450)\nNL=400\nNL=350\nNL=270');
NL2H41 = ParYashH41.NewCombo('Глубина ящика', 'Стандарт (NL=400)\nNL=350\nNL=270');
NL3H41 = ParYashH41.NewCombo('Глубина ящика', 'Стандарт (NL=350)\nNL=270');
NL4H41 = ParYashH41.NewCombo('Глубина ящика', 'Стандарт (NL=270)');
Seperator = ParYashH41.NewSeparator();

}

OkBtn = Prop.NewButton('Построить');

Action.OnStart = function() {
//обработка событий в любых полях ввода свойства
Prop.OnChange = Primenit;
Primenit();
}

OkBtn.OnClick = function() {
UnSelectAll();
SetCamera(p3dIsometric);
ViewAll();
Action.Finish();
}

Action.Continue();

function Primenit() {

//______________________________________________________________________________

// Выводим подсказки для дальнейшей установки
if (KolYash.ItemIndex == 0) {
Action.ErrorHint = 'Выберите нужное количество ящиков для построения';
} else if (KolYash.ItemIndex == 1) {
Action.ErrorHint = 'Определитесь с параметрами ящика и нажмите "Построить"';
} else {
Action.ErrorHint = 'Укажите грязные размеры фасадов, определитесь с параметрами ящиков и нажмите "Построить"';
}

//______________________________________________________________________________

// Определяем параметры в окне свойств
switch (KolYash.ItemIndex) {
case 0: // Количество ящиков - n

ParYashH.Visible = false;
ParYashH2.Visible = ParYashH3.Visible = ParYashH4.Visible = false;
ParYashH2N.Visible = ParYashH2V.Visible = false;
ParYashH3N.Visible = ParYashH3S.Visible = ParYashH3V.Visible = false;
ParYashH41.Visible = ParYashH42.Visible = ParYashH43.Visible = ParYashH44.Visible = false;
//ImageKorDvaYash.Visible = ImageKorTriYash.Visible = ImageKorFourYash.Visible = false;

break;

case 1: // Количество ящиков - 1 ящик

// Определяем видимость свойств
ParYashH.Visible = true;
ParYashH2.Visible = ParYashH3.Visible = ParYashH4.Visible = false;
ParYashH2N.Visible = ParYashH2V.Visible = false;
ParYashH3N.Visible = ParYashH3S.Visible = ParYashH3V.Visible = false;
ParYashH41.Visible = ParYashH42.Visible = ParYashH43.Visible = ParYashH44.Visible = false;
//ImageKorDvaYash.Visible = ImageKorTriYash.Visible = ImageKorFourYash.Visible = false;

break;

case 2: // Количество ящиков - 2 ящика

// Определяем видимость общих свойств
ParYashH.Visible = false;
ParYashH2.Visible = true;
ParYashH3.Visible = ParYashH4.Visible = false;
ParYashH2N.Visible = ParYashH2V.Visible = true;
ParYashH3N.Visible = ParYashH3S.Visible = ParYashH3V.Visible = false;
ParYashH41.Visible = ParYashH42.Visible = ParYashH43.Visible = ParYashH44.Visible = false;
//ImageKorDvaYash.Visible = true;
//ImageKorTriYash.Visible = ImageKorFourYash.Visible = false;

break;

case 3: // Количество ящиков - 3 ящика

// Определяем видимость свойств
ParYashH.Visible = false;
ParYashH3.Visible = true;
ParYashH2.Visible = ParYashH4.Visible = false;
ParYashH2N.Visible = ParYashH2V.Visible = false;
ParYashH3N.Visible = ParYashH3S.Visible = ParYashH3V.Visible = true;
ParYashH41.Visible = ParYashH42.Visible = ParYashH43.Visible = ParYashH44.Visible = false;
//ImageKorTriYash.Visible = true;
//ImageKorDvaYash.Visible = ImageKorFourYash.Visible = false;

break;

case 4: // Количество ящиков - 4 ящика

// Определяем видимость свойств
ParYashH.Visible = false;
ParYashH4.Visible = true;
ParYashH2.Visible = ParYashH3.Visible = false;
ParYashH2N.Visible = ParYashH2V.Visible = false;
ParYashH3N.Visible = ParYashH3S.Visible = ParYashH3V.Visible = false;
ParYashH41.Visible = ParYashH42.Visible = ParYashH43.Visible = ParYashH44.Visible = true;
//ImageKorFourYash.Visible = true;
//ImageKorDvaYash.Visible = ImageKorTriYash.Visible = false;


break;

}

}
[свернуть]
У меня ошибка возникла на этой строчке:
PHP код:
Action.ErrorHint 'Выберите нужное количество ящиков для построения'
хотя редактор указал на строку 181. Самый простой способ решить эту проблему - добавить функцию
PHP код:
function SetErrorHint(hint){
    try{
        
Action.ErrorHint hint;
    }
    catch(
e){
        
//ignore error
    
}

и заменить все присвоения ErrorHint на эту функцию. На примере ошибочной строки должно будет быть так:
PHP код:
SetErrorHint('Выберите нужное количество ящиков для построения'); 
Ошибка не перестанет возникать, но будет перехватываться новой функцией и игнорироваться, что позволит продолжить выполнение скрипта.

Цитата:
Сообщение от alexrain Посмотреть сообщение
Добрый день.
Подскажите, пожалуйста, следующее:

Как с помощью скрипта установить фрагмент (ссылка на фрагмент - ниже)?!?

Ссылка:
https://yadi.sk/d/fruuuUTkiFYOBA
Фрагменты открываются через функцию OpenFurniture. Эта функция возврщает тот же объект, что и Value у свойства фурнитуры. Конкретно ваш фрагмент (секцию) можно установить через функцию MountBox.
Вот пример, который установит опоры с размером (800, 100, 600) (все размеры корректируются относительно настроек эластичности автоматически) в ноль по ГСК:
PHP код:
// Путь к файлу относительно папки со скриптом 
// (в данном случае файл лежит в той же папке, что и скрипт)
var furn OpenFurniture('Опоры H=100,  N-шт.fr3d');
// Установка секции
var obj furn.MountBox(
    {}, 
// Точка установки. {} интерперетируется как точка с координатами (0,0,0)
    
{x800y150z600}, // Размер секции
    
Axis_Y// Направление оси Z фрагмента 
    // (в данном случае ось Z будет направлена) туда же, куда и ось -Y

    
AxisZ); // Направление оси Y фрагмента 
    // (в данном случае ось Y будет направлена) туда же, куда и ось +Z 
Letos вне форума   Ответить с цитированием Вверх
4 пользователя(ей) сказали cпасибо:
AndrianoS (18.01.2021), maxgmv (07.02.2020), Ovsyanicov (24.01.2020), PravCom (30.07.2021)
Старый 31.01.2020, 10:47   #132
rombler
Пользователь
 
Регистрация: 13.01.2020
Сообщений: 69
Сказал(а) спасибо: 48
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
rombler пока не определено
По умолчанию

Подскажите пожалуйста. Можно ли скриптами прочитать дбф файл или список в текстовом файле?
rombler вне форума   Ответить с цитированием Вверх
Старый 31.01.2020, 14:57   #133
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от rombler Посмотреть сообщение
Подскажите пожалуйста. Можно ли скриптами прочитать дбф файл или список в текстовом файле?
Смотря для каких целей. Текстовый файл без проблем прочитать можно. Вот чтобы "список" получить - файл обрабатывать надо. Вот простой пример, который запрашивает имя файла, считывает его содержимое и создаёт из строки список, используя символ перевода строки в качестве разделителя элементов (то есть, элементы списка будут соответствовать строкам в файле).
PHP код:
var filename system.askFileName('txt');
var 
text system.readTextFile(filename);
var list = 
text.split('\n');
for (var 
0< list.lengthi++){
    
console.log(list[i]);

А уж в зависимости от того, какие данные в файле и какой список, нужно будет выбрать, как создавать список из строк (через split, JSON, регулярные выражения и т.д.).
Letos вне форума   Ответить с цитированием Вверх
3 пользователя(ей) сказали cпасибо:
AndrianoS (23.12.2020), maxgmv (07.02.2020), rombler (31.01.2020)
Старый 31.01.2020, 15:49   #134
rombler
Пользователь
 
Регистрация: 13.01.2020
Сообщений: 69
Сказал(а) спасибо: 48
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
rombler пока не определено
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Смотря для каких целей. Текстовый файл без проблем прочитать можно. Вот чтобы "список" получить - файл обрабатывать надо. Вот простой пример, который запрашивает имя файла, считывает его содержимое и создаёт из строки список, используя символ перевода строки в качестве разделителя элементов (то есть, элементы списка будут соответствовать строкам в файле).
PHP код:
var filename system.askFileName('txt');
var 
text system.readTextFile(filename);
var list = 
text.split('\n');
for (var 
0< list.lengthi++){
    
console.log(list[i]);

А уж в зависимости от того, какие данные в файле и какой список, нужно будет выбрать, как создавать список из строк (через split, JSON, регулярные выражения и т.д.).
А можно потом полученный список добавить как пользовательское свойство панели с вариативным набором значений? Как вручную добавить я знаю, а вот скриптом добавить про это нигде не написано.
rombler вне форума   Ответить с цитированием Вверх
Старый 31.01.2020, 16:31   #135
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от rombler Посмотреть сообщение
А можно потом полученный список добавить как пользовательское свойство панели с вариативным набором значений? Как вручную добавить я знаю, а вот скриптом добавить про это нигде не написано.
Переделал пример под задание польз. св-в панели, заодно и комментариев добавил:
PHP код:
// Имя файла
var filename system.askFileName('txt');
// Текст (содержимое) файла
var text system.readTextFile(filename);
// список строк текста
var list = text.split('\n');
// Панель
var panel Model.Selected;
// Имя свойства
const propName 'prop';
// Значение свойства - первый элемент списка
panel.UserProperty[propName] = list[0];
// Варианты значений свойства - Строка, где варианты разделены символом перевода строки
// В данном примере list.join('\n') эквивалентно text
panel.UserPropertyVariants[propName] = list.join('\n'); 
Letos вне форума   Ответить с цитированием Вверх
4 пользователя(ей) сказали cпасибо:
AndrianoS (23.12.2020), De_mon (01.02.2020), rombler (31.01.2020), volunka (03.02.2020)
Старый 06.02.2020, 16:43   #136
rombler
Пользователь
 
Регистрация: 13.01.2020
Сообщений: 69
Сказал(а) спасибо: 48
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
rombler пока не определено
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Переделал пример под задание польз. св-в панели, заодно и комментариев добавил:
PHP код:
// Имя файла
var filename system.askFileName('txt');
// Текст (содержимое) файла
var text system.readTextFile(filename);
// список строк текста
var list = text.split('\n');
// Панель
var panel Model.Selected;
// Имя свойства
const propName 'prop';
// Значение свойства - первый элемент списка
panel.UserProperty[propName] = list[0];
// Варианты значений свойства - Строка, где варианты разделены символом перевода строки
// В данном примере list.join('\n') эквивалентно text
panel.UserPropertyVariants[propName] = list.join('\n'); 
подскажите пожалуйста ещё раз. Как проверить ассоциативный массив на наличие ключа. Стандартный метод js,
// есть ли в массиве arr ключ key2
arr.has('key2'); // true
в базисе не работает.
rombler вне форума   Ответить с цитированием Вверх
Старый 06.02.2020, 17:36   #137
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от rombler Посмотреть сообщение
Стандартный метод js,
// есть ли в массиве arr ключ key2
arr.has('key2'); // true
в базисе не работает.
Впервые слышу про такой метод has(). Беглый гуглёж показал, что есть метод includes(), но про ваш ничего я не нашёл.

Я всю жизнь использовал такую конструкцию:
PHP код:
arr.indexOf('key2') >= 0
Оказывается, можно ещё и так:
PHP код:
arr.includes('key2'); 
Оба этих выражения вернут true или false в зависимости от наличия элемента в массиве.
Letos вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
Ovsyanicov (07.02.2020), rombler (07.02.2020)
Старый 06.02.2020, 18:00   #138
Ovsyanicov
Местный
 
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 734
Сказал(а) спасибо: 1,529
Поблагодарили 884 раз(а) в 376 сообщениях
Вес репутации: 403
Ovsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Переделал пример под задание польз. св-в панели, заодно и комментариев добавил:
PHP код:
// Имя файла
var filename system.askFileName('txt');
// Текст (содержимое) файла
var text system.readTextFile(filename);
// список строк текста
var list = text.split('\n');
// Панель
var panel Model.Selected;
// Имя свойства
const propName 'prop';
// Значение свойства - первый элемент списка
panel.UserProperty[propName] = list[0];
// Варианты значений свойства - Строка, где варианты разделены символом перевода строки
// В данном примере list.join('\n') эквивалентно text
panel.UserPropertyVariants[propName] = list.join('\n'); 
Цитата:
Сообщение от rombler Посмотреть сообщение
подскажите пожалуйста ещё раз. Как проверить ассоциативный массив на наличие ключа. Стандартный метод js,
// есть ли в массиве arr ключ key2
arr.has('key2'); // true
в базисе не работает.
Если Ваш вопрос касается вышеприведённого кода, то в нём нет именно ассоциативного массива. Там создаётся обычный массив и в нём нет ключей.
Если задача состоит в том, чтобы найти в этом массиве определённую строку, то можно использовать один из двух вариантов:
PHP код:
arr.indexOf('key2'); // вернёт индекс искомого элемента в массиве или -1, если элемент не найден
arr.includes('key2'); //вернёт true или false 
Для информации: в JS роль ассоциативного массива играет Map.
Ovsyanicov вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
Letos (07.02.2020), rombler (07.02.2020)
Старый 07.02.2020, 00:33   #139
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Ovsyanicov Посмотреть сообщение
Для информации: в JS роль ассоциативного массива играет Map.
Я как увидел комментарий
PHP код:
// есть ли в массиве arr ключ key2 
сразу про массив подумал. Map'ом не пользовался, но нашёл пример на MDN (ссылка), немного модифицировал и у меня он выводит в консоль ожидаемый результат:
PHP код:
var myMap = new Map();
myMap.set('bar'"foo");

console.log(myMap.has('bar'));  // возвращает true
console.log(myMap.has('baz'));  // возвращает false 
rombler, неплохо было бы увидеть цельный пример, в котором видно, как и что вы хотите получить, что вы создаёте и ошибку в логе, если она возникает.
Letos вне форума   Ответить с цитированием Вверх
Старый 07.02.2020, 14:26   #140
rombler
Пользователь
 
Регистрация: 13.01.2020
Сообщений: 69
Сказал(а) спасибо: 48
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
rombler пока не определено
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Я как увидел комментарий
PHP код:
// есть ли в массиве arr ключ key2 
сразу про массив подумал. Map'ом не пользовался, но нашёл пример на MDN (ссылка), немного модифицировал и у меня он выводит в консоль ожидаемый результат:
PHP код:
var myMap = new Map();
myMap.set('bar'"foo");

console.log(myMap.has('bar'));  // возвращает true
console.log(myMap.has('baz'));  // возвращает false 
rombler, неплохо было бы увидеть цельный пример, в котором видно, как и что вы хотите получить, что вы создаёте и ошибку в логе, если она возникает.
Да я именно про new Map(); и говорил. Но в базисе вроде ассоциативный массив используется немного по другому. В лубом случае includes помог. Спасибо.
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


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


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

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