Всем доброго!
У нас на фабрике два сверлильных станка, на одном мы сверлим детали у которых отверстия только в торцы и в пласть не дальше 50мм. от края. Если хотя бы одно отверстие удалено от карая больше 50мм. то деталь уходит на другой станок.
Нужно чтобы в смете определялась операция с соответствующим станком.
Я написал скрипт который вызывается из меню скриптов. он анализирует расположения отверстий в панели и выдаёт результат в виде сообщения. Он работает как надо.
Скрытый текст
// переводим измерения в локальные координаты панели
function FromFastTOPanel(fast, panel, v){
return panel.ToObject(fast.ToGlobal(v))
}
// определяем что работаем с выделенной панелью
var p1 = Model.Selected.AsPanel;
var fasts = p1.FindConnectedFasteners();
var bhx = false;
// в цикле проверяем позицию всех отверстий в панели
for (var i = 0; i < fasts.length; i++)
{
for (var x = 0; x < fasts[i].Holes.Count; x++)
{
var pos = FromFastTOPanel(fasts[i], p1, fasts[i].Holes[x].Position);
if ((pos.x <= 50 | pos.y <= 50) || (pos.y >= p1.ContourHeight-50 | pos.x >= p1.ContourWidth-50))
bhx = bhx;
else
{
bhx = true;
break;
}
}
}
// выдаём результаты проверки
if (bhx)
alert('BHX');
else
alert('ABD');
[свернуть]
Теперь я пытаюсь адаптировать его для операций в базис смете, что не очень то выходит. И проблема я так понимаю в том месте где определялась работа с выделенной деталью. Очевидно что такая реализация в смете не допустима, но вот как это обыграть ума не приложу.
Скрытый текст
function FromFastTOPanel(fast, panel, v){
return panel.ToObject(fast.ToGlobal(v))
}
var p1 = panel; //////////////////////////////////// собака зарыта
var fasts = p1.FindConnectedFasteners(); /////// где то здесь
var bhx = false;
for (var i = 0; i < fasts.length; i++)
{
for (var x = 0; x < fasts[i].Holes.Count; x++)
{
var pos = FromFastTOPanel(fasts[i], p1, fasts[i].Holes[x].Position);
if ((pos.x <= 50 | pos.y <= 50) || (pos.y >= p1.ContourHeight-50 | pos.x >= p1.ContourWidth-50))
bhx = bhx;
else
{
bhx = true;
break;
}
}
}
if (bhx)
Result = 1;
else
Result = 0;
[свернуть]
или можно сформулировать вопрос иначе. Как получить массив фурнитуры соединённых с панелью?