public IllumAreaBase(IInsPoint insPoint, Point2d ptOrig, double angleStart, double angleEnd, Point2d ptStart, Point2d ptEnd) { InsPoint = insPoint; AngleStartOnPlane = angleStart; AngleEndOnPlane = angleEnd; PtOrig = ptOrig; PtStart = ptStart; PtEnd = ptEnd; }
/// <summary> /// Поиск модели точки по инсоляционной точке на чертеже /// </summary> /// <returns>Модель точки</returns> public static IInsPoint FindInsPoint(Point3d pt, Database db) { IInsPoint res = null; // Получение InsModel для соответствующего чертежа var insModel = insModels.FirstOrDefault(m => m.Key.Database == db).Value; if (insModel != null) { res = insModel.FindInsPoint(pt); } return(res); }
///// <summary> ///// Построение контура освещенности ///// </summary> //public override void Create (BlockTableRecord space) //{ // Point2d pt1 = Point2d.Origin; // Point2d pt2 = Point2d.Origin; // //Low = CreatePl(insService.Options.VisualOptions[0].Height, // // Color.FromColor(insService.Options.VisualOptions[0].Color), true, ref pt1, ref pt2); // //Medium = CreatePl(insService.Options.VisualOptions[1].Height, // // Color.FromColor(insService.Options.VisualOptions[1].Color), false, ref pt1, ref pt2); // //Hight = CreatePl(insService.Options.VisualOptions[2].Height, // // Color.FromColor(insService.Options.VisualOptions[2].Color), false, ref pt1, ref pt2); // Transaction t = space.Database.TransactionManager.TopTransaction; // visualPl(Low, space, t); // visualPl(Medium, space, t); // visualPl(Hight, space, t); //} public static List <IIlluminationArea> Invert(List <IIlluminationArea> illums, IIlluminationArea startAnglesIllumBound, Point2d ptOrig, IInsPoint insPoint) { double angleStart = startAnglesIllumBound.AngleStartOnPlane; double angleEnd = startAnglesIllumBound.AngleEndOnPlane; List <IIlluminationArea> inverts = new List <IIlluminationArea>(); if (illums.Count == 0) { // Зон теней нет. От стартового угла до конечного - зона освещена var illum = new IllumAreaCentral(insPoint, ptOrig, angleStart, angleEnd, GetPointInRayByLength(ptOrig, angleStart, 50), GetPointInRayByLength(ptOrig, angleEnd, 50)); inverts.Add(illum); } else { double curStart = angleStart; Point2d cusStartPt = GetPointInRayFromPoint(illums[0].PtOrig, illums[0].PtStart, curStart); foreach (var item in illums) { if (item.AngleStartOnPlane - curStart > 0.01) { var illum = new IllumAreaCentral(insPoint, item.PtOrig, curStart, item.AngleStartOnPlane, cusStartPt, item.PtStart); inverts.Add(illum); } curStart = item.AngleEndOnPlane; cusStartPt = item.PtEnd; } if (angleEnd - curStart > 0.1) { Point2d ptEnd = GetPointInRayFromPoint(illums[0].PtOrig, cusStartPt, angleEnd); var illum = new IllumAreaCentral(insPoint, illums[0].PtOrig, curStart, angleEnd, cusStartPt, ptEnd); inverts.Add(illum); } } return(inverts); }
//public Polyline Low { get; set; } //public Polyline Medium { get; set; } //public Polyline Hight { get; set; } public IllumAreaCentral(IInsPoint insPoint, Point2d ptOrig, double angleStart, double angleEnd, Point2d ptStart, Point2d ptEnd) : base(insPoint, ptOrig, angleStart, angleEnd, ptStart, ptEnd) { }
public InsPointReport(IInsPoint insPoint, Database db) : base(db) { this.insPoint = insPoint; Title = "Расчетная точка №" + insPoint?.Number; }