public VTex cLEnd() { pnt3d correctedEndPnt = new pnt3d(cdx(), cdy(), 0); VTex returnVertex = new VTex(correctedEndPnt, gEnd.getBuldge()); return(returnVertex); }
public VTex lEnd() //Local start vertex information always 0,0,0 and the global start bulge { pnt3d p = new pnt3d(dx(), dy(), 0); VTex returnVal = new VTex(p, gEnd.getBuldge()); return(returnVal); }
public VTex lStart() //Local start vertex information always 0,0,0 and the global start bulge { pnt3d p = new pnt3d(); VTex returnVal = new VTex(p, gStart.getBuldge()); return(returnVal); }
public List <VTex> getPlineEnityCoords() { List <VTex> returnVertices = new List <VTex>(); Object out1 = new object(); object out2 = new object(); try { cadApp.ActiveDocument.Utility.GetEntity(out out1, out out2, "Select polyline:"); if (out1 == null) { MessageBox.Show("Nothing Selected!"); } Autodesk.AutoCAD.Interop.Common.AcadLWPolyline pline = out1 as Autodesk.AutoCAD.Interop.Common.AcadLWPolyline; double[] coords = pline.Coordinates as double[]; for (int i = 0; i < (coords.Length + 1) / 2; ++i) { pnt3d pnt = new pnt3d(coords[2 * i], coords[2 * i + 1], 0); VTex v = new VTex(pnt, pline.GetBulge(i)); returnVertices.Add(v); } } catch { MessageBox.Show("Error Selecting Entity!"); } return(returnVertices); }
private void setCorrectedSegements() { for (int i = 0; i < originalSegments.Count; ++i) { if (i == 0) { double cx = originalSegments[i].getGStart().getPnt3d().getX() + originalSegments[i].cdx(); double cy = originalSegments[i].getGStart().getPnt3d().getY() + originalSegments[i].cdy(); pnt3d correctedEndPnt = new pnt3d(cx, cy, 0); VTex correctedEndVertex = new VTex(correctedEndPnt, originalSegments[i].getGEnd().getBuldge()); pnt3d newStartPoint = new pnt3d(originalSegments[i].getGStart().getPnt3d().getX(), originalSegments[i].getGStart().getPnt3d().getY(), 0); double newBulgeStart = originalSegments[i].getGStart().getBuldge(); VTex correctedStartVertex = new MWCadNameSpace.VTex(newStartPoint, newBulgeStart); Segment newCorrectedSegment = new MWCadNameSpace.Segment(correctedStartVertex, correctedEndVertex); correctedSegments.Add(newCorrectedSegment); } else { VTex correctedStartVertex = correctedSegments[i - 1].getGEnd(); //double check_cdx = originalSegments[i].cdx(); //double check_cdy = originalSegments[i].cdy(); //MessageBox.Show("Corrected dx and dy " + check_cdx + "," + check_cdy); //double check_getx = correctedStartVertex.getPnt3d().getX(); //double check_gety = correctedStartVertex.getPnt3d().getY(); //MessageBox.Show("Corrected startx and starty " + check_getx + "," + check_gety); double cx = correctedStartVertex.getPnt3d().getX() + originalSegments[i].cdx(); double cy = correctedStartVertex.getPnt3d().getY() + originalSegments[i].cdy(); double newEndx = cx; double newEndy = cy; pnt3d correctedEndPnt = new pnt3d(newEndx, newEndy, 0); VTex correctedEndVertex = new VTex(correctedEndPnt, originalSegments[i].getGEnd().getBuldge()); Segment newCorrectedSegment = new MWCadNameSpace.Segment(correctedStartVertex, correctedEndVertex); correctedSegments.Add(newCorrectedSegment); } } }
public Segment extractAsSegment(pnt3d startPnt) { //set the start point VTex startV = new VTex(startPnt, this.radiusAsBuldge()); //find the end point double bearingAngle = (Convert.ToDouble(degrees) + Convert.ToDouble(minutes) / 60.00 + Convert.ToDouble(seconds) / 3600.00) * (Math.PI / 180); double dx = 0; double dy = 0; if (startDirection.Value == "North" && endDirection.Value == "East") { dx = (Math.Sin(bearingAngle) * length); dy = (Math.Cos(bearingAngle) * length); } else if (startDirection.Value == "North" && endDirection.Value == "West") { dx = -(Math.Sin(bearingAngle) * length); dy = (Math.Cos(bearingAngle) * length); } else if (startDirection.Value == "South" && endDirection.Value == "West") { dx = -(Math.Sin(bearingAngle) * length); dy = -(Math.Cos(bearingAngle) * length); } else if (startDirection.Value == "South" && endDirection.Value == "East") { dx = +(Math.Sin(bearingAngle) * length); dy = -(Math.Cos(bearingAngle) * length); } pnt3d endPnt = new pnt3d(startV.getPnt3d().getX() + dx, startV.getPnt3d().getY() + dy); VTex endV = new VTex(endPnt, 0); Segment returnSeg = new Segment(startV, endV); return(returnSeg); }
VTex gEnd; //Global Vertex Data public Segment(VTex _gStart, VTex _gEnd) { gStart = _gStart; gEnd = _gEnd; }