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

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

Меню

Маркет


Ответ
 
Опции темы Опции просмотра
Старый 25.12.2017, 23:12  
Обсуждение готовых скриптов
Letos
Консультант
Регистрация: 28.06.2017
Сообщений: 555

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

Здесь можно обсуждать скрипты из темы Готовые решения для БМ8-2021.

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


Последний раз редактировалось Uncle; 04.07.2021 в 15:03..
Просмотров: 224618
Ответить с цитированием Вверх
Старый 12.11.2020, 23:44   #151
sergio1982
Местный
 
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 195
sergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царстве
По умолчанию

Цитата:
Сообщение от Станислав Станилевич Посмотреть сообщение
на однотонном материале можно развернуть текстуру
Так у такого материала есть параметр текстура - не задана, оно автоматом не учитывается?
sergio1982 вне форума   Ответить с цитированием Вверх
Старый 23.11.2020, 19:00   #152
sergio1982
Местный
 
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 195
sergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царстве
По умолчанию

http://promebelclub.ru/forum/showthr...942#post483942
Хорошая вещь, а буквы кто нибудь встречал?
sergio1982 вне форума   Ответить с цитированием Вверх
Старый 27.11.2020, 14:18   #153
Vaseok23
Новичок
 
Регистрация: 22.10.2017
Сообщений: 28
Сказал(а) спасибо: 38
Поблагодарили 4 раз(а) в 2 сообщениях
Вес репутации: 0
Vaseok23 пока не определено
По умолчанию

по идее можно объединить саму фурнитуру в полуфабрикат, и присвоить ему имя из базы, и можно будет считывать и как сборку и как блок

Добавлено через 2 минуты
это я про авентос HF
Vaseok23 вне форума   Ответить с цитированием Вверх
Старый 28.11.2020, 10:51   #154
Meshok
Пользователь
 
Аватар для Meshok
 
Регистрация: 17.12.2016
Сообщений: 89
Сказал(а) спасибо: 27
Поблагодарили 50 раз(а) в 30 сообщениях
Вес репутации: 108
Meshok скоро придёт к известности
По умолчанию

Цитата:
Сообщение от АлКузнецов Посмотреть сообщение
Стабильно работает в 10, в 11й версии выдает ошибку смысла которой я не понимаю...
Крутил, вертел, понять хотел...
Чего-то Ваш скрипт у меня и в 10-ке (демо) не арбайтен, поэтому не знаю с какого боку подойти...

P.S. На вскидку проблема в этой строке:

Window2.Combo1.ComboItems = Materials;

На мой взгляд - разные типы значений

Последний раз редактировалось Meshok; 28.11.2020 в 11:43.
Meshok вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
АлКузнецов (30.11.2020)
Старый 10.02.2021, 10:18   #155
ХАВКА
Местный
 
Регистрация: 07.02.2012
Сообщений: 189
Сказал(а) спасибо: 81
Поблагодарили 51 раз(а) в 32 сообщениях
Вес репутации: 177
ХАВКА скоро придёт к известности
По умолчанию

Цитата:
Сообщение от 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
}

// -------------------------------------------------
[свернуть]
фурнитуру, установленную по схеме крепежа считает некорректно... это можно исправить?
ХАВКА вне форума   Ответить с цитированием Вверх
Старый 10.02.2021, 10:37   #156
sergio1982
Местный
 
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 195
sergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царстве
По умолчанию

По схеме крепежа не пользуюсь, и не знаю что это. Опишите подробнее, и дайте файл пример.
sergio1982 вне форума   Ответить с цитированием Вверх
Старый 18.02.2021, 10:40   #157
Mullerr
Новичок
 
Регистрация: 28.01.2021
Сообщений: 17
Сказал(а) спасибо: 49
Поблагодарили 2 раз(а) в 2 сообщениях
Вес репутации: 0
Mullerr пока не определено
По умолчанию

Цитата:
Сообщение от sergio1982 Посмотреть сообщение
По схеме крепежа не пользуюсь, и не знаю что это. Опишите подробнее, и дайте файл пример.
Раньше выдавало как на рис.1, после учета составной фурнитуры (схем крепежа) выдает как на рис.2 (некорректное название евровинтов и шкантов). Модель и скриншоты прилагаю.
Миниатюры
Рис1.jpg   Рис2.jpg  
Вложения
Тип файла: rar Модель1.rar (38.8 Кб, 10 просмотров)
Mullerr вне форума   Ответить с цитированием Вверх
Старый 21.02.2021, 14:48   #158
sergio1982
Местный
 
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 195
sergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царстве
По умолчанию

Так понятнее.
Я выложил обновление. Вам нужно NBIF указать равной 1, это переменная в начале кода.
Если вам это требуется только для определённых объектов, то это можно наколдовать в MyRules.
sergio1982 вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Mullerr (04.03.2021)
Старый 27.04.2021, 07:02   #159
kos100pudov
Местный
 
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
kos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личность
По умолчанию

Цитата:
Сообщение от 4ernish Посмотреть сообщение
Работает в БМ11, БМ 2021 с включенной функцией ИРП. Присваивает позициям деталей и блоков их обозначение. В дальнейшем на сборочных чертежах вместо привычный 1,2,3 будут обозначения деталей и блоков. Фурнитуру не трогает. Работает быстро (можно ставить на автозапуск при выпуске чертежей), но в дереве модели изменения видно не сразу-но легким движением мыши по дереву структура обновляется. В скриптах не силен-пришлось делать дабы упростить работу, буду рад если кто то знающий подскажет как улучшить

Model.forEachPanel(function (panel) {
if (panel.ArtPos.indexOf('(') < 0)
panel.ArtPos =panel.Designation;
})
Model.forEach(function (obj) {
if (obj instanceof TFurnBlock){
obj.ArtPos =obj.Designation;
};
})
Может быть будет чуть быстрее если будет один перебор модели через Model.forEach, а внутри
IF с множественные параметром ((obj instanceof TFurnBlock) || (obj instanseof TFurnPanel) || (...и т.д.))
kos100pudov вне форума   Ответить с цитированием Вверх
Старый 03.05.2021, 00:18   #160
Slav
Местный
 
Регистрация: 15.05.2012
Адрес: Москва
Сообщений: 259
Сказал(а) спасибо: 43
Поблагодарили 211 раз(а) в 89 сообщениях
Вес репутации: 213
Slav - весьма и весьма положительная личностьSlav - весьма и весьма положительная личностьSlav - весьма и весьма положительная личность
По умолчанию

Уважаемые коллеги! Подскажите . Наверняка сталкивались с задачей сбора статистики по количеству отверстий в зависимости от диаметра. У меня работодатель требует предоставлять такую статистику. Вначале мысль была сделать все на основе сметы...Но потом понял что это будет не объективно. Поскольку база материалов заполнена неудачно. Да и фурнитура зачастую используется чужая. Смета не спасает в данном случае. Как такую задачу решить с помощью скрипта? Пролистывая ветки форума, что то связанное с отверстиями имеется, но все мимо.
Slav вне форума   Ответить с цитированием Вверх
Ответ

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

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"Мастер скриптов" — изменение скрипта блока в сцене KD ViPeS KitchenDraw (KD) 40 16.10.2023 19:23
KitchenDraw - библиотека готовых объектов kot100odessa KitchenDraw (KD) 514 04.10.2023 13:30
Шлифовка готовых изделий из акрилового камня Alexotto Обработка искусственного акрилового камня 402 28.07.2020 16:52
Витражи - фото готовых работ vasyl.vitrage Витражи 155 04.10.2016 12:43
Магазин готовых деталей из ЛДСП bar666 ПЕСОЧНИЦА) Раздел для новых участников форума 26 08.03.2015 21:32


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


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

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