public override void Link_Nodes(ref Node[][][] Frame, int x, int y, int z) { int mod = x % 2; int xdim = Frame.Length - 1; int ydim = Frame[mod].Length - 1; int zdim = Frame[mod][0].Length - 1; Links2 = new Node[12]; /* [0] = x+y+z+ [1] = x+y-z- [2] = x+y-z+ [3] = x+y+z- [4] = x-y+z+ [5] = x-y-z- [6] = x-y-z+ [7] = x-y+z- [8] = y+ [9] = y- [10] = z+ [11] = z- */ if (mod == 0) { if (x < xdim) { if (y < ydim && z < zdim) Links2[0] = Frame[x + 1][y + 1][z + 1]; else Links2[0] = new Null_Node(); if (y > 0 && z > 0) Links2[1] = Frame[x + 1][y][z]; else Links2[1] = new Null_Node(); if (y > 0 && z < zdim) Links2[2] = Frame[x + 1][y][z + 1]; else Links2[2] = new Null_Node(); if (y < ydim && z > 0) Links2[3] = Frame[x + 1][y + 1][z]; else Links2[3] = new Null_Node(); } else for (int i = 0; i < 4; i++) Links2[i] = new Null_Node(); if (x > 0) { if (y < ydim && z < zdim) Links2[4] = Frame[x - 1][y + 1][z + 1]; else Links2[4] = new Null_Node(); if (y > 0 && z > 0) Links2[5] = Frame[x - 1][y][z]; else Links2[5] = new Null_Node(); if (y > 0 && z < zdim) Links2[6] = Frame[x - 1][y][z + 1]; else Links2[6] = new Null_Node(); if (y < ydim && z > 0) Links2[7] = Frame[x - 1][y + 1][z]; else Links2[7] = new Null_Node(); } else for (int i = 4; i < 8; i++) Links2[i] = new Null_Node(); } else { if (x < xdim) { if (y < ydim && z < zdim) Links2[0] = Frame[x + 1][y][z]; else Links2[0] = new Null_Node(); if (y > 0 && z > 0) Links2[1] = Frame[x + 1][y - 1][z - 1]; else Links2[1] = new Null_Node(); if (y > 0 && z < zdim) Links2[2] = Frame[x + 1][y - 1][z]; else Links2[2] = new Null_Node(); if (y < ydim && z > 0) Links2[3] = Frame[x + 1][y][z - 1]; else Links2[3] = new Null_Node(); } else for (int i = 0; i < 4; i++) Links2[i] = new Null_Node(); if (x > 0) { if (y < ydim && z < zdim) Links2[4] = Frame[x - 1][y][z]; else Links2[4] = new Null_Node(); if (y > 0 && z > 0) Links2[5] = Frame[x - 1][y - 1][z - 1]; else Links2[5] = new Null_Node(); if (y > 0 && z < zdim) Links2[6] = Frame[x - 1][y - 1][z]; else Links2[6] = new Null_Node(); if (y < ydim && z > 0) Links2[7] = Frame[x - 1][y][z - 1]; else Links2[7] = new Null_Node(); } else for (int i = 4; i < 8; i++) Links2[i] = new Null_Node(); } if (y < ydim) Links2[8] = Frame[x][y + 1][z]; else Links2[8] = new Null_Node(); if (y > 0) Links2[9] = Frame[x][y - 1][z]; else Links2[9] = new Null_Node(); if (z < zdim) Links2[10] = Frame[x][y][z + 1]; else Links2[10] = new Null_Node(); if (z > 0) Links2[11] = Frame[x][y][z - 1]; else Links2[11] = new Null_Node(); //foreach (Node n in Links2) Rhino.RhinoDoc.ActiveDoc.Objects.AddLine(Utilities.PachTools.HPttoRPt(Pt), Utilities.PachTools.HPttoRPt(n.Pt)); }
public void Complete_Boundary() { /* [0] = x+y+z+ [1] = x+y-z- [2] = x+y-z+ [3] = x+y+z- */ foreach (Bound_Node.Boundary b in B_List) { if (b == Bound_Node.Boundary.DXPosYPosZPos) { if (Links2[0] is Null_Node) continue; //Rhino.RhinoDoc.ActiveDoc.Objects.AddLine(Utilities.PachTools.HPttoRPt(Pt), Utilities.PachTools.HPttoRPt(Links2[0].Pt)); (Links2[0] as RDD_Node).Links2[5] = new Null_Node(); Links2[0] = new Null_Node(); //(Links2[0] as RDD_Node).Links2[5] = (Links2[0] as RDD_Node).Links2[0]; //Links2[0] = Links2[5]; } else if (b == Bound_Node.Boundary.DXPosYNegZNeg) { if (Links2[1] is Null_Node) continue; //Rhino.RhinoDoc.ActiveDoc.Objects.AddLine(Utilities.PachTools.HPttoRPt(Pt), Utilities.PachTools.HPttoRPt(Links2[1].Pt)); (Links2[1] as RDD_Node).Links2[4] = new Null_Node(); Links2[1] = new Null_Node(); //(Links2[1] as RDD_Node).Links2[4] = (Links2[1] as RDD_Node).Links2[1]; //Links2[1] = Links2[4]; } else if (b == Bound_Node.Boundary.DXPosYNegZPos) { if (Links2[2] is Null_Node) continue; //Rhino.RhinoDoc.ActiveDoc.Objects.AddLine(Utilities.PachTools.HPttoRPt(Pt), Utilities.PachTools.HPttoRPt(Links2[2].Pt)); (Links2[2] as RDD_Node).Links2[7] = new Null_Node(); Links2[2] = new Null_Node(); //(Links2[2] as RDD_Node).Links2[7] = (Links2[2] as RDD_Node).Links2[2]; //Links2[2] = Links2[7]; } else if (b == Bound_Node.Boundary.DXPosYPosZNeg) { if (Links2[3] is Null_Node) continue; //Rhino.RhinoDoc.ActiveDoc.Objects.AddLine(Utilities.PachTools.HPttoRPt(Pt), Utilities.PachTools.HPttoRPt(Links2[3].Pt)); (Links2[3] as RDD_Node).Links2[6] = new Null_Node(); Links2[3] = new Null_Node(); //(Links2[3] as RDD_Node).Links2[6] = (Links2[3] as RDD_Node).Links2[3]; //Links2[3] = Links2[6]; } /* [4] = x-y+z+ [5] = x-y-z- [6] = x-y-z+ [7] = x-y+z- */ else if (b == Bound_Node.Boundary.DXNegYPosZPos) { if (Links2[4] is Null_Node) continue; //Rhino.RhinoDoc.ActiveDoc.Objects.AddLine(Utilities.PachTools.HPttoRPt(Pt), Utilities.PachTools.HPttoRPt(Links2[4].Pt)); (Links2[4] as RDD_Node).Links2[1] = new Null_Node(); Links2[4] = new Null_Node(); //(Links2[4] as RDD_Node).Links2[1] = (Links2[4] as RDD_Node).Links2[4]; //Links2[4] = Links2[1]; } else if (b == Bound_Node.Boundary.DXNegYNegZNeg) { if (Links2[5] is Null_Node) continue; //Rhino.RhinoDoc.ActiveDoc.Objects.AddLine(Utilities.PachTools.HPttoRPt(Pt), Utilities.PachTools.HPttoRPt(Links2[5].Pt)); (Links2[5] as RDD_Node).Links2[0] = new Null_Node(); Links2[5] = new Null_Node(); //(Links2[5] as RDD_Node).Links2[0] = (Links2[5] as RDD_Node).Links2[5]; //Links2[5] = Links2[0]; } else if (b == Bound_Node.Boundary.DXNegYNegZPos) { if (Links2[6] is Null_Node) continue; //Rhino.RhinoDoc.ActiveDoc.Objects.AddLine(Utilities.PachTools.HPttoRPt(Pt), Utilities.PachTools.HPttoRPt(Links2[6].Pt)); (Links2[6] as RDD_Node).Links2[3] = new Null_Node(); Links2[6] = new Null_Node(); //(Links2[6] as RDD_Node).Links2[3] = (Links2[6] as RDD_Node).Links2[6]; //Links2[6] = Links2[3]; } else if (b == Bound_Node.Boundary.DXNegYPosZNeg) { if (Links2[7] is Null_Node) continue; //Rhino.RhinoDoc.ActiveDoc.Objects.AddLine(Utilities.PachTools.HPttoRPt(Pt), Utilities.PachTools.HPttoRPt(Links2[7].Pt)); (Links2[7] as RDD_Node).Links2[2] = new Null_Node(); Links2[7] = new Null_Node(); //(Links2[7] as RDD_Node).Links2[2] = (Links2[7] as RDD_Node).Links2[7]; //Links2[7] = Links2[2]; } /* [8] = y+ [9] = y- [10] = z+ [11] = z- */ else if (b == Bound_Node.Boundary.AYPos) { if (Links2[8] is Null_Node) continue; //Rhino.RhinoDoc.ActiveDoc.Objects.AddLine(Utilities.PachTools.HPttoRPt(Pt), Utilities.PachTools.HPttoRPt(Links2[8].Pt)); (Links2[8] as RDD_Node).Links2[9] = new Null_Node(); Links2[8] = new Null_Node(); // (Links2[8] as RDD_Node).Links2[9] = (Links2[8] as RDD_Node).Links2[8]; // Links2[8] = Links2[9]; } else if (b == Bound_Node.Boundary.AYNeg) { if (Links2[9] is Null_Node) continue; //Rhino.RhinoDoc.ActiveDoc.Objects.AddLine(Utilities.PachTools.HPttoRPt(Pt), Utilities.PachTools.HPttoRPt(Links2[9].Pt)); (Links2[9] as RDD_Node).Links2[8] = new Null_Node(); Links2[9] = new Null_Node(); //(Links2[9] as RDD_Node).Links2[8] = (Links2[9] as RDD_Node).Links2[9]; //Links2[9] = Links2[8]; } else if (b == Bound_Node.Boundary.AZPos) { if (Links2[10] is Null_Node) continue; //Rhino.RhinoDoc.ActiveDoc.Objects.AddLine(Utilities.PachTools.HPttoRPt(Pt), Utilities.PachTools.HPttoRPt(Links2[10].Pt)); (Links2[10] as RDD_Node).Links2[11] = new Null_Node(); Links2[10] = new Null_Node(); //(Links2[10] as RDD_Node).Links2[11] = (Links2[10] as RDD_Node).Links2[10]; //Links2[10] = Links2[11]; } else if (b == Bound_Node.Boundary.AZNeg) { if (Links2[11] is Null_Node) continue; //Rhino.RhinoDoc.ActiveDoc.Objects.AddLine(Utilities.PachTools.HPttoRPt(Pt), Utilities.PachTools.HPttoRPt(Links2[11].Pt)); (Links2[11] as RDD_Node).Links2[10] = new Null_Node(); Links2[11] = new Null_Node(); //(Links2[11] as RDD_Node).Links2[10] = (Links2[11] as RDD_Node).Links2[11]; //Links2[11] = Links2[10]; } } /* [0] = x+y+z+ [1] = x+y-z- [2] = x+y-z+ [3] = x+y+z- [4] = x-y+z+ [5] = x-y-z- [6] = x-y-z+ [7] = x-y+z- [8] = y+ [9] = y- [10] = z+ [11] = z- */ }
public override void Link_Nodes(ref Node[][][] Frame, int x, int y, int z) { int xdim = Frame.Length - 1; int ydim = Frame[0].Length - 1; int zdim = Frame[0][0].Length - 1; if (x < xdim) { Xpos_Link = Frame[x + 1][y][z] as P_Node; } else Xpos_Link = new Null_Node(); //FrameX[x + 1, y, z].id.AddRange(id); if (y < ydim) { Ypos_Link = Frame[x][y + 1][z] as P_Node; } else Ypos_Link = new Null_Node(); //FrameY[x, y + 1, z].id.AddRange(id); if (z < zdim) { Zpos_Link = Frame[x][y][z + 1] as P_Node; } else Zpos_Link = new Null_Node(); //FrameZ[x, y, z + 1].id.AddRange(id); if (x > 0) { Xneg_Link = Frame[x - 1][y][z] as P_Node; } else Xneg_Link = new Null_Node(); //FrameX[x, y, z].id.AddRange(id); if (y > 0) { Yneg_Link = Frame[x][y - 1][z] as P_Node; } else Yneg_Link = new Null_Node(); //FrameY[x, y, z].id.AddRange(id); if (z > 0) { Zneg_Link = Frame[x][y][z - 1] as P_Node; } else Zneg_Link = new Null_Node(); //FrameZ[x, y, z].id.AddRange(id); Links2 = new P_Node[12]; Links3 = new P_Node[8]; if (x < xdim && y < ydim) Links2[0] = Frame[x + 1][y + 1][z] as P_Node; else Links2[0] = new Null_Node(); if (x > 0 && y > 0) Links2[1] = Frame[x - 1][y - 1][z] as P_Node; else Links2[1] = new Null_Node(); if (x < xdim && y > 0) Links2[2] = Frame[x + 1][y - 1][z] as P_Node; else Links2[2] = new Null_Node(); if (x > 0 && y < ydim) Links2[3] = Frame[x - 1][y + 1][z] as P_Node; else Links2[3] = new Null_Node(); if (x < xdim && z < zdim) Links2[4] = Frame[x + 1][y][z + 1] as P_Node; else Links2[4] = new Null_Node(); if (x > 0 && z > 0) Links2[5] = Frame[x - 1][y][z - 1] as P_Node; else Links2[5] = new Null_Node(); if (x > 0 && z < zdim) Links2[6] = Frame[x - 1][y][z + 1] as P_Node; else Links2[6] = new Null_Node(); if (x < xdim && z > 0) Links2[7] = Frame[x + 1][y][z - 1] as P_Node; else Links2[7] = new Null_Node(); if (y < ydim && z < zdim) Links2[8] = Frame[x][y + 1][z + 1] as P_Node; else Links2[8] = new Null_Node(); if (y > 0 && z > 0) Links2[9] = Frame[x][y - 1][z - 1] as P_Node; else Links2[9] = new Null_Node(); if (y > 0 && z < zdim) Links2[10] = Frame[x][y - 1][z + 1] as P_Node; else Links2[10] = new Null_Node(); if (y < ydim && z > 0) Links2[11] = Frame[x][y + 1][z - 1] as P_Node; else Links2[11] = new Null_Node(); if (x < xdim && y < ydim && z < zdim) Links3[0] = Frame[x + 1][y + 1][z + 1] as P_Node; else Links3[0] = new Null_Node(); if (x > 0 && y > 0 && z > 0) Links3[1] = Frame[x - 1][y - 1][z - 1] as P_Node; else Links3[1] = new Null_Node(); if (x > 0 && y > 0 && z < zdim) Links3[2] = Frame[x - 1][y - 1][z + 1] as P_Node; else Links3[2] = new Null_Node(); if (x < xdim && y < ydim && z > 0) Links3[3] = Frame[x + 1][y + 1][z - 1] as P_Node; else Links3[3] = new Null_Node(); if (x > 0 && y < ydim && z < zdim) Links3[4] = Frame[x - 1][y + 1][z + 1] as P_Node; else Links3[4] = new Null_Node(); if (x < xdim && y > 0 && z > 0) Links3[5] = Frame[x + 1][y - 1][z - 1] as P_Node; else Links3[5] = new Null_Node(); if (x > 0 && y < ydim && z > 0) Links3[6] = Frame[x - 1][y + 1][z - 1] as P_Node; else Links3[6] = new Null_Node(); if (x < xdim && y > 0 && z < zdim) Links3[7] = Frame[x + 1][y - 1][z + 1] as P_Node; else Links3[7] = new Null_Node(); }