Beispiel #1
0
        //Revit에서 추출가능한 정보를 Parameter 내부에 저장하도록 구현.
        public Result Create(ExternalCommandData commandData, ref string message, DataCtrl.DataCtrlInterface dataCtrl)
        {
            PCFData.Application = commandData.Application;
            PCFData.Document    = PCFData.Application.ActiveUIDocument.Document;

            //PCF를 작성하기 위해 필요한 element를 찾아 낸다.
            FilteredElementCollector collector = PCFData.CollectPipeElements(PCFData.Document);

            try
            {
                //Revit에 있는 정보를 활용하여, PCF에 쓰일 Component 정보를 수집한다.
                foreach (Autodesk.Revit.DB.Element element in collector)
                {
                    //Host 역할을 하는 FamilyInstance
                    if (element is Autodesk.Revit.DB.Plumbing.Pipe || (element is FamilyInstance && (element as FamilyInstance).SuperComponent == null))
                    {
                        this.CreateComponents(element);
                    }
                }

                //Excel에 있는 Material 정보를 수집하여 저장한다.
                this.Materials = dataCtrl.GetMaterials();
            }
            catch (Autodesk.Revit.Exceptions.OperationCanceledException)
            {
                return(Result.Cancelled);
            }
            catch (Exception ex)
            {
                message = ex.Message;
                return(Result.Failed);
            }

            return(Result.Succeeded);
        }
Beispiel #2
0
 //(중) Excel File 선택만 아니라, Export PCF 버튼을 비활성화에서 활성화로 바꾸는 것이 좋은 UX!
 private void SelectExcelFile_Click(object sender, EventArgs e)
 {
     if (openExcelDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
     {
         try
         {
             this.ExcelName.Text = Properties.Settings.Default.ExcelPath = openExcelDialog.FileName;
             this.DataCtrl       = new DataCtrl.ExcelCtrl(this.Revit, openExcelDialog.FileName);
         }
         catch (Exception ex)
         {
             MessageBox.Show("Fail: to read Excel file. \n" + ex.Message);
         }
     }
 }
Beispiel #3
0
        public AppUI(ExternalCommandData revit, ref string message)
        {
            InitializeComponent();
            this.Revit     = revit;
            this.Message   = message;
            this.Paramters = new PCFData();
            this.Writer    = new PCFWriter();

            //Excel 파일만 열 수 있도록 한정
            this.openExcelDialog.Filter = "Excel files (*.xlsx)|*.xlsx";

            if (!string.IsNullOrEmpty(Properties.Settings.Default.ExcelPath))
            {
                this.ExcelName.Text = Properties.Settings.Default.ExcelPath;
                this.DataCtrl       = new DataCtrl.ExcelCtrl(Revit, Properties.Settings.Default.ExcelPath);
            }
        }