コード例 #1
0
        public override void Execute()
        {
            base.Execute();
            if (diamtomassa500 == null)
            {
                InitStaticData();
            }

            //настройки ввода
            if (iio == null)
            {
                iio = new ItemInputOptions();
            }
            Tweet(iio.ToString());
            if (items == null)
            {
                items = new List <Item>();               //при первом использовании заводим список позиций
            }
            Tweet(iim.ToString());

            ObjectsInput OI = new ObjectsInput()
            {
                Keywords     = ItemKeywords,
                Message      = "\nВыберите объекты для добавления позиции",
                KeywordInput = new SelectionTextInputEventHandler(KeywordInput),
            };

            if (OI.StatusBad)
            {
                return;
            }
            using (TransactionHelper th = new TransactionHelper())
            {
                objects = th.ReadObjects(OI.SSet);
            }
            ii += EnterParams;
            ii.Invoke();
            items.Add(pos);
        }
コード例 #2
0
        void InputBendVar()
        {
            iim = ItemInputMode.BendVar;


            bool doinput = true;

            while (doinput)
            {
                Entity base_ent;
                //ввод базы


                ObjectsInput OIbase = new ObjectsInput()
                {
                    Message = "\nВыберите объект на проекции, представляющий базу",
                };
                OIbase.Input();
                if (OIbase.StatusBad)
                {
                    continue;
                }
                if (OIbase.SSet.Count != 1)
                {
                    Alert("Введите один объект!");
                    continue;
                }

                using (TransactionHelper th = new TransactionHelper())
                {
                    base_ent = th.ReadObject(OIbase.SSet[0].ObjectId) as Entity;
                }

                ObjectsInput OIvar = new ObjectsInput()
                {
                    Message = "\nВыберите переменные длины",
                };
                OIvar.Input();
                if (OIvar.StatusBad)
                {
                    return;
                }
                using (TransactionHelper th = new TransactionHelper())
                {
                    objects_var = th.ReadObjects(OIvar.SSet);
                }

                double baselength = UT.EntityLength(base_ent) - UT.EntityLength(objects_var[0]);

                double[] lengthdata = new double[objects_var.Count];

                for (int i = 0; i < objects_var.Count; i++)
                {
                    lengthdata[i] = UT.EntityLength(objects_var[i]) + baselength;
                }

                pos.segments.Add(new ItemSegment(lengthdata));
                doinput = false;
            }
            //добавляем остальные сегменты

            foreach (Entity ent in objects)
            {
                if (ent is Line)
                {
                    pos.segments.Add(new ItemSegment(((Line)ent).Length));
                }
                else if (ent is Arc)
                {
                    pos.segments.Add(new ItemSegment(ent as Arc));
                }
                else if (ent is Polyline)
                {
                    Polyline pl = ent as Polyline;
                    int      count;
                    if (pl.Closed)
                    {
                        count = pl.NumberOfVertices;
                    }
                    else
                    {
                        count = pl.NumberOfVertices - 1;
                    }

                    for (int j = 0; j < count; j++)
                    {
                        SegmentType st = pl.GetSegmentType(j);
                        if (st == SegmentType.Line)
                        {
                            LineSegment2d lsd = pl.GetLineSegment2dAt(j);
                            pos.segments.Add(new ItemSegment(lsd.Length));
                        }
                        else if (st == SegmentType.Arc)
                        {
                            CircularArc2d arc_s = pl.GetArcSegment2dAt(j);
                            Plane         pn    = new Plane(Point3d.Origin, Vector3d.XAxis, Vector3d.YAxis);
                            Arc           arc   = new Arc(new Point3d(pn, arc_s.Center), Vector3d.ZAxis, arc_s.Radius, arc_s.StartAngle, arc_s.EndAngle);
                            pos.segments.Add(new ItemSegment(arc));
                        }
                    }
                }
            }

            pos.count = ItemCount();
        }