<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Convert ParameterType.FixtureUnit to ForgeTypeId in Revit API Forum</title>
    <link>https://forums.autodesk.com/t5/revit-api-forum/convert-parametertype-fixtureunit-to-forgetypeid/m-p/10268587#M26317</link>
    <description>&lt;P&gt;I found the second resource while trying to find out how to handle ParameterType.Text in Revit 2022. The first link I somehow overlooked. It does contain a lot of useful information that will likely come in handy in the future to correctly implement the new ForgeTypeId everywhere.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am working on this wrapper class that hopefully will be able to handle the ParameterType changes in a transparent manner so that I do not have to put #if statements all throughout the code, but instead move everything regarding the parameter type to this class.&lt;/P&gt;&lt;PRE&gt;	&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;class&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;ParType&lt;/SPAN&gt;
	{
&lt;SPAN&gt;#if&lt;/SPAN&gt;&amp;nbsp;R2022
			&lt;SPAN&gt;private&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;readonly&lt;/SPAN&gt;&amp;nbsp;ForgeTypeId&amp;nbsp;_ftype;
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;bool&lt;/SPAN&gt;&amp;nbsp;IsValid
			{
				&lt;SPAN&gt;get&lt;/SPAN&gt;
				{
					&lt;SPAN&gt;if&lt;/SPAN&gt;&amp;nbsp;(&lt;SPAN&gt;null&lt;/SPAN&gt;&amp;nbsp;==&amp;nbsp;_ftype)&amp;nbsp;&lt;SPAN&gt;return&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;false&lt;/SPAN&gt;;
					&lt;SPAN&gt;if&lt;/SPAN&gt;&amp;nbsp;(SpecTypeId.String.Text&amp;nbsp;==&amp;nbsp;_ftype)&amp;nbsp;&lt;SPAN&gt;return&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;true&lt;/SPAN&gt;;
 
					PropertyInfo[]&amp;nbsp;props&amp;nbsp;=&amp;nbsp;&lt;SPAN&gt;typeof&lt;/SPAN&gt;(SpecTypeId).GetProperties();
					&lt;SPAN&gt;foreach&lt;/SPAN&gt;&amp;nbsp;(PropertyInfo&amp;nbsp;pi&amp;nbsp;&lt;SPAN&gt;in&lt;/SPAN&gt;&amp;nbsp;props)
					{
						&lt;SPAN&gt;if&lt;/SPAN&gt;&amp;nbsp;(!(pi.GetValue(&lt;SPAN&gt;null&lt;/SPAN&gt;)&amp;nbsp;&lt;SPAN&gt;is&lt;/SPAN&gt;&amp;nbsp;ForgeTypeId&amp;nbsp;val))&amp;nbsp;&lt;SPAN&gt;continue&lt;/SPAN&gt;;
 
						&lt;SPAN&gt;if&lt;/SPAN&gt;&amp;nbsp;(val.NameEquals(_ftype))&amp;nbsp;&lt;SPAN&gt;return&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;true&lt;/SPAN&gt;;
					}
 
					&lt;SPAN&gt;return&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;false&lt;/SPAN&gt;;
				}
			}
 
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;readonly&lt;/SPAN&gt;&amp;nbsp;ParType&amp;nbsp;Angle&amp;nbsp;=&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;ParType(SpecTypeId.Angle);
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;readonly&lt;/SPAN&gt;&amp;nbsp;ParType&amp;nbsp;Area&amp;nbsp;=&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;ParType(SpecTypeId.Area);
			&lt;SPAN&gt;//public&amp;nbsp;static&amp;nbsp;readonly&amp;nbsp;ParType&amp;nbsp;FixtureUnit&amp;nbsp;=&amp;nbsp;new&amp;nbsp;ParType(SpecTypeId.FixtureUnit);&lt;/SPAN&gt;
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;readonly&lt;/SPAN&gt;&amp;nbsp;ParType&amp;nbsp;Integer&amp;nbsp;=&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;ParType(SpecTypeId.Int.Integer);
			&lt;SPAN&gt;//public&amp;nbsp;static&amp;nbsp;readonly&amp;nbsp;ParType&amp;nbsp;Invalid&amp;nbsp;=&amp;nbsp;new&amp;nbsp;ParType(SpecTypeId.Invalid);&lt;/SPAN&gt;
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;readonly&lt;/SPAN&gt;&amp;nbsp;ParType&amp;nbsp;Length&amp;nbsp;=&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;ParType(SpecTypeId.Length);
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;readonly&lt;/SPAN&gt;&amp;nbsp;ParType&amp;nbsp;Number&amp;nbsp;=&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;ParType(SpecTypeId.Number);
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;readonly&lt;/SPAN&gt;&amp;nbsp;ParType&amp;nbsp;Text&amp;nbsp;=&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;ParType(SpecTypeId.String.Text);
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;readonly&lt;/SPAN&gt;&amp;nbsp;ParType&amp;nbsp;Volume&amp;nbsp;=&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;ParType(SpecTypeId.Volume);
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;readonly&lt;/SPAN&gt;&amp;nbsp;ParType&amp;nbsp;YesNo&amp;nbsp;=&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;ParType(SpecTypeId.Boolean.YesNo);
 
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;explicit&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;operator&lt;/SPAN&gt;&amp;nbsp;ForgeTypeId(ParType&amp;nbsp;pt)
			{
				&lt;SPAN&gt;return&lt;/SPAN&gt;&amp;nbsp;pt._ftype;
			}
 
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;ParType(ForgeTypeId&amp;nbsp;fti)
			{
				_ftype&amp;nbsp;=&amp;nbsp;fti;
			}
 
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;ParType(Definition&amp;nbsp;def)
			{
				&lt;SPAN&gt;if&lt;/SPAN&gt;&amp;nbsp;(&lt;SPAN&gt;null&lt;/SPAN&gt;&amp;nbsp;==&amp;nbsp;def)&amp;nbsp;&lt;SPAN&gt;return&lt;/SPAN&gt;;
 
				_ftype&amp;nbsp;=&amp;nbsp;def.GetDataType();
			}
&lt;SPAN&gt;#else&lt;/SPAN&gt;
&lt;/PRE&gt;&lt;P&gt;The part after the #else is the implementation using ParameterType for older versions of Revit.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The static values are the types that are explicitly tested in the legacy code. Thankfully I do not have to implement every possibly SpecTypeId (as that would rather defeat the point of having a wrapper and move to using ForgeTypeId).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I still need to add an IComparable&amp;lt;&amp;gt; and IEquatable&amp;lt;&amp;gt; implementation but those are trivial.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 26 Apr 2021 12:20:00 GMT</pubDate>
    <dc:creator>m.de.vriesTH5VM</dc:creator>
    <dc:date>2021-04-26T12:20:00Z</dc:date>
    <item>
      <title>Convert ParameterType.FixtureUnit to ForgeTypeId</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/convert-parametertype-fixtureunit-to-forgetypeid/m-p/10268488#M26315</link>
      <description>&lt;P&gt;I am trying to port some legacy code to Revit 2022 and I am running into the problem that there does not seem to be a convert some of the ParameterType enum values to a ForgeTypeId&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;FixtureUnit and Invalid (the result for ElementId parameters) are the most pressing ones.&lt;/P&gt;&lt;P&gt;There does not seem to be anything Fixture or Piping related in the SpecTypeId class that may apply. PipeDimension comes closest but is not, I think, the same? (plus, it also exists separately in the ParameterType enum which makes it unlikely that it got a double meaning in Revit 2022)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;According to the release documentation there should be a deprecated method in the Parameter class that can help porting ParameterType enum values to ForgeTypeId objects, but intellisense does not seem to be aware of the existence of such a method.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 26 Apr 2021 11:38:18 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/convert-parametertype-fixtureunit-to-forgetypeid/m-p/10268488#M26315</guid>
      <dc:creator>m.de.vriesTH5VM</dc:creator>
      <dc:date>2021-04-26T11:38:18Z</dc:date>
    </item>
    <item>
      <title>Convert ParameterType.FixtureUnit to ForgeTypeId</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/convert-parametertype-fixtureunit-to-forgetypeid/m-p/10268506#M26316</link>
      <description>&lt;P&gt;Quick first answer to point to existing additional resources:&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://thebuildingcoder.typepad.com/blog/2021/04/revit-2022-sdk-and-the-building-coder-samples.html#6" target="_blank"&gt;https://thebuildingcoder.typepad.com/blog/2021/04/revit-2022-sdk-and-the-building-coder-samples.html#6&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://forums.autodesk.com/t5/revit-api-forum/revit-2022-parametertype-text-to-forgetypeid/m-p/10247574" target="_blank"&gt;https://forums.autodesk.com/t5/revit-api-forum/revit-2022-parametertype-text-to-forgetypeid/m-p/10247574&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can take a look at those besides the API documentation that you already checked.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Meanwhile, I'll see whether I can dig up anything specific on fixtures...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 26 Apr 2021 11:47:19 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/convert-parametertype-fixtureunit-to-forgetypeid/m-p/10268506#M26316</guid>
      <dc:creator>jeremy_tammik</dc:creator>
      <dc:date>2021-04-26T11:47:19Z</dc:date>
    </item>
    <item>
      <title>Re: Convert ParameterType.FixtureUnit to ForgeTypeId</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/convert-parametertype-fixtureunit-to-forgetypeid/m-p/10268587#M26317</link>
      <description>&lt;P&gt;I found the second resource while trying to find out how to handle ParameterType.Text in Revit 2022. The first link I somehow overlooked. It does contain a lot of useful information that will likely come in handy in the future to correctly implement the new ForgeTypeId everywhere.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am working on this wrapper class that hopefully will be able to handle the ParameterType changes in a transparent manner so that I do not have to put #if statements all throughout the code, but instead move everything regarding the parameter type to this class.&lt;/P&gt;&lt;PRE&gt;	&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;class&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;ParType&lt;/SPAN&gt;
	{
&lt;SPAN&gt;#if&lt;/SPAN&gt;&amp;nbsp;R2022
			&lt;SPAN&gt;private&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;readonly&lt;/SPAN&gt;&amp;nbsp;ForgeTypeId&amp;nbsp;_ftype;
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;bool&lt;/SPAN&gt;&amp;nbsp;IsValid
			{
				&lt;SPAN&gt;get&lt;/SPAN&gt;
				{
					&lt;SPAN&gt;if&lt;/SPAN&gt;&amp;nbsp;(&lt;SPAN&gt;null&lt;/SPAN&gt;&amp;nbsp;==&amp;nbsp;_ftype)&amp;nbsp;&lt;SPAN&gt;return&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;false&lt;/SPAN&gt;;
					&lt;SPAN&gt;if&lt;/SPAN&gt;&amp;nbsp;(SpecTypeId.String.Text&amp;nbsp;==&amp;nbsp;_ftype)&amp;nbsp;&lt;SPAN&gt;return&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;true&lt;/SPAN&gt;;
 
					PropertyInfo[]&amp;nbsp;props&amp;nbsp;=&amp;nbsp;&lt;SPAN&gt;typeof&lt;/SPAN&gt;(SpecTypeId).GetProperties();
					&lt;SPAN&gt;foreach&lt;/SPAN&gt;&amp;nbsp;(PropertyInfo&amp;nbsp;pi&amp;nbsp;&lt;SPAN&gt;in&lt;/SPAN&gt;&amp;nbsp;props)
					{
						&lt;SPAN&gt;if&lt;/SPAN&gt;&amp;nbsp;(!(pi.GetValue(&lt;SPAN&gt;null&lt;/SPAN&gt;)&amp;nbsp;&lt;SPAN&gt;is&lt;/SPAN&gt;&amp;nbsp;ForgeTypeId&amp;nbsp;val))&amp;nbsp;&lt;SPAN&gt;continue&lt;/SPAN&gt;;
 
						&lt;SPAN&gt;if&lt;/SPAN&gt;&amp;nbsp;(val.NameEquals(_ftype))&amp;nbsp;&lt;SPAN&gt;return&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;true&lt;/SPAN&gt;;
					}
 
					&lt;SPAN&gt;return&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;false&lt;/SPAN&gt;;
				}
			}
 
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;readonly&lt;/SPAN&gt;&amp;nbsp;ParType&amp;nbsp;Angle&amp;nbsp;=&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;ParType(SpecTypeId.Angle);
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;readonly&lt;/SPAN&gt;&amp;nbsp;ParType&amp;nbsp;Area&amp;nbsp;=&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;ParType(SpecTypeId.Area);
			&lt;SPAN&gt;//public&amp;nbsp;static&amp;nbsp;readonly&amp;nbsp;ParType&amp;nbsp;FixtureUnit&amp;nbsp;=&amp;nbsp;new&amp;nbsp;ParType(SpecTypeId.FixtureUnit);&lt;/SPAN&gt;
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;readonly&lt;/SPAN&gt;&amp;nbsp;ParType&amp;nbsp;Integer&amp;nbsp;=&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;ParType(SpecTypeId.Int.Integer);
			&lt;SPAN&gt;//public&amp;nbsp;static&amp;nbsp;readonly&amp;nbsp;ParType&amp;nbsp;Invalid&amp;nbsp;=&amp;nbsp;new&amp;nbsp;ParType(SpecTypeId.Invalid);&lt;/SPAN&gt;
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;readonly&lt;/SPAN&gt;&amp;nbsp;ParType&amp;nbsp;Length&amp;nbsp;=&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;ParType(SpecTypeId.Length);
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;readonly&lt;/SPAN&gt;&amp;nbsp;ParType&amp;nbsp;Number&amp;nbsp;=&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;ParType(SpecTypeId.Number);
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;readonly&lt;/SPAN&gt;&amp;nbsp;ParType&amp;nbsp;Text&amp;nbsp;=&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;ParType(SpecTypeId.String.Text);
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;readonly&lt;/SPAN&gt;&amp;nbsp;ParType&amp;nbsp;Volume&amp;nbsp;=&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;ParType(SpecTypeId.Volume);
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;readonly&lt;/SPAN&gt;&amp;nbsp;ParType&amp;nbsp;YesNo&amp;nbsp;=&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;ParType(SpecTypeId.Boolean.YesNo);
 
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;explicit&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;operator&lt;/SPAN&gt;&amp;nbsp;ForgeTypeId(ParType&amp;nbsp;pt)
			{
				&lt;SPAN&gt;return&lt;/SPAN&gt;&amp;nbsp;pt._ftype;
			}
 
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;ParType(ForgeTypeId&amp;nbsp;fti)
			{
				_ftype&amp;nbsp;=&amp;nbsp;fti;
			}
 
			&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;ParType(Definition&amp;nbsp;def)
			{
				&lt;SPAN&gt;if&lt;/SPAN&gt;&amp;nbsp;(&lt;SPAN&gt;null&lt;/SPAN&gt;&amp;nbsp;==&amp;nbsp;def)&amp;nbsp;&lt;SPAN&gt;return&lt;/SPAN&gt;;
 
				_ftype&amp;nbsp;=&amp;nbsp;def.GetDataType();
			}
&lt;SPAN&gt;#else&lt;/SPAN&gt;
&lt;/PRE&gt;&lt;P&gt;The part after the #else is the implementation using ParameterType for older versions of Revit.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The static values are the types that are explicitly tested in the legacy code. Thankfully I do not have to implement every possibly SpecTypeId (as that would rather defeat the point of having a wrapper and move to using ForgeTypeId).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I still need to add an IComparable&amp;lt;&amp;gt; and IEquatable&amp;lt;&amp;gt; implementation but those are trivial.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 26 Apr 2021 12:20:00 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/convert-parametertype-fixtureunit-to-forgetypeid/m-p/10268587#M26317</guid>
      <dc:creator>m.de.vriesTH5VM</dc:creator>
      <dc:date>2021-04-26T12:20:00Z</dc:date>
    </item>
    <item>
      <title>Re: Convert ParameterType.FixtureUnit to ForgeTypeId</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/convert-parametertype-fixtureunit-to-forgetypeid/m-p/10269284#M26318</link>
      <description>&lt;P&gt;Good morning &lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/5479182"&gt;@m.de.vriesTH5VM&lt;/a&gt;,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;HR /&gt;According to the release documentation there should be a deprecated method in the Parameter class that can help porting ParameterType enum values to ForgeTypeId objects&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;These methods are &lt;STRONG&gt;SpecUtils.GetSpecTypeId(ParameterType)&lt;/STRONG&gt; and &lt;STRONG&gt;SpecUtils.GetParameterType(ForgeTypeId)&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;HR /&gt;FixtureUnit and Invalid (the result for ElementId parameters) are the most pressing ones.&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;In place of &lt;STRONG&gt;ParameterType.FixtureUnit&lt;/STRONG&gt; you can use &lt;STRONG&gt;SpecTypeId.Number&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ParameterType.Invalid&lt;/STRONG&gt; is equivalent to an empty, default-constructed &lt;STRONG&gt;ForgeTypeId&lt;/STRONG&gt;, i.e. &lt;STRONG&gt;new ForgeTypeId()&lt;/STRONG&gt;.&lt;/P&gt;</description>
      <pubDate>Mon, 26 Apr 2021 16:27:19 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/convert-parametertype-fixtureunit-to-forgetypeid/m-p/10269284#M26318</guid>
      <dc:creator>david_becroft</dc:creator>
      <dc:date>2021-04-26T16:27:19Z</dc:date>
    </item>
  </channel>
</rss>

