public static void ExportToDRG(IHeadsApplication app, string strPath) { CCfgtype cfg = app.ActiveDocument.ConfigParam; CBox box = app.ActiveDocument.BoundingBox; double[] Arr = new double[] { box.BottomRight.X, box.BottomRight.Y, box.TopLeft.X, box.TopLeft.Y }; cfg.XLate_X = Arr[0]; cfg.XLate_Y = Arr[1]; cfg.hs = (297 / (Arr[2] - cfg.XLate_X)); BinaryWriter bw = new BinaryWriter(new FileStream(strPath, FileMode.Create), Encoding.Default); Eldtype eld = new Eldtype(); eld.Code = 99; bw.Write(eld.Code); cfg.ToStream(bw); IHdEntity[] allEntities = app.ActiveDocument.Entities; foreach (IHdEntity entity in allEntities) { if (entity.EntityName == "LINE") { IHdLine hdline = (IHdLine)entity; eld.Code = (short)((Constants.BuildType == eHEADS_RELEASE_TYPE.DEMO) ? 91 : 1); bw.Write(eld.Code); Linetype line = new Linetype(); line.elatt = 0; line.scatt = 1; line.layer = hdline.Layer; line.laatt = 1; line.x1 = hdline.StartPoint.X; line.y1 = hdline.StartPoint.Y; line.z1 = hdline.StartPoint.Z; line.x1 = line.x1 / cfg.XMetric; line.y1 = line.y1 / cfg.YMetric; line.x2 = hdline.EndPoint.X; line.y2 = hdline.EndPoint.Y; line.z2 = hdline.EndPoint.Z; line.x2 = line.x2 / cfg.XMetric; line.y2 = line.y2 / cfg.YMetric; line.color = entity.ColorIndex; if (hdline.Label == "") { line.label = "$$$$$$$$:****"; } else { line.label = hdline.Label; } line.ToStream(bw); } else if (entity.EntityName == "ELLIPSE") { IHdEllipse hdEllipse = (IHdEllipse)entity; eld.Code = (short)((Constants.BuildType == eHEADS_RELEASE_TYPE.DEMO) ? 93 : 3); bw.Write(eld.Code); Circletype circle1 = new Circletype(); circle1.elatt = 0; circle1.scatt = 1; circle1.Layer = hdEllipse.Layer; circle1.laatt = 1; circle1.xc = hdEllipse.CenterPoint.X; circle1.yc = hdEllipse.CenterPoint.Y; circle1.xc = circle1.xc / cfg.XMetric; circle1.yc = circle1.yc / cfg.YMetric; circle1.Radius = hdEllipse.Radius; circle1.color = entity.ColorIndex; if (hdEllipse.Label == "") { circle1.Label = "$$$$$$$$:****"; } else { circle1.Label = hdEllipse.Label; } circle1.ToStream(bw); } else if (entity.EntityName == "ARC") { IHdArc hdArc = (IHdArc)entity; eld.Code = (short)((Constants.BuildType == eHEADS_RELEASE_TYPE.DEMO) ? 94 : 4); bw.Write(eld.Code); Arctype arc = new Arctype(); arc.elatt = 0; arc.scatt = 1; arc.Layer = hdArc.Layer; arc.laatt = 1; arc.xc = hdArc.CenterPoint.X; arc.yc = hdArc.CenterPoint.Y; arc.xc = arc.xc / cfg.XMetric; arc.yc = arc.yc / cfg.YMetric; arc.xs = (arc.xc + hdArc.Radius * Math.Cos(hdArc.StartAngle)) / cfg.XMetric; arc.ys = (arc.yc + hdArc.Radius * Math.Sin(hdArc.StartAngle)) / cfg.YMetric; arc.xe = (arc.xc + hdArc.Radius * Math.Cos(hdArc.EndAngle)) / cfg.XMetric; arc.ye = (arc.yc + hdArc.Radius * Math.Sin(hdArc.EndAngle)) / cfg.YMetric; arc.Radius = hdArc.Radius; arc.Color = entity.ColorIndex; if (hdArc.Label == "") { arc.Label = "$$$$$$$$:****"; } else { arc.Label = hdArc.Label; } arc.ToStream(bw); } else if (entity.EntityName == "POLYLINE3D") { IHdPolyline3D hdPline = (IHdPolyline3D)entity; CPoint3D[] Coord = hdPline.Coordinates; int NumVerticies = Coord.Length - 2; for (int j = 0; j <= NumVerticies; j++) { eld.Code = (short)((Constants.BuildType == eHEADS_RELEASE_TYPE.DEMO) ? 91 : 1); bw.Write(eld.Code); Linetype line = new Linetype(); if (j == 0) { line.elatt = 0; } else { line.elatt = 1; } //line.elatt = X; line.scatt = 1; line.layer = hdPline.Layer; line.laatt = 1; line.x1 = Coord[j].X; line.y1 = Coord[j].Y; line.z1 = Coord[j].Z; line.x1 = line.x1 / cfg.XMetric; line.y1 = line.y1 / cfg.YMetric; line.x2 = Coord[j + 1].X; line.y2 = Coord[j + 1].Y; line.z2 = Coord[j + 1].Z; line.x2 = line.x2 / cfg.XMetric; line.y2 = line.y2 / cfg.YMetric; line.color = entity.ColorIndex; if (hdPline.Label == "") { line.label = "$$$$$$$$:****"; } else { line.label = hdPline.Label; } line.ToStream(bw); } } else if (entity.EntityName == "TEXT") { IHdText hdTxt = (IHdText)entity; eld.Code = (short)((Constants.BuildType == eHEADS_RELEASE_TYPE.DEMO) ? 90 : 9); bw.Write(eld.Code); TEXTtype text = new TEXTtype(); text.Length = 1; text.scatt = 1; text.Layer = hdTxt.Layer; text.laatt = 1; text.x1 = hdTxt.InsertionPoint.X; text.y1 = hdTxt.InsertionPoint.Y; text.x1 = text.x1 / cfg.XMetric; text.y1 = text.y1 / cfg.YMetric; text.Size = hdTxt.Height; text.rotn = hdTxt.Rotation * 180 / Math.PI; text.text = hdTxt.Text; text.Color = entity.ColorIndex; if (hdTxt.Label == "") { text.Label = "$$$$$$$$:****"; } else { text.Label = hdTxt.Label; } text.ToStream(bw); } } bw.Close(); }
public static void DrawChainage(IHeadsApplication app, string szFileName, string sType, bool bEngFunc) { // 11/09/01 Eldtype eld = new Eldtype(); Linetype line = new Linetype(); Boxtype box = new Boxtype(); Circletype circle1 = new Circletype(); Arctype arc = new Arctype(); TEXTtype text = new TEXTtype(); CCfgtype cfg = new CCfgtype(); BinaryReader fhandle; //int fhandle; double LWidthDbl = 0; //'/l->line double BWidthDbl; //'/b->box double AWidthDbl; //'/ a->text double CWidthDbl; //'/c->circle //double RotAngle = 0; //IHdPolyline3D pLine; // no plines req d deb //CvdSelection MySelSet; // renentry d deb 11/09/01 //CVdView *drawing = NULL; //frmDrawing drawing; //DrgReturn Retval; //int i = 0; CCfgtype tempcfg = new CCfgtype(); long NumPts = 0; //if(!bEngFunc) //{ // CDocument* pDocument = theApp.m_pDocTemplate->CreateNewDocument(); // BOOL bAutoDelete = pDocument->m_bAutoDelete; // pDocument->m_bAutoDelete = FALSE; // don't destroy if something goes wrong // CFrameWnd* pFrame = theApp.m_pDocTemplate->CreateNewFrame(pDocument, NULL); // pDocument->m_bAutoDelete = bAutoDelete; // pDocument->SetPathName(szFileName); // theApp.m_pDocTemplate->InitialUpdateFrame(pFrame, pDocument, TRUE); //} //drawing = (CVdView*)GetCurrentView(); if (File.Exists(szFileName) == false) { return; } fhandle = new BinaryReader(new FileStream(szFileName, FileMode.Open), Encoding.Default); // if(bEngFunc) cfg = app.ActiveDocument.ConfigParam; while (fhandle.BaseStream.Position < fhandle.BaseStream.Length) { eld.Code = fhandle.ReadInt16(); if (eld.Code == 99) { if (sType == "PVR" && (!bEngFunc)) { cfg = CCfgtype.FromStream(fhandle); app.ActiveDocument.ConfigParam = cfg; } else { tempcfg = CCfgtype.FromStream(fhandle); } //RotAngle = 0; NumPts = 0; } else if (eld.Code == 1) // line { line = Linetype.FromStream(fhandle); XlateNmat(ref line.x1, ref line.y1, cfg.XMetric, cfg.YMetric); XlateNmat(ref line.x2, ref line.y2, cfg.XMetric, cfg.YMetric); LWidthDbl = (double)(line.width); //Convert to double NumPts = NumPts + 1; if (line.scatt == 1) { IHdLine Entity = app.ActiveDocument.DrawLine(new CPoint3D(line.x1, line.y1, line.z1), new CPoint3D(line.x2, line.y2, line.z2)); if (Entity != null) { if (!bEngFunc) { string layerName = line.layer; DrawingUtil.SetLayerToEntity(bEngFunc, Entity, app.ActiveDocument, layerName); //Entity.SetPenStyle(line.style); //Entity.SetPenWidth(LWidthDbl); } } Entity.Label = sType; } } else if (eld.Code == 2) { box = Boxtype.FromStream(fhandle); box.style = (short)(box.style - 1); XlateNmat(ref box.x1, ref box.y1, cfg.XMetric, cfg.YMetric); XlateNmat(ref box.x2, ref box.y2, cfg.XMetric, cfg.YMetric); BWidthDbl = (double)(box.Width); if (box.scatt == 1) { IHdPolyline3D polyRect = DrawingUtil.DrawRect(app.ActiveDocument , new CPoint3D(box.x1, box.y1, 0) , new CPoint3D(box.x2, box.y2, 0)); DrawingUtil.SetLayerToEntity(bEngFunc, polyRect, app.ActiveDocument, box.Layer); polyRect.Label = sType; } } else if (eld.Code == 3) { circle1 = Circletype.FromStream(fhandle); circle1.style = (short)(circle1.style - 1); XlateNmat(ref circle1.xc, ref circle1.yc, cfg.XMetric, cfg.YMetric); CWidthDbl = (double)(circle1.Width); if (circle1.scatt == 1) { IHdEllipse hdellipse = app.ActiveDocument.DrawEllipse(new CPoint3D(circle1.xc, circle1.yc, 0), circle1.Radius); DrawingUtil.SetLayerToEntity(bEngFunc, hdellipse, app.ActiveDocument, circle1.Layer); hdellipse.Label = sType; } } else if (eld.Code == 4) { arc = Arctype.FromStream(fhandle); arc.style = (short)(arc.style - 1); XlateNmat(ref arc.xc, ref arc.yc, cfg.XMetric, cfg.YMetric); XlateNmat(ref arc.xs, ref arc.ys, cfg.XMetric, cfg.YMetric); XlateNmat(ref arc.xe, ref arc.ye, cfg.XMetric, cfg.YMetric); AWidthDbl = (double)(arc.Width); if (arc.scatt != 0) { IHdArc hdarc = DrawingUtil.DrawArc(app.ActiveDocument, arc.xs, arc.ys, arc.xe, arc.ye, arc.xc, arc.yc, arc.Radius); DrawingUtil.SetLayerToEntity(bEngFunc, hdarc, app.ActiveDocument, arc.Layer); hdarc.Label = sType; } } else if (eld.Code == 9) { text = TEXTtype.FromStream(fhandle); text.style = (short)(text.style - 1); XlateNmat(ref text.x1, ref text.y1, cfg.XMetric, cfg.YMetric); if (text.scatt != 0) { IHdText hdtext = app.ActiveDocument.DrawText(new CPoint3D(text.x1, text.y1, 0), text.text, text.Size); DrawingUtil.SetLayerToEntity(bEngFunc, hdtext, app.ActiveDocument, text.Layer); hdtext.Rotate(new CPoint3D(text.x1, text.y1, 0), ViewerUtils.DegreeToRadian(text.rotn)); hdtext.Label = sType; //DrawText(bEngFunc, text.text, text.x1, text.y1, text.Size, text.Color, text.style, text.Label, text.Layer, text.rotn, sType); } } } fhandle.Close(); }
public static void DrawDrg(IHeadsApplication app, string szFileName, string sType, bool bEngFunc) { if (File.Exists(szFileName) == false) { return; } Eldtype eld = new Eldtype(); Linetype line = new Linetype(); Boxtype box = new Boxtype(); Circletype circle1 = new Circletype(); Arctype arc = new Arctype(); TEXTtype text = new TEXTtype(); CCfgtype cfg = new CCfgtype(); // Cfgtype cfg1; double last_x1; double last_y1; double last_x2; double last_y2; BinaryReader fhandle; //int fhandle; double LWidthDbl = 0; //'/l->line double BWidthDbl; //'/b->box double AWidthDbl; //'/ a->text double CWidthDbl; //'/c->circle //double RotAngle = 0; IHdPolyline3D pLine; //DrgReturn Retval; //int i = 0; CCfgtype tempcfg = new CCfgtype(); // CWaitCursor wait; long NumPts = 0; //if (!bEngFunc) //{ // CDocument* pDocument = theApp.m_pDocTemplate->CreateNewDocument(); // BOOL bAutoDelete = pDocument->m_bAutoDelete; // pDocument->m_bAutoDelete = FALSE; // don't destroy if something goes wrong // CFrameWnd* pFrame = theApp.m_pDocTemplate->CreateNewFrame(pDocument, NULL); // pDocument->m_bAutoDelete = bAutoDelete; // pDocument->SetPathName(szFileName); // theApp.m_pDocTemplate->InitialUpdateFrame(pFrame, pDocument, TRUE); //} fhandle = new BinaryReader(new FileStream(szFileName, FileMode.Open), Encoding.Default); pLine = null; cfg = app.ActiveDocument.ConfigParam; while (fhandle.BaseStream.Position < fhandle.BaseStream.Length) { eld.Code = 0; eld.Code = fhandle.ReadInt16(); if (eld.Code == 99) { if (sType == "PVR" && (!bEngFunc)) { cfg = CCfgtype.FromStream(fhandle); app.ActiveDocument.ConfigParam = cfg; } else { tempcfg = CCfgtype.FromStream(fhandle); } //RotAngle = 0; NumPts = 0; } else if (eld.Code == 1) { line = Linetype.FromStream(fhandle); XlateNmat(ref line.x1, ref line.y1, cfg.XMetric, cfg.YMetric); XlateNmat(ref line.x2, ref line.y2, cfg.XMetric, cfg.YMetric); LWidthDbl = (double)(line.width); //Convert result into double NumPts = NumPts + 1; if (line.scatt == 1) { line.style = (short)(line.style - 1); // to check this d deb 30/aug/01 if (pLine == null) { List <CPoint3D> listpt = new List <CPoint3D>(); listpt.Add(new CPoint3D(line.x1, line.y1, line.z1)); listpt.Add(new CPoint3D(line.x2, line.y2, line.z2)); pLine = app.ActiveDocument.DrawPolyline3D(listpt); DrawingUtil.SetLayerToEntity(bEngFunc, pLine, app.ActiveDocument, line.layer); pLine.Label = sType; } else { pLine.AppendVertex(new CPoint3D(line.x2, line.y2, line.z2)); } } last_x1 = line.x1; last_y1 = line.y1; last_x2 = line.x2; last_y2 = line.y2; } else if (eld.Code == 2) { box = Boxtype.FromStream(fhandle); box.style = (short)(box.style - 1); XlateNmat(ref box.x1, ref box.y1, cfg.XMetric, cfg.YMetric); XlateNmat(ref box.x2, ref box.y2, cfg.XMetric, cfg.YMetric); BWidthDbl = (double)(box.Width); if (box.scatt == 1) { IHdPolyline3D polyRect = DrawingUtil.DrawRect(app.ActiveDocument , new CPoint3D(box.x1, box.y1, 0) , new CPoint3D(box.x2, box.y2, 0)); DrawingUtil.SetLayerToEntity(bEngFunc, polyRect, app.ActiveDocument, box.Layer); polyRect.Label = sType; } } else if (eld.Code == 3) { circle1 = Circletype.FromStream(fhandle); circle1.style = (short)(circle1.style - 1); XlateNmat(ref circle1.xc, ref circle1.yc, cfg.XMetric, cfg.YMetric); CWidthDbl = (double)(circle1.Width); if (circle1.scatt == 1) { IHdEllipse hdellipse = app.ActiveDocument.DrawEllipse(new CPoint3D(circle1.xc, circle1.yc, 0), circle1.Radius); DrawingUtil.SetLayerToEntity(bEngFunc, hdellipse, app.ActiveDocument, circle1.Layer); circle1.Label = sType; } } else if (eld.Code == 4) { arc = Arctype.FromStream(fhandle); arc.style = (short)(arc.style - 1); XlateNmat(ref arc.xc, ref arc.yc, cfg.XMetric, cfg.YMetric); XlateNmat(ref arc.xs, ref arc.ys, cfg.XMetric, cfg.YMetric); XlateNmat(ref arc.xe, ref arc.ye, cfg.XMetric, cfg.YMetric); AWidthDbl = (double)(arc.Width); if (arc.scatt != 0) { IHdArc hdarc = DrawingUtil.DrawArc(app.ActiveDocument, arc.xs, arc.ys, arc.xe, arc.ye, arc.xc, arc.yc, arc.Radius); DrawingUtil.SetLayerToEntity(bEngFunc, hdarc, app.ActiveDocument, arc.Layer); hdarc.Label = sType; } } else if (eld.Code == 9) { text = TEXTtype.FromStream(fhandle); text.style = (short)(text.style - 1); XlateNmat(ref text.x1, ref text.y1, cfg.XMetric, cfg.YMetric); if (text.scatt != 0) { IHdText hdtext = app.ActiveDocument.DrawText(new CPoint3D(text.x1, text.y1, 0), text.text, text.Size); DrawingUtil.SetLayerToEntity(bEngFunc, hdtext, app.ActiveDocument, text.Layer); hdtext.Rotate(new CPoint3D(text.x1, text.y1, 0), text.rotn); hdtext.Label = sType; } } } fhandle.Close(); }
public static void ImportFromDRG(IHeadsApplication app, string strPath, string sType, bool bEngFunc) { app.ActiveDocument.DisableUndoRecording(true); CCfgtype cfg = app.ActiveDocument.ConfigParam; Linetype line = null; Circletype circle1 = null; TEXTtype text = null; Arctype arc = null; BinaryReader br = new BinaryReader(new FileStream(strPath, FileMode.Open, FileAccess.Read), Encoding.Default); Eldtype eld = new Eldtype(); while (br.BaseStream.Position < br.BaseStream.Length) { eld.Code = br.ReadInt16(); if (GetDrgEleType(eld.Code) == DrgEleType.CONFIG) { if (sType == "PVR" && (!bEngFunc)) { cfg = CCfgtype.FromStream(br); app.ActiveDocument.ConfigParam = cfg; } else { CCfgtype tempcfg = CCfgtype.FromStream(br); } } else if (GetDrgEleType(eld.Code) == DrgEleType.LINE) { line = Linetype.FromStream(br); XlateNmat(ref line.x1, ref line.y1, cfg.XMetric, cfg.YMetric); XlateNmat(ref line.x2, ref line.y2, cfg.XMetric, cfg.YMetric); //LWidthDbl = (double)(line.Width); //Convert result into double :::why? //NumPts = NumPts + 1; if (line.scatt == 1) { line.style = (short)(line.style - 1); IHdLine aLine = app.ActiveDocument.DrawLine(line.StartPoint, line.EndPoint); aLine.ColorIndex = line.color; SetLayerToEntity(bEngFunc, aLine, app.ActiveDocument, line.layer); }//end if(line.scatt == 1) } else if (GetDrgEleType(eld.Code) == DrgEleType.ELLIPSE) { circle1 = Circletype.FromStream(br); circle1.style = (short)(circle1.style - 1); // circle1.Color = HeadsToVDraw(circle1.Color); XlateNmat(ref circle1.xc, ref circle1.yc, cfg.XMetric, cfg.YMetric); //CWidthDbl = (double)(circle1.Width); if (circle1.scatt == 1) { IHdEllipse ellipse = app.ActiveDocument.DrawEllipse(new CPoint3D(circle1.xc, circle1.yc, 0), circle1.Radius); //DrawCircle(bEngFunc, circle1.xc, circle1.yc, circle1.Radius, circle1.Color, circle1.style, CWidthDbl, circle1.Label, circle1.Layer, RotAngle, sType); SetLayerToEntity(bEngFunc, ellipse, app.ActiveDocument, circle1.Layer); ellipse.Label = circle1.Label; ellipse.ColorIndex = circle1.color; } } else if (GetDrgEleType(eld.Code) == DrgEleType.ARC) { arc = Arctype.FromStream(br); arc.style = (short)(arc.style - 1); // arc.Color = HeadsToVDraw(arc.Color); XlateNmat(ref arc.xc, ref arc.yc, cfg.XMetric, cfg.YMetric); XlateNmat(ref arc.xs, ref arc.ys, cfg.XMetric, cfg.YMetric); XlateNmat(ref arc.xe, ref arc.ye, cfg.XMetric, cfg.YMetric); //AWidthDbl = (double)(arc.Width); if (arc.scatt == 1) { IHdArc hdarc = DrawArc(app.ActiveDocument, arc.xs, arc.ys, arc.xe, arc.ye, arc.xc, arc.yc, arc.Radius); SetLayerToEntity(bEngFunc, hdarc, app.ActiveDocument, arc.Layer); hdarc.Label = arc.Label; hdarc.ColorIndex = arc.Color; } } else if (GetDrgEleType(eld.Code) == DrgEleType.TEXT) { text = TEXTtype.FromStream(br); text.style = (short)(text.style - 1); XlateNmat(ref text.x1, ref text.y1, cfg.XMetric, cfg.YMetric); if (text.scatt != 0) { IHdText hdtext = app.ActiveDocument.DrawText(new CPoint3D(text.x1, text.y1, 0), text.text, text.Size); DrawingUtil.SetLayerToEntity(bEngFunc, hdtext, app.ActiveDocument, text.Layer); hdtext.Label = text.Label; hdtext.Rotate(new CPoint3D(text.x1, text.y1, 0), ViewerUtils.DegreeToRadian(text.rotn)); hdtext.ColorIndex = text.Color; } } } br.Close(); app.ActiveDocument.DisableUndoRecording(false); app.ZoomExtents(); }