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

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

Меню

Маркет


беспроводные выключатели для мебели
Ответ
 
Опции темы Опции просмотра
Старый 13.01.2014, 13:22  
Скрипты. Готовые решения для БМ8-2023
 
Аватар для Igor_482
Igor_482
VIP
Регистрация: 03.09.2008
Сообщений: 174

Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
Версия для печати Отправить по электронной почте
Igor_482 Igor_482 вне форума 13.01.2014, 13:22
Рейтинг: ()

Этот раздел предназначен для размещения готовых скриптов.
Здесь находятся ТОЛЬКО готовые скрипты. Для обсуждения есть отдельная тема: Обсуждение готовых скриптов.

Авторам:
  1. Давать уникальные названия скриптам (не совпадающие с названием уже выложенных скриптов, за исключением обновлений скрипта)
  2. Указывать работоспособность в разных версиях БМ.
  3. Общее описание работы скрипта.
  4. Если презентованный скрипт платный указывать стоимость, условия и контакты для приобретения.

Версии, указанные модератором, как прошедшие проверку:
8 - Демо-версия 8.0.7.9649
- "народная" 8.0.12.12765
9 - Демо-версия 9.0.8.18908
10 - Демо-версия 10.0.0.21602

Последний раз редактировалось AlexBolton; 03.03.2023 в 21:03..
Просмотров: 537197
Ответить с цитированием Вверх
13 пользователя(ей) сказали cпасибо:
Старый 15.11.2020, 22:42   #81
sergio1982
Местный
 
Регистрация: 01.09.2019
Сообщений: 423
Сказал(а) спасибо: 52
Поблагодарили 479 раз(а) в 147 сообщениях
Вес репутации: 194
sergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царстве
По умолчанию Подсчёт кромки и площади


Обновление, описание в 75 посте.
v2.11
+ Общий периметр панелей
+ Итого - общий итог всех типов
+ Тело вращения добавлено как погонаж, для расчёта трубы
+ Добавлен коэффициент веса для мдф. Имя панели должно начинаться с "мдф" в любом регистре
+ fix. Исправлен подсчёт профиля, выяснилось что значение длинны может быть и отрицательным

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

Код:
/*
v2.14
Расчёт площади, веса, объёма и периметра панелей, метража кромки, погонажа и профилей,
а также количества фурнитуры.

http://promebelclub.ru/forum/showthread.php?p=502439#post502439
*/

var AddHidden = 0 // нужно ли добавлять скрытые объекты в результаты
var AddArticul = 0 // нужно ли добавлять артикул к имени материала

var Q_MDF = 1111111.111111 // name.match(/^МДФ/i)
var Q_STEKLO = 400000 // name.match(/стекло/i)
var Q_LDSP = 1333333.333333 // иначе

// -------------------------------------------------

var Res = {Panels: [],Linears: [],Extrusions: [],Edges: [],Fasteners: []
 , Total: {Panels: 0, Linears: 0, Extrusions: 0, Edges: 0, Fasteners: 0}
 , Weight: 0, Volume: 0, PanelsContour: 0};
var Buffer = [];
var Selected = Model.SelectionCount;

for (var i = 0; i < Model.Count; ++i) {
    recurse(Model.Objects[i])
};

for (var key in Buffer) {
    CheckObj(Buffer[key])
};

function CheckObj(obj) {
    if (MyRules(obj))
        return
    var objtype = obj.toString()
    if (obj.AsPanel) {
        MtName = MaterialName(obj.MaterialName)
        Contour = obj.Contour;
        if (obj.MaterialWidth > 0) { // погонный
            Add('Linears', MtName, Math.max(Contour.Height, Contour.Width))
        } else { // панели
            Add('Panels', MtName, (Contour.Height * Contour.Width))
            WeightAndVolumeCalc(Contour.Height * Contour.Width * obj.Thickness, MtName)
            Res.PanelsContour += GetContourLength(Contour)
        }
        Butts = obj.Butts; // кромка
        for (var i = 0; i < Butts.Count; ++i) {
            Add('Edges', MaterialName(Butts[i].Material), GetButtLength(Butts[i], Contour))
        };
    } else if (objtype == '[object TFastener]') { // фурнитура
        Add('Fasteners', MaterialName(obj.Name), 1)
    } else if (objtype == '[object TExtrusionBody]') { // профиль
        Add('Extrusions', MaterialName(obj.MaterialName), Math.abs(obj.Thickness))
    } else if (objtype == '[object T2DRotationBody]') { // погонный
        Add('Linears', MaterialName(obj.MaterialName), Math.max(obj.Contour2D.Height, obj.Contour2D.Width))
    }
}

var string = '';
if (Object.keys(Res.Edges).length) {
    string += '\n              Кромка (метры):\n\n';
    for (var key in Res.Edges) {
        AddString(key, (Res.Edges[key] / 1000).toFixed(2))
    };
}
if (Object.keys(Res.Panels).length) {
    string += '\n              Панели (квадратные метры):\n\n';
    for (var key in Res.Panels) {
        AddString(key, (Res.Panels[key] / 1000000).toFixed(2))
    };
}
if (Object.keys(Res.Linears).length) {
    string += '\n              Погонные материалы (метры):\n\n';
    for (var key in Res.Linears) {
        AddString(key, (Res.Linears[key] / 1000).toFixed(2))
    };
}
if (Object.keys(Res.Extrusions).length) {
    string += '\n              Профили (метры):\n\n';
    for (var key in Res.Extrusions) {
        AddString(key, (Res.Extrusions[key] / 1000).toFixed(2))
    };
}
if (Object.keys(Res.Fasteners).length) {
    string += '\n              Фурнитура (штуки):\n\n';
    for (var key in Res.Fasteners) {
        string += key + '   =   ' + Res.Fasteners[key] + '\n'
    };
}
if (Res.Volume > 0) {
    string += '\n              Вес, объём и периметр (только панели):\n\n'
    + (Res.Weight).toFixed(1) + ' килограмм\n'
    + (Res.Volume / 1000000000).toFixed(3) + ' кубических метров\n'
    + (Res.PanelsContour / 1000).toFixed(2) + ' метров периметра\n'
}
var Totalstring = ''
+ (Res.Total.Edges ? '\nКромка (метры): ' + (Res.Total.Edges / 1000).toFixed(2) : '')
+ (Res.Total.Panels ? '\nПанели (квадратные метры): ' + (Res.Total.Panels / 1000000).toFixed(2) : '')
+ (Res.Total.Linears ? '\nПогонные материалы (метры): ' + (Res.Total.Linears / 1000).toFixed(2) : '')
+ (Res.Total.Extrusions ? '\nПрофили (метры): ' + (Res.Total.Extrusions / 1000).toFixed(2) : '')
+ (Res.Total.Fasteners ? '\nФурнитура (штуки): ' + Res.Total.Fasteners : '')

if (Totalstring !== '')
    string += '\n              Итого:\n' + Totalstring

if (string == '') {
    alert('Объекты не обнаружены!')
} else {
    var captionstring = ''
    + (Selected ? 'ИНФО ТОЛЬКО О ВЫДЕЛЕННЫХ И ПОДСВЕЧЕННЫХ!!!\n' : '')
    + (!AddHidden ? 'СКРЫТЫЕ НЕ УЧИТЫВАЮТСЯ!!!\n' : '')

    if (!confirm(captionstring + string + '\n\n\n              Чтобы вывести в файл нажмите "Нет"'))
        ButtonExport()
}
Action.Finish()

// -------------------------------------------------

function recurse(obj, sel) {
    if (!obj.Visible && !AddHidden)
        return
    if (!obj.List) {
        if (!sel)
            sel = !! ((Selected) && (obj.Selected || obj.Highlighted))
        if (Selected && !sel)
            return
        Buffer.push(obj)
    } else {
        var blocksel = !! ((Selected) && (sel || obj.Selected || obj.Highlighted))
        for (var i = 0; i < obj.Count; i++) {
            recurse(obj[i], blocksel)
        }
    }
}

function Add(name, key, value) {
    if (value <= 0)
        return
    if (!Res[name].hasOwnProperty(key))
        Res[name][key] = 0
    Res[name][key] += value
    Res.Total[name] += value
}

function AddString(key, value) {
    if (value > 0)
        string += key + '   =   ' + value + '\n'
}

function GetButtLength(butt, contour) {
    return contour.Objects[butt.ElemIndex].ObjLength()
}

function GetContourLength(contour) {
    var len = 0
    for (var i = 0; i < contour.Count; ++i) {
        len += contour.Objects[i].ObjLength()
    };
    return len
}

function MaterialName(str) {
    if (AddArticul)
        return str.replace("\r", ". Артикул ")
    return str.replace(/\r.*/, '')
}

function ButtonExport() {
    system.writeTextFile('export.txt', string);
    Path = '"' + Action.Properties.AbsolutePath() + 'export.txt"'
    NewCOMObject('WScript.Shell').run(Path);
}

// -------------------------------------------------

function WeightAndVolumeCalc(vol, name) {
    if (name.match(/^МДФ/i))
        Q = Q_MDF
    else if (name.match(/стекло/i))
        Q = Q_STEKLO
    else
        Q = Q_LDSP
    Res.Weight += vol / Q
    Res.Volume += vol
}

function MyRules(obj) {
    return 0
}

// -------------------------------------------------
[свернуть]

Последний раз редактировалось sergio1982; 16.11.2020 в 17:42.
sergio1982 вне форума   Ответить с цитированием Вверх
5 пользователя(ей) сказали cпасибо:
andronf (15.11.2020), kostiaarh (16.11.2020), P.Slava (15.09.2021), Travolta741 (06.11.2021), Михаил Габуда (03.03.2021)
Старый 25.11.2020, 01:12   #82
sergio1982
Местный
 
Регистрация: 01.09.2019
Сообщений: 423
Сказал(а) спасибо: 52
Поблагодарили 479 раз(а) в 147 сообщениях
Вес репутации: 194
sergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царстве
По умолчанию Текст на панелях


Добавил в этот код:
http://promebelclub.ru/forum/showthr...942#post483942

+ кириллица, латиница, некоторые знаки.
+ вырезать не только в панели. но и из неё.
+ перенос строки, пробел.
+ высота текста в миллиметрах.
+ текст из имени материала.
+ свой текст.

v1.02 13:43 25.11.2020
+ вертикальный текст с выравниванием

Примечания


Файл скрипта надо сохранить в UTF-8 BOM
Для переноса строки в своём тексте надо указать символ "¶"
Добавленные знаки
%≈√∞^±≤≥≠=×−+¥ƒ?$¤¢¹²³@&§©®™,;!#(){}[]-_“”«»*'"/\*?…:.><

Баг - иногда не сохраняет настройки, отрабатывает, но завершается с ошибкой вида:
1 - ({x:955.5860013001757, y:-226.34372110211595}) is not a function
[свернуть]

Скачать


Архив.


[свернуть]

Последний раз редактировалось Uncle; 09.05.2021 в 21:12.
sergio1982 вне форума   Ответить с цитированием Вверх
11 пользователя(ей) сказали cпасибо:
Старый 27.11.2020, 15:58   #83
АлКузнецов
Местный
 
Аватар для АлКузнецов
 
Регистрация: 15.04.2012
Адрес: Санкт-Петербург
Сообщений: 104
Сказал(а) спасибо: 56
Поблагодарили 276 раз(а) в 63 сообщениях
Вес репутации: 211
АлКузнецов как роза среди колючекАлКузнецов как роза среди колючекАлКузнецов как роза среди колючек
По умолчанию Скрипт выборочной покраски панелей (пластик)

Скрипт красит панели согласно ценовой группы ( номер цифры в артикуле материала от 1 до 11)
Предложен богатый выбор красок и эффектов.
Стабильно работает в 10, в 11й версии выдает ошибку смысла которой я не понимаю. Если кто сумеет понять всем проблема и исправить с меня 3000р на карту.

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



function Ztifr(txt, n) {
// функция возвращает цифры из куска строки
// ch - число
// n - количество знаков слева
var ets = txt.substring(0, n);
//alert(ets);
return parseInt(ets.match(/\d+/));
}

Materials = [];
PanelByMaterial = [];
var PanelChanged = 0;


Model.forEachPanel(
function(Obj) {
var MtName = Ztifr(ExtractMatCode(Obj.MaterialName), 50);
if (MtName >=1)
{}else{MtName = "";}
var Index = Materials.indexOf(MtName);
if (Index < 0) {
Index = Materials.push(MtName) - 1;
var Panels = [];
PanelByMaterial.push(Panels);
}
PanelByMaterial[Index].push(Obj);
});

//-- window Window2
Window2 = { Form : NewForm() };
Props = Window2.Form.Properties;
Window2.Form.Width = 287;
Window2.Form.Height = 150;
Window2.Form.Caption = "Ценовая групппа?";
Window2.Form.OKButton = true;
Window2.Form.CancelButton = true;
//-- window Window2 properties

Window2.Combo1 = Props.NewCombo("ценовая группа","");
Window2.Combo1.SetLayout(5, 42, 206, 22);
Window2.Combo1.ComboItems = Materials;

Window2.Label1 = Props.NewLabel("выверите из списка ценовую группу");
Window2.Label1.SetLayout(5, 10, 210, 22);
Window2.Label1.SetMargins(5, 5, 5, 5);
//-- window Window2 events

//-- window Window2 ends
Window2.Form.ShowModal();
var _k = Ztifr(Window2.Combo1.Value, 3) ;
alert ("выбрана ценовая группа " + _k );
alert( 'выбираем краски' );
var paints = GetKrask(_k).kras;
var effects = GetKrask(_k).effe;

paints = [];
effects = [];
//-- window Window1
Window1 = { Form : NewForm() };
Props = Window1.Form.Properties;
Window1.Form.Width = 457;
Window1.Form.Height = 250;
Window1.Form.Caption = "Краски";
Window1.Form.OKButton = true;
Window1.Form.Resizable = true;
Window1.Form.CancelButton = true;
Window1.Form.MinHeight = 250;

Window1.Combo1 = Props.NewCombo("Отделка","");
Window1.Combo1.SetLayout(18, 14, 350, 22);
Window1.Combo1.Enabled = true;
Window1.Combo1.ComboItems = paints;
Window1.Combo0.AlignWithMargins = false;
Window1.Combo2 = Props.NewCombo("Эффект","");
Window1.Combo2.SetLayout(18, 48, 350, 22);
Window1.Combo2.ComboItems = effects;
Window1.usl = Props.NewBool("указать панели вручную","false");
Window1.usl.SetLayout(18, 70, 205, 22);
Window1.Form.CancelButton = true;
Window1.Form.OKButton = true;
//-- window Window1 properties

//-- window Window1 events


//-- window Window1 ends

Window1.Form.ShowModal();

function GetKrask(_k) {
// функция возвращает списки красски и отделки получив цифру ценовой группы
var kras = [];
var effe = [];

switch (_k){
case 1:
kraska = ["", "эмаль_АВОРИО", "эмаль_АКВА", "эмаль_АКВАМАРИН", "эмаль_АНТРАЦИТ", "эмаль_БАЗАЛЬТ", "эмаль_БЕЖЕВЫЙ", "эмаль_БЕЛЫЙ", "эмаль_БОРДО", "эмаль_ВАНИЛЬ", "эмаль_ВОЛНА", "эмаль_ГАВАНА", "эмаль_ГЛИНЯНЫЙ", "эмаль_ГОЛУБОЙ", "эмаль_ГРАНАТ", "эмаль_ГРИДЖИО", "эмаль_ДИП БЛЕК", "эмаль_ЕЖЕВИКА СО СЛИВКАМИ", "эмаль_ЖЕЛТЫЙ", "эмаль_ЗЕЛЕНЫЙ", "эмаль_КАКАО", "эмаль_КАППУЧИНО", "эмаль_КВАРЦ", "эмаль_КОРДА", "эмаль_КОФЕ", "эмаль_КРАСНЫЙ", "эмаль_КРЕМ", "эмаль_ЛАЙМ", "эмаль_ЛАЙТ ГРЕЙ", "эмаль_ЛАТТЕ", "эмаль_МАРЕНГО", "эмаль_МАСЛО", "эмаль_МОЛОКО", "эмаль_ОБЛАКО", "эмаль_ОЛИВКОВО-СЕРЫЙ", "эмаль_ОПАЛ", "эмаль_ОРАНЖЕВЫЙ", "эмаль_ПЕПЕЛЬНЫЙ", "эмаль_ПЕТРОЛ", "эмаль_РУБИНОВЫЙ", "эмаль_СВЕТЛО-СЕРЫЙ", "эмаль_СЕРО-БЕЖЕВЫЙ", "эмаль_СЕРЫЙ", "эмаль_СЕРЫЙ ЖЕМЧУГ", "эмаль_СИНИЙ", "эмаль_СИРЕНЬ", "эмаль_СЛИВКИ", "эмаль_СНЕЖНЫЙ", "эмаль_ТЕМНО-СЕРЫЙ", "эмаль_ТЕПЛЫЙ БЕЖ", "эмаль_ТОПЛЕНОЕ МОЛОКО", "эмаль_ТУРЕЦКАЯ ЛАЗУРЬ", "эмаль_ФИСТАШКОВЫЙ", "эмаль_ЧЕРНЫЙ", "эмаль_ШОКОЛАД", "эмаль_СЕРЕБРИСТЫЙ"];
effekt = ["", '&матовая','&глянец','&Велюр','&X-matt'];
break;
case 2:
kraska = ["", "эмаль_АВОРИО", "эмаль_АКВА", "эмаль_АКВАМАРИН", "эмаль_АНТРАЦИТ", "эмаль_БАЗАЛЬТ", "эмаль_БЕЖЕВЫЙ", "эмаль_БЕЛЫЙ", "эмаль_БОРДО", "эмаль_ВАНИЛЬ", "эмаль_ВОЛНА", "эмаль_ГАВАНА", "эмаль_ГЛИНЯНЫЙ", "эмаль_ГОЛУБОЙ", "эмаль_ГРАНАТ", "эмаль_ГРИДЖИО", "эмаль_ДИП БЛЕК", "эмаль_ЕЖЕВИКА СО СЛИВКАМИ", "эмаль_ЖЕЛТЫЙ", "эмаль_ЗЕЛЕНЫЙ", "эмаль_КАКАО", "эмаль_КАППУЧИНО", "эмаль_КВАРЦ", "эмаль_КОРДА", "эмаль_КОФЕ", "эмаль_КРАСНЫЙ", "эмаль_КРЕМ", "эмаль_ЛАЙМ", "эмаль_ЛАЙТ ГРЕЙ", "эмаль_ЛАТТЕ", "эмаль_МАРЕНГО", "эмаль_МАСЛО", "эмаль_МОЛОКО", "эмаль_ОБЛАКО", "эмаль_ОЛИВКОВО-СЕРЫЙ", "эмаль_ОПАЛ", "эмаль_ОРАНЖЕВЫЙ", "эмаль_ПЕПЕЛЬНЫЙ", "эмаль_ПЕТРОЛ", "эмаль_РУБИНОВЫЙ", "эмаль_СВЕТЛО-СЕРЫЙ", "эмаль_СЕРО-БЕЖЕВЫЙ", "эмаль_СЕРЫЙ", "эмаль_СЕРЫЙ ЖЕМЧУГ", "эмаль_СИНИЙ", "эмаль_СИРЕНЬ", "эмаль_СЛИВКИ", "эмаль_СНЕЖНЫЙ", "эмаль_ТЕМНО-СЕРЫЙ", "эмаль_ТЕПЛЫЙ БЕЖ", "эмаль_ТОПЛЕНОЕ МОЛОКО", "эмаль_ТУРЕЦКАЯ ЛАЗУРЬ", "эмаль_ФИСТАШКОВЫЙ", "эмаль_ЧЕРНЫЙ", "эмаль_ШОКОЛАД", "эмаль_СЕРЕБРИСТЫЙ", "эмаль_ЗОЛОТОЙ МЕТ.", "эмаль_ШАМПАНЬ МЕТ."];
effekt = ["", "&матовая", "&глянец", "&Велюр", "&X-matt", "&металлик"];
break;
case 3:
kraska = ["", "шпон_FL ВЕНГЕ", "шпон_FL ВЕНГЕ РАДИАЛЬНЫЙ", "шпон_FL ГРЕЦКИЙ ОРЕХ", "шпон_FL ДЕРЕВО ЭБЕНОВОЕ", "шпон_FL ДУБ КАКАО", "шпон_FL ЗЕБРАНО ", "шпон_FL ЗЕБРАНО ГРАФИТ", "шпон_FL ИНДИЙСКИЙ ЭБЕН", "шпон_FL ОРЕХ ФРАНЦУЗСКИЙ", "шпон_FL ПАЛИСАНДР", "шпон_FL ПАЛИСАНДР ОГНЕННЫЙ", "шпон_FL ПАЛИСАНДР РИО", "шпон_FL ТИК", "шпон_ДУБ НАТУРАЛЬНЫЙ", "шпон_АМЕРИКАНСКИЙ ОРЕХ", "шпон_ЕВРОПЕЙСКИЙ ОРЕХ", "шпон_ОЛИВКОВЫЙ ЯСЕНЬ", "шпон_СЕРЫЙ ГРАБ", "шпон_ТИГРОВЫЙ ЭБЕН", "шпон_АМЕРИКАНСКИЙ ОРЕХ 3D", "шпон_ДУБ ВИНТАЖ 3D", "шпон_ДУБ НАТУРАЛЬНЫЙ 3D", "шпон_ЭВКАЛИПТ 3D", "шпон_ЭВКАЛИПТ МОРЕНЫЙ 3D"];
effekt = ["", "&ЭКО", "&матовый Открытая пора", "& полиэфир матовый", "&глянец"];
break;
case 4:
kraska = ["", "шпон_ДУБ БЕЛОГО ЦВЕТА", "шпон_ДУБ В ЦВЕТЕ ВЕНГЕ", "шпон_ДУБ ГЛИНЯНОГО ЦВЕТА", "шпон_ДУБ МАСЛЯННОГО ЦВЕТА", "шпон_ДУБ ОЛИВКОВОГО ЦВЕТА", "шпон_ДУБ СЕРЫЙ ЖЕМЧУГ", "шпон_ДУБ ЧЕРНЫЙ", "шпон_ДУБ КОНЬЯК 3D", "шпон_ДУБ ЛЕН 3D", "шпон_ДУБ ПЕПЕЛ 3D", "шпон_ДУБ СЕРЫЙ 3D", "шпон_ДУБ ТАБАККО 3D", "шпон_ДУБ УМБРА 3D"];
effekt = ["", "&окрашенный матовый", ''];
break;
case 5:
kraska = ["", "эмаль_СИРЕНЕВЫЙ МЕТ.", "эмаль_МЕТАЛЛ АНТИК", "эмаль_МЕТАЛЛ", "эмаль_БЕЛЫЙ ПЕРЛАМУТР", "эмаль_БОЛОТНЫЙ МЕТ.", "эмаль_ГОЛУБОЙ МЕТ.", "эмаль_ЖЕМЧУГ", "эмаль_ЗЕЛЕНЫЙ МЕТ. ", "эмаль_РОЗОВО-БЕЖЕВЫЙ МЕТ.", "эмаль_РОЗОВЫЙ МЕТ.", "эмаль_САЛАТОВЫЙ МЕТ.", "эмаль_СВЕТЛО-СИРЕНЕВЫЙ МЕТ.", "эмаль_ГРАФФИТИ", "эмаль_ЭЛЬДОРАДО ГОЛД"];
effekt = ["", "&металлик", "&cпецэффект"];
break;
case 6:
kraska = ["", "шпон_FL ВЕНГЕ", "шпон_FL ВЕНГЕ РАДИАЛЬНЫЙ", "шпон_FL ГРЕЦКИЙ ОРЕХ", "шпон_FL ДЕРЕВО ЭБЕНОВОЕ", "шпон_FL ДУБ КАКАО", "шпон_FL ЗЕБРАНО ", "шпон_FL ЗЕБРАНО ГРАФИТ", "шпон_FL ИНДИЙСКИЙ ЭБЕН", "шпон_FL ОРЕХ ФРАНЦУЗСКИЙ", "шпон_FL ПАЛИСАНДР", "шпон_FL ПАЛИСАНДР ОГНЕННЫЙ", "шпон_FL ПАЛИСАНДР РИО", "шпон_FL ТИК", "шпон_ДУБ НАТУРАЛЬНЫЙ", "шпон_АМЕРИКАНСКИЙ ОРЕХ", "шпон_ЕВРОПЕЙСКИЙ ОРЕХ", "шпон_ОЛИВКОВЫЙ ЯСЕНЬ", "шпон_СЕРЫЙ ГРАБ", "шпон_ТИГРОВЫЙ ЭБЕН"];
effekt = ["", "&ЭКО", "&матовый Открытая пора ", "& полиэфир матовый", "& глянец"];
break;
case 7:
kraska = ["", "шпон_МАКАССАР - LIGHT", "шпон_ДУБ БОРДО С МЕДНОЙ ПАТИНОЙ", "шпон_ОЛИВА - LIGHT", "шпон_ЗИРИКОТЕ - LIGHT", "шпон_ДУБ ЧЕРНЫЙ С СЕРЕБРЯНОЙ ПАТИН", "шпон_ВЕНГЕ НАТУРАЛЬНЫЙ", "шпон_ПАЛИСАНДР ВОСТОЧНЫЙ", "шпон_РЕД ГАМ", "шпон_САНТОС ПАЛИСАНДР", "шпон_ТИК НАТУРАЛЬНЫЙ", "шпон_МАКАССАР"];
effekt = ["", "&Натуральный матовый", "&полиэфир матовый", "&полиэфир глянец"];
break;
case 8:
kraska = ["", "шпон_ЗИРИКОТЕ - LIGHT", "шпон_ДУБ АВОРИО С КОРИЧНЕВОЙ ПАТИНОЙ", "шпон_ДУБ БОРДО С МЕДНОЙ ПАТИНОЙ", "шпон_ДУБ ЧЕРНЫЙ С БОРДОВОЙ ПАТИНОЙ", "шпон_ДУБ ЧЕРНЫЙ С ЗОЛОТОЙ ПАТИНОЙ", "шпон_ДУБ ЧЕРНЫЙ С СЕРЕБРЯНОЙ ПАТИНОЙ"];
effekt = ["", "&полиэфир матовый", "&полиэфир глянец"];
break;
case 9:
kraska = ["", "шпон_ВЕНГЕ НАТУРАЛЬНЫЙ", "шпон_ПАЛИСАНДР ВОСТОЧНЫЙ", "шпон_РЕД ГАМ", "шпон_САНТОС ПАЛИСАНДР", "шпон_ТИК НАТУРАЛЬНЫЙ", "шпон_ОЛИВА", "шпон_МАКАССАР"];
effekt = ["", "&ЭКО", "&матовый Открытая пора ", "& полиэфир матовый", "& глянец"];
break;
case 10:
kraska = ["", "нет данных"];
effekt = ["", "нет эффектов"];
break;
case 11:
kraska = ["", "эмаль_БЕТОН АНТРАЦИТ", "эмаль_БЕТОН ДЖАСП", "эмаль_МЕДЬ АНТИК", "эмаль_ЛАТУНЬ АНТИК", "эмаль_СТАЛЬ", "шпон_МАКАССАР", "шпон_ОЛИВА"];
effekt = ["", "&METALL", "&бетон"];
break;
case 12:
kraska = ["", "шпон_ЗИРИКОТЕ"];
effekt = ["", "&полиэфир матовый", "&полиэфир глянец"];
break;
default:
alert( 'Вы не выбрали ценовую группу' );
break;
}
var otdelka = {kras: kraska, effe: effekt };
return otdelka;
};

alert ("список красок " + GetKrask(_k).kras + "список эввектов " + GetKrask(_k).effe );



var Pan;
var ruch = Window1.usl.Value; //значение ручного выбора
var _i = 0; // счетчик окрашенных панелей

if (ruch) //выбрать в ручну окраску панелей
{

BtnStop = NewButtonInput("Закончить");
var knop = true;
var plastMat;
// выполняем выделение в бесконечном цикле
// при нажатии на отмену команды скрипт все равно завершится, т.к.
// он вызывает функцию GetObject()

while (knop) {
BtnStop.OnChange = function() {
//alert('Нажата Кнопка "Закончить"');
return knop = false;
}
if (knop) {
Pan = GetPanel("Укажите панель");

}else {
alert('конец скрипта');
}
// условие Pan.Plastics. проверяет,
// что у выбранной не свойства пластик
if (ZcnGr(Pan, _n)) {
if (Pan.Plastics.Count == 0) {
Pan.AddPlastic(plastMat, true);
plastMat = Pan.Plastics.Plastics[0];
plastMat.Material = Window1.Combo1.Value + Window1.Combo2.Value;
plastMat.Thickness = 0.1;
++_i;
Pan.Color = 100;
Pan.Selected = true;
}
else {
alert('Панель уже покрашена');
}
} else {
alert('Панель другой ценовой группы');
}

}

}
else
{

Model.forEachPanel(function(Pan) {
if (ZcnGr(Pan, _n))
if (Pan.Plastics.Count == 0) {
Pan.AddPlastic(plastMat, true);
plastMat = Pan.Plastics.Plastics[0];
plastMat.Material = Window1.Combo1.Value + Window1.Combo2.Value;
plastMat.Thickness = 0.1;
Pan.Color = 200;
Pan.Selected = true;
++_i;
}


});
alert("окрашено " + _i +" панелей " + _n +" цн.гр. ");
}

[свернуть]
__________________
С уважением Кузнецов Александр
АлКузнецов вне форума   Ответить с цитированием Вверх
Старый 10.02.2021, 02:51   #84
sergio1982
Местный
 
Регистрация: 01.09.2019
Сообщений: 423
Сказал(а) спасибо: 52
Поблагодарили 479 раз(а) в 147 сообщениях
Вес репутации: 194
sergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царстве
По умолчанию Подсчёт кромки и площади


Обновление, описание в 75 посте.

v2.17
+ Добавлен вывод облицовки пласти.
+ Добавлен вывод в фурнитуру блоков составной фурнитуры.

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

Код:
/*
Расчёт площади, веса, объёма и периметра панелей, метража кромки, погонажа и профилей,
а также количества фурнитуры.

http://promebelclub.ru/forum/showthread.php?p=505089#post505089


v2.17
03:42 10.02.2021
+ PlasticsCheck
+ IsFastener() && fix obj.IsFastener()

v2.16
0:12 28.01.2021
+ obj.IsFastener()
*/

var AddHidden = 0 // нужно ли добавлять скрытые объекты в результаты
var AddArticul = 0 // нужно ли добавлять артикул к имени материала

var Q_MDF = 1111111.111111 // name.match(/^МДФ/i)
var Q_STEKLO = 400000 // name.match(/стекло/i)
var Q_LDSP = 1333333.333333 // иначе

// -------------------------------------------------

var Res = {Panels: [],Linears: [],Extrusions: [],Edges: [],Fasteners: [], Plastics: []
 , Total: {Panels: 0, Linears: 0, Extrusions: 0, Edges: 0, Fasteners: 0, Plastics: 0}
 , Count: {Panels: 0, Linears: 0, Extrusions: 0, Edges: 0, Fasteners: 0, Plastics: 0}
 , Weight: 0, Volume: 0, PanelsContour: 0};
var Buffer = [];
var Selected = Model.SelectionCount;

for (var i = 0; i < Model.Count; ++i) {
    recurse(Model.Objects[i])
};

for (var key in Buffer) {
    CheckObj(Buffer[key])
};

function CheckObj(obj) {
    if (MyRules(obj))
        return
    var objtype = obj.toString()
    if (obj.AsPanel) {
        MtName = MaterialName(obj.MaterialName)
        Contour = obj.Contour;
        if (obj.MaterialWidth > 0) {                                            // погонный
            Add('Linears', MtName, Math.max(Contour.Height, Contour.Width))
        } else {                                                                // панели
            Add('Panels', MtName, (Contour.Height * Contour.Width))
            WeightAndVolumeCalc(Contour.Height * Contour.Width * obj.Thickness, MtName)
            Res.PanelsContour += GetContourLength(Contour)
        }
        Butts = obj.Butts;                                                      // кромка
        for (var i = 0; i < Butts.Count; ++i) {
            Add('Edges', MaterialName(Butts[i].Material), GetButtLength(Butts[i], Contour))
        };
    } else if (objtype == '[object TFastener]' || IsFastener(obj)) {           // фурнитура
        Add('Fasteners', MaterialName(obj.Name), 1)
    } else if (objtype == '[object TExtrusionBody]') {                          // профиль
        Add('Extrusions', MaterialName(obj.MaterialName), Math.abs(obj.Thickness))
    } else if (objtype == '[object T2DRotationBody]') {                         // погонный
        Add('Linears', MaterialName(obj.MaterialName), Math.max(obj.Contour2D.Height, obj.Contour2D.Width))
    }
}

var string = '';
if (Object.keys(Res.Panels).length) {
    string += '\n              Панели (квадратные метры): ' + (Res.Total.Panels / 1000000).toFixed(2) + ', объектов: ' + Res.Count.Panels + '\n\n';
    for (var key in Res.Panels) {
        AddString(key, (Res.Panels[key] / 1000000).toFixed(2))
    };
}
if (Object.keys(Res.Plastics).length) {
    string += '\n              Облицовка пласти (квадратные метры): ' + (Res.Total.Plastics / 1000000).toFixed(2) + ', объектов: ' + Res.Count.Plastics + '\n\n';
    for (var key in Res.Plastics) {
        AddString(key, (Res.Plastics[key] / 1000000).toFixed(2))
    };
}
if (Object.keys(Res.Edges).length) {
    string += '\n              Кромка (метры): ' + (Res.Total.Edges / 1000).toFixed(2) + ', объектов: ' + Res.Count.Edges + '\n\n';
    for (var key in Res.Edges) {
        AddString(key, (Res.Edges[key] / 1000).toFixed(2))
    };
}
if (Object.keys(Res.Linears).length) {
    string += '\n              Погонные материалы (метры): ' + (Res.Total.Linears / 1000).toFixed(2) + ', объектов: ' + Res.Count.Linears + '\n\n';
    for (var key in Res.Linears) {
        AddString(key, (Res.Linears[key] / 1000).toFixed(2))
    };
}
if (Object.keys(Res.Extrusions).length) {
    string += '\n              Профили (метры): ' + (Res.Total.Extrusions / 1000).toFixed(2) + ', объектов: ' + Res.Count.Extrusions + '\n\n';
    for (var key in Res.Extrusions) {
        AddString(key, (Res.Extrusions[key] / 1000).toFixed(2))
    };
}
if (Object.keys(Res.Fasteners).length) {
    string += '\n              Фурнитура (штуки): ' + Res.Total.Fasteners + '\n\n';
    for (var key in Res.Fasteners) {
        string += key + '   =   ' + Res.Fasteners[key] + '    \n'
    };
}
if (Res.Volume > 0) {
    string += '\n              Вес, объём и периметр (только панели):\n\n'
    + (Res.Weight).toFixed(1) + ' килограмм\n'
    + (Res.Volume / 1000000000).toFixed(3) + ' кубических метров\n'
    + (Res.PanelsContour / 1000).toFixed(2) + ' метров периметра\n'
}

if (string == '') {
    alert('Объекты не обнаружены!')
} else {
    var captionstring = ''
    + (Selected ? 'ИНФО ТОЛЬКО О ВЫДЕЛЕННЫХ И ПОДСВЕЧЕННЫХ!!!\n' : '')
    + (!AddHidden ? 'СКРЫТЫЕ НЕ УЧИТЫВАЮТСЯ!!!\n' : '')

    if (!confirm(captionstring + string + '\n\n\n              Чтобы вывести в файл нажмите "Нет"'))
        ButtonExport()
}
Action.Finish()

// -------------------------------------------------

function recurse(obj, sel) {
    if (!obj.Visible && !AddHidden)
        return
    if (!obj.List) {
        if (!sel)
            sel = !!((Selected) && (obj.Selected || obj.Highlighted))
        if (Selected && !sel)
            return
        PlasticsCheck(obj)
        Buffer.push(obj)
    } else {
        if (IsFastener(obj) && ((Selected && obj.Selected) || !Selected))
            return Buffer.push(obj)
        var blocksel = !!((Selected) && (sel || obj.Selected || obj.Highlighted))
        for (var i = 0; i < obj.Count; i++) {
            recurse(obj[i], blocksel)
        }
    }
}

function PlasticsCheck(obj) {
    if (obj.toString() !== '[object TFurnPanel]')
		return
	for (var i = 0; i < obj.Plastics.Count; i++) {
		MtName = MaterialName(obj.Plastics[i].Material)
		if (MtName == '')
			continue
		Add('Plastics', MtName, (obj.Contour.Height * obj.Contour.Width))
    }
}

function IsFastener(obj) {
    return ((obj.toString() == '[object TFastener]') || ((typeof obj.IsFastener == 'function') && obj.IsFastener()))
}

function Add(name, key, value) {
    if (value <= 0)
        return
    if (!Res[name].hasOwnProperty(key))
        Res[name][key] = 0
    Res[name][key] += value
    Res.Total[name] += value
    Res.Count[name] += 1
}

function AddString(key, value) {
    if (value > 0)
        string += key + '   =   ' + value + '    \n'
}

function GetButtLength(butt, contour) {
    return contour.Objects[butt.ElemIndex].ObjLength()
}

function GetContourLength(contour) {
    var len = 0
    for (var i = 0; i < contour.Count; ++i) {
        len += contour.Objects[i].ObjLength()
    };
    return len
}

function MaterialName(str) {
    if (AddArticul)
        return str.replace("\r", ". Артикул ")
    return str.replace(/\r.*/, '')
}

function ButtonExport() {
    system.writeTextFile('export.txt', string);
    Path = '"' + Action.Properties.AbsolutePath() + 'export.txt"'
    NewCOMObject('WScript.Shell').run(Path);
}

// -------------------------------------------------

function WeightAndVolumeCalc(vol, name) {
    if (name.match(/^МДФ/i))
        Q = Q_MDF
    else if (name.match(/стекло/i))
        Q = Q_STEKLO
    else
        Q = Q_LDSP
    Res.Weight += vol / Q
    Res.Volume += vol
}

function MyRules(obj) {
    return 0
}

// -------------------------------------------------
[свернуть]
sergio1982 вне форума   Ответить с цитированием Вверх
8 пользователя(ей) сказали cпасибо:
Старый 21.02.2021, 14:42   #85
sergio1982
Местный
 
Регистрация: 01.09.2019
Сообщений: 423
Сказал(а) спасибо: 52
Поблагодарили 479 раз(а) в 147 сообщениях
Вес репутации: 194
sergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царстве
По умолчанию Подсчёт кромки и площади


Обновление, описание в 75 посте.

v2.18
Добавлена опция в соответствии с пожеланиями из этого поста http://promebelclub.ru/forum/showthr...329#post505329. По сути опциональный откат назад, отключение расчёта блоков составной фурнитуры, как позиции фурнитуры.

v2.20
AddCount = 1 // Добавлять (кроме фурнитуры) в именах позиций количество объектов

v2.20

Код:
/*
Расчёт площади, веса, объёма и периметра панелей, метража кромки, погонажа и профилей,
а также количества фурнитуры.

http://promebelclub.ru/forum/showthread.php?p=505390#post505390

v2.20
    + AddCount
v2.19
    + fMyRules
v2.18
    + NBIF
v2.17
    + PlasticsCheck
    + IsFastener() && fix obj.IsFastener()
v2.16
    + obj.IsFastener()
*/

var AddHidden = 0 // нужно ли добавлять скрытые объекты в результаты
var AddArticul = 0 // нужно ли добавлять артикул к имени материала
var NBIF = 0 // отключение расчёта блоков составной фурнитуры, как позиции фурнитуры
var AddCount = 1 // Добавлять (кроме фурнитуры) в именах позиций количество объектов

var Q_MDF = 1111111.111111 // name.match(/^МДФ/i)
var Q_STEKLO = 400000 // name.match(/стекло/i)
var Q_LDSP = 1333333.333333 // иначе

var fMyRules = (typeof MyRules == 'function') ? MyRules : 0 // указание обработчика своих исключений функцией с именем "MyRules" принимающая один аргумент

// -------------------------------------------------

var Res = {Panels: [], Linears: [], Extrusions: [], Edges: [], Fasteners: [], Plastics: []
 , Total: {Panels: 0, Linears: 0, Extrusions: 0, Edges: 0, Fasteners: 0, Plastics: 0}
 , Count: {Panels: 0, Linears: 0, Extrusions: 0, Edges: 0, Fasteners: 0, Plastics: 0}
 , Weight: 0, Volume: 0, PanelsContour: 0};
var ItemsCount = {Panels: [], Linears: [], Extrusions: [], Edges: [], Fasteners: [], Plastics: []}
var Buffer = [];
var Selected = Model.SelectionCount;

for (var i = 0; i < Model.Count; ++i) {
    recurse(Model.Objects[i])
};

for (var key in Buffer) {
    CheckObj(Buffer[key])
};

function CheckObj(obj) {
    if (fMyRules && fMyRules.call(0, obj))
        return
    var objtype = obj.toString()
    if (obj.AsPanel) {
        MtName = MaterialName(obj.MaterialName)
        Contour = obj.Contour;
        if (obj.MaterialWidth > 0) {                                            // погонный
            Add('Linears', MtName, Math.max(Contour.Height, Contour.Width))
        } else {                                                                // панели
            Add('Panels', MtName, (Contour.Height * Contour.Width))
            WeightAndVolumeCalc(Contour.Height * Contour.Width * obj.Thickness, MtName)
            Res.PanelsContour += GetContourLength(Contour)
        }
        Butts = obj.Butts;                                                      // кромка
        for (var i = 0; i < Butts.Count; ++i) {
            Add('Edges', MaterialName(Butts[i].Material), GetButtLength(Butts[i], Contour))
        };
    } else if (objtype == '[object TFastener]' || IsFastener(obj)) {           // фурнитура
        Add('Fasteners', MaterialName(obj.Name), 1)
    } else if (objtype == '[object TExtrusionBody]') {                          // профиль
        Add('Extrusions', MaterialName(obj.MaterialName), Math.abs(obj.Thickness))
    } else if (objtype == '[object T2DRotationBody]') {                         // погонный
        Add('Linears', MaterialName(obj.MaterialName), Math.max(obj.Contour2D.Height, obj.Contour2D.Width))
    }
}

var string = '';
if (Object.keys(Res.Panels).length) {
    string += '\n              Панели (квадратные метры): ' + (Res.Total.Panels / 1000000).toFixed(2) + ', объектов: ' + Res.Count.Panels + '\n\n';
    for (var key in Res.Panels) {
        AddString('Panels', key, (Res.Panels[key] / 1000000).toFixed(2))
    };
}
if (Object.keys(Res.Plastics).length) {
    string += '\n              Облицовка пласти (квадратные метры): ' + (Res.Total.Plastics / 1000000).toFixed(2) + ', объектов: ' + Res.Count.Plastics + '\n\n';
    for (var key in Res.Plastics) {
        AddString('Plastics', key, (Res.Plastics[key] / 1000000).toFixed(2))
    };
}
if (Object.keys(Res.Edges).length) {
    string += '\n              Кромка (метры): ' + (Res.Total.Edges / 1000).toFixed(2) + ', объектов: ' + Res.Count.Edges + '\n\n';
    for (var key in Res.Edges) {
        AddString('Edges', key, (Res.Edges[key] / 1000).toFixed(2))
    };
}
if (Object.keys(Res.Linears).length) {
    string += '\n              Погонные материалы (метры): ' + (Res.Total.Linears / 1000).toFixed(2) + ', объектов: ' + Res.Count.Linears + '\n\n';
    for (var key in Res.Linears) {
        AddString('Linears', key, (Res.Linears[key] / 1000).toFixed(2))
    };
}
if (Object.keys(Res.Extrusions).length) {
    string += '\n              Профили (метры): ' + (Res.Total.Extrusions / 1000).toFixed(2) + ', объектов: ' + Res.Count.Extrusions + '\n\n';
    for (var key in Res.Extrusions) {
        AddString('Extrusions', key, (Res.Extrusions[key] / 1000).toFixed(2))
    };
}
if (Object.keys(Res.Fasteners).length) {
    string += '\n              Фурнитура (штуки): ' + Res.Total.Fasteners + '\n\n';
    for (var key in Res.Fasteners) {
        string += key + '   =   ' + Res.Fasteners[key] + '    \n'
    };
}
if (Res.Volume > 0) {
    string += '\n              Вес, объём и периметр (только панели):\n\n'
    + (Res.Weight).toFixed(1) + ' килограмм\n'
    + (Res.Volume / 1000000000).toFixed(3) + ' кубических метров\n'
    + (Res.PanelsContour / 1000).toFixed(2) + ' метров периметра\n'
}

if (string == '') {
    alert('Объекты не обнаружены!')
} else {
    var captionstring = ''
    + (Selected ? 'ИНФО ТОЛЬКО О ВЫДЕЛЕННЫХ И ПОДСВЕЧЕННЫХ!!!\n' : '')
    + (!AddHidden ? 'СКРЫТЫЕ НЕ УЧИТЫВАЮТСЯ!!!\n' : '')

    if (!confirm(captionstring + string + '\n\n\n              Чтобы вывести в файл нажмите "Нет"'))
        ButtonExport()
}
Action.Finish()

// -------------------------------------------------

function recurse(obj, sel) {
    if (!obj.Visible && !AddHidden)
        return
    if (!obj.List) {
        if (!sel)
            sel = !!((Selected) && (obj.Selected || obj.Highlighted))
        if (Selected && !sel)
            return
        PlasticsCheck(obj)
        Buffer.push(obj)
    } else {
        if (IsFastener(obj) && ((Selected && obj.Selected) || !Selected))
            return Buffer.push(obj)
        var blocksel = !!((Selected) && (sel || obj.Selected || obj.Highlighted))
        for (var i = 0; i < obj.Count; i++) {
            recurse(obj[i], blocksel)
        }
    }
}

function PlasticsCheck(obj) {
    if (obj.toString() !== '[object TFurnPanel]')
		return
	for (var i = 0; i < obj.Plastics.Count; i++) {
		MtName = MaterialName(obj.Plastics[i].Material)
		if (MtName == '')
			continue
		Add('Plastics', MtName, (obj.Contour.Height * obj.Contour.Width))
    }
}

function IsFastener(obj) {
    return ((obj.toString() == '[object TFastener]') || (!NBIF && (typeof obj.IsFastener == 'function') && obj.IsFastener()))
}

function Add(name, key, value) {
    if (value <= 0)
        return
    if (!Res[name].hasOwnProperty(key))
        Res[name][key] = 0, ItemsCount[name][key] = 0
    Res[name][key] += value
    Res.Total[name] += value
    Res.Count[name] += 1
    ItemsCount[name][key] += 1
}

function AddString(type, key, value) {
    if (AddCount)
        CountStr = ' (объектов: ' + ItemsCount[type][key] + ')';
    else
        CountStr = ''
    if (value > 0)
        string += key + CountStr + '   =   ' + value + '    \n'
}

function GetButtLength(butt, contour) {
    return contour.Objects[butt.ElemIndex].ObjLength()
}

function GetContourLength(contour) {
    var len = 0
    for (var i = 0; i < contour.Count; ++i) {
        len += contour.Objects[i].ObjLength()
    };
    return len
}

function MaterialName(str) {
    if (AddArticul)
        return str.replace("\r", ". Артикул ")
    return str.replace(/\r.*/, '')
}

function ButtonExport() {
    system.writeTextFile('export.txt', string);
    Path = '"' + Action.Properties.AbsolutePath() + 'export.txt"'
    NewCOMObject('WScript.Shell').run(Path);
}

// -------------------------------------------------

function WeightAndVolumeCalc(vol, name) {
    if (name.match(/^МДФ/i))
        Q = Q_MDF
    else if (name.match(/стекло/i))
        Q = Q_STEKLO
    else
        Q = Q_LDSP
    Res.Weight += vol / Q
    Res.Volume += vol
}

// -------------------------------------------------
[свернуть]

Последний раз редактировалось sergio1982; 21.02.2021 в 16:12.
sergio1982 вне форума   Ответить с цитированием Вверх
11 пользователя(ей) сказали cпасибо:
Старый 04.03.2021, 13:31   #86
Максим Геннадьевич
Местный
 
Регистрация: 11.04.2018
Адрес: г.Маркс
Сообщений: 162
Сказал(а) спасибо: 57
Поблагодарили 242 раз(а) в 45 сообщениях
Вес репутации: 137
Максим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личность
По умолчанию Скрипт кухня БМ8

Работает в - "народная" 8.0.12.12765
Архив содержит пять скриптов для построения кухни: низ, верх, пенал, угловой низ и верх. Возможны ошибки и не до чёты, но в основном рабочие скрипты, которым пользовался. Можно дописать, редактировать под себя. Скрипты писались под себя и свои нужды, поэтому просьба промолчать на тему "не так", "не по ГОСТу", "не правильно" и т.д. Всегда можно исправить.

Работу скриптов можно посмотреть https://youtu.be/3sa739N939I
Вложения
Тип файла: rar КУХНЯ.rar (175.7 Кб, 1341 просмотров)
Максим Геннадьевич вне форума   Ответить с цитированием Вверх
81 пользователя(ей) сказали cпасибо:
Старый 11.03.2021, 14:44   #87
sergio1982
Местный
 
Регистрация: 01.09.2019
Сообщений: 423
Сказал(а) спасибо: 52
Поблагодарили 479 раз(а) в 147 сообщениях
Вес репутации: 194
sergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царстве
По умолчанию Ракурсы камеры

Проход по 4 ракурсам камеры под установленным углом к видам слева, справа, спереди и сзади.

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



Код:
ADS = Action.DS.Camera

MyAngleY = 35
ADS.AngleX = 10
Step = 90 // Можно указать 45, будет 8 ракурсов

rest = ((ADS.AngleY - MyAngleY) % Step)
ADS.AngleY += rest ? -rest : Step

if (Action.Control.Projection !== 8)
    SetCamera(8);  // Перспектива
Action.Control.ViewAll(); //Показать все
[свернуть]

Последний раз редактировалось sergio1982; 12.03.2021 в 01:28.
sergio1982 вне форума   Ответить с цитированием Вверх
9 пользователя(ей) сказали cпасибо:
Старый 13.03.2021, 00:49   #88
sergio1982
Местный
 
Регистрация: 01.09.2019
Сообщений: 423
Сказал(а) спасибо: 52
Поблагодарили 479 раз(а) в 147 сообщениях
Вес репутации: 194
sergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царстве
По умолчанию Ракурсы камеры (массив)

Проход по списку заданных ракурсов.

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

Код:
var Views = [{X: 50, Y: 35, Proj: 8, All: 1}
           , {X: 50, Y: -35, Proj: 7, All: 1}
           , {X: -50, Y: -35, Proj: 8, All: 1}
           , {X: -50, Y: 35, Proj: 8, All: 0}]

var match = ''

ADS = Action.DS.Camera
X = ADS.AngleX
Y = ADS.AngleY
Proj = Action.Control.Projection

for (var key in Views) {
    obj = Views[key]
    if (obj.X == X && obj.Y == Y && obj.Proj == Proj) {
        match = key
        break
    }
};

match = (match == '') ? 0 : (match == (Views.length - 1)) ? 0 : (++match)

obj = Views[match]
ADS.AngleX = obj.X
ADS.AngleY = obj.Y
SetCamera(obj.Proj)
if (obj.All)
    Action.Control.ViewAll()
[свернуть]
sergio1982 вне форума   Ответить с цитированием Вверх
3 пользователя(ей) сказали cпасибо:
Alexey.84 (13.03.2021), demanus (13.03.2021), Smoker_79 (14.04.2021)
Старый 21.03.2021, 09:50   #89
renegat24
Новичок
 
Регистрация: 09.11.2020
Сообщений: 7
Сказал(а) спасибо: 3
Поблагодарили 3 раз(а) в 2 сообщениях
Вес репутации: 0
renegat24 пока не определено
По умолчанию скрипт obl - b3d

Есть скрипт obl - b3d строит 3д модели панелей в мебельщике из файла раскроя.
Проблема что работает только с 8 версией раскроя.

Кто-то может заставить работать скрипт с версиями 11 и 2021, или это слишком сложно и нужно заново писать скрипт?
Вложения
Тип файла: rar obl в b3d.rar (925 байт, 125 просмотров)
renegat24 вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
Vovan_1975 (21.03.2021), Игорь_ (03.07.2021)
Старый 22.03.2021, 15:04   #90
zorro
VIP
 
Аватар для zorro
 
Регистрация: 18.01.2008
Сообщений: 1,047
Сказал(а) спасибо: 2,864
Поблагодарили 1,852 раз(а) в 435 сообщениях
Вес репутации: 695
zorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущее
По умолчанию

Берите. Работает и в 11 и в 2021.
Вложения
Тип файла: rar OblToB3d.rar (1.0 Кб, 238 просмотров)
zorro вне форума   Ответить с цитированием Вверх
9 пользователя(ей) сказали cпасибо:
Ответ

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

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БАЗИС 11-2023 - Скрипты AlexBolton Базис-мебельщик. Скрипты 968 23.03.2024 13:39
БАЗИС 9 - Скрипты Igor_482 Базис-мебельщик. Скрипты 1441 27.02.2024 10:48
Скрипты в чертежах sergio1982 Базис-мебельщик. Скрипты 35 10.02.2024 15:45
БАЗИС 8 - Скрипты Igor_482 Базис-мебельщик. Скрипты 1524 07.12.2022 19:53
Заявки на скрипты dr_john Система БАЗИС 37 01.03.2016 10:36


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


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

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