Beispiel #1
0
        private void BtnTX_Click(object sender, EventArgs e)
        {
            AcadDocument AcadDoc        = AcadApp.ActiveDocument;
            AcadObject   pSelectLineobj = pSelectLineobj = GetHX();

            if (pSelectLineobj == null)
            {
                return;
            }
            try
            {
                AcadLWPolyline Adlwp      = (AcadLWPolyline)pSelectLineobj;
                double[]       AdlwpPoint = (double[])Adlwp.Coordinates;
                int            PointCount = AdlwpPoint.Length / 2;
                superGridControlCoords.PrimaryGrid.Rows.Clear();
                // ISTPoint[] pSTPoints = new ISTPoint[PointCount];
                for (int j = 0; j < PointCount; j++)
                {
                    ISTPoint pSTPoint = new STPointClass()
                    {
                        X = AdlwpPoint[j * 2], Y = AdlwpPoint[j * 2 + 1]
                    };
                    superGridControlCoords.PrimaryGrid.Rows.Add(new DevComponents.DotNetBar.SuperGrid.GridRow(
                                                                    new object[] { j + 1, Math.Round(AdlwpPoint[j * 2 + 1], 3).ToString("0.000"), Math.Round(AdlwpPoint[j * 2], 3).ToString("0.000") })
                    {
                        Tag = pSTPoint
                    });
                }
                superGridControlCoords.Tag = Adlwp;
                TxbTXMJ.Text = Adlwp.Area.ToString("0.00");
            }
            finally
            { }
        }
Beispiel #2
0
        private AcadObject GetHX()
        {
            // tableLayoutPanel2.Enabled = false;
            AcadDocument AcadDoc = AcadApp.ActiveDocument;

            Microsoft.VisualBasic.Interaction.AppActivate(AcadApp.Caption);
            object returnObj, pickPoint;
            string pickPrompt = "获取入库红线";

            try
            {
                AcadDoc.Utility.GetEntity(out returnObj, out pickPoint, pickPrompt);
            }
            catch { return(null); }
            AcadObject returnCADObj = (AcadObject)returnObj;

            if (returnCADObj.ObjectName == "AcDbPolyline")
            {
                AcadLWPolyline Adlwp = (AcadLWPolyline)returnCADObj;
                if (!Adlwp.Closed)
                {
                    return(null);
                }
                GeoChange = true;
                return(returnCADObj);
            }
            //Microsoft.VisualBasic.Interaction.AppActivate(this.Text);
            return(null);
        }
Beispiel #3
0
        private ISTGeometry ConvertDBObject(AcadObject pAcadObject)
        {
            ISTPointCollection pSTPointCollection = new STPolygonClass();
            AcadLWPolyline     Adlwp = (AcadLWPolyline)pAcadObject;

            double[] AdlwpPoint = (double[])Adlwp.Coordinates;
            int      PointCount = AdlwpPoint.Length / 2;

            for (int j = 0; j < PointCount - 1; j++)
            {
                ISTPoint fromPoint = new STPointClass();
                fromPoint.X = AdlwpPoint[j * 2];
                fromPoint.Y = AdlwpPoint[j * 2 + 1];

                ISTPoint toPoint = new STPointClass();
                toPoint.X = AdlwpPoint[j * 2 + 2];
                toPoint.Y = AdlwpPoint[j * 2 + 3];

                if (Adlwp.GetBulge(j) != 0)  //添加弧线转折现处理代码
                {
                    double Angle = Math.Atan(Adlwp.GetBulge(j)) * 4;
                    string url   = HR.Utility.CommonVariables.GetAppSetString("ConvertArcToPolyline");
                    string data  = string.Format("Angle={0}&FromPointX={1}&FromPointY={2}&ToPointX={3}&ToPointY={4}&f=json"
                                                 , Angle, fromPoint.X, fromPoint.Y, toPoint.X, toPoint.Y);
                    string Request = PostData(url, data);
                    if (Request.Contains("error"))
                    {
                        throw new Exception("调用曲线转折线服务异常");
                    }
                    XmlNode  pPointNode = Newtonsoft.Json.JsonConvert.DeserializeXmlNode(Request);
                    string[] XYs        = pPointNode.FirstChild.InnerText.TrimEnd().Split(';');
                    foreach (string XY in XYs)
                    {
                        string[] pXY    = XY.Split(',');
                        ISTPoint pPoint = new STPointClass();
                        try
                        {
                            pPoint.X = double.Parse(pXY[0]);
                            pPoint.Y = double.Parse(pXY[1]);
                            pSTPointCollection.AddPoint(pPoint);
                        }
                        catch { continue; }
                    }
                }
                else
                {
                    pSTPointCollection.AddPoint(fromPoint);
                }
                if (j == PointCount - 2)
                {
                    pSTPointCollection.AddPoint(toPoint);
                }
            }
            ISTPoint FPoint = new STPointClass();

            FPoint.X = AdlwpPoint[0];
            FPoint.Y = AdlwpPoint[1];
            pSTPointCollection.AddPoint(FPoint);
            return(pSTPointCollection);
        }
Beispiel #4
0
        public static void Test()
        {
            AcadApplication   AcadApp = (AcadApplication)Marshal.GetActiveObject("AutoCAD.Application.22");
            AcadDocument      doc     = AcadApp.ActiveDocument;
            AcadModelSpace    ms      = doc.ModelSpace;
            AcadSelectionSets SelSets = doc.SelectionSets;
            //SelSets.
            AcadSelectionSet sles = SelSets.Add("Ssd");

            sles.SelectOnScreen();
            Console.WriteLine("{0}", sles.Count);

            List <AcadLWPolyline> curList = new List <AcadLWPolyline>();

            foreach (var item in sles)
            {
                try
                {
                    AcadLWPolyline PL = (AcadLWPolyline)item;
                    if (PL.Closed)
                    {
                        curList.Add(PL);
                    }
                }
                catch (Exception)
                {
                    continue;
                }


                // Console.WriteLine("Length={0}", L.Length);
            }

            sles.Delete();
        }
Beispiel #5
0
 /// <summary>
 /// Crear un nuevo Polígono en 2D.
 /// </summary>
 /// <param name="VerticesList">Vertices del polígono. Ejemplo: (X1,Y1, X2,Y2, X3,Y3 X4,Y4)</param>
 /// <param name="Layer">Capa del Polígono</param>
 /// <param name="Closed">Establece si el polígono es cerrado</param>
 public static void AddPolyline2D(double[] VerticesList, string Layer, bool Closed = true)
 {
     if (AcadDoc != null)
     {
         AcadLWPolyline polyline = AcadDoc.ModelSpace.AddLightWeightPolyline(VerticesList);
         polyline.Layer  = Layer;
         polyline.Closed = Closed;
         polyline.Update();
     }
 }
Beispiel #6
0
 /// <summary>
 /// Crear un nuevo Polígono en 2D con su respectivo Relleno (Hatch).
 /// </summary>
 /// <param name="VerticesList">Vértices del Polígono</param>
 /// <param name="Layer">Capa del Polígono.</param>
 /// <param name="Pattern">Tipo de Hatch (SOILD,ANGLE,ANS31,...)</param>
 /// <param name="LayerHatch">Capa del Hatch</param>
 /// <param name="ScaleHacth">Escala del Hatch</param>
 /// <param name="PatternScale">Factor de escala del tipo de Hatch</param>
 /// <param name="PatternAngle">Angulo del tipo de Hatch</param>
 public static void AddPolyline2D(double[] VerticesList, string Layer, string Pattern, string LayerHatch, double ScaleHacth, double PatternScale = 0.009, float PatternAngle = 45)
 {
     if (AcadDoc != null)
     {
         AcadLWPolyline polyline = AcadDoc.ModelSpace.AddLightWeightPolyline(VerticesList);
         polyline.Layer  = Layer;
         polyline.Closed = true;
         AddHatch((AcadEntity)polyline, Pattern, LayerHatch, ScaleHacth, PatternScale, PatternAngle);
         polyline.Update();
     }
 }
 internal void FriendAdd(ref AcadLWPolyline robjAcadLWPolyline)
 {
     robjAcadLWPolyline.FriendLetNodeParentID = base.NodeID;
     checked
     {
         mlngEntityIndex++;
         AcadLWPolyline acadLWPolyline = robjAcadLWPolyline;
         mobjDictEntities.Add("K" + Conversions.ToString(acadLWPolyline.ObjectID), acadLWPolyline.ObjectID);
         acadLWPolyline = null;
     }
 }
Beispiel #8
0
        /// <summary>
        ///  Añadir un nuevo Poligono y un texto representado el largo de este.
        /// </summary>
        /// <param name="VerticesPolyline">Vertices del polígono. Ejemplo: (X1,Y1, X2,Y2, X3,Y3 X4,Y4)</param>
        /// <param name="LayerPolyline">Capa del Polígono</param>
        /// <param name="TextString">Texto adicional al largo del Polígono</param>
        /// <param name="PText_XYZ">Coordenadas del texto (X,Y,Z).</param>
        /// <param name="Width">Alto del Texto.</param>
        /// <param name="Height">Ancho del Texto.</param>
        /// <param name="LayerText">Capa del Texto.</param>
        /// <param name="StyleText">Estilo del Texto</param>
        /// <param name="Rotation">Ángulo de rotación del texto en grados </param>
        /// <param name="Width2">Ancho del cuadro de Texto.</param>

        public static void AddPolyline2DWithLengthText(double[] VerticesPolyline, string LayerPolyline, string TextString, double[] PText_XYZ, double Width, double Height, string LayerText, string StyleText, float Rotation, double Width2 = 1.3)
        {
            if (AcadDoc != null)
            {
                AcadLWPolyline polyline = AcadDoc.ModelSpace.AddLightWeightPolyline(VerticesPolyline);
                polyline.Layer = LayerPolyline;
                polyline.Update();
                TextString += @"%<\AcObjProp Object(%<\_ObjId " + polyline.ObjectID + @">%).Length \f " + (char)(34) + "%lu2%pr2" + (char)(34) + ">%";
                AddText(TextString, PText_XYZ, Width, Height, LayerText, StyleText, Rotation, Width2: Width2);
            }
        }
 public static Polygon2D Polygen2D(this AcadLWPolyline acadLW)
 {
     double[]  ff  = acadLW.Coordinates;
     Point2D[] pts = new Point2D[ff.Length / 2];
     for (int i = 0; i < ff.Length; i++)
     {
         if (i % 2 == 0)
         {
             pts[i / 2] = new Point2D(ff[i], ff[i + 1]);
         }
     }
     return(new Polygon2D(pts));
 }
 /// <summary>
 ///  Añadir un nuevo Poligono y un texto representado el largo de este.
 /// </summary>
 /// <param name="VerticesPolyline">Vertices del polígono. [System.Drawing]</param>
 /// <param name="LayerPolyline">Capa del Polígono</param>
 /// <param name="TextString">Texto adicional al largo del Polígono</param>
 /// <param name="PText_XYZ">Coordenadas del texto (X,Y,Z).</param>
 /// <param name="Width">Alto del Texto.</param>
 /// <param name="Height">Ancho del Texto.</param>
 /// <param name="LayerText">Capa del Texto.</param>
 /// <param name="StyleText">Estilo del Texto</param>
 /// <param name="Rotation">Ángulo de rotación del texto en grados </param>
 /// <param name="Width2">Ancho del cuadro de Texto.</param>
 /// <param name="JustifyText">Justificación del Texto.</param>
 public static void AddPolyline2DWithLengthText(PointF[] VerticesPolyline, string LayerPolyline, string TextString, double[] PText_XYZ, double Width, double Height, string LayerText, string StyleText, float Rotation, double Width2 = 1.3, JustifyText JustifyText = JustifyText.Left)
 {
     try {
         if (AcadDoc != null)
         {
             AcadLWPolyline polyline = AcadDoc.ModelSpace.AddLightWeightPolyline(ConvertirPuntosEnDoubles(VerticesPolyline));
             polyline.Layer = LayerPolyline;
             polyline.Update();
             TextString += @"%<\AcObjProp Object(%<\_ObjId " + polyline.ObjectID + @">%).Length \f " + (char)(34) + "%lu2%pr2" + (char)(34) + ">%";
             AddText(TextString, PText_XYZ, Width, Height, LayerText, StyleText, Rotation, Width2: Width2, JustifyText: JustifyText);
         }
     }
     catch
     {
         NotificadorErrores?.Invoke("Error inesperado.");
     }
 }
 /// <summary>
 /// Crear un nuevo Polígono en 2D.
 /// </summary>
 /// <param name="VerticesList">Vertices del polígono. [System.Drawing]</param>
 /// <param name="Layer">Capa del Polígono</param>
 /// <param name="Closed">Establece si el polígono es cerrado</param>
 public static void AddPolyline2D(PointF[] VerticesList, string Layer, bool Closed = true)
 {
     try
     {
         if (AcadDoc != null)
         {
             AcadLWPolyline polyline = AcadDoc.ModelSpace.AddLightWeightPolyline(ConvertirPuntosEnDoubles(VerticesList));
             polyline.Layer  = Layer;
             polyline.Closed = Closed;
             polyline.Update();
         }
     }
     catch
     {
         NotificadorErrores?.Invoke("Error inesperado.");
     }
 }
        internal new void FriendQuit()
        {
            AcadLWPolyline dobjAcadLWPolyline2 = default(AcadLWPolyline);
            AcadDatabase   dobjAcadDatabase2;

            if (mblnOpened)
            {
                if (mobjDictEntities.Count > 0)
                {
                    dobjAcadDatabase2 = hwpDxf_Vars.pobjAcadDatabases.FriendGetItem(mlngDatabaseIndex);
                    if (dobjAcadDatabase2 != null)
                    {
                        object dvarObjectIDs = RuntimeHelpers.GetObjectValue(hwpDxf_Functions.BkDXF_ValueCollectionToArray(mobjDictEntities.Values));
                        int    num           = Information.LBound((Array)dvarObjectIDs);
                        int    num2          = Information.UBound((Array)dvarObjectIDs);
                        for (int dlngIdx = num; dlngIdx <= num2; dlngIdx = checked (dlngIdx + 1))
                        {
                            AcadDatabase acadDatabase = dobjAcadDatabase2;
                            double       vdblObjectID = Conversions.ToDouble(NewLateBinding.LateIndexGet(dvarObjectIDs, new object[1]
                            {
                                dlngIdx
                            }, null));
                            AcadObject robjAcadObject = dobjAcadLWPolyline2;
                            string     nrstrErrMsg    = "";
                            bool       flag           = acadDatabase.FriendObjectIdToObject(vdblObjectID, ref robjAcadObject, ref nrstrErrMsg);
                            dobjAcadLWPolyline2 = (AcadLWPolyline)robjAcadObject;
                            if (flag)
                            {
                                dobjAcadLWPolyline2.FriendQuit();
                                dobjAcadLWPolyline2 = null;
                            }
                        }
                    }
                }
                base.FriendQuit();
                mobjDictEntities = null;
                mblnOpened       = false;
            }
            dobjAcadLWPolyline2 = null;
            dobjAcadDatabase2   = null;
        }
        internal object FriendGetMinMaxCoords()
        {
            object         dvarItems     = RuntimeHelpers.GetObjectValue(hwpDxf_Functions.BkDXF_ValueCollectionToArray(mobjDictEntities.Values));
            int            num           = Information.LBound((Array)dvarItems);
            int            num2          = Information.UBound((Array)dvarItems);
            bool           dblnFirst     = default(bool);
            object         dvarMaxCoordX = default(object);
            object         dvarMaxCoordY = default(object);
            object         dvarMinCoordX = default(object);
            object         dvarMinCoordY = default(object);
            AcadLWPolyline dobjObject    = default(AcadLWPolyline);

            for (int dlngIdx = num; dlngIdx <= num2; dlngIdx = checked (dlngIdx + 1))
            {
                double ddblCurObjectID = Conversions.ToDouble(NewLateBinding.LateIndexGet(dvarItems, new object[1]
                {
                    dlngIdx
                }, null));
                AcadDatabase database       = Database;
                AcadObject   robjAcadObject = dobjObject;
                string       nrstrErrMsg    = "";
                database.FriendObjectIdToObject(ddblCurObjectID, ref robjAcadObject, ref nrstrErrMsg);
                dobjObject = (AcadLWPolyline)robjAcadObject;
                object dvarMinMaxCoords = RuntimeHelpers.GetObjectValue(dobjObject.MinMaxCoords);
                if (dvarMinMaxCoords == null)
                {
                    continue;
                }
                if (!dblnFirst)
                {
                    dvarMaxCoordX = RuntimeHelpers.GetObjectValue(NewLateBinding.LateIndexGet(dvarMinMaxCoords, new object[1]
                    {
                        0
                    }, null));
                    dvarMaxCoordY = RuntimeHelpers.GetObjectValue(NewLateBinding.LateIndexGet(dvarMinMaxCoords, new object[1]
                    {
                        1
                    }, null));
                    dvarMinCoordX = RuntimeHelpers.GetObjectValue(NewLateBinding.LateIndexGet(dvarMinMaxCoords, new object[1]
                    {
                        2
                    }, null));
                    dvarMinCoordY = RuntimeHelpers.GetObjectValue(NewLateBinding.LateIndexGet(dvarMinMaxCoords, new object[1]
                    {
                        3
                    }, null));
                    dblnFirst = true;
                    continue;
                }
                if (Operators.ConditionalCompareObjectGreater(NewLateBinding.LateIndexGet(dvarMinMaxCoords, new object[1]
                {
                    0
                }, null), dvarMaxCoordX, TextCompare: false))
                {
                    dvarMaxCoordX = RuntimeHelpers.GetObjectValue(NewLateBinding.LateIndexGet(dvarMinMaxCoords, new object[1]
                    {
                        0
                    }, null));
                }
                if (Operators.ConditionalCompareObjectGreater(NewLateBinding.LateIndexGet(dvarMinMaxCoords, new object[1]
                {
                    1
                }, null), dvarMaxCoordY, TextCompare: false))
                {
                    dvarMaxCoordY = RuntimeHelpers.GetObjectValue(NewLateBinding.LateIndexGet(dvarMinMaxCoords, new object[1]
                    {
                        1
                    }, null));
                }
                if (Operators.ConditionalCompareObjectLess(NewLateBinding.LateIndexGet(dvarMinMaxCoords, new object[1]
                {
                    2
                }, null), dvarMinCoordX, TextCompare: false))
                {
                    dvarMinCoordX = RuntimeHelpers.GetObjectValue(NewLateBinding.LateIndexGet(dvarMinMaxCoords, new object[1]
                    {
                        2
                    }, null));
                }
                if (Operators.ConditionalCompareObjectLess(NewLateBinding.LateIndexGet(dvarMinMaxCoords, new object[1]
                {
                    3
                }, null), dvarMinCoordY, TextCompare: false))
                {
                    dvarMinCoordY = RuntimeHelpers.GetObjectValue(NewLateBinding.LateIndexGet(dvarMinMaxCoords, new object[1]
                    {
                        3
                    }, null));
                }
            }
            object FriendGetMinMaxCoords = (!dblnFirst) ? null : new object[4]
            {
                dvarMaxCoordX,
                dvarMaxCoordY,
                dvarMinCoordX,
                dvarMinCoordY
            };

            dobjObject = null;
            return(FriendGetMinMaxCoords);
        }
Beispiel #14
0
        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;
            }
        }
Beispiel #15
0
        public static void Test()
        {
            AcadApplication   AcadApp = (AcadApplication)Marshal.GetActiveObject("AutoCAD.Application.19");
            AcadDocument      doc     = AcadApp.ActiveDocument;
            AcadModelSpace    ms      = doc.ModelSpace;
            AcadSelectionSets SelSets = doc.SelectionSets;


            //SelSets.
            Console.WriteLine("请Tony选择中心线.");
            AcadSelectionSet cl = SelSets.Add(new Random().Next(1000, 9999).ToString());

            cl.Clear();
            cl.SelectOnScreen();
            Console.WriteLine("中心线选择完成.");


            Console.WriteLine("请Tony选择预应力筋.");
            AcadSelectionSet preBars = SelSets.Add(new Random().Next(1000, 9999).ToString());

            preBars.Clear();
            preBars.SelectOnScreen();
            Console.WriteLine("预应力钢筋选择完成,共计{0}根.", preBars.Count);

            Console.WriteLine("请Tony选择方向线.");
            AcadSelectionSet dirL = SelSets.Add(new Random().Next(1000, 9999).ToString());

            dirL.Clear();
            dirL.SelectOnScreen();
            List <AcadLine> NewDirLSet = new List <AcadLine>();

            foreach (var item in dirL)
            {
                AcadLine DirLine = (AcadLine)item;
                NewDirLSet.Add(DirLine);
            }
            NewDirLSet.Sort((x, y) => x.GetMidX().CompareTo(y.GetMidX()));

            Console.WriteLine("预应力钢筋选择完成,共计{0}根.", dirL.Count);

            AcadLWPolyline CLine = (AcadLWPolyline)cl.Item(0);


            FileStream   fs = new FileStream("D:\\TonyReadMe.csv", FileMode.Create);
            StreamWriter sw = new StreamWriter(fs);


            foreach (var bar in preBars)
            {
                sw.Flush();
                sw.Write("\n{0},", bar.ToString());
                //Console.WriteLine(bar.ToString());
                AcadLWPolyline PL = (AcadLWPolyline)bar;

                foreach (var item in NewDirLSet)
                {
                    double[] p1, p2;
                    double   dist;
                    try
                    {
                        AcadLine DirLine = item;

                        p1 = DirLine.IntersectWith(CLine, AcExtendOption.acExtendThisEntity);
                        p2 = DirLine.IntersectWith(PL, AcExtendOption.acExtendThisEntity);
                        if (p1.Count() == 0 || p2.Count() == 0)
                        {
                            continue;
                        }
                        dist = Math.Pow((p1[0] - p2[0]), 2) + Math.Pow((p1[1] - p2[1]), 2) + Math.Pow((p1[2] - p2[2]), 2);
                        dist = Math.Sqrt(dist);

                        int fx = p1[1] < p2[1] ? 1 : -1;

                        //Console.Write("{0:F0},",dist);

                        sw.Write("{0:F0},", fx * dist * 1000.0);
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                }


                // Console.WriteLine("Length={0}", L.Length);
            }


            cl.Delete();
            preBars.Delete();
            dirL.Delete();

            sw.Close();
            fs.Close();
        }
Beispiel #16
0
        public static void BkAcadEntity_RemoveReactorsID(ref AcadEntity robjAcadEntity, double vdblObjectID)
        {
            switch (robjAcadEntity.ObjectName)
            {
            case "AcDbEntity":
            {
                AcadEntity dobjAcadEntity2 = robjAcadEntity;
                dobjAcadEntity2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadEntity2 = null;
                break;
            }

            case "AcDbFace":
            {
                Acad3DFace dobjAcad3DFace2 = (Acad3DFace)robjAcadEntity;
                dobjAcad3DFace2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcad3DFace2 = null;
                break;
            }

            case "AcDb3dSolid":
            {
                Acad3DSolid dobjAcad3DSolid2 = (Acad3DSolid)robjAcadEntity;
                dobjAcad3DSolid2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcad3DSolid2 = null;
                break;
            }

            case "AcDbAttributeDefinition":
            {
                AcadAttribute dobjAcadAttribute2 = (AcadAttribute)robjAcadEntity;
                dobjAcadAttribute2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadAttribute2 = null;
                break;
            }

            case "AcDbAttribute":
            {
                AcadAttributeReference dobjAcadAttributeReference2 = (AcadAttributeReference)robjAcadEntity;
                dobjAcadAttributeReference2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadAttributeReference2 = null;
                break;
            }

            case "AcDbBlockEnd":
            {
                AcadBlockEnd dobjAcadBlockEnd2 = (AcadBlockEnd)robjAcadEntity;
                dobjAcadBlockEnd2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadBlockEnd2 = null;
                break;
            }

            case "AcDbBlockBegin":
            {
                AcadBlockBegin dobjAcadBlockBegin2 = (AcadBlockBegin)robjAcadEntity;
                dobjAcadBlockBegin2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadBlockBegin2 = null;
                break;
            }

            case "AcDbBlockReference":
            {
                AcadBlockReference dobjAcadBlockReference2 = (AcadBlockReference)robjAcadEntity;
                dobjAcadBlockReference2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadBlockReference2 = null;
                break;
            }

            case "AcDbCurve":
            {
                AcadCurve dobjAcadCurve2 = (AcadCurve)robjAcadEntity;
                dobjAcadCurve2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadCurve2 = null;
                break;
            }

            case "AcDb3dPolyline":
            {
                Acad3DPolyline dobjAcad3DPolyline2 = (Acad3DPolyline)robjAcadEntity;
                dobjAcad3DPolyline2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcad3DPolyline2 = null;
                break;
            }

            case "AcDbArc":
            {
                AcadArc dobjAcadArc2 = (AcadArc)robjAcadEntity;
                dobjAcadArc2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadArc2 = null;
                break;
            }

            case "AcDbCircle":
            {
                AcadCircle dobjAcadCircle2 = (AcadCircle)robjAcadEntity;
                dobjAcadCircle2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadCircle2 = null;
                break;
            }

            case "AcDbEllipse":
            {
                AcadEllipse dobjAcadEllipse2 = (AcadEllipse)robjAcadEntity;
                dobjAcadEllipse2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadEllipse2 = null;
                break;
            }

            case "AcDbLeader":
            {
                AcadLeader dobjAcadLeader2 = (AcadLeader)robjAcadEntity;
                dobjAcadLeader2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadLeader2 = null;
                break;
            }

            case "AcDbLine":
            {
                AcadLine dobjAcadLine2 = (AcadLine)robjAcadEntity;
                dobjAcadLine2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadLine2 = null;
                break;
            }

            case "AcDbPolyline":
            {
                AcadLWPolyline dobjAcadLWPolyline2 = (AcadLWPolyline)robjAcadEntity;
                dobjAcadLWPolyline2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadLWPolyline2 = null;
                break;
            }

            case "AcDb2dPolyline":
            {
                AcadPolyline dobjAcadPolyline2 = (AcadPolyline)robjAcadEntity;
                dobjAcadPolyline2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadPolyline2 = null;
                break;
            }

            case "AcDb2dVertex":
            {
                Acad2DVertex dobjAcad2DVertex2 = (Acad2DVertex)robjAcadEntity;
                dobjAcad2DVertex2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcad2DVertex2 = null;
                break;
            }

            case "AcDb3dPolylineVertex":
            {
                Acad3DVertex dobjAcad3DVertex2 = (Acad3DVertex)robjAcadEntity;
                dobjAcad3DVertex2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcad3DVertex2 = null;
                break;
            }

            case "AcDbPolygonMeshVertex":
            {
                AcadPolygonMeshVertex dobjAcadPolygonMeshVertex2 = (AcadPolygonMeshVertex)robjAcadEntity;
                dobjAcadPolygonMeshVertex2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadPolygonMeshVertex2 = null;
                break;
            }

            case "AcDbPolyFaceMeshVertex":
            {
                AcadPolyfaceMeshVertex dobjAcadPolyfaceMeshVertex2 = (AcadPolyfaceMeshVertex)robjAcadEntity;
                dobjAcadPolyfaceMeshVertex2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadPolyfaceMeshVertex2 = null;
                break;
            }

            case "AcDbFaceRecord":
            {
                AcadFaceRecord dobjAcadFaceRecord2 = (AcadFaceRecord)robjAcadEntity;
                dobjAcadFaceRecord2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadFaceRecord2 = null;
                break;
            }

            case "AcDbRay":
            {
                AcadRay dobjAcadRay2 = (AcadRay)robjAcadEntity;
                dobjAcadRay2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadRay2 = null;
                break;
            }

            case "AcDbSpline":
            {
                AcadSpline dobjAcadSpline2 = (AcadSpline)robjAcadEntity;
                dobjAcadSpline2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadSpline2 = null;
                break;
            }

            case "AcDbXline":
            {
                AcadXline dobjAcadXline2 = (AcadXline)robjAcadEntity;
                dobjAcadXline2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadXline2 = null;
                break;
            }

            case "AcDbHatch":
            {
                AcadHatch dobjAcadHatch2 = (AcadHatch)robjAcadEntity;
                dobjAcadHatch2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadHatch2 = null;
                break;
            }

            case "AcDbMInsertBlock":
            {
                AcadMInsertBlock dobjAcadMInsertBlock2 = (AcadMInsertBlock)robjAcadEntity;
                dobjAcadMInsertBlock2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadMInsertBlock2 = null;
                break;
            }

            case "AcDbMLine":
            {
                AcadMLine dobjAcadMLine2 = (AcadMLine)robjAcadEntity;
                dobjAcadMLine2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadMLine2 = null;
                break;
            }

            case "AcDbMText":
            {
                AcadMText dobjAcadMText2 = (AcadMText)robjAcadEntity;
                dobjAcadMText2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadMText2 = null;
                break;
            }

            case "AcDbPoint":
            {
                AcadPoint dobjAcadPoint2 = (AcadPoint)robjAcadEntity;
                dobjAcadPoint2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadPoint2 = null;
                break;
            }

            case "AcDbPolyFaceMesh":
            {
                AcadPolyfaceMesh dobjAcadPolyfaceMesh2 = (AcadPolyfaceMesh)robjAcadEntity;
                dobjAcadPolyfaceMesh2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadPolyfaceMesh2 = null;
                break;
            }

            case "AcDbPolygonMesh":
            {
                AcadPolygonMesh dobjAcadPolygonMesh2 = (AcadPolygonMesh)robjAcadEntity;
                dobjAcadPolygonMesh2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadPolygonMesh2 = null;
                break;
            }

            case "AcDbSequenceEnd":
            {
                AcadSequenceEnd dobjAcadSequenceEnd2 = (AcadSequenceEnd)robjAcadEntity;
                dobjAcadSequenceEnd2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadSequenceEnd2 = null;
                break;
            }

            case "AcDbShape":
            {
                AcadShape dobjAcadShape2 = (AcadShape)robjAcadEntity;
                dobjAcadShape2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadShape2 = null;
                break;
            }

            case "AcDbText":
            {
                AcadText dobjAcadText2 = (AcadText)robjAcadEntity;
                dobjAcadText2.FriendRemoveReactorsID(vdblObjectID);
                dobjAcadText2 = null;
                break;
            }

            case "AcDbTrace":
                if (Operators.CompareString(robjAcadEntity.DXFName, "TRACE", TextCompare: false) == 0)
                {
                    AcadTrace dobjAcadTrace2 = (AcadTrace)robjAcadEntity;
                    dobjAcadTrace2.FriendRemoveReactorsID(vdblObjectID);
                    dobjAcadTrace2 = null;
                }
                else
                {
                    AcadSolid dobjAcadSolid2 = (AcadSolid)robjAcadEntity;
                    dobjAcadSolid2.FriendRemoveReactorsID(vdblObjectID);
                    dobjAcadSolid2 = null;
                }
                break;

            default:
                try
                {
                    AcadUnknownEnt dobjAcadUnknownEnt2 = (AcadUnknownEnt)robjAcadEntity;
                    dobjAcadUnknownEnt2.FriendRemoveReactorsID(vdblObjectID);
                    dobjAcadUnknownEnt2 = null;
                }
                catch (Exception ex2)
                {
                    ProjectData.SetProjectError(ex2);
                    Exception ex = ex2;
                    ProjectData.ClearProjectError();
                }
                break;
            }
        }
        public AcadLWPolyline Item(object vvarValue)
        {
            if (mobjDictEntities.Count > 0)
            {
                AcadDatabase dobjAcadDatabase = hwpDxf_Vars.pobjAcadDatabases.FriendGetItem(mlngDatabaseIndex);
                if (dobjAcadDatabase != null)
                {
                    AcadLWPolyline dobjAcadLWPolyline4 = default(AcadLWPolyline);
                    switch (Information.VarType(RuntimeHelpers.GetObjectValue(vvarValue)))
                    {
                    case VariantType.Double:
                    {
                        double ddblObjectID2 = Conversions.ToDouble(vvarValue);
                        if (mobjDictEntities.ContainsKey("K" + Conversions.ToString(ddblObjectID2)))
                        {
                            double     ddblCurObjectID2 = Conversions.ToDouble(mobjDictEntities["K" + Conversions.ToString(ddblObjectID2)]);
                            double     vdblObjectID3    = ddblCurObjectID2;
                            AcadObject robjAcadObject   = dobjAcadLWPolyline4;
                            string     nrstrErrMsg      = "";
                            bool       flag             = dobjAcadDatabase.FriendObjectIdToObject(vdblObjectID3, ref robjAcadObject, ref nrstrErrMsg);
                            dobjAcadLWPolyline4 = (AcadLWPolyline)robjAcadObject;
                            if (flag)
                            {
                                return(dobjAcadLWPolyline4);
                            }
                        }
                        break;
                    }

                    case VariantType.String:
                    {
                        string vstrHexNum  = Conversions.ToString(vvarValue);
                        int    nrlngErrNum = 0;
                        string nrstrErrMsg = "";
                        if (!hwpDxf_Functions.BkDXF_ValidHexNum(vstrHexNum, ref nrlngErrNum, ref nrstrErrMsg))
                        {
                            break;
                        }
                        double ddblObjectID2 = hwpDxf_Functions.BkDXF_HexToDbl(Conversions.ToString(vvarValue));
                        if (mobjDictEntities.ContainsKey("K" + Conversions.ToString(ddblObjectID2)))
                        {
                            double     ddblCurObjectID2 = Conversions.ToDouble(mobjDictEntities["K" + Conversions.ToString(ddblObjectID2)]);
                            double     vdblObjectID2    = ddblCurObjectID2;
                            AcadObject robjAcadObject   = dobjAcadLWPolyline4;
                            nrstrErrMsg = "";
                            bool flag = dobjAcadDatabase.FriendObjectIdToObject(vdblObjectID2, ref robjAcadObject, ref nrstrErrMsg);
                            dobjAcadLWPolyline4 = (AcadLWPolyline)robjAcadObject;
                            if (flag)
                            {
                                return(dobjAcadLWPolyline4);
                            }
                        }
                        break;
                    }

                    case VariantType.Short:
                    case VariantType.Integer:
                    {
                        int dlngIndex = Conversions.ToInteger(vvarValue);
                        if ((dlngIndex >= 0) & (dlngIndex < mobjDictEntities.Count))
                        {
                            object dvarObjectIDs = RuntimeHelpers.GetObjectValue(hwpDxf_Functions.BkDXF_ValueCollectionToArray(mobjDictEntities.Values));
                            double vdblObjectID  = Conversions.ToDouble(NewLateBinding.LateIndexGet(dvarObjectIDs, new object[1]
                                {
                                    dlngIndex
                                }, null));
                            AcadObject robjAcadObject = dobjAcadLWPolyline4;
                            string     nrstrErrMsg    = "";
                            bool       flag           = dobjAcadDatabase.FriendObjectIdToObject(vdblObjectID, ref robjAcadObject, ref nrstrErrMsg);
                            dobjAcadLWPolyline4 = (AcadLWPolyline)robjAcadObject;
                            if (flag)
                            {
                                return(dobjAcadLWPolyline4);
                            }
                        }
                        break;
                    }
                    }
                }
            }
            AcadLWPolyline Item = default(AcadLWPolyline);

            return(Item);
        }