Esempio n. 1
0
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            Application app   = commandData.Application.Application;
            Document    doc   = commandData.Application.ActiveUIDocument.Document;
            UIDocument  uidoc = commandData.Application.ActiveUIDocument;

            NumberingSchema schema     = NumberingSchema.GetNumberingSchema(doc, NumberingSchemaTypes.StructuralNumberingSchemas.Rebar);
            IList <string>  partitions = schema.GetNumberingSequences();

            if (!partitions.Any())
            {
                message = "No partitions in the document";
                return(Result.Failed);
            }

            WindowSelectPartition dialog = new WindowSelectPartition(partitions);

            dialog.ShowDialog();
            if (dialog.DialogResult.HasValue && dialog.DialogResult.Value)
            {
                string selectedPartition = dialog.comboPartition.SelectedValue.ToString();
            }
            else
            {
                return(Result.Cancelled);
            }

            //TODO: Renumber

            return(Result.Succeeded);
        }
Esempio n. 2
0
        public static string[] GetRebarNumbers(Document doc, string partition)
        {
            NumberingSchema      schema = NumberingSchema.GetNumberingSchema(doc, NumberingSchemaTypes.StructuralNumberingSchemas.Rebar);
            IList <IntegerRange> ranges = schema.GetNumbers(partition);
            List <int[]>         list   = new List <int[]>();

            foreach (var range in ranges)
            {
                list.Add(Enumerable.Range(range.Low, range.High - range.Low + 1).ToArray());
            }
            int[] numbers = list.SelectMany(i => i).ToArray();
            return(numbers.Select(i => i.ToString()).ToArray());
        }
Esempio n. 3
0
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            Application app   = commandData.Application.Application;
            Document    doc   = commandData.Application.ActiveUIDocument.Document;
            UIDocument  uidoc = commandData.Application.ActiveUIDocument;

            NumberingSchema schema     = NumberingSchema.GetNumberingSchema(doc, NumberingSchemaTypes.StructuralNumberingSchemas.Rebar);
            var             partitions = schema.GetNumberingSequences();

            if (!partitions.Any())
            {
                TaskDialog.Show("Warning", "No partitions in the document");
                return(Result.Cancelled);
            }
            Dictionary <string, string[]> rebarNumbers = new Dictionary <string, string[]>();

            foreach (string p in partitions)
            {
                rebarNumbers[p] = GetRebarNumbers(doc, p);
            }
            string[] sortedPartitions = partitions.OrderBy(q => q).ToArray();
            using (FormRenumber form1 = new FormRenumber(doc, sortedPartitions, rebarNumbers))
            {
                form1.ShowDialog();
                if (form1.DialogResult == System.Windows.Forms.DialogResult.Cancel)
                {
                    return(Result.Cancelled);
                }

                else
                {
                    string      partition  = form1.partition;
                    int         fromNumber = form1.fromNumber;
                    int         toNumber   = form1.toNumber;
                    Transaction t          = new Transaction(doc, "Change rebar number");
                    t.Start();
                    IList <ElementId> ids = schema.ChangeNumber(partition, fromNumber, toNumber);
                    t.Commit();
                    //TaskDialog.Show("Changed numbers on rebars with id",string.Join(", ",ids.Select(i=>i.ToString())));
                    uidoc.Selection.SetElementIds(ids);
                }
            }
            return(Result.Succeeded);
        }