Revitが持っている長さの単位はミリではなくフィートです。
なのでRevitAPIで長さのパラメータを扱うとき、ミリとフィートの換算がいちいち必要になります。
具体的には以下の作業です。
- Revitからミリでデータを書き出すときは304.8を掛ける
- Revitにミリのデータを読み込むときは304.8で割る
ひえ~っ!めっちゃめんどくせーっ。。
と思っていたら、単位を変換してくれるUnitUtilsとかいうクラスがありました。
ここでは、フィートとミリの単位変換のサンプルソースコードを紹介します。
スポンサーリンク
UnitUtilsクラスについて
単位をあれこれするときに有効なクラスです。
メンバーは静的メソッドしか持っていません。
ほんと、単位あれこれのためだけのクラスって感じですね。
UnitUtilsを使った単位変換
Microsoftのサンプルに摂氏と華氏を変換するものがあったので、おんなじように作ってみました。
サンプルコード
SharpDevelopで「UnitConverter.cs」というクラスを追加してコーディングしました。
*クラスの追加方法は下記の記事にまとめています。

【RevitAPI】SharpDevelopでアイテム作成こちらの記事は引っ越しました。
https://revitapiyasan.com/sharpdevelop-ad...
以下、作成したソースコードを載せておきます。
using以降
using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using System.Linq;
namespace TestMacro
{
/// <summary>
/// Description of UnitConverter.
/// </summary>
public class UnitConverter
{
public static double FeetToMilli(double feet)
{
double milli = UnitUtils.Convert(feet, DisplayUnitType.DUT_DECIMAL_FEET, DisplayUnitType.DUT_MILLIMETERS);
return milli;
}
public static double MilliToFeet(double milli)
{
double feet = UnitUtils.Convert(milli, DisplayUnitType.DUT_MILLIMETERS, DisplayUnitType.DUT_DECIMAL_FEET);
return feet;
}
}
}
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using System.Linq;
namespace TestMacro
{
/// <summary>
/// Description of UnitConverter.
/// </summary>
public class UnitConverter
{
public static double FeetToMilli(double feet)
{
double milli = UnitUtils.Convert(feet, DisplayUnitType.DUT_DECIMAL_FEET, DisplayUnitType.DUT_MILLIMETERS);
return milli;
}
public static double MilliToFeet(double milli)
{
double feet = UnitUtils.Convert(milli, DisplayUnitType.DUT_MILLIMETERS, DisplayUnitType.DUT_DECIMAL_FEET);
return feet;
}
}
}
解説
フィートからミリへの変換、ミリからフィートへの変換の静的クラスを作成しました。
それぞれのクラスでConvertメソッドを使っています。
【Convertメソッド】
Convert(変換する数値, 変換前の単位, 変換後の単位)
変換前の単位と変換後の単位はDisplayUnitTypeの列挙型で指定します。
【DisplayUnitType】
- フィートはDisplayUnitType.DUT_DECIMAL_FEET
- ミリはDisplayUnitType.DUT_MILLIMETERS
という列挙子を指定します。
UnitUtilsまとめ
以上、UnitUtilsを使った単位変換クラスの紹介でした。
一度作ってしまえば、使いまわせるので便利っす!
C#初心者の僕が独学でお世話になった本
プログラミング初心者の僕がコーディング学習でお世話になった本
スポンサーリンク