Example #1
0
        private void InitUnits(Autodesk.Revit.DB.UnitSystem unitSystem)
        {
            var doc = DocumentManager.Instance.CurrentDBDocument;

            TransactionManager.Instance.EnsureInTransaction(doc);
            var w = new Autodesk.Revit.DB.Units(unitSystem);

            InternalSetUnits(w);
            TransactionManager.Instance.TransactionTaskDone();
        }
Example #2
0
 /// <summary>
 /// Initialize GUI with ProjectUnitData
 /// </summary>
 /// <param name="units">units in current document</param>
 public UnitsForm(Autodesk.Revit.DB.Units units)
 {
     InitializeComponent();
     m_units = units;
 }
        /// <summary>
        /// Creates the connection with the running session of Civil 3D.
        /// </summary>
        public CivilApplication()
        {
            Utils.InitializeLog();

            Utils.Log(string.Format("CivilApplication.CivilApplication started...", ""));

            this.mApp = this.GetApplication();

            IList <CivilDocument> documents = new List <CivilDocument>();

            foreach (var doc in this.mApp.Documents)
            {
                documents.Add(new CivilDocument(doc as AeccRoadwayDocument));
            }

            this.Documents      = documents;
            this.ActiveDocument = mApp.ActiveDocument;

            var revitDoc = RevitServices.Persistence.DocumentManager.Instance.CurrentDBDocument;

            RevitServices.Transactions.TransactionManager.Instance.EnsureInTransaction(revitDoc);

            Autodesk.Revit.DB.Units units = new Autodesk.Revit.DB.Units(Autodesk.Revit.DB.UnitSystem.Metric);

            var du = this.Documents.First()._document.Settings.DrawingSettings.UnitZoneSettings.DrawingUnits;

            Utils.Log(string.Format("CivilApplication.Units started...", ""));

            // 1.1.0 Change Revit Document untis to match the Civil 3D Units
            if (du == Autodesk.AECC.Interop.Land.AeccDrawingUnitType.aeccDrawingUnitMeters)
            {
                units.SetFormatOptions(Autodesk.Revit.DB.UnitType.UT_Length, new Autodesk.Revit.DB.FormatOptions(Autodesk.Revit.DB.DisplayUnitType.DUT_METERS));
            }
            else if (du == Autodesk.AECC.Interop.Land.AeccDrawingUnitType.aeccDrawingUnitDecimeters)
            {
                units.SetFormatOptions(Autodesk.Revit.DB.UnitType.UT_Length, new Autodesk.Revit.DB.FormatOptions(Autodesk.Revit.DB.DisplayUnitType.DUT_DECIMETERS));
            }
            else if (du == Autodesk.AECC.Interop.Land.AeccDrawingUnitType.aeccDrawingUnitCentimeters)
            {
                units.SetFormatOptions(Autodesk.Revit.DB.UnitType.UT_Length, new Autodesk.Revit.DB.FormatOptions(Autodesk.Revit.DB.DisplayUnitType.DUT_CENTIMETERS));
            }
            else if (du == Autodesk.AECC.Interop.Land.AeccDrawingUnitType.aeccDrawingUnitMillimeters)
            {
                units.SetFormatOptions(Autodesk.Revit.DB.UnitType.UT_Length, new Autodesk.Revit.DB.FormatOptions(Autodesk.Revit.DB.DisplayUnitType.DUT_MILLIMETERS));
            }
            else if (du == Autodesk.AECC.Interop.Land.AeccDrawingUnitType.aeccDrawingUnitFeet)
            {
                units.SetFormatOptions(Autodesk.Revit.DB.UnitType.UT_Length, new Autodesk.Revit.DB.FormatOptions(Autodesk.Revit.DB.DisplayUnitType.DUT_DECIMAL_FEET));
            }
            else if (du == Autodesk.AECC.Interop.Land.AeccDrawingUnitType.aeccDrawingUnitInches)
            {
                units.SetFormatOptions(Autodesk.Revit.DB.UnitType.UT_Length, new Autodesk.Revit.DB.FormatOptions(Autodesk.Revit.DB.DisplayUnitType.DUT_DECIMAL_INCHES));
            }
            else
            {
                throw new Exception("UNITS ERROR\nThe Civil 3D units of the Active Document are not supported in Revit.\nChange the Civil 3D Units to continue");
            }

            revitDoc.SetUnits(units);

            RevitServices.Transactions.TransactionManager.Instance.TransactionTaskDone();

            Utils.Log(string.Format("CivilApplication.Units completed.", ""));

            SessionVariables.LandXMLPath            = System.IO.Path.GetTempPath();
            SessionVariables.IsLandXMLExported      = false;
            SessionVariables.CivilApplication       = this;
            SessionVariables.ParametersCreated      = false;
            SessionVariables.DocumentTotalTransform = null;
            RevitUtils.DocumentTotalTransform();
        }
Example #4
0
 private void InternalSetUnits(Autodesk.Revit.DB.Units units)
 {
     InternalUnits = units;
 }
Example #5
0
 public Units(Autodesk.Revit.DB.Units units)
 {
     InitUnits(units);
 }
Example #6
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);
        }