Message 1 of 6
CorrectionFactor.Temperature fails when project does not use °F
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
When the document does not use °F for HVAC Temperature, the property Autodesk.Revit.DB.Electrical.CorrectionFactor.Temperature throws the following exeption.
Autodesk.Revit.Exceptions.InvalidOperationException
HResult=0x80131500
Message=Can't find temperature unit 'F'.
Source=RevitAPI
StackTrace:
at Autodesk.Revit.DB.Electrical.CorrectionFactor.get_Temperature()
at Namespace.MyClass..ctor(CorrectionFactor correctionFactor, ...) in C:\Folders\MyClass.cs:line {number}
The exception has a FunctionId property with the following values.
FunctionId {Autodesk.Revit.Exceptions.FunctionId} Autodesk.Revit.Exceptions.FunctionId
File "d:\\ship\\2019_px64\\source\\api\\revitapi\\objects\\mep\\APIWireType.cpp" string
Function "Autodesk::Revit::DB::Electrical::CorrectionFactor::Temperature::get" string
Line 965 int
When HVAC Temperature is configured to display multiple decimal places, it throws this exception:
System.FormatException
HResult=0x80131537
Message=Input string was not in a correct format.
Source=mscorlib
StackTrace:
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt64(String value, NumberStyles options, NumberFormatInfo numfmt)
at Autodesk.Revit.DB.Electrical.CorrectionFactor.get_Temperature()
at Namespace.MyClass..ctor(CorrectionFactor correctionFactor, ...) in C:\Folders\MyClass.cs:line {number}
This exception was originally thrown at this call stack:
System.Number.StringToNumber(string, System.Globalization.NumberStyles, ref System.Number.NumberBuffer, System.Globalization.NumberFormatInfo, bool)
System.Number.ParseInt64(string, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo)
Autodesk.Revit.DB.Electrical.CorrectionFactor.Temperature.get()
Namespace.MyClass..ctor(CorrectionFactor correctionFactor, ...) in C:\Folders\MyClass.cs:line {number}
Here's a potential minimum reproducible case, assuming that there's a property/field Document of type Autodesk.Revit.DB.Document (so perhaps in a macro).
long temperature = Document.Settings.ElectricalSetting.WireMaterialTypes
.Cast<WireMaterialType>()
.First()
.TemperatureRatings
.Cast<TemperatureRatingType>()
.First()
.CorrectionFactors
.Cast<CorrectionFactor>()
.First()
.Temperature;