Цитата:
Сообщение от Slav
строки этого шедевра код по сути абсолютное говно
|
Лучше и не скажешь.
Добрый день. Итак, ниже код для определения первой и второй панели в соединении. Не вкладной и накладной, т.к. ... ну вы догадаетесь. Код работает для параметрической фурнитуры. Конкретно для конфирматов, гвоздей и шурупов. Для другой параметрической фурнитуры код аналогичен, с небольшими нюансами. Для произвольной фурнитуры немного сложнее.
PHP код:
var panelFirst; var panelSecond;
Model.forEach(
function(Obj){
if(Obj instanceof TFastener){
var panel = Obj.FindFastenedObjects();
for (var r=0; r<panel.length; ++r){
if (Obj.DatumMode == 3 && Obj.ParamType == 1){
if (CheckHole(Obj.Holes.First(), Obj, panel[r])){
panelSecond = panel[r];
}else {
panelFirst = panel[r];
}}}}});
alert ('Первая панель в соединении - ' + panelFirst.Name);
alert ('Вторая панель в соединении - ' + panelSecond.Name);
function CheckHole(hole, fast, panel){
var holeCenter = fast.ToGlobal({
x: hole.Position.x + hole.Direction.x * (hole.Depth / 2),
y: hole.Position.y + hole.Direction.y * (hole.Depth / 2),
z: hole.Position.z + hole.Direction.z * (hole.Depth / 2),
})
holeCenter = panel.ToObject(holeCenter);
return (holeCenter.x > panel.GMin.x) && (holeCenter.x < panel.GMax.x) &&
(holeCenter.y > panel.GMin.y) && (holeCenter.y < panel.GMax.y) &&
(holeCenter.z > panel.GMin.z) && (holeCenter.z < panel.GMax.z);
}
В коде использована функция CheckHole, опубликованная bbb i ko
https://xn--90aakbzfbcrjl8bxh.xn--p1...=14883&page=41
Его эта функция или нет не знаю, но спасибо!
И без всяких векторов, понтов и п...жа.
А на счет моего образования, интелекта и возраста: "Прости им Господи, ибо не ведают они что творят".
P.S. И да, моего кода тут чуть более 10 строк.