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

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

Меню

Маркет


Ответ
 
Опции темы Опции просмотра
Старый 06.06.2017, 08:56  
БАЗИС 10 - Скрипты
systland
VIP
Регистрация: 30.10.2007
Адрес: Москва
Сообщений: 565

Сказал(а) спасибо: 303
Поблагодарили 451 раз(а) в 189 сообщениях
Версия для печати Отправить по электронной почте
systland systland вне форума 06.06.2017, 08:56
Рейтинг: ()

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


Последний раз редактировалось systland; 26.12.2017 в 11:52..
Просмотров: 432382
Ответить с цитированием Вверх
Старый 09.05.2019, 16:22   #411
IStiv
Пользователь
 
Регистрация: 02.12.2016
Сообщений: 84
Сказал(а) спасибо: 21
Поблагодарили 55 раз(а) в 27 сообщениях
Вес репутации: 109
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
 
Регистрация: 04.07.2012
Сообщений: 1,955
Сказал(а) спасибо: 3,988
Поблагодарили 3,543 раз(а) в 1,165 сообщениях
Вес репутации: 1047
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, но тогда скрипт работает только для объектов модели, построенных как панель. Вот непонятно как обратиться к произвольному объекту
__________________
Автоматизация автоматизаций на АСУ, ТП и тд и тп..
Комплексное решение
bbb i ko вне форума   Ответить с цитированием Вверх
Старый 12.05.2019, 09:55   #413
bbb i ko
VIP
 
Регистрация: 04.07.2012
Сообщений: 1,955
Сказал(а) спасибо: 3,988
Поблагодарили 3,543 раз(а) в 1,165 сообщениях
Вес репутации: 1047
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"
__________________
Автоматизация автоматизаций на АСУ, ТП и тд и тп..
Комплексное решение
bbb i ko вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
wizardpnz (24.05.2019)
Старый 23.05.2019, 17:09   #414
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордится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
Сообщений: 191
Сказал(а) спасибо: 93
Поблагодарили 105 раз(а) в 44 сообщениях
Вес репутации: 196
wizardpnz скоро придёт к известностиwizardpnz скоро придёт к известности
По умолчанию

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

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

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

как в смете запустить скрипт?
Насколько я знаю, в смете, в базе операций, есть "Пользовательские параметры" для модели и для объекта, но там уже немного по-другому всё устроено (нет Action'а, другие глобальные свойства/функции, но скелет - структура 3д объектов - та же). Потом это вроде в сопутствия назначаются. Я думал разобраться в сметовских скриптах, запустил Смету (в первый раз), написал скриптовый параметр, но заставить его запуститься не получилось, в результате я оставил изучение Сметы до лучших времён.
Letos вне форума   Ответить с цитированием Вверх
Старый 24.05.2019, 14:08   #417
zorro
VIP
 
Аватар для zorro
 
Регистрация: 18.01.2008
Сообщений: 1,047
Сказал(а) спасибо: 2,864
Поблагодарили 1,853 раз(а) в 435 сообщениях
Вес репутации: 695
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
 
Регистрация: 04.07.2012
Сообщений: 1,955
Сказал(а) спасибо: 3,988
Поблагодарили 3,543 раз(а) в 1,165 сообщениях
Вес репутации: 1047
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 Посмотреть сообщение
Я тут решил проверить свои писательские способности.
О! не сразу обратил внимание - все четко расписано, респект.
__________________
Автоматизация автоматизаций на АСУ, ТП и тд и тп..
Комплексное решение

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

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

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

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

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

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Базис-Мебельщик 10 systland Базис-мебельщик 10 1264 13.03.2024 22:48
БАЗИС-Мебельщик 7.0 Shadow Базис-мебельщик 7 2230 29.11.2019 10:37
Базис-мебельщик JavaScript ran Ищу работу 0 09.05.2014 10:08


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


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

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