908 lines
29 KiB
JavaScript
908 lines
29 KiB
JavaScript
var PathTable_Line_Arr=new Array();
|
|
var PathTable_Arc_Arr=new Array();
|
|
var PathTable_Bezier_Arr=new Array();
|
|
var PathTable_WayPoint_Arr=new Array();
|
|
var PathTable_OriginTurn_Arr=new Array();
|
|
var NodePointManagerTable_PathNode_Arr=new Array();
|
|
|
|
var StationFloorIndexTable_Arr=new Array();
|
|
var Node_Map=new Map();
|
|
var NodePointManagerTable_Arr=new Array();
|
|
var NodePoint_Map=new Map();
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
function Lu_Parse_PathTable(str){
|
|
var str_line_arr=str.split(/[(\r\n)\r\n]+/);
|
|
for (let i = 0; i < str_line_arr.length; i++) {
|
|
var str_line=str_line_arr[i];
|
|
Lu_Parse_PathTableLine(str_line);
|
|
}
|
|
}
|
|
|
|
|
|
function Lu_Parse_PathTableLine(str){
|
|
var PathInfo_str0="";
|
|
var PathInfo_StringParam1="";
|
|
var PathInfo_StringParam2="";
|
|
var PathInfo_StringParam3="";
|
|
var PathInfo_StringParam4="";
|
|
var item_arr0=str.split('<');
|
|
if(item_arr0.length<1)return;
|
|
PathInfo_str0=item_arr0[0];
|
|
|
|
if(item_arr0.length<2)return;
|
|
var tmp_str1=item_arr0[1];
|
|
var tmp_str2=tmp_str1.split('>');
|
|
PathInfo_StringParam1=tmp_str2[0];
|
|
|
|
|
|
if(item_arr0.length<3)return;
|
|
tmp_str1=item_arr0[2];
|
|
tmp_str2=tmp_str1.split('>');
|
|
PathInfo_StringParam2=tmp_str2[0];
|
|
|
|
|
|
if(item_arr0.length<4)return;
|
|
tmp_str1=item_arr0[3];
|
|
tmp_str2=tmp_str1.split('>');
|
|
PathInfo_StringParam3=tmp_str2[0];
|
|
|
|
if(item_arr0.length<5)return;
|
|
tmp_str1=item_arr0[4];
|
|
tmp_str2=tmp_str1.split('>');
|
|
PathInfo_StringParam4=tmp_str2[0];
|
|
|
|
//console.log("PathInfo_str0:"+PathInfo_str0+"\n");
|
|
//console.log("PathInfo_StringParam1:"+PathInfo_StringParam1+"\n");
|
|
//console.log("PathInfo_StringParam2:"+PathInfo_StringParam2+"\n");
|
|
//console.log("PathInfo_StringParam3:"+PathInfo_StringParam3+"\n");
|
|
//console.log("PathInfo_StringParam4:"+PathInfo_StringParam4+"\n");
|
|
|
|
//var obj = new Object();
|
|
//obj.x=Math.floor(x);
|
|
//obj.y=Math.floor(y);
|
|
|
|
var PathInfo0=Lu_Parse_PathInfo_str0(PathInfo_str0);
|
|
|
|
switch(PathInfo0.PathType){
|
|
case "Line":{
|
|
//console.log(PathInfo0.PathType);
|
|
var PathTable_Line=Lu_Parse_Line_PathInfo_StringParam1(PathInfo_StringParam1);
|
|
PathTable_Line_Arr.push(PathTable_Line);
|
|
}break;
|
|
case "Arc":{
|
|
//console.log(PathInfo0.PathType);
|
|
var PathTable_StringParam1_Arc=Lu_Parse_Arc_PathInfo_StringParam1(PathInfo_StringParam1);
|
|
var PathTable_Arc=Lu_Trans_Arc_PathInfo1_To_Paper_Arc(PathTable_StringParam1_Arc);
|
|
PathTable_Arc_Arr.push(PathTable_Arc);
|
|
}break;
|
|
case "Bezier":{
|
|
var PathTable_StringParam1_Bezier=Lu_Parse_Bezier_PathInfo_StringParam1(PathInfo_StringParam1);
|
|
var PathTable_Bezier=Lu_Trans_Bezier_PathInfo1_To_Paper_Line(PathTable_StringParam1_Bezier);
|
|
PathTable_Bezier_Arr.push(PathTable_Bezier);
|
|
//console.log(PathTable_Bezier);
|
|
}break;
|
|
case "WayPoint":{
|
|
var PathTable_StringParam1_WayPoint=Lu_Parse_WayPoint_PathInfo_StringParam1(PathInfo_StringParam1);
|
|
var PathTable_WayPoint=Lu_Trans_WayPoint_PathInfo1_To_Paper_Line(PathTable_StringParam1_WayPoint);
|
|
PathTable_WayPoint_Arr.push(PathTable_WayPoint);
|
|
}break;
|
|
case "OriginTurn":{
|
|
var PathTable_StringParam1_OriginTurn=Lu_Parse_OriginTurn_PathInfo_StringParam1(PathInfo_StringParam1);
|
|
//console.log(PathTable_StringParam1_OriginTurn);
|
|
var PathTable_OriginTurn=Lu_Trans_OriginTurn_PathInfo1_To_Paper_OriginTurn(PathTable_StringParam1_OriginTurn);
|
|
PathTable_OriginTurn_Arr.push(PathTable_OriginTurn);
|
|
//console.log(PathTable_OriginTurn);
|
|
}break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
function Lu_Parse_PathInfo_str0(str){
|
|
var PathID=0;
|
|
var LayerID=0;
|
|
var RunDirection="";
|
|
var StartNode=0;
|
|
var EndNode=0;
|
|
var PropNode=0;
|
|
var ModeType="";
|
|
var Select=0;
|
|
var PathType="";
|
|
|
|
var item_arr=str.split(' ');
|
|
if(item_arr.length<1)return;
|
|
PathID=item_arr[0];
|
|
|
|
|
|
if(item_arr.length<2)return;
|
|
LayerID=item_arr[1];
|
|
|
|
if(item_arr.length<3)return;
|
|
RunDirection=item_arr[2];
|
|
|
|
if(item_arr.length<4)return;
|
|
StartNode=item_arr[3];
|
|
|
|
if(item_arr.length<5)return;
|
|
EndNode=item_arr[4];
|
|
|
|
if(item_arr.length<6)return;
|
|
PropNode=item_arr[5];
|
|
|
|
if(item_arr.length<7)return;
|
|
ModeType=item_arr[6];
|
|
|
|
if(item_arr.length<8)return;
|
|
Select=item_arr[7];
|
|
|
|
if(item_arr.length<9)return;
|
|
PathType=item_arr[8];
|
|
|
|
|
|
var PathInfo0 = new Object();
|
|
PathInfo0.PathID=PathID;
|
|
PathInfo0.LayerID=LayerID;
|
|
PathInfo0.StartNode=StartNode;
|
|
PathInfo0.EndNode=EndNode;
|
|
PathInfo0.PropNode=PropNode;
|
|
PathInfo0.ModeType=ModeType;
|
|
PathInfo0.Select=Select;
|
|
PathInfo0.PathType=PathType;
|
|
return PathInfo0;
|
|
}
|
|
|
|
function Lu_Parse_Line_PathInfo_StringParam1(str){
|
|
var start_point=new Point(0.0,0.0);
|
|
var end_point=new Point(0.0,0.0);
|
|
var thetax=0.0;
|
|
var item_arr=str.split(' ');
|
|
if(item_arr.length<1)return;
|
|
start_point.x=parseFloat(item_arr[0]);
|
|
|
|
if(item_arr.length<2)return;
|
|
start_point.y=parseFloat(item_arr[1]);
|
|
|
|
if(item_arr.length<3)return;
|
|
end_point.x=parseFloat(item_arr[2]);
|
|
|
|
if(item_arr.length<4)return;
|
|
end_point.y=parseFloat(item_arr[3]);
|
|
|
|
if(item_arr.length<5)return;
|
|
thetax=parseFloat(item_arr[4]);
|
|
|
|
var Line_PathInfo1=new Object();
|
|
Line_PathInfo1.start_point=start_point;
|
|
Line_PathInfo1.end_point=end_point;
|
|
Line_PathInfo1.thetax=thetax;
|
|
return Line_PathInfo1;
|
|
|
|
}
|
|
|
|
function Lu_Parse_Arc_PathInfo_StringParam1(str){
|
|
var arcpathclockwisedir=0;
|
|
var centerpoint=new Point(0.0,0.0);
|
|
var radius=0.0;
|
|
var startangle=0.0;
|
|
var endangle=0.0;
|
|
var item_arr=str.split(' ');
|
|
if(item_arr.length<1)return;
|
|
arcpathclockwisedir=item_arr[0];
|
|
|
|
if(item_arr.length<2)return;
|
|
centerpoint.x=parseFloat(item_arr[1]);
|
|
|
|
if(item_arr.length<3)return;
|
|
centerpoint.y=parseFloat(item_arr[2]);
|
|
|
|
if(item_arr.length<4)return;
|
|
radius=parseFloat(item_arr[3]);
|
|
|
|
if(item_arr.length<5)return;
|
|
startangle=parseFloat(item_arr[4]);
|
|
|
|
if(item_arr.length<6)return;
|
|
endangle=parseFloat(item_arr[5]);
|
|
|
|
var Arc_PathInfo1=new Object();
|
|
Arc_PathInfo1.arcpathclockwisedir=arcpathclockwisedir;
|
|
Arc_PathInfo1.centerpoint=centerpoint;
|
|
Arc_PathInfo1.radius=radius;
|
|
Arc_PathInfo1.startangle=startangle;
|
|
Arc_PathInfo1.endangle=endangle;
|
|
return Arc_PathInfo1;
|
|
}
|
|
function Lu_Parse_WayPoint_PathInfo_StringParam1(str){
|
|
var WayPoint_List_str="";
|
|
var WayPointBezierList_Vector_str="";
|
|
var WayPointBezierPointList_Vector_str="";
|
|
var item_arr=str.split('|');
|
|
if(item_arr.l<3)return;
|
|
|
|
WayPoint_List_str=item_arr[0];
|
|
WayPointBezierList_Vector_str=item_arr[1];
|
|
WayPointBezierPointList_Vector_str=item_arr[2];
|
|
|
|
var WPL_Str=WayPoint_List_str.split('@');
|
|
if(WPL_Str.length<2)return;
|
|
var WayPoint_List_Num=WPL_Str[0];
|
|
var WPL_Data_Str=WPL_Str[1];
|
|
WPL_Data_Str=WPL_Data_Str.split(']')[0];
|
|
var WPL_Sub_Data_Str = WPL_Data_Str.split('#');
|
|
if(WPL_Sub_Data_Str.length<WayPoint_List_Num)return;
|
|
|
|
var WayPoint_List=new Array();
|
|
for(let i=0;i<WPL_Sub_Data_Str.length;i++){
|
|
var WPL_Sub_Data_Info_Str=WPL_Sub_Data_Str[i];
|
|
//console.log(WPL_Sub_Data_Info_Str);
|
|
if(!WPL_Sub_Data_Info_Str) WPL_Sub_Data_Str.splice(i,1);//删除空项
|
|
else{
|
|
var item_WPL=WPL_Sub_Data_Info_Str.split(' ');
|
|
var P=new Object();
|
|
P.x=parseFloat(item_WPL[0]);
|
|
P.y=parseFloat(item_WPL[1]);
|
|
P.thetadeg=parseFloat(item_WPL[2]);
|
|
WayPoint_List.push(P);
|
|
}
|
|
}
|
|
|
|
var WayPointBezierList_Vector=new Array();
|
|
var WayPointBezierList_Str=WayPointBezierList_Vector_str.split(',');
|
|
for(let l=0;l<WayPointBezierList_Str.length;l++){
|
|
var WayPointBezierListi_Str=WayPointBezierList_Str[l];
|
|
if(!WayPointBezierListi_Str) WayPointBezierList_Str.splice(l,1);//删除空项
|
|
else {
|
|
var BPL_Str = WayPointBezierListi_Str.split('@');
|
|
if(BPL_Str.length<2)return;
|
|
var BPL_Data_Num = BPL_Str[0];
|
|
var BPL_Data_Str = BPL_Str[1];
|
|
BPL_Data_Str=BPL_Data_Str.split(']')[0];
|
|
var BPL_Sub_Data_Str = BPL_Data_Str.split('#');
|
|
if(BPL_Sub_Data_Str.length<BPL_Data_Num)return;
|
|
var Bezier_Point_List=new Array();
|
|
for(let i=0;i<BPL_Sub_Data_Str.length;i++){
|
|
var BPL_Sub_Data_Info_Str=BPL_Sub_Data_Str[i];
|
|
if(!BPL_Sub_Data_Info_Str) BPL_Sub_Data_Str.splice(i,1);//删除空项
|
|
else{
|
|
var item_BPL=BPL_Sub_Data_Info_Str.split(' ');
|
|
var p=new Point(0.0,0.0);
|
|
p.x=parseFloat(item_BPL[0]);
|
|
p.y=parseFloat(item_BPL[1]);
|
|
Bezier_Point_List.push(p);
|
|
}
|
|
}
|
|
WayPointBezierList_Vector.push(Bezier_Point_List);
|
|
}
|
|
}
|
|
|
|
var WayPointBezierPointList_Vector=new Array();
|
|
var WayPointBezierPointList_Str=WayPointBezierPointList_Vector_str.split(',');
|
|
for(let l=0;l<WayPointBezierPointList_Str.length;l++){
|
|
var WayPointBezierPointListi_Str=WayPointBezierPointList_Str[l];
|
|
if(!WayPointBezierPointListi_Str) WayPointBezierPointList_Str.splice(l,1);//删除空项
|
|
else{
|
|
var PL_Str = WayPointBezierPointListi_Str.split('$');
|
|
if(PL_Str.length<2)return;
|
|
var PL_Data_Num = PL_Str[0];
|
|
var PL_Data_Str = PL_Str[1];
|
|
PL_Data_Str=PL_Data_Str.split(']')[0];
|
|
var PL_Sub_Data_Str = PL_Data_Str.split('%');
|
|
if(PL_Sub_Data_Str.length<PL_Data_Num)return;
|
|
var Point_List=new Array();
|
|
for(let i=0;i<PL_Sub_Data_Str.length;i++){
|
|
var PL_Sub_Data_Info_Str=PL_Sub_Data_Str[i];
|
|
if(!PL_Sub_Data_Info_Str)PL_Sub_Data_Str.splice(i,1);//删除空项
|
|
else{
|
|
var item_PL=PL_Sub_Data_Info_Str.split(' ');
|
|
var P=new Object();
|
|
P.x=parseFloat(item_PL[0]);
|
|
P.y=parseFloat(item_PL[1]);
|
|
P.thetadeg=parseFloat(item_PL[2]);
|
|
P.curvrate=parseFloat(item_PL[3]);
|
|
Point_List.push(P);
|
|
}
|
|
}
|
|
WayPointBezierPointList_Vector.push(Point_List);
|
|
}
|
|
}
|
|
|
|
var WayPoint_PathInfo1=new Object();
|
|
WayPoint_PathInfo1.WayPoint_List=WayPoint_List;
|
|
WayPoint_PathInfo1.WayPointBezierList_Vector=WayPointBezierList_Vector;
|
|
WayPoint_PathInfo1.WayPointBezierPointList_Vector=WayPointBezierPointList_Vector;
|
|
return WayPoint_PathInfo1;
|
|
}
|
|
function Lu_Parse_Bezier_PathInfo_StringParam1(str){
|
|
var Bezier_Point_List_str="";
|
|
var Point_List_str="";
|
|
var item_arr=str.split('[Point_List');
|
|
if(item_arr.length<2)return;
|
|
|
|
var tmp0=item_arr[1];
|
|
var item_arr0=tmp0.split(']');
|
|
var Point_List_str=item_arr0[0];
|
|
//console.log("Point_List_str:"+Point_List_str);
|
|
|
|
var tmp1=item_arr[0];
|
|
var item_arr1=tmp1.split(']|');
|
|
Bezier_Point_List_str=item_arr1[0];
|
|
//console.log(Bezier_Point_List_str);
|
|
|
|
var item_arr2=Bezier_Point_List_str.split(':');
|
|
if(item_arr2.length<1)return;
|
|
var tmp2=item_arr2[1];
|
|
var item_arr3=tmp2.split('@');
|
|
var Bezier_Point_List_Num=item_arr3[0];
|
|
//console.log(Bezier_Point_List_Num);
|
|
|
|
var Bezier_Point_List_Str=item_arr3[1];
|
|
//console.log(Bezier_Point_List_Str);
|
|
|
|
var item_arr4=Bezier_Point_List_Str.split('#');
|
|
if(item_arr4.length<Bezier_Point_List_Num)return;
|
|
//console.log(item_arr4);
|
|
|
|
var Bezier_Point_List=new Array();
|
|
for(i=0;i<item_arr4.length;i++){
|
|
var Point_Tmp_Str=item_arr4[i];
|
|
if(!Point_Tmp_Str) item_arr4.splice(i,1);//删除空项
|
|
else{
|
|
var item_arr5=Point_Tmp_Str.split(' ');
|
|
var p=new Point(0.0,0.0);
|
|
p.x=parseFloat(item_arr5[0]);
|
|
p.y=parseFloat(item_arr5[1]);
|
|
Bezier_Point_List.push(p);
|
|
}
|
|
}
|
|
//console.log(Bezier_Point_List);
|
|
|
|
var item_arr5=Point_List_str.split('$');
|
|
//console.log(item_arr5);
|
|
if(item_arr5.length<1)return;
|
|
var Point_List_Num=item_arr5[0];
|
|
//console.log(Point_List_Num);
|
|
var Point_List_Data_str=item_arr5[1];
|
|
var item_arr6=Point_List_Data_str.split('%');
|
|
if(item_arr6.length<Point_List_Num)return;
|
|
var Point_List=new Array();
|
|
for(j=0;j<item_arr6.length;j++){
|
|
var Point_Tmp_Str=item_arr6[j];
|
|
if(!Point_Tmp_Str)item_arr6.splice(i,1);//删除空项
|
|
else{
|
|
var item_arr7=Point_Tmp_Str.split(' ');
|
|
var P=new Object();
|
|
P.x=parseFloat(item_arr7[0]);
|
|
P.y=parseFloat(item_arr7[1]);
|
|
P.thetadeg=parseFloat(item_arr7[2]);
|
|
P.curvrate=parseFloat(item_arr7[3]);
|
|
Point_List.push(P);
|
|
}
|
|
}
|
|
//console.log(Point_List);
|
|
var Bezier_PathInfo1=new Object();
|
|
Bezier_PathInfo1.Bezier_Point_List=Bezier_Point_List;
|
|
Bezier_PathInfo1.Point_List=Point_List;
|
|
return Bezier_PathInfo1;
|
|
}
|
|
|
|
function Lu_Parse_OriginTurn_PathInfo_StringParam1(str){
|
|
var arcpathclockwisedir=0;
|
|
var centerpoint=new Point(0.0,0.0);
|
|
var startanglex=0.0;
|
|
var endanglex=0.0;
|
|
var item_arr=str.split(' ');
|
|
if(item_arr.length<1)return;
|
|
arcpathclockwisedir=item_arr[0];
|
|
|
|
if(item_arr.length<2)return;
|
|
centerpoint.x=parseFloat(item_arr[1]);
|
|
|
|
if(item_arr.length<3)return;
|
|
centerpoint.y=parseFloat(item_arr[2]);
|
|
|
|
if(item_arr.length<4)return;
|
|
startanglex=parseFloat(item_arr[3]);
|
|
|
|
if(item_arr.length<5)return;
|
|
endanglex=parseFloat(item_arr[4]);
|
|
|
|
var OriginTurn_PathInfo1=new Object();
|
|
OriginTurn_PathInfo1.arcpathclockwisedir=arcpathclockwisedir;
|
|
OriginTurn_PathInfo1.centerpoint=centerpoint;
|
|
OriginTurn_PathInfo1.startanglex=startanglex;
|
|
OriginTurn_PathInfo1.endanglex=endanglex;
|
|
return OriginTurn_PathInfo1;
|
|
}
|
|
|
|
function Lu_Trans_Arc_PathInfo1_To_Paper_Arc(Arc_PathInfo1){
|
|
var arcpathclockwisedir=Arc_PathInfo1.arcpathclockwisedir;
|
|
var centerpoint=Arc_PathInfo1.centerpoint;
|
|
var radius=Arc_PathInfo1.radius;
|
|
var startangle=Arc_PathInfo1.startangle;
|
|
var endangle=Arc_PathInfo1.endangle;
|
|
|
|
if(arcpathclockwisedir==0){
|
|
endangle=Lu_Normal_Deg(startangle,startangle+360.0,endangle);
|
|
}
|
|
else{
|
|
startangle=Lu_Normal_Deg(endangle,endangle+360.0,startangle);
|
|
}
|
|
|
|
|
|
var PathTable_Arc=new Object();
|
|
PathTable_Arc.centerpoint=centerpoint;
|
|
PathTable_Arc.radius=radius;
|
|
PathTable_Arc.startangle=startangle;
|
|
PathTable_Arc.endangle=endangle;
|
|
PathTable_Arc.arcpathclockwisedir=arcpathclockwisedir;
|
|
//console.log(PathTable_Arc);
|
|
return PathTable_Arc;
|
|
}
|
|
|
|
function Lu_Trans_WayPoint_PathInfo1_To_Paper_Line(WayPoint_PathInfo1){
|
|
var WayPointBezierPointList_Vector=WayPoint_PathInfo1.WayPointBezierPointList_Vector;
|
|
//console.log(WayPointBezierPointList_Vector);
|
|
var WayPoint_Line_List=new Array();
|
|
for(let i=0;i<WayPointBezierPointList_Vector.length;i++){
|
|
var Point_List=WayPointBezierPointList_Vector[i];
|
|
for(let j=0;j<Point_List.length-1;j++){
|
|
var PS=new Point(0.0,0.0);
|
|
PS.x=Point_List[j].x;
|
|
PS.y=Point_List[j].y;
|
|
var PE=new Point(0.0,0.0);
|
|
PE.x=Point_List[j+1].x;
|
|
PE.y=Point_List[j+1].y;
|
|
var Line=new Object();
|
|
Line.startpoint=PS;
|
|
Line.endpoint=PE;
|
|
WayPoint_Line_List.push(Line);
|
|
}
|
|
}
|
|
return WayPoint_Line_List;
|
|
}
|
|
|
|
function Lu_Trans_Bezier_PathInfo1_To_Paper_Line(Bezier_PathInfo1){
|
|
var Point_List=Bezier_PathInfo1.Point_List;
|
|
var Bezier_Line_List=new Array();
|
|
for(i=0;i<Point_List.length-1;i++){
|
|
var PS=new Point(0.0,0.0);
|
|
PS.x=Point_List[i].x;
|
|
PS.y=Point_List[i].y;
|
|
var PE=new Point(0.0,0.0);
|
|
PE.x=Point_List[i+1].x;
|
|
PE.y=Point_List[i+1].y;
|
|
var Line=new Object();
|
|
Line.startpoint=PS;
|
|
Line.endpoint=PE;
|
|
Bezier_Line_List.push(Line);
|
|
}
|
|
return Bezier_Line_List;
|
|
}
|
|
|
|
function Lu_Trans_OriginTurn_PathInfo1_To_Paper_OriginTurn(OriginTurn_PathInfo1){
|
|
var arcpathclockwisedir=OriginTurn_PathInfo1.arcpathclockwisedir;
|
|
var centerpoint=OriginTurn_PathInfo1.centerpoint;
|
|
var startangle=parseFloat(OriginTurn_PathInfo1.startanglex)+90.0;
|
|
var endangle=parseFloat(OriginTurn_PathInfo1.endanglex)+90.0;
|
|
var radius=1.0;
|
|
var frompoint=new Point(0.0,0.0);
|
|
var topoint=new Point(0.0,0.0);
|
|
if(arcpathclockwisedir==0){//Anticlockwise = 0,//逆时针
|
|
frompoint=Lu_GetNextPoint_By_xs_ys_dirdeg(centerpoint.x,centerpoint.y,startangle,radius);
|
|
topoint=Lu_GetNextPoint_By_xs_ys_dirdeg(centerpoint.x,centerpoint.y,endangle,radius);
|
|
}
|
|
else{//Clockwise = 1,//顺时针
|
|
frompoint=Lu_GetNextPoint_By_xs_ys_dirdeg(centerpoint.x,centerpoint.y,startangle,radius);
|
|
topoint=Lu_GetNextPoint_By_xs_ys_dirdeg(centerpoint.x,centerpoint.y,endangle,radius);
|
|
}
|
|
|
|
if(arcpathclockwisedir==0){
|
|
endangle=Lu_Normal_Deg(startangle,startangle+360.0,endangle);
|
|
}
|
|
else{
|
|
startangle=Lu_Normal_Deg(endangle,endangle+360.0,startangle);
|
|
}
|
|
var PathTable_OriginTurn=new Object();
|
|
PathTable_OriginTurn.centerpoint=centerpoint;
|
|
PathTable_OriginTurn.radius=radius;
|
|
PathTable_OriginTurn.startangle=startangle;
|
|
PathTable_OriginTurn.endangle=endangle;
|
|
PathTable_OriginTurn.arcpathclockwisedir=arcpathclockwisedir;
|
|
PathTable_OriginTurn.frompoint=frompoint;
|
|
PathTable_OriginTurn.topoint=topoint;
|
|
//console.log(PathTable_Arc);
|
|
return PathTable_OriginTurn;
|
|
}
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
function Lu_Parse_NodePointManagerTable(str){
|
|
var str_line_arr=str.split(/[(\r\n)\r\n]+/);
|
|
for (let i = 0; i < str_line_arr.length; i++) {
|
|
var str_line=str_line_arr[i];
|
|
Lu_Parse_NodePointManagerTableLine(str_line);
|
|
}
|
|
}
|
|
/*
|
|
function Lu_Parse_NodePointManagerTableLine(str){
|
|
|
|
var NodeInfo_str0="";
|
|
var NodeInfo_StringParam1="";
|
|
var NodeInfo_StringParam2="";
|
|
var item_arr0=str.split('<');
|
|
NodeInfo_str0=item_arr0[0];
|
|
|
|
if(item_arr0.length<2)return;
|
|
var tmp_str1=item_arr0[1];
|
|
var tmp_str2=tmp_str1.split('>');
|
|
NodeInfo_StringParam1=tmp_str2[0];
|
|
|
|
if(item_arr0.length<3)return;
|
|
tmp_str1=item_arr0[2];
|
|
tmp_str2=tmp_str1.split('>');
|
|
NodeInfo_StringParam2=tmp_str2[0];
|
|
|
|
//console.log("NodeInfo_str0:"+NodeInfo_str0+"\n");
|
|
//console.log("NodeInfo_StringParam1:"+NodeInfo_StringParam1+"\n");
|
|
//console.log("NodeInfo_StringParam2:"+NodeInfo_StringParam2+"\n");
|
|
var NodeInfo0=Lu_Parse_NodeInfo_str0(NodeInfo_str0);
|
|
NodePointManagerTable_PathNode_Arr.push(NodeInfo0);
|
|
//console.log(NodeInfo0);
|
|
}
|
|
|
|
function Lu_Parse_NodeInfo_str0(str){
|
|
var NodeKeyID=0;
|
|
var NodeID=0;
|
|
var Selected=0;
|
|
var Node_x=0.0;
|
|
var Node_y=0.0;
|
|
var Node_thetax=0.0;
|
|
var Node_z=0.0;
|
|
var NodeParallelLift=0.0;
|
|
var NodeFrontLift=0.0;
|
|
var NodePrePathNode=0;
|
|
var NodeType="";
|
|
|
|
var item_arr=str.split(' ');
|
|
if(item_arr.length<1)return;
|
|
NodeKeyID=item_arr[0];
|
|
|
|
|
|
if(item_arr.length<2)return;
|
|
NodeID=item_arr[1];
|
|
|
|
if(item_arr.length<3)return;
|
|
Selected=item_arr[2];
|
|
|
|
if(item_arr.length<4)return;
|
|
Node_x=parseFloat(item_arr[3]);
|
|
|
|
if(item_arr.length<5)return;
|
|
Node_y=parseFloat(item_arr[4]);
|
|
|
|
if(item_arr.length<6)return;
|
|
Node_thetax=parseFloat(item_arr[5]);
|
|
|
|
if(item_arr.length<7)return;
|
|
Node_z=parseFloat(item_arr[6]);
|
|
|
|
if(item_arr.length<8)return;
|
|
NodeParallelLift=parseFloat(item_arr[7]);
|
|
|
|
if(item_arr.length<9)return;
|
|
NodeFrontLift=parseFloat(item_arr[8]);
|
|
|
|
if(item_arr.length<10)return;
|
|
NodePrePathNode=item_arr[9];
|
|
|
|
if(item_arr.length<11)return;
|
|
NodeType=item_arr[10];
|
|
|
|
|
|
var NodeInfo0 = new Object();
|
|
NodeInfo0.NodeKeyID=NodeKeyID;
|
|
NodeInfo0.NodeID=NodeID;
|
|
NodeInfo0.Selected=Selected;
|
|
NodeInfo0.Node_x=Node_x;
|
|
NodeInfo0.Node_y=Node_y;
|
|
NodeInfo0.Node_thetax=Node_thetax;
|
|
NodeInfo0.Node_z=Node_z;
|
|
NodeInfo0.NodeParallelLift=NodeParallelLift;
|
|
NodeInfo0.NodeFrontLift=NodeFrontLift;
|
|
NodeInfo0.NodePrePathNode=NodePrePathNode;
|
|
NodeInfo0.NodeType=NodeType;
|
|
return NodeInfo0;
|
|
}*/
|
|
|
|
function Lu_Parse_NodePointManagerTableLine(str){
|
|
var NodeKeyID_str0="";
|
|
var NodeID_str1="";
|
|
var Select_str2="";
|
|
var Node_x_str3="";
|
|
var Node_y_str4="";
|
|
var Node_thetax_str5="";
|
|
var Node_z_str6="";
|
|
var NodeParallelLift_str7="";
|
|
var NodeFrontLift_str8="";
|
|
var PrePathNode_str9="";
|
|
var NodeType_str10="";
|
|
var NPMStringParam1_str11="";
|
|
var NPMStringParam2_str12="";
|
|
|
|
var item_arr0=str.split(' ');
|
|
if(item_arr0.length<1)return;
|
|
NodeKeyID_str0=item_arr0[0];
|
|
var NodeKeyID=parseInt(NodeKeyID_str0,10);
|
|
|
|
if(item_arr0.length<2)return;
|
|
NodeID_str1=item_arr0[1];
|
|
var NodeID=parseInt(NodeID_str1,10);
|
|
|
|
if(item_arr0.length<3)return;
|
|
Select_str2=item_arr0[2];
|
|
var Select=parseInt(Select_str2,10);
|
|
|
|
if(item_arr0.length<4)return;
|
|
Node_x_str3=item_arr0[3];
|
|
var Node_x=parseFloat(Node_x_str3);
|
|
|
|
if(item_arr0.length<5)return;
|
|
Node_y_str4=item_arr0[4];
|
|
var Node_y=parseFloat(Node_y_str4);
|
|
|
|
if(item_arr0.length<6)return;
|
|
Node_thetax_str5=item_arr0[5];
|
|
var Node_thetax=parseFloat(Node_thetax_str5);
|
|
|
|
if(item_arr0.length<7)return;
|
|
Node_z_str6=item_arr0[6];
|
|
var Node_z=parseFloat(Node_z_str6);
|
|
|
|
if(item_arr0.length<8)return;
|
|
NodeParallelLift_str7=item_arr0[7];
|
|
var NodeParallelLift=parseFloat(NodeParallelLift_str7);
|
|
|
|
if(item_arr0.length<9)return;
|
|
NodeFrontLift_str8=item_arr0[8];
|
|
var NodeFrontLift=parseFloat(NodeFrontLift_str8);
|
|
|
|
if(item_arr0.length<10)return;
|
|
PrePathNode_str9=item_arr0[9];
|
|
var PrePathNode=parseInt(PrePathNode_str9,10);
|
|
|
|
if(item_arr0.length<11)return;
|
|
NodeType_str10=item_arr0[10];
|
|
var NodeType=NodeType_str10;
|
|
|
|
var item_arr1=str.split('<');
|
|
if(item_arr1.length<2)return;
|
|
var tmp_str1=item_arr1[1];
|
|
var tmp_str2=tmp_str1.split('>');
|
|
NPMStringParam1_str11=tmp_str2[0];
|
|
var NPMStringParam1=NPMStringParam1_str11;
|
|
|
|
if(item_arr1.length<3)return;
|
|
tmp_str1=item_arr1[2];
|
|
tmp_str2=tmp_str1.split('>');
|
|
NPMStringParam2_str12=tmp_str2[0];
|
|
var NPMStringParam2=NPMStringParam2_str12;
|
|
|
|
var NodePointInfo=new Object();
|
|
NodePointInfo.NodeKeyID=NodeKeyID;
|
|
NodePointInfo.NodeID=NodeID;
|
|
NodePointInfo.NodeName="";
|
|
NodePointInfo.Select=Select;
|
|
NodePointInfo.Node_x=Node_x;
|
|
NodePointInfo.Node_y=Node_y;
|
|
NodePointInfo.Node_thetax=Node_thetax;
|
|
NodePointInfo.Node_z=Node_z;
|
|
NodePointInfo.NodeParallelLift=NodeParallelLift;
|
|
NodePointInfo.NodeFrontLift=NodeFrontLift;
|
|
NodePointInfo.PrePathNode=PrePathNode;
|
|
NodePointInfo.NodeType=NodeType;
|
|
NodePointInfo.NPMStringParam1=NPMStringParam1;
|
|
NodePointInfo.NPMStringParam2=NPMStringParam2;
|
|
NodePointManagerTable_PathNode_Arr.push(NodePointInfo);
|
|
if(NodePoint_Map.has(NodePointInfo)==false){
|
|
NodePoint_Map.set(NodeID,NodePointInfo);
|
|
}
|
|
}
|
|
|
|
/////////////////////////////////////////////////////
|
|
function Lu_Parse_StationFloorIndexTable(str){
|
|
var str_line_arr=str.split("\n");
|
|
//console.log("LEN:"+str_line_arr.length);
|
|
for (let i = 0; i < str_line_arr.length; i++) {
|
|
var str_line=str_line_arr[i];
|
|
//console.log(str_line);
|
|
if(str_line!="")Lu_Parse_StationFloorIndexTableLine(str_line);
|
|
}
|
|
//console.log("AAA");
|
|
//console.log(Node_Map);
|
|
}
|
|
|
|
function Lu_Parse_StationFloorIndexTableLine(str){
|
|
//console.log(str);
|
|
var FloorID_str0="";
|
|
var FloorIndex_str1="";
|
|
var StationID_str2="";
|
|
var NodeID_str3="";
|
|
var NodeName_str4="";
|
|
var NodePos_str5="";
|
|
var FloorStringParam1_str6="";
|
|
|
|
var item_arr0=str.split(' ');
|
|
if(item_arr0.length<1)return;
|
|
FloorID_str0=item_arr0[0];
|
|
var FloorID=parseInt(FloorID_str0,10);
|
|
//console.log("FloorID_str0:"+FloorID_str0+"\n");
|
|
|
|
if(item_arr0.length<2)return;
|
|
FloorIndex_str1=item_arr0[1];
|
|
var FloorIndex=parseInt(FloorIndex_str1,10);
|
|
//console.log("FloorIndex_str1:"+FloorIndex_str1+"\n");
|
|
|
|
if(item_arr0.length<3)return;
|
|
StationID_str2=item_arr0[2];
|
|
var StationID=parseInt(StationID_str2,10);
|
|
//console.log("StationID_str2:"+StationID_str2+"\n");
|
|
|
|
if(item_arr0.length<4)return;
|
|
NodeID_str3=item_arr0[3];
|
|
var NodeID=parseInt(NodeID_str3,10);
|
|
//console.log("NodeID_str3:"+NodeID_str3+"\n");
|
|
|
|
if(item_arr0.length<5)return;
|
|
NodeName_str4=item_arr0[4];
|
|
//console.log("NodeName_str4:"+NodeName_str4+"\n");
|
|
|
|
var item_arr1=str.split('<');
|
|
if(item_arr1.length<2)return;
|
|
var tmp_str1=item_arr1[1];
|
|
var tmp_str2=tmp_str1.split('>');
|
|
NodePos_str5=tmp_str2[0];
|
|
//console.log("NodePos_str5:"+NodePos_str5+"\n");
|
|
var NodePos=Lu_Parse_NodePos(NodePos_str5);
|
|
//console.log("NodePos:"+NodePos.x+" "+NodePos.y+"\n");
|
|
|
|
if(item_arr1.length<3)return;
|
|
tmp_str1=item_arr1[2];
|
|
tmp_str2=tmp_str1.split('>');
|
|
FloorStringParam1_str6=tmp_str2[0];
|
|
//console.log("FloorStringParam1_str6:"+FloorStringParam1_str6+"\n");
|
|
var FloorOperationInfo=Lu_Parse_FloorStringParam1(FloorStringParam1_str6);
|
|
//console.log(FloorOperationInfo);
|
|
|
|
var FloorInfo=new Object();
|
|
FloorInfo.FloorID=FloorID;
|
|
FloorInfo.FloorIndex=FloorIndex;
|
|
FloorInfo.StationID=StationID;
|
|
FloorInfo.NodeID=NodeID;
|
|
FloorInfo.NodeName_str4=NodeName_str4;
|
|
FloorInfo.NodePos=NodePos;
|
|
FloorInfo.FloorOperationInfo=FloorOperationInfo;
|
|
//console.log(FloorInfo);
|
|
|
|
if(Node_Map.has(NodeID)==false){
|
|
var Node_Info=new Object();
|
|
Node_Info.NodeName=NodeName_str4;
|
|
Node_Info.NodePos=NodePos;
|
|
Node_Map.set(NodeID,Node_Info);
|
|
}
|
|
}
|
|
|
|
function Lu_Parse_NodePos(str){
|
|
var item_arr=str.split(' ');
|
|
if(item_arr.length<2)return;
|
|
var x=parseFloat(item_arr[0]);
|
|
|
|
var y=parseFloat(item_arr[1]);
|
|
|
|
var NodePos=new Object();
|
|
NodePos.x=x;
|
|
NodePos.y=y;
|
|
return NodePos;
|
|
}
|
|
|
|
function Lu_Parse_FloorStringParam1(str){
|
|
var item_arr0=str.split(':');
|
|
if(item_arr0.length<2)return;
|
|
var str_arr0_s0=item_arr0[0];
|
|
var str_arr0_s1=item_arr0[1];
|
|
|
|
var item_arr1=str_arr0_s0.split('|');
|
|
if(item_arr1.length<2)return;
|
|
var str_arr1_s0=item_arr1[1];
|
|
var FloorIndex=parseInt(str_arr1_s0,10);
|
|
//console.log(str_arr1_s0);//FloorIndex
|
|
|
|
var item_arr2=str_arr0_s1.split('(');
|
|
if(item_arr2.length<2)return;
|
|
var str_arr2_s0=item_arr2[1];
|
|
|
|
var item_arr3=str_arr2_s0.split(')');
|
|
if(item_arr3.length<2)return;
|
|
var str_arr3_s0=item_arr3[0];
|
|
var str_arr3_s1=item_arr3[1];
|
|
//console.log(str_arr3_s0);//FloorName
|
|
|
|
var item_arr4=str_arr3_s1.split('@');
|
|
if(item_arr4.length<2)return;
|
|
var str_arr4_s0=item_arr4[0];
|
|
var str_arr4_s1=item_arr4[1];
|
|
//console.log(str_arr4_s0);//OperationCode Num
|
|
var Num=parseInt(str_arr4_s0,10);
|
|
//console.log("OperationCode Num:"+Num);//OperationCode Num
|
|
|
|
var item_arr5=str_arr4_s1.split('[');
|
|
if(item_arr5.length<1)return;
|
|
|
|
//console.log("item_arr5.length:"+item_arr5.length);
|
|
var Operation_Param_List=new Array();
|
|
for(let i=0;i<item_arr5.length;i++){
|
|
var str_arr5_s0=item_arr5[i];
|
|
var item_arr6=str_arr5_s0.split(']');
|
|
if(item_arr6.length<2)continue;
|
|
var str_arr6_s0=item_arr6[0];
|
|
//console.log(str_arr6_s0);
|
|
var Operation_Param=Lu_Parse_Single_Operation_Param(str_arr6_s0);
|
|
|
|
//console.log(Operation_Param);
|
|
Operation_Param_List.push(Operation_Param);
|
|
}
|
|
|
|
var FloorOperationInfo=new Object();
|
|
FloorOperationInfo.Index=FloorIndex;
|
|
FloorOperationInfo.Name=str_arr3_s0;
|
|
FloorOperationInfo.Operation_Param_List=Operation_Param_List;
|
|
return FloorOperationInfo;
|
|
}
|
|
|
|
function Lu_Parse_Single_Operation_Param(str){
|
|
var item_arr0=str.split('#');
|
|
if(item_arr0.length<2)return;
|
|
var str_arr0_s0=item_arr0[0];
|
|
var str_arr0_s1=item_arr0[1];
|
|
//console.log("Operation Name:"+str_arr0_s0);//Operation Name
|
|
|
|
var item_arr1=str_arr0_s1.split('$');
|
|
if(item_arr1.length<2)return;
|
|
var str_arr1_s0=item_arr1[0];
|
|
var str_arr1_s1=item_arr1[1];
|
|
//console.log("Operation Code:"+str_arr1_s0);//Operation Code
|
|
var Operation_Code=parseInt(str_arr1_s0,10);
|
|
|
|
var item_arr2=str_arr1_s1.split('%');
|
|
if(item_arr2.length<2)return;
|
|
var str_arr2_s0=item_arr2[0];
|
|
var str_arr2_s1=item_arr2[1];
|
|
//console.log("Operation Param Type:"+str_arr2_s0);//Operation Param Type
|
|
|
|
var item_arr3=str_arr2_s1.split('&');
|
|
if(item_arr3.length<2)return;
|
|
var str_arr3_s0=item_arr3[0];
|
|
var str_arr3_s1=item_arr3[1];
|
|
//console.log("Operation Param Format:"+str_arr3_s0);//Operation Param Format
|
|
|
|
//console.log("Operation Param Raw:"+str_arr3_s1);//Operation Param Raw
|
|
|
|
var Operation_Param_Raw=parseInt(str_arr3_s1, 16);
|
|
//console.log(Operation_Param_Raw);
|
|
|
|
var Operation_Param=new Object();
|
|
Operation_Param.Name=str_arr0_s0;
|
|
Operation_Param.Code=Operation_Code;
|
|
Operation_Param.Type=str_arr2_s0;
|
|
Operation_Param.Format=str_arr3_s0;
|
|
Operation_Param.Raw=Operation_Param_Raw;
|
|
return Operation_Param;
|
|
}
|
|
|
|
function Lu_Create_NodePoint_Map_With_Name(){
|
|
NodePoint_Map.forEach(function(value, key, map){
|
|
if(Node_Map.has(key)){
|
|
NodePoint_Map.get(key).NodeName=Node_Map.get(key).NodeName;
|
|
}
|
|
});
|
|
} |