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

            var categories = Enum.GetNames(typeof(BuiltInCategory));
            var viewmodel  = new AutoJoinDialogViewModel(categories.OrderBy(s => s).ToArray());
            var window     = new AutoJoinDialog(viewmodel);

            window.ShowDialog();

            if (window.DialogResult == true)
            {
                MessageBox.Show("Hello work Quyet");
            }



            return(Result.Succeeded);
        }
Esempio n. 2
0
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            var uidoc = commandData.Application.ActiveUIDocument;
            var doc   = uidoc.Document;

            var categories = Enum.GetNames(typeof(BuiltInCategory));
            var viewmodel  = new AutoJoinDialogViewModel(categories.OrderBy(s => s).ToArray());
            var window     = new AutoJoinDialog(viewmodel);

            window.ShowDialog();

            if (window.DialogResult == true)
            {
                Enum.TryParse(viewmodel.Category1, out BuiltInCategory category1);
                Enum.TryParse(viewmodel.Category2, out BuiltInCategory category2);

                var eles = new FilteredElementCollector(doc).OfCategory(category1)
                           .WhereElementIsNotElementType()
                           .ToElements();

                using (var tran = new Transaction(doc, "Join Floor and Column"))
                {
                    tran.Start();
                    foreach (var ele in eles)
                    {
                        var boundingBox = ele.get_BoundingBox(null);
                        var outline     = new Outline(boundingBox.Min, boundingBox.Max);
                        var filter      = new BoundingBoxIntersectsFilter(outline);

                        var collectors = new FilteredElementCollector(doc).OfCategory(category2)
                                         .WhereElementIsNotElementType()
                                         .WherePasses(filter)
                                         .ToElements();

                        foreach (var item in collectors)
                        {
                            //Options options = new Options();
                            //options.ComputeReferences = true;
                            //options.DetailLevel = ViewDetailLevel.Fine;
                            //GeometryElement geoElement = item.get_Geometry(options);

                            bool joined = JoinGeometryUtils.AreElementsJoined(doc, ele, item);
                            if (joined == true)
                            {
                                JoinGeometryUtils.UnjoinGeometry(doc, ele, item);
                                JoinGeometryUtils.JoinGeometry(doc, ele, item);
                            }
                            else
                            {
                                JoinGeometryUtils.JoinGeometry(doc, ele, item);
                            }
                            //JoinGeometryUtils.SwitchJoinOrder(doc, ele, item);
                        }
                    }
                    tran.Commit();
                }
            }


            return(Result.Succeeded);
        }
Esempio n. 3
0
 public AutoJoinDialog(AutoJoinDialogViewModel vm)
 {
     InitializeComponent();
     DataContext = vm;
 }