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); }
public static Circle CreateCircle(double radius, VisualOption opt) { Circle c = new Circle(opt.Position, Vector3d.ZAxis, radius); SetEntityOpt(c, opt); return(c); }
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; } }
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); }
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(); } }
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); }
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); }
/// <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)); }
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); }
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); }
/// <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); }
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); }