Revitäºæ¬¡å¼åæç¨ï¼BIMèªå¦å ¥é¨Revitäºæ¬¡å¼å
Revitäºæ¬¡å¼å说é¾ä¹é¾ï¼è¯´å®¹æä¹å®¹æï¼å ³é®ç客å®ä½ çæ åµåå ´è¶£ã
è¦æ³åRevitäºæ¬¡å¼åï¼é¦å éè¦æä¸äºå¼åçåºç¡ç¥è¯å¯åä½è²VIP大平å°| é¦é¡µï¼å°¤å ¶æ¯.NETçå¼åè¯è¨ï¼é¦éC#ï¼æè VB.NETä¹è¡ï¼ãå ¶æ¬¡è¦ç¥éRevitç¸å ³çä¸äºåºæ¬æ¦å¿µã
æäºä¸é¢çåºç¡ï¼å ¥é¨å°±æ¯æå°ææ¥çäºï¼å½ç¶å ¥é¨åè¦è½¬æé«æï¼è¿æ¯éè¦ç£¨ç»çï¼ä¸æ¯ä¸æä¸å¤å°±å¯ä»¥å®æçï¼ã
ï¼1ï¼åå¤å·¥ä½
å¼ååéè¦å å®è£ 对åºç软件å¯åä½è²VIP大平å°| é¦é¡µå¯åä½è²VIP大平å°| é¦é¡µï¼å æ¬
AutodeskRevit
VisualStudioExpressï¼å¦ææ¯ä¼ä¸æå豪ï¼è¯·ä½¿ç¨æ¶è´¹çVSï¼
ï¼2ï¼å建项ç®
æå¼VisualStudioï¼åå»èåæ âFileâââNewâââProjectâ¦âï¼æè æå¿«æ·é®(Ctrl+Shift+N)ï¼æå¼âNewProjectâå¯¹è¯æ¡å¯åä½è²VIP大平å°| é¦é¡µãå¨è¯¥å¯¹è¯æ¡ä¸ï¼éæ©âVisualC#âââWindowsâï¼å¨âTemplatesâä¸éæ©âClassLibraryâï¼å¨âNameâæ ä¸è¾å ¥é¡¹ç®åç§°âHelloRevitâï¼åå»âOKâã
注ï¼Revitä¸åçæ¬è¦æ±çæä½.NETFrameworkçæ¬ä¸ä¸æ ·ãä¾å¦2017è³å°éè¦4.5.2çæ¬ã

ï¼3ï¼æ·»å å¼ç¨
éæ©âSolutionExplorerâçâReferencesâèç¹ï¼å³å»éæ©âAddReferenceâ¦âï¼æå¼âAddReferenceâå¯¹è¯æ¡ãå¨è¯¥å¯¹è¯æ¡ä¸ï¼éæ©âBrowseâé项å¡ï¼è¿å ¥Revitå®è£ ç®å½(æ ¹æ®æ¬å°æ åµéæ©å¯¹åºå®è£ ç®å½ï¼ä¾å¦ï¼C:ProgramFilesAutodeskRevit2017ï¼å ·ä½æ ¹æ®å®¢å®å®è£ çRevitçæ¬ä¸åèä¸å)ï¼éæ©âRevitAPI.dllâ以åâRevitAPIUI.dllâä¸¤ä¸ªå¨æé¾æ¥åºï¼åå»âOKâæ·»å å°é¡¹ç®å¼ç¨ã
ï¼4ï¼ä»£ç ç¼å
æ¥ä¸æ¥å¯åä½è²VIP大平å°| é¦é¡µå¯åä½è²VIP大平å°| é¦é¡µï¼å°±å¯ä»¥å¼å§ç¼åå ·ä½ä»£ç äºã项ç®å建åVisualStudioä¼é»è®¤å建ä¸ä¸ªClass1.csæä»¶å¯åä½è²VIP大平å°| é¦é¡µï¼è¯¥æä»¶å å«ä¸ä¸ªpublicç±»Class1å¯åä½è²VIP大平å°| é¦é¡µï¼ä»£ç å¦ä¸ï¼
namespace HelloRevit
{
publicclass Class1
{
}
}
请å°ä»¥ä¸ä»£ç æ¿æ¢ä¸ºä¸é¢ç代ç (åé¢ä¼æä»£ç ç详ç»è§£é)ï¼
namespace HelloRevit
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.ReadOnly)]
public class Class1 : Autodesk.Revit.UI.IExternalCommand
{
public Autodesk.Revit.UI.Result Execute(Autodesk.Revit.UI.ExternalCommandData commandData, ref string message, Autodesk.Revit.DB.ElementSet elements)
{
Autodesk.Revit.UI.TaskDialog.Show("Hello", "Hello Revit!");
return Autodesk.Revit.UI.Result.Succeeded;
}
}
}
ä¹å¯ä»¥éè¿ä½¿ç¨usingå ³é®åç®åä¸é¢ç代ç ï¼ç®åæ´æ¹åç代ç å¦ä¸ï¼
using Autodesk.Revit.Attributes;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
namespace HelloRevit
{
[Transaction(TransactionMode.ReadOnly)]
public class Class1 : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
TaskDialog.Show("Hello", "Hello Revit!");
return Result.Succeeded;
}
}
}
æ³¨ï¼ææçRevitæä»¶åè½é½ä»¥å¤é¨å½ä»¤çæ¹å¼åå¨ï¼æ¯ä¸ä¸ªå¤é¨å½ä»¤é½å¿ 须继æ¿äºIExternalCommandãå½ä»¤ç±»è¿å¿ é¡»å®ç°Executeæ¥å£ï¼è¯¥æ¥å£å å«ä¸ä¸ªåæ°ï¼
commandDataï¼å å«Revitåºç¨ç¨åºçåç§ä¿¡æ¯ï¼å æ¬ææ¡£ãåºç¨ç¨åºæ¥å£å¯åä½è²VIP大平å°| é¦é¡µãå½åè§å¾ççãç¨æ·éè¦çææä¿¡æ¯é½ä»è¯¥åæ°è·åã
messageï¼ä¸»è¦ç¨äºå½å½ä»¤æ§è¡éå°é®é¢æ¶ç»ç¨æ·æ¥åçé误信æ¯ï¼æä»¥ä» å½è¿åå¼ä¸ºResult.CancelledæResult.Failedæ¶ï¼ä¼ å ¥è¯¥åæ°ç弿ä¼å¯¹ç¨æ·å¯è§?ï¼æ¢¢è¶îæâ®æï¼°çâæ¹æ«è²é®î»è´å´¾å± 没î¬ä¾åº î è©î°â»éµé½IP大平å°| é¦é¡µã
elementsï¼ä¹æ¯å½å½ä»¤æ§è¡éå°é®é¢æ¶ç»ç¨æ·æ¥åé误æ¶ä½¿ç¨ï¼å æ¤å®è·message忰䏿 ·ä» å½è¿åå¼ä¸ºResult.CancelledæResult.Failedæ¶æç¨ãè¯¥åæ°å å«ä¸ä¸ªå ç´ éï¼å¼å人åå¯ä»¥éè¿è¯¥å ç´ éåç¥ç¨æ·åªäºå ç´ æé®é¢å¯åä½è²VIP大平å°| é¦é¡µã
ï¼5ï¼æ³¨åå¤é¨å½ä»¤
è¦è®©Revitè½ä½¿ç¨å¤é¨å½ä»¤ï¼é¤äºå¯¹åºç项ç®å代ç ï¼è¿éè¦å¯¹å½ä»¤è¿è¡æ³¨åãRevitéè¿åç¼å为.addinçæä»¶(该æä»¶å®é 为xmlæ ¼å¼)æ¥è¿è¡æ³¨åãå ·ä½æ¥éª¤å¦ä¸ï¼
1ï¼æ°å»ºä¸ä¸ªææ¬æä»¶ï¼å¹¶å°æä»¶åæ¹ä¸ºâHelloRevit.addinâ(请确认æä»¶å䏿¯âHelloRevit.addin.txtâ)å¯åä½è²VIP大平å°| é¦é¡µãç¶åå¨è¯¥æä»¶ä¸è¾å ¥ä»¥ä¸å 容ï¼å¹¶ä¿åï¼
<?xmlversion="1.0" encoding="utf-16"?>
<RevitAddIns>
<AddIn Type="Command">
<Assembly>C:ProjectsHelloRevitinHelloRevit.dll</Assembly>
<AddInId>2FA16D42-9AE3-491d-A919-1A3B04701B9F</AddInId>
<FullClassName>HelloRevit.Class1</FullClassName>
<VendorId>YourCompany</VendorId>
</AddIn>
</RevitAddIns>
A.AddInType="Command"表æè¯¥åºæ¯ä¸ä¸ªå¤é¨å½ä»¤
B.Assemblyæ¯ç¼è¯çâHelloRevit.dllâæä»¶çå ·ä½è·¯å¾å¯åä½è²VIP大平å°| é¦é¡µï¼è¯·æ¹ä¸ºæ¬æºè·¯å¾
C.AddInIdæ¯ä¸ä¸ªå ¨å±çGUIDå¼ï¼æ¯ä¸ªå¤é¨å½ä»¤é½åºè¯¥å å«ä¸ä¸ªèªå·±çGUIDå¼ï¼ä¸åå½ä»¤ä¸è½AddInIdéå¤ï¼
D.FullClassNameæç±»çåç§°(è¿éæ¯Class1ï¼è¯·æ³¨æä¸å®è¦å°å½å空é´åç§°å ä¸ï¼ä¾å¦HelloRevitï¼å¦åå½ä»¤æ§è¡æ¶ä¼æ¾ä¸å°å¯¹åºçæ¥å£)
E.VendorIdææè¯¥å½ä»¤çååï¼è¯·èªå®ä¹ä½¿ç¨ååçåç§°
2ï¼æä»¶ä¿å好ä¹åéè¦å°è¯¥æä»¶æ¾å ¥ç¹å®ç®å½ï¼å¦æä½ å¸æè¯¥æä»¶åªæå½åç¨æ·å¯ç¨ï¼éè¦å°æä»¶æ¾å ¥ï¼%appdata%AutodeskRevitAddins2017;
å¦æä½ å¸æææç¨æ·é½å¯ä»¥ä½¿ç¨è¯¥æä»¶ï¼åå°æä»¶æ¾å ¥C:ProgramDataAutodeskRevitAddins2017
ï¼6ï¼æ§è¡å½ä»¤
æææ¥éª¤å®æåï¼å¯å¨Revitï¼åè½åºä¸å°åºç°ä¸ä¸ªâéå ?ï¼æ¤¤æ¯â ç¾îî°â»éµé½IP大平å°| é¦é¡µã
åå»âå¤é¨å·¥å ·â䏿å表ä¸çâHelloRevit.Class1âï¼æ§è¡åå°å¼¹åºä¸ä¸ªçªå£æ¾ç¤ºâHelloRevitâå¯åä½è²VIP大平å°| é¦é¡µã

䏿³¨BIMè¡ä¸åå±ãå¨è¯¢å¯åä½è²VIP大平å°| é¦é¡µãæè²çé®é¢
æ¥è¯¢æè¦æç¨¿
ç¸å ³æç«