private void InternListTable(ref int rlngIdx) { IEnumerator enumerator = default(IEnumerator); AcadLayer dobjAcadLayer2; try { enumerator = mobjAcadLayers.GetValues().GetEnumerator(); object dvarXDataType = default(object); object dvarXDataValue = default(object); while (enumerator.MoveNext()) { dobjAcadLayer2 = (AcadLayer)enumerator.Current; AcadLayer acadLayer = dobjAcadLayer2; InternAddToDictLine(ref rlngIdx, 0, acadLayer.DXFName); InternAddToDictLine(ref rlngIdx, 5, acadLayer.Handle); hwpDxf_List.BkDXFList_Reactors((Dictionary <object, object>)acadLayer.DictReactors, ref rlngIdx, ref mobjDictReadCodes, ref mobjDictReadValues); hwpDxf_List.BkDXFList_XDictionary((Dictionary <object, object>)acadLayer.DictXDictionaries, ref rlngIdx, ref mobjDictReadCodes, ref mobjDictReadValues); InternAddToDictLine(ref rlngIdx, 330, acadLayer.OwnerID); InternAddToDictLine(ref rlngIdx, 100, acadLayer.SuperiorObjectName); InternAddToDictLine(ref rlngIdx, 100, acadLayer.ObjectName); InternAddToDictLine(ref rlngIdx, 2, acadLayer.Name); InternAddToDictLine(ref rlngIdx, 70, acadLayer.Flags70); int dlngColor = (int)acadLayer.Color; if (!acadLayer.LayerOn) { dlngColor = checked (dlngColor * -1); } InternAddToDictLine(ref rlngIdx, 62, dlngColor); InternAddToDictLine(ref rlngIdx, 6, acadLayer.Linetype); if (!acadLayer.Plottable) { InternAddToDictLine(ref rlngIdx, 290, hwpDxf_Functions.BkDXF_BooleanToInteger(acadLayer.Plottable)); } InternAddToDictLine(ref rlngIdx, 370, acadLayer.Lineweight); InternAddToDictLine(ref rlngIdx, Conversions.ToInteger("390"), acadLayer.PlotStyleNameReference); acadLayer.GetXData(null, ref dvarXDataType, ref dvarXDataValue); hwpDxf_List.BkDXFList_XData(RuntimeHelpers.GetObjectValue(dvarXDataType), RuntimeHelpers.GetObjectValue(dvarXDataValue), ref rlngIdx, ref mobjDictReadCodes, ref mobjDictReadValues); acadLayer = null; } } finally { if (enumerator is IDisposable) { (enumerator as IDisposable).Dispose(); } } dobjAcadLayer2 = null; }
private AcadLayer TerminationPoints; //Layer Termination Points private void CreateAutoCADObject() { try { CloseAllInstance(); // this method is used to close any opened instance of autocad, if you dont require it then comment it gbl_app = new AcadApplication(); gbl_doc = gbl_app.ActiveDocument; gbl_app.Application.Visible = true; // gbl_modSpace = (AcadModelSpaceClass)gbl_doc.ModelSpace; gbl_doc.Linetypes.Load("HIDDEN", "acad.lin"); gbl_doc.Linetypes.Load("CENTER", "acad.lin"); //Other Objects Layer SwitchLayer = gbl_doc.Layers.Add("Switch110Layer"); SwitchLayer.color = AutoCAD.AcColor.acGreen; gbl_doc.ActiveLayer = SwitchLayer; //Layer For Donuts TerminalsLayer = gbl_doc.Layers.Add("TerminalsLayer"); TerminalsLayer.color = AutoCAD.AcColor.acRed; //Layer Termination Points TerminationPoints = gbl_doc.Layers.Add("TerminationPoints"); TerminationPoints.color = AutoCAD.AcColor.acWhite; } catch (Exception ex) { // MessageBox.Show(ex.Message); } }
public static void CreateAutoCADObject() { try { CloseAllInstance(); gbl_app = new AcadApplication(); gbl_doc = gbl_app.ActiveDocument; gbl_app.Application.Visible = true; gbl_modSpace = (AcadModelSpaceClass)gbl_doc.ModelSpace; //MessageBox.Show(gbl_app.Path); gbl_doc.Linetypes.Load("HIDDEN", "acad.lin"); gbl_doc.Linetypes.Load("CENTER", "acad.lin"); //Other Objects Layer SwitchLayer = CADAutomation.gbl_doc.Layers.Add("Switch110Layer"); SwitchLayer.color = AcColor.acGreen; CADAutomation.gbl_doc.ActiveLayer = SwitchLayer; //Layer For Donuts TerminalsLayer = CADAutomation.gbl_doc.Layers.Add("TerminalsLayer"); TerminalsLayer.color = AcColor.acRed; //Layer Termination Points TerminationPoints = CADAutomation.gbl_doc.Layers.Add("TerminationPoints"); TerminationPoints.color = AcColor.acWhite; } catch (System.Exception ex) { MessageBox.Show(ex.Message); } }
public static void CreateAutoCADObject() { // Get //AcadApplication acadApp = null; AcadCircle circle = null; AcadAcCmColor color = null; try { object obj = Marshal.GetActiveObject("AutoCAD.Application.17"); if (obj != null) { gbl_app = obj as AcadApplication; //double[] cen = new double[] { 0, 0, 0 }; //circle = acadApp.ActiveDocument.Database.ModelSpace.AddCircle(cen, 10); //color = acadApp.GetInterfaceObject("Autocad.AcCmColor.17") as AcadAcCmColor; //color.SetRGB(50, 150, 250); //circle.TrueColor = color; //acadApp.ZoomExtents(); // Draw try { //CloseAllInstance(); //gbl_app = new AcadApplication(); gbl_doc = gbl_app.ActiveDocument; gbl_app.Application.Visible = true; gbl_modSpace = (AcadModelSpaceClass)gbl_doc.ModelSpace; gbl_doc.Linetypes.Load("HIDDEN", "acad.lin"); gbl_doc.Linetypes.Load("CENTER", "acad.lin"); //Other Objects Layer SwitchLayer = PF.gbl_doc.Layers.Add("Switch110Layer"); //SwitchLayer.color = Autodesk.AutoCAD.AcColor.acGreen; PF.gbl_doc.ActiveLayer = SwitchLayer; //Layer For Donuts TerminalsLayer = PF.gbl_doc.Layers.Add("TerminalsLayer"); // TerminalsLayer.color = AutoCAD.AcColor.acRed; //Layer Termination Points TerminationPoints = PF.gbl_doc.Layers.Add("TerminationPoints"); //TerminationPoints.color = AutoCAD.AcColor.acWhite; } catch (Exception ex) { MessageBox.Show(ex.Message); } } else { MessageBox.Show("AutoCAD chưa khởi động hoặc không đúng phiên bản!"); } } catch { MessageBox.Show("AutoCAD chưa khởi động hoặc không đúng phiên bản!"); } //finally //{ // if (color != null) Marshal.FinalReleaseComObject(color); // if (circle != null) Marshal.FinalReleaseComObject(circle); // if (gbl_app != null) Marshal.FinalReleaseComObject(gbl_app); //} }
private bool InternReadLayer(double vdblDefOwnerID, ref int rlngIdx, ref AcadLayers robjAcadLayers, ref string nrstrErrMsg) { nrstrErrMsg = null; Dictionary <object, object> dobjDictReactors2 = new Dictionary <object, object>(); Dictionary <object, object> dobjDictXDictionary2 = new Dictionary <object, object>(); int dlngStartIdx = rlngIdx; checked { double ddblObjectID = default(double); double ddblOwnerID = default(double); bool InternReadLayer = default(bool); AcadLayer dobjAcadLayer2; if (hwpDxf_ReadRef.BkDXFReadRef_AcadSymbolTableRecord(mobjAcadDatabase, vdblDefOwnerID, "LAYER", mobjDictReadCodes, mobjDictReadValues, ref rlngIdx, ref ddblObjectID, ref ddblOwnerID, ref dobjDictReactors2, ref dobjDictXDictionary2, ref nrstrErrMsg)) { bool dblnError; if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadCodes[rlngIdx], 100, TextCompare: false)) { nrstrErrMsg = "Ungültiger Gruppencode für Objektname in Zeile " + Conversions.ToString(rlngIdx * 2 + 1) + "."; dblnError = true; } else if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadValues[rlngIdx], "AcDbLayerTableRecord", TextCompare: false)) { nrstrErrMsg = "Ungültiger Objektname in Zeile " + Conversions.ToString(rlngIdx * 2 + 2) + "."; dblnError = true; } else if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadCodes[rlngIdx + 1], 2, TextCompare: false)) { nrstrErrMsg = "Ungültiger Gruppencode für Layername in Zeile " + Conversions.ToString(rlngIdx * 2 + 3) + "."; dblnError = true; } else if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadCodes[rlngIdx + 2], 70, TextCompare: false)) { nrstrErrMsg = "Ungültiger Gruppencode für Standard-Flag-Werte in Zeile " + Conversions.ToString(rlngIdx * 2 + 5) + "."; dblnError = true; } else if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadCodes[rlngIdx + 3], 62, TextCompare: false)) { nrstrErrMsg = "Ungültiger Gruppencode für Farbnummer in Zeile " + Conversions.ToString(rlngIdx * 2 + 7) + "."; dblnError = true; } else if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadCodes[rlngIdx + 4], 6, TextCompare: false)) { nrstrErrMsg = "Ungültiger Gruppencode für Linientypname in Zeile " + Conversions.ToString(rlngIdx * 2 + 9) + "."; dblnError = true; } else { string dstrName = Conversions.ToString(mobjDictReadValues[rlngIdx + 1]); int dlngCode3 = Conversions.ToInteger(mobjDictReadValues[rlngIdx + 2]); int dlngCode2 = Conversions.ToInteger(mobjDictReadValues[rlngIdx + 3]); string dstrLineType = Conversions.ToString(mobjDictReadValues[rlngIdx + 4]); rlngIdx += 5; int dlngCode = Conversions.ToInteger(mobjDictReadCodes[rlngIdx]); bool dblnCode290 = dlngCode == 290; if (dblnCode290) { rlngIdx++; } if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadCodes[rlngIdx], 370, TextCompare: false)) { nrstrErrMsg = "Ungültiger Gruppencode für Linienstärke in Zeile " + Conversions.ToString(rlngIdx * 2 + 1) + "."; dblnError = true; } else if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadCodes[rlngIdx + 1], "390", TextCompare: false)) { nrstrErrMsg = "Ungültiger Gruppencode für Plotstilreferenz in Zeile " + Conversions.ToString(rlngIdx * 2 + 3) + "."; dblnError = true; } else { bool dblnPlottable = !dblnCode290 || Operators.ConditionalCompareObjectEqual(mobjDictReadValues[rlngIdx - 1], 1, TextCompare: false); Enums.AcLineWeight dnumLineweight = unchecked ((Enums.AcLineWeight)Conversions.ToInteger(mobjDictReadValues[rlngIdx])); string dstrPlotStyleNameReference = Conversions.ToString(mobjDictReadValues[rlngIdx + 1]); rlngIdx += 2; object dvarXDataType = default(object); object dvarXDataValue = default(object); dblnError = !hwpDxf_ReadBas.BkDXFReadBas_XData(ref rlngIdx, mobjDictReadCodes, mobjDictReadValues, ref dvarXDataType, ref dvarXDataValue, ref nrstrErrMsg); if (!dblnError) { if (robjAcadLayers.FriendNameExist(dstrName)) { nrstrErrMsg = "Layer " + dstrName + " ab Zeile " + Conversions.ToString(dlngStartIdx * 2 + 1) + " existiert bereits."; dblnError = true; } else { dobjAcadLayer2 = robjAcadLayers.FriendAddAcadObject(dstrName, ddblObjectID, ref nrstrErrMsg); if (dobjAcadLayer2 == null) { nrstrErrMsg = "Das Objekt konnte nicht hinzugefügt werden."; dblnError = true; } else { AcadLayer acadLayer = dobjAcadLayer2; acadLayer.FriendLetFlags70 = dlngCode3; acadLayer.Color = unchecked ((Enums.AcColor)Math.Abs(dlngCode2)); acadLayer.LayerOn = ((double)acadLayer.Color == (double)dlngCode2); acadLayer.Linetype = dstrLineType; acadLayer.Plottable = dblnPlottable; acadLayer.Lineweight = dnumLineweight; acadLayer.FriendLetPlotStyleNameReference = dstrPlotStyleNameReference; acadLayer.FriendSetDictReactors = dobjDictReactors2; acadLayer.FriendSetDictXDictionary = dobjDictXDictionary2; acadLayer.SetXData(RuntimeHelpers.GetObjectValue(dvarXDataType), RuntimeHelpers.GetObjectValue(dvarXDataValue)); acadLayer = null; } } } } } InternReadLayer = !dblnError; } dobjDictReactors2 = null; dobjDictXDictionary2 = null; dobjAcadLayer2 = null; return(InternReadLayer); } }
private void DWGLoad() { AcadApplication acadApp = new AcadApplicationClass(); IGeometryCollection pGeometryCollection = new PolygonClass(); foreach (DataGridViewRow eRow in dataGridView1.Rows) { if (eRow.Cells[0].Value != null && (bool)eRow.Cells[0].Value == true) { if (eRow.Cells["FileSuffix"].Value.ToString().ToLower() == "dwg") { object o = Type.Missing; string strFileName = eRow.Cells["FilePath"].Value.ToString(); AcadDocument acadDoc = acadApp.Documents.Open(strFileName, true, null); System.Windows.Forms.Application.DoEvents(); AcadLayer acadLyer = acadDoc.Layers.Item(1); AcadSelectionSet ssetObj = acadDoc.SelectionSets.Add("FWX"); short[] vFilterType = null; object[] vFilterData = null; vFilterType = new short[1]; vFilterType[0] = 8; vFilterData = new object[1]; vFilterData[0] = "FWX"; //ISegmentCollection pSegmentCollection = new RingClass(); //pSegmentCollection.AddSegment() ssetObj.Select(AcSelect.acSelectionSetAll, null, null, vFilterType, vFilterData); foreach (AcadObject eEntity in ssetObj) { if (eEntity.ObjectName == "AcDbPolyline") { AcadLWPolyline pPline = (AcadLWPolyline)eEntity; double[] polyLinePoint; polyLinePoint = (Double[])pPline.Coordinates; int i, pointCount = polyLinePoint.Length / 2; IPointCollection pPointColl = new RingClass(); for (i = 0; i < polyLinePoint.Length - 1; i = i + 2) { IPoint pPoint = new PointClass(); pPoint.X = polyLinePoint[i]; pPoint.Y = polyLinePoint[i + 1]; pPointColl.AddPoint(pPoint, ref o, ref o); } pGeometryCollection.AddGeometry(pPointColl as IRing, ref o, ref o); } } } else if (eRow.Cells["FileSuffix"].Value.ToString().ToLower() == "txt") { object o = Type.Missing; string strFileName = eRow.Cells["FilePath"].Value.ToString(); m_strPointArray.Clear(); StreamReader ReadFile = new StreamReader(strFileName, System.Text.Encoding.Default); while (!ReadFile.EndOfStream) { m_strPointArray.Add(ReadFile.ReadLine()); } ReadFile.Close(); IPointCollection pPointColl = new RingClass(); for (int i = 0; i < m_strPointArray.Count; i++) { if (m_strPointArray[i].StartsWith("J")) { string[] split = m_strPointArray[i].Split(new Char[] { ',', ',' }); IPoint pPoint = new PointClass(); pPoint.X = Convert.ToDouble(split[2]); pPoint.Y = Convert.ToDouble(split[3]); pPointColl.AddPoint(pPoint, ref o, ref o); } } pGeometryCollection.AddGeometry(pPointColl as IRing, ref o, ref o); } } } acadApp.Quit(); //DWGLoaded(this.m_Popfrm, new EventArgs());//引发完成事件,有异常待研究 System.Windows.Forms.Application.DoEvents(); if (pGeometryCollection.GeometryCount > 0) { m_pFeature = EngineFuntions.m_Layer_BusStation.FeatureClass.CreateFeature(); m_pFeature.Shape = pGeometryCollection as IPolygon; IFields fields = m_pFeature.Fields; int nIndex = fields.FindField("任务号"); m_pFeature.set_Value(nIndex, m_strFolder.Substring(m_strFolder.LastIndexOf("\\") + 1)); m_pFeature.Store(); EngineFuntions.ZoomTo(m_pFeature.ShapeCopy); } else { m_pFeature = null; } }