var LDSP = [];//содержит выборку по ЛДСП
var HDF = [];//содержит выборку по ХДФ
if(Model.SelectionCount!=0){
function AddButts(Panel) {//функция определения типа панел
all="";//обявляем переменую, чтобы код не ругался при первой итерации.
for(i=0;i<4;i++){
word=Panel.MaterialName.charAt(i);//вытаскивает i символ из намиенование выделеного объекта
all=all+word;
}
if(all=="ЛДСП"){
LDSP[k]=Panel;//Добовляет в массив понель
}
if(all=="ХДФ "){
Orientation(Panel);//проверяем орентацию панели и возрощает присвоееное значение orientat
if(orientat==6){//проверяет является ли панель фронтальной.
HDF[k]=Panel;//Добовляет в массив ХДФ
}
}
}
for (var k = 0; k < Model.SelectionCount; k++)//перебор выделеных контуров(панелей)
AddButts(Model.Selections[k]);//передача даных в функцию
for(var i in LDSP){
if(LDSP[i].Butts.Count==0){//проверяет если кромка на панели
Orientation(LDSP[i]);//проверяем орентацию панели и возрощает присвоееное значение orientat
for(var j in HDF){
if(orientat == 1){
if(//если вертикальная стоечка и ХДФ расходятся на 2мм
Math.round(HDF[j].GabMax.y+2)==Math.round(LDSP[i].GabMax.y)&&
Math.round(HDF[j].GabMin.x-2)==Math.round(LDSP[i].GabMin.x)&&
Math.round(HDF[j].GabMax.z)==Math.round(LDSP[i].GabMin.z)
||
Math.round(HDF[j].GabMin.x-2)==Math.round(LDSP[i].GabMin.x)&&
Math.round(HDF[j].GabMin.y-2)==Math.round(LDSP[i].GabMin.y)&&
Math.round(HDF[j].GabMin.z+HDF[j].Thickness)==Math.round(LDSP[i].GabMin.z)
||
Math.round(HDF[j].GabMax.x+2)==Math.round(LDSP[i].GabMax.x)&&
Math.round(HDF[j].GabMax.y+2)==Math.round(LDSP[i].GabMax.y)&&
Math.round(HDF[j].GabMax.z)==Math.round(LDSP[i].GabMin.z)
||
Math.round(HDF[j].GabMax.x+2)==Math.round(LDSP[i].GabMin.x+LDSP[i].Thickness)&&
Math.round(HDF[j].GabMin.y-2)==Math.round(LDSP[i].GabMin.y)&&
Math.round(HDF[j].GabMax.z)==Math.round(LDSP[i].GabMin.z)
//если вертикальная стоечка и ХДФ расходятся на талщену понели
||
Math.round(HDF[j].GabMax.y+2)==Math.round(LDSP[i].GabMax.y+LDSP[i].Thickness)&&
Math.round(HDF[j].GabMin.x-2)==Math.round(LDSP[i].GabMin.x)&&
Math.round(HDF[j].GabMax.z)==Math.round(LDSP[i].GabMin.z)
||
Math.round(HDF[j].GabMin.x-2)==Math.round(LDSP[i].GabMin.x)&&
Math.round(HDF[j].GabMin.y-2)==Math.round(LDSP[i].GabMin.y-LDSP[i].Thickness)&&
Math.round(HDF[j].GabMin.z+HDF[j].Thickness)==Math.round(LDSP[i].GabMin.z)
||
Math.round(HDF[j].GabMax.x+2)==Math.round(LDSP[i].GabMax.x)&&
Math.round(HDF[j].GabMax.y+2)==Math.round(LDSP[i].GabMax.y+LDSP[i].Thickness)&&
Math.round(HDF[j].GabMax.z)==Math.round(LDSP[i].GabMin.z)
||
Math.round(HDF[j].GabMax.x+2)==Math.round(LDSP[i].GabMin.x+LDSP[i].Thickness)&&
Math.round(HDF[j].GabMin.y-2)==Math.round(LDSP[i].GabMin.y-LDSP[i].Thickness)&&
Math.round(HDF[j].GabMax.z)==Math.round(LDSP[i].GabMin.z)
//если горезантальная панель совпадает с ХДф
//верхная горезантальная панель
||
Math.round(HDF[j].GabMax.y)==Math.round(LDSP[i].GabMax.y)&&
Math.round(HDF[j].GabMin.x-2)==Math.round(LDSP[i].GabMin.x)&&
Math.round(HDF[j].GabMax.z)==Math.round(LDSP[i].GabMin.z)
||
Math.round(HDF[j].GabMax.x+2)==Math.round(LDSP[i].GabMax.x)&&
Math.round(HDF[j].GabMax.y)==Math.round(LDSP[i].GabMax.y)&&
Math.round(HDF[j].GabMax.z)==Math.round(LDSP[i].GabMin.z)
){
if(LDSP[i].Butts.Count==0){//проверяет если кромка на панели
for(var r = 0; r < LDSP[i].Contour.Count; r++){//перебераю весех сторон контура
if(LDSP[i].IsButtVisible(r, 2)==true){//проверяет соприкасеется ли кромящиеся сторана(i) с другой пнелью на растояние 2мм
if(r==3){//проверяет является ли сторона, задней стороной
//не крамим эту сторону
}else if(r==orientat){
Butt = LDSP[i].Butts.Add();//говорит о том что намерены установить кромку методо Butts и спомащью его свойст.
Butt.ElemIndex = orientat;// кромящаяся сторона
Butt.ClipPanel = true;//подрезка
Butt.Material = "Кромка ПВХ 19*2 мм (Standart)";//наименование кромки \r артикул
Butt.Sign = "19/2";//обозначение кромки
Butt.Thickness = (2);//толщена кромки
}else{
Butt = LDSP[i].Butts.Add();//кромим все оставшиеся не закрипленые части
Butt.ElemIndex = r;// кромящаяся сторона
Butt.Material = "Кромка ПВХ 19*0,4 мм (Standart)";//наименование кромки \r артикул
Butt.Sign = "19/0,4";//обозначение кромки
Butt.Thickness = (0);//толщена кромки
}
}
}
}
}else{
//тут кромим понели как обычно если нет совпадений в соприкосновение ХДФ
Buttt(LDSP[i]);
}
}else if(orientat == 0){//здесь претпологается условие для горезонтальной понели////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(
Math.round(HDF[j].GabMin.x-2)==Math.round(LDSP[i].GabMin.x)&&
Math.round(HDF[j].GabMax.y+2)==Math.round(LDSP[i].GabMax.y)&&
Math.round(HDF[j].GabMax.z)==Math.round(LDSP[i].GabMin.z)
||
Math.round(HDF[j].GabMax.x+2)==Math.round(LDSP[i].GabMax.x)&&
Math.round(HDF[j].GabMax.y+2)==Math.round(LDSP[i].GabMax.y)&&
Math.round(HDF[j].GabMax.z)==Math.round(LDSP[i].GabMin.z)
//нижная горезонтальная панель
||
Math.round(HDF[j].GabMin.x-2)==Math.round(LDSP[i].GabMin.x)&&
Math.round(HDF[j].GabMin.y-2)==Math.round(LDSP[i].GabMin.y)&&
Math.round(HDF[j].GabMax.z)==Math.round(LDSP[i].GabMin.z)
||
Math.round(HDF[j].GabMax.x+2)==Math.round(LDSP[i].GabMax.x)&&
Math.round(HDF[j].GabMin.y-2)==Math.round(LDSP[i].GabMin.y)&&
Math.round(HDF[j].GabMax.z)==Math.round(LDSP[i].GabMin.z)
//Вариант где горезантальная панель отстает на толщину панели.
///////////////////////////////////////////////////////////////
||
Math.round(HDF[j].GabMin.x-2)==Math.round(LDSP[i].GabMin.x-LDSP[i].Thickness)&&
Math.round(HDF[j].GabMax.y+2)==Math.round(LDSP[i].GabMax.y)&&
Math.round(HDF[j].GabMax.z)==Math.round(LDSP[i].GabMin.z)
||
Math.round(HDF[j].GabMax.x+2)==Math.round(LDSP[i].GabMax.x+LDSP[i].Thickness)&&
Math.round(HDF[j].GabMax.y+2)==Math.round(LDSP[i].GabMax.y)&&
Math.round(HDF[j].GabMax.z)==Math.round(LDSP[i].GabMin.z)
//нижная горезонтальная панель
||
Math.round(HDF[j].GabMin.x-2)==Math.round(LDSP[i].GabMin.x-LDSP[i].Thickness)&&
Math.round(HDF[j].GabMin.y-2)==Math.round(LDSP[i].GabMin.y)&&
Math.round(HDF[j].GabMax.z)==Math.round(LDSP[i].GabMin.z)
||
Math.round(HDF[j].GabMax.x+2)==Math.round(LDSP[i].GabMax.x+LDSP[i].Thickness)&&
Math.round(HDF[j].GabMin.y-2)==Math.round(LDSP[i].GabMin.y)&&
Math.round(HDF[j].GabMax.z)==Math.round(LDSP[i].GabMin.z)
// вариант когда ХДФ за подлицо с верхней гранью
||
Math.round(HDF[j].GabMin.x-2)==Math.round(LDSP[i].GabMin.x)&&
Math.round(HDF[j].GabMax.y)==Math.round(LDSP[i].GabMax.y)&&
Math.round(HDF[j].GabMax.z)==Math.round(LDSP[i].GabMin.z)
||
Math.round(HDF[j].GabMax.x+2)==Math.round(LDSP[i].GabMax.x)&&
Math.round(HDF[j].GabMax.y)==Math.round(LDSP[i].GabMax.y)&&
Math.round(HDF[j].GabMax.z)==Math.round(LDSP[i].GabMin.z)
){
if(LDSP[i].Butts.Count==0){//проверяет если кромка на панели
for(var r = 0; r < LDSP[i].Contour.Count; r++){//перебераю весех сторон контура
if(LDSP[i].IsButtVisible(r, 2)==true){//проверяет соприкасеется ли кромящиеся сторана(i) с другой пнелью на растояние 2мм
if(r==2){//проверяет является ли сторона, задней стороной
//не крамим эту сторону
}else if(r==orientat){
Butt = LDSP[i].Butts.Add();//говорит о том что намерены установить кромку методо Butts и спомащью его свойст.
Butt.ElemIndex = orientat;// кромящаяся сторона
Butt.ClipPanel = true;//подрезка
Butt.Material = "Кромка ПВХ 19*2 мм (Standart)";//наименование кромки \r артикул
Butt.Sign = "19/2";//обозначение кромки
Butt.Thickness = (2);//толщена кромки
}else{
Butt = LDSP[i].Butts.Add();//кромим все оставшиеся не закрипленые части
Butt.ElemIndex = r;// кромящаяся сторона
Butt.Material = "Кромка ПВХ 19*0,4 мм (Standart)";//наименование кромки \r артикул
Butt.Sign = "19/0,4";//обозначение кромки
Butt.Thickness = (0);//толщена кромки
}
}
}
}
}
}else{
Buttt(LDSP[i]);
}
}
LDSP[i].Build();//отресовка панели
}
}
}else{
while(true){ //бесконечный цыкл для того чтобы командой можно было пользоватся несколько раз.
Pan=GetPanel("Укажите панель");
Butt = Pan.Butts.Add();//говорит о том что намерены установить кромку методо Butts и спомащью его свойст.
Butt.ElemIndex = 1;// кромящаяся сторона
Butt.ClipPanel = true;//подрезка
Butt.Material = "Кромка ПВХ 19*2 мм (Standart)";//наименование кромки \r артикул
Butt.Sign = "19/2";//обозначение кромки
Butt.Thickness = (2);//толщена кромки
Pan.Build();//перерисовывает панель занова, нужна для отображение кромки в цвете.
}
}
////////////////////////////////////////////////////////////////////////////////////
function Orientation(Panel){
if(Math.round(Panel.GabMax.z-Panel.Thickness)==Math.round(Panel.GabMin.z)){//определяет крайнии точки панели, в данном случае коорденату z и сравнивает их.Panel.Thickness-толщена панели округляя значение до целых чисел.
//фронтальная
orientat=6;
}else if(Math.round(Panel.GabMax.y)-Panel.Thickness==Math.round(Panel.GabMin.y)){
orientat=0;//горезантальная
}else if(Math.round(Panel.GabMax.x-Panel.Thickness)==Math.round(Panel.GabMin.x)){
orientat=1;//вертекальная
}else{
//неведомая фигня
orientat=5;
}
}
//////////////////////////////////////////////////////////////////////////////////
function Buttt(Panel){
if(Panel.Butts.Count==0){//проверяет если кромка на панели
for(var i = 0; i < Panel.Contour.Count; i++){//перебераю весех сторон контура
if(Panel.IsButtVisible(i, 2)==true){//проверяет соприкасеется ли кромящиеся сторана(i) с другой пнелью на растояние 2мм
if(i==orientat){
Butt = Panel.Butts.Add();//говорит о том что намерены установить кромку методо Butts и спомащью его свойст.
Butt.ElemIndex = orientat;// кромящаяся сторона
Butt.ClipPanel = true;//подрезка
Butt.Material = "Кромка ПВХ 19*2 мм (Standart)";//наименование кромки \r артикул
Butt.Sign = "19/2";//обозначение кромки
Butt.Thickness = (2);//толщена кромки
}else if(orientat==6){
if((Math.round(Panel.ContourWidth)<=100 || Math.round(Panel.ContourHeight)<=100) && Math.round(Panel.GabMax.y)<=100){//проверяем является ли фронтальная панель цоколем
Butt = Panel.Butts.Add();//говорит о том что намерены установить кромку методо Butts и спомащью его свойст.
Butt.ElemIndex = i;// кромящаяся сторона
Butt.Material = "Кромка ПВХ 19*0,4 мм (Standart)";//наименование кромки \r артикул
Butt.Sign = "19/0,4";//обозначение кромки
Butt.Thickness = (0);//толщена кромки
}else{
Butt = Panel.Butts.Add();//говорит о том что намерены установить кромку методо Butts и спомащью его свойст.
Butt.ElemIndex = i;// кромящаяся сторона
Butt.ClipPanel = true;//подрезка
Butt.Material = "Кромка ПВХ 19*2 мм (Standart)";//наименование кромки \r артикул
Butt.Sign = "19/2";//обозначение кромки
Butt.Thickness = (2);//толщена кромки
}
}else{
Butt = Panel.Butts.Add();//кромим все оставшиеся не закрипленые части
Butt.ElemIndex = i;// кромящаяся сторона
Butt.Material = "Кромка ПВХ 19*0,4 мм (Standart)";//наименование кромки \r артикул
Butt.Sign = "19/0,4";//обозначение кромки
Butt.Thickness = (0);//толщена кромки
}
}
}
}
Panel.Build();//отресовка панели
}
//////////////////////////////////////////////////////////////////////////////////
UnSelectAll();//снять выделение , ура заработал
[свернуть]