FAQ: Revit 매크로

이 절에서는 Revit 매크로와 관련된 자주 묻는 질문에 대한 대답을 제공합니다.

질문 답변

"이 폴더의 파일 작성자를 신뢰합니까?"라는 메시지가 계속 나타나는 이유와 이 메시지가 나타나지 않도록 하는 방법은 무엇입니까?

이 메시지의 출처는 VSCode이며, 이 메시지는 보안을 개선하기 위해 Microsoft의 "작업 영역 신뢰" 프로그램에서 표시됩니다.

메시지가 나타나지 않도록 하려면 다음을 수행하십시오.
  1. VSCode에서 "작업 영역 신뢰 관리" 설정을 실행합니다.
  2. 창 하단에서 "폴더 추가"를 클릭합니다.
  3. 신뢰하는 경로로 다음 경로를 선택합니다.
    • C:\ProgramData\Autodesk\Revit\Macros\2025\Revit\AppHookup
      주: "2025"는 사용 중인 Revit 버전의 연도를 나타냅니다. 필요에 따라 변경합니다.
매크로 관리자의 분류 리스트에 새로 작성한 매크로가 표시될 것으로 예상했으나 리스트에 없습니다. 그 이유는 무엇입니까? Revit 매크로 IDE에서 작성 메뉴를 사용하여 매크로 프로젝트를 성공적으로 작성해야만 새 매크로가 매크로 관리자에 나타납니다.
새 매크로를 작성할 때 RevitAPI.dll과 RevitAPIUI.dll을 참조로 추가해야 합니까? 아니요. 이 단계는 완료되었기 때문에 RevitAPI.dll과 RevitAPIUI 파일을 참조할 필요가 없습니다. Revit 매크로 프로젝트에서는 둘 다 필수 참조로 사용합니다.

RevitAPI.dll 및 RevitAPIUI.dll 복원을 참고하십시오.

내 Revit.ini 파일을 편집해야 합니까? 아니요. Revit 매크로는 시스템에 대한 추가 수정 없이 매크로 관리자에 표시되도록 자동 등록됩니다.
Revit 매크로 IDE에서 This*.cs 파일 또는 This*.vb 파일의 메서드를 제거하여 매크로를 삭제했습니다. 그러나 매크로 관리자의 분류 리스트를 다시 열면 삭제된 매크로 이름이 계속 표시됩니다. 리스트에서 해당 이름을 지우는 방법은 무엇입니까? 편집된 프로젝트를 성공적으로 빌드해야 매크로 관리자가 제거를 인식할 수 있습니다.
시작 및 종료 메서드: Module_StartupModule_Shutdown에 어떤 항목을 포함해야 합니까?

Module_Startup 메서드는 모듈이 로드될 때 호출되고 Module_Shutdown은 모듈이 언로드될 때 호출됩니다.

응용프로그램 레벨 매크로 모듈의 경우 Module_Startup은 Revit이 시작할 때 호출되고 Module_Shutdown은 Revit이 종료될 때 호출됩니다.

문서 레벨 매크로 모듈의 경우 Module_Startup은 Revit 프로젝트가 열릴 때 호출되고 Module_Shutdown은 프로젝트 문서가 닫힐 때 호출됩니다.

Module_StartupModule_Shutdown은 또한 매크로 프로젝트가 다시 빌드될 때도 호출됩니다.

Module_Startup 메서드에 초기화 코드를 추가하고 Module_Shutdown 메서드에서 정리 작업을 실행할 수 있습니다. 예를 들어 시작 시 이벤트 처리기를 등록하고 종료 시 해당 등록을 해제할 수 있습니다(권장 방식).

내 Revit 이벤트 처리기를 등록 및 등록 해제해야 하는 이유 및 방법은 무엇입니까? 앞에서 설명한 대로 Revit IDE에서 이 작업을 실행하기 위한 권장 방법은 *_Startup 메서드에서 이벤트 핸들러를 등록하고 *_Shutdown 메서드에서 등록 해제하는 것입니다. 모든 매크로는 동적으로 로드 및 언로드됩니다. 매크로를 디버그할 때 이벤트 처리기를 제대로 등록 해제하지 않은 경우 Revit에서 잘못된 메서드(잘못된 메모리 주소)를 호출할 수 있습니다. Revit IDE에서 Revit에 이러한 충돌이 발생하지 않도록 할 수 있지만 이벤트 핸들러를 제대로 등록 해제하지 않으면 현재 Revit 세션 중에 성능 문제가 발생할 수 있습니다.
제대로 작동하는 것으로 보이지 않으며 Revit에 문제를 발생시키는 대화상자가 있습니다. 실행 중인 API 콜백의 범위 바깥에서 작동하는 모델리스형 대화상자는 문제를 일으킬 수 있습니다. Revit에서 불안정을 방지하도록 이러한 콜백을 수행하지 않는 것이 좋습니다.
Startup 및 Shutdown 메서드와 이벤트 처리기를 사용하려고 합니다. 예를 제공해 주십시오. 다음 샘플 코드는 새 Revit 프로젝트가 작성될 때 메시지 상자를 자동으로 시작하는 OnDocumentNewed 이벤트 핸들러를 등록하는 방법을 보여줍니다. 주: Revit SDK에 제공된 매크로 샘플 중 하나에서 문서 레벨 이벤트 핸들러의 시작 및 종료 예를 표시할 수 있습니다. 이 FAQ에서는 응용프로그램 레벨 이벤트 처리기 예를 보여줍니다.

2011의 Revit IDE에서는 모든 API 이벤트에 액세스할 수 있습니다. 2011 이전의 이벤트는 제거되었습니다. 다음 예는 새 이벤트를 보여줍니다.

C# 예, 응용프로그램 레벨:

private void Module_Startup(object sender, EventArgs e)
{
   this.Application.DocumentOpened
      += new EventHandler<Autodesk.Revit.DB.Events.DocumentOpenedEventArgs>(Application_DocumentOpened);
}

private void Module_Shutdown(object sender, EventArgs e)
{
   this.Application.DocumentOpened
      -= new EventHandler<Autodesk.Revit.DB.Events.DocumentOpenedEventArgs>(Application_DocumentOpened); 
}

void Application_DocumentOpened(object sender, Autodesk.Revit.DB.Events.DocumentOpenedEventArgs e)
{ 
   System.Windows.Forms.MessageBox.Show("message here");
}