Цитата:
Сообщение от 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(number, node, field){
var fieldNode = node.FindNode(field);
if (fieldNode){
number.Value = fieldNode.Value;
}
else
number.Value = 0;
}
//запись размера в числовые свойства осей
function AddSizes(node, name){
for (var i = 0; i < sizeProps.length; i++){
var num = sizeProps[i].NewNumber(name);
AddSize(num, node, fields[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 i = 0; i < planes.Count; i++){
AddPlane(planes.Nodes[i]);
}
}
}
else
alert('Объект не является эластичным блоком');
}
for (var i = 0; i < axisGroups.length; i++){
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, ''), то этой ноды не существует.