МОДУЛЬ DXF.PHP ПРИЕМА ВХОДНЫХ ПАРАМЕТРОВ И ВЫЗОВА МОДУЛЕЙ ОБРАБОТКИ
MODULE DXF.PHP RECEIVING INPUT PARAMETERS AND CALLING PROCESSING MODULES
РАЗРЕШЕНО копировать код и устанавливать на своем компьютере для разработок. ЗАПРЕЩЕНО размещать код на других ресурсах.
You are ALLOWED to copy the code and install it on your computer for development. It is FORBIDDEN to place the code on other resources.
";
}
*/
if(strstr($dxf,"")||strstr($dxf,"
В СООБЩЕНИИ СОДЕРЖИТСЯ ОПАСНЫЙ КОД! СООБЩЕНИЕ ОБРАБАТЫВАТЬСЯ НЕ БУДЕТ!
";
///////////////////////////////////////////////////////////////////////////////////////
str_replace("", "", $dxf);//БЕЗОПАСНОСТЬ!!! Вырезаем из передаваемого текста РНР код.
///////////////////////////////////////////////////////////////////////////////////////
}
///////////////////////// ОБЪЯВЛЯЕМ МАССИВЫ ////////////////////////////////
$npp=Array(1000); //№ ПРИМИТИВА
$namep=Array(1000); //НАИМЕНОВАНИЕ ПРИМИТИВА
$xnArr=Array(1000); //10 Х начальная точка линии
$ynArr=Array(1000); //20 Y начальная точка линии
$znArr=Array(1000); //20 Z начальная точка линии
$xkArr=Array(1000); //11 Х конечная точка линии
$ykArr=Array(1000); //21 Y конечная точка линии
$zkArr=Array(1000); //20 Y начальная точка линии
$xcArr=Array(1000); //30 Z координата центра дуги
$ycArr=Array(1000); //30 Y координата центра дуги
$rArr=Array(1000); //40 Радиус дуги
$AnArr=Array(1000); //50 Начальный угол дуги
$AkArr=Array(1000); //51 Конечный угол дуги
///////////////////////// ОБЪЯВЛЯЕМ ВСПОМОГАТЕЛЬНЫУ МАССИВЫ ////////////////////////////////
$npp1=Array(1000); //№ ПРИМИТИВА
$namep1=Array(1000); //НАИМЕНОВАНИЕ ПРИМИТИВА
$xnArr1=Array(1000); //10 Х начальная точка линии
$ynArr1=Array(1000); //20 Y начальная точка линии
$znArr1=Array(1000); //20 Z начальная точка линии
$xkArr1=Array(1000); //11 Х конечная точка линии
$ykArr1=Array(1000); //21 Y конечная точка линии
$zkArr1=Array(1000); //20 Y начальная точка линии
$xcArr1=Array(1000); //30 Z координата центра дуги
$ycArr1=Array(1000); //30 Y координата центра дуги
$rArr1=Array(1000); //40 Радиус дуги
$AnArr1=Array(1000); //50 Начальный угол дуги
$AkArr1=Array(1000); //51 Конечный угол дуги
$inkont=Array(100); //МАССИВ НОМЕРОВ ПРИМИТИВОВ НАРУЖНОГО КОНТУРА
$ivkont=Array(100); //МАССИВ НОМЕРОВ ПРИМИТИВОВ ВНУТРЕННЕГО КОНТУРА
//$lendxf=strlen($dxf); //УЗНАЕМ КОЛИЧЕСТВО СИМВОЛОВ В СТРОКЕ
$str_arr=explode("\n",$dxf);// РАЗБИВАЕМ НА МАССИВ СТРОК
$nst=count($str_arr);//УЗНАЕМ КОЛИЧЕСТВО СТРОК В МАССИВЕ
for($i=0;$i<$nst;$i++)//Kрутим до ENTITIES
if(strstr($str_arr[$i],"ENTITIES"))break;
///////////////////////////////////////////// ЧИТАЕМ В ENTITIES DXF //////////////////////////////////////////////
$entiti=$i;
$inp=0;//НОМЕР ПРИМИТИВА
for($i=$entiti;$i<$nst;$i++)//ЧИТАЕМ РАЗДЕЛ ENTITIES
{
if(strstr($str_arr[$i],"LINE"))
{
$npp[$inp]=$inp;
$namep[$inp]="LINE";
$vzcoord=0;
for($j=0;$j<19;$j++)//ПРОВЕРЯЕМ НАЛИЧИЕ КОРДИНАЫ Z
if(strstr($str_arr[$i+$j]," 30"))$vzcoord=1;
if(strstr($str_arr[$i+$j]," 30"))break;
for($j=0;$j<19;$j++)
if(strstr($str_arr[$i+$j]," 10"))break;
//echo "\n ".$j." ".$str_arr[$i+$j];
$xnArr[$inp]=$str_arr[$i+$j+1];
$ynArr[$inp]=$str_arr[$i+$j+3];
if($vzcoord==1)
{
$xkArr[$inp]=$str_arr[$i+$j+7];
$ykArr[$inp]=$str_arr[$i+$j+9];
}
if($vzcoord==0)
{
$xkArr[$inp]=$str_arr[$i+$j+5];
$ykArr[$inp]=$str_arr[$i+$j+7];
}
// echo " ".$npp[$inp]." ".$namep[$inp]." xn=".$xnArr[$inp]." yn=".$ynArr[$inp]." xk=".$xkArr[$inp]." yk=".$ykArr[$inp]." vzcoord=".$vzcoord;
//$inp++;//НОМЕР ПРИМИТИВА
}//if(strstr($str_arr[$i],"LINE"))
if(strstr($str_arr[$i],"ARC"))//echo "ARC";
{
$inp++;//НОМЕР ПРИМИТИВА
$npp[$inp]=$inp;
$namep[$inp]="ARC";
$vzcoord=0;
for($j=0;$j<19;$j++)//ПРОВЕРЯЕМ НАЛИЧИЕ КОРДИНАЫ Z
if(strstr($str_arr[$i+$j]," 30"))$vzcoord=1;
if(strstr($str_arr[$i+$j]," 30"))break;
for($j=0;$j<19;$j++)
if(strstr($str_arr[$i+$j]," 10"))break;
$xcArr[$inp]=$str_arr[$i+$j+1];
$ycArr[$inp]=$str_arr[$i+$j+3];
// echo $namep[$inp]." xc=".$xcArr[$inp]." yc=".$ycArr[$inp]." ";
if($vzcoord==1)
{
$rArr[$inp]=$str_arr[$i+$j+7];
$AnArr[$inp]=$str_arr[$i+$j+9];
$AkArr[$inp]=$str_arr[$i+$j+11];
}
if($vzcoord==0)
{
$rArr[$inp]=$str_arr[$i+$j+5];
$AnArr[$inp]=$str_arr[$i+$j+7];
$AkArr[$inp]=$str_arr[$i+$j+9];
}
if($ycArr[$inp]==0)$ycArr[$inp]=0.001;
}//if(strstr($str_arr[$i],"ARC"))
if(strstr($str_arr[$i],"VIEWPORT") || strstr($str_arr[$i],"ENDSEC"))break;
$inp++;//НОМЕР ПРИМИТИВА
}//for($i=$entiti;$i<$lendxf;$i++)//ЧИТАЕМ РАЗДЕЛ ENTITIES
//УБИРАЕМ ПУСТЫЕ ЯЧЕЙКИ МАССИВА
$ink=0;//НОМЕР ПРИМИТИВА КОНТУРА
for($i=0;$i<$inp;$i++)
{
if($xnArr[$i]!="" && $xnArr[$i]!=1000 || $xcArr[$i]!="" && $xcArr[$i]!=1000)
{
//echo " ---ink=".$ink." npp=".$npp[$i]." ".$namep[$i]." xn=".$xnArr[$i]." yn=".$ynArr[$i]." xk=".$xkArr[$i]." yk=".$ykArr[$i];
$npp1[$ink]=$npp[$i];
$namep1[$ink]=$namep[$i];
$xnArr1[$ink]=$xnArr[$i];
$ynArr1[$ink]=$ynArr[$i];
$znArr1[$ink]=$znArr[$i];
$xkArr1[$ink]=$xkArr[$i];
$ykArr1[$ink]=$ykArr[$i];
$zkArr1[$ink]=$zkArr[$i];
$xcArr1[$ink]=$xcArr[$i];
$ycArr1[$ink]=$ycArr[$i];
$rArr1[$ink]=$rArr[$i];
$AnArr1[$ink]=$AnArr[$i];
$AkArr1[$ink]=$AkArr[$i];
//echo " ink=".$ink." npp=".$npp1[$ink]." ".$namep1[$ink]." xn=".$xnArr1[$ink]." yn=".$ynArr1[$ink]." xk=".$xkArr1[$ink]." yk=".$ykArr1[$ink];
$ink++;//НОМЕР ПРИМИТИВА КОНТУРА
}
}
for($i=0;$i<$ink;$i++)
{
//echo $i." xn=".$xnArr1[$i]." xk=".$xkArr1[$i]." yn=".$ynArr1[$i]." yk=".$ykArr1[$i]." ";
// echo $namep1[$i]." xc=".$xcArr1[$i]." yc=".$ycArr1[$i]." ";
}
/*
//ПЕРЕПИСЫВАЕМ ДАННЫЕ В СТАРЫЙ МАССИВ
for($i=0;$i<$ink-1;$i++)
{
$npp[$i]=$npp1[$i];
$namep[$i]=$namep1[$i];
$xnArr[$i]=$xnArr1[$i];
$ynArr[$i]=$ynArr1[$i];
$znArr[$i]=$znArr1[$i];
$xkArr[$i]=$xkArr1[$i];
$ykArr[$i]=$ykArr1[$i];
$zkArr[$i]=$zkArr1[$i];
$xcArr[$i]=$xcArr1[$i];
$ycArr[$i]=$ycArr1[$i];
$rArr[$i]=$rArr1[$i];
$AnArr[$i]=$AnArr1[$i];
$AkArr[$i]=$AkArr1[$i];
}
for($i=0;$i<$ink-1;$i++)
echo $i." xn=".$xnArr[$i]." xk=".$xkArr[$i]." yn=".$ynArr[$i]." yk=".$ykArr[$i]." ";
*/
/*
/////////////////////////////////////////// ВЫДЕЛЯЕМ НАРУЖНЫЙ КОНТУР ///////////////////////////////////////////
$ink=0;//НОМЕР ПРИМИТИВА КОНТУРА
for($i=0;$i<$inp;$i++)
{
//if(namep[$i]=="LINE")
//if($ynArr[$i]>0 && $ykArr[$i]>0 && $xnArr[$i]!=$xkArr[$i])//ОПРЕДЕЛЯЕМ ПРИМИИВЫ РСПОЛЖЕННЫЕ ВЫШЕ ОСИ Х, И НЕ ВЕРИКАЛЬНЫЕ
if($ynArr[$i]>0 && $ykArr[$i]>0 )//ОПРЕДЕЛЯЕМ ПРИМИИВЫ РAСПОЛЖЕННЫЕ ВЫШЕ ОСИ Х
{
$inkont[$ink]=$i;// ЗАНОСИМ В МАССИВ
//echo " inkont=".$inkont[$ink];
//echo " ".$npp[$i]." ".$namep[$i]." xn=".$xnArr[$i]." yn=".$ynArr[$i]." xk=".$xkArr[$i]." yk=".$ykArr[$i];
$ink++;//НОМЕР ПРИМИТИВА КОНТУРА
}
//if(namep[$i]=="ARC")
if($rArr[$i]!="" && $ycArr[$i]>=0)
{
$inkont[$ink]=$i;// ЗАНОСИМ В МАССИВ
$ink++;//НОМЕР ПРИМИТИВА КОНТУРА
}
}//for($i=0;$i<$inp;$i++)
*/
////////////// ПЕРЕОПРЕДЕЛЯЕМ НАЧАЛЬНЫЕ И КОНЕЧНЫЕ КООРДИНТЫ ТОЧЕК, ДЕЛАЕМ ВСЕ СЛЕВА НАПРАВО ////////////////////
//$ink=0;//НОМЕР ПРИМИТИВА КОНТУРА
/*
for($i=0;$i<$ink;$i++)
{
if($xnArr[$i]>$xkArr[$i])
{
$rx=$xkArr[$i];
$ry=$ykArr[$i];
$xnArr[$i]=$xkArr[$i];
$ynArr[$i]=$ykArr[$i];
$xkArr[$i]=$rx;
$ykArr[$i]=$ry;
}
echo " ink=".$ink." npp=".$npp[$i]." ".$namep[$i]." xn=".$xnArr[$i]." yn=".$ynArr[$i]." xk=".$xkArr[$i]." yk=".$ykArr[$i];
}//for($i=0;$i<$ink;$i++)
*/
//for($i=0;$i<$ink;$i++)
//echo " ink=".$ink." npp=".$npp[$i]." ".$namep[$i]." xn=".$xnArr[$i]." yn=".$ynArr[$i]." xk=".$xkArr[$i]." yk=".$ykArr[$i];
////////////////////// НАХОДИМ МАКСИМАЛЬНЫЕ И МИНИМАЛЬНЫЕ ЗНАЧЕНИЯ X, Y, Z //////////
$xmin=11111;
$ymin=11111;
$xmax=-11111;
$ymax=-11111;
$ixmax=0;
for($i=0;$i<$ink;$i++)
{
if($xnArr[$i]!=$xkArr[$i])
{
if($xmin>$xnArr[$i]*1)$xmin=$xnArr[$i]*1;
if($xmin>$xkArr[$i]*1)$xmin=$xkArr[$i]*1;
if($xmax<$xnArr[$i]*1){$xmax=$xnArr[$i]*1; $ixmax=$i;}
if($xmax<$xkArr[$i]*1){$xmax=$xkArr[$i]*1; $ixmax=$i;}
if($ymin>$ynArr[$i]*1)$ymin=$ynArr[$i]*1;
if($ymin>$ykArr[$i]*1)$ymin=$ykArr[$i]*1;
if($ymax<$ynArr[$i]*1)$ymax=$ynArr[$i]*1;
if($ymax<$ykArr[$i]*1)$ymax=$ykArr[$i]*1;
//document.writeln(" xnArr[i]="+xnArr[i]+"xkArr[i]="+xkArr[i]);
}
}
/////////////////// НАХОДИМ МАССШТАБ ИЗОБРАЖЕНИЯ
$M=1;
if($xmax-$xmin>$ymax-$ymin)
$M=Math.floor(580/$xmax*10)/10;
if($xmax-$xmin<=$ymax*2)
$M=Math.floor(580/($ymax*2)*10)/10;
// ПРОВЕРЯЕМ НАЛИЧИЕ ВНУТРЕННЕГО КОНТУРА НА ТОРЦЕ
$iyvkont=0;
for($i=0;$i<$ink-1;$i++)
if($ykArr[$i]*1>0 && $xkArr[$i]*1==$xkArr[$ixmax]*1 && $ykArr[$i]*1!=$ykArr[$ixmax]*1)$iyvkont=$i;
//КОРРЕКТИРУЕМ ЗНАЧЕНИЕ ПО Х
for($i=0;$i<$ink-1;$i++)
{
$xnArr[$i]=$xnArr[$i]-$xmin;
$xkArr[$i]=$xkArr[$i]-$xmin;
$xcArr[$i]=$xcArr[$i]-$xmin;
}
/////////////////////////////////////////
//////////////////// СОРТИРОВКА МАССИВА
/*
$ie=0;
// ЗАПИСЫВАЕМ НЕ ПУСТЫЕ ЗНАЧЕНИЯ В НОВЫЙ МАССИВ
for($i=1;$i<$inp;$i++)
{
if($xnArr[$i]!="")
{
$npp1[$ie]=$npp[$i];
$namep1[$ie]=$namep[$i];
$xnArr1[$ie]=$xnArr[$i];
$ynArr1[$ie]=$ynArr[$i];
$znArr1[$ie]=$znArr[$i];
$xkArr1[$ie]=$xkArr[$i];
$ykArr1[$ie]=$ykArr[$i];
$zkArr1[$ie]=$zkArr[$i];
$xcArr1[$ie]=$xcArr[$i];
$ycArr1[$ie]=$ycArr[$i];
$rArr1[$ie]=$rArr[$i];
$AnArr1[$ie]=$AnArr[$i];
$AkArr1[$ie]=$AkArr[$i];
$ie++;
}
}
*/
/*
echo " ДО СОРТИРОВКИ ";
for($i=0;$i<$ink;$i++)
echo $i." xn=".$xnArr1[$i]." xk=".$xkArr1[$i]." yn=".$ynArr1[$i]." yk=".$ykArr1[$i]." ";
*/
$xm1=11111;
//echo "ink=".$ink." inp=".$inp." xm1=".$xm1;
for($j=0;$j<$ink;$j++)
{
for($i=0;$i<$ink-1;$i++)
{
/*
if($xnArr1[$i]=$xm1-1 && $npp1[$i]!=-1)
{
$xm1=$xnArr1[$i];
$ixm1=$i;//запоминаем номер элемента в массиве
$veqv=1;
}
if($xnArr1[$i]<$xm1 && $npp1[$i]!=-1 && $veqv!=1)
{
$xm1=$xnArr1[$i];
$ixm1=$i;//запоминаем номер элемента в массиве
}
*/
}//for($i=0;$i<$ink-1;$i++)
//echo " xm1=".$xm1, " ixm1=".$ixm1." i=".$i;
$veqv=0;
$npp1[$ixm1]=-1;
$xm1=11111;
$ixm1=$j;
$npp[$j]=$npp1[$ixm1];
$namep[$j]=$namep1[$ixm1];
$xnArr[$j]=$xnArr1[$ixm1];
$ynArr[$j]=$ynArr1[$ixm1];
$znArr[$j]=$znArr1[$ixm1];
$xkArr[$j]=$xkArr1[$ixm1];
$ykArr[$j]=$ykArr1[$ixm1];
$zkArr[$j]=$zkArr1[$ixm1];
$xcArr[$j]=$xcArr1[$ixm1];
$ycArr[$j]=$ycArr1[$ixm1];
$rArr[$j]=$rArr1[$ixm1];
$AnArr[$j]=$AnArr1[$ixm1];
$AkArr[$j]=$AkArr1[$ixm1];
//echo $j." xn=".$xnArr[$j]." xk=".$xkArr[$j]." yn=".$ynArr[$j]." yk=".$ykArr[$j]." ";
}//for($j=0;$j<$ink;$j++)
//echo " ПОСЛЕ СОРТИРОВКИ ";
//for($i=0;$i<$ink;$i++)
//echo $i." xn=".$xnArr[$i]." xk=".$xkArr[$i]." yn=".$ynArr[$i]." yk=".$ykArr[$i]." ie=".$ie." ";
//////////////////// СОРТИРОВКА МАССИВА КОНЕЦ
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////// РАСПОЗНАЕМ КТЭ ///////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$nkte=Array(100); //МАССИВ РАСПОЗНАННЫХ КТЭ
//НАХОЖДЕНИЕ КАНАВОК НА ЦИЛИНДРАХ
$ie=0;
for($i=0;$i<$ink;$i++)
{
if($ykArr[$i]>0)
for($j=0;$j<$ink;$j++)
{
//if($ykArr[$i]==$ykArr[$j] && $xkArr[$i]!=$xkArr[$j])echo " КОНКАТЕНАЦИЯ";
//ДЕЛАЕМ ЦИЛИНДР СПЛОШНОЙ БЕЗ КАНАВКИ
if($ykArr[$i]==$ykArr[$j] && $xkArr[$i]!=$xkArr[$j])//echo "КОНКАТЕНАЦИЯ";
{
$npp1[$ie]=$npp[$i];
$namep1[$ie]="КОНКАТЕНАЦИЯ";
$xnArr1[$ie]=$xnArr[$i];
$ynArr1[$ie]=$ynArr[$i];
$znArr1[$ie]=$znArr[$i];
$xkArr1[$ie]=$xkArr[$j];
$ykArr1[$ie]=$ykArr[$j];
$zkArr1[$ie]=$zkArr[$i];
$xcArr1[$ie]=$xcArr[$i];
$ycArr1[$ie]=$ycArr[$i];
$rArr1[$ie]=$rArr[$i];
$AnArr1[$ie]=$AnArr[$i];
$AkArr1[$ie]=$AkArr[$i];
$ie++;
}
}//for($j=0;$j<$ink;$j++)
//КАНАВКА
if($ykArr[$i]>0)
for($j=0;$j<$ink;$j++)
{
//if($xnArr[$i]<=$xnArr[$j] && $xkArr[$i]>=$xkArr[$j])echo " КАНАВКА";
if($xnArr[$i]<=$xnArr[$j] && $xkArr[$i]>=$xkArr[$j])//echo "КАНАВКА";
{
$npp1[$ie]=$npp[$i];
$namep1[$ie]="КАНАВКА";
$xnArr1[$ie]=$xnArr[$i];
$ynArr1[$ie]=$ynArr[$i];
$znArr1[$ie]=$znArr[$i];
$xkArr1[$ie]=$xkArr[$j];
$ykArr1[$ie]=$ykArr[$j];
$zkArr1[$ie]=$zkArr[$i];
$xcArr1[$ie]=$xcArr[$i];
$ycArr1[$ie]=$ycArr[$i];
$rArr1[$ie]=$rArr[$i];
$AnArr1[$ie]=$AnArr[$i];
$AkArr1[$ie]=$AkArr[$i];
$ie++;
}
}//for($j=0;$j<$ink;$j++)
}//for($i=0;$i<$ink;$i++)
//for($i=0;$i<$ink;$i++)
// echo $namep1[$i]."<--- ";
for($i=0;$i<$ink;$i++)
{
if($namep[$i]=="LINE")
{
if($ynArr[$i]==$ykArr[$i])//echo "ЦИЛИНДР";
{
$icyl++;//СЧИТАЕМ ЦИЛИНДРЫ
$nkte[$i]="cylinder ".$icyl;//ЦИЛИНДР
if($icyl==1)
{
$nkte1=1; //НОМЕР КТЭ В ПРОФИЛЕ
$D_cyl1=$ykArr[$i]*2; //Диаметр цилиндра
$L_cyl1=$xkArr[$i]-$xnArr[$i]; //Длина цилиндра
}//if($icyl==1)
if($icyl==2)
{
$nkte2=2; //НОМЕР КТЭ В ПРОФИЛЕ
$D_cyl2=$ykArr[$i]*2; //Диаметр цилиндра
$L_cyl2=($xkArr[$i]-$xnArr[$i])+$ll_cyl2; //Длина цилиндра
}//if($icyl==2)
if($icyl==3)
{
$nkte3=3; //НОМЕР КТЭ В ПРОФИЛЕ
$D_cyl3=$ykArr[$i]*2; //Диаметр цилиндра
$L_cyl3=$xkArr[$i]-$xnArr[$i]; //Длина цилиндра
}//if($icyl==3)
if($icyl==4)
{
$nkte4=4; //НОМЕР КТЭ В ПРОФИЛЕ
$D_cyl4=$ykArr[$i]*2; //Диаметр цилиндра
$L_cyl4=$xkArr[$i]-$xnArr[$i]; //Длина цилиндра
}//if($icyl==4)
}//if($ynArr[$i]==$ykArr[$i])//echo "ЦИЛИНДР";
//---------------------------------------------------------------------------------------------------
if($ynArr[$i]!=$ykArr[$i] && round($xnArr[$i])==round($xkArr[$i]))
{
$ivlin++;//СЧИТАЕМ ВЕРТИКАЛЬНЫЕ ЛИНИИ
$nkte[$i]="vertikalline";//ВЕРТИКАЛЬНАЯ ЛИНИЯ
}
//----------------------------------------------------------------------------------------------------
//if($nkte[$i-1]=="cylinder")//ЦИЛИНДР
if($nkte[$i]!="vertikalline" && $nkte[$i-1]!="vertikalline")//ВЕРТИКАЛЬНАЯ ЛИНИЯ
if($ynArr[$i]!=$ykArr[$i] && $xnArr[$i]!=$xkArr[$i])//echo "КОНУС СПРАВА";
{
$iconr++;//СЧИТАЕМ КОНУСЫ
$nkte[$i]="cone right ".$iconr;//КОНУС СПРАВА
//$namep[$i]="ЦИЛИНДР";
if($icyl==1)
{
$ra_cyl1=$ykArr[$i]*2;
$rl_cyl1=$xkArr[$i]-$xnArr[$i];
$d_cyl1="on";
$L_cyl1=$L_cyl1+$rl_cyl1; //Длина цилиндра
}//if($icyl==1)
if($icyl==2)
{
$ra_cyl2=$ykArr[$i]*2;
$rl_cyl2=$xkArr[$i]-$xnArr[$i];
$d_cyl2="on";
$L_cyl2=$L_cyl2+$rl_cyl2; //Длина цилиндра
}//if($icyl==2)
if($icyl==3)
{
$ra_cyl3=$ykArr[$i]*2;
$rl_cyl3=$xkArr[$i]-$xnArr[$i];
$d_cyl3="on";
$L_cyl3=$L_cyl3+$rl_cyl3; //Длина цилиндра
}//if($icyl==3)
if($icyl==4)
{
$ra_cyl4=$ykArr[$i]*2;
$rl_cyl4=$xkArr[$i]-$xnArr[$i];
$d_cyl4="on";
$L_cyl4=$L_cyl4+$rl_cyl4; //Длина цилиндра
}//if($icyl==4)
}//if($ynArr[$i]!=$ykArr[$i])//echo "КОНУС";
//-----------------------------------------------------------------------------------------
if($nkte[$i-1]=="vertikalline")//ВЕРТИКАЛЬНАЯ ЛИНИЯ
if($ynArr[$i]!=$ykArr[$i] && round($xnArr[$i])!=$xkArr[$i])//echo "КОНУС СЛЕВА";
{
$iconl++;//СЧИТАЕМ КОНУСЫ
$nkte[$i]="cone left ".$iconl;//КОНУС СЛЕВА
if($icyl==1)
{
$D_cyl2=$ykArr[$i]*2; //Диаметр цилиндра
$L_cyl2=($xkArr[$i]-$xnArr[$i]); //Длина цилиндра, если нет цилиндрической части
$ll_cyl2=($xkArr[$i]-$xnArr[$i]);
$la_cyl2=(atan((($ynArr[$i]-$ykArr[$i])/2)/$ll_cyl2))/0.0174533;//$la_cyl1 - СЛЕВА КОНУС ЗАДАН ДИАМЕТРОМ
}//if($icyl==2)
if($icyl==3)
{
$D_cyl3=$ykArr[$i]*2; //Диаметр цилиндра
$L_cyl3=$xkArr[$i]-$xnArr[$i]; //Длина цилиндра
$ll_cyl3=$xkArr[$i]-$xnArr[$i];
$la_cyl3=(atan((($ynArr[$i]-$ykArr[$i])/2)/$ll_cyl3))/0.0174533;//$la_cyl1 - СЛЕВА КОНУС ЗАДАН ДИАМЕТРОМ
}//if($icyl==3)
if($icyl==4)
{
$D_cyl4=$ykArr[$i]*2; //Диаметр цилиндра
$L_cyl4=$xkArr[$i]-$xnArr[$i]; //Длина цилиндра
$ll_cyl4=$xkArr[$i]-$xnArr[$i];
$la_cyl4=(atan((($ynArr[$i]-$ykArr[$i])/2)/$ll_cyl4))/0.0174533;//$la_cyl1 - СЛЕВА КОНУС ЗАДАН ДИАМЕТРОМ
}//if($icyl==4)
}//if($ynArr[$i]!=$ykArr[$i])//echo "КОНУС СЛЕВА";
}//if($namep[$i]=="LINE")
//====================================================================================================
//====================================================================================================
if($namep[$i]=="ARC")
{
//----------------------------------------------------------------------------------------------------
if($nkte[$i]!="vertikalline" && $nkte[$i-1]!="vertikalline")//ВЕРТИКАЛЬНАЯ ЛИНИЯ
if($xcArr[$i+1]==$xkArr[$i])//СКРУГЛЕНИЕ СПРАВА
{
$ifilletr++;//СЧИТАЕМ СКРУГЛЕНИЕ СПРАВА
$nkte[$i]="fillet right ".$ifilletr;//СКРУГЛЕНИЕ СПРАВА
if($icyl==1)$rr_cyl1=trim($rArr[$i]); //РАДИУС СКРУГЛЕНИЯ СПРАВА
if($icyl==2)$rr_cyl2=trim($rArr[$i]);
if($icyl==3)$rr_cyl3=trim($rArr[$i]);
if($icyl==4)$rr_cyl4=trim($rArr[$i]);
}//if($xcArr[$i+1]==$xkArr[$i])//СКРУГЛЕНИЕ СПРАВА
//-----------------------------------------------------------------------------------------
//if($nkte[$i-1]=="vertikalline")echo $namep[$i]." ".$xcArr[$i]." = ".$xnArr[$i+1];
if($nkte[$i-1]=="vertikalline")//ВЕРТИКАЛЬНАЯ ЛИНИЯ
if($xcArr[$i]==$xnArr[$i+1])//СКРУГЛЕНИЕ СЛЕВА
{
$ifilletl++;//СЧИТАЕМ СКРУГЛЕНИЕ СЛЕВА
$nkte[$i]="fillet left ".$ifilletl;//СКРУГЛЕНИЕ СЛЕВА
$icyl++; //БЕРЕМ ДИАМЕТР ИЗ СЛЕДУЮЩЕГО ЦИЛЛИНДРА, КОТОРОМУ ПРИНАДЛЕЖИТ ГАЛТЕЛЬ
//echo $nkte[$i]." icyl=".$icyl." ";
if($icyl==1)$lr_cyl1=trim($rArr[$i]); //РАДИУС СКРУГЛЕНИЯ СПРАВА
if($icyl==2)$lr_cyl2=trim($rArr[$i]);
if($icyl==3)$lr_cyl3=trim($rArr[$i]);
if($icyl==4)$lr_cyl4=trim($rArr[$i]);
//echo "icyl=".$icyl." yn=".$ynArr[$i]." yk=".$ykArr[$i]." lr_cyl3=".$lr_cyl3." ";
$icyl--;//ВОЗВРАЩАЕМ СЧЕТЧИКУ ПРЕЖНЕЕ ЗНАЧЕНИЕ
}//if($xcArr[$i]==$xnArr[$i+1])//СКРУГЛЕНИЕ СЛЕВА
}//if($namep[$i]=="ARC")
//====================================================================================================
}//for($i=0;$i<$ink;$i++
//////////////////////// END FOR END FOR END FOR END FOR END FOR END FOR END FOR END FOR END FOR END FOR ///////////
//for($i=0;$i<$ink;$i++)
// echo $i." nkte=".$nkte[$i]." xn=".$xnArr[$i]." yn=".$ynArr[$i]." xk=".$xkArr[$i]." yk=".$ykArr[$i]." ";
//for($i=0;$i<$ink;$i++)
// echo $namep[$i]." xc=".$xcArr[$i]." yc=".$ycArr[$i]." ";
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////// ЗАПИСЫВАЕМ В ФАЙЛ РАСПОЗНАННЫЕ КТЭ И ИХ ПАРАМЕТРЫ /////////////////////////////////
//НАХОДИМ ДИАМЕТР НАИБОЛЬШЕГО ЦИЛИНДРА И ЗАГОТОВКИ
if($D_cyl1>$D_cyl2 && $D_cyl1>$D_cyl3 && $D_cyl1>$D_cyl4)$D_cyl=$D_cyl1;
if($D_cyl2>$D_cyl1 && $D_cyl2>$D_cyl3 && $D_cyl2>$D_cyl4)$D_cyl=$D_cyl2;
if($D_cyl3>$D_cyl1 && $D_cyl3>$D_cyl2 && $D_cyl3>$D_cyl4)$D_cyl=$D_cyl3;
if($D_cyl4>$D_cyl1 && $D_cyl4>$D_cyl2 && $D_cyl4>$D_cyl3)$D_cyl=$D_cyl4;
//ПАРАМЕТРЫ ЗАГОТОВКИ, ЕСЛИ НЕ ВВЕДЕНЫ
if($D_zagot=="")
{
$D_zagot=$D_cyl*1.05;
$L_zagot=$B_rezec/2+$L_cyl1+$L_cyl2+$L_cyl3+$L_cyl4+1;
}
$f = fopen("param.txt","w");
fwrite($f,$D_zagot."\n"); //Диаметр заготовки
fwrite($f,$L_zagot."\n"); //Длина заготовки
//РЕЗЕЦ
fwrite($f,$H_rezec."\n"); //Высота
fwrite($f,$B_rezec."\n"); //Ширина
//ЦИЛИНДР 1
fwrite($f,$nkte1."\n");
fwrite($f,$D_cyl1."\n");
fwrite($f,$L_cyl1."\n");
fwrite($f,$lr_cyl1."\n");
fwrite($f,$ll_cyl1."\n");
fwrite($f,$la_cyl1."\n");
fwrite($f,$rr_cyl1."\n");
fwrite($f,$rl_cyl1."\n");
fwrite($f,$ra_cyl1."\n");
fwrite($f,$q_cyl1."\n");
fwrite($f,$s_cyl1."\n");
fwrite($f,$d_cyl1."\n");
//ЦИЛИНДР 2
fwrite($f,$nkte2."\n");
fwrite($f,$D_cyl2."\n");
fwrite($f,$L_cyl2."\n");
fwrite($f,$lr_cyl2."\n");
fwrite($f,$ll_cyl2."\n");
fwrite($f,$la_cyl2."\n");
fwrite($f,$rr_cyl2."\n");
fwrite($f,$rl_cyl2."\n");
fwrite($f,$ra_cyl2."\n");
fwrite($f,$q_cyl2."\n");
fwrite($f,$s_cyl2."\n");
fwrite($f,$d_cyl2."\n");
//ЦИЛИНДР 3
fwrite($f,$nkte3."\n");
fwrite($f,$D_cyl3."\n");
fwrite($f,$L_cyl3."\n");
fwrite($f,$lr_cyl3."\n");
fwrite($f,$ll_cyl3."\n");
fwrite($f,$la_cyl3."\n");
fwrite($f,$rr_cyl3."\n");
fwrite($f,$rl_cyl3."\n");
fwrite($f,$ra_cyl3."\n");
fwrite($f,$q_cyl3."\n");
fwrite($f,$s_cyl3."\n");
fwrite($f,$d_cyl3."\n");
//ЦИЛИНДР 4
fwrite($f,$nkte4."\n");
fwrite($f,$D_cyl4."\n");
fwrite($f,$L_cyl4."\n");
fwrite($f,$lr_cyl4."\n");
fwrite($f,$ll_cyl4."\n");
fwrite($f,$la_cyl4."\n");
fwrite($f,$rr_cyl4."\n");
fwrite($f,$rl_cyl4."\n");
fwrite($f,$ra_cyl4."\n");
fwrite($f,$q_cyl4."\n");
fwrite($f,$s_cyl4."\n");
fwrite($f,$d_cyl4."\n");
//КАНАВКА 1
fwrite($f,$nkte10."\n");
fwrite($f,$L_grv10."\n");
fwrite($f,$k_grv10."\n");
fwrite($f,$h_grv10."\n");
fwrite($f,$kr_grv10."\n");
fwrite($f,$n_grv10."\n");
fwrite($f,$z_grv10."\n");
fwrite($f,$lr_grv10."\n");
fwrite($f,$ll_grv10."\n");
fwrite($f,$la_grv10."\n");
fwrite($f,$rr_grv10."\n");
fwrite($f,$rl_grv10."\n");
fwrite($f,$ra_grv10."\n");
//КАНАВКА 2
fwrite($f,$nkte11."\n");
fwrite($f,$L_grv11."\n");
fwrite($f,$k_grv11."\n");
fwrite($f,$h_grv11."\n");
fwrite($f,$kr_grv11."\n");
fwrite($f,$n_grv11."\n");
fwrite($f,$z_grv11."\n");
fwrite($f,$lr_grv11."\n");
fwrite($f,$ll_grv11."\n");
fwrite($f,$la_grv11."\n");
fwrite($f,$rr_grv11."\n");
fwrite($f,$rl_grv11."\n");
fwrite($f,$ra_grv11."\n");
//КАНАВКА 3
fwrite($f,$nkte12."\n");
fwrite($f,$L_grv12."\n");
fwrite($f,$k_grv12."\n");
fwrite($f,$h_grv12."\n");
fwrite($f,$kr_grv12."\n");
fwrite($f,$n_grv12."\n");
fwrite($f,$z_grv12."\n");
fwrite($f,$lr_grv12."\n");
fwrite($f,$ll_grv12."\n");
fwrite($f,$la_grv12."\n");
fwrite($f,$rr_grv12."\n");
fwrite($f,$rl_grv12."\n");
fwrite($f,$ra_grv12."\n");
//КАНАВКА 4
fwrite($f,$nkte13."\n");
fwrite($f,$L_grv13."\n");
fwrite($f,$k_grv13."\n");
fwrite($f,$h_grv13."\n");
fwrite($f,$kr_grv13."\n");
fwrite($f,$n_grv13."\n");
fwrite($f,$z_grv13."\n");
fwrite($f,$lr_grv13."\n");
fwrite($f,$ll_grv13."\n");
fwrite($f,$la_grv13."\n");
fwrite($f,$rr_grv13."\n");
fwrite($f,$rl_grv13."\n");
fwrite($f,$ra_grv13."\n");
//==============================================================
//ОТВЕРСТИЕ-1
fwrite($f,$nkte30."\n");
fwrite($f,$D_hole30."\n");
fwrite($f,$L_hole30."\n");
fwrite($f,$k_hole30."\n");
fwrite($f,$r1_hole30."\n");
fwrite($f,$l1_hole30."\n");
fwrite($f,$a1_hole30."\n");
fwrite($f,$r2_hole30."\n");
fwrite($f,$l2_hole30."\n");
fwrite($f,$a2_hole30."\n");
fwrite($f,$q_hole30."\n");
fwrite($f,$s_hole30."\n");
fwrite($f,$d_hole30."\n");
//ОТВЕРСТИЕ-2
fwrite($f,$nkte31."\n");
fwrite($f,$D_hole31."\n");
fwrite($f,$L_hole31."\n");
fwrite($f,$k_hole31."\n");
fwrite($f,$r1_hole31."\n");
fwrite($f,$l1_hole31."\n");
fwrite($f,$a1_hole31."\n");
fwrite($f,$r2_hole31."\n");
fwrite($f,$l2_hole31."\n");
fwrite($f,$a2_hole31."\n");
fwrite($f,$q_hole31."\n");
fwrite($f,$s_hole31."\n");
fwrite($f,$d_hole31."\n");
//ОТВЕРСТИЕ-3
fwrite($f,$nkte32."\n");
fwrite($f,$D_hole32."\n");
fwrite($f,$L_hole32."\n");
fwrite($f,$k_hole32."\n");
fwrite($f,$r1_hole32."\n");
fwrite($f,$l1_hole32."\n");
fwrite($f,$a1_hole32."\n");
fwrite($f,$r2_hole32."\n");
fwrite($f,$l2_hole32."\n");
fwrite($f,$a2_hole32."\n");
fwrite($f,$q_hole32."\n");
fwrite($f,$s_hole32."\n");
fwrite($f,$d_hole32."\n");
//ОТВЕРСТИЕ-4
fwrite($f,$nkte33."\n");
fwrite($f,$D_hole33."\n");
fwrite($f,$L_hole33."\n");
fwrite($f,$k_hole33."\n");
fwrite($f,$r1_hole33."\n");
fwrite($f,$l1_hole33."\n");
fwrite($f,$a1_hole33."\n");
fwrite($f,$r2_hole33."\n");
fwrite($f,$l2_hole33."\n");
fwrite($f,$a2_hole33."\n");
fwrite($f,$q_hole33."\n");
fwrite($f,$s_hole33."\n");
fwrite($f,$d_hole33."\n");
//==============================================================
//КАНАВКА-5
fwrite($f,$nkte20."\n");
fwrite($f,$L_grv20."\n");
fwrite($f,$k_grv20."\n");
fwrite($f,$h_grv20."\n");
fwrite($f,$kr_grv20."\n");
fwrite($f,$n_grv20."\n");
fwrite($f,$z_grv20."\n");
fwrite($f,$lr_grv20."\n");
fwrite($f,$ll_grv20."\n");
fwrite($f,$la_grv20."\n");
fwrite($f,$rr_grv20."\n");
fwrite($f,$rl_grv20."\n");
fwrite($f,$ra_grv20."\n");
//КАНАВКА-6
fwrite($f,$nkte21."\n");
fwrite($f,$L_grv21."\n");
fwrite($f,$k_grv21."\n");
fwrite($f,$h_grv21."\n");
fwrite($f,$kr_grv21."\n");
fwrite($f,$n_grv21."\n");
fwrite($f,$z_grv21."\n");
fwrite($f,$lr_grv21."\n");
fwrite($f,$ll_grv21."\n");
fwrite($f,$la_grv21."\n");
fwrite($f,$rr_grv21."\n");
fwrite($f,$rl_grv21."\n");
fwrite($f,$ra_grv21."\n");
//КАНАВКА-7
fwrite($f,$nkte22."\n");
fwrite($f,$L_grv22."\n");
fwrite($f,$k_grv22."\n");
fwrite($f,$h_grv22."\n");
fwrite($f,$kr_grv22."\n");
fwrite($f,$n_grv22."\n");
fwrite($f,$z_grv22."\n");
fwrite($f,$lr_grv22."\n");
fwrite($f,$ll_grv22."\n");
fwrite($f,$la_grv22."\n");
fwrite($f,$rr_grv22."\n");
fwrite($f,$rl_grv22."\n");
fwrite($f,$ra_grv22."\n");
//КАНАВКА-8
fwrite($f,$nkte23."\n");
fwrite($f,$L_grv23."\n");
fwrite($f,$k_grv23."\n");
fwrite($f,$h_grv23."\n");
fwrite($f,$kr_grv23."\n");
fwrite($f,$n_grv23."\n");
fwrite($f,$z_grv23."\n");
fwrite($f,$lr_grv23."\n");
fwrite($f,$ll_grv23."\n");
fwrite($f,$la_grv23."\n");
fwrite($f,$rr_grv23."\n");
fwrite($f,$rl_grv23."\n");
fwrite($f,$ra_grv23."\n");
//=================================================================
///////////////////////////////////////////// РЕЖИМЫ РЕЗАНИЯ, ПРИПУСКИ //////////////////////////////////
//ЧЕРНОВАЯ ОБРАТОКА НАРУЖНОГО КОНТУРА
fwrite($f,$h_chern."\n"); //Глубина прохода
fwrite($f,$shpindl_chern."\n"); //Обороты шпинделя
fwrite($f,$fedrat_chern."\n"); //Подача
//ЧИСТОВАЯ ОБРАТОКА НАРУЖНОГО КОНТУРА
fwrite($f,$h_chist."\n"); //Глубина чистового прохода
fwrite($f,$shpindl_chist."\n"); //Обороты шпинделя
fwrite($f,$fedrat_chist."\n"); //Подача
//СВЕРЛЕНИЕ ОТВЕРСТИЯ
fwrite($f,$c_sverlo."\n"); //Диаметр цетровочного сверла
fwrite($f,$d_sverlo."\n"); //Диаметр сверла
fwrite($f,$shpindl_sverlo."\n"); //Обороты шпинделя
fwrite($f,$fedrat_sverlo."\n"); //Подача
//РАСТОЧКА ОТВЕРСТИЯ
fwrite($f,$h_rastoch."\n"); //Глубина чистового прохода
fwrite($f,$shpindl_rastoch."\n"); //Обороты шпинделя
fwrite($f,$fedrat_rastoch."\n"); //Подача
//ПОДРЕЗКА ТОРЦА
fwrite($f,$shpindl_groove."\n"); //Обороты шпинделя
fwrite($f,$fedrat_groove."\n"); //Подача
//НАРЕЗАНИЕ КАНАВКИ
fwrite($f,$width_groove."\n"); //Ширина режущей части резца
fwrite($f,$shpindl_groove."\n"); //Обороты шпинделя
fwrite($f,$fedrat_groove."\n"); //Подача
//НАРЕЗАНИЕ РЕЗЬБЫ
fwrite($f,$h_rez_chern."\n"); //Глубина чернового прохода
fwrite($f,$h_rez_chist."\n"); //Глубина чистового прохода
fwrite($f,$shpindl_thread."\n"); //Обороты шпинделя
fwrite($f,$fedrat_thread."\n"); //Подача
//ОТРЕЗКА ДЕТАЛИ
fwrite($f,$width_otrez."\n"); //Ширина режущей части резца
fwrite($f,$shpindl_otrez."\n"); //Обороты шпинделя
fwrite($f,$fedrat_otrez."\n"); //Подача
//КООРДИНАТЫ НАЧАЛЬНОЙ ТОЧКИ
fwrite($f,$xnp."\n");
fwrite($f,$znp."\n");
/*
fwrite($f,$mater."\n"); //Материал детали
//ДИАМЕТР ОБРАБОТКИ
fwrite($f,$D_obr."\n");
fclose($f);
*/
//РЕЖИМЫ РЕЗАНИЯ
$spindl=2000;
$fedrat=0.2;
$hsloy=1;
//МАТЕРИАЛ ДЕТАЛИ
if($mater=="mag"||strstr($mater,"mag"))
{
$RO=1.8; //Удельная плотность магниевых сплавов
$KR=1; //коэффициент резания
$statrmater="Сплав магния";
}
if($mater=="alu"||strstr($mater,"alu"))
{
$RO=2.7; //Удельная плотность алюминиевых сплавов
$KR=1.3; //коэффициент резания
$statrmater="Сплав алюминия";
}
if($mater=="lat"||strstr($mater,"lat"))
{
$RO=8.5; //Удельная плотность латуни
$KR=1.5; //коэффициент резания
$statrmater="Латунь";
}
if($mater=="bro"||strstr($mater,"bro"))
{
$RO=9; //Удельная плотность бронзы
$KR=1.7; //коэффициент резания
$statrmater="Бронза";
}
if($mater=="chu"||strstr($mater,"chu"))
{
$RO=6.5; //Удельная плотность чугуна
$KR=2; //коэффициент резания
$statrmater="Чугун";
}
if($mater=="stu"||strstr($mater,"stu"))
{
$RO=7.7; //Удельная плотность углеродистой стали
$KR=2.5; //коэффициент резания
$statrmater="Сталь углеродистая";
}
if($mater=="stn"||strstr($mater,"stn"))
{
$RO=7.7; //Удельная плотность низколегированной стали
$KR=2.7; //коэффициент резания
$statrmater="Сталь низколегированная";
}
if($mater=="stv"||strstr($mater,"stv"))
{
$RO=7.7; //Удельная плотность высоколегированной стали
$KR=3; //коэффициент резания
$statrmater="Сталь высоколегированная";
}
$spindl=round($spindl/$KR);
$fedrat=round($fedrat/$KR*100)/100;
$hsloy=round($hsloy/$KR*100)/100;
fwrite($f,$mater."\n"); //Материал детали
fwrite($f,$RO."\n"); ////Удельная плотность
fwrite($f,$spindl."\n"); //Обороты
fwrite($f,$fedrat."\n"); //Подача
fwrite($f,$hsloy."\n"); //Губина снимаемого слоя
//ДИАМЕТР ОБРАБОТКИ
fwrite($f,$D_obr."\n");
fclose($f);
//////////////////////////////////////////////////////////////////////
//ВИДЫ ОБРАБОТКИ
$chern=$_POST['chern'];
$chist=$_POST['chist'];
$vkont=$_POST['vkont'];
$proch=$_POST['proch'];
$stat="";
$stat=$stat." МАТЕРИАЛ ЗАГОТОВКИ: ".$statrmater."\n";
$maszag=3.1415 * $D_zagot/2 * $D_zagot/2 * $L_zagot * $RO;
$maszag=round($maszag/1000)/1000;
$stat=$stat."Масса заготовки: ".$maszag." кг.\n";
if($nkte1!="") //ЦИЛИНДР 1
$masdet=3.1415 * $D_cyl1/2 * $D_cyl1/2 * $L_cyl1 * $RO;
if($nkte2!="") //ЦИЛИНДР 2
$masdet+=3.1415 * $D_cyl2/2 * $D_cyl2/2 * $L_cyl2 * $RO;
if($nkte3!="") //ЦИЛИНДР 3
$masdet+=3.1415 * $D_cyl3/2 * $D_cyl3/2 * $L_cyl3 * $RO;
if($nkte4!="") //ЦИЛИНДР 4
$masdet+=3.1415 * $D_cyl4/2 * $D_cyl4/2 * $L_cyl4 * $RO;
$masdet=round($masdet/1000)/1000;
$stat=$stat."Масса детали: ".$masdet." кг.\n";
$masstr=$maszag-$masdet;
$stat=$stat."Отход стружки: ".$masstr." кг.\n";
//ЗАПИСЬ СТАТИСТИКИ В ФАЙЛ
$f = fopen("statistic.txt","w");
fwrite($f,$stat."\n");
fclose($f);
?>
CopyRight (c) Турта В. 2012-2021. Начало проекта: 02.10.18