Esempio n. 1
0
        public List <Entity> CreateVisual(byte transparence)
        {
            var draws = new List <Entity>();

            // Штриховка
            var color  = InsPoint?.InsValue?.Requirement?.Color ?? System.Drawing.Color.Gray;
            var visOpt = new VisualOption(color, Point3d.Origin, transparence);
            var points = new List <Point2d> {
                PtOrig, PtStart, PtEnd
            };
            var h = VisualHelper.CreateHatch(points, visOpt);

            draws.Add(h);

            // Угловой размер
            var ptCenter = GetCenterTriangle(PtOrig, PtStart, PtEnd);
            var ptDim1   = PtOrig + (PtStart - PtOrig) / 2;
            var ptDim2   = PtOrig + (PtEnd - PtOrig) / 2;
            var dim      = new LineAngularDimension2(PtOrig.Convert3d(), ptDim1.Convert3d(),
                                                     PtOrig.Convert3d(), ptDim2.Convert3d(), ptCenter.Convert3d(), Time.ToHours(), ObjectId.Null);

            dim.DimensionStyle = HostApplicationServices.WorkingDatabase.GetDimAngularStylePIK();
            dim.Color          = Color.FromColor(System.Drawing.Color.Red);
            dim.Dimtxt         = 1.5;
            dim.Dimscale       = 0.5;
            dim.LineWeight     = LineWeight.ByLineWeightDefault;
            dim.Dimclrd        = dim.Color;
            dim.Dimclre        = dim.Color;
            dim.Dimclrt        = dim.Color;
            draws.Add(dim);

            return(draws);
        }
Esempio n. 2
0
        public static Circle CreateCircle(double radius, VisualOption opt)
        {
            Circle c = new Circle(opt.Position, Vector3d.ZAxis, radius);

            SetEntityOpt(c, opt);
            return(c);
        }
Esempio n. 3
0
 public static void SetEntityOpt(Entity ent, VisualOption opt)
 {
     if (opt.Color != null)
     {
         ent.Color = opt.Color;
     }
     if (opt.Transparency.Alpha != 0)
     {
         ent.Transparency = opt.Transparency;
     }
 }
Esempio n. 4
0
        public static MText CreateMText(string text, VisualOption opt, double height, AttachmentPoint justify)
        {
            var mtext = new MText();

            mtext.Location    = opt.Position;
            mtext.TextStyleId = GetTextStyleId(Application.DocumentManager.MdiActiveDocument);
            mtext.Attachment  = justify;
            mtext.Height      = height;
            mtext.Contents    = text;
            mtext.Color       = opt.Color;
            //mtext.Transparency = opt.Transparency;
            return(mtext);
        }
Esempio n. 5
0
        private void UnionTiles()
        {
            if (Tiles == null || Tiles.Count == 0)
            {
                return;
            }

            DisposeVisuals();
            visuals = new List <Entity>();

            // Подпись площадки
            var text = GetPlaceNameText();

            if (text != null)
            {
                visuals.Add(text);
            }

            var groupLevels = Tiles.GroupBy(g => g.Level);

            try
            {
                foreach (var group in groupLevels)
                {
                    if (group.Key.TotalTimeH == 0)
                    {
                        continue;
                    }
                    var pls = group.Select(s => s.Contour).ToList();

                    var region = pls.Union(null);

                    // Добавление региона в визуализацию контуров уровней площадок
                    var visOpt = new VisualOption(group.Key.Color, place?.PlaceModel?.Options?.Transparent ?? 0);
                    VisualHelper.SetEntityOpt(region, visOpt);
                    visuals.Add(region);

                    var h = region.CreateHatch();
                    VisualHelper.SetEntityOpt(h, visOpt);
                    visuals.Add(h);
                }
            }
            catch (Exception ex)
            {
                Logger.Log.Error(ex, "VisualPlace.UnionTiles()");
                DisposeVisuals();
            }
        }
Esempio n. 6
0
        public static Hatch CreateHatch(List <Point2d> points, VisualOption opt)
        {
            Point2d[] pts = DistincPoints(points);
            // Штриховка
            var ptCol = new Point2dCollection(pts);

            ptCol.Add(points[0]);
            var dCol = new DoubleCollection(new double[points.Count]);

            var h = new Hatch();

            h.SetHatchPattern(HatchPatternType.PreDefined, "SOLID");
            SetEntityOpt(h, opt);
            h.AppendLoop(HatchLoopTypes.Default, ptCol, dCol);
            return(h);
        }
Esempio n. 7
0
        public static DBText CreateText(string text, VisualOption opt, double height, AttachmentPoint justify)
        {
            var    doc    = Application.DocumentManager.MdiActiveDocument;
            var    db     = doc.Database;
            DBText dbText = new DBText();

            //dbText.SetDatabaseDefaults(db);

            SetEntityOpt(dbText, opt);
            dbText.TextStyleId    = GetTextStyleId(doc);
            dbText.Position       = opt.Position;
            dbText.TextString     = text;
            dbText.Height         = height;
            dbText.Justify        = justify;
            dbText.AlignmentPoint = opt.Position;
            dbText.AdjustAlignment(db);
            return(dbText);
        }
Esempio n. 8
0
        /// <summary>
        /// Тект имени площадки
        /// </summary>
        /// <returns></returns>
        private DBText GetPlaceNameText()
        {
            if (string.IsNullOrEmpty(place?.Name))
            {
                return(null);
            }
            var visOpt = new VisualOption(System.Drawing.Color.White);

            using (var pl = place.PlaceId.Open(OpenMode.ForRead) as Polyline)
            {
                try
                {
                    visOpt.Position = pl.Centroid();
                }
                catch
                {
                    return(null);
                }
            }
            return(VisualHelper.CreateText(place.Name, visOpt, 1, AttachmentPoint.MiddleCenter));
        }
Esempio n. 9
0
        public override List <Entity> CreateVisual()
        {
            draws = new List <Entity>();

            // Кружок (положение точки)
            var optCircle = new VisualOption(InsPoint.InsValue.Requirement.Color, InsPoint.Point);

            draws.Add(CreateCircle(0.5, optCircle));

            // Подпись
            // Макимальная непрерывная инсоляция
            var ptText = InsPoint.Point + new Vector3d(0, 0.5, 0);
            var opt    = new VisualOption(InsPoint.InsValue.Requirement.Color, ptText);

            draws.Add(CreateText(InsPoint.InsValue.MaxContinuosTimeString, opt, 0.5, AttachmentPoint.BottomCenter));
            // Тип требования
            opt.Position = ptText + new Vector3d(0, 1, 0);
            draws.Add(CreateText(InsPoint.InsValue.Requirement.Name, opt, 0.5, AttachmentPoint.BottomCenter));
            // Номер точки
            opt.Position = ptText + new Vector3d(0, 1, 0);
            draws.Add(CreateText(InsPoint.Number.ToString(), opt, 1.5, AttachmentPoint.BottomCenter));

            return(draws);
        }
Esempio n. 10
0
        public override List <Entity> CreateVisual()
        {
            var points = Points;

            if (points == null || points.Count == 0 || points.All(p => p.Illums == null))
            {
                return(null);
            }

            var draws          = new List <Entity>();
            var plsAllTrees    = new List <List <Polyline> >();
            var idsPlsAllTrees = new List <List <Polyline> >();
            var visOptions     = new List <VisualOption>();

            foreach (var item in TreeModel.TreeOptions.TreeVisualOptions)
            {
                plsAllTrees.Add(new List <Polyline>());
                idsPlsAllTrees.Add(new List <Polyline>());
                var visOpt = new VisualOption(item.Color, Point3d.Origin, TreeModel.TreeOptions.Transparence);
                visOptions.Add(visOpt);
            }

            // Получение полилиний елочек от всех точек (у каждой высоты визуализации - свой список полилиний)
            foreach (var item in Points)
            {
                if (item.Illums == null)
                {
                    continue;
                }
                var plsItem = GetTreePolylines(item, visOptions);
                for (int i = 0; i < plsItem.Count; i++)
                {
                    var pl = plsItem[i];
                    idsPlsAllTrees[i].Add(pl);
                }
            }
            for (int i = 0; i < idsPlsAllTrees.Count; i++)
            {
                foreach (var item in idsPlsAllTrees[i])
                {
                    plsAllTrees[i].Add(item);
                }
            }

            // Объединение полилиний по высотам
            Region overReg = null;

            for (int i = 0; i < plsAllTrees.Count; i++)
            {
                var visOpt = visOptions[i];
                var pls    = plsAllTrees[i];
                try
                {
                    // Подставляемый регион для объединения
                    var regToUnion = (Region)overReg?.Clone();
                    var region     = pls.Union(regToUnion);
                    regToUnion?.Dispose();


                    var hatch = region.CreateHatch();
                    if (hatch != null)
                    {
                        SetEntityOpt(hatch, visOpt);
                        draws.Add(hatch);
                    }

                    if (overReg == null)
                    {
                        overReg = region;
                    }
                    else
                    {
                        overReg.BooleanOperation(BooleanOperationType.BoolUnite, region);
                        region.Dispose();
                    }
                }
                catch
                {
                }
                foreach (var item in pls)
                {
                    item.Dispose();
                }
            }
            overReg?.Dispose();
            return(draws);
        }
Esempio n. 11
0
        /// <summary>
        /// Графика визуализации заданной высотности (настройка визуализации елочек)
        /// </summary>
        /// <param name="insPoint">инс точка</param>
        /// <param name="treeOpt">Настройка визуализации высоты улочек</param>
        /// <param name="p1">Первая точка елочки (левый верхний угол прямоугольника). Для первой елочки p1=p2=insPoint</param>
        /// <param name="p2">Правый верхний угол елочки</param>
        /// <param name="p3">Нижний правый угол елочки (возвращается)</param>
        /// <param name="p4">Нижений левый угол елочки (возвращается)</param>
        /// <returns></returns>
        private Polyline GetPolylineTreeOption(InsPoint insPoint, TreeVisualOption treeOpt, VisualOption visOpt,
                                               Point2d p1, Point2d p2, out Point2d p3, out Point2d p4)
        {
            var ptOrig     = insPoint.Point.Convert2d();
            var calcValues = TreeModel.Model.CalcService.CalcValues;

            double cShadow;
            // Высота тени (на заданной настройкой высоте елочки) - катет по Y
            var yShadow = calcValues.YShadowLineByHeight(treeOpt.Height, out cShadow);

            // Луч падения - катет по X до точки на луче, на заданой высоте
            var xRay = calcValues.GetXRay(yShadow, insPoint.AngleStartOnPlane);

            p3 = ptOrig + new Vector2d(xRay, -yShadow);

            xRay = calcValues.GetXRay(yShadow, insPoint.AngleEndOnPlane);
            p4   = ptOrig + new Vector2d(xRay, -yShadow);

            var points = new List <Point2d> {
                p1, p2, p3, p4
            };

            var pl = CreatePolyline(points, visOpt);

            return(pl);
        }
Esempio n. 12
0
        public static Autodesk.AutoCAD.DatabaseServices.Polyline CreatePolyline(List <Point2d> points, VisualOption opt)
        {
            Point2d[] pts = DistincPoints(points);
            var       pl  = new Autodesk.AutoCAD.DatabaseServices.Polyline();

            for (int i = 0; i < pts.Length; i++)
            {
                pl.AddVertexAt(i, pts[i], 0, 0, 0);
            }
            pl.Closed = true;
            SetEntityOpt(pl, opt);
            return(pl);
        }