Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
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
            { }
        }
Ejemplo n.º 3
0
        public IXMRK GetXMRK()
        {
            if (m_XMRK == null)
            {
                m_XMRK = new XMRKClass();
            }
            //添加获取属性信息代码


            if (GeoChange)//如果重新设置了图形
            {
                AcadObject pAcadObject = superGridControlCoords.Tag as AcadObject;
                if (m_XMRK.ID == -1 && pAcadObject == null)
                {
                    throw new Exception("未获取入库图形");
                }
                m_XMRK.STGeometry = ConvertDBObject(pAcadObject);
                //m_XMRK.STGeometry.SRID = 300000;
                //if (!m_XMRK.STGeometry.IsSimplify())
                //{
                m_XMRK.STGeometry = m_XMRK.STGeometry.Simplify();
                //   m_XMRK.CADPath=
                //}

                ISTPointCollection pSTPointCollection = new STPointCollectionClass();
                double[]           AdlwpPoint         = (double[])(pAcadObject as AcadLWPolyline).Coordinates;
                int PointCount = AdlwpPoint.Length / 2;
                for (int j = 0; j < PointCount; j++)
                {
                    ISTPoint pSTPoint = new STPointClass()
                    {
                        X = AdlwpPoint[j * 2], Y = AdlwpPoint[j * 2 + 1]
                    };
                    pSTPointCollection.AddPoint(pSTPoint);
                }
                m_XMRK.SoucePoints = pSTPointCollection;
            }
            return(m_XMRK);
        }