示例#1
0
        private static List <NestedInstanceDefinitionModel> CreateNested(InstanceDefinitionModel root)
        {
            var models     = new List <NestedInstanceDefinitionModel>();
            var access     = new InstanceTableDataAccess();
            var definition = access.GetDefinition(root.Id);

            int i = 0;

            foreach (var part in definition.GetPartInstances())
            {
                // create model for current part
                var partModel = InstanceDefinitionModelFactory.Create(part.InstanceDefinition);

                // test if not an assembly
                if (!partModel.IsAssembly)
                {
                    models.Add(NestedInstanceDefinitionModelFactory.Create(partModel, root, root, i));
                }

                // if it is an assembly we have to go deeper
                models.AddRange(
                    CreateNested(partModel));

                i += 1;
            }

            return(models);
        }
示例#2
0
        public static InstanceTreeModel Create()
        {
            // Get active doc
            var doc = RhinoDoc.ActiveDoc;

            // get instance table
            var table = doc.InstanceDefinitions;

            // create empty list to store nested definitions
            var definitions = new List <NestedInstanceDefinitionModel>();

            // iterate over table, ignoring deleted definitions
            foreach (var item in table.GetList(true))
            {
                // create InstanceDefinitionModel
                var definition = InstanceDefinitionModelFactory.Create(item);

                // if the model is not an assembly, it has no children
                if (!definition.IsAssembly)
                {
                    var nestedModel = NestedInstanceDefinitionModelFactory.Create(definition);
                    definitions.Add(nestedModel);
                    continue;
                }

                // traverse children
                definitions.AddRange(CreateNested(definition));
            }

            return(new InstanceTreeModel
            {
                Instances = definitions.ToArray()
            });
        }