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(); }
/// <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(); }
private void InternalSetUnits(Autodesk.Revit.DB.Units units) { InternalUnits = units; }
public Units(Autodesk.Revit.DB.Units units) { InitUnits(units); }
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); }