Ejemplo n.º 1
0
        public static void RemoveItems(IProjectVersion version, string[] items)
        {
            foreach (var name in items)
            {
                TearDownComposite(name);
                var steelArr = version.DefaultStructureArrangement;
                var subArrs  = steelArr.ElementaryArrangements;
                var arr      = subArrs.FirstOrDefault(a => a.Names.Contains(name));
                if (arr == null)
                {
                    continue;
                }
                arr.Remove(name);

                var itemVM = FindItemByName(BrowserVM.ActualRoot, name);
                if (itemVM == null)
                {
                    continue;
                }
                var nodeVM = itemVM.Parent;
                var method = nodeVM.GetType().GetMethod("RemoveChild", BindingFlags.NonPublic | BindingFlags.Instance);
                method.Invoke(nodeVM, new object[] { itemVM });
                ((ObjectBrowserNodeViewModel)nodeVM).NotifyCountChanged();
            }
        }
Ejemplo n.º 2
0
        public static void AddItems(IProjectVersion version, IEnumerable <string> path, string[] items)
        {
            var vm   = BrowserVM;
            var node = GetNode(version, vm, vm.ActualRoot, path);

            AddDrawablesToNode(vm, node, items);
        }
Ejemplo n.º 3
0
        private static ObjectBrowserNodeViewModel GetNode(IProjectVersion version, NapaArrangementBrowserViewModel vm,
                                                          ObjectBrowserNodeViewModel root, IEnumerable <string> path)
        {
            if (!path.Any())
            {
                return(root);
            }

            var children = GetChildren(root);
            ObjectBrowserItemViewModel node;

            if (children.TryGetValue(path.First(), out node))
            {
                return(GetNode(version, vm, node as ObjectBrowserNodeViewModel, path.Skip(1)));
            }

            var arr = version.GetArrangement(root.Name);

            Napa.Alfred.EventProxy.WithDelayedEvents(() => {
                Napa.Alfred.EventProxy.WithDelayedGMEvents(() => {
                    var subArr = GetSubArr(version, arr, path.First());
                    if (subArr == null)
                    {
                        throw new InvalidOperationException("Cannot create STR path " + string.Join(":", path));
                    }
                    PopulateArrangement(vm, subArr, root);
                });
            });
            return(GetNode(version, vm, root, path));
        }
Ejemplo n.º 4
0
        private MainVerticalZone GetMainVerticalZone(IProjectVersion version)
        {
            var x = SurfaceObject.CenterOfGravity.X;

            return(MainVerticalZone
                   .GetMainVerticalZones(version)
                   .FirstOrDefault(z => z.Range.IsIncluding(x, 0.01)));
        }
Ejemplo n.º 5
0
        private static IHierarchicalArrangement GetSubArr(IProjectVersion version,
                                                          IHierarchicalArrangement parent, string name)
        {
            var subArr = version.GetArrangement(name);

            if (subArr == null)
            {
                subArr = parent.AddSubArrangement(name);
            }
            return(subArr);
        }
Ejemplo n.º 6
0
            public IHierarchicalArrangement GetArrangement(IProjectVersion version)
            {
                var mvzArrName = GetArrangementName();
                var mvzArr     = version.GetArrangement(mvzArrName);

                if (mvzArr == null)
                {
                    var strSteel = version.GetArrangement("STR*STEEL");
                    mvzArr = strSteel.AddSubArrangement(mvzArrName);
                }
                return(mvzArr);
            }
Ejemplo n.º 7
0
        private IHierarchicalArrangement GetLeafArrangement(IProjectVersion version, MainVerticalZone mvz, DeckZone dz)
        {
            var name    = GetArrangementName(mvz, dz);
            var deckArr = dz.GetArrangement(version, mvz);
            var leafArr = deckArr.SubArrangements.FirstOrDefault(arr => arr.Name == name);

            if (leafArr == null)
            {
                leafArr = deckArr.AddSubArrangement(name);
            }
            return(leafArr);
        }
Ejemplo n.º 8
0
        public string[] GetArrangementPath(IProjectVersion version)
        {
            var mvz      = GetMainVerticalZone(version);
            var deckZone = GetDeckZone(version, mvz);

            return(new[] {
                "STR*STEEL",
                mvz.GetArrangementName(),
                deckZone.GetArrangementName(mvz),
                GetArrangementName(mvz, deckZone)
            });
        }
Ejemplo n.º 9
0
            public IHierarchicalArrangement GetArrangement(IProjectVersion version, MainVerticalZone mvz)
            {
                var name    = GetArrangementName(mvz);
                var mvzArr  = mvz.GetArrangement(version);
                var deckArr = mvzArr.SubArrangements.FirstOrDefault(arr => arr.Name == name);

                if (deckArr == null)
                {
                    deckArr = mvzArr.AddSubArrangement(name);
                }
                return(deckArr);
            }
Ejemplo n.º 10
0
        public bool AssignStructureType(IProjectVersion version, string structureType)
        {
            var dMgr = Alfred.GraphicsService.DrawableManager;
            var geom = dMgr.GetFromCache(SurfaceObject.Name) as CompositeGeometry;

            if (geom == null)
            {
                return(false);
            }

            geom.StructureType = structureType;
            return(true);
        }
Ejemplo n.º 11
0
        public bool AssingStructureType(IProjectVersion version)
        {
            string structureType = null;
            string originalObjectName;

            if (IsReflectedObject(out originalObjectName))
            {
                var mainObject = version.SteelManager.DefaultModel.GetMainObjectByName(originalObjectName);
                if (mainObject != null && mainObject.StructureType != null)
                {
                    structureType = mainObject.StructureType.Name;
                }
            }
            return(AssignStructureType(version, structureType ?? GetStructureType()));
        }
Ejemplo n.º 12
0
        private DeckZone GetDeckZone(IProjectVersion version, MainVerticalZone mvz)
        {
            var p = SurfaceObject.CenterOfGravity;

            return(DeckZone.GetDefinedDeckZones(version)
                   .Select(z => {
                var s = version.GeometryManager.GetSurface(z.Surface);
                var pClosest = s.GetClosestPoint(p);
                return new { Zone = z, Point = pClosest };
            }).OrderBy(item => item.Point.GetDistance(p))
                   .Take(2)
                   .OrderByDescending(item => item.Point.Z)
                   .Select(item => item.Zone)
                   .FirstOrDefault());
        }
Ejemplo n.º 13
0
        public bool AssignLabels(IProjectVersion version)
        {
            var mvz = GetMainVerticalZone(version);
            var dz  = GetDeckZone(version, mvz);

            var currentLabels = Napa.Core.Geometry.Labeling.GetLabels(SurfaceObject.Name);
            var labels        = new[] {
                mvz.Name,
                "DECK_" + dz.ID,
                GetGenericStructureType()
            }.Concat(currentLabels)
            .Distinct();

            Napa.Core.Geometry.Labeling.SetLabels(SurfaceObject.Name, labels);
            return(true);
        }
Ejemplo n.º 14
0
        private IHierarchicalArrangement GetArrangement(IProjectVersion version)
        {
            var mvz = GetMainVerticalZone(version);

            if (mvz == null)
            {
                return(null);
            }

            var deckZone = GetDeckZone(version, mvz);

            if (deckZone == null)
            {
                return(null);
            }

            return(GetLeafArrangement(version, mvz, deckZone));
        }
Ejemplo n.º 15
0
        public void Run(IProjectVersion version, string name)
        {
            try {
                var so = version.GeometryManager.GetSurfaceObject(name);
                if (so == null)
                {
                    return;
                }

                var helper = new ArrangementHelper(so);
                var path   = helper.GetArrangementPath(version);
                ObjectBrowserHelper.AddItems(version, path, new[] { name });
                helper.AssingStructureType(version);
                helper.AssignLabels(version);
            } catch (Exception e) {
                Console.WriteLine(e.StackTrace);
                throw e;
            }
        }
Ejemplo n.º 16
0
            public static IEnumerable <DeckZone> GetDefinedDeckZones(IProjectVersion version)
            {
                var name = "TAB*DECKS";
                var t    = version.GetTable(name);

                if (t == null)
                {
                    return(Enumerable.Empty <DeckZone>());
                }

                return(t.Rows
                       .Cast <IRow>()
                       .Select(r => new DeckZone()
                {
                    ID = r.GetStringValue("NAME"),
                    Surface = r.GetStringValue("SURFACE")
                })
                       .ToList());
            }
Ejemplo n.º 17
0
            public static IEnumerable <MainVerticalZone> GetMainVerticalZones(IProjectVersion version)
            {
                var name = "TAB*MVZ";
                var t    = version.GetTable(name);

                if (t == null)
                {
                    return(Enumerable.Empty <MainVerticalZone>());
                }

                return(t.Rows.Cast <IRow>()
                       .Select(r => new MainVerticalZone()
                {
                    Name = r.GetStringValue("NAME"),
                    Min = ShipCoordinate.Create(r.GetStringValue("LLIMIT")),
                    Max = ShipCoordinate.Create(r.GetStringValue("ULIMIT")),
                    Index = r.GetStringValue("NR")
                })
                       .OrderByDescending(mvz => mvz.Name)
                       .ToList());
            }
Ejemplo n.º 18
0
 ///<summary>
 /// Update version method.
 ///</summary>
 /// <exception cref="MCException"></exception>
 public bool UpdateVersion(IProjectVersion version)
 {
     var mc = CreateMantisClientProxyInstance();
     try
     {
         return mc.mc_project_version_update(Username, Password, version.Id.ToString(), ((ProjectVersion)version).Data);
     }
     catch (Exception ex)
     {
         if (version != null)
         {
             throw new MCException(String.Format("Could not add version {0}", version.Id), ex);
         }
         throw new MCException("Could not add version", ex);
     }
     finally
     {
         mc.CloseSafely();
     }
 }
Ejemplo n.º 19
0
 ///<summary>
 /// Submit the specified version details.
 ///</summary>
 /// <exception cref="MCException"></exception>
 public long AddVersion(IProjectVersion version)
 {
     var mc = CreateMantisClientProxyInstance();
     try
     {
         return Convert.ToInt64(mc.mc_project_version_add(Username, Password, ((ProjectVersion)version).Data));
     }
     catch (Exception ex)
     {
         if (version != null)
         {
             throw new MCException(String.Format("Could not add version {0}", version.Id), ex);
         }
         throw new MCException("Could not add version", ex);
     }
     finally
     {
         mc.CloseSafely();
     }
 }