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

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


Реклама на портале PROMEBELclub
шкаф-купе со скидкой по акции
Реклама на портале PROMEBELclub

искусственный камень Мебель196. Мебельный интернет-магазин в Екатеринбурге.
Ответ
 
Опции темы Опции просмотра
Старый 06.06.2017, 08:56  
БАЗИС 10 - Скрипты
systland
Модератор
Регистрация: 30.10.2007
Адрес: Москва
Сообщений: 561

Сказал(а) спасибо: 291
Поблагодарили 431 раз(а) в 181 сообщениях
Версия для печати Отправить по электронной почте
systland systland вне форума 06.06.2017, 08:56
Рейтинг: (3 голосов - 4.00 средняя оценка)

Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 10 в этой теме.
__________________


Последний раз редактировалось systland; 26.12.2017 в 10:52..
Просмотров: 96137
Ответить с цитированием Вверх
Старый 09.05.2019, 16:22   #411
IStiv
Пользователь
 
Регистрация: 02.12.2016
Сообщений: 41
Сказал(а) спасибо: 10
Поблагодарили 25 раз(а) в 10 сообщениях
Вес репутации: 42
IStiv на пути к лучшему
По умолчанию

Цитата:
Сообщение от bbb i ko Посмотреть сообщение
В данном случае хочу сделать такой параметр, который будет определять площадь поверхности объекта.
Параметры навешиваются так:
PHP код:
let startPropsName "name";
obj.UserPropertyName startPropsName;// создаем параметр
obj.UserProperty[startPropsName] = 1//  пишем инфу 
IStiv вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
maxgmv (13.05.2019), Ovsyanicov (10.05.2019)
Старый 12.05.2019, 00:15   #412
bbb i ko
VIP
 
Аватар для bbb i ko
 
Регистрация: 04.07.2012
Сообщений: 1,697
Сказал(а) спасибо: 3,332
Поблагодарили 3,170 раз(а) в 991 сообщениях
Вес репутации: 889
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 репутация неоспорима
По умолчанию

речь не пользовательских свойствах. В Смете в Базе Операций есть справочник Параметры с модели, там есть Пользовательские вычисляемые параметры, которые позволяют определить этот параметр через произвольный скрипт. Вот в этом скрипте не понятно как обратиться к объекту, поскольку там нет Model, Object, Object3 ... есть панель - Panel, но тогда скрипт работает только для объектов модели, построенных как панель. Вот непонятно как обратиться к произвольному объекту
__________________
http://www.upro.su
скачать демоверсию системы
Автоматизация мебельного бизнеса на базе 1С
Нетривиальное решение с широкими возможностями
bbb i ko вне форума   Ответить с цитированием Вверх
Старый 12.05.2019, 09:55   #413
bbb i ko
VIP
 
Аватар для bbb i ko
 
Регистрация: 04.07.2012
Сообщений: 1,697
Сказал(а) спасибо: 3,332
Поблагодарили 3,170 раз(а) в 991 сообщениях
Вес репутации: 889
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 репутация неоспорима
По умолчанию

Разобрался:


выдержка из мануала по Скриптам:
"Глобальные свойства БАЗИС Смета:
Panel
Доступ к параметрам панели.
Синтаксис:
Panel;
Тип данных:
Panel
Holes
Список отверстий панели
Синтаксис:
Holes;
Тип данных:
PanelHoles
Holes: свойство типа PanelHoles " 'Список отверстий панели
Material
Текущий материал
Синтаксис:
Material;
Тип данных:
String
Material: свойство типа String " "Текущий материал"
Result
Результат вычисления параметра
Синтаксис:
Result;
Тип данных:
Number
Result: свойство типа Number " 'Результат вычисления параметра'
Objects
Объекты скрипта
Синтаксис:
Objects;
Тип данных:
EstimateObjectList"
__________________
http://www.upro.su
скачать демоверсию системы
Автоматизация мебельного бизнеса на базе 1С
Нетривиальное решение с широкими возможностями
bbb i ko вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
wizardpnz (24.05.2019)
Старый 23.05.2019, 17:09   #414
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 308
Сказал(а) спасибо: 80
Поблагодарили 559 раз(а) в 208 сообщениях
Вес репутации: 168
Letos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всем
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Попытался сделать пример подсчёта площади поверхности для выделенного объекта, но сразу оговорюсь - кроме того, что считаются все треугольники (будут проблемы со стыками объектов, если считать суммарную площадь нескольких объектов), ещё, из-за операций с вещественными числами (в основном, деление и корень), будет возникать погрешность (скорее всего неприемлемая). Например: есть шар с радиусом 100. Его площадь поверхности: 4*Pi*R^2 = 125663.706. Скрипт же у меня выдаёт 110134.391.

Код для получения площади


PHP код:

// длина вектора
function VectorLength(v) {
    return 
Math.sqrt(v.v.v.v.v.v.z)
}
/**
 * Вычитание векторов
 * @param {Vector} v1 
 * @param {Vector} v2 
 * @returns {Vector}
 */
function VectorSub(v1v2) {
    return {
        
xv1.v2.x,
        
yv1.v2.y,
        
zv1.v2.z
    
}
}

/**
 * Сложение векторов
 * @param {Vector} v1 
 * @param {Vector} v2 
 * @returns {Vector}
 */
function VectorAdd(v1v2) {
    return {
        
xv1.v2.x,
        
yv1.v2.y,
        
zv1.v2.z
    
}
}

// скалярное произведение векторов
function VectorDot(v1v2) {
    return 
v1.v2.v1.v2.v1.v2.z;
}
/**
 * Проекция точки на линию
 * @param {Vector} p Исходная точка
 * @param {Vector} ls точка на линии
 * @param {Vector} ld направление линии
 * @returns {Vector}
 */
function PointLineProj(plsld) {
    var 
VectorSub(pls)
    var 
c1 VectorDot(vld);
    var 
c2 VectorDot(ldld);
    var 
c1 c2;
    return {
        
xls.ld.c,
        
yls.ld.c,
        
zls.ld.c
    
}
}

/**
 * Расстояние от точки до линии
 * @param {Vector} p Исходная точка
 * @param {Vector} ls точка на линии
 * @param {Vector} ld направление линии
 */
function PointLineDistance(plsld) {
    var 
proj PointLineProj(plsld);
    var 
dv VectorSub(projp);
    return 
VectorLength(dv)
}

// Площадь треугольника - Основание * Высота / 2 (a*h/2)
// Точки p1, p2, p3 - вершины треугольника
// Если p1p2 - основание, тогда высота - расстояние от точки p3 до линии, на 
// которой лежит основание.
//
//        p3
//        /|\
//       / | \
//      /  |  \
//     /   |h  \
//    /____|____\
//  p1   a       p2
//
function Square(tri) {
    var 
p1 tri.Vertex1p2 tri.Vertex2p3 tri.Vertex3;
    var 
ld VectorSub(p1p2)
    var 
VectorLength(ld);
    var 
PointLineDistance(p3p1ld);
     return 
2;
}


var 
obj Model.Selected;
var 
0;
if (
obj.TriListsCount 0) {
    for (var 
0obj.TriListsCountt++) {
        var list = 
obj.TriLists[t];
        for (var 
0< list.Counti++) {
            var 
tri = list[i];
            if (
tri) {
                
+= Square(tri);
            }
        }
    }
}
alert('s = ' 'mm'); 
[свернуть]
Некоторое время гуглил, как получше искать площадь поверхности и набрёл на англоязычную фразу "Surface Area". Оказалось, что у списка треугольников есть такой метод, поэтому скрипт может выглядеть гораздо короче:

PHP код:
var area 0;
// Получение площади поверхности объекта
function GetSurfaceArea(obj){
  var 
result 0;
  if (
obj.TriListsCount 0) {
      for (var 
0obj.TriListsCountt++) {
          var list = 
obj.TriLists[t];
          
result += list.SurfaceArea();
      }
  }
  return 
result;
}

//Обработка объекта и вложенных объектов.
function ProcessObject(obj){
    if (
obj.List){
        for (var 
0obj.AsList().Counti++){
            
ProcessObject(obj[i]);
        }
    }
    else
        
area += GetSurfaceArea(obj);
}

for (var 
0Model.SelectionCounti++){
    var 
obj Model.Selections[i];
    
ProcessObject(obj);
}

alert('Площадь поверхности выделенных объектов = ' area 'mm\u00b2'); 
P.S. Также я заметил, что погрешность вычислений зависит от параметров "Гладкость дуг" (меньше - хуже) и "ядро C3D" (выкл. - хуже).

Последний раз редактировалось Letos; 23.05.2019 в 17:15. Причина: Удалил лишнюю цитату
Letos вне форума   Ответить с цитированием Вверх
5 пользователя(ей) сказали cпасибо:
bbb i ko (24.05.2019), Ovsyanicov (24.05.2019), roollz (24.05.2019), volunka (24.05.2019), zorro (23.05.2019)
Старый 24.05.2019, 09:44   #415
wizardpnz
Местный
 
Регистрация: 02.07.2011
Сообщений: 122
Сказал(а) спасибо: 58
Поблагодарили 62 раз(а) в 22 сообщениях
Вес репутации: 123
wizardpnz скоро придёт к известности
По умолчанию

Цитата:
Сообщение от bbb i ko Посмотреть сообщение
речь не пользовательских свойствах. В Смете в Базе Операций есть справочник Параметры с модели, там есть Пользовательские вычисляемые параметры, которые позволяют определить этот параметр через произвольный скрипт. Вот в этом скрипте не понятно как обратиться к объекту, поскольку там нет Model, Object, Object3 ... есть панель - Panel, но тогда скрипт работает только для объектов модели, построенных как панель. Вот непонятно как обратиться к произвольному объекту
в смете тоже можно запустить скрипт? и там уже другая область видимости?

как в смете запустить скрипт?
wizardpnz вне форума   Ответить с цитированием Вверх
Старый 24.05.2019, 11:20   #416
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 308
Сказал(а) спасибо: 80
Поблагодарили 559 раз(а) в 208 сообщениях
Вес репутации: 168
Letos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всем
По умолчанию

Цитата:
Сообщение от wizardpnz Посмотреть сообщение
в смете тоже можно запустить скрипт? и там уже другая область видимости?

как в смете запустить скрипт?
Насколько я знаю, в смете, в базе операций, есть "Пользовательские параметры" для модели и для объекта, но там уже немного по-другому всё устроено (нет Action'а, другие глобальные свойства/функции, но скелет - структура 3д объектов - та же). Потом это вроде в сопутствия назначаются. Я думал разобраться в сметовских скриптах, запустил Смету (в первый раз), написал скриптовый параметр, но заставить его запуститься не получилось, в результате я оставил изучение Сметы до лучших времён.
Letos вне форума   Ответить с цитированием Вверх
Старый 24.05.2019, 14:08   #417
zorro
VIP
 
Аватар для zorro
 
Регистрация: 18.01.2008
Сообщений: 1,027
Сказал(а) спасибо: 2,770
Поблагодарили 1,722 раз(а) в 413 сообщениях
Вес репутации: 610
zorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущееzorro обеспечил(а) себе прекрасное будущее
По умолчанию

Я тут решил проверить свои писательские способности.
Попробовал написать инструкцию как написать скрипт для Базис-Сметы и подключить его.
Поскольку текст с картинками, то написал в Wordе и прикрепил этот файл во вложении.
Прошу сильно не пинать. Чукча не писатель
zorro вне форума   Ответить с цитированием Вверх
13 пользователя(ей) сказали cпасибо:
Старый 24.05.2019, 23:53   #418
bbb i ko
VIP
 
Аватар для bbb i ko
 
Регистрация: 04.07.2012
Сообщений: 1,697
Сказал(а) спасибо: 3,332
Поблагодарили 3,170 раз(а) в 991 сообщениях
Вес репутации: 889
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 репутация неоспорима
По умолчанию

Цитата:
Сообщение от wizardpnz Посмотреть сообщение
как в смете запустить скрипт?
Заходите в справочник Операции, далее Параметры с модели - Правка - Пользовательские вычисляемые. Там можете добавить свой параметр, который вы сможете применить исключительно для расчета объема операции и более ни для чего. Этот самый объем (результат работы скрипта) вы должны записать в переменную Result - тогда все сработает. Соответственно в скрипте пользовательского параметра вы не можете обратиться к любому объекту модели , есть только текущий объект, с которым работает Смета через этот скрипт. Что это за объект? В общем случае Objects (не путайте с объектами модели, этот Objects относится только к текущим объектам скрипта - почему их может быть много я пока не в курсе) - можно так:
Код:
for (var i = 0; i < Objects.Count; i++){
    var obj = Objects.Items[i];
     if (obj.IsPanel())
но самое простое - это свойство Panel: в теле скрипта можете обращаться к этой переменной и если текущий объект - панель, то получите все свойства панели: материал, кромки, контур и тд.


Ну и еще: не все что работает в Мебельщике, работает и в Смете. Есть отличия, те же треугольники не получится получить для импортированного из автокада объекта (я надеюсь - это временно)) )


Цитата:
Сообщение от zorro Посмотреть сообщение
Я тут решил проверить свои писательские способности.
О! не сразу обратил внимание - все четко расписано, респект.
__________________
http://www.upro.su
скачать демоверсию системы
Автоматизация мебельного бизнеса на базе 1С
Нетривиальное решение с широкими возможностями

Последний раз редактировалось bbb i ko; 25.05.2019 в 00:36.
bbb i ko вне форума   Ответить с цитированием Вверх
3 пользователя(ей) сказали cпасибо:
Letos (27.05.2019), wizardpnz (27.05.2019), zorro (25.05.2019)
Старый 26.05.2019, 16:26   #419
wizardpnz
Местный
 
Регистрация: 02.07.2011
Сообщений: 122
Сказал(а) спасибо: 58
Поблагодарили 62 раз(а) в 22 сообщениях
Вес репутации: 123
wizardpnz скоро придёт к известности
По умолчанию

в смете можно получить доступ к смете изделия, которую выводит базис смета , чтобы из этих данных запилить свой отчёт???

Последний раз редактировалось wizardpnz; 27.05.2019 в 10:39.
wizardpnz вне форума   Ответить с цитированием Вверх
Старый 07.06.2019, 10:47   #420
DevDemi
Новичок
 
Регистрация: 10.05.2018
Сообщений: 2
Сказал(а) спасибо: 1
Поблагодарили 10 раз(а) в 1 сообщении
Вес репутации: 0
DevDemi на пути к лучшему
По умолчанию

Можно ли с помощью скрипта разрушить существующий блок?
DevDemi вне форума   Ответить с цитированием Вверх
Ответ

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

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Базис-Мебельщик 10 systland Базис-мебельщик 10.0 1000 17.07.2019 11:47
БАЗИС-Мебельщик 7.0 Shadow Базис-мебельщик 7.0 2228 12.09.2016 18:13
Базис-мебельщик JavaScript ran Ищу работу 0 09.05.2014 09:08


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


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
© 2007-2019 PROMEBEL