/// <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); }
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); }