コード例 #1
0
        /// <summary>
        /// Определение высоты расчетной точки
        /// </summary>
        /// <param name="calcFrontPt">Расчетная точка</param>
        /// <returns>Высота для расчета инсоляции в точке</returns>
        private double CalcHeightCalcPt(FrontCalcPoint calcFrontPt)
        {
            var building    = calcFrontPt.Section.Building;
            var levelHeight = building.GetLevelHeight(house.GetCalcFrontLevel());

            return(levelHeight + InsPoint.DefaultHeightWindowCenter);
        }
コード例 #2
0
        private FrontValue CreateFrontLine(FrontCalcPoint fPtStart, FrontCalcPoint fPtEnd, LineSegment2d seg)
        {
            FrontValue frontLine = null;

            if (fPtStart.Point.IsEqualTo(fPtEnd.Point))
            {
                if (fPtStart.IsCorner && fPtEnd.IsCorner)
                {
                    return(null);
                }
                // Участок фронта из 1 точки
                var pt1 = fPtStart.Point - seg.Direction * (delta * 0.5);
                var pt2 = fPtStart.Point + seg.Direction * (delta * 0.5);
                frontLine = new FrontValue(pt1, pt2, fPtStart.InsValue, frontOpt);
            }
            else
            {
                var ptEnd   = fPtEnd.Point;
                var ptStart = fPtStart.Point;
                if (!fPtEnd.IsCorner)
                {
                    // Продлить линию на половину дельты
                    ptEnd = ptEnd + seg.Direction * (delta * 0.5);
                }
                if (!fPtStart.IsCorner)
                {
                    ptStart = ptStart - seg.Direction * (delta * 0.5);
                }

                frontLine = new FrontValue(ptStart, ptEnd, fPtStart.InsValue, frontOpt);
            }
            return(frontLine);
        }