Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }