Пример #1
0
 private void dataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
 {
     if (e.ColumnIndex == 2)
     {
         // show UI
         Autodesk.Revit.DB.ForgeTypeId specTypeId = (Autodesk.Revit.DB.ForgeTypeId) this.dataGridView["UnitType", e.RowIndex].Value;
         using (FormatForm displayForm = new FormatForm(specTypeId, m_units.GetFormatOptions(specTypeId)))
         {
             DialogResult result;
             while (DialogResult.Cancel != (result = displayForm.ShowDialog()))
             {
                 if (DialogResult.OK == result)
                 {
                     try
                     {
                         this.m_units.SetFormatOptions((Autodesk.Revit.DB.ForgeTypeId) this.dataGridView["UnitType", e.RowIndex].Value, displayForm.FormatOptions);
                         this.dataGridView["FormatOptions", e.RowIndex].Value =
                             Autodesk.Revit.DB.UnitFormatUtils.Format(m_units, (Autodesk.Revit.DB.ForgeTypeId) this.dataGridView["UnitType", e.RowIndex].Value, 1234.56789, false);
                         break;
                     }
                     catch (System.Exception ex)
                     {
                         TaskDialog.Show(ex.GetType().ToString(), "Set FormatOptions error : \n" + ex.Message, TaskDialogCommonButtons.Ok);
                     }
                 }
             }
         }
     }
 }
Пример #2
0
        internal static double GetRevitUnitScale()
        {
            // Default units is assumed to be meters unless
            double scale = 1.0;

            // Check the assemblies for the RevitAPI library
            Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
            if (assemblies.Any(x => x.FullName.Contains("RevitServices")))
            {
                // Get the RevitAPI assembly
                foreach (Assembly assembly in assemblies)
                {
                    if (assembly.GetName().Name == "RevitServices")
                    {
                        Autodesk.Revit.DB.Document        doc   = RevitServices.Persistence.DocumentManager.Instance.CurrentDBDocument;
                        Autodesk.Revit.DB.Units           units = doc.GetUnits();
                        Autodesk.Revit.DB.FormatOptions   fo    = units.GetFormatOptions(Autodesk.Revit.DB.UnitType.UT_Length);
                        Autodesk.Revit.DB.DisplayUnitType dut   = fo.DisplayUnits;
                        switch (dut)
                        {
                        case Autodesk.Revit.DB.DisplayUnitType.DUT_CENTIMETERS:
                            scale = 100;
                            break;

                        case Autodesk.Revit.DB.DisplayUnitType.DUT_DECIMAL_FEET:
                            scale = 3.28084;
                            break;

                        case Autodesk.Revit.DB.DisplayUnitType.DUT_DECIMAL_INCHES:
                            scale = 39.3701;
                            break;

                        case Autodesk.Revit.DB.DisplayUnitType.DUT_DECIMETERS:
                            scale = 10;
                            break;

                        case Autodesk.Revit.DB.DisplayUnitType.DUT_FEET_FRACTIONAL_INCHES:
                            scale = 3.28084;
                            break;

                        case Autodesk.Revit.DB.DisplayUnitType.DUT_FRACTIONAL_INCHES:
                            scale = 39.3701;
                            break;

                        case Autodesk.Revit.DB.DisplayUnitType.DUT_MILLIMETERS:
                            scale = 1000;
                            break;

                        case Autodesk.Revit.DB.DisplayUnitType.DUT_METERS:
                            scale = 1.0;
                            break;

                        case Autodesk.Revit.DB.DisplayUnitType.DUT_METERS_CENTIMETERS:
                            scale = 1.0;
                            break;

                        default:
                            scale = 1.0;
                            break;
                        }
                    }
                }
            }
            else
            {
                scale = 3.14;
            }

            return(scale);
        }