protected override void Translate(ExpandoObject objectToTranslate) { var objectAsDict = (IDictionary <string, object>)objectToTranslate; List <Segment> segmentList = GetSegmentList(objectAsDict); if (segmentList == null) { return; } string objectName = GetObjectName(objectAsDict); if (string.IsNullOrEmpty(objectName)) { return; } ObjectTypeEnum objectType = GetObjectType(objectAsDict); string iIP = GetIIP(objectAsDict); string other; if (!isNet) { List <string> translatedObjects = new List <string>(); foreach (var segment in segmentList) { var pointsList = AdditionalPointsCreation.CreatePointsInLine(segment.p1, segment.p2, propSize); other = Calculations.Azimuth(segment.p1, segment.p2).ToString(); foreach (var point in pointsList) { translatedObjects.Add($"{objectType};{objectName};{iIP};{other};{point.X} {point.Y};"); } } foreach (var obj in translatedObjects) { if (!string.IsNullOrEmpty(obj)) { Console.WriteLine(obj); } } } else { other = GetOther(objectAsDict); TranslatorUtils.WriteAttrToConsole(segmentList, objectType, objectName, iIP, other); } }
protected override HashSet <Vector2> GetPointsInArea(IDictionary <string, object> objectAsDict) { if (!objectAsDict.ContainsKey("posList")) { return(null); } var lineList = (List <string>)objectAsDict["posList"]; var exteriorV2 = TranslatorUtils.LineToVectorList(lineList[0], CoordinatesCalc.IsInResourceRange); if (exteriorV2.Count < 3) { return(null); } var areaMinMax = Calculations.FindMaxMin(exteriorV2); var points = AdditionalPointsCreation.CreatePointArray(areaMinMax[0], areaMinMax[1], gridDist); List <List <Vector2> > interiors = new List <List <Vector2> >(); if (lineList.Count > 1) { for (int i = 1; i < lineList.Count; i++) { interiors.Add(TranslatorUtils.LineToVectorList(lineList[i], CoordinatesCalc.IsInResourceRange)); } } HashSet <Vector2> selectedPoints = new HashSet <Vector2>(); foreach (var p in points) { if (Calculations.PointInPoly(exteriorV2, p) && (interiors == null || !interiors.Any(interior => Calculations.PointInPoly(interior, p)))) { selectedPoints.Add(p); } } return(selectedPoints); }