コード例 #1
0
        //指定字段视图首次复制为目标视图
        public void copyPlotToFieldView(Document doc, IList <string> selectedPlotView, ICollection <ElementId> PlotViewIds, string origin_str, string target_str, CMD.myDelegate _myDelegate, string str_view_content_para, string str_view_content)
        {
            using (Transaction copyViewPlot = new Transaction(doc, "copyPLOTto"))
            {
                copyViewPlot.Start("copyPLOTto");
                foreach (string selectedstr in selectedPlotView)
                {
                    foreach (ElementId sourceViewId in PlotViewIds)
                    {
                        Autodesk.Revit.DB.View sourceView = doc.GetElement(sourceViewId) as Autodesk.Revit.DB.View;
                        string vieName = sourceView.Name;
                        if (selectedstr == vieName)
                        {
                            Autodesk.Revit.DB.View destinationView = CreateDependentCopy(doc, sourceViewId); //复制PLOT视图为指定字段视图

                            destinationView.Name = vieName.Replace(origin_str, target_str);                  //设置目标视图变量//更改视图名字,更元素属性,不能使用中间过渡变量进行处理
                            destinationView.LookupParameter(str_view_content_para).Set(str_view_content);;   //设置目标视图变量//更改共享参数
                            ICollection <ElementId> selectedEleIds = _myDelegate(doc, sourceViewId);         //设置目标函数变量//获取需要从PLOT视图复制的2D图元
                            if (selectedEleIds != null && selectedEleIds.Count() != 0)
                            {
                                ElementTransformUtils.CopyElements(sourceView, selectedEleIds, destinationView, null, null);//复制图元
                            }
                        }
                    }
                }
                copyViewPlot.Commit();
            }
            showSuccess(target_str);
        }
コード例 #2
0
        //指定字段视图更新二维图元函数-updateFieldView
        public void upadteFieldView(Document doc, IList <string> selectedFieldView, ICollection <ElementId> FieldViewId, ICollection <ElementId> PlotViewIds, string origin_str, string target_str, CMD.myDelegate _myDelegate)
        {
            ICollection <ElementId> selectedfieldViewIds = selNameToEleIds(doc, selectedFieldView, FieldViewId);//将选择目标字段视图转化为元素id

            using (Transaction UpdateEles = new Transaction(doc, "UpdateEles"))
            {
                UpdateEles.Start("UpdateEles");
                foreach (ElementId eId in selectedfieldViewIds)//遍历每一个选择的INTF视图
                {
                    Autodesk.Revit.DB.View destinationView = doc.GetElement(eId) as Autodesk.Revit.DB.View;
                    string destinationViewName             = destinationView.Name.Replace(target_str, origin_str);//设置目标视图变量//
                    foreach (ElementId sourceViewId in PlotViewIds)
                    {
                        string sourceName = doc.GetElement(sourceViewId).Name;
                        if (destinationViewName == sourceName)
                        {
                            ICollection <ElementId> all2DEleIds = getAllCopyEleIds(doc, eId);//删除INTF视图的二维图元
                            doc.Delete(all2DEleIds);
                            Autodesk.Revit.DB.View  sourceView     = doc.GetElement(sourceViewId) as Autodesk.Revit.DB.View;
                            ICollection <ElementId> selectedEleIds = _myDelegate(doc, sourceViewId);//设置目标函数变量//获取需要从PLOT视图复制的2D图元
                            if (selectedEleIds != null && selectedEleIds.Count() != 0)
                            {
                                ElementTransformUtils.CopyElements(sourceView, selectedEleIds, destinationView, null, null);//复制图元
                            }
                        }
                    }
                }
                UpdateEles.Commit();
            }
            showSuccess(target_str);
        }
コード例 #3
0
        //以下为各种method---------------------------------分割线---------------------------------

        //外部事件方法建立
        //更新视图的二维图元
        public void upadteFieldView_exter(Document doc, ICollection <ElementId> fieldViewIds, ICollection <ElementId> PlotViewIds, string origin_str, string target_str, CMD.myDelegate _myDelegate)
        {
            upadteFieldView(doc, CMD.selectedViewNames, fieldViewIds, PlotViewIds, origin_str, target_str, _myDelegate);//更新视图函数---借助委托,将函数以参数的形式传递到函数中

            showSuccess(target_str);
        }