示例#1
0
        public override void Calculate()
        {
            Document      doc    = Autodesk.Navisworks.Api.Application.ActiveDocument;
            List <object> output = new List <object>();

            OutputPorts[0].Data = MainTools.RunFunction(getAPIPropertyValue, InputPorts);
        }
示例#2
0
        public List <object> RenameClashes(object Guids, object Names)
        {
            //Get clashes from document
            Document      doc            = Application.ActiveDocument;
            DocumentClash documentClash  = doc.GetClash();
            var           output         = new List <object>();
            var           TemplistOfTest = new List <ClashTest>();

            if (MainTools.IsList(Guids) && MainTools.IsList(Names))
            {
                var guidlist  = (List <object>)Guids;
                var namesList = (List <object>)Names;

                if (guidlist.Count == namesList.Count)
                {
                    for (int i = 0; i < guidlist.Count; i++)
                    {
                        Guid guid           = new Guid(guidlist[i].ToString().Replace("\"", ""));
                        var  clashReference = documentClash.TestsData.ResolveGuid(guid);
                        var  name           = namesList[i].ToString();
                        documentClash.TestsData.TestsEditDisplayName(clashReference, name);;
                        output.Add(clashReference);
                    }
                }
                else
                {
                    output.Add("Error, be sure you have same amount of guids and names");
                }
            }
            return(output);
        }
示例#3
0
        public override void Calculate()
        {
            List <object> clashResultList = new List <object>();

            var input = InputPorts[0].Data;
            //Get clashes from document
            Document doc = Autodesk.Navisworks.Api.Application.ActiveDocument;

            //Check for null in input
            if (MainTools.IsList(input))
            {
                foreach (var i in (System.Collections.IEnumerable)input)
                {
                    if (i.GetType() == typeof(SavedItemReference))
                    {
                        ClashTest item = doc.ResolveReference(i as SavedItemReference) as ClashTest;
                        foreach (var t in item.Children)
                        {
                            clashResultList.Add(t);
                        }
                    }
                }
                OutputPorts[0].Data = clashResultList;
            }

            if (input.GetType() == typeof(SavedItemReference))
            {
                ClashTest item = doc.ResolveReference(input as SavedItemReference) as ClashTest;
                foreach (var t in item.Children)
                {
                    clashResultList.Add(t);
                }
                OutputPorts[0].Data = clashResultList;
            }
        }
示例#4
0
        //TODO: convert to tuple
        private Tuple <List <object>, List <object> > GetElementsInClashTest(object input)
        {
            if (input != null)
            {
                List <object> itemA = new List <object>();
                List <object> itemB = new List <object>();
                if (MainTools.IsList(input))
                {
                    foreach (var c in (System.Collections.IEnumerable)InputPorts[0].Data)
                    {
                        if (c.GetType() == typeof(ClashResult))
                        {
                            var clash = c as ClashResult;
                            itemA.AddRange(clash.CompositeItemSelection1);
                            itemB.AddRange(clash.CompositeItemSelection2);
                        }
                        if (c.GetType() == typeof(ClashResultGroup))
                        {
                            var group = c as ClashResultGroup;

                            itemA.AddRange(group.CompositeItemSelection1);
                            itemB.AddRange(group.CompositeItemSelection2);
                        }
                    }
                }

                return(new Tuple <List <object>, List <object> >(itemA, itemB));
            }
            else
            {
                return(null);
            }
        }
示例#5
0
        public override void Calculate()
        {
            var viewpoint = InputPorts[0].Data;


            OutputPorts[0].Data = MainTools.RunFunction(getViewpointsComments, InputPorts);
        }
示例#6
0
 private static List <object> Flatten(object list, int amt, List <object> acc)
 {
     if (amt == 0)
     {
         if (MainTools.IsList(list))
         {
             foreach (object item in (System.Collections.IEnumerable)list)
             {
                 acc.Add(item);
             }
         }
         else
         {
             acc.Add(list);
         }
     }
     else
     {
         foreach (object item in (System.Collections.IEnumerable)list)
         {
             if (MainTools.IsList(item))
             {
                 var type = item.GetType();
                 acc = Flatten(item, amt - 1, acc);
             }
             else
             {
                 acc.Add(item);
             }
         }
     }
     return(acc);
 }
示例#7
0
文件: CSV.cs 项目: lcl1153406/ENGyn
        public static void ExportCSV(string filePath, object data)
        {
            using (var writer = new StreamWriter(System.IO.Path.GetFullPath(filePath)))
            {
                //TODO cast object to list
                foreach (var line in (System.Collections.IList)data)
                {
                    int count = 0;
                    if (MainTools.IsList(line))
                    {
                        var t = line.GetType();
                        var l = (System.Collections.IList)line;
                        foreach (var entry in l)
                        {
                            writer.Write(MainTools.Quoted((entry ?? "").ToString().Replace("\n", string.Empty)));
                            if (++count < l.Count)
                            {
                                writer.Write(",");
                            }
                        }
                        writer.WriteLine();
                    }
                    else
                    {
                        writer.Write(MainTools.Quoted((line ?? "").ToString().Replace("\n", string.Empty)));

                        writer.Write(",");

                        writer.WriteLine();
                    }
                }
            }
        }
示例#8
0
        /// <summary>
        /// Compacts single Clashtest list of ClashesTest
        /// </summary>
        /// <param name="input"></param>
        public IEnumerable <object> CompactClashes(object input)
        {
            var doc = Autodesk.Navisworks.Api.Application.ActiveDocument;

            if (input != null)
            {
                var t = input.GetType();

                if (t == typeof(SavedItemReference))
                {
                    var ClashFromReference = doc.ResolveReference(input as SavedItemReference) as ClashTest;
                    var clashes            = doc.GetClash();
                    clashes.TestsData.TestsCompactTest(ClashFromReference);
                    yield return(input);
                }
                if (MainTools.IsList(input))

                {
                    var listData = input as List <object>;
                    if (listData[0].GetType() == typeof(Autodesk.Navisworks.Api.Clash.ClashTest))
                    {
                        foreach (var ct in input as List <object> )
                        {
                            var ClashFromReference = doc.ResolveReference(ct as SavedItemReference) as ClashTest;
                            var clashes            = doc.GetClash();
                            clashes.TestsData.TestsCompactTest(ClashFromReference);

                            yield return(ct);
                        }
                    }
                }
            }
        }
示例#9
0
        /// <summary>
        /// Check each element of a list of string
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        public List <object> Replace(object a, object b, object c)
        {
            List <object> output = new List <object>();

            if (MainTools.IsList(a) && MainTools.IsString(b) && MainTools.IsString(c))
            {
                foreach (var item in (System.Collections.IEnumerable)(a))
                {
                    if (MainTools.IsString(item))
                    {
                        string container = item as string;
                        output.Add(container.Replace(b.ToString(), c.ToString()));
                    }
                }
            }
            else
            {
                if (a.GetType() == typeof(string) && MainTools.IsString(b) && MainTools.IsString(c))

                {
                    string container = a as string;
                    output.Add(container.Replace(b.ToString(), c.ToString()));
                }
            }
            return(output);
        }
示例#10
0
 public void Fight()
 {
     Health = 127;
     MainTools.ColouWrite(false, $"{torn.Storm}", ConsoleColor.Gray);
     MainTools.ColouWrite(true, $"You are fighting the mighty {torn.Name} Cyclone. Some locals have given you the following message: \n\"{torn.Desc}\"", ConsoleColor.DarkYellow);
     Menu();
 }
示例#11
0
        public List <object> getClashInfo(object input)
        {
            var output = new List <object>();


            if (MainTools.IsList(input))
            {
                foreach (var item in (IList <object>)input)
                {
                    var clash = item as IClashResult;
                    if (clash != null)

                    {
                        var name         = clash.DisplayName;
                        var status       = clash.Status;
                        var ApprovedBy   = clash.ApprovedBy;
                        var ApprovedTime = clash.ApprovedTime;
                        var AssignedTo   = clash.AssignedTo;
                        var Description  = clash.Description;

                        string grid  = null;
                        string level = null;
                        //DANGER WILL ROBINSON!!
                        string GUID = (clash as ClashResult) != null? (clash as ClashResult).Guid.ToString(): (clash as ClashResultGroup).Guid.ToString();
                        var    x    = clash.Center.X;
                        var    y    = clash.Center.Y;
                        var    z    = clash.Center.Z;

                        GridSystem gridSystem = Application.MainDocument.Grids.ActiveSystem;

                        if (gridSystem.ClosestIntersection(clash.Center) != null)
                        {
                            GridIntersection closestGridIntersection = gridSystem.ClosestIntersection(clash.Center);
                            grid  = closestGridIntersection.Line1.DisplayName + "-" + closestGridIntersection.Line2.DisplayName;
                            level = closestGridIntersection.Level.DisplayName;
                        }
                        output.Add(new List <object>()
                        {
                            name,
                            status,
                            ApprovedBy,
                            ApprovedTime,
                            AssignedTo,
                            Description,
                            grid,
                            level,
                            GUID,
                            x,
                            y,
                            z
                        });
                    }
                }
            }

            return(output);
        }
示例#12
0
        private void Menu()
        {
            while (true)
            {
                System.Threading.Thread.Sleep(1414);
                Console.Clear();
                MainTools.ColouWrite(false, $"{torn.Storm}", ConsoleColor.Gray);
                MainTools.ColouWrite(false, $"{torn.Name}, {torn.Health} HP, {torn.Damage} Potential Danger\nYour Health: {this.Health}, Your Defence: {this.Defence}", ConsoleColor.DarkYellow);
                byte chance = Convert.ToByte(new Random().Next(0, 5));
                MainTools.ColouWrite(false, "[1] Fight\n[2] Seek help\n[3] Go underground or run away", ConsoleColor.Cyan);
                try { this.Option = Convert.ToByte(Console.ReadLine()); }
                catch { MainTools.ColouWrite(false, "Please input a number.", ConsoleColor.DarkYellow); continue; }
                switch (this.Option)
                {
                case 1:
                    Chooser();
                    break;

                case 3:
                    if (chance != 1)
                    {
                        MainTools.ColouWrite(true, $"You got blown away by the {torn.Name} Cyclone! The locals had faith in you.", ConsoleColor.Red);
                        Environment.Exit(1);
                    }
                    else
                    {
                        MainTools.ColouWrite(true, "You managed to survive! You should be proud.", ConsoleColor.Cyan); return;
                    }
                    break;

                case 2:
                    if (chance != 1)
                    {
                        MainTools.ColouWrite(true, "What a waste of time. There are no locals nearby, and the cyclone is approaching you faster than ever before.", ConsoleColor.DarkYellow);
                        torn.Add(10);
                    }
                    else
                    {
                        MainTools.ColouWrite(true, "You found help! Oh wait, it's a fish bowl.", ConsoleColor.DarkYellow);
                    }
                    break;

                default:
                    MainTools.ColouWrite(false, "Please input 1, 2, or 3.", ConsoleColor.DarkYellow);
                    break;
                }
                this.Hurt(Convert.ToSByte(torn.Damage - this.Defence));
                if (torn.Health <= 0)
                {
                    MainTools.ColouWrite(true, $"You defeated the {torn.Name} Cyclone! The locals are praising you.", ConsoleColor.DarkYellow); return;
                }
                else if (this.Health <= 0)
                {
                    MainTools.ColouWrite(true, $"You died to the {torn.Name} Cyclone! The locals had faith in you.", ConsoleColor.Red); Environment.Exit(1);
                }
            }
        }
示例#13
0
 public override void Calculate()
 {
     if (InputPorts[0].Data != null &&
         InputPorts[1].Data != null &&
         InputPorts[2].Data != null)
     {
         OutputPorts[0].Data = MainTools.RunFunction(GetValuesFromProperties, InputPorts);
     }
 }
示例#14
0
        /// <summary>
        ///     Doesn't actually work yet, but will display the window's System Menu, containing various window management options
        /// </summary>
        public void ShowSystemMenu()
        {
            //https://stackoverflow.com/questions/21825352/how-to-open-window-system-menu-on-right-click
            WinApi.Rect pos;
            WinApi.GetWindowRect(Hwnd, out pos);
            IntPtr hMenu = WinApi.GetSystemMenu(Hwnd, false);
            int    cmd   = WinApi.TrackPopupMenu(hMenu, 0x0004 & 0x0020, MainTools.GetDpiScaledCursorPosition().X, MainTools.GetDpiScaledCursorPosition().Y, 0, Hwnd, IntPtr.Zero);

            WinApi.SendMessage(Hwnd, 0x112, cmd, 0);
        }
示例#15
0
        private IList <object> Process(object input)
        {
            List <object> output = new List <object>();
            Document      doc    = Autodesk.Navisworks.Api.Application.ActiveDocument;

            if (input != null)
            {
                if (MainTools.IsList(input))
                {
                    foreach (var item in (System.Collections.IEnumerable)InputPorts[0].Data)
                    {
                        var iterator = item;

                        if (item.GetType() == typeof(SavedItemReference))
                        {
                            iterator = doc.ResolveReference(item as SavedItemReference);
                        }

                        try
                        {
                            var properties = iterator.GetType().GetProperties();
                            var prop       = new List <string>();
                            foreach (var p in properties)
                            {
                                prop.Add(p.Name);
                            }
                            output.Add(prop);
                        }
                        catch { output.Add(null); }
                    }
                }
                else
                {
                    var iterator = input;

                    if (input.GetType() == typeof(SavedItemReference))
                    {
                        iterator = doc.ResolveReference(input as SavedItemReference);
                    }

                    try
                    {
                        var properties = iterator.GetType().GetProperties();
                        var prop       = new List <string>();
                        foreach (var p in properties)
                        {
                            prop.Add(p.Name);
                        }
                        output.Add(prop);
                    }
                    catch { output.Add(null); }
                }
            }
            return(output as IList <object>);
        }
示例#16
0
        public override void Calculate()
        {
            var input = InputPorts[0].Data;

            if (input != null)
            {
                if (MainTools.IsList(input))
                {
                    OutputPorts[0].Data = Transpose((System.Collections.IList)input);
                }
            }
        }
示例#17
0
        public override void Calculate()
        {
            var Name     = InputPorts[0].Data;
            var Category = InputPorts[1].Data;
            var Property = InputPorts[2].Data;
            var Value    = InputPorts[3].Data;

            var search = MainTools.RunFunction(createSearchSet, InputPorts);



            OutputPorts[0].Data = search;
        }
示例#18
0
        public override void Calculate()
        {
            Document doc = Autodesk.Navisworks.Api.Application.ActiveDocument;

            var viewpoints = doc.SavedViewpoints;

            object item = null;
            object name = null;
            object path = null;


            OutputPorts[0].Data = MainTools.RunFunction(exportViewpoint, InputPorts);
        }
示例#19
0
文件: CSV.cs 项目: lcl1153406/ENGyn
        public override void Calculate()
        {
            var input = InputPorts[0].Data;
            var path  = InputPorts[1].Data;

            if (input != null && path != null)
            {
                if (MainTools.IsList(input))
                {
                    var t = input.GetType();
                    ExportCSV(path.ToString(), input);
                }
            }
        }
示例#20
0
        /// <summary>
        /// Check each element of a list of string
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        public List <object> Contains(object a, object b)
        {
            List <object> output = new List <object>();

            if (MainTools.IsList(a) & MainTools.IsString(b))
            {
                foreach (var item in (System.Collections.IEnumerable)(a))
                {
                    if (MainTools.IsString(item))
                    {
                        string container = item as string;
                        output.Add(container.Contains(b as string));
                    }
                }
            }
            return(output);
        }
示例#21
0
        public override void Calculate()
        {
            List <object> output = new List <object>();

            if (InputPorts[0].Data != null)
            {
                var input     = InputPorts[0].Data;
                var values    = InputPorts[2].Data;
                var parameter = InputPorts[1].Data.ToString();
                if (MainTools.IsList(input) && MainTools.IsList(values))
                {
                    var ListA = (System.Collections.IList)input;
                    var ListB = (System.Collections.IList)values;

                    if (ListB.Count == ListA.Count)
                    {
                        try
                        {
                            oneToOne(input, values, parameter);
                        }

                        catch (Exception e)
                        {
                            output.Add(e.Message);
                        }
                    }
                    else
                    {
                    }
                }
                else
                {
                    try
                    {
                        manyToOne(input, values, parameter);
                    }
                    catch (Exception e)
                    {
                        var mm = e.Message;
                        output.Add(null);
                    }
                }
            }

            OutputPorts[0].Data = output;
        }
示例#22
0
        public override void Calculate()
        {
            var stack = ControlElements[0] as StackPanel;
            //Basic grouping
            var RelationComboBox = stack.Children[1] as ComboBox;

            relation = "AND";
            if (RelationComboBox.SelectedItem != null && RelationComboBox.SelectedItem.GetType() == typeof(string))
            {
                relation = RelationComboBox.SelectedItem.ToString();
            }


            var search = MainTools.RunFunction(setSearchRelation, InputPorts);

            OutputPorts[0].Data = search;
        }
示例#23
0
        public override void Calculate()
        {
            var input = InputPorts[0].Data;
            var mask  = InputPorts[1].Data;

            if (input != null && mask != null)
            {
                if (MainTools.IsList(input) && MainTools.IsList(mask))
                {
                    var filtered = FilterByBoolMask(input as IList, mask as IList);
                    OutputPorts[0].Data = ((IEnumerable)filtered["in"]).Cast <object>().ToList();

                    OutputPorts[1].Data = ((IEnumerable)filtered["out"]).Cast <object>().ToList();
                }
            }
            GC.Collect();
        }
示例#24
0
        public override void Calculate()
        {
            List <object> output = new List <object>();

            if (InputPorts[0].Data != null)
            {
                var input     = InputPorts[0].Data;
                var parameter = InputPorts[1].Data;
                if (MainTools.IsList(input) && MainTools.IsList(parameter))
                {
                    var ListA = (System.Collections.IList)input;
                    var ListB = (System.Collections.IList)parameter;

                    if (ListB.Count == ListA.Count)
                    {
                        try
                        {
                            oneToOne(input, parameter);
                        }

                        catch (Exception e)
                        {
                            output.Add(e.Message);
                        }
                    }
                    else
                    {
                        ManyToSome(input, parameter);
                    }
                }
                else
                {
                    try
                    {
                    }
                    catch
                    {
                        output.Add(null);
                    }
                }
            }

            OutputPorts[0].Data = output;
        }
示例#25
0
        public override void Calculate()
        {
            var input = InputPorts[0].Data;

            if (input != null)
            {
                var  tt     = input.GetType();
                bool istype = input.GetType() == typeof(SelectionSet);

                if (MainTools.IsList(input) || istype)
                {
                    //IList<SelectionSet> searchs = (IList<SelectionSet>)InputPorts[0].Data;

                    media.Color color = (media.Color)InputPorts[1].Data;

                    //Convert ARGB Alpha to normaliced transparency
                    double t            = ((-color.A / 255.0) + 1) * 100;
                    double transparency = t;

                    foreach (var s in (System.Collections.IEnumerable)input)
                    {
                        ApplyAppearance(s as SelectionSet, TransformColor(color), transparency);
                    }

                    OutputPorts[0].Data = (System.Collections.IEnumerable)input;
                }

                if (MainTools.IsList(input) && MainTools.ListContainsType(input, typeof(ModelItem)) || input is ModelItem)
                {
                    List <ModelItem> searchs = (List <ModelItem>)InputPorts[0].Data;

                    media.Color color = (media.Color)InputPorts[1].Data;

                    //Convert ARGB Alpha to normaliced transparency
                    double t            = ((-color.A / 255.0) + 1) * 100;
                    double transparency = t;


                    ApplyAppearance(searchs, TransformColor(color), transparency);

                    OutputPorts[0].Data = (List <ModelItem>)InputPorts[0].Data;
                }
            }
        }
示例#26
0
        public object StringResult(object a)
        {
            if (MainTools.IsList(a))
            {
                List <object> output = new List <object>();
                List <object> input  = a as List <object>;

                foreach (object x in input)
                {
                    output.Add(x.ToString().ToLower());
                }

                return(output);
            }
            else
            {
                return(a.ToString().ToLower());
            }
        }
示例#27
0
        public override void Calculate()
        {
            var input  = InputPorts[0].Data;
            var output = new List <ModelItemCollection>();

            if (input != null)
            {
                var type = input.GetType();

                if (type == typeof(SelectionSet))
                {
                    var selectionSet = input as SelectionSet;

                    ModelItemCollection searchResults =
                        selectionSet.Search.FindAll(Autodesk.Navisworks.Api.Application.ActiveDocument, false);
                    output.Add(searchResults);
                }

                if (MainTools.IsList(input) && MainTools.ListContainsType(input, typeof(SelectionSet)))
                {
                    foreach (var item in input as List <SelectionSet> )
                    {
                        var selectionSet = item as SelectionSet;

                        ModelItemCollection searchResults =
                            selectionSet.Search.FindAll(Autodesk.Navisworks.Api.Application.ActiveDocument, false);
                        output.Add(searchResults);
                    }
                }
            }
            var objects = new List <object>();

            foreach (var item in output)
            {
                List <ModelItem> modelitems = new List <ModelItem>();
                foreach (var model in item)
                {
                    modelitems.Add(model);
                }
                objects.Add(modelitems);
            }
            OutputPorts[0].Data = objects;
        }
示例#28
0
        public TaskItemButton(ProgramWindow programWindow)
        {
            InitializeComponent();
            try
            {
                WindowIcon = new ImageBrush(programWindow.Icon.ToBitmap().ToBitmapSource());
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
            WindowTitle = programWindow.Name;
            Tag         = programWindow;
            var doesThisWindowExist = new Timer
            {
                Interval = 100
            };
            var thisModule = (SuperbarModule)MainTools.GetFixedModule("Test Module");

            doesThisWindowExist.Elapsed += delegate
            {
                Dispatcher.Invoke(new Action(() =>
                {
                    {
                        if (!IsWindow(programWindow.Hwnd))
                        {
                            foreach (TaskbarGroupStackPanel t in thisModule.Taskbars[0].Taskband.Children)
                            {
                                foreach (var p in t.ProgramWindowsList)
                                {
                                    if (p.Hwnd == programWindow.Hwnd)
                                    {
                                        t.RemoveButtonByHwnd(programWindow.Hwnd);
                                    }
                                }
                            }
                        }
                    }
                }));
            };
        }
示例#29
0
        /// <summary>
        /// Save object Document to object Path
        /// </summary>
        /// <param name="document"></param>
        /// <param name="path"></param>
        /// <returns></returns>
        private object SaveAsNWF(object document, object path)
        {
            var output = new object();

            output = null;
            if (document != null && path != null && document.GetType() == typeof(Document))
            {
                if (MainTools.IsList(path))
                {
                    foreach (var item in (System.Collections.IEnumerable)path)
                    {
                        var      filepath = item.ToString();
                        Document doc      = document as Document;
                        try
                        {
                            doc.SaveFile(item.ToString());
                            output = document;
                        }
                        catch (Exception exc)
                        {
                        }
                    }
                }
                else
                {
                    var      filepath = path.ToString();
                    Document doc      = document as Document;

                    try
                    {
                        doc.SaveFile(path.ToString());
                        output = document;
                    }
                    catch (Exception exc)
                    {
                    }
                }
            }
            return(output);
        }
示例#30
0
        private List<object> RefreshClashes(object input)
        {
            //Get clashes from document
            Document doc = Autodesk.Navisworks.Api.Application.ActiveDocument;
            var testData = doc.GetClash().TestsData;
            var output = new List<object>();
            if (input != null)
            {


                if (MainTools.IsList(input))
                {


                    foreach (var item in (System.Collections.IEnumerable)input)
                    {

                        var ClashTest = doc.ResolveReference(item as SavedItemReference) as ClashTest;
                        var clash = doc.Clash as DocumentClash;
                        testData.TestsRunTest(ClashTest);
                        wait(1);
                        output.Add(item);
                    }

                }

                if (input.GetType() == typeof(SavedItemReference))
                {

                    var ClashTest = doc.ResolveReference(input as SavedItemReference) as ClashTest;
                    testData.TestsRunTest(ClashTest);
                    output.Add(input);
                }

            }



            return output;
        }