示例#1
0
 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;
 }
示例#2
0
        /// <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);
        }
示例#3
0
        ///// <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);
        }
示例#4
0
        //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)
        {
        }
示例#5
0
 public InsPointReport(IInsPoint insPoint, Database db) : base(db)
 {
     this.insPoint = insPoint;
     Title         = "Расчетная точка №" + insPoint?.Number;
 }