Показать сообщение отдельно
Старый 09.04.2019, 16:58   #389
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,033 раз(а) в 367 сообщениях
Вес репутации: 345
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от IStiv Посмотреть сообщение
там какая то мазафака) большой и сложный объект и я не понял где и как искать. Поковырялся - безрезультатно(.
Если есть советы/решение:
- как найти параметры "эластика" (min/max по осям и шаг)?
- как найти сколько плоскостей на "координате"? (к примеру мне нужно определять на все ли три оси "навешан" эластик у модуля).
напишите пожалуйста.
Написал скрипт, который показывает чуть более расширенную информацию по эластичности:

Код

PHP код:
var props Action.Properties;
var 
objName props.NewString('Имя объекта');
var 
width props.NewGroup('Ширина');
var 
height props.NewGroup('Высота');
var 
depth props.NewGroup('Глубина');
// Два массива для перебора значений по осям
var fields = [
    
'x',
    
'y',
    
'z'
]
var 
sizeProps = [
    
width,
    
height,
    
depth
]


var 
planes props.NewGroup('Плоскости');
var 
vert planes.NewNumber('Вертикальные');
vert.Tag 0
var hor planes.NewNumber('Горизонтальные');
hor.Tag 1
var front planes.NewNumber('Фронтальные');
front.Tag 2
var axisGroups = [
    
vert,
    
hor,
    
front
];

// function CheckNode(node) {
//     for (var i = 0; i < node.Count; i++) {
//         var name = node.Nodes[i].Name;
//         if (name) {

//         }
//     }
// }

//Добавление информации о плоскости
function AddPlane(node) {
    var 
axis node.FindNode('Axis');
    var 
axisValue axis axis.Value 0;
    
//Ось плоскости
    
var planeGroup axisGroups[axisValue].NewGroup('');
    var 
pos node.FindNode('Pos');
    
posValue pos pos.Value 0;
    
//Положение плоскости
    
planeGroup.NewNumber('Позиция'pos.Value);
    var 
weight node.FindNode('Weight');
    if (
weight) {
        
// вес плоскости
        
planeGroup.NewNumber('Вес'weight.Value);
    }
}

// запись размера в числовое свойство оси
function AddSize(numbernodefield){
    var 
fieldNode node.FindNode(field);    
    if (
fieldNode){
        
number.Value fieldNode.Value;
    }
    else 
        
number.Value 0;
}

//запись размера в числовые свойства осей
function AddSizes(nodename){    
    for (var 
0sizeProps.lengthi++){
        var 
num sizeProps[i].NewNumber(name);
        
AddSize(numnodefields[i]);
    }
}

// заполнение информации об объекте
function FillObjectInfo(obj){
    
objName.Value '';
    
width.Clear();
    
height.Clear();
    
depth.Clear();
    
vert.Clear();
    
hor.Clear();
    
front.Clear();
    if (
obj){
        
objName.Value obj.Name;
        var 
elastic obj.ParamSectionNode('Elastic');    
        if (
elastic){
            var 
node elastic.FindNode('AreaMin');
            if (
node){
                
AddSizes(node'Минимум');
            }
            
node elastic.FindNode('AreaMax');
            if (
node){
                
AddSizes(node'Максимум');
            }
            
node elastic.FindNode('AreaStep');
            if (
node){
                
AddSizes(node'Шаг');
            }
            var 
planes elastic.FindNode('Planes');
            if (
planes){
                for (var 
0planes.Counti++){
                    
AddPlane(planes.Nodes[i]);
                }
            }
        }
        else
            
alert('Объект не является эластичным блоком');
    }
    for (var 
0axisGroups.lengthi++){
        
axisGroups[i].Value axisGroups[i].Count;
        
axisGroups[i].Expanded false;
    }
}

props.NewButton('Исследовать').OnClick = function(){
    
FillObjectInfo(Model.Selected);
}

{
    var 
obj Model.Selected;
    if (
obj)
        
FillObjectInfo(obj);
}

Action.Continue();
Action.Hint 'Выберите объект в структуре модели и нажмите кнопку "Исследовать"'
[свернуть]


Есть один косяк - если в TXBSNode содержится стандартное значение (0, false, ''), то этой ноды не существует.
Letos вне форума   Ответить с цитированием Вверх
5 пользователя(ей) сказали cпасибо:
IStiv (10.04.2019), maxgmv (14.02.2020), Ovsyanicov (10.04.2019), PravCom (30.07.2021), АлКузнецов (14.01.2022)