Revit API创建标高,单位转换
生活随笔
收集整理的這篇文章主要介紹了
Revit API创建标高,单位转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一業內朋友讓我寫個快速創建標高的插件。
//創建標高
[TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]
public?class?cmdDrawLevel?:?IExternalCommand
{
????public?Result?Execute(ExternalCommandData?commandData,?ref?string?messages,?ElementSet?elements)
????{
????????UIApplication?app?=?commandData.Application;
????????Document?doc?=?app.ActiveUIDocument.Document;
????????Selection?sel?=?app.ActiveUIDocument.Selection;
????????try
????????{
????????????Transaction?ts?=?new?Transaction(doc,?"revit");
????????????ts.Start();
????????????//起始,間距,數量,前綴
????????????double?dStart?=?RevitTools.Unit.CovertToAPI(double.Parse(XmlTools.levelStart),?DisplayUnitType.DUT_METERS);
????????????double?dDis?=?RevitTools.Unit.CovertToAPI(double.Parse(XmlTools.levelDis),?DisplayUnitType.DUT_METERS);
????????????int?iNum?=?int.Parse(XmlTools.levelNum);
????????????//創建起始標高
????????????Level?levelStart?=?doc.Create.NewLevel(dStart);
????????????levelStart.Name?=?XmlTools.levelPre?+?1;
????????????//
????????????for?(int?i?=?1;?i?<=?iNum;?i++)
????????????{
????????????????Level?level?=?doc.Create.NewLevel(dStart?+?i?*?dDis);
????????????????level.Name?=?XmlTools.levelPre?+?(i?+?1);
????????????}
????????????ts.Commit();
????????}
????????catch?(Exception?ex)
????????{
????????????TaskDialog.Show("error",?"請檢查是否命名重復。");
????????}
????????return?Result.Succeeded;
????}
}using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
namespace?RevitCodes
{
????class?XmlTools
????{
????????public?static?string?levelStart?=?"4";
????????public?static?string?levelDis?=?"4";
????????public?static?string?levelNum?=?"10";
????????public?static?string?levelPre?=?"F";
????}
}//
//?(C)?Copyright?2003-2010?by?Autodesk,?Inc.
//
//?Permission?to?use,?copy,?modify,?and?distribute?this?software?in
//?object?code?form?for?any?purpose?and?without?fee?is?hereby?granted,
//?provided?that?the?above?copyright?notice?appears?in?all?copies?and
//?that?both?that?copyright?notice?and?the?limited?warranty?and
//?restricted?rights?notice?below?appear?in?all?supporting
//?documentation.
//
//?AUTODESK?PROVIDES?THIS?PROGRAM?"AS?IS"?AND?WITH?ALL?FAULTS.
//?AUTODESK?SPECIFICALLY?DISCLAIMS?ANY?IMPLIED?WARRANTY?OF
//?MERCHANTABILITY?OR?FITNESS?FOR?A?PARTICULAR?USE.?AUTODESK,?INC.
//?DOES?NOT?WARRANT?THAT?THE?OPERATION?OF?THE?PROGRAM?WILL?BE
//?UNINTERRUPTED?OR?ERROR?FREE.
//
//?Use,?duplication,?or?disclosure?by?the?U.S.?Government?is?subject?to
//?restrictions?set?forth?in?FAR?52.227-19?(Commercial?Computer
//?Software?-?Restricted?Rights)?and?DFAR?252.227-7013(c)(1)(ii)
//?(Rights?in?Technical?Data?and?Computer?Software),?as?applicable.
//
using?System;
using?System.Collections.Generic;
using?System.Text;
using?Autodesk.Revit.DB;
using?System.Configuration;
using?System.Reflection;
namespace?RevitTools
{
????///?<summary>
????///?Provides?static?functions?to?convert?unit
????///?</summary>
????static?class?Unit
????{
????????#region?Methods
????????///?<summary>
????????///?Convert?the?value?get?from?RevitAPI?to?the?value?indicated?by?DisplayUnitType
????????///?</summary>
????????///?<param?name="to">DisplayUnitType?indicates?unit?of?target?value</param>
????????///?<param?name="value">value?get?from?RevitAPI</param>
????????///?<returns>Target?value</returns>
????????public?static?double?CovertFromAPI(DisplayUnitType?to,?double?value)
????????{
????????????return?value?*=?ImperialDutRatio(to);
????????}
????????///?<summary>
????????///?Convert?a?value?indicated?by?DisplayUnitType?to?the?value?used?by?RevitAPI
????????///?</summary>
????????///?<param?name="value">Value?to?be?converted</param>
????????///?<param?name="from">DisplayUnitType?indicates?the?unit?of?the?value?to?be?converted</param>
????????///?<returns>Target?value</returns>
????????public?static?double?CovertToAPI(double?value,?DisplayUnitType?from?)
????????{
????????????return?value?/=?ImperialDutRatio(from);
????????}
????????///?<summary>
????????///?Get?ratio?between?value?in?RevitAPI?and?value?to?display?indicated?by?DisplayUnitType
????????///?</summary>
????????///?<param?name="dut">DisplayUnitType?indicates?display?unit?type</param>
????????///?<returns>Ratio?</returns>
????????private?static?double?ImperialDutRatio(DisplayUnitType?dut)?
????????{
????????????switch?(dut)
????????????{
????????????????case?DisplayUnitType.DUT_DECIMAL_FEET:?return?1;
????????????????case?DisplayUnitType.DUT_FEET_FRACTIONAL_INCHES:?return?1;
????????????????case?DisplayUnitType.DUT_DECIMAL_INCHES:?return?12;
????????????????case?DisplayUnitType.DUT_FRACTIONAL_INCHES:?return?12;
????????????????case?DisplayUnitType.DUT_METERS:?return?0.3048;
????????????????case?DisplayUnitType.DUT_CENTIMETERS:?return?30.48;
????????????????case?DisplayUnitType.DUT_MILLIMETERS:?return?304.8;
????????????????case?DisplayUnitType.DUT_METERS_CENTIMETERS:?return?0.3048;
????????????????default:?return?1;
????????????}
????????}
????????#endregion
????}
}url:http://greatverve.cnblogs.com/p/revit-api-create-level.html
//創建標高
[TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]
public?class?cmdDrawLevel?:?IExternalCommand
{
????public?Result?Execute(ExternalCommandData?commandData,?ref?string?messages,?ElementSet?elements)
????{
????????UIApplication?app?=?commandData.Application;
????????Document?doc?=?app.ActiveUIDocument.Document;
????????Selection?sel?=?app.ActiveUIDocument.Selection;
????????try
????????{
????????????Transaction?ts?=?new?Transaction(doc,?"revit");
????????????ts.Start();
????????????//起始,間距,數量,前綴
????????????double?dStart?=?RevitTools.Unit.CovertToAPI(double.Parse(XmlTools.levelStart),?DisplayUnitType.DUT_METERS);
????????????double?dDis?=?RevitTools.Unit.CovertToAPI(double.Parse(XmlTools.levelDis),?DisplayUnitType.DUT_METERS);
????????????int?iNum?=?int.Parse(XmlTools.levelNum);
????????????//創建起始標高
????????????Level?levelStart?=?doc.Create.NewLevel(dStart);
????????????levelStart.Name?=?XmlTools.levelPre?+?1;
????????????//
????????????for?(int?i?=?1;?i?<=?iNum;?i++)
????????????{
????????????????Level?level?=?doc.Create.NewLevel(dStart?+?i?*?dDis);
????????????????level.Name?=?XmlTools.levelPre?+?(i?+?1);
????????????}
????????????ts.Commit();
????????}
????????catch?(Exception?ex)
????????{
????????????TaskDialog.Show("error",?"請檢查是否命名重復。");
????????}
????????return?Result.Succeeded;
????}
}using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
namespace?RevitCodes
{
????class?XmlTools
????{
????????public?static?string?levelStart?=?"4";
????????public?static?string?levelDis?=?"4";
????????public?static?string?levelNum?=?"10";
????????public?static?string?levelPre?=?"F";
????}
}//
//?(C)?Copyright?2003-2010?by?Autodesk,?Inc.
//
//?Permission?to?use,?copy,?modify,?and?distribute?this?software?in
//?object?code?form?for?any?purpose?and?without?fee?is?hereby?granted,
//?provided?that?the?above?copyright?notice?appears?in?all?copies?and
//?that?both?that?copyright?notice?and?the?limited?warranty?and
//?restricted?rights?notice?below?appear?in?all?supporting
//?documentation.
//
//?AUTODESK?PROVIDES?THIS?PROGRAM?"AS?IS"?AND?WITH?ALL?FAULTS.
//?AUTODESK?SPECIFICALLY?DISCLAIMS?ANY?IMPLIED?WARRANTY?OF
//?MERCHANTABILITY?OR?FITNESS?FOR?A?PARTICULAR?USE.?AUTODESK,?INC.
//?DOES?NOT?WARRANT?THAT?THE?OPERATION?OF?THE?PROGRAM?WILL?BE
//?UNINTERRUPTED?OR?ERROR?FREE.
//
//?Use,?duplication,?or?disclosure?by?the?U.S.?Government?is?subject?to
//?restrictions?set?forth?in?FAR?52.227-19?(Commercial?Computer
//?Software?-?Restricted?Rights)?and?DFAR?252.227-7013(c)(1)(ii)
//?(Rights?in?Technical?Data?and?Computer?Software),?as?applicable.
//
using?System;
using?System.Collections.Generic;
using?System.Text;
using?Autodesk.Revit.DB;
using?System.Configuration;
using?System.Reflection;
namespace?RevitTools
{
????///?<summary>
????///?Provides?static?functions?to?convert?unit
????///?</summary>
????static?class?Unit
????{
????????#region?Methods
????????///?<summary>
????????///?Convert?the?value?get?from?RevitAPI?to?the?value?indicated?by?DisplayUnitType
????????///?</summary>
????????///?<param?name="to">DisplayUnitType?indicates?unit?of?target?value</param>
????????///?<param?name="value">value?get?from?RevitAPI</param>
????????///?<returns>Target?value</returns>
????????public?static?double?CovertFromAPI(DisplayUnitType?to,?double?value)
????????{
????????????return?value?*=?ImperialDutRatio(to);
????????}
????????///?<summary>
????????///?Convert?a?value?indicated?by?DisplayUnitType?to?the?value?used?by?RevitAPI
????????///?</summary>
????????///?<param?name="value">Value?to?be?converted</param>
????????///?<param?name="from">DisplayUnitType?indicates?the?unit?of?the?value?to?be?converted</param>
????????///?<returns>Target?value</returns>
????????public?static?double?CovertToAPI(double?value,?DisplayUnitType?from?)
????????{
????????????return?value?/=?ImperialDutRatio(from);
????????}
????????///?<summary>
????????///?Get?ratio?between?value?in?RevitAPI?and?value?to?display?indicated?by?DisplayUnitType
????????///?</summary>
????????///?<param?name="dut">DisplayUnitType?indicates?display?unit?type</param>
????????///?<returns>Ratio?</returns>
????????private?static?double?ImperialDutRatio(DisplayUnitType?dut)?
????????{
????????????switch?(dut)
????????????{
????????????????case?DisplayUnitType.DUT_DECIMAL_FEET:?return?1;
????????????????case?DisplayUnitType.DUT_FEET_FRACTIONAL_INCHES:?return?1;
????????????????case?DisplayUnitType.DUT_DECIMAL_INCHES:?return?12;
????????????????case?DisplayUnitType.DUT_FRACTIONAL_INCHES:?return?12;
????????????????case?DisplayUnitType.DUT_METERS:?return?0.3048;
????????????????case?DisplayUnitType.DUT_CENTIMETERS:?return?30.48;
????????????????case?DisplayUnitType.DUT_MILLIMETERS:?return?304.8;
????????????????case?DisplayUnitType.DUT_METERS_CENTIMETERS:?return?0.3048;
????????????????default:?return?1;
????????????}
????????}
????????#endregion
????}
}url:http://greatverve.cnblogs.com/p/revit-api-create-level.html
總結
以上是生活随笔為你收集整理的Revit API创建标高,单位转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IT小企的兴衰
- 下一篇: IOS 程序猿 UITbleView 篇