개요

AutoCAD ActiveX 기술 개요
ActiveX 및 VBA 개발자 안내서 >
개요

이 개요에서는 ActiveX Automation 인터페이스를 통한 AutoCAD 객체의 노출과 Visual Basic for Applications 프로그래밍 환경을 사용하는 객체의 프로그래밍에 대한 개념을 설명합니다.

이 단원의 항목

  • AutoCAD ActiveX 기술 개요
  • AutoCAD VBA(Visual Basic for Applications) 인터페이스 개요
  • AutoCAD ActiveX 및 VBA 통합
  • 안내서 구성
  • 자세한 정보
  • 예제 코드
  • 자동화 프로젝트 마이그레이션
이 페이지에 대한 의견을 보내주십시오


AutoCAD ActiveX 기술 개요

개요
개요
AutoCAD VBA(Visual Basic for Applications) 인터페이스 개요
ActiveX 및 VBA 개발자 안내서 > 개요 >
AutoCAD ActiveX 기술 개요

AutoCAD® ActiveX®는 AutoCAD 안팎에서 AutoCAD를 프로그래밍 방식으로 조작하는 방법을 제공합니다. 이 작업은 AutoCAD 객체를 “표준 외부”에 노출함으로써 수행됩니다.일단 이런 객체가 표시되고 나면 여러 프로그래밍 언어 및 환경 그리고 Microsoft® Word VBA 또는 Excel VBA와 같은 다른 응용프로그램을 통해 이러한 객체에 접근할 수 있습니다.

ADD AX_INTRO 그래픽

AutoCAD용 ActiveX 인터페이스를 구현하면 다음과 같은 두 가지 이점이 있습니다.

  • AutoCAD 도면에 대한 프로그래밍 접근 방식이 보다 많은 프로그래밍 환경에 대해 열립니다. ActiveX Automation 이전에는 개발자가 AutoLISP® 또는 C++ 인터페이스로 제한되었습니다.
  • Microsoft Excel 및 Word와 같은 다른 Windows® 응용프로그램과의 데이터 공유가 훨씬 쉬워졌습니다.

객체는 모든 ActiveX 응용프로그램의 주요한 구축 블록입니다. 노출된 각 객체는 AutoCAD의 정밀한 부분을 나타냅니다. AutoCAD ActiveX 인터페이스에는 여러 가지 유형의 객체가 있습니다. 예:

  • 선, 호, 문자 및 치수와 같은 그래픽 객체
  • 선종류 및 치수 스타일과 같은 스타일 설정 객체
  • 도면층, 그룹 및 블록과 같은 조직 구조 객체
  • 뷰 및 뷰포트와 같은 도면 표시 객체
  • 도면 및 AutoCAD 응용프로그램도 객체에 해당됨


AutoCAD VBA(Visual Basic for Applications) 인터페이스 개요

AutoCAD ActiveX 기술 개요
개요
AutoCAD에서의 VBA 구현 방법
ActiveX 및 VBA 개발자 안내서 > 개요 >
AutoCAD VBA(Visual Basic for Applications) 인터페이스 개요

Microsoft VBA는 Visual Basic 6(VB)와 유사한 여러 가지 개발 기능을 제공하도록 설계된 객체 지향 프로그래밍 환경입니다. VBA와 VB의 주요한 차이는 VBA는 AutoCAD와 동일한 프로세스 공간에서 실행되므로 AutoCAD의 지능적이고 매우 신속한 프로그래밍 환경을 제공한다는 점입니다.

또한 VBA는 VBA를 사용할 수 있는 다른 응용프로그램과의 통합 기능도 제공합니다. 이는 다른 응용프로그램 객체 라이브러리를 사용하는 AutoCAD가 Microsoft Word나 Excel과 같은 다른 응용프로그램의 자동화 컨트롤러가 될 수 있다는 것을 의미합니다.

별도로 구입해야 하는 Visual Basic 6의 독립 실행형 개발 버전에 들어 있는 외부 데이터베이스 엔진과 보고서 작성 기능과 같은 추가 구성요소를 통해 AutoCAD VBA를 보완합니다.

VBA를 AutoCAD에 구현하면 다음과 같은 네 가지 이점이 있습니다.

  • VBA 및 VBA 환경은 쉽게 배우고 사용할 수 있습니다.
  • VBA가 AutoCAD와 동일한 프로세스로 실행되므로 프로그램 실행이 매우 빨라집니다.
  • 대화상자의 구성이 빠르고 효과적이므로, 개발자는 응용프로그램의 원형을 제작할 수 있으며 설계에 관한 피드백을 빨리 받아 볼 수 있습니다.
  • 프로젝트가 단독으로 존재하거나 도면에 포함될 수 있으므로, 개발자는 이 선택에 따라 응용프로그램을 융통성 있게 배포할 수 있습니다.
주Microsoft는 64비트 VBA SDK 라이브러리(.dll)를 제공하지 않습니다. 후속적으로 64비트 AutoCAD는 더 이상 VBA를 프로세스 내 구성요소로 실행할 수 없습니다. VBA 구성요소는 이제 32비트 프로세스 외 COM 구성요소로 실행되고 64비트 AutoCAD VBA 사용자에게 임시 정렬을 제공합니다. 이 정렬을 사용하려면 기존 VBA 코드를 몇 가지 변경해야 할 수 있습니다. 이 임시 항목은 다음 AutoCAD 버전에서 지원되지 않으며 기존 VBA 코드를 VB로 이동하려면 사용자에게 적합합니다. NET.

이 단원의 항목

  • AutoCAD에서의 VBA 구현 방법


AutoCAD에서의 VBA 구현 방법

AutoCAD VBA(Visual Basic for Applications) 인터페이스 개요
AutoCAD VBA(Visual Basic for Applications) 인터페이스 개요
Microsoft .NET Framework 사용
ActiveX 및 VBA 개발자 안내서 > 개요 > AutoCAD VBA(Visual Basic for Applications) 인터페이스 개요 >
AutoCAD에서의 VBA 구현 방법

VBA는 AutoCAD ActiveX Automation 인터페이스를 통해 메시지를 AutoCAD로 보냅니다. AutoCAD VBA에서는 VBA 환경을 AutoCAD와 동시에 수행할 수 있으며, ActiveX Automation 인터페이스를 통해 AutoCAD에 대한 프로그래밍 조정을 제공합니다. AutoCAD, ActiveX 자동화 및 VBA의 결합은 AutoCAD 객체의 조작뿐만 아니라 다른 응용프로그램에서의 데이터 전송이나 데이터 검색에 대해서도 매우 강력한 인터페이스를 제공합니다.

AutoCAD에서 ActiveX 및 VBA 프로그래밍을 정의하는 기본 요소는 세 가지가 있습니다. 첫 번째 요소는 AutoCAD 자체로서, AutoCAD 도면요소, 데이터, 명령을 포함하는 다양한 객체 세트가 포함되어 있습니다. AutoCAD는 여러 단계의 인터페이스를 가진 개방형 아키텍처 응용프로그램으로 설계되었기 때문에 AutoCAD 프로그래밍 기능에 대해 잘 알고 있어야 VBA를 효과적으로 사용할 수 있습니다. AutoCAD를 프로그래밍 방식으로 조정하는데 AutoLISP를 사용했다면 이미 AutoCAD 기능에 대해 잘 알고 있을 것입니다. 그러나 VBA 객체 기반 접근 방식은 AutoLISP의 접근 방식과 매우 다릅니다.

두 번째 요소는 AutoCAD 객체와의 메시지(커뮤니케이션) 기능을 설정하는 AutoCAD ActiveX Automation 인터페이스입니다. VBA에서의 프로그래밍은 ActiveX Automation에 대한 기본적인 요해를 필요로 합니다. AutoCAD ActiveX Automation 인터페이스에 대한 설명은 ActiveX and VBA Reference에 있습니다. 숙련된 VB 프로그래머도 AutoCAD ActiveX Automation 인터페이스가 AutoCAD VBA 응용프로그램을 이해하고 개발하는 데 매우 유용하다는 것을 알게 될 것입니다.

세 번째 요소는 고유한 객체 세트, 키워드, 상수 등이 있는 VBA 프로그래밍 환경으로, 프로그램 흐름, 조정, 디버깅 및 실행을 제공합니다. VBA에 대한 Microsoft 고유의 광범위한 도움말은 AutoCAD VBA 도움말과 함께 제공되며, 다음 방법을 통해 VBA IDE에서 접근할 수 있습니다:

  • 키보드에서 F1 키를 누르기
  • VBA IDE 메뉴막대에서 도움말 선택하기
  • VBA IDE 도구막대에 있는 물음표 아이콘을 클릭하기

이 단원의 항목

  • Microsoft .NET Framework 사용
  • 종속성 및 제한 사항


Microsoft .NET Framework 사용

AutoCAD에서의 VBA 구현 방법
AutoCAD에서의 VBA 구현 방법
종속성 및 제한 사항
ActiveX 및 VBA 개발자 안내서 > 개요 > AutoCAD VBA(Visual Basic for Applications) 인터페이스 개요 > AutoCAD에서의 VBA 구현 방법 >
Microsoft .NET Framework 사용

Microsoft Visual Studio® .NET에서 AutoCAD 자동화 객체에 접근하려면, 다음 파일에 대한 참조를 작성하십시오.

  • c:\program files\common files\autodesk shared에 위치한 AutoCAD 2008 유형 라이브러리 acax17enu.tlb.
  • c:\program files\common files\autodesk shared에 위치한 AutoCAD/ObjectDBX Common 17.0 유형 라이브러리 acax17enu.tlb.

이러한 참조는 다음 기본 interop 어셈블리를 작성합니다. Autodesk.AutoCAD.Interop.dll (AutoCAD-특정 유형) 및Autodesk.AutoCAD.Interop.Common.dll (ObjectDBXTM 호스트 응용프로그램에 의해 시작된 유형). interop 어셈블리는 전역 어셈블리 캐시에 위치하며 해당 .NET로 자동화 객체를 매핑합니다.

유형 라이브러리를 참조한 후, Microsoft Visual Studio .NET의 AutoCAD 기반 변수를 다음 예와 같이 선언할 수 있습니다.

Dim objAcad As Autodesk.AutoCAD.Interop.AcadApplication
Dim objLine As Autodesk.AutoCAD.Interop.Common.AcadLine

AutoCAD에서 NETLOAD 명령을 사용하여 .NET 응용프로그램을 로드할 수 있습니다.

AutoCAD와 함께 .NET 응용프로그램을 사용하는 데 대한 자세한 정보는 Autodesk 웹사이트의 Developer Center 부분에서 볼 수 있습니다


종속성 및 제한 사항

Microsoft .NET Framework 사용
AutoCAD에서의 VBA 구현 방법
AutoCAD ActiveX 및 VBA 통합
ActiveX 및 VBA 개발자 안내서 > 개요 > AutoCAD VBA(Visual Basic for Applications) 인터페이스 개요 > AutoCAD에서의 VBA 구현 방법 >
종속성 및 제한 사항

Microsoft Office 또는 다른 VBA 응용프로그램을 AutoCAD를 설치한 후 설치, 다시 설치 또는 설치 제거하면, AutoCAD를 다시 설치하고 시스템을 다시 부팅해야 합니다.


AutoCAD ActiveX 및 VBA 통합

종속성 및 제한 사항
개요
안내서 구성
ActiveX 및 VBA 개발자 안내서 > 개요 >
AutoCAD ActiveX 및 VBA 통합

AutoCAD ActiveX/VBA 인터페이스는 다른 AutoCAD API 환경보다 여러 면에서 유리합니다.

  • 속도. VBA와 함께 ActiveX 응용프로그램을 실행하면 AutoLISP 응용프로그램보다 속도가 빠릅니다.
  • 사용 편이성. 프로그래밍 언어와 개발 환경은 사용하기 쉽고 AutoCAD와 함께 제공됩니다.
  • Windows 상호 운용성. ActiveX와 VBA는 다른 Windows 응용프로그램과 함께 사용하도록 설계되었으며 응용프로그램 간의 커뮤니케이션을 위한 탁월한 수단을 제공합니다.
  • 신속한 원형 제작. VBA 인터페이스를 신속하게 개발할 수 있으므로, 최종적으로 다른 언어로 개발되는 응용프로그램에 대해서도 응용프로그램 원형을 제작할 수 있는 완벽한 환경이 제공됩니다.
  • 프로그래머 기반. AutoCAD ActiveX 및 VBA 기술을 통해 Visual Basic 6 프로그래머는 AutoCAD를 사용자화하고 AutoCAD 응용프로그램을 개발할 수 있습니다.


안내서 구성

AutoCAD ActiveX 및 VBA 통합
개요
자세한 정보
ActiveX 및 VBA 개발자 안내서 > 개요 >
안내서 구성

이 안내서에는 AutoCAD에서 사용할 ActiveX와 VBA 응용프로그램 개발에 관한 내용이 있습니다. VBA를 사용한 응용프로그램 개발에 대한 정보는 “VBA 시작하기”와 “VBA로 응용프로그램 개발”에 있습니다VBA 이외의 개발 환경에서 ActiveX를 사용하는 프로그래머는 이 두 장을 생략해도 됩니다. 그러나 이 안내서에 있는 모든 예제 코드는 VBA환경에서 제공되고 있습니다.


자세한 정보

안내서 구성
개요
예제 코드
ActiveX 및 VBA 개발자 안내서 > 개요 >
자세한 정보

이 안내서는 사용자가 Visual Basic 6 프로그래밍 언어에 대한 작업 경험을 소유하였고 Visual Basic 6에서 사용할 수 있는 많은 문서를 복사하거나 교체하려고 시도하지 않는다고 가정합니다. Visual Basic 6 언어나 개발 환경 사용법에 대한 자세한 정보는 IDE(interactive development environment)의 도움말 메뉴에 있는 Microsoft가 개발한 Visual Basic for Applications 도움말 파일을 참조하십시오.


예제 코드

자세한 정보
개요
자동화 프로젝트 마이그레이션
ActiveX 및 VBA 개발자 안내서 > 개요 >
예제 코드

이 설명서와 ActiveX and VBA Reference에는 ActiveX 메서드, 특성 및 이벤트의 사용법을 보여주는 800개 이상의 VBA 서브루틴 예제가 포함되어 있습니다.

AutoCAD Sample 디렉토리에도 예제 응용프로그램이 많이 있습니다. 이들 예제 응용프로그램은 AutoCAD 도면 데이터를 Microsoft Excel 스프레드시트로 추출하는 것으로부터 송전탑에 대한 응력 분석 실행에 이르는 광범위한 기능을 보여줍니다.

이 견본은 VBA(Visual Basic for Applications) 프로그램 환경의 다양성과 강력한 AutoCAD ActiveX 인터페이스를 결합하여 사용자화 응용프로그램을 작성하는 방법을 보여줍니다.

또한 ActiveX 및 VBA 개발자 안내서와 ActiveX 및 VBA 참조서에 있는 예제 코드를 도움말 파일에서 복사하여 AutoCAD VBA 환경에 직접 붙여 넣을 수 있으며 AutoCAD의 현재 활성화 도면이 모형 공간에서 열린 공백 도면이여야 한다는 유일한 요구를 만족시키면 실행할 수 있습니다.

도움말 파일에서 예제 코드를 실행하려면

  1. 도움말 파일의 예제 코드를 빈 VBA 코드 모듈로 복사합니다.
  2. AutoCAD가 모형 공간에 대해 열려 있는 빈 도면을 가지고 있는지 확인합니다.
  3. VBARUN 명령을 입력하여 매크로 대화상자를 엽니다.
  4. 매크로를 선택하고 실행을 누릅니다.

    매크로 및 매크로 대화상자 실행에 대한 자세한 정보는 “매크로 실행”에 있습니다.


자동화 프로젝트 마이그레이션

예제 코드
개요
새로운 객체
ActiveX 및 VBA 개발자 안내서 > 개요 >
자동화 프로젝트 마이그레이션

ActiveX Automation 인터페이스에 추가된 객체와 메서드를 사용함으로써 AutoCAD 기능을 사용할 수 있습니다. 이 절에는 Visual Basic for Applications(VBA), Visual Basic 6(VB) 및 기타 자동화 호환 환경을 사용하여 작성된 자동화 프로젝트에 적용되는 변경 사항이 있습니다.

AutoCAD의 기능 사용에 대한 자세한 정보는 “AutoCAD 기능 사용”을 참고하십시오.

이 단원의 항목

  • 새로운 객체
  • 변경된 항목
  • 프로젝트 마이그레이션 방법


새로운 객체

자동화 프로젝트 마이그레이션
자동화 프로젝트 마이그레이션
변경된 항목
ActiveX 및 VBA 개발자 안내서 > 개요 > 자동화 프로젝트 마이그레이션 >
새로운 객체

다음 객체는 AutoCAD 2008에 있습니다. 이 객체에 대한 자세한 정보는 VBA IDE의 객체 검색기와 ActiveX 및 VBA 참조서를 참조하십시오.

  • SortentsTable. 그리기 순서 정보를 포함하고 처리합니다.
  • 테이블. 도면의 테이블을 추가하고 수정합니다.
  • TableStyle. 모눈 표시 여부, 선가중치 및 색상과 같은 테이블 형식을 추가하고 수정합니다.

또한 AutoCAD 2008에는 시트 세트 관리자의 자동화에 대한 객체가 있습니다. 이 객체에 대한 자세한 정보는 시트 세트 객체 참조서를 참조하십시오.


변경된 항목

새로운 객체
자동화 프로젝트 마이그레이션
프로젝트 마이그레이션 방법
ActiveX 및 VBA 개발자 안내서 > 개요 > 자동화 프로젝트 마이그레이션 >
변경된 항목

이 절에서는 변경된 기존 항목을 설명합니다.

변경된 항목 |  |
AutoCAD 2004 항목 | AutoCAD 2008 항목 | 변경 사항 설명
BeginClose 이벤트 | BeginDocClose 이벤트 | BeginDocClose 이벤트를 사용하여 도면이 닫히는 것을 방지할 수 있습니다.
Layer 객체 | Layer 객체 | Description 특성과 Used 특성 추가
Layers 컬렉션 | Layers 컬렉션 | GenerateUsageData 메서드 추가
ModelSpace 컬렉션 PaperSpace 컬렉션 Block 객체 | ModelSpace 컬렉션 PaperSpace 컬렉션 Block 객체 | 모든 컬렉션과 객체에 AddTable 메서드 추가, Block 객체에 Path 특성 추가
MText 객체, Text 객체 | MText 객체, Text 객체 | MText 객체에 BackgroundFill 특성 추가, MText 객체 및 Text 객체에 FieldCode 메서드 추가
Plot 객체 | Plot 객체 | BatchPlotProgress 특성과 StartBatchMode 특성이 사용되지 않습니다. 배치 플로팅에 Microsoft .NET 응용프로그램을 사용하는 것이 좋습니다. DisplayPlotPreview 메서드는 더 이상 부분적 미리보기를 지원하지 않습니다.
PreferencesFiles 객체 | PreferencesFiles 객체 | PlotLogFilePath 특성, PageSetupOverridesTemplateFile 특성 및 QNewTemplateFile 특성 추가
PreferencesOutput 객체 | PreferencesOutput 객체 | AutomaticPlotLog 특성, DefaultPlotToFilePath 특성 및 ContinuousPlotLog 특성 추가
Viewport 객체 | Viewport 객체 | ModelView 특성, SheetView 특성, LabelBlockId 특성, HasSheetView 특성 및 SyncModelView 메서드 추가
View 객체 | View 객체 | CategoryName 특성, LayoutId 특성, LayerState 특성 및 HasVpAssociation 특성 추가


프로젝트 마이그레이션 방법

변경된 항목
자동화 프로젝트 마이그레이션
VBA 시작하기
ActiveX 및 VBA 개발자 안내서 > 개요 > 자동화 프로젝트 마이그레이션 >
프로젝트 마이그레이션 방법

일반적으로, VBA IDE에서 작성되거나 Visual Basic 6로 작성된 AutoCAD 6 자동화 프로젝트는 AutoCAD 2008에서 작동됩니다.

AutoCAD 2008 자동화 프로젝트는 AutoCAD 자동화 프로젝트와 동일한 유형의 라이브러리(acax17enu.tlb)를 사용합니다. 유형 라이브러리는 C:\Program Files\Common Files\Autodesk Shared에 배치됩니다.

AutoCAD 2008 자동화 프로젝트는 CreateObject, GetObject 및 GetInterfaceObject 메서드에 대해 동일한 버전별 ProgID를 사용합니다. 예를 들어, AutoCAD 자동화 프로젝트에서 CreateObject 함수를 사용할 경우 CreateObject("AutoCAD.Application.17")를 사용합니다. 자동화 프로젝트가 버전 독립 ProgID를 사용할 경우 버전 종속 ProgID를 사용하도록 프로젝트를 변경합니다.


VBA 시작하기

프로젝트 마이그레이션 방법
포함된 VBA 및 전역 VBA 프로젝트 이해
ActiveX 및 VBA 개발자 안내서 >
VBA 시작하기

이 장에서는 AutoCAD VBA(Visual Basic for Applications) 프로젝트와 VBA 대화식 개발 환경(IDE)을 소개합니다. 대부분의 VBA 환경은 동작이 유사하지만 AutoCAD VBA IDE에는 몇 가지 고유한 특징이 있습니다. 또한 프로젝트의 로드, 실행 또는 VBA IDE를 여는 데 사용할 수 있는 여러 가지 AutoCAD 명령이 있습니다. 이 장에서는 VBA 프로젝트, VBA 명령 및 일반 VBA IDE의 사용을 정의합니다.

이 단원의 항목

  • 포함된 VBA 및 전역 VBA 프로젝트 이해
  • VBA 관리자를 사용하여 프로젝트 구성
  • 매크로 처리하기
  • VBA IDE를 사용하여 프로젝트 편집
  • 예비 연습 수행하기
  • 자세한 정보
  • AutoCAD VBA 프로젝트 용어
  • AutoCAD VBA 명령


포함된 VBA 및 전역 VBA 프로젝트 이해

VBA 시작하기
VBA 시작하기
VBA 관리자를 사용하여 프로젝트 구성
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 >
포함된 VBA 및 전역 VBA 프로젝트 이해

AutoCAD® VBA 프로젝트는 주어진 함수를 수행하기 위해 함께 작동되는 코드 모듈, 클래스 모듈 및 폼의 집합입니다. 프로젝트는 AutoCAD 도면 내에 저장하거나 별도의 파일로 저장할 수 있습니다.

포함된 프로젝트는 AutoCAD 도면 내에 저장됩니다. 이 프로젝트는 프로젝트가 들어 있는 도면이 AutoCAD에서 열릴 때마다 자동으로 로드되어 프로젝트를 편리하게 배포할 수 있습니다. 포함된 프로젝트는 상주하는 문서 내에서만 작동하기 때문에 제한적이며, AutoCAD 도면을 열거나 닫을 수 없습니다. 포함된 프로젝트의 사용자는 프로그램을 실행하기 위해 더 이상 프로젝트 파일을 찾아서 로드하지 않아도 됩니다. 도면이 열릴 때 발생하는 시간 로그를 도면에 포함된 프로젝트의 예로 들 수 있습니다. 사용자는 이 매크로를 사용하여 로그인하고, 도면에서 작업한 시간을 기록할 수 있습니다. 자동으로 수행되기 때문에 사용자는 도면을 열기 전에 프로젝트를 로드하지 않아도 됩니다.

전역 프로젝트는 별도의 파일에 저장되며, AutoCAD 도면에 잘 맞고 도면을 열고 닫을 수 있어서 보다 융통적이지만 도면이 열릴 때 자동으로 로드되지 않습니다. 사용자는 필요한 매크로가 들어 있는 프로젝트 파일을 알고 있어야 하며 해당 프로젝트 파일을 로드해야 매크로를 실행할 수 있습니다. 그러나 전역 프로젝트는 다른 사용자와 쉽게 공유할 수 있어서 공통 매크로에 대해 훌륭한 라이브러리를 만듭니다. 프로젝트 파일에 저장할 수 있는 프로젝트의 예로, 여러 도면에서 재료명세서를 모으는 매크로가 있습니다. 이 매크로는 관리자가 작업 주기의 마지막에 실행하며 여러 도면에서 정보를 모을 수 있습니다.

일정 시점에서, 사용자는 해당 AutoCAD 세션으로 로드된 전역 프로젝트와 포함된 프로젝트를 모두 가질 수 있습니다.

AutoCAD VBA 프로젝트는 독립 실행형 Visual Basic 6 프로젝트와 호환되는 이진 프로젝트가 아닙니다. 그러나 폼, 모듈 및 클래스는 VBA IDE에서 IMPORT 및 EXPORT VBA 명령을 사용하여 프로젝트 간에 교환할 수 있습니다. VBA IDE에 대한 자세한 정보는 VBA IDE를 사용하여 프로젝트 편집를 참조하십시오.

COM 자동화를 통해 Visual Studio .NET을 사용하여 AutoCAD의 구동 및 사용자화를 지원합니다.


VBA 관리자를 사용하여 프로젝트 구성

포함된 VBA 및 전역 VBA 프로젝트 이해
VBA 시작하기
기존 프로젝트 로드
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 >
VBA 관리자를 사용하여 프로젝트 구성

VBA 관리자를 사용하여 현재 AutoCAD 세션에 로드된 모든 VBA 프로젝트를 볼 수 있습니다. 이는 AutoCAD 도구로서 VBA 프로젝트를 로드, 언로드, 저장, 작성, 포함 및 추출하는 데 사용됩니다.

VBA 관리자를 열려면

도구 메뉴에서 또는 AutoCAD에서 VBAMAN 명령을 호출함으로써 VBA 관리자를 열 수 있습니다.

이 단원의 항목

  • 기존 프로젝트 로드
  • 프로젝트 언로드
  • 도면에 프로젝트 포함
  • 도면에서 프로젝트 추출
  • 새 VBA 프로젝트 작성
  • 프로젝트 저장


기존 프로젝트 로드

VBA 관리자를 사용하여 프로젝트 구성
VBA 관리자를 사용하여 프로젝트 구성
바이러스 경고
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA 관리자를 사용하여 프로젝트 구성 >
기존 프로젝트 로드

프로젝트를 AutoCAD에 로드하면 매크로라고도 하는 모든 공용 서브루틴을 사용할 수 있습니다. 도면에 포함된 프로젝트는 도면을 열 때마다 로드 되어집니다. DVB 파일에 저장된 프로젝트는 명시적으로 로드되야 합니다.

프로젝트를 올릴 때는 언제나 첫 프로젝트에서 참조한 다른 프로젝트도 자동으로 로드됩니다. 또한 이름이 acad.dvb인 프로젝트 파일을 시작할 때에도 AutoCAD가 자동으로 로드됩니다.

기존 VBA 프로젝트 파일 로드하려면

  1. VBA 관리자에서 로드 옵션을 사용하여 VBA 프로젝트 열기 대화상자를 불러옵니다.
  2. VBA 프로젝트 열기 대화상자에서 열려고 하는 프로젝트 파일을 선택합니다. VBA 프로젝트 대화상자에서는 적합한 DVB 파일만 열 수 있습니다. 다른 형식의 파일을 열려고 하면 오류 메시지를 받게 됩니다.
  3. 열기를 선택합니다.

다음 방법 중 하나를 사용하여 프로젝트 파일을 로드할 수도 있습니다.

  • VBALOAD 명령을 입력하여 VBA 프로젝트 열기 대화상자를 엽니다.
  • Windows 탐색기에서 DVB 파일을 끌어서 AutoCAD 윈도우의 열려 있는 도면 위에 놓습니다.

이 단원의 항목

  • 바이러스 경고


바이러스 경고

기존 프로젝트 로드
기존 프로젝트 로드
프로젝트 언로드
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA 관리자를 사용하여 프로젝트 구성 > 기존 프로젝트 로드 >
바이러스 경고

프로젝트를 로드할 때마다 바이러스로부터 보호하기 위해 코드를 해당 프로젝트 내에서 작동 가능 또는 작동 불가능하게 만드는 옵션이 주어집니다. 코드를 작동 가능하게 하면 코드에 있는 바이러스가 실행을 시작할 수 있습니다. 코드를 작동 불가능하게 하면 프로젝트는 로드되지만 프로젝트 내의 모든 코드는 실행되지 않습니다. 바이러스 보호 경고는 Windows 탐색기에서 DVB 파일을 끌어서 AutoCAD 윈도우에 열려 있는 도면 위에 놓는 방법으로 프로젝트를 로드하는 경우에는 표시되지 않습니다.

바이러스 보호 기능에 대한 자세한 정보는 프로젝트 옵션 설정에 있습니다.


프로젝트 언로드

바이러스 경고
VBA 관리자를 사용하여 프로젝트 구성
도면에 프로젝트 포함
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA 관리자를 사용하여 프로젝트 구성 >
프로젝트 언로드

프로젝트를 언로드하면 메모리가 비워지며 로드된 프로젝트 리스트를 관리하기에 충분한 정도로 유지합니다.

포함된 프로젝트 또는 로드된 다른 프로젝트에서 참조한 프로젝트는 언로드할 수 없습니다.

VBA 프로젝트 언로드하려면

언로드하려는 프로젝트를 선택하고 언로드를 선택하거나, 프로젝트의 언로드 메시지를 표시하는 VBAUNLOAD 명령을 사용하여 VBA 프로젝트를 언로드할 수 있습니다.


도면에 프로젝트 포함

프로젝트 언로드
VBA 관리자를 사용하여 프로젝트 구성
도면에서 프로젝트 추출
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA 관리자를 사용하여 프로젝트 구성 >
도면에 프로젝트 포함

프로젝트를 포함하면 프로젝트의 사본이 도면 데이터베이스에 저장됩니다. 그러면 프로젝트가 들어 있는 도면을 열거나 닫을 때마다 프로젝트가 로드되거나 언로드됩니다.

도면은 포함된 프로젝트를 한 번에 하나만 포함할 수 있습니다. 도면 안에 이미 포함된 프로젝트가 있으면 다른 프로젝트를 도면에 포함시키기 전에 추출해야 합니다.

AutoCAD 도면에 프로젝트를 포함하려면

  1. VBA 관리자를 열고 포함시킬 프로젝트를 선택합니다.
  2. 포함을 선택합니다.


도면에서 프로젝트 추출

도면에 프로젝트 포함
VBA 관리자를 사용하여 프로젝트 구성
새 VBA 프로젝트 작성
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA 관리자를 사용하여 프로젝트 구성 >
도면에서 프로젝트 추출

프로젝트를 추출하면 도면 데이터베이스에서 프로젝트가 제거되고 프로젝트를 외부 프로젝트 파일에 저장할 수 있습니다. 파일을 외부 프로젝트 파일에 저장하지 않으면 프로젝트 데이터는 삭제됩니다.

AutoCAD 도면에서 프로젝트 추출하려면

  1. VBA 관리자를 열고 프로젝트를 추출할 도면을 선택합니다.
  2. 추출을 선택합니다.
  3. 프로젝트 정보를 외부 프로젝트 파일에 저장하려면, “제거하기 전에 VBA 프로젝트를 내보내시겠습니까?” 프롬프트에서 예를 선택합니다. 파일을 저장할 수 있는 다른 이름으로 저장 대화상자가 표시됩니다.

    프로젝트 정보를 외부 파일에 저장하지 않으려면, “제거하기 전에 VBA 프로젝트를 내보내시겠습니까?” 프롬프트에서 아니오를 선택합니다. 도면에서 프로젝트 정보가 제거되고 저장되지 않습니다.


새 VBA 프로젝트 작성

도면에서 프로젝트 추출
VBA 관리자를 사용하여 프로젝트 구성
프로젝트 저장
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA 관리자를 사용하여 프로젝트 구성 >
새 VBA 프로젝트 작성

새 프로젝트는 저장되지 않은 전역 프로젝트로서 작성됩니다. 프로젝트가 작성되면 프로젝트를 도면에 포함시키거나 프로젝트 파일에 저장할 수 있습니다.

새 VBA 프로젝트를 작성하려면

  1. VBA 관리자를 엽니다.
  2. 신규를 선택합니다.

    기본 이름이 ACADProject인 새 프로젝트가 작성됩니다. 프로젝트 이름을 바꾸려면 VBA IDE로 가야 합니다. VBA IDE에서의 프로젝트 명명에 대한 자세한 정보는 프로젝트 명명을 참조하십시오.


프로젝트 저장

새 VBA 프로젝트 작성
VBA 관리자를 사용하여 프로젝트 구성
매크로 처리하기
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA 관리자를 사용하여 프로젝트 구성 >
프로젝트 저장

포함된 프로젝트는 도면을 저장할 때마다 저장됩니다. 전역 프로젝트는 VBA 관리자나 VBA IDE를 사용해서 저장해야 합니다.

VBA 관리자를 사용하여 프로젝트를 저장하려면

  1. VBA 관리자를 열고 저장할 프로젝트를 선택합니다.
  2. 다른 이름으로 저장을 선택합니다. 다른 이름으로 저장 대화상자가 열립니다.
  3. 저장할 프로젝트의 파일 이름을 선택합니다.
  4. 저장을 선택합니다.


매크로 처리하기

프로젝트 저장
VBA 시작하기
매크로 대화상자 사용
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 >
매크로 처리하기

매크로는 공용(실행 파일) 서브루틴입니다. 보통 각 프로젝트에는 최소한 하나의 매크로가 있습니다.

이 단원의 항목

  • 매크로 대화상자 사용
  • 매크로 실행
  • 매크로 편집
  • 단계별로 매크로 실행
  • 프로젝트 옵션 설정


매크로 대화상자 사용

매크로 처리하기
매크로 처리하기
매크로 실행
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > 매크로 처리하기 >
매크로 대화상자 사용

매크로 대화상자에서는 VBA 프로젝트 옵션을 설정하는 것은 물론, 매크로를 실행, 편집, 삭제 및 작성할 수 있습니다. 매크로 [image] 매크로를 선택하여 AutoCAD 도구 메뉴에서 매크로 대화상자를 열거나 AutoCAD 명령 프롬프트에서 VBARUN을 실행합니다.

적합한 범위의 매크로 이름이 모두 이 대화상자에 표시됩니다. 매크로 위치 드롭다운 리스트를 사용하면 적합한 범위를 변경할 수 있습니다. 이 리스트는 매크로가 표시되는 프로젝트나 도면을 지정합니다. 다음에 있는 매크로를 표시하도록 선택할 수 있습니다.

  • 모든 도면과 프로젝트
  • 모든 도면
  • 모든 프로젝트
  • AutoCAD에서 현재 열려 있는 모든 개별 도면
  • AutoCAD에서 현재 로드된 모든 개별 프로젝트

적합한 범위를 제한하면 여러 매크로 이름이 리스트에 나타나는 방법을 조정할 수 있습니다. 이 방법은 로드된 도면과 프로젝트에서 여러 매크로를 사용할 수 있는 경우에 유용합니다.

새 매크로 작성하려면

  1. 매크로 대화상자를 열고 새 매크로의 이름을 입력합니다.
  2. 매크로 위치 드롭다운 리스트에서 새 매크로를 작성할 프로젝트를 선택합니다.
  3. 작성을 선택합니다.

지정한 이름을 가진 매크로가 이미 있으면 기존 매크로를 대치할 것인지 묻습니다.

프롬프트에서 예를 선택하면 기존 매크로의 코드가 삭제되고 지정된 이름을 가진 새로운 빈 매크로가 작성됩니다.

프롬프트에서 아니오를 선택하면 매크로의 새 이름을 입력하는 매크로 대화상자로 돌아갑니다.

프롬프트에서 취소를 선택하면 매크로 대화상자가 사라지며 새 매크로는 작성되지 않습니다.

매크로 삭제하려면

  1. 매크로 대화상자를 열고 삭제할 매크로를 선택합니다.
  2. 삭제를 선택합니다. 삭제 여부를 확인하는 메시지가 표시됩니다.
  3. 프롬프트에서 예를 선택하여 매크로를 삭제하거나 아니오를 선택하여 삭제를 취소합니다.


매크로 실행

매크로 대화상자 사용
매크로 처리하기
매크로 편집
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > 매크로 처리하기 >
매크로 실행

매크로를 실행하면 현재 AutoCAD 세션의 환경에서 매크로 코드가 실행됩니다. 현재 활성 도면은 매크로가 실행될 때 포커스가 있는 열린 도면으로 간주됩니다. ThisDrawing 객체에 대한 모든 VBA 참조는 전역 프로젝트의 매크로에 대한 현재 활성 도면을 나타냅니다. 포함된 프로젝트의 매크로 경우, ThisDrawing 객체는 항상 매크로가 포함되어 있는 도면을 참조합니다.

매크로 대화상자에서 매크로 실행하려면

  1. 매크로 대화상자를 열고 실행할 매크로를 선택합니다.
  2. 실행을 선택합니다.

VBA IDE에서 매크로 실행하려면

  • 실행 메뉴에서 매크로 실행 메뉴 옵션을 사용합니다.

    매크로나 형식이 현재의 매크로 또는 형식이 아닌 경우에는 실행할 매크로를 선택하는 대화상자가 표시됩니다.

    제공된 매크로가 현재(커서가 절차에 있음) 매크로이면 그 매크로가 실행됩니다.


매크로 편집

매크로 실행
매크로 처리하기
단계별로 매크로 실행
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > 매크로 처리하기 >
매크로 편집

매크로를 편집하면 코드 윈도우에 열려 있는 선택한 매크로에 대해 VBA IDE가 열립니다. VBA IDE에서 매크로 편집에 대한 자세한 정보는 VBA IDE를 사용하여 프로젝트 편집을 참조하십시오.

매크로를 편집하려면

  1. 매크로 대화상자를 열고 편집할 매크로를 선택합니다.
  2. 편집을 선택합니다.


단계별로 매크로 실행

매크로 편집
매크로 처리하기
프로젝트 옵션 설정
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > 매크로 처리하기 >
단계별로 매크로 실행

단계별 매크로 실행은 먼저 매크로를 실행한 다음, 코드의 첫째 행에서 실행을 중지합니다. 실행 행에서 코드 윈도우에 열려 있는 선택한 매크로에 대해 VBA IDE가 열립니다.

매크로를 단계별로 실행하려면

  1. 매크로 대화상자에서 단계별로 실행할 매크로를 선택합니다.
  2. 단계를 선택합니다.


프로젝트 옵션 설정

단계별로 매크로 실행
매크로 처리하기
VBA IDE를 사용하여 프로젝트 편집
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > 매크로 처리하기 >
프로젝트 옵션 설정

AutoCAD VBA 프로젝트를 위해 다음과 같은 3가지 옵션을 설정할 수 있습니다.

  • 자동 삽입 작동 가능
  • 오류 시 중단 허용
  • 매크로 바이러스 보호 작동 가능

자동 삽입 작동 가능

자동 삽입하기 기능을 사용하면 도면이 열릴 때, 포함된 VBA 프로젝트를 모든 도면에 대해 자동으로 작성합니다.

오류 시 중단 허용

이 옵션을 사용하면 오류 발생 시, VBA가 중단 모드가 될 수 있습니다. 중단 모드는 대화식 개발 환경에서 프로그램 실행을 임시적으로 중단합니다. 중단 모드에서는 프로그램 실행을 검사, 디버그, 재설정하거나, 단계별로 실행하거나 계속할 수 있습니다.

이 옵션이 작동 가능으로 지정된 경우, VBA 매크로 실행중에 처리되지 않은 오류가 발견되면 매크로 실행이 일시 중단되고 매크로내의 오류가 발생한 지점에 VBA IDE가 표시됩니다.

이 옵션이 작동 불가능으로 지정된 경우, VBA 매크로 실행 도중 처리되지 않은 오류가 발견되면 오류가 있음을 알리는 메시지 상자가 표시된 다음 매크로의 실행이 종료됩니다.

매크로 바이러스 보호 작동 가능

바이러스 보호 메커니즘은 매크로 바이러스가 포함되어 있을 수 있는 도면을 열 때마다 내장된 경고 메시지를 표시합니다.

AutoCAD VBA 프로젝트 옵션을 설정하려면

  1. 도구 메뉴에서 매크로 [image] 매크로를 선택하여 VBA 매크로 대화상자를 엽니다.
  2. VBA 매크로 대화상자에서 옵션을 선택하여 옵션 대화상자를 엽니다.
  3. 옵션 대화상자에서 작동 가능하도록 지정할 옵션을 선택합니다.
  4. 확인을 선택합니다.


VBA IDE를 사용하여 프로젝트 편집

프로젝트 옵션 설정
VBA 시작하기
프로젝트 정보 표시
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 >
VBA IDE를 사용하여 프로젝트 편집

프로젝트가 AutoCAD로 로드되면 VBA 대화식 개발 환경을 사용하여 코드, 형식 및 참조를 해당 프로젝트에 맞게 편집할 수 있습니다. VBA IDE에서도 프로젝트를 디버그하고 실행할 수 있습니다. 열린 VBA IDE는 로드된 모든 프로젝트에 접근할 수 있습니다.

요구 시 VBA IDE를 열려면

명령행이나 메뉴 막대에서 VBA IDE를 열 수 있습니다.

  • 명령행에서 VBAIDE를 입력하거나 도구 메뉴에서 매크로 [image] Visual Basic Editor를 선택합니다.

이 단원의 항목

  • 프로젝트 정보 표시
  • 프로젝트의 구성요소 정의
  • 기존 구성요소 가져오기
  • 구성요소 편집
  • 프로젝트 명명
  • 프로젝트 저장
  • 다른 VBA 프로젝트 참조
  • VBA IDE 옵션 설정


프로젝트 정보 표시

VBA IDE를 사용하여 프로젝트 편집
VBA IDE를 사용하여 프로젝트 편집
프로젝트의 구성요소 정의
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 >
프로젝트 정보 표시

VBA IDE에는 로드된 모든 VBA 프로젝트의 리스트를 표시하는 프로젝트 윈도우라고 하는 윈도우가 있습니다. 이 윈도우에는 프로젝트에 포함된 코드, 클래스 및 형식 모듈, 프로젝트와 연관된 문서, 그 외에 프로젝트에서 참조한 모든 VBA 프로젝트 및 프로젝트의 실제 위치(경로) 등도 표시됩니다.

프로젝트 윈도우에는 편집할 여러 프로젝트 구성요소를 여는 데 사용하는 고유한 도구막대가 있습니다. 코드 보기 버튼은 선택한 모듈의 코드를 여는 데 사용합니다. 객체 보기 버튼은 형식과 같이 선택한 객체를 표시하는 데 사용합니다.

기본적으로 프로젝트 윈도우는 가시적입니다. 이 윈도우가 보이지 않으면 뷰 메뉴에서 프로젝트 윈도우를 선택하거나 CTRL+R 키를 누르십시오.


프로젝트의 구성요소 정의

프로젝트 정보 표시
VBA IDE를 사용하여 프로젝트 편집
객체
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 >
프로젝트의 구성요소 정의

각 프로젝트는 여러 가지 다른 구성요소를 포함할 수 있습니다. 프로젝트가 포함할 수 있는 여러 구성요소는 객체, 형식, 표준 모듈, 클래스 모듈 및 참조입니다.

이 단원의 항목

  • 객체
  • 형식
  • 표준 모듈
  • 클래스 모듈
  • 참조
  • 새 구성요소 추가


객체

프로젝트의 구성요소 정의
프로젝트의 구성요소 정의
형식
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 > 프로젝트의 구성요소 정의 >
객체

객체 구성요소는 VBA 코드가 접근할 객체나 문서의 유형을 표현합니다. AutoCAD VBA 프로젝트의 경우, 이 객체는 현재 AutoCAD 도면을 나타냅니다.


형식

객체
프로젝트의 구성요소 정의
표준 모듈
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 > 프로젝트의 구성요소 정의 >
형식

형식 구성요소에는 사용자의 프로젝트에서 사용할 수 있도록 구성된 사용자화 대화상자가 들어 있습니다.


표준 모듈

형식
프로젝트의 구성요소 정의
클래스 모듈
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 > 프로젝트의 구성요소 정의 >
표준 모듈

코드 모듈 구성요소에는 일반 절차와 함수가 들어 있습니다. 표준 모듈을 코드 모듈이라고 하거나 그냥 모듈이라고 합니다.


클래스 모듈

표준 모듈
프로젝트의 구성요소 정의
참조
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 > 프로젝트의 구성요소 정의 >
클래스 모듈

클래스 모듈 구성요소에는 클래스로 정의된 모든 사용자 객체가 들어 있습니다.


참조

클래스 모듈
프로젝트의 구성요소 정의
새 구성요소 추가
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 > 프로젝트의 구성요소 정의 >
참조

참조 구성요소에는 다른 프로젝트나 라이브러리에 대한 모든 참조가 들어 있습니다.


새 구성요소 추가

참조
프로젝트의 구성요소 정의
기존 구성요소 가져오기
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 > 프로젝트의 구성요소 정의 >
새 구성요소 추가

구성요소를 새로 추가하면 프로젝트에 빈 구성요소가 작성됩니다. 새로운 모듈, 형식 및 클래스 모듈을 프로젝트에 추가할 수 있습니다. 구성요소의 모든 특성(예: 구성요소의 이름)을 업데이트하고 적합한 코드를 입력합니다. 새 구성요소를 명명할 때, 다른 개발자가 나중에 응용프로그램에서 구성요소를 사용할 수 있다는 점을 기억하십시오. 개발 팀에서 사용되는 명명 규칙을 따르십시오.

프로젝트에 새 구성요소 추가하려면

  1. VBA IDE의 프로젝트 윈도우에서 구성요소를 추가할 프로젝트를 선택합니다.
  2. 삽입 메뉴에서 사용자 정의 폼, 모듈 또는 클래스 모듈을 선택하여 새 구성요소를 프로젝트에 추가합니다.

    새 구성요소가 프로젝트에 추가되어 프로젝트 윈도우에 나타납니다.


기존 구성요소 가져오기

새 구성요소 추가
VBA IDE를 사용하여 프로젝트 편집
구성요소 편집
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 >
기존 구성요소 가져오기

가져오기를 통해 기존 구성요소를 프로젝트에 추가할 수 있습니다. 형식, 모듈 또는 클래스 모듈을 가져올 수 있습니다. 형식은 FRM 파일로서, 모듈은 BAS 파일로서, 그리고 클래스 모듈을 CLS 파일로서 가져올 수 있습니다.

구성요소 파일을 가져오면 가져오는 파일의 사본이 프로젝트에 추가됩니다. 원본 파일은 그대로 남아 있습니다. 가져온 구성요소를 변경해도 원본 구성요소 파일은 변경되지 않습니다.

기존 구성요소와 이름이 동일한 구성요소를 가져오면, 프로젝트에 파일이 추가되면서 그 이름에 번호가 추가됩니다.

가져온 구성요소가 프로젝트에 추가되고 프로젝트 윈도우에 나타납니다. 구성요소의 특성을 편집하려면 프로젝트 윈도우에서 해당 구성요소를 선택하십시오. 선택한 구성요소의 특성이 나열되고 특성 윈도우에서 편집할 수 있습니다.

프로젝트로 기존 구성요소 가져오려면

  1. VBA IDE의 프로젝트 윈도우에서 구성요소를 추가할 프로젝트를 선택합니다.
  2. 파일 메뉴에서 파일 가져오기를 선택하여 파일 가져오기 대화상자를 엽니다.
  3. 파일 가져오기 대화상자에서 가져올 파일을 선택하고 열기를 누릅니다.


구성요소 편집

기존 구성요소 가져오기
VBA IDE를 사용하여 프로젝트 편집
코드 윈도우 사용
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 >
구성요소 편집

VBA IDE에서 표준 모듈, 클래스 모듈 및 형식을 편집할 수 있습니다. 표준 모듈과 클래스 모듈은 코드 윈도우에서 편집됩니다. 형식은 사용자 정의 폼 윈도우에서 특수 도구상자를 사용하여 편집됩니다.

가지고 있는 모듈 수만큼 코드 윈도우를 열 수 있으므로 다른 형식이나 모듈의 코드를 쉽게 볼 수 있으며 잘라내고 붙여넣기 작업을 수행할 수 있습니다.

프로젝트의 구성요소를 편집하려면

  1. VBA IDE의 프로젝트 윈도우에서 편집할 구성요소를 선택합니다.
  2. 프로젝트 윈도우에서 코드 보기 버튼을 선택하여 코드 윈도우를 엽니다.
  3. 프로젝트 윈도우에서 객체 보기 버튼을 선택하여 사용자 정의 폼 윈도우 및 관련 도구상자를 엽니다.

형식과 연관된 코드에 접근하려면

  • 형식 윈도우에 있는 컨트롤을 두 번 누르기하여 컨트롤과 연관된 코드에 접근합니다. 해당 컨트롤과 연관된 코드가 코드 윈도우에서 열립니다.

이 단원의 항목

  • 코드 윈도우 사용
  • 사용자 형식 윈도우 사용


코드 윈도우 사용

구성요소 편집
구성요소 편집
사용자 형식 윈도우 사용
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 > 구성요소 편집 >
코드 윈도우 사용

코드 윈도우에는 두 개의 드롭다운 리스트, 분할 막대, 여백 지시자 막대, 전체 뷰 및 절차 뷰 아이콘이 있습니다.

코드 윈도우 상단의 두 개의 드롭다운 리스트에 현재 객체와 절차가 표시됩니다. 이 드롭다운 리스트에 있는 객체나 절차를 변경하면 프로젝트를 이동할 수 있습니다.

코드 윈도우의 오른쪽에 있는 분할 막대를 사용하면 윈도우를 수평으로 분할할 수 있습니다. 이 막대를 아래로 끌면 또 다른 윈도우 창이 작성됩니다. 이 기능은 같은 모듈에서 코드의 두 부분을 동시에 볼 수 있도록 해 줍니다. 창을 닫으려면 분할 막대를 다시 원래 위치로 끄십시오.

여백 지시자 막대는 코드 윈도우의 왼쪽 하단에 있습니다. 이 막대는 코드 편집과 디버깅 중에 사용되는 여백 표시자를 표시하는 데 사용됩니다.

전체 뷰 및 절차 뷰 아이콘은 코드 윈도우의 왼쪽 맨 아래 구석에 있으며, 한 번에 하나의 절차만 표시하는 것에서 전체 모듈을 동시에 표시하는 것으로 화면표시를 전환합니다.


사용자 형식 윈도우 사용

코드 윈도우 사용
구성요소 편집
프로젝트 명명
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 > 구성요소 편집 >
사용자 형식 윈도우 사용

사용자 형식 윈도우를 사용하여 프로젝트에서 사용자화 대화상자를 작성할 수 있습니다.

컨트롤을 추가하려면 도구상자에서 원하는 컨트롤을 끌어서 형식 위에 놓으면 됩니다. 컨트롤은 옵션 대화상자의 일반 탭에서 형식의 모눈에 맞게 설정할 수 있습니다. 옵션 대화상자의 일반 탭에서 형식 모눈을 보고 모눈선의 크기를 결정할 수 있습니다. (옵션 대화상자에 대한 자세한 정보는 VBA IDE 옵션 설정을 참조하십시오.)

설계한 각 형식에는 최대화, 최소화 및 닫기 버튼이 자동으로 생깁니다. 이들 버튼은 사용자를 위해 미리 구현되어 있습니다.

코드를 컨트롤에 추가하려면 컨트롤을 형식 위에 놓은 다음 두 번 클릭하면 됩니다. 그러면 해당 컨트롤에 대한 코드 윈도우가 열립니다.


프로젝트 명명

사용자 형식 윈도우 사용
VBA IDE를 사용하여 프로젝트 편집
프로젝트 저장
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 >
프로젝트 명명

프로젝트 이름과 프로젝트가 저장되어 있는 .dvb 파일의 이름은 2개의 서로 다른 값입니다. 프로젝트가 저장되어 있는 .dvb 파일의 이름은 프로젝트를 저장할 때 지정됩니다. 프로젝트 이름은 VBA IDE의 특성 윈도우에서 설정됩니다.

프로젝트 이름과 파일 이름을 설정하지 않은 경우, AutoCAD는 다음과 같은 기본 이름을 자동으로 지정합니다.

프로젝트 이름: ACADProject

파일 이름: Project.dvb

프로젝트 이름 바꾸려면

  1. VBA IDE의 프로젝트 윈도우에서 변경할 프로젝트를 선택합니다.
  2. 특성 윈도우에서 프로젝트의 이름 특성을 편집합니다.

프로젝트의 파일 이름을 변경하려면

  1. VBA IDE의 파일 메뉴에서 저장 옵션을 선택합니다.
  2. 다른 이름으로 저장 대화상자에 프로젝트 파일의 새 이름과 위치를 입력합니다.


프로젝트 저장

프로젝트 명명
VBA IDE를 사용하여 프로젝트 편집
다른 VBA 프로젝트 참조
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 >
프로젝트 저장

AutoCAD에는 VBA 프로젝트를 위한 명시적인 SAVE 명령이 없습니다. 그 대신 SAVE 명령이 VBA IDE의 파일 메뉴와 VBA 관리자에 있습니다. VBA 프로젝트에 대한 변경 사항은 다음과 같은 이벤트가 발생할 때 표준 VBA 프로젝트 저장 대화상자에 접근합니다.

  • VBA IDE에서 SAVE 명령을 선택합니다.
  • VBA 관리자에서 다른 이름으로 저장 옵션을 선택한 경우
  • AutoCAD 세션을 종료하려 하거나, VBA 프로젝트가 저장되지 않은 경우
주프로젝트를 저장하기 전에 기본 파일 이름 project.dvb가 지정됩니다. 프로젝트를 저장할 때는 프로젝트 파일에 반드시 새 이름을 지정해야 합니다. 프로젝트를 기본 파일 이름 project.dvb로 저장하면 더 이상 빈 프로젝트를 새로 작성할 수 없게 됩니다. 새 프로젝트를 작성할 때마다 실제로 project.dvb라고 하는 저장된 프로젝트가 로드될 것입니다.


다른 VBA 프로젝트 참조

프로젝트 저장
VBA IDE를 사용하여 프로젝트 편집
VBA IDE 옵션 설정
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 >
다른 VBA 프로젝트 참조

다른 프로젝트에서 하나의 VBA 프로젝트를 참조하면 개발자가 코드를 보다 쉽게 공유할 수 있습니다. 개발자는 일반적으로 사용하는 매크로의 라이브러리를 작성하여 필요할 때 라이브러리를 참조할 수 있습니다. 그러면 공유 코드가 중앙에 위치하여 지원을 받으면서 수많은 개발자들이 그 코드를 활용할 수 있게 됩니다.

다른 프로젝트 참조가 완료되면 VBA IDE의 프로젝트 윈도우에 새 폴더가 나타납니다. 이 새로운 폴더에는 제목이 References로 지정되고 참조된 프로젝트의 이름이 포함됩니다.

프로젝트를 참조한 다음부터는 해당 프로젝트에서 공용 코드 또는 형식 구성요소를 사용할 수 있습니다.

다른 프로젝트를 참조하는 프로젝트가 AutoCAD로 로드되면 참조된 프로젝트도 자동으로 AutoCAD에 로드됩니다. 참조된 프로젝트는 참조한 모든 프로젝트를 먼저 닫아야 닫을 수 있습니다.

순환 참조는 작성할 수 없습니다. 즉, 첫 번째 프로젝트에 대한 참조가 들어 있는 프로젝트를 참조할 수 없다는 것입니다. 실수로 순환 참조가 작성되면 VBA에서 통지합니다.

프로젝트 참조는 Microsoft VBA의 표준 기능입니다. AutoCAD에는 이 기능을 확장하는 추가 작업이 없습니다. Microsoft VBA 도움말에 프로젝트 참조에 대한 자세한 정보가 있습니다. Microsoft VBA 도움말은 VBA IDE의 도움말 메뉴에서 열 수 있습니다.

주다른 응용프로그램에서 포함된 프로젝트나 VBA 프로젝트를 참조할 수는 없습니다.

다른 VBA 프로젝트 참조하려면

  1. VBA IDE의 프로젝트 윈도우에서 참조를 추가할 프로젝트를 선택합니다.
  2. 도구 메뉴에서 참조 옵션을 선택하여 참조 대화상자를 엽니다.
  3. 참조 대화상자에서 찾아보기 버튼을 눌러 참조 추가 대화상자를 엽니다.
  4. 참조 추가 대화상자에서 참조할 프로젝트 파일을 선택한 다음 열기 버튼을 누릅니다.
  5. 참조 추가 대화상자에서 확인 버튼을 선택하여 참조 추가를 완료합니다.


VBA IDE 옵션 설정

다른 VBA 프로젝트 참조
VBA IDE를 사용하여 프로젝트 편집
편집기
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 >
VBA IDE 옵션 설정

옵션 대화상자를 사용하여 VBA IDE의 특성을 변경할 수 있습니다. 옵션 대화상자를 열려면 도구 메뉴를 사용하여 옵션을 선택하십시오.

옵션 대화상자에는 편집기, 편집기 형식, 일반 및 고정의 4가지 탭이 있습니다.

이 단원의 항목

  • 편집기
  • 편집기 형식
  • 일반
  • 고정시키기


편집기

VBA IDE 옵션 설정
VBA IDE 옵션 설정
편집기 형식
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 > VBA IDE 옵션 설정 >
편집기

편집기 탭은 코드 윈도우와 프로젝트 윈도우 설정값을 지정합니다.

코드 설정값에는 다음이 포함됩니다.

  • 자동 문법 검사
  • 변수 선언이 필요함
  • 자동 리스트 구성원
  • 자동 신속 정보
  • 자동 데이터 팁
  • 자동 들여쓰기
  • Tab 폭

윈도우 설정값에는 다음이 포함됩니다.

  • 끌어놓기 문자 편집
  • 전체 모듈 뷰 크기로 기본값 설정
  • 절차 분리문자 표시


편집기 형식

편집기
VBA IDE 옵션 설정
일반
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 > VBA IDE 옵션 설정 >
편집기 형식

편집기 형식 탭에서 코드의 모양을 지정합니다.

다음 작업을 수행할 수 있습니다.

  • 코드의 색상 변경
  • 문자 리스트 항목 변경
  • 전경 변경
  • 배경 변경
  • 여백 지시자 변경
  • 문자 글꼴 및 크기 변경
  • 여백 지시자 표시 또는 가리기
  • 설정값에 대한 견본 문자 표시 또는 가리기


일반

편집기 형식
VBA IDE 옵션 설정
고정시키기
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 > VBA IDE 옵션 설정 >
일반

일반 탭에서는 현재 VBA 프로젝트의 설정값, 오류 처리 및 컴파일 설정값을 지정합니다.

다음 작업을 수행할 수 있습니다.

  • 형식 모눈에 대한 모눈 설정값 변경
  • 툴팁 표시 또는 가리기
  • 윈도우의 자동 축소 설정
  • 상태 손실에 대한 통지 받기 선택
  • 오류 처리 방법 결정
  • 요구시 컴파일하거나 배경 컴파일을 수행할 프로젝트 설정


고정시키기

일반
VBA IDE 옵션 설정
예비 연습 수행하기
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 > VBA IDE를 사용하여 프로젝트 편집 > VBA IDE 옵션 설정 >
고정시키기

고정 탭에서는 고정시킬 윈도우를 선택할 수 있습니다.


예비 연습 수행하기

고정시키기
VBA 시작하기
자세한 정보
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 >
예비 연습 수행하기

AutoCAD VBA의 기본 프로그래밍을 살펴보았으므로 이제 간단한 “Hello World” 연습문제를 작성해 봅시다. 이 연습에서는 VBA에서 새 AutoCAD 도면을 작성하고 문자의 한 행을 해당 도면에 추가한 다음 도면을 저장하는 모든 작업을 수행합니다.

“Hello World” 문자 객체를 작성하려면

  1. AutoCAD 명령행에서 다음 명령을 입력하여 VBA IDE를 엽니다.

    명령: VBAIDE

  2. VBA IDE에서 보기 메뉴에 있는 코드 옵션을 선택하여 코드 윈도우를 엽니다.
  3. VBA IDE의 삽입 메뉴에 있는 절차 옵션을 선택하여 프로젝트에서 새 절차를 작성합니다.
  4. 절차 정보를 위한 프롬프트가 표시되면 HelloWorld와 같은 이름을 입력합니다. 선택한 유형이 Sub이고 선택한 범위가 Public인지 확인하십시오.
  5. 확인을 선택합니다.
  6. Public Sub HelloWorld()와 End Sub 행 사이에 다음 코드(새 도면을 여는)를 입력합니다.
    ThisDrawing.Application.Documents.Add
  7. 단계 6에서 입력한 코드 바로 뒤에 다음 코드(문자열을 작성하고 삽입 위치를 정의하는 코드)를 입력합니다.
    Dim insPoint(0 To 2) As Double 'Declare insertion point
    Dim textHeight As Double 'Declare text height
    Dim textStr As String 'Declare text string
    Dim textObj As AcadText 'Declare text object
    insPoint(0) = 2 'Set insertion point x coordinate
    insPoint(1) = 4 'Set insertion point y coordinate
    insPoint(2) = 0 'Set insertion point z coordinate
    textHeight = 1 'Set text height to 1.0
    textStr = "Hello World!" 'Set the text string
    'Create the Text object
    Set textObj = ThisDrawing.ModelSpace.AddText _
                            (textStr, insPoint, textHeight)
  8. 단계 7에서 입력한 코드 바로 뒤에 다음 코드(도면을 저장하는 코드)를 입력합니다.
    ThisDrawing.SaveAs("Hello.dwg")
  9. VBA IDE의 실행 메뉴에서 Sub/사용자 정의 폼 실행 옵션을 선택하여 프로그램을 실행합니다.
    프로그램 실행이 종료되면 AutoCAD 응용프로그램을 앞으로 가져옵니다. 도면에 “Hello World!” 문자가표시됩니다. 도면 이름은 Hello.dwg이어야 합니다.


자세한 정보

예비 연습 수행하기
VBA 시작하기
AutoCAD VBA 프로젝트 용어
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 >
자세한 정보

VBA IDE와 VBA 프로그래밍 언어에 대한 자세한 정보는 Microsoft에서 제공한 도움말 파일에 있습니다. Microsoft 도움말 파일에 접근하려면 VBA IDE의 도움말 메뉴에서 Microsoft Visual Basic 도움말을 선택하십시오.


AutoCAD VBA 프로젝트 용어

자세한 정보
VBA 시작하기
AutoCAD VBA 명령
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 >
AutoCAD VBA 프로젝트 용어
전역 프로젝트

.dvb 파일에 저장된 VBA 프로젝트

삽입된 프로젝트

AutoCAD 도면에 저장된 VBA 프로젝트.

일반 문서

VBA 포함된 프로젝트가 포함되지 않은 AutoCAD 도면.

스마트 문서

VBA 포함된 프로젝트가 하나 이상 포함된 AutoCAD 도면.

현재 프로젝트

현재 VBA IDE에서 선택된 프로젝트

ThisDrawing

ThisDrawing은 현재 도면을 표현하는 데 사용되는 VBA 프로그래밍 용어입니다. 전역 프로젝트의 경우, ThisDrawing은 항상 AutoCAD의 활성 문서를 나타냅니다. 포함된 프로젝트의 경우에는 항상 프로젝트가 들어 있는 문서를 나타냅니다.

VBA IDE

VBA 대화식 개발 환경 이 응용프로그램에서는 프로젝트의 코드와 형식을 편집하거나 다른 프로젝트의 코드와 형식을 복사할 수 있습니다. 또한 참조를 다른 응용프로그램 객체 모델로 설정할 수도 있습니다.

VBA 관리자

VBA 관리자를 사용하여 프로젝트를 관리할 수 있습니다. 프로젝트를 작성, 삭제, 포함 또는 추출할 수 있습니다. 열린 도면에 포함된 프로젝트가 있다면 볼 수도 있습니다.

매크로 대화상자

매크로 대화상자를 사용하면 새 매크로를 실행, 삭제 및 작성하고, VBA 프로젝트 옵션에 접근할 수 있습니다.


AutoCAD VBA 명령

AutoCAD VBA 프로젝트 용어
VBA 시작하기
ActiveX Automation 기본 개념
ActiveX 및 VBA 개발자 안내서 > VBA 시작하기 >
AutoCAD VBA 명령
VBAIDE

VBA IDE를 불러옵니다.

VBA IDE에서는 프로그램을 대화식으로 편집, 실행 및 디버그할 수 있습니다. VBA IDE는 AutoCAD가 실행 중인 경우에만 호출되지만 AutoCAD 응용프로그램 창과는 별도로 열고 닫으며 최소화할 수 있습니다.

VBALOAD

VBA 프로젝트를 현재 AutoCAD 세션으로 로드합니다.

VBARUN

매크로 대화상자나 AutoCAD 명령행에서 VBA 매크로를 실행합니다.

VBAUNLOAD

현재 AutoCAD 세션에서 VBA 프로젝트를 언로드합니다.

VBA 프로젝트를 수정한 다음 저장하지 않았다면 사용자에게 프로젝트 저장 대화상자(또는 그와 동등한 명령행)를 사용해서 저장할 것인지 묻습니다.

VBAMAN

프로젝트를 보고, 작성하고, 로드하고, 닫고, 포함시키고, 추출하는 작업을 수행할 수 있는 VBA 관리자를 표시합니다.

VBASTMT

AutoCAD 명령행에서 VBA 문을 실행합니다.


ActiveX Automation 기본 개념

AutoCAD VBA 명령
AutoCAD 객체 모형 이해
ActiveX 및 VBA 개발자 안내서 >
ActiveX Automation 기본 개념

AutoCAD ActiveX Automation을 효과적으로 사용하려면 개발 중인 응용프로그램의 종류와 관련된 AutoCAD 도면요소, 객체 및 기능을 잘 알고 있어야 합니다. 객체의 그래픽 특성과 비그래픽 특성을 많이 알수록 AutoCAD ActiveX Automation을 통해 그 특성들을 보다 쉽게 조작할 수 있습니다.

AutoCAD ActiveX Automation 도움말 파일은 F1 키를 누르면 볼 수 있습니다. 특정 객체, 메서드 또는 특성에 문제가 있으면 VBA IDE에서 객체, 메서드 또는 특성을 강조한 다음 F1 키를 누르십시오.

이 단원의 항목

  • AutoCAD 객체 모형 이해
  • 객체 계층구조에 접근
  • Collection 객체
  • 특성 및 메서드 이해
  • 상위 객체 이해
  • 유형 라이브러리
  • 메서드와 특성에 variant 사용하기
  • 기타 프로그래밍 언어 사용하기


AutoCAD 객체 모형 이해

ActiveX Automation 기본 개념
ActiveX Automation 기본 개념
Application 객체
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 >
AutoCAD 객체 모형 이해

객체는 AutoCAD® ActiveX® 인터페이스의 주요한 구성 블록입니다. 표시된 각 객체는 AutoCAD의 정밀한 부분을 나타냅니다. AutoCAD ActiveX 인터페이스에는 여러 가지 객체 유형이 있습니다. 예를 들어, 다음과 같습니다.

  • 선, 호, 문자 및 치수와 같은 그래픽 객체
  • 선종류 및 치수 스타일과 같은 스타일 설정 객체
  • 도면층, 그룹 및 블록과 같은 조직 구조 객체
  • 뷰 및 뷰포트와 같은 도면 표시 객체
  • 도면 및 AutoCAD 응용프로그램도 객체에 해당됨

객체는 최상위에 Application 객체가 있는 계층구조 방식으로 구조화됩니다. 이 계층구조의 뷰를 객체 모형이라고 합니다. 객체 모형은 그 다음 객체 레벨에 접근하는 객체를 표시합니다.

이 단원의 항목

  • Application 객체
  • Document 객체
  • Collection 객체
  • Graphical 및 Nongraphical 객체
  • Preferences, Plot 및 Utility 객체
  • AutoCAD의 새로운 기능 사용


Application 객체

AutoCAD 객체 모형 이해
AutoCAD 객체 모형 이해
Document 객체
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 > AutoCAD 객체 모형 이해 >
Application 객체

Application 객체는 AutoCAD ActiveX Automation 객체 모형의 Root 객체입니다. Application 객체에서 다른 객체, 특성 또는 객체에 지정된 메서드에 접근할 수 있습니다.

예를 들어 Application 객체에는 Preferences 객체를 반환하는 Preferences 특성이 있습니다. 이 객체를 사용하여 옵션 대화상자의 레지스트리 저장 설정값에 접근할 수 있습니다. (도면 저장 설정값은 나중에 설명할 DatabasePreferences 객체에 있습니다.) Application 객체의 다른 특성을 사용하여 응용프로그램 이름과 버전, AutoCAD 크기, 위치 및 가시성과 같은 응용프로그램 특정 데이터에 접근할 수 있습니다. Application 객체의 메서드는 ADS와 ARX 응용프로그램 나열하기, 로드하기, 언로드하기 및 AutoCAD 종료하기와 같은 응용프로그램 특정 작업을 수행합니다.

또한 Application 객체는 Documents 컬렉션을 통해 AutoCAD 도면에 링크를 제공하고, MenuBar 및 MenuGroup 컬렉션을 통해 AutoCAD 메뉴와 도구막대 및 VBE라고 하는 특성을 통해 VBA IDE를 제공합니다.

Application 객체는 ActiveX 인터페이스의 전역 객체이기도 합니다. 이것은 Application 객체의 모든 메서드와 특성을 전역 이름 공간에서 사용할 수 있다는 것을 의미합니다.


Document 객체

Application 객체
AutoCAD 객체 모형 이해
Collection 객체
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 > AutoCAD 객체 모형 이해 >
Document 객체

실제로는 AutoCAD 도면인 Document 객체는 Documents 컬렉션에 있으며, 모든 그래픽 AutoCAD 객체와 대부분의 비그래픽 AutoCAD 객체에 대한 접근 권한을 제공합니다. 그래픽 객체(선, 원, 호 등)에 대한 접근 권한은 ModelSpace와 PaperSpace 컬렉션에서 제공하며, 비그래픽 객체(도면층, 선종류, 문자 스타일 등)에 대한 접근 권한은 Layers, Linetypes 및 TextStyles과 같은 이름의 컬렉션을 통해 제공됩니다. Document 객체는 Plot과 Utility 객체에 대한 접근 권한도 제공합니다.

도면 특성에 접근하려면, Document 객체의 SummaryInfo 특성을 사용합니다.


Collection 객체

Document 객체
AutoCAD 객체 모형 이해
Graphical 및 Nongraphical 객체
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 > AutoCAD 객체 모형 이해 >
Collection 객체

AutoCAD는 대부분의 객체를 컬렉션으로 분류합니다. 이러한 컬렉션은 여러 형식의 데이터를 포함하지만 유사한 기술을 사용하여 처리할 수 있습니다. 각 컬렉션에는 객체를 컬렉션에 추가하는 메서드가 있습니다. 대부분의 컬렉션은 Add 메서드를 사용하여 객체를 컬렉션에 추가합니다. 그러나 도면 요소 객체는 보통 Add<Entityname>이라는 제목의 메서드를 사용하여 추가합니다. 예를 들어 선을 추가할 때는 AddLine 메서드를 사용합니다.

컬렉션은 공통적으로 다른 몇 가지 메서드와 특성도 가지고 있습니다. Count 특성은 컬렉션에서 객체의 0 기반 계수를 구하는 데 사용할 수 있습니다. Item 메서드는 컬렉션 내에서 객체를 구하는 데 사용할 수 있습니다.


Graphical 및 Nongraphical 객체

Collection 객체
AutoCAD 객체 모형 이해
Preferences, Plot 및 Utility 객체
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 > AutoCAD 객체 모형 이해 >
Graphical 및 Nongraphical 객체

도면 요소라고도 하는 Graphical 객체는 도면을 구성하는 가시적 객체(선, 원, 래스터 이미지 등)입니다. 이러한 객체를 작성하려면 해당되는 Add<Entityname> 메서드를 사용하십시오. 이러한 객체를 수정하거나 조회하려면 객체 자체의 메서드나 특성을 사용하십시오. 각 그래픽 객체에는 응용프로그램에서 복사, 삭제, 이동, 대칭과 같은 대부분의 AutoCAD 편집 명령을 수행할 수 있는 메서드가 있습니다. 또한 이런 객체에는 확장 데이터(xdata)를 설정 및 검색하고 객체의 경계 상자를 강조 표시, 업데이트 및 검색하는 메서드도 있습니다. Graphical 객체에는 Layer, Linetype, Color 및 Handle과 같은 일반 특성이 있습니다. 또한 Center, Radius 및 Area와 같이 객체 유형에 따른 고유의 특성도 있습니다.

Nongraphical 객체는 비가시적(정보용) 객체로, Layers, Linetypes, DimStyles, SelectionSets과 같은 도면의 부분입니다. 이러한 객체를 작성하려면 상위 Collection 객체의 Add 메서드를 사용하십시오. 이러한 객체를 수정하거나 조회하려면 객체 자체의 메서드나 특성을 사용하십시오. Nongraphical 객체마다 목적에 맞는 메서드와 특성이 있으며, 모두 연장된 데이터(xdata) 설정 및 검색, 자동 삭제를 위한 메서드를 가지고 있습니다.


Preferences, Plot 및 Utility 객체

Graphical 및 Nongraphical 객체
AutoCAD 객체 모형 이해
AutoCAD의 새로운 기능 사용
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 > AutoCAD 객체 모형 이해 >
Preferences, Plot 및 Utility 객체

Preferences 객체 아래에는 각각 옵션 대화상자의 탭에 해당하는 객체 세트가 있습니다. 이들 객체는 모두 옵션 대화상자에 있는 모든 레지스트리 저장 설정값에 대한 접근 권한을 제공합니다. 도면 저장 설정값은 DatabasePreferences 객체에 포함되어 있습니다. 또한 옵션(및 옵션 대화상자의 일부가 아닌 시스템 변수)은 SetVariable 및 GetVariable 메서드로 설정하거나 수정할 수 있습니다. 옵션 설정에 대한 자세한 정보는 AutoCAD 기본 설정 지정를 참조하십시오.

Plot 객체는 플롯 대화상자의 설정값에 대한 접근 권한을 제공하며, 다양한 메서드를 사용하여 도면을 플롯하는 기능을 응용프로그램에 제공합니다. 플롯하기에 대한 자세한 정보는 도면 플롯를 참조하십시오.

Utility 객체는 사용자 입력과 변환 함수를 제공합니다. 사용자 입력 함수는 AutoCAD 명령행에 문자열, 정수, 실수, 점 등과 같은 여러 형식의 데이터를 입력하라는 메시지를 표시하는 메서드입니다. 변환 함수는 문자열과 숫자 처리 외에도 점과 각도와 같은 AutoCAD 특정 데이터 형식으로 작동하는 메서드입니다. 사용자 입력 함수에 대한 자세한 정보는 사용자 입력을 위한 프롬프트를 참조하십시오.


AutoCAD의 새로운 기능 사용

Preferences, Plot 및 Utility 객체
AutoCAD 객체 모형 이해
객체 계층구조에 접근
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 > AutoCAD 객체 모형 이해 >
AutoCAD의 새로운 기능 사용

자동화 프로젝트가 이전 AutoCAD 버전에 없는 기능을 사용하는 경우, 프로젝트에서 사용하고 있는 AutoCAD 인터페이스를 명시적으로 선언해야 합니다.

자동화 프로젝트에 특정 버전의 AutoCAD에서 새로 추가된 인터페이스의 명시적 선언이 있는 경우에는 해당 프로젝트를 이전 AutoCAD 버전에서 사용하지 마십시오.


객체 계층구조에 접근

AutoCAD의 새로운 기능 사용
ActiveX Automation 기본 개념
객체 계층구조의 객체 참조
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 >
객체 계층구조에 접근

VBA에서는 객체 계층구조에 접근하기 쉽습니다. 그 이유는 VBA가 현재 AutoCAD 세션과 동일한 프로세스로 실행되므로 응용프로그램에 연결하는 추가 단계가 필요하지 않기 때문입니다.

VBA는 ThisDrawing 객체를 통해 현재의 AutoCAD 세션에 있는 활성 도면에 대한 링크를 제공합니다. ThisDrawing을 사용하면 현재 Document 객체, 이 객체의 모든 메서드 및 특성, 계층구조에 있는 모든 다른 객체에 즉시 접근할 수 있습니다.

ThisDrawing은 전역 프로젝트에서 사용될 때 항상 AutoCAD의 활성 문서를 참조합니다. 포함된 프로젝트에서 사용될 때 ThisDrawing은 항상 프로젝트가 들어 있는 문서를 참조합니다. 예를 들어 전역 프로젝트에 있는 다음 코드 행은 현재 AutoCAD에서 활성 상태인 모든 도면을 저장합니다.

ThisDrawing.Save

이 단원의 항목

  • 객체 계층구조의 객체 참조
  • Application 객체에 접근


객체 계층구조의 객체 참조

객체 계층구조에 접근
객체 계층구조에 접근
Application 객체에 접근
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 > 객체 계층구조에 접근 >
객체 계층구조의 객체 참조

사용자 정의 변수를 통하거나 직접 객체를 참조할 수 있습니다. 객체를 직접 참조하려면 호출 계층구조에 객체를 포함시키십시오. 예를 들어, 다음 문은 모형 공간에 하나의 행을 추가합니다. ThisDrawing으로 시작되는 계층구조가 ModelSpace 객체로 이동한 다음에 AddLine 메서드를 호출하는 것에 주의하십시오.

Dim startPoint(0 To 2) As Double, endPoint(0 To 2) As Double
Dim LineObj as AcadLine
startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0
endPoint(0) = 30: endPoint(1) = 20: endPoint(2) = 0
Set LineObj = ThisDrawing.ModelSpace.AddLine(startPoint,endPoint)

사용자 정의 변수를 통해 객체를 참조하려면 원하는 유형으로 변수를 정의한 다음 적합한 객체로 변수를 설정하십시오. 예를 들어 다음 코드는 AcadModelSpace 형식의 변수(moSpace)를 정의하고, 현재 모형 공간과 동일한 변수를 설정합니다.

Dim moSpace As AcadModelSpace
Set moSpace = ThisDrawing.ModelSpace

다음 문은 사용자 정의 변수를 사용하여 모형 공간에 하나의 행을 추가합니다.

Dim startPoint(0 To 2) As Double, endPoint(0 To 2) As Double
Dim LineObj as AcadLine
startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0
endPoint(0) = 30: endPoint(1) = 20: endPoint(2) = 0
Set LineObj = moSpace.AddLine(startPoint,endPoint)

모형 공간에서 첫 번째 도면요소 검색하기

다음 보기에서는 모형 공간에 있는 첫 번째 도면요소 객체를 반환합니다. 도면 공간 도면요소의 경우에도 이와 유사한 코드로 동일하게 작업할 수 있습니다. 모든 도면 객체가 AcadEntity 객체로 정의될 수 있음을 주의하십시오.

Sub Ch2_FindFirstEntity()
    ' This example returns the first entity in model space
    On Error Resume Next
    Dim entity As AcadEntity
    If ThisDrawing.ModelSpace.count <> 0 Then
        Set entity = ThisDrawing.ModelSpace.Item(0)
        MsgBox entity.ObjectName + _
            “ is the first entity in model space”
    Else
        MsgBox "There are no objects in model space."
    End If
End Sub


Application 객체에 접근

객체 계층구조의 객체 참조
객체 계층구조에 접근
Collection 객체
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 > 객체 계층구조에 접근 >
Application 객체에 접근

Document 객체의 Application 특성은 Applicaion 객체에 대한 접근 권한을 제공합니다. Application 객체는 객체 계층구조에서 Document 객체 위에 있습니다.

ThisDrawing 객체는 Document 객체에 대한 접근 권한을 제공합니다. 예를 들어, 다음 코드 행은 응용프로그램을 업데이트합니다.

ThisDrawing.Application.Update


Collection 객체

Application 객체에 접근
ActiveX Automation 기본 개념
컬렉션에 접근하기
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 >
Collection 객체

Collection 객체는 유사한 객체의 모든 복제(이 복제에 대한 상위 객체인)를 포함하는 미리 정의된 객체입니다. 다음은 컬렉션 객체 리스트입니다.

컬렉션

현재 AutoCAD 세션에 열려 있는 모든 문서를 포함합니다.

ModelSpace 컬렉션

모형 공간에 있는 모든 그래픽 객체(도면요소)를 포함합니다.

PaperSpace 컬렉션

활성 도면 공간 배치에 있는 모든 그래픽 객체(도면요소)를 포함합니다.

Block 객체

특정 블록 정의 내의 모든 도면요소를 포함합니다.

Blocks 컬렉션

도면에 있는 모든 블록을 포함합니다.

Dictionaries 컬렉션

도면에 있는 모든 사전을 포함합니다.

DimStyles 컬렉션

도면에 있는 모든 치수 스타일을 포함합니다.

FileDependencies 컬렉션

파일 종속 리스트에 있는 모든 항목을 포함합니다.

Groups 컬렉션

도면에 있는 모든 그룹을 포함합니다.

Hyperlinks 컬렉션

주어진 도면요소에 대한 모든 하이퍼링크를 포함합니다.

Layers 컬렉션

도면에 있는 모든 도면층을 포함합니다.

Layouts 컬렉션

도면에 있는 모든 배치를 포함합니다.

Linetypes 컬렉션

도면에 있는 모든 선종류를 포함합니다.

MenuBar 컬렉션

현재 AutoCAD에 표시된 모든 메뉴를 포함합니다.

MenuGroups 컬렉션

현재 AutoCAD에 로드된 모든 메뉴와 도구막대를 포함합니다.

PlotConfigurations 컬렉션

도면에 있는 명명된 플롯 설정값을 포함합니다.

RegisteredApplications 컬렉션

도면에 있는 등록된 모든 응용프로그램을 포함합니다.

SelectionSets 컬렉션

도면에 있는 모든 선택 세트를 포함합니다.

TextStyles 컬렉션

도면에 있는 모든 문자 스타일을 포함합니다.

UCSs 컬렉션

도면에 모든 UCS(사용자 좌표계)가 있습니다.

Views 컬렉션

도면에 있는 모든 뷰를 포함합니다.

Viewports 컬렉션

도면에 있는 모든 뷰포트를 포함합니다.

이 단원의 항목

  • 컬렉션에 접근하기
  • Collection 객체에 새 구성원 추가
  • Collection 객체를 통해 반복
  • Collection 객체의 구성원 삭제


컬렉션에 접근하기

Collection 객체
Collection 객체
Collection 객체에 새 구성원 추가
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 > Collection 객체 >
컬렉션에 접근하기

대부분의 Collection 객체는 Document 객체를 통해 접근할 수 있습니다. Document 객체에는 각 Collection 객체에 대한 특성이 들어 있습니다. 예를 들어 다음 코드는 변수를 정의하여 현재 도면의 Layers 컬렉션으로 설정합니다.

Dim layerCollection as AcadLayers
Set layerCollection = ThisDrawing.Layers

Document 컬렉션, MenuBar 컬렉션 및 MenuGroups 컬렉션은 Application 객체를 통해 접근합니다. Application 객체 안에는 이들 각 컬렉션에 대한 특성이 들어 있습니다. 예를 들어 다음 코드는 변수를 정의하여 응용프로그램의 MenuGroups 컬렉션으로 설정합니다.

Dim MenuGroupsCollection as AcadMenuGroups
Set MenuGroupsCollection = ThisDrawing.Application.MenuGroups


Collection 객체에 새 구성원 추가

컬렉션에 접근하기
Collection 객체
Collection 객체를 통해 반복
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 > Collection 객체 >
Collection 객체에 새 구성원 추가

컬렉션에 새 구성원을 추가하려면 Add 메서드를 사용하십시오. 예를 들어, 다음 코드는 새 도면층을 작성하여 Layers 컬렉션에 추가합니다.

Dim newLayer as AcadLayer
Set newLayer = ThisDrawing.Layers.Add("MyNewLayer")


Collection 객체를 통해 반복

Collection 객체에 새 구성원 추가
Collection 객체
Collection 객체의 구성원 삭제
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 > Collection 객체 >
Collection 객체를 통해 반복

Collection 객체의 특정 구성원을 선택하려면 Item 메서드를 사용하십시오. Item 메서드에서는 컬렉션내의 항목 위치를 지정하는 색인 번호 또는 항목의 이름을 표현하는 문자열인 식별자가 필요합니다.

Item 메서드는 컬렉션의 기본 메서드입니다. 컬렉션을 참조할 때 메서드 이름을 지정하지 않으면 Item으로 간주됩니다. 다음 문은 동등합니다.

ThisDrawing.Layers.Item("ABC")
ThisDrawing.Layers("ABC")
주For Each 메커니즘을 사용해서 컬렉션을 통해 동시에 반복하는 동안 객체에 도면 요소 편집 메서드(Copy, Array, Mirror 등)를 사용하지 마십시오. 컬렉션에서 객체를 편집하기 전에 반복을 종료하거나 임시 배열을 작성하여 컬렉션과 동등하게 설정하십시오. 그런 다음, 복사된 배열을 통해 반복하고 편집을 수행할 수 있습니다.

Layers 컬렉션 반복

다음 보기에서는 컬렉션을 통해 반복하고 컬렉션에 있는 모든 도면층의 이름을 표시합니다.

Sub Ch2_IterateLayer()
    ' Iterate through the collection
    On Error Resume Next
    Dim I As Integer
    Dim msg As String
    msg = ""
    For I = 0 To ThisDrawing.Layers.Count - 1
        msg = msg + ThisDrawing.Layers.Item(I).Name + vbCrLf
    Next
    MsgBox msg
End Sub
MyLayer로 명명된 도면층 찾기
다음 보기는 MyLayer라는 도면층을 참조하며 도면층이 없으면 메시지를 표시합니다.
Sub Ch2_FindLayerABC()
    ' Use the Item method to find a layer named MyLayer
    On Error Resume Next
    Dim ABClayer As AcadLayer
    Set ABCLayer = ThisDrawing.Layers("MyLayer")
    If Err <> 0 Then
        MsgBox "The layer 'MyLayer' does not exist."
    End If
End Sub


Collection 객체의 구성원 삭제

Collection 객체를 통해 반복
Collection 객체
특성 및 메서드 이해
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 > Collection 객체 >
Collection 객체의 구성원 삭제

특정 치수 스타일을 삭제하려면 구성원 객체에서 발견된 Delete 메서드를 사용하십시오. 예를 들어 다음 코드는 도면층 ABC를 삭제합니다.

Dim ABCLayer as AcadLayer
Set ABCLayer = ThisDrawing.Layers.Item("ABC")
ABCLayer.Delete

객체가 삭제되면 나중에 프로그램에서 그 객체에 다시 접근할 수 없습니다.


특성 및 메서드 이해

Collection 객체의 구성원 삭제
ActiveX Automation 기본 개념
상위 객체 이해
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 >
특성 및 메서드 이해

각 객체에는 연관된 특성과 메서드가 있습니다. 특성은 개별 객체의 모양을 설명하며, 메서드는 개별 객체에서 수행할 수 있는 작업입니다. 객체가 작성되면 특성과 메서드를 통해 객체를 조회하고 편집할 수 있습니다.

예를 들어 Circle 객체에는 Center 특성이 있습니다. 이 특성은 해당 원의 중심에 3D 표준 좌표계의 좌표를 표시합니다. 원의 중심을 변경할 경우, 이 특성을 새 좌표로 설정하면 됩니다. Circle 객체에는 Offset이라고 하는 메서드도 있습니다. 이 메서드는 기존 원으로부터 지정된 간격띄우기 거리에 새로운 객체를 작성합니다. Circle 객체의 모든 특성과 메서드에 대한 리스트를 보려면 AutoCAD ActiveX 및 VBA 참조서의 Circle 객체를 참조하십시오.


상위 객체 이해

특성 및 메서드 이해
ActiveX Automation 기본 개념
유형 라이브러리
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 >
상위 객체 이해

각 객체에는 영구적으로 연결된 상위 객체가 있습니다. 모든 객체는 Root 객체라고 하는 하나의 상위 객체로부터 시작됩니다. 최상위부터 하위 객체까지의 링크를 따라서 인터페이스의 모든 객체에 접근할 수 있습니다. 객체에는 다시 Root 객체에 직접 연결되는 Application이라는 특성도 있습니다.

AutoCAD 인터페이스의 Root 객체는 AutoCAD 응용프로그램입니다.


유형 라이브러리

상위 객체 이해
ActiveX Automation 기본 개념
메서드와 특성에 variant 사용하기
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 >
유형 라이브러리

자동화 객체에 의해 표시되는 객체, 특성 및 메서드는 유형 라이브러리에 있습니다. 유형 라이브러리는 하나 이상의 객체 유형을 설명하는 파일이거나 파일의 부분입니다.

유형 라이브러리는 객체를 저장하지 않고 정보를 저장합니다. 응용프로그램과 브라우저는 유형 라이브러리에 접근하여 각 인터페이스 구성원의 객체, 이름 및 주소가 지원하는 인터페이스와 같은 객체의 특성을 결정할 수 있습니다.

응용프로그램에서 표시하는 자동화 객체를 사용하기 전에 먼저 유형 라이브러리를 참조해야 합니다. 참조는 VBA IDE에서 자동으로 설정됩니다. 다른 대화식 개발 환경에서는 c:\program files\common files\autodesk shared에 있는 AutoCAD 유형 라이브러리 파일 acax17enu.tlb에 대한 참조를 작성해야 합니다. VBA IDE 또는 다른 환경의 시트 세트 관리자 객체에 접근하려면, c:\program files\common files\autodesk shared에 있는 AcSmComponents17 1.0 유형 라이브러리 파일 AcSmComponents17.tlb에 대한 참조를 작성해야 합니다.

응용프로그램의 유형 라이브러리를 참조하지 않고도 응용프로그램의 객체를 사용할 수 있습니다. 그러나 다음과 같은 이유 때문에 유형 라이브러리 참조를 추가하는 것이 좋습니다.

  • 전체적으로 접근 가능한 기능에는 별다른 제약 없이 직접 접근할 수 있습니다.
  • 기능, 특성 및 메서드 호출은 컴파일 중에 검사되므로 실행 속도가 훨씬 빨라집니다.
  • 라이브러리에 정의된 유형의 변수를 선언할 수 있어서 실시간 안정성과 판독성이 향상됩니다.


메서드와 특성에 variant 사용하기

유형 라이브러리
ActiveX Automation 기본 개념
Variant의 정의
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 >
메서드와 특성에 variant 사용하기

ActiveX Automation은 variant를 사용하여 데이터의 배열을 전달합니다. 처음 배우는 사용자에게는 혼란스럽게 보이지만 기본 사항을 알면 어렵지 않습니다. 그 외에도 AutoCAD ActiveX Automation은 데이터 형식을 변환하도록 도와주는 유틸리티를 제공합니다.

이 단원의 항목

  • Variant의 정의
  • 배열 데이터에 variant 사용하기
  • Variant로 배열 변환
  • Variant 배열 해석


Variant의 정의

메서드와 특성에 variant 사용하기
메서드와 특성에 variant 사용하기
배열 데이터에 variant 사용하기
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 > 메서드와 특성에 variant 사용하기 >
Variant의 정의

variant는 특수 데이터 형식으로, 고정 길이 문자열 데이터와 사용자 정의 형식을 제외한 모든 형식의 데이터를 포함합니다. 특수 값 Empty, Error, Nothing 및 NULL도 variant에 포함될 수 있습니다. VarType 또는 TypeName VBA 함수를 사용하여 variant의 데이터를 처리하는 방법을 결정할 수 있습니다.

대부분의 데이터 유형 대신 variant 데이터 유형을 사용하면 보다 유연한 방법으로 데이터에 대한 작업을 수행할 수 있습니다.


배열 데이터에 variant 사용하기

Variant의 정의
메서드와 특성에 variant 사용하기
Variant로 배열 변환
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 > 메서드와 특성에 variant 사용하기 >
배열 데이터에 variant 사용하기

Variant는 AutoCAD ActiveX Automation 안팎의 배열 데이터를 전달하는 데 사용됩니다. 이는 배열이 AutoCAD ActiveX Automation 메서드와 특성에 의해 승인되는 variant이어야 한다는 것을 의미합니다. 그 외에 AutoCAD ActiveX Automation의 배열 데이터 출력도 variant로 처리되어야 합니다.

주AutoCAD에서 VBA 입력 배열은 자동으로 variant로 변환됩니다. 이는 VBA에서 사용할 때 variant 배열을 ActiveX Automation 메서드와 특성에 대한 입력으로 제공하지 않아도 된다는 의미입니다. 그러나 출력 배열이 모두 variant 형식으로 되어 있기 때문에 적절히 처리해야 합니다.


Variant로 배열 변환

배열 데이터에 variant 사용하기
메서드와 특성에 variant 사용하기
Variant 배열 해석
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 > 메서드와 특성에 variant 사용하기 >
Variant로 배열 변환

AutoCAD ActiveX Automation은 데이터의 배열을 variant로 변환하는 유틸리티 메서드를 제공합니다. 이 메서드는 CreateTypedArray 메서드로서 정수, 부동 숫자, 배정도 등의 배열이 포함된 variant를 작성합니다. 결과로 나오는 variant를, 숫자의 배열을 variant로 수락하는 AutoCAD 메서드나 특성으로 전달할 수 있습니다.

CreateTypedArray 메서드는 배열에 있는 값의 형식과 변환할 데이터의 배열을 입력으로 사용합니다. 값의 배열을 variant로서 반환합니다.

CreateTypedArray 메서드를 사용하여 스플라인 작성

다음 코드는 CreateTypedArray를 사용하여 스플라인의 맞춤점에 대한 좌표와 스플라인의 시작 접선 및 끝 접선의 세 가지 배열을 변환합니다. 그런 다음 variant를 AddSpline 메서드로 전달하여 스플라인을 작성합니다.

Sub Ch2_CreateSplineUsingTypedArray()
    ' This example creates a spline object in model space
    ' using the CreateTypedArray method.
    Dim splineObj As AcadSpline
    Dim startTan As Variant
    Dim endTan As Variant
    Dim fitPoints As Variant
    Dim utilObj As Object ' late bind the Utility object
    Set utilObj = ThisDrawing.Utility
    ' Define the Spline object
    utilObj.CreateTypedArray _
                startTan, vbDouble, 0.5, 0.5, 0
    utilObj.CreateTypedArray _
                endTan, vbDouble, 0.5, 0.5, 0
    utilObj.CreateTypedArray _
                fitPoints, vbDouble, 0, 0, 0, 5, 5, 0, 10, 0, 0
    Set splineObj = ThisDrawing.ModelSpace.AddSpline _
                (fitPoints, startTan, endTan)
    ' Zoom in on the newly created spline
    ZoomAll
End Sub


Variant 배열 해석

Variant로 배열 변환
메서드와 특성에 variant 사용하기
기타 프로그래밍 언어 사용하기
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 > 메서드와 특성에 variant 사용하기 >
Variant 배열 해석

AutoCAD ActiveX Automation에서 다시 전달된 배열 정보는 variant로 다시 전달됩니다. 배열의 데이터 형식을 알고 있으면 배열로서의 variant에 쉽게 접근할 수 있습니다. variant에 있는 데이터 유형을 모르는 경우 VBA 함수 VarType 또는 Typename을 사용하십시오. 이들 함수는 variant의 데이터 형식을 반환합니다. 배열을 통해 반복할 경우에는 VBA For Each 문을 사용할 수 있습니다.

두 점 사이의 거리 계산

다음 코드는 사용자가 입력한 두 점 사이의 거리를 계산합니다. 이 예제에서는 모든 좌표가 배정도이기 때문에 데이터 형식을 알 수 있습니다. 3D 좌표는 배정도의 3 요소 배열이고 2D 좌표는 배정도의 2 요소 배열입니다.

Sub Ch2_CalculateDistance()
    Dim point1 As Variant
    Dim point2 As Variant
    ' Get the points from the user
    point1 = ThisDrawing.Utility.GetPoint _
                (, vbCrLf & "First point: ")
    point2 = ThisDrawing.Utility.GetPoint _
                (point1, vbCrLf & "Second point: ")
    ' Calculate the distance between point1 and point2
    Dim x As Double, y As Double, z As Double
    Dim dist As Double
    x = point1(0) - point2(0)
    y = point1(1) - point2(1)
    z = point1(2) - point2(2)
    dist = Sqr((Sqr((x ^ 2) + (y ^ 2)) ^ 2) + (z ^ 2))
    'Display the resulting distance
    MsgBox "The distance between the points is: " _
                  & dist, , "Calculate Distance"
End Sub


기타 프로그래밍 언어 사용하기

Variant 배열 해석
ActiveX Automation 기본 개념
VBA 코드를 VB 코드로 변환
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 >
기타 프로그래밍 언어 사용하기

이 설명서는 VBA 프로그래밍 언어용으로 제작되었습니다. 프로그래밍 예제와 견본 응용프로그램은 VBA에서 작성되었습니다. 코드를 다른 프로그래밍 환경에서 사용하려면 선택한 환경에 맞게 업데이트해야 합니다.

자신의 개발 환경에 맞는 문서를 사용하여 예제 코드를 변환하십시오.

주AutoCAD 2008에 접근하기 위한 COM 응용프로그램의 레지스트리 키는 AutoCAD.Application.17입니다.

이 단원의 항목

  • VBA 코드를 VB 코드로 변환


VBA 코드를 VB 코드로 변환

기타 프로그래밍 언어 사용하기
기타 프로그래밍 언어 사용하기
AutoCAD 환경 조정
ActiveX 및 VBA 개발자 안내서 > ActiveX Automation 기본 개념 > 기타 프로그래밍 언어 사용하기 >
VBA 코드를 VB 코드로 변환

VB에서 사용할 코드 예제를 업데이트하려면 먼저 AutoCAD 유형 라이브러리를 참조해야 합니다. VB에서 수행하려면 프로젝트 메뉴에서 참조 옵션을 선택하여 참조 대화상자를 실행합니다. 참조 대화상자에서 AutoCAD 유형 라이브러리를 선택한 다음 확인을 클릭합니다.

그런 다음, 코드 예제에서 ThisDrawing에 대한 모든 참조를 활성 문서를 참조하는 사용자 지정 변수로 대치합니다. 이를 위해 AutoCAD 응용프로그램(acadApp)과 현재 문서(acadDoc)의 변수를 정의해야 합니다. 그런 다음, 응용프로그램 변수를 현재 AutoCAD 응용프로그램으로 설정합니다.

AutoCAD가 실행되면 VB GetObject 함수는 AutoCAD 버전 번호를 지정했을 때 AutoCAD Application 객체를 찾습니다. AutoCAD가 실행되지 않으면 오류(이 예제에서)가 발생한 후 지워집니다. 그러면 CreateObject 함수가 AutoCAD Application 객체 작성을 시도합니다. 성공하면 AutoCAD가 시작되고, 실패하면 오류를 설명하는 메시지 상자가 표시됩니다.

AutoCAD의 여러 세션이 실행되는 경우, GetObject 함수는 Windows Running Object Table에서 AutoCAD의 첫 번째 복제를 반환합니다. GetObject가 반환한 세션 확인에 대한 자세한 정보는 ROT(Running Object Table)와 GetObject 함수에 대한 Mircosoft VBA 문서를 참조하십시오.

AutoCAD 도면 윈도우를 표시하려면 AutoCAD 응용프로그램의 Visible 특성을 TRUE로 설정해야 합니다.

GetObject가 AutoCAD의 새로운 복제를 작성하는 경우(즉, GetObject를 호출했을 때 AutoCAD가 실행되고 있지 않을 때), Visible을 TRUE로 설정하지 않으면 AutoCAD 응용프로그램이 보이지 않게 되며 Windows 작업막대에도 AutoCAD가 나타나지 않습니다.

주버전 종속 ProgID CreateObject 또는 GetObject 함수가 버전 독립 ProgID를 사용한다면, 버전 종속 ProgID 사용하도록 함수를 변경하여야 합니다. 예를 들어, CreateObject를 사용하면 CreateObject ("AutoCAD.Application")을 CreateObject ("AutoCAD.Application.17")로 변경해야 합니다. 또한, GetInterfaceObject 메서드에서 버전 독립 ProgID를 사용하려면, 버전 종속 ProgID를 사용하도록 메서드를 변경하여야 합니다.

Visual Basic 6에서 AutoCAD로 연결

다음 코드 예제는 Err의 Clear와 Description 특성을 사용합니다. 사용자의 코딩 환경이 이러한 특성을 지원하지 않으면 예제를 적절히 수정해야 합니다.

Sub Ch2_ConnectToAcad()
    Dim acadApp As AcadApplication
    On Error Resume Next
    Set acadApp = GetObject(, "AutoCAD.Application.17")
    If Err Then
        Err.Clear
        Set acadApp = CreateObject("AutoCAD.Application.17")
        If Err Then
            MsgBox Err.Description
            Exit Sub
        End If
    End If
    MsgBox "Now running " + acadApp.Name + _
           " version " + acadApp.Version
End Sub
그런 다음, 문서 변수를 AutoCAD 응용프로그램의 Document 객체로 설정합니다. Document 객체는 Application 객체의 ActiveDocument 특성에 의해 반환됩니다.
Dim acadDoc as AcadDocument
Set acadDoc = acadApp.ActiveDocument
여기서부터 acadDoc 변수를 사용하여 현재 AutoCAD 도면을 참조합니다.
VBA와 VB를 비교하는 코드 예제
다음 코드는 VBA와 VB에서 하나의 행을 작성하는 예제입니다.
VBA를 사용하여 행 작성하기
Sub Ch2_AddLineVBA()
    ' This example adds a line
    ' in model space
    Dim lineObj As AcadLine
    Dim startPoint(0 To 2) As Double
    Dim endPoint(0 To 2) As Double
    ' Define the start and end
    ' points for the line
    startPoint(0) = 1
    startPoint(1) = 1
    startPoint(2) = 0
    endPoint(0) = 5
    endPoint(1) = 5
    endPoint(2) = 0
    ' Create the line in model space
    Set lineObj = ThisDrawing. _
        ModelSpace.AddLine _
        (startPoint, endPoint)
    ' Zoom in on the newly created line
    ZoomAll
End Sub
VB를 사용하여 행 작성하기
Sub Ch2_AddLineVB()
    On Error Resume Next
    ' Connect to the AutoCAD application
    Dim acadApp As AcadApplication
    Set acadApp = GetObject _
                  (, "AutoCAD.Application.17")
    If Err Then
        Err.Clear
        Set acadApp = CreateObject _
                  ("AutoCAD.Application.17")
        If Err Then
            MsgBox Err.Description
            Exit Sub
        End If
    End If
    ' Connect to the AutoCAD drawing
    Dim acadDoc As AcadDocument
    Set acadDoc = acadApp.ActiveDocument
    ' Establish the endpoints of the line
    Dim lineObj As AcadLine
    Dim startPoint(0 To 2) As Double
    Dim endPoint(0 To 2) As Double
    startPoint(0) = 1
    startPoint(1) = 1
    startPoint(2) = 0
    endPoint(0) = 5
    endPoint(1) = 5
    endPoint(2) = 0
    ' Create a Line object in model space
    Set lineObj = acadDoc.ModelSpace.AddLine _
                         (startPoint, endPoint)
    ZoomAll
    acadApp.visible = True
End Sub


AutoCAD 환경 조정

VBA 코드를 VB 코드로 변환
도면 열기, 저장 및 닫기
ActiveX 및 VBA 개발자 안내서 >
AutoCAD 환경 조정

이 장에서는 AutoCAD에서 응용프로그램을 개발하는 기본 사항을 설명합니다. 즉 AutoCAD 환경에서 조정하는 방법과 작업을 효과적으로 하는 방법을 설명합니다.

이 단원의 항목

  • 도면 열기, 저장 및 닫기
  • AutoCAD 기본 설정 지정
  • 응용프로그램 윈도우 조정
  • 도면 윈도우 조정
  • 활성 객체 재설정
  • 시스템 변수 설정 및 반환
  • 정밀 도면 작성
  • 사용자 입력을 위한 프롬프트
  • AutoCAD 명령행에 접근
  • 문서를 열지 않은 상태로 작업
  • 다른 파일 형식 가져오기
  • 다른 파일 형식으로 내보내기


도면 열기, 저장 및 닫기

AutoCAD 환경 조정
AutoCAD 환경 조정
AutoCAD 기본 설정 지정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 >
도면 열기, 저장 및 닫기

Documents 컬렉션 및 Document 객체는 AutoCAD® 파일 함수에 대한 접근 권한을 제공합니다.

새 도면을 작성하거나 기존 도면을 열려면 Documents 컬렉션에 대한 메서드를 사용하십시오. Add 메서드는 새 도면을 작성하여 Documents 컬렉션에 추가합니다. Open 메서드는 기존 도면을 엽니다. 또한 Documents 컬렉션에는 AutoCAD 세션에 열려 있는 도면을 모두 닫는 Close 메서드도 있습니다.

Save 또는 SaveAs 메서드를 사용하여 도면을 저장하십시오. 종종 활성 도면에 저장되지 않은 변경 사항이 있는지 검사할 수 있습니다. 검사는 AutoCAD 세션을 종료하거나 새 도면을 시작하기 전에 하는 것이 좋습니다. Saved 특성을 사용하면 현재 도면에 아직 저장되지 않은 변경 사항이 없도록 할 수 있습니다.

도면을 가져오고 내보내려면 Document 객체에서 Import와 Export 메서드를 사용하십시오.

기존 도면을 엽니다.

이 예제에서는 Open 메서드를 사용하여 기존 도면을 엽니다. VBA Dir 함수는 파일을 열기 전에 먼저 파일이 있는지 검사하는 데 사용됩니다. 시스템에 기존 AutoCAD 도면 파일을 지정하려면 도면 파일 이름이나 경로를 변경해야 합니다.

Sub Ch3_OpenDrawing()
    Dim dwgName As String
    dwgName = "c:\campus.dwg"
    If Dir(dwgName) <> "" Then
        ThisDrawing.Application.Documents.Open dwgName
    Else
        MsgBox "File " & dwgName & " does not exist."
    End If
End Sub

새 도면 작성

이 예제에서는 Add 메서드를 사용하여 기본 템플릿에 따라 새 도면을 작성합니다.

Sub Ch3_NewDrawing()
    Dim docObj As AcadDocument
    Set docObj = ThisDrawing.Application.Documents.Add
End Sub

활성 도면을 저장합니다.

이 예제에서는 활성 도면을 현재 이름으로 저장한 다음 새로운 이름으로 다시 저장합니다.

Sub Ch3_SaveActiveDrawing()
    ' Save the active drawing under the current name
    ThisDrawing.Save
    ' Save the active drawing under a new name
    ThisDrawing.SaveAs "MyDrawing.dwg"
End Sub
도면에 저장되지 않은 변경 사항이 있는지 검사
이 예제에서는 저장되지 않은 변경 사항이 있는지 검사하고 사용자가 도면을 저장할 수 있는지 확인합니다(저장할 수 없으면 끝으로 이동함). 저장할 수 있으면 Save 메서드를 사용하여 다음에 표시된 것처럼 현재 도면을 저장합니다.
Sub Ch3_TestIfSaved()
    If Not (ThisDrawing.Saved) Then
        If MsgBox("Do you wish to save this drawing?", _
                   vbYesNo) = vbYes Then
            ThisDrawing.Save
        End If
    End If
End Sub


AutoCAD 기본 설정 지정

도면 열기, 저장 및 닫기
AutoCAD 환경 조정
데이터베이스 기본 설정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 >
AutoCAD 기본 설정 지정

옵션과 관련하여 9개의 객체가 있고 각 객체는 옵션 대화상자의 탭으로 표시됩니다. 이들 객체는 옵션 대화상자의 모든 레지스트리 저장 옵션에 대한 접근 권한을 제공합니다. 대부분 AutoCAD 설정은 이 객체에 있는 특성을 사용하여 사용자화할 수 있습니다. 이들 객체는 다음과 같습니다.

  • PreferencesDisplay
  • PreferencesDrafting
  • PreferencesFiles
  • PreferencesOpenSave
  • PreferencesOutput
  • PreferencesProfiles
  • PreferencesSelection
  • PreferencesSystem
  • PreferencesUser

이들 객체는 Preferences 객체를 통해 접근할 수 있습니다. Preferences 객체에 접근하려면 Application 객체의 Preference 특성을 사용하십시오.

Dim acadPref As AcadPreferences
Set acadPref = ThisDrawing.Application.Preferences

특정 Preferences 객체에는 Display, Drafting, Files, OpenSave, Output, Profile, Selection, System 및 User 특성을 사용하여 접근할 수 있습니다.

십자선을 전체 화면으로 설정

Sub Ch2_PrefsSetCursor()
    ' This example sets the crosshairs of the AutoCAD drawing cursor
    ' to full screen
    ' Access the Preferences object
    Dim acadPref As AcadPreferences
    Set acadPref = ThisDrawing.Application.Preferences
    ' Use the CursorSize property to set the size of the crosshairs
    acadPref.Display.CursorSize = 100
End Sub
화면 메뉴 및 스크롤 막대 표시
Sub Ch2_PrefsSetDisplay()
    ' This example enables the screen menu and disables the scroll
    ' bars with the DisplayScreenMenu and DisplayScrollBars
    ' properties
    ' Access the Preferences object
    Dim acadPref As AcadPreferences
    Set acadPref = ThisDrawing.Application.Preferences
    ' Display the screen menu and disable scroll bars
    acadPref.Display.DisplayScreenMenu = True
    acadPref.Display.DisplayScrollBars = False
End Sub
이 단원의 항목
  • 데이터베이스 기본 설정


데이터베이스 기본 설정

AutoCAD 기본 설정 지정
AutoCAD 기본 설정 지정
응용프로그램 윈도우 조정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > AutoCAD 기본 설정 지정 >
데이터베이스 기본 설정

9개의 Preferences 객체 외에도 DatabasePreferences 객체 안에는 도면에 저장된 모든 옵션이 들어 있습니다. 이러한 별도의 객체는 먼저 AutoCAD 응용프로그램(ObjectDBX 응용프로그램)을 시작하지 않아도 AutoCAD 도면에 접근하는 응용프로그램에서 도면 저장 옵션을 사용할 수 있도록 제공된 것입니다.

DatabasePreferences 객체는 Document 객체 아래에 있습니다.


응용프로그램 윈도우 조정

데이터베이스 기본 설정
AutoCAD 환경 조정
도면 윈도우 조정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 >
응용프로그램 윈도우 조정

응용프로그램 윈도우를 조정하는 기능을 사용하면 개발자는 효과적이고 지능적인 응용프로그램을 유연하게 작성할 수 있습니다. Excel과 같은 다른 응용프로그램에서 코드가 작업을 수행하는 동안 응용프로그램이 AutoCAD 윈도우를 최소화하는 경우가 있을 것입니다. 또한 가끔씩 사용자 입력 표시와 같은 작업을 수행하기 전에 AutoCAD 윈도우의 상태를 확인할 수 있습니다.

Application 객체에 있는 메서드와 특성을 사용하면 응용프로그램 윈도우의 위치, 크기 및 가시성을 변경할 수 있습니다. 또한 WindowState 특성을 사용하여 응용프로그램 윈도우의 현재 상태를 최소화, 최대화 및 검사할 수도 있습니다.

응용프로그램 윈도우의 위치 지정 및 크기 조정

이 예제에서는 WindowTop, WindowLeft, Width 및 Height 특성들을 사용하여 화면의 왼쪽 위 구석에 AutoCAD 응용프로그램 윈도우를 배치하고, 그 폭과 높이를 각각 400픽셀로 지정합니다.

Sub Ch3_PositionApplicationWindow()
    ThisDrawing.Application.WindowTop = 0
    ThisDrawing.Application.WindowLeft = 0
    ThisDrawing.Application.width = 400
    ThisDrawing.Application.height = 400
End Sub

응용프로그램 윈도우 최소화

Sub Ch3_MaximizeApplicationWindow()
    ThisDrawing.Application.WindowState = acMax
End Sub

응용프로그램 윈도우 최소화

Sub Ch3_MinimizeApplicationWindow()
    ThisDrawing.Application.WindowState = acMin
End Sub

응용프로그램 윈도우의 현재 상태 찾기

이 예제에서는 응용프로그램 윈도우의 상태를 조회하고 상태를 사용자의 메시지 상자에 표시합니다.

Sub Ch3_CurrentWindowState()
    Dim CurrWindowState As Integer
    Dim msg As String
    CurrWindowState = ThisDrawing.Application.WindowState
    msg = Choose(CurrWindowState, "normal", _
                 "minimized", "maximized")
    MsgBox "The application window is " + msg
End Sub

응용프로그램 윈도우 숨기기

다음 코드는 Visible 특성을 사용하여 AutoCAD 응용프로그램이 최종 사용자에게 보이지 않도록 합니다.

Sub Ch3_HideWindowState()
    ThisDrawing.Application.Visible = False
End Sub


도면 윈도우 조정

응용프로그램 윈도우 조정
AutoCAD 환경 조정
문서 윈도우의 위치 및 크기 조정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 >
도면 윈도우 조정

AutoCAD 응용프로그램 윈도우와 같이, 모든 문서 윈도우를 최대화 또는 최소화하고, 위치나 크기를 조절하거나 윈도우의 상태를 점검할 수 있습니다. 또한 뷰, 뷰포트 및 줌 메서드를 사용하여 윈도우에 도면이 표시되는 방법을 변경할 수도 있습니다.

AutoCAD ActiveX는 도면의 뷰를 표시하는 다양한 방법을 제공합니다. 변경에 따른 전체적인 효과를 추적하면서 다른 도면 영역으로 신속하게 이동할 수 있도록 도면의 화면표시를 조정할 수 있습니다. 배율 변경을 위해 줌하거나, 도면 영역에서 뷰의 위치를 변경하기 위해 초점이동할 수 있습니다. 또한 뷰를 저장해 두었다가 복원해 특정 세부 내용을 참조하거나 플롯할 수 있으며, 화면을 바둑판식 뷰포트로 분할하여 여러 개의 뷰를 동시에 표시할 수도 있습니다.

이 단원의 항목

  • 문서 윈도우의 위치 및 크기 조정
  • 줌 사용
  • 명명된 뷰 사용
  • 바둑판식 뷰포트 사용
  • 문서 윈도우에서 업데이트


문서 윈도우의 위치 및 크기 조정

도면 윈도우 조정
도면 윈도우 조정
줌 사용
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 도면 윈도우 조정 >
문서 윈도우의 위치 및 크기 조정

문서 윈도우의 위치와 크기를 수정하려면 Document 객체를 사용하십시오. 문서 윈도우는 WindowState 특성을 사용하여 최소화하거나 최대화할 수 있으며, WindowState 특성을 사용하여 문서 윈도우의 현재 상태를 찾아 볼 수 있습니다.

문서 윈도우 위치 지정

이 예제에서는 Width와 Height 특성을 사용하여 활성 문서 윈도우의 폭과 높이를 각각 400픽셀로 설정합니다.

Sub Ch3_SizeDocumentWindow()
ThisDrawing.Width = 400
ThisDrawing.Height = 400
End Sub

활성 문서 윈도우 최대화

Sub Ch3_MaximizeDocumentWindow()
ThisDrawing.WindowState = acMax
End Sub

활성 문서 윈도우 최소화

Sub Ch3_MinimizeDocumentWindow()
ThisDrawing.WindowState = acMin
End Sub

활성 문서 윈도우의 현재 상태 찾기

Sub Ch3_CurrentWindowState()
    Dim CurrWindowState As Integer
    Dim msg As String
    CurrWindowState = ThisDrawing.WindowState
    msg = Choose(CurrWindowState, "normal", _
                 "minimized", "maximized")
    MsgBox "The document window is " + msg
End Sub


줌 사용

문서 윈도우의 위치 및 크기 조정
도면 윈도우 조정
줌 윈도우 정의
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 도면 윈도우 조정 >
줌 사용

뷰는 도면의 특정 배율, 위치 및 방향입니다. 뷰를 변경하는 가장 일반적인 방법은 그래픽 영역에 표시된 이미지의 크기를 확대시키거나 축소시키는 AutoCAD의 여러 줌 옵션 중 하나를 사용하는 것입니다. AutoCAD에서 줌하기에 대한 자세한 정보는 사용자 안내서의 “뷰 확대(줌)”를 참고하십시오.

이 단원의 항목

  • 줌 윈도우 정의
  • 뷰 축척
  • 객체 중심 맞추기
  • 도면 한계와 범위 표시


줌 윈도우 정의

줌 사용
줌 사용
뷰 축척
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 도면 윈도우 조정 > 줌 사용 >
줌 윈도우 정의

정의하려는 줌 윈도우의 구석을 지정함으로써 영역을 신속하게 줌 확대할 수 있습니다. 경계를 지정하여 영역을 줌 확대하려면 ZoomWindow 또는 ZoomPickWindow 메서드를 사용하십시오. ZoomWindow 메서드에서는 줌 윈도우를 프로그래밍 방식으로 나타내는 두 점을 정의할 수 있습니다. ZoomPickWindow 메서드에서는 사용자가 두 점을 선택해야 합니다. 이렇게 선택된 두 점은 줌 윈도우가 됩니다.

두 개의 점으로 정의된 윈도우에 맞게 활성 도면 줌하기

Sub Ch3_ZoomWindow()
    ' ZoomWindow
    MsgBox "Perform a ZoomWindow with:" & vbCrLf & _
           "1.3, 7.8, 0" & vbCrLf & _
           "13.7, -2.6, 0", , "ZoomWindow"
    Dim point1(0 To 2) As Double
    Dim point2(0 To 2) As Double
    point1(0) = 1.3: point1(1) = 7.8: point1(2) = 0
    point2(0) = 13.7: point2(1) = -2.6: point2(2) = 0
    ThisDrawing.Application.ZoomWindow point1, point2
    ' ZoomPickWindow
    MsgBox "Perform a ZoomPickWindow", , "ZoomPickWindow"
    ThisDrawing.Application.ZoomPickWindow
End Sub


뷰 축척

줌 윈도우 정의
줌 사용
객체 중심 맞추기
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 도면 윈도우 조정 > 줌 사용 >
뷰 축척

이미지 배율을 정확한 축척으로 증가시키거나 감소시켜야 하는 경우, 다음의 3가지 방법으로 줌 축척을 지정할 수 있습니다.

  • 도면 한계를 기준
  • 현재 뷰를 기준으로
  • 도면 공간 단위를 기준

뷰를 축척하려면 ZoomScaled 메서드를 사용하십시오. 이 메서드에서는 축척과 축척 유형이라는 2개의 매개변수를 취합니다. 축척은 간단히 말하면 숫자입니다. AutoCAD에서 숫자를 해석하는 방법은 선택한 축척 유형에 따라 다릅니다.

축척의 형식은 축척 값이 도면 한계, 현재 뷰 또는 도면 공간 단위 중 어느것을 기준으로 작성되는지를 결정합니다. 도면 한계를 기준으로 축척하려면 상수 acZoomScaledAbsolute를 사용하십시오. 현재 뷰에 상대적으로 뷰를 축적하려면 상수 acZoomScaledRelative를 사용하십시오. 도면 공간 단위에 상대적으로 축적하려면 상수 acZoomScaledRelativePSpace를 사용하십시오.

지정된 축척을 사용하여 활성 도면 줌하기

Sub Ch3_ZoomScaled()
    MsgBox "Perform a ZoomScaled using:" & vbCrLf & _
           "Scale Type: acZoomScaledRelative" & vbCrLf & _
           "Scale Factor: 2", , "ZoomScaled"
    Dim scalefactor As Double
    Dim scaletype As Integer
    scalefactor = 2
    scaletype = acZoomScaledRelative
    ThisDrawing.Application.ZoomScaled scalefactor, scaletype
End Sub


객체 중심 맞추기

뷰 축척
줌 사용
도면 한계와 범위 표시
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 도면 윈도우 조정 > 줌 사용 >
객체 중심 맞추기

지정된 중심점으로 활성 도면을 줌 확대합니다. 사용자는 도면 내의 특정한 점이 그래픽 영역의 중심에 놓이도록 이동시킬 수 있습니다. ZoomCenter 메서드는 객체의 크기를 재조정하고 그 객체를 뷰포트의 중심에 놓이도록 할 때 유용합니다. ZoomCenter를 사용하여 현재 뷰에 상대적인 배율을 입력해 축적 크기를 지정할 수 있습니다.

지정된 중심에 맞게 활성 도면 줌하기

다음 예제에서는 ZoomCenter를 사용하여 뷰를 같은 크기 및 두 배의 크기로 표시하는 효과를 보여줍니다.

Sub Ch3_ZoomCenter()
    MsgBox "Perform a ZoomCenter using:" & vbCrLf & _
           "Center 3, 3, 0" & vbCrLf & _
           "Magnification: 10", , "ZoomCenter"
    Dim Center(0 To 2) As Double
    Dim magnification As Double
    Center(0) = 3: Center(1) = 3: Center(2) = 0
    magnification = 10
    ThisDrawing.Application.ZoomCenter Center, magnification
End Sub


도면 한계와 범위 표시

객체 중심 맞추기
줌 사용
명명된 뷰 사용
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 도면 윈도우 조정 > 줌 사용 >
도면 한계와 범위 표시

도면 경계나 도면의 객체 범위에 따라 뷰를 표시하려면 ZoomAll, ZoomExtents 또는 ZoomPrevious 메서드를 사용하십시오.

ZoomAll은 전체 도면을 표시합니다. 객체 범위가 한계를 벗어나면 ZoomAll은 객체 범위를 표시합니다. 객체가 한계 안에 그려지면 ZoomAll은 한계를 화면에 표시합니다.

ZoomExtents 현재 뷰가 아니라 활성 뷰포트의 범위를 기준으로 줌을 계산합니다. 보통 활성 뷰포트는 완전히 가시적이므로 결과가 명확하고 직관적입니다. 그러나 도면 공간 뷰포트에서 작업하는 동안 모형 공간에 Zoom 메서드를 사용할 때, 도면 공간 뷰포트 경계를 벗어나 줌을 수행하면 줌 영역의 일부는 보이지 않을 수도 있습니다.

ZoomExtents는 뷰를 변경하여 현재 도면에 대한 도면요소 범위를 둘러쌉니다. 어떤 경우에는(ZoomAll과 ZoomExtents 경우 모두) 재생성이 실행될 수 있습니다. 동결되거나 꺼져 있는 도면층에는 재생성이 발생하지 않습니다. 도면에 객체가 하나도 없는 경우, ZoomExtents는 도면 한계를 화면표시합니다.

3D 뷰에서는, ZoomAll과 ZoomExtents가 같은 효과를 나타냅니다. 무한 구성선(X선)이나 광선은 옵션에 아무런 영향을 주지 않습니다.

ZoomPrevious는 현재 뷰포트를 이전 범위로 줌합니다.

줌 작동 방법에 대한 설명은 사용자 안내서의 “뷰 확대(줌)”를 참고하십시오.

모든 내용과 도면 범위에 맞게 활성 도면 줌하기

Sub Ch3_ZoomAll()
' ZoomAll
    MsgBox "Perform a ZoomAll", , "ZoomAll"
    ThisDrawing.Application.ZoomAll
' ZoomExtents
    MsgBox "Perform a ZoomExtents", , "ZoomExtents"
    ThisDrawing.Application.ZoomExtents
End Sub


명명된 뷰 사용

도면 한계와 범위 표시
도면 윈도우 조정
바둑판식 뷰포트 사용
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 도면 윈도우 조정 >
명명된 뷰 사용

사용자는 재사용하고자 하는 뷰를 명명하고 저장할 수 있습니다. 뷰가 더 이상 필요하지 않으면 삭제할 수 있습니다.

뷰를 새로 작성하려면, Add 메서드를 사용하여 새 뷰를 Views 컬렉션에 추가하십시오. 도면을 저장할 때 뷰의 관측 위치와 축척이 저장됩니다.

뷰는 작성될 때 이름이 지정됩니다. 뷰의 이름은 최대 255자가 될 수 있으며 글자, 숫자, 특수 문자인 달러 기호($), 하이픈(-) 및 밑줄(_)을 포함할 수 있습니다.

명명된 뷰를 삭제하려면 Delete 메서드를 사용하십시오. View 객체에 대한 Delete 메서드는 View 객체의 상위 항목이 아닌 View 객체 자체에 있습니다.

View 객체 추가

다음 예제에서는 View 객체(viewObj)를 추가합니다.

Sub Ch3_AddView()
    ' Add a named view to the views collection
    Dim viewObj As AcadView
    Set viewObj = ThisDrawing.Views.Add("View1")
End Sub

View 객체 삭제

다음 예제에서는 View 객체(viewObj)를 삭제합니다.

Sub Ch3_DeleteView()
    Dim viewObj As AcadView
    Set viewObj = ThisDrawing.Views("View1")
   ' Delete the view
    viewObj.Delete
End Sub

Views 컬렉션에서 명명된 뷰 삭제

이 예제에서는 Views 컬렉션에서 명명된 뷰를 삭제합니다.

Sub Ch3_DeleteViewFromCollection()
   ThisDrawing.Views("View1").Delete
End Sub


바둑판식 뷰포트 사용

명명된 뷰 사용
도면 윈도우 조정
활성 뷰포트 분할
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 도면 윈도우 조정 >
바둑판식 뷰포트 사용

AutoCAD는 일반적으로 전체 그래픽 영역을 차지하는 단일 뷰포트를 사용하여 새 도면을 시작합니다. 도면 영역을 분할하여 여러 개의 뷰포트를 동시에 표시할 수 있습니다. 예를 들어, 전체 뷰와 상세 뷰를 모두 보이게 하면 전체 도면에서 상세한 변경 사항의 효과를 볼 수 있습니다. 타일식 뷰포트에서는 다음과 같은 작업을 수행할 수 있습니다.

  • 줌, 스냅, 모눈 및 UCS 아이콘 모드 설정, 각 뷰포트에서 명명된 뷰 복원
  • 명령을 실행하는 동안 한 뷰포트에서 다른 뷰포트로 그리기
  • 재사용할 수 있도록 뷰포트 구성 명명

바둑판식 뷰포트를 다양한 구성으로 표시할 수 있습니다. 뷰포트를 표시하는 방법은 보려는 뷰의 개수와 크기에 따라 다릅니다.

뷰포트에 대한 자세한 정보와 설명은 사용자 안내서의 “모형 공간 뷰포트 설정”을 참고하십시오.

이 단원의 항목

  • 활성 뷰포트 분할
  • 다른 바둑판식 뷰포트를 현재 뷰포트로 작성


활성 뷰포트 분할

바둑판식 뷰포트 사용
바둑판식 뷰포트 사용
다른 바둑판식 뷰포트를 현재 뷰포트로 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 도면 윈도우 조정 > 바둑판식 뷰포트 사용 >
활성 뷰포트 분할

활성 뷰포트를 분할하려면 Split 메서드를 사용하십시오. 이 메서드에는 하나의 매개변수, 뷰포트를 분할할 구성 유형이 필요합니다. 윈도우 구성을 지정하려면 이전에 표시된 기본 구성에 해당하는 다음 상수 중 하나를 사용합니다. acViewport2Horizontal, acViewport2Vertical, acViewport3Left, acViewport3Right, acViewport3Horizontal, acViewport3Vertical, acViewport3Above, acViewport3Below또는 acViewport4

뷰포트 구성 변경에 대한 자세한 정보는 사용자 안내서의 “모형 공간 뷰포트 설정”을 참고하십시오.

두 개의 수평 윈도우로 뷰포트 분할

다음 예제에서는 새 뷰포트를 작성한 다음 뷰포트를 두 개의 수평 윈도우로 분할합니다.

Sub Ch3_SplitAViewport()
    ' Create a new viewport
    Dim vportObj As AcadViewport
    Set vportObj = ThisDrawing.Viewports.Add("TEST_VIEWPORT")
    ' Split vportObj into 2 horizontal windows
    vportObj.Split acViewport2Horizontal
    ' Now set vportObj to be the active viewport
    ThisDrawing.ActiveViewport = vportObj
End Sub


다른 바둑판식 뷰포트를 현재 뷰포트로 작성

활성 뷰포트 분할
바둑판식 뷰포트 사용
문서 윈도우에서 업데이트
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 도면 윈도우 조정 > 바둑판식 뷰포트 사용 >
다른 바둑판식 뷰포트를 현재 뷰포트로 작성

작업 시 현재 뷰포트에서 점을 입력하거나 객체를 선택합니다. 뷰포트를 현재 뷰포트로 만들려면 ActiveViewport 특성을 사용하십시오.

특정 뷰포트를 찾기 위해 기존의 뷰포트에 대해 반복할 수 있습니다. 이를 수행하려면 먼저 Name 특성을 사용하여 원하는 뷰포트를 포함하는 뷰포트 구성의 이름을 식별하십시오. 또한 뷰포트 구성이 분할된 경우 LowerLeftCorner와 UpperRightCorner 특성을 사용하여 구성에서 각각의 개별 뷰포트를 식별할 수도 있습니다.

LowerLeftCorner와 UpperRightCorner 특성은 화면에서 뷰포트의 그래픽 배치를 표시합니다. 이 특성은 아래와 같이 정의됩니다(예제에서는 4방향 분할을 사용함).

예제는 다음과 같습니다.

  • Viewport 1-LowerLeftCorner = (0, 0), UpperRightCorner = (.5, .5)
  • Viewport 2-LowerLeftCorner = (.5, .5), UpperRightCorner = (1, 1)
  • Viewport 3-LowerLeftCorner = (0, 0), UpperRightCorner = (.5, .5)
  • Viewport 4-LowerLeftCorner = (0, 0), UpperRightCorner = (.5, .5)

뷰포트 분할 뒤 윈도우를 통해 반복

이 예제는 뷰포트를 4개의 윈도우로 분할합니다. 그런 다음, 도면의 모든 뷰포트에 분할을 반복하고 뷰포트 이름과 각 뷰포트의 왼쪽 아래 및 오른쪽 위 구석을 표시합니다.

Sub Ch3_IteratingViewportWindows()
    ' Create a new viewport and make it active
    Dim vportObj As AcadViewport
    Set vportObj = ThisDrawing.Viewports.Add("TEST_VIEWPORT")
    ThisDrawing.ActiveViewport = vportObj
    ' Split vport into 4 windows
    vportObj.Split acViewport4
    ' Iterate through the viewports,
    ' highlighting each viewport and displaying
    ' the upper right and lower left corners
    ' for each.
    Dim vport As AcadViewport
    Dim LLCorner As Variant
    Dim URCorner As Variant
    For Each vport In ThisDrawing.Viewports
        ThisDrawing.ActiveViewport = vport
        LLCorner = vport.LowerLeftCorner
        URCorner = vport.UpperRightCorner
        MsgBox "Viewport: " & vport.Name & " is now active." & _
                vbCrLf & "Lower left corner: " & _
                LLCorner(0) & ", " & LLCorner(1) & vbCrLf & _
                "Upper right corner: " & _
                URCorner(0) & ", " & URCorner(1)
    Next vport
End Sub


문서 윈도우에서 업데이트

다른 바둑판식 뷰포트를 현재 뷰포트로 작성
도면 윈도우 조정
활성 객체 재설정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 도면 윈도우 조정 >
문서 윈도우에서 업데이트

AutoCAD ActiveX Automation을 통해 수행하는 대부분의 작업은 AutoCAD 도면에 표시된 내용을 수정합니다. 그러나 이러한 작업이 모두 도면의 화면표시를 즉시 업데이트하는 것은 아닙니다. 한 가지 작업이 끝날 때마다 화면표시가 업데이트되기를 기다리지 않고 도면을 변경할 수 있도록 설계되어 있기 때문입니다. 대신, 작업을 함께 묶고, 종료될 때 한번 호출하여 화면표시를 업데이트할 수 있습니다.

화면표시를 업데이트할 메서드는 Update와 Regen입니다.

Update 메서드는 단일 객체의 화면표시만 업데이트합니다. Regen 메서드는 전체 도면을 재생성하고 전체 객체에 대한 화면 좌표와 뷰 해상도를 다시 계산합니다. 또한 최적의 화면표시와 객체 선택 성능을 위해 도면 데이터베이스를 다시 색인화합니다.

단일 객체의 화면표시 업데이트

이 예제는 원을 작성합니다. 그런 다음, 원이 AutoCAD에서 보이도록 Update 메서드를 사용하여 원을 업데이트합니다.

Sub Ch3_UpdateDisplay()
    Dim circleObj As AcadCircle
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 1: center(1) = 1: center(2) = 0
    radius = 1
    ' Create the circle
    Set circleObj = ThisDrawing.ModelSpace.AddCircle(center, radius)
    ' Update the circle
    circleObj.Update
End Sub


활성 객체 재설정

문서 윈도우에서 업데이트
AutoCAD 환경 조정
시스템 변수 설정 및 반환
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 >
활성 객체 재설정

활성 도면층, 활성 선종류와 같은 대부분의 활성 객체에 대한 변경 사항은 즉시 표시됩니다. 그러나 재설정해야 변경 사항이 나타나는 활성 객체도 여러 개 있는데, 활성 문자 스타일, 활성 사용자 좌표계(UCS) 및 활성 뷰포트가 해당됩니다. 이러한 객체를 변경하면 객체를 재설정해야 하며, 변경 사항이 나타나도록 하려면 Regen 메서드를 호출해야 합니다.

이 객체를 재설정하려면 업데이트된 객체를 사용하여 ActiveTextStyle, ActiveUCS 또는 ActiveViewport 특성을 설정하기만 하면 됩니다.

활성 뷰포트 재설정

다음 예제에서는 활성 뷰포트에서 모눈의 화면표시를 변경한 다음, 뷰포트를 활성 뷰포트로서 재설정하여 변경된 내용을 표시합니다.

Sub Ch3_ResetActiveViewport()
    ' Toggle the setting of the grid display
    ' for the active viewport
    ThisDrawing.ActiveViewport.GridOn = _
              Not (ThisDrawing.ActiveViewport.GridOn)
    ' Reset the active viewport
    ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport
End Sub


시스템 변수 설정 및 반환

활성 객체 재설정
AutoCAD 환경 조정
정밀 도면 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 >
시스템 변수 설정 및 반환

Document 객체는 AutoCAD 시스템 변수를 설정 및 검색하는 SetVariable과 GetVariable 메서드를 제공합니다. 예를 들어, MAXSORT 시스템 변수에 정수를 지정하려면 다음 코드를 사용하십시오.

ThisDrawing.SetVariable "MAXSORT", 100


정밀 도면 작성

시스템 변수 설정 및 반환
AutoCAD 환경 조정
스냅 및 모눈 정렬 조정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 >
정밀 도면 작성

AutoCAD를 사용하면 복잡한 계산 작업을 수행하지 않고도 정밀한 형상을 가진 도면을 작성할 수 있습니다. 종종 좌표를 몰라도 정밀한 점을 지정할 수 있는 경우도 있습니다. 도면 화면에서 나오지 않고도 도면상에서 계산을 하고 다양한 유형의 상태 정보를 표시할 수 있습니다.

현재 AutoCAD ActiveX Automation에서는 다음과 같은 AutoCAD 기능을 위한 메서드가 제공되지 않습니다.

  • 객체 스냅 설정
  • 객체에 측정된 간격 지정하기 또는 객체를 여러 세그먼트로 나누기

이 단원의 항목

  • 스냅 및 모눈 정렬 조정
  • 직교 모드 사용
  • 구성선 그리기
  • 점과 값 계산
  • 면적 계산


스냅 및 모눈 정렬 조정

정밀 도면 작성
정밀 도면 작성
직교 모드 사용
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 정밀 도면 작성 >
스냅 및 모눈 정렬 조정

사용자는 모눈을 시각적인 지침으로 사용할 수 있고 커서의 이동을 제한하기 위해 스냅을 켤 수 있습니다. 간격을 설정할 뿐만 아니라 스냅과 모눈 정렬을 조정할 수도 있습니다. 정렬을 회전할 수 있으며 등각투영 도면에서 사용하도록 설정할 수도 있습니다.

특정 정렬이나 각도에 따라 그릴 경우 스냅 각도를 회전할 수 있습니다. 스냅 각도 회전의 중심점은 스냅 기준점입니다. 해치 패턴을 정렬할 경우, 보통 0, 0으로 설정되는 이 점을 변경할 수 있습니다.

스냅 각도를 회전하려면 SnapRotationAngle 특성을 사용하십시오. 스냅 각도 회전의 기준점을 변경하려면 SnapBasePoint 특성을 사용하십시오.

주두 특성 모두 Update 메서드를 호출하여 AutoCAD 표시를 업데이트해야 합니다.

스냅 및 모눈의 사용 및 설정에 대한 자세한 정보는 사용자 안내서의 “모눈 및 모눈 스냅 조정“을 참고하십시오.

스냅 기준점 및 회전 각도 변경

이 예제에서는 스냅 기준점을 (1,1)로 변경하고 스냅 회전 각도를 30도로 변경합니다. 변경 사항이 표시되도록 모눈이 켜집니다.

Sub Ch3_ChangeSnapBasePoint()
    ' Turn on the grid for the active viewport
    ThisDrawing.ActiveViewport.GridOn = True
    ' Change the snap base point to 1, 1
    Dim newBasePoint(0 To 1) As Double
    newBasePoint(0) = 1: newBasePoint(1) = 1
    ThisDrawing.ActiveViewport.SnapBasePoint = newBasePoint
    ' Change the snap rotation angle to 30 degrees (0.575 radians)
    Dim rotationAngle As Double
    rotationAngle = 0.575
    ThisDrawing.ActiveViewport.SnapRotationAngle = rotationAngle
    ' reset the viewport
    ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport
End Sub


직교 모드 사용

스냅 및 모눈 정렬 조정
정밀 도면 작성
구성선 그리기
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 정밀 도면 작성 >
직교 모드 사용

선을 그리거나 객체를 이동시킬 때, 커서를 수평 또는 수직축으로 제한하기 위해 직교 모드를 사용할 수 있습니다. (직교 정렬은 현재 스냅 각도나 UCS에 따라 다릅니다.) 직교 모드는 두 번째 점을 지정해야 하는 작업에서 작동됩니다. 직교는 수직이나 수평 정렬의 설정 뿐만 아니라 평행을 수행하거나 일반적인 간격띄우기 작성에도 사용할 수 있습니다.

AutoCAD에서 직교 제한을 허용하면 더 빨리 그릴 수 있습니다. 예를 들어, 도면 작성을 시작하기 전에 직교 모드를 켜놓으면 일련의 수직선들을 쉽게 작성할 수 있습니다. 선들이 수평축과 수직축으로 제한되어 있기 때문에, 선이 수직이라는 것을 알면 더 빨리 그릴 수 있습니다.

커서를 이동시킬 때, 커서에 어느 축이 가장 가까운지에 따라, 변위를 정의하는 러버밴드 선은 수평축 또는 수직축을 따라 나타납니다. AutoCAD는 명령행에서 좌표를 입력할 때나 객체 스냅을 지정할 때거나 투시도에서 직교 모드를 무시합니다.

직교 모드를 켜거나 끄려면 OrthoOn 특성을 사용하십시오. 이 특성에서는 부울을 입력해야 합니다. 직교 모드를 켜려면 TRUE로 설정하고, 직교 모드를 끄려면 FALSE로 설정하십시오. 예를 들어 다음 구문은 활성 뷰포트에서 직교 모드를 켭니다.

ThisDrawing.ActiveViewport.OrthoOn = True


구성선 그리기

직교 모드 사용
정밀 도면 작성
구성 X선 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 정밀 도면 작성 >
구성선 그리기

한쪽 또는 양 방향으로 무한하게 연장되는 구성선을 작성할 수 있습니다. 한 방향으로 연장되는 구성선을 광선이라고 합니다. 양방향으로 연장되는 선은 X선이라고 합니다. 이러한 구성선은 다른 객체를 작성할 때 참조로 사용될 수 있습니다. 예를 들어, 구성선은 삼각형의 중심을 찾거나 같은 항목의 여러 뷰를 준비할 때 또는 객체 스냅에 사용할 수 있는 임시 교차점을 작성할 때 사용할 수 있습니다.

이 단원의 항목

  • 구성 X선 작성
  • 구성 X선 조회
  • 광선 작성
  • 광선 조회


구성 X선 작성

구성선 그리기
구성선 그리기
구성 X선 조회
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 정밀 도면 작성 > 구성선 그리기 >
구성 X선 작성

구성 X선은 3D 공간의 임의의 위치에 배치할 수 있고 양쪽 방향으로 무한정 연장될 수 있습니다. X선을 작성하려면 AddXLine 메서드를 사용하십시오. 이 메서드는 두 점 메서드에 의해 선을 지정하고, 사용자는 두 점을 입력하거나 선택하여 방향을 정의합니다. 첫 번째 점, 즉 루트는 구성선의 중간점으로 간주됩니다.

구성선 추가

다음 예제 코드는 두 점 (5, 0, 0) 및 (1, 1, 0)을 사용하여 XLine 객체를 작성합니다.

Sub Ch3_AddXLine()
    Dim xlineObj As AcadXline
    Dim basePoint(0 To 2) As Double
    Dim directionVec(0 To 2) As Double
    ' Define the xline
    basePoint(0) = 2#: basePoint(1) = 2#: basePoint(2) = 0#
    directionVec(0) = 1#: directionVec(1) = 1#: directionVec(2) = 0#
    ' Create the xline in model space
    Set xlineObj = ThisDrawing.ModelSpace.AddXLine _
                   (basePoint, directionVec)
    ThisDrawing.Application.ZoomAll
End Sub


구성 X선 조회

구성 X선 작성
구성선 그리기
광선 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 정밀 도면 작성 > 구성선 그리기 >
구성 X선 조회

작성한 다음에는 BasePoint 특성을 사용하여 구성 X선의 첫 번째 점을 조회할 수 있습니다. X선을 작성하는 데 사용된 두 번째 점은 객체와 함께 저장되지 않습니다. 그 대신 DirectionVector 특성을 사용하여 X선에 대한 방향 벡터를 구하십시오.

구성선 조회

이 예제에서는 작성된 X선의 기준점 및 방향 벡터를 찾습니다.구성선 추가

Dim BPoint As Variant
Dim Vector As Variant
BPoint = xlineObj.basePoint
Vector = xlineObj.DirectionVector


광선 작성

구성 X선 조회
구성선 그리기
광선 조회
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 정밀 도면 작성 > 구성선 그리기 >
광선 작성

광선은 사용자가 지정한 점에서 시작하여 무한히 연장되는 3D 공간상의 선입니다. 두 방향으로 연장되는 X선 구성선과 달리, 광선은 한 방향으로만 연장됩니다. 따라서 광선은 수많은 구성선으로 인한 시각적 혼란을 줄이는 데 도움이 됩니다.

구성선과 마찬가지로 광선도 도면 범위를 표시하는 명령들에서 무시됩니다.


광선 조회

광선 작성
구성선 그리기
점과 값 계산
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 정밀 도면 작성 > 구성선 그리기 >
광선 조회

광선을 작성한 다음에는 BasePoint 특성을 사용하여 광선의 첫 번째 점을 조회할 수 있습니다. 광선을 작성하는 데 사용된 두 번째 점은 객체와 함께 저장되지 않습니다. 대신, DirectionVector 특성을 사용하여 광선의 방향 벡터를 구하십시오.

Ray 객체 추가, 조회 및 편집

다음 예제 코드는 두 점 (5, 0, 0)과 (1, 1, 0)을 사용하여 Ray 객체를 작성합니다. 그런 다음에는 현재 기준점과 방향 벡터를 조회하고 그 결과를 메시지 상자에 표시합니다. 방향 벡터가 변경되고 기준점과 새 방향 벡터가 조회 및 표시됩니다.

Sub Ch3_EditRay()
    Dim rayObj As AcadRay
    Dim basePoint(0 To 2) As Double
    Dim secondPoint(0 To 2) As Double
    ' Define the ray
    basePoint(0) = 3#: basePoint(1) = 3#: basePoint(2) = 0#
    secondPoint(0) = 4#: secondPoint(1) = 4#: secondPoint(2) = 0#
    ' Creates a Ray object in model space
    Set rayObj = ThisDrawing.ModelSpace.AddRay _
                 (basePoint, secondPoint)
    ThisDrawing.Application.ZoomAll
    ' Find the current status of the Ray
    MsgBox "The base point of the ray is: " & _
            rayObj.basePoint(0) & ", " & _
            rayObj.basePoint(1) & ", " & _
            rayObj.basePoint(2) & vbCrLf & _
            "The directional vector for the ray is: " & _
           rayObj.DirectionVector(0) & ", " & _
           rayObj.DirectionVector(1) & ", " & _
           rayObj.DirectionVector(2), , "Edit Ray"
    ' Change the directional vector for the ray
    Dim newVector(0 To 2) As Double
    newVector(0) = -1
    newVector(1) = 1
    newVector(2) = 0
    rayObj.DirectionVector = newVector
    ThisDrawing.Regen False
    MsgBox "The base point of the ray is: " & _
            rayObj.basePoint(0) & ", " & _
            rayObj.basePoint(1) & ", " & _
            rayObj.basePoint(2) & vbCrLf & _
            "The directional vector for the ray is: " & _
           rayObj.DirectionVector(0) & ", " & _
           rayObj.DirectionVector(1) & ", " & _
           rayObj.DirectionVector(2), , "Edit Ray"
End Sub


점과 값 계산

광선 조회
정밀 도면 작성
면적 계산
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 정밀 도면 작성 >
점과 값 계산

Utility 객체에서 제공한 메서드를 사용하면 수학적 문제를 신속히 해결하거나 도면에서 점을 찾을 수 있습니다. Utility 객체에서 메서드를 사용하여 다음과 같은 작업을 수행할 수 있습니다.

  • AngleFromXAxis 메서드를 사용하여 X 축과 선 사이의 각도 구하기
  • AngleToReal 메서드를 사용하여 각도를 문자열에서 실수(배정도) 값으로 변환
  • AngleToString 메서드를 사용하여 각도를 실수(배정도) 값에서 문자열로 변환
  • DistanceToReal 메서드를 사용하여 거리를 문자열에서 실수(배정도) 값으로 변환
  • CreateTypedArray 메서드를 사용하여 정수, 부동 소수점 값, 배정도 등의 배열을 포함하는 가변형 작성하기
  • PolarPoint 메서드를 사용하여 지정된 각도에 있는 점과 주어진 점 사이의 거리 구하기
  • TranslateCoordinates 메서드를 사용하여 한 좌표 시스템의 점을 다른 좌표 시스템으로 해석
  • GetDistance 메서드를 사용하여 사용자가 입력한 두 점 사이의 거리 구하기

GetDistance 메서드를 사용하여 두 점 사이의 거리 구하기

이 예제에서는 GetDistance 메서드를 사용하여 점 좌표를 구하고 MsgBox 함수로 계산된 거리를 표시합니다.

Sub Ch3_GetDistanceBetweenTwoPoints()
    Dim returnDist As Double
    ' Return the value entered by user. A prompt is provided.
    returnDist = ThisDrawing.Utility.GetDistance _
                 (, "Pick two points.")
    MsgBox "The distance between the two points is: " & returnDist
End Sub


면적 계산

점과 값 계산
정밀 도면 작성
정의된 영역 계산
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 정밀 도면 작성 >
면적 계산

사용자로부터 입력된 점으로 정의된 면적을 계산합니다. Area 특성을 사용하면 호, 원, 타원, 단순 폴리선, 폴리선, 영역, 닫힌 평면형 스플라인의 면적을 구할 수 있습니다.

둘 이상의 객체를 합한 면적을 계산할 경우, 일련의 영역에서 Boolean 메서드를 추가하거나 사용하여 현행 합계를 유지함으로써 원하는 면적을 나타내는 단일 영역을 구할 수 있습니다. 이 단일 영역에서 Area 특성을 사용하여 면적을 구할 수 있습니다.

계산된 면적은 조회한 객체의 유형에 따라 다릅니다. 각 객체 유형의 면적을 계산하는 방법에 대한 설명은 사용자 안내서의 “면적 정보 구하기”를 참고하십시오.

이 단원의 항목

  • 정의된 영역 계산


정의된 영역 계산

면적 계산
면적 계산
사용자 입력을 위한 프롬프트
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 정밀 도면 작성 > 면적 계산 >
정의된 영역 계산

사용자로부터 입력된 점으로 정의된 면적을 계산합니다. 사용자로부터 입력된 점으로 지정된 면적을 구하려면 사용자에 의해 지정된 2D 또는 3D 점으로 정의된 임의의 닫힌 영역을 측정할 수 있습니다. 점들은 동일 평면상에 있어야 합니다.

사용자가 입력한 점으로 지정된 영역의 면적을 구하려면

  1. 루프에서 GetPoint 메서드를 사용하여 사용자가 입력한 점들을 구합니다.
  2. 사용자가 제공한 점에서 단순 폴리선을 작성하고, AddLightweightPolyline 메서드를 사용하여 폴리선을 작성하십시오.
  3. 그런 다음 Area 특성을 사용하여 새로 작성된 폴리선의 면적을 구합니다.
  4. Erase 메서드를 사용하여 폴리선을 지웁니다.

사용자가 입력한 점으로 정의된 영역의 면적 계산

이 예제에서는 사용자에게 5개의 점을 입력하라는 메시지를 표시합니다. 입력한 점들로부터 폴리선이 작성됩니다. 폴리선이 닫히고 폴리선의 면적이 메시지 상자에 표시됩니다.

Sub Ch3_CalculateDefinedArea()
    Dim p1 As Variant
    Dim p2 As Variant
    Dim p3 As Variant
    Dim p4 As Variant
    Dim p5 As Variant
    ' Get the points from the user
    p1 = ThisDrawing.Utility.GetPoint(, vbCrLf & "First point: ")
    p2 = ThisDrawing.Utility.GetPoint(p1, vbCrLf & "Second point: ")
    p3 = ThisDrawing.Utility.GetPoint(p2, vbCrLf & "Third point: ")
    p4 = ThisDrawing.Utility.GetPoint(p3, vbCrLf & "Fourth point: ")
    p5 = ThisDrawing.Utility.GetPoint(p4, vbCrLf & "Fifth point: ")
    ' Create the 2D polyline from the points
    Dim polyObj As AcadLWPolyline
    Dim vertices(0 To 9) As Double
    vertices(0) = p1(0): vertices(1) = p1(1)
    vertices(2) = p2(0): vertices(3) = p2(1)
    vertices(4) = p3(0): vertices(5) = p3(1)
    vertices(6) = p4(0): vertices(7) = p4(1)
    vertices(8) = p5(0): vertices(9) = p5(1)
    Set polyObj = ThisDrawing.ModelSpace.AddLightWeightPolyline _
                  (vertices)
    polyObj.Closed = True
    ThisDrawing.Application.ZoomAll
    ' Display the area for the polyline
    MsgBox "The area defined by the points is " & _
            polyObj.Area, , "Calculate Defined Area"
End Sub


사용자 입력을 위한 프롬프트

정의된 영역 계산
AutoCAD 환경 조정
GetString 메서드
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 >
사용자 입력을 위한 프롬프트

Utility 객체는 Document 객체의 하위 객체로서, 사용자 입력 메서드를 정의합니다. 사용자 입력 메서드는 AutoCAD 명령행에 프롬프트를 표시하고 여러 입력 유형을 요청합니다. 이러한 형식의 사용자 입력은 화면 좌표, 도면 요소 선택, 짧은 문자열이나 숫자 값의 대화식 입력에 가장 유용합니다. 응용프로그램에 많은 옵션이나 값을 입력해야 할 경우에는 개별 프롬프트보다 대화상자가 더 적합할 수 있습니다.

각 사용자 입력 메서드는 AutoCAD 명령행에 프롬프트를 표시하고 요청된 입력 스타일에 맞는 값을 반환합니다. 예를 들어 GetString은 문자열을 반환하고, GetPoint는 가변형(배정도의 3 요소 배열이 들어 있음)을 반환하고, GetInteger는 정수 값을 반환합니다. InitializeUserInput 메서드를 사용하여 사용자의 입력을 더 조정할 수 있습니다. 이 메서드를 사용하면 NULL 입력(Enter 키를 누름), 0 또는 음수 입력 및 임의 문자 값 입력 등을 조정할 수 있습니다.

프롬프트가 저절로 행에 표시되게 하려면 프롬프트 문자열의 처음에 캐리지 반환/줄 바꿈 상수(vbCrLf)를 사용하십시오.

이 단원의 항목

  • GetString 메서드
  • GetPoint 메서드
  • GetKeyword 메서드
  • 사용자 입력 조정


GetString 메서드

사용자 입력을 위한 프롬프트
사용자 입력을 위한 프롬프트
GetPoint 메서드
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 사용자 입력을 위한 프롬프트 >
GetString 메서드

GetString 메서드는 AutoCAD 명령 프롬프트에서 사용자에게 문자열을 입력하라는 메시지를 표시합니다. 이 메서드는 2개의 매개변수를 승인합니다. 첫 번째 매개변수는 입력 문자열의 공백 입력을 조정합니다. 0으로 설정하면 공백이 허용되지 않고(SPACEBAR 키로 입력을 종료함), 1로 설정하면 문자열에 공백이 포함될 수 있습니다(입력을 종료하려면 Enter 키를 사용해야 함). 두 번째 매개변수는 프롬프트 문자열입니다.

AutoCAD 명령행에서 사용자로부터 문자열 값 얻기

다음 예제에서는 이름 입력 프롬프트를 표시하고 Enter 키를 눌러 사용자의 입력이 종료되도록 합니다(입력 문자열에 공백이 허용됨). 문자열 값은 retVal 변수에 저장되고 메시지 상자를 사용하여 표시됩니다.

Sub Ch3_GetStringFromUser()
    Dim retVal As String
    retVal = ThisDrawing.Utility.GetString _
             (1, vbCrLf & "Enter your name: ")
    MsgBox "The name entered was: " & retVal
End Sub

GetString 메서드는 InitializeUserInput 메서드보다 먼저 호출할 수 없습니다.


GetPoint 메서드

GetString 메서드
사용자 입력을 위한 프롬프트
GetKeyword 메서드
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 사용자 입력을 위한 프롬프트 >
GetPoint 메서드

GetPoint 메서드는 AutoCAD 명령 프롬프트에서 사용자에게 점을 지정하라는 메시지를 표시합니다. 이 메서드는 선택적 시작점과 프롬프트 문자열의 두 매개변수를 승인합니다. 시작점이 제공되면 AutoCAD는 그 점에서 러버-밴드 선을 그립니다. 사용자 입력을 조정하기 위해 이 메서드를 InitializeUserInput 메서드보다 먼저 호출할 수 있습니다.

사용자가 선택한 점 얻기

다음 예제는 두 점을 입력하라는 메시지를 표시한 다음, 입력된 두 점을 시작점과 끝점으로 하는 선을 그립니다.

Sub Ch3_GetPointsFromUser()
    Dim startPnt As Variant
    Dim endPnt As Variant
    Dim prompt1 As String
    Dim prompt2 As String
    prompt1 = vbCrLf & "Enter the start point of the line: "
    prompt2 = vbCrLf & "Enter the end point of the line: "
    ' Get the first point without entering a base point
    startPnt = ThisDrawing.Utility.GetPoint(, prompt1)
    ' Use the point entered above as the base point
    endPnt = ThisDrawing.Utility.GetPoint(startPnt, prompt2)
    ' Create a line using the two points entered
    ThisDrawing.ModelSpace.AddLine startPnt, endPnt
    ThisDrawing.Application.ZoomAll
End Sub


GetKeyword 메서드

GetPoint 메서드
사용자 입력을 위한 프롬프트
사용자 입력 조정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 사용자 입력을 위한 프롬프트 >
GetKeyword 메서드

GetKeyword 메서드는 AutoCAD 명령 프롬프트에서 사용자에게 키워드를 입력하라는 메시지를 표시합니다. 이 메서드는 프롬프트 문자열인 하나의 매개변수만 승인합니다. 키워드와 입력 매개변수는 InitializeUserInput 메서드의 호출로 정의됩니다.

AutoCAD 명령행에서 사용자로부터 키워드 얻기

다음 예제에서는 InitializeUserInput의 첫 번째 매개변수를 1로 설정하여 사용자에게 키워드를 입력하도록 함으로써 NULL 입력(Enter 키를 누름)을 허용하지 않습니다. 두 번째 매개변수는 유효한 키워드 리스트를 구성합니다.

Sub Ch3_KeyWord()
    Dim keyWord As String
    ThisDrawing.Utility.InitializeUserInput 1, "Line Circle Arc"
    keyWord = ThisDrawing.Utility.GetKeyword _
              (vbCrLf & "Enter an option (Line/Circle/Arc): ")
    MsgBox keyWord, , "GetKeyword Example"
End Sub

사용자에게 보다 친숙한 키워드 프롬프트는 사용자가 Enter 키(NULL 입력)를 누르면 기본값을 제공하는 방법입니다. 다음 예제에서 약간 변경된 부분을 자세히 검토하십시오.

Sub Ch3_KeyWord2()
    Dim keyWord As String
    ThisDrawing.Utility.InitializeUserInput 0, "Line Circle Arc"
    keyWord = ThisDrawing.Utility.GetKeyword _
              (vbCrLf & "Enter an option (Line/Circle/<Arc>): ")
    If keyWord = "" Then keyWord = "Arc"
    MsgBox keyWord, , "GetKeyword Example"
End Sub


사용자 입력 조정

GetKeyword 메서드
사용자 입력을 위한 프롬프트
AutoCAD 명령행에 접근
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 > 사용자 입력을 위한 프롬프트 >
사용자 입력 조정

InitializeUserInput 메서드를 사용하여 키워드를 정의하거나 입력 유형을 사용자 입력 메서드로 제한할 수 있습니다. 용도 및 매개변수 값은 AutoLISP initget 함수와 유사합니다. InitializeUserInput은 다음 메서드와 함께 사용될 수 있습니다: GetAngle, GetCorner, GetDistance, GetInteger, GetKeyword, GetOrientation, GetPoint 및 GetReal. InitializeUserInput은 GetString 메서드와 함께 사용할 수 없습니다. 사용자 입력 메서드가 문자열 값을 반환하지 않을 경우에는 GetInput 메서드를 사용하여 문자열 값(키워드 또는 임의의 입력)을 검색하십시오.

InitializeUserInput 메서드는 두개의 매개변수를 승인합니다. 첫 번째 매개변수는 사용자 입력 메서드의 입력 옵션을 결정하는 비트 코드화 정수 값입니다. 두 번째 매개변수는 유효한 키워드를 정의하는 문자열입니다.

AutoCAD 명령행에서 사용자로부터 정수 값 또는 키워드 얻기

다음 예제에서는 양수, 음이 아닌 정수 값 또는 키워드를 입력하라는 메시지를 표시합니다.

Sub Ch3_UserInput()
    ' The first parameter of InitializeUserInput (6)
    ' restricts input to positive and non-negative
    ' values. The second parameter is the list of
    ' valid keywords.
    ThisDrawing.Utility.InitializeUserInput 6, "Big Small Regular"
    ' Set the prompt string variable
    Dim promptStr As String
    promptStr = vbCrLf & "Enter the size or (Big/Small/<Regular>):"
    ' At the GetInteger prompt, entering a keyword or pressing
    ' ENTER without entering a value results in an error. To allow
    ' your application to continue and check for the error
    ' description, you must set the error handler to resume on error.
    On Error Resume Next
    ' Get the value entered by the user
    Dim returnInteger As Integer
    returnInteger = ThisDrawing.Utility.GetInteger(promptStr)
    ' Check for an error. If the error number matches the
    ' one shown below, then use GetInput to get the returned
    ' string; otherwise, use the value of returnInteger.
    If Err.Number = -2145320928 Then
        Dim returnString As String
        Debug.Print Err.Description
        returnString = ThisDrawing.Utility.GetInput()
        If returnString = "" Then 'ENTER returns null string
            returnString = "Regular" 'Set to default
        End If
        Err.Clear
    Else 'Otherwise,
        returnString = returnInteger 'Use the value entered
    End If
    ' Display the result
    MsgBox returnString, , "InitializeUserInput Example"
End Sub


AutoCAD 명령행에 접근

사용자 입력 조정
AutoCAD 환경 조정
문서를 열지 않은 상태로 작업
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 >
AutoCAD 명령행에 접근

SendCommand 메서드를 사용하여 AutoCAD 명령행으로 직접 명령을 보낼 수 있습니다. SendCommand 메서드는 단일 문자열을 명령행으로 보냅니다. 문자열 안에는 실행된 명령의 프롬프트 순서에서 예상되는 순으로 나열된 해당 명령에 대한 인수들이 있어야 합니다. 문자열의 공백이나 캐리지 리턴과 동등한 ASCII 값은 키보드에서 Enter 키를 누르는 것과 동일합니다. AutoLISP 환경과 달리, 인수 없이 SendCommand 메서드를 실행하는 것은 적합하지 않습니다.

AutoCAD 명령행으로 명령 전송

다음 예제는 중심이 (2, 2, 0)이고 반지름이 4인 원을 작성합니다. 그런 다음, 도면은 도면의 모든 형상에 대해 줌합니다. 문자열의 끝에는 명령 실행을 시작하기 위한 마지막 Enter 키를 나타내는 공백이 하나 있음에 유의하십시오.

Sub Ch3_SendACommandToAutoCAD()
   ThisDrawing.SendCommand "_Circle 2,2,0 4 "
   ThisDrawing.SendCommand "_zoom a "
End Sub


문서를 열지 않은 상태로 작업

AutoCAD 명령행에 접근
AutoCAD 환경 조정
다른 파일 형식 가져오기
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 >
문서를 열지 않은 상태로 작업

AutoCAD는 항상 새 문서나 기존 문서를 연 상태에서 시작됩니다. 그러나 현재 세션 중에 모든 문서를 닫을 수 있습니다.

AutoCAD 사용자 인터페이스의 문서를 모두 닫으면 응용프로그램 윈도우에 대한 몇 가지 변경 사항이 나타납니다. 사용 가능한 메뉴는 파일, 뷰, 윈도우, 도움말 메뉴로 줄어 들었습니다. 이들 메뉴에는 해당 메뉴에서 사용할 수 있는 옵션도 줄어 들었습니다. 명령행이 없다는 점도 유의하십시오.

마찬가지로, 열린 문서가 없을 경우 ActiveX 인터페이스는 다음과 같은 작업만 허용합니다.

  • 문서 열기
  • 새 문서를 작성할 수 있습니다.
  • 문서를 가져올 수 있습니다.
  • AutoCAD를 종료할 수 있습니다.

이러한 작업은 모두 Documents 컬렉션에서 사용할 수 있습니다. Application 객체의 제한된 메서드와 특성 세트는 물론, Documents 컬렉션의 메서드와 특성도 열린 문서가 없을 때 유일하게 사용할 수 있는 적합한 인터페이스입니다. 사용자 옵션에 대한 접근 시도와 같은 다른 작업을 수행하면 작업에 오류가 발생하게 됩니다.

Documents 컬렉션에서 Count 특성을 사용하여 AutoCAD가 문서가 없는 상태인지 결정하십시오. Documents.Count = 0이면 AutoCAD 문서가 하나도 없는 것입니다. Documents.Count > 0이면 열린 도면이 최소한 하나 있는 것입니다.

또한 AutoCAD가 0 문서 상태에 있을 때에는 VBA에서 ThisDrawing 객체가 정의되지 않습니다. 그 이유는 일반적으로 ThisDrawing이 활성 도면을 가리키는데 문서가 없는 상태에서는 열린 도면이 없기 때문입니다. ThisDrawing을 사용하는 매크로를 실행하면 실행시간 오류가 발생합니다. 오류를 방지하려면 열린 문서가 없을 때 VBA GetObject 함수를 사용하고 AutoCAD 버전을 지정하여 AutoCAD와의 연결을 설정하십시오.


다른 파일 형식 가져오기

문서를 열지 않은 상태로 작업
AutoCAD 환경 조정
다른 파일 형식으로 내보내기
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 >
다른 파일 형식 가져오기

도면이나 이미지를 특정 형식으로 열면 다른 응용프로그램에서 사용할 수 있습니다. AutoCAD는 도면 교환 형식(DXF)TM , SAT 및 WMF 파일의 변환에 대한 몇 가지 양식을 처리합니다. 모든 버전에서 Import 메서드를 사용하여 파일을 가져올 수 있습니다. 이 메서드는 가져올 파일 이름, 파일을 넣을 도면의 삽입점, 가져온 도면을 넣을 때 사용할 축척 비율 등 세 가지 값을 사용합니다.


다른 파일 형식으로 내보내기

다른 파일 형식 가져오기
AutoCAD 환경 조정
AutoCAD 도면요소 작성 및 편집
ActiveX 및 VBA 개발자 안내서 > AutoCAD 환경 조정 >
다른 파일 형식으로 내보내기

AutoCAD 도면을 다른 응용프로그램에서 사용할 경우에는 Export 메서드를 사용해서 특정 형식으로 변환할 수 있습니다. 이 메서드는 AutoCAD 도면을 WMF, SAT, EPS, DXF 또는 BMP 형식으로 내보냅니다. 내보내기 메서드는 작성할 새로운 파일의 이름, 새로운 파일의 확장자 및 내보낼 객체의 선택 세트 등 세 가지 값을 사용합니다.

WMF, SAT 또는 BMP 형식으로 내보낼 때는 비어 있지 않은 선택 세트를 제공해야 합니다. 이 선택 세트는 내보내는 도면의 객체를 지정합니다. 선택 세트가 지정되지 않으면 아무것도 내보내지 않으며 부적합한 인수 오류가 발생합니다.

EPS와 DXF 형식으로 내보낼 때 Export는 선택 세트 인수를 무시하지만 그래도 선택 세트 인수를 지정해야 합니다. 이러한 형식의 전체 도면이 자동으로 내보내집니다.

도면을 DXF 파일로 내보내고 다시 가져오기

이 예제는 현재 도면에 원을 작성합니다. 그런 다음, 도면을 DXFExprt.DXF라고 하는 파일로 내보내고 새로운 도면을 열어 그 파일을 가져옵니다. Export에 대한 인수로서 빈 선택 세트가 제공됨에 유의하십시오. DXF 파일을 내보낼 때 Export 메서드는 선택 세트 정보를 무시하지만 인수가 생략되면 구문 오류가 발생합니다.

Sub Ch3_ImportingAndExporting()
    ' Create the circle for visual representation
    Dim circleObj As AcadCircle
    Dim centerPt(0 To 2) As Double
    Dim radius As Double
    centerPt(0) = 2: centerPt(1) = 2: centerPt(2) = 0
    radius = 1
    Set circleObj = ThisDrawing.ModelSpace.AddCircle _
                    (centerPt, radius)
    ThisDrawing.Application.ZoomAll
    ' Create an empty selection set
    Dim sset As AcadSelectionSet
    Set sset = ThisDrawing.SelectionSets.Add("NEWSSET")
    'Export the current drawing to a DXF file in the
    ' AutoCAD temporary file directory
    Dim tempPath As String
    Dim exportFile As String
    Const dxfname As String = "DXFExprt"
    tempPath = _
       ThisDrawing.Application.preferences.Files.TempFilePath
    exportFile = tempPath & dxfname
    ThisDrawing.Export exportFile, "DXF", sset
    ' Delete the empty selection set
    ThisDrawing.SelectionSets.Item("NEWSSET").Delete
    ' Open a new drawing
    ThisDrawing.Application.Documents.Add "acad.dwt"
    ' Define the import
    Dim importFile As String
    Dim insertPoint(0 To 2) As Double
    Dim scalefactor As Double
    importFile = tempPath & dxfname & ".dxf"
    insertPoint(0) = 0: insertPoint(1) = 0: insertPoint(2) = 0
    scalefactor = 0.91kg
    ' Import the file
    ThisDrawing.Import importFile, insertPoint, scalefactor
    ThisDrawing.Application.ZoomAll
End Sub


AutoCAD 도면요소 작성 및 편집

다른 파일 형식으로 내보내기
객체 작성
ActiveX 및 VBA 개발자 안내서 >
AutoCAD 도면요소 작성 및 편집

사용자는 단순한 선이나 원에서부터 스플라인 곡선, 타원 및 연관 해치 영역과 같은 객체들까지 작성할 수 있습니다. 일반적으로 객체는 Add 메서드 중 하나를 사용하여 모형 공간에 추가됩니다. 도면 공간이나 블록에도 객체를 작성할 수 있습니다.

객체가 작성되면 객체의 도면층, 색상 및 선종류를 변경할 수 있습니다. 문자를 추가하여 도면에 주석을 붙일 수도 있습니다.

이 단원의 항목

  • 객체 작성
  • 선택 세트로 작업
  • 객체 편집
  • 도면층, 색상 및 선종류 사용
  • 도면층 설정값 저장 및 복원
  • 도면에 추가


객체 작성

AutoCAD 도면요소 작성 및 편집
AutoCAD 도면요소 작성 및 편집
Container 객체 결정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 >
객체 작성

AutoCAD ®에서는 여러 방법으로 한 그래픽 객체를 작성할 수 있지만 ActiveX Automation에서는 한 가지 방법으로만 한 객체를 작성할 수 있습니다. 예를 들어, AutoCAD에서는 (1) 중심과 반지름을 지정, (2) 지름을 정의하는 두 점 지정, (3) 원주를 정의하는 세 점으로 지정, (4) 두 접선과 반지름 지정 등 4가지의 다양한 방식으로 원을 작성할 수 있습니다. 그러나 ActiveX Automation에서는 원을 작성하는 작성 메서드가 하나만 제공되며 해당 메서드는 중심과 반지름을 사용합니다.

주New 키워드가 있는 CreateObject나 Dim을 사용하여 객체를 작성하는 VB와 VBA 메서드는 AutoCAD Application 객체를 작성하는 경우에만 사용할 수 있습니다. 나머지 AutoCAD 객체는 모두 AutoCAD 인터페이스에 제공된 Add 또는 Add<objectname> 메서드를 사용하여 작성해야 합니다.

이 단원의 항목

  • Container 객체 결정
  • 선 작성
  • Curved 객체 작성
  • Point 객체 작성
  • 솔리드-채움 영역 작성
  • 영역으로 작업
  • 해치 작성


Container 객체 결정

객체 작성
객체 작성
선 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 작성 >
Container 객체 결정

그래픽 객체는 ModelSpace 컬렉션, PaperSpace 컬렉션 또는 Block 객체에서 작성됩니다.

ModelSpace 컬렉션은 ModelSpace 특성에 의해 반환되고, PaperSpace 컬렉션은 PaperSpace 특성에 의해 반환됩니다.

이러한 객체를 직접 참조하거나 사용자 정의 변수를 통해 참조할 수 있습니다. 객체를 직접 참조하려면 호출 계층구조에 객체를 포함시키십시오. 예를 들어 다음 문은 모형 공간에 한 행을 추가합니다.

Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint,endPoint)

사용자 정의 변수를 통해 객체를 참조하려면 변수를 AcadModelSpace 또는 AcadPaperSpace 유형으로 정의한 다음, 변수를 활성 문서의 해당 특성으로 설정하십시오. 다음 예제에서는 2개의 변수를 정의해서 각각 현재의 모형 공간과 도면 공간과 동일하게 설정합니다.

Dim moSpace As AcadModelSpace
Dim paSpace As AcadPaperSpace
Set moSpace = ThisDrawing.ModelSpace
Set paSpace = ThisDrawing.PaperSpace

다음 문은 사용자 정의 변수를 사용하여 모형 공간에 한 행을 추가합니다.

Set lineObj = moSpace.AddLine(startPoint,endPoint)


선 작성

Container 객체 결정
객체 작성
Curved 객체 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 작성 >
선 작성

선은 AutoCAD에서 가장 기본적인 객체입니다. 여러 선(호가 있거나 없는 다중 선 및 단일 선 세그먼트)을 작성할 수 있습니다. 일반적으로 좌표 점을 지정해서 선을 그립니다. 기본 선종류는 CONTINUOUS, 즉 끊기지 않은 선이지만 도트와 대시를 사용하는 다양한 선종류를 사용할 수 있습니다.

다음 메서드 중 하나를 사용하여 원을 작성할 수 있습니다.

AddLine

두 점을 통과하는 선을 작성합니다.

AddLightweightPolyline

정점들로부터 2D 단순 폴리선을 작성합니다.

AddMLine

여러 줄을 작성합니다.

AddPolyline

2D 또는 3D 폴리선을 작성합니다.

표준선과 여러 줄은 표준 좌표계의 XY 평면에 작성됩니다. 폴리선과 단순 폴리선은 객체 좌표계(OCS)를 사용하여 작성됩니다. OCS 좌표 변환에 대한 내용은 좌표 변환를 참고하십시오.

Polyline 객체 작성

이 예제는 AddLightweightPolyline 메서드를 사용하여 2D 좌표가 (2,4), (4,2) 및 (6,4)이며 세그먼트가 2개인 간단한 폴리선을 작성합니다.

Sub Ch4_AddLightWeightPolyline()
    Dim plineObj As AcadLWPolyline
    Dim points(0 To 5) As Double
    ' Define the 2D polyline points
    points(0) = 2: points(1) = 4
    points(2) = 4: points(3) = 2
    points(4) = 6: points(5) = 4
    ' Create a light weight Polyline object in model space
    Set plineObj = ThisDrawing.ModelSpace. _
                   AddLightWeightPolyline(points)
    ThisDrawing.Application.ZoomAll
End Sub


Curved 객체 작성

선 작성
객체 작성
Point 객체 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 작성 >
Curved 객체 작성

사용자는 AutoCAD를 사용하여 스플라인 곡선, 원, 호, 타원을 포함한 다양한 종류의 Curved 객체를 작성할 수 있습니다. 모든 곡선은 현재 WCS의 XY 평면에 작성됩니다.

다음 메서드 중 하나를 사용하여 곡선을 작성할 수 있습니다.

AddArc

주어진 중심, 반지름, 시작 및 끝 각도로 호를 작성합니다.

AddCircle

주어진 중심점과 반지름으로 원을 작성합니다.

AddEllipse

주어진 중심점, 기본 축 위의 한 점, 반지름 비율로 타원을 작성합니다.

AddSpline

2차 또는 3차 NURBS(비균일 유리 B 스플라인) 곡선을 작성합니다.

Spline 객체 작성

이 예제는 세 점 (0, 0, 0), (5, 5, 0) 및 (10, 0, 0)을 사용하여 모형 공간에 스플라인을 작성합니다. 스플라인에는 접선(0.5, 0.5, 0.0)의 시작과 끝이 있습니다.

Sub Ch4_CreateSpline()
    ' This example creates a spline object in model space.
    ' Declare the variables needed
    Dim splineObj As AcadSpline
    Dim startTan(0 To 2) As Double
    Dim endTan(0 To 2) As Double
    Dim fitPoints(0 To 8) As Double
    ' Define the variables
    startTan(0) = 0.5: startTan(1) = 0.5: startTan(2) = 0
    endTan(0) = 0.5: endTan(1) = 0.5: endTan(2) = 0
    fitPoints(0) = 1: fitPoints(1) = 1: fitPoints(2) = 0
    fitPoints(3) = 5: fitPoints(4) = 5: fitPoints(5) = 0
    fitPoints(6) = 10: fitPoints(7) = 0: fitPoints(8) = 0
    ' Create the spline
    Set splineObj = ThisDrawing.ModelSpace.AddSpline _
                        (fitPoints, startTan, endTan)
    ZoomAll
End Sub
스플라인에 대한 자세한 내용은 AutoCADActiveX 및 VBA 참조서의 Spline 객체와 AddSpline 메서드 설명서를 참조하십시오.


Point 객체 작성

Curved 객체 작성
객체 작성
솔리드-채움 영역 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 작성 >
Point 객체 작성

Point 객체는 스냅하거나 간격띄우기할 때의 노드나 참조점으로 유용합니다. 점의 스타일과 그 크기를 화면 기준 또는 절대 단위로 설정할 수 있습니다.

PDMODE와 PDSIZE 시스템 변수는 Point 객체의 모양을 조정합니다. PDMODE 값 0, 2, 3, 4는 그림이 해당 점을 통과하도록 지정합니다. 값 1은 표시되는 것을 아무 것도 선택하지 않습니다.

이전 값에 32, 64 또는 96을 추가하면 그 점을 통과하면서 그림이 그려질 뿐 아니라 점 주변에도 그림이 그려지도록 지정됩니다.

PDSIZE는 PDMODE 값 0과 1을 제외하고 점 도형의 크기를 조정합니다. 0 설정은 그래픽 영역 높이의 5%를 차지하는 지점에서 점을 생성합니다. 양수 PDSIZE 값은 점 도형의 절대 크기를 지정합니다. 음의 값은 뷰포트 크기에 대한 퍼센트로 번역됩니다. 도면이 재생성될 때 모든 점의 크기는 다시 계산됩니다.

PDMODE와 PDSIZE를 변경한 후, 기존의 점 모양은 다음에 도면을 재생성할 때 변경됩니다.

PDMODE 및 PDSIZE를 설정하려면 SetVariable 메서드를 사용합니다.

Point 객체 작성 후 모양 변경

다음 예제 코드는 모형 공간의 좌표 (5, 5, 0)에 Point 객체를 작성합니다. PDMODE 및 PDSIZE 시스템 변수가 업데이트됩니다.

Sub Ch4_CreatePoint()
    Dim pointObj As AcadPoint
    Dim location(0 To 2) As Double
    ' Define the location of the point
    location(0) = 5#: location(1) = 5#: location(2) = 0#
    ' Create the point
    Set pointObj = ThisDrawing.ModelSpace.AddPoint(location)
    ThisDrawing.SetVariable "PDMODE", 34
    ThisDrawing.SetVariable "PDSIZE", 1
    ZoomAll
End Sub


솔리드-채움 영역 작성

Point 객체 작성
객체 작성
영역으로 작업
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 작성 >
솔리드-채움 영역 작성

색상으로 채워진 삼각형 또는 사변형 영역을 작성할 수 있습니다. 보다 신속하게 결과를 얻으려면 FILLMODE 시스템 변수를 끈 상태에서 이러한 영역을 작성한 다음, FILLMODE를 켜서 완성된 영역을 채웁니다.

솔리드로 채워진 사변형 영역을 작성하는 경우, 세 번째 점과 네 번째 점의 순서가 사변형의 쉐이프를 결정합니다. 다음 그림을 비교해 보십시오.

첫 두 점은 다각형의 하나의 모서리를 정의합니다. 세 번째 점은 두 번째 점에서 대각선으로 반대쪽에 정의됩니다. 네 번째 점이 세 번째 점과 같으면 채워진 삼각형이 작성됩니다.

솔리드로 채워진 영역을 작성하려면 AddSolid 메서드를 사용하십시오.

솔리드 채우기에 대한 자세한 정보는 사용자 안내서의 “솔리드-채움 영역 작성”을 참고하십시오.

솔리드로 채워진 객체 작성

다음 예제 코드에서는 4개의 좌표 (0, 0, 0), (5, 0, 0), (5, 8, 0), (0, 8, 0)을 사용하여 모형 공간에 사변형 솔리드를 작성합니다.

Sub Ch4_CreateSolid()
    Dim solidObj As AcadSolid
    Dim point1(0 To 2) As Double
    Dim point2(0 To 2) As Double
    Dim point3(0 To 2) As Double
    Dim point4(0 To 2) As Double
    ' Define the solid
    point1(0) = 0#: point1(1) = 0#: point1(2) = 0#
    point2(0) = 5#: point2(1) = 0#: point2(2) = 0#
    point3(0) = 5#: point3(1) = 8#: point3(2) = 0#
    point4(0) = 0#: point4(1) = 8#: point4(2) = 0#
    ' Create the solid object in model space
    Set solidObj = ThisDrawing.ModelSpace.AddSolid _
                   (point1, point2, point3, point4)
    ZoomAll
End Sub


영역으로 작업

솔리드-채움 영역 작성
객체 작성
영역 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 작성 >
영역으로 작업

영역은 루프라고 하는 닫힌 쉐이프로부터 작성된 2차원의 닫힌 영역입니다. 루프는 자체적으로 교차하지 않는 경계로 평면상의 영역을 정의하는 곡선 또는 끝점들이 연결된 연속 곡선입니다. 루프는 선, 단순 폴리선, 원, 호, 타원, 타원형 호, 스플라인, 3D 면, 두께선 및 솔리드의 조합이 될 수 있습니다. 루프를 구성하는 객체들은 닫혀 있거나 다른 객체와 끝점들을 공유하여 닫힌 영역을 형성해야 합니다. 또한 동일한 평면에 있어야 합니다. 영역을 구성하는 루프는 객체의 배열로 정의되어야 합니다.

영역 관련 작업에 대한 자세한 정보는 사용자 안내서의 “면적(영역) 작성 및 결합”을 참고하십시오.

이 단원의 항목

  • 영역 작성
  • 복합 영역 작성
  • 영역 결합
  • 두 영역의 교차 부분 찾기


영역 작성

영역으로 작업
영역으로 작업
복합 영역 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 작성 > 영역으로 작업 >
영역 작성

영역을 작성하려면 AddRegion 메서드를 사용하십시오. 이 메서드는 곡선의 입력 배열로 형성된 모든 닫힌 루프의 외부에 영역을 작성합니다. AutoCAD는 닫힌 2D 및 평면형 3D 폴리선을 변환하여 영역을 분리한 다음, 닫힌 평면형 루프를 형성하는 폴리선, 선 및 곡선을 변환합니다. 둘 이상의 곡선이 끝점을 공유하는 경우 영역이 임의로 작성될 수 있습니다. 이로 인해 실제로는 AddRegion 메서드를 사용할 때 여러 영역이 작성될 수 있습니다. 새로 작성된 영역의 배열을 유지하려면 variant를 사용하십시오.

작성된 Region 객체의 전체 수를 계산하려면, 다음 예제와 같이 UBound와 LBound VBA 함수를 사용하십시오.

UBound(objRegions) - LBound(objRegions) + 1

여기에서 objRegions은 AddRegion에서 반환한 값이 들어 있는 variant입니다. 이 문은 작성된 영역의 총 수를 계산합니다.

간단한 영역 작성

다음 예제 코드는 단일 원에서 영역을 작성합니다.

Sub Ch4_CreateRegion()
    ' Define an array to hold the
    ' boundaries of the region.
    Dim curves(0 To 0) As AcadCircle
    ' Create a circle to become a
    ' boundary for the region.
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 2
    center(1) = 2
    center(2) = 0
    radius = 5#
    Set curves(0) = ThisDrawing.ModelSpace.AddCircle _
                    (center, radius)
    ' Create the region
    Dim regionObj As Variant
    regionObj = ThisDrawing.ModelSpace.AddRegion(curves)
    ZoomAll
End Sub


복합 영역 작성

영역 작성
영역으로 작업
영역 결합
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 작성 > 영역으로 작업 >
복합 영역 작성

영역 또는 3D 솔리드의 교차하는 부분을 빼거나, 합치거나, 또는 찾아 복합 영역을 작성할 수 있습니다. 그런 다음, 복합 영역을 돌출하거나 회전하여 복합 솔리드를 작성할 수 있습니다. 복합 영역을 작성하려면 Boolean 메서드를 사용하십시오.

어떤 영역에서 한 영역을 뺄 때 첫 번째 영역에서 Boolean 메서드를 호출합니다. 이 영역이 빼는 부분이 포함되어 있는 영역입니다. 예를 들어 평면도에 필요한 카펫의 양을 계산하려면 바닥 공간의 바깥 경계에서 Boolean 메서드를 호출하고 기둥과 카운터와 같이 카펫이 필요 없는 영역을 Boolean 매개변수 리스트의 객체로 사용하십시오.

복합 영역 작성

Sub Ch4_CreateCompositeRegions()
    ' Create two circles, one representing a room,
    ' the other a pillar in the center of the room
    Dim RoomObjects(0 To 1) As AcadCircle
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 4
    center(1) = 4
    center(2) = 0
    radius = 2#
    Set RoomObjects(0) = ThisDrawing.ModelSpace. _
                         AddCircle(center, radius)
    radius = 1#
    Set RoomObjects(1) = ThisDrawing.ModelSpace. _
                         AddCircle(center, radius)
    ' Create a region from the two circles
    Dim regions As Variant
    regions = ThisDrawing.ModelSpace.AddRegion(RoomObjects)
    ' Copy the regions into the region variables for ease of use
    Dim RoundRoomObj As AcadRegion
    Dim PillarObj As AcadRegion
    If regions(0).Area > regions(1).Area Then
        ' The first region is the room
        Set RoundRoomObj = regions(0)
        Set PillarObj = regions(1)
    Else
        ' The first region is the pillar
        Set PillarObj = regions(0)
        Set RoundRoomObj = regions(1)
    End If
' Subtract the pillar space from the floor space to
    ' get a region that represents the total carpet area.
    RoundRoomObj.Boolean acSubtraction, PillarObj
    ' Use the Area property to determine the total carpet area
    MsgBox "The carpet area is: " & RoundRoomObj.Area
End Sub
그리고 결과로 얻어진 영역의 면적을 Area 특성을 사용하여 얻을 수 있습니다.


영역 결합

복합 영역 작성
영역으로 작업
두 영역의 교차 부분 찾기
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 작성 > 영역으로 작업 >
영역 결합

영역을 결합하려면 Boolean 메서드를 호출하고 acSubtraction 대신, acUnion 상수를 입력하십시오. 결합할 영역은 임의의 순서로 결합할 수 있습니다.


두 영역의 교차 부분 찾기

영역 결합
영역으로 작업
해치 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 작성 > 영역으로 작업 >
두 영역의 교차 부분 찾기

두 영역의 교차 부분을 찾으려면 acIntersection 상수를 사용하십시오. 교차시킬 영역은 임의의 순서로 결합할 수 있습니다.


해치 작성

두 영역의 교차 부분 찾기
객체 작성
Hatch 객체 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 작성 >
해치 작성

해칭은 도면에서 지정된 영역을 패턴으로 채우는 것입니다.

해치를 작성할 때는 채울 영역을 처음에 지정하지 않습니다. 먼저 Hatch 객체를 작성해야 합니다. 객체가 작성되면 해치의 가장 외부 경계인 외부 루프를 지정할 수 있습니다. 그런 다음에 해치에 있을 수 있는 내부 루프를 계속 지정할 수 있습니다.

해치 관련 작업에 대한 자세한 정보는 사용자 안내서의 “해치 패턴 및 채우기 개요”를 참고하십시오.

이 단원의 항목

  • Hatch 객체 작성
  • 해치 연관
  • 해치 패턴 유형 및 이름 지정
  • 해치 경계 정의


Hatch 객체 작성

해치 작성
해치 작성
해치 연관
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 작성 > 해치 작성 >
Hatch 객체 작성

Hatch 객체를 작성할 때에는 해치 패턴 스타일, 해치 패턴 이름 및 연관성을 지정합니다. Hatch 객체가 작성된 후에는 해치 연관성을 변경할 수 없습니다.

해치 객체를 작성하려면 AddHatch 메서드를 사용하십시오.


해치 연관

Hatch 객체 작성
해치 작성
해치 패턴 유형 및 이름 지정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 작성 > 해치 작성 >
해치 연관

연관된 해치나 비연관적인 해치를 작성할 수 있습니다. 연관 해치는 그 경계에 연결되어 경계가 수정될 때 갱신됩니다. 비연관적인 해치는 경계와 무관합니다.

해치가 작성될 때만 연관성이 설정될 수 있습니다. 해치가 작성되면 연관을 취소할 수 있지만 다시 연관시킬 수는 없습니다.

해치를 연관적으로 만들려면 AddHatch 메서드의 Associativity 매개변수를 TRUE로 설정하십시오. 해치를 비연관적으로 만들려면 AddHatch 메서드의 Associativity 매개변수를 FALSE로 설정하십시오.


해치 패턴 유형 및 이름 지정

해치 연관
해치 작성
해치 경계 정의
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 작성 > 해치 작성 >
해치 패턴 유형 및 이름 지정

AutoCAD는 솔리드 채우기와 50가지 이상의 산업 표준 해치 패턴을 제공합니다. 해치 패턴은 도면의 특정 피쳐나 영역을 강조합니다. 예를 들어, 패턴은 3D 객체의 구성요소들을 쉽게 구분할 수 있게 해주거나 객체를 구성하는 재료들을 나타낼 수 있습니다.

AutoCAD와 함께 제공되는 패턴을 사용하거나 외부 패턴 라이브러리의 패턴을 사용할 수 있습니다. AutoCAD와 함께 제공된 해치 패턴 테이블은 AutoCAD 명령어 참조서를 참조하십시오.

고유한 패턴을 지정하려면 Hatch 객체를 작성할 때 패턴 유형과 패턴 이름을 입력해야 합니다. 패턴 유형은 패턴 이름을 찾을 부분을 지정합니다. 패턴 유형을 입력할 때 다음 상수 중 하나를 사용하십시오.

acHatchPatternTypePredefined

acad.pat 파일에서 정의된 패턴에서 패턴 이름을 선택합니다.

acHatchPatternTypeUserDefined

현재 선종류를 사용하여 선의 패턴을 정의합니다.

acHatchPatternTypeCustomDefined

acad.pat 파일 이외의 다른 PAT 파일에서 패턴 이름을 선택합니다.

패턴 이름을 입력할 때에는, 패턴 유형별로 지정된 파일에 적합한 이름을 사용하십시오.


해치 경계 정의

해치 패턴 유형 및 이름 지정
해치 작성
선택 세트로 작업
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 작성 > 해치 작성 >
해치 경계 정의

Hatch 객체가 작성되면 해치 경계를 추가할 수 있습니다. 경계는 선, 호, 원, 2D 폴리선, 타원, 스플라인, 영역 등의 결합이 될 수 있습니다.

추가된 첫 번째 경계는 해치에 의해 채워질 가장 바깥의 범위를 정의하는 외부 경계이어야 합니다. 외부 경계를 추가하려면 AppendOuterLoop 메서드를 사용하십시오.

외부 경계가 정의되면 내부 경계를 계속 추가할 수 있습니다. AppendInnerLoop 메서드를 사용하여 내부 경계를 추가하십시오.

내부 경계는 해치 내의 고립영역을 정의합니다. Hatch 객체가 이러한 고립영역을 처리하는 방법은 HatchStyle 특성의 설정에 따라 결정됩니다. HatchStyle 특성은 다음 조건 중 하나로 설정할 수 있습니다.

해치 스타일 정의
HatchStyle | 조건 | 설명
 | Normal | 표준 또는 일반 스타일을 지정합니다. 이 옵션은 가장 외부 영역 경계로부터 안쪽으로 해치합니다. AutoCAD가 내부 경계를 만나면 다른 경계를 만날 때까지 해치를 끕니다. HatchStyle 특성의 기본 설정입니다.
 | 외부 | 가장 외부 영역만 채웁니다. 이 스타일도 영역 경계로부터 안쪽 방향으로 해치하지만 내부 경계를 만나면 해치를 끄고 다시 켜지 않습니다.
 | 무시 | 내부 구조를 무시합니다. 이 옵션은 내부 객체를 모두 다 해치합니다.

해치 정의가 끝나면 화면에 표시하기 전에 평가를 수행해야 합니다. Evaluate 메서드를 사용하여 평가하십시오.

Hatch 객체 작성

이 예제에서는 모형 공간에 연관 해치를 작성합니다. 해치가 작성되면 해치와 연관된 원의 크기를 변경할 수 있습니다. 해치는 현재의 원 크기에 맞게 변경됩니다.

Sub Ch4_CreateHatch()
    Dim hatchObj As AcadHatch
    Dim patternName As String
    Dim PatternType As Long
    Dim bAssociativity As Boolean
    ' Define the hatch
    patternName = "ANSI31"
    PatternType = 0
    bAssociativity = True
    ' Create the associative Hatch object
    Set hatchObj = ThisDrawing.ModelSpace.AddHatch _
                   (PatternType, patternName, bAssociativity)
    ' Create the outer boundary for the hatch. (a circle)
    Dim outerLoop(0 To 0) As AcadEntity
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 3: center(1) = 3: center(2) = 0
    radius = 1
    Set outerLoop(0) = ThisDrawing.ModelSpace. _
                       AddCircle(center, radius)
    ' Append the outerboundary to the hatch
    ' object, and display the hatch
    hatchObj.AppendOuterLoop (outerLoop)
    hatchObj.Evaluate
    ThisDrawing.Regen True
End Sub


선택 세트로 작업

해치 경계 정의
AutoCAD 도면요소 작성 및 편집
선택 세트 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 >
선택 세트로 작업

선택 세트는 단일 객체로 구성되거나, 복합 그룹화(예: 특정 도면층의 객체 세트)로 구성될 수 있습니다.

선택 세트를 정의하는 과정은 2단계입니다. 먼저 새 선택 세트를 작성하여 SelectionSets 컬렉션에 추가해야 합니다. 선택 세트를 작성하고 나면 처리할 객체를 선택 세트에 추가합니다.

이 단원의 항목

  • 선택 세트 작성
  • 선택 세트에 객체 추가
  • 선택 세트의 규칙 정의
  • 선택 세트에 대한 정보 표시
  • 선택 세트에서 객체 제거


선택 세트 작성

선택 세트로 작업
선택 세트로 작업
선택 세트에 객체 추가
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 선택 세트로 작업 >
선택 세트 작성

명명된 선택 세트를 작성하려면 Add 메서드를 사용하십시오. 이 메서드를 사용하려면 단일 매개변수인 선택 세트 이름만 필요합니다.

같은 이름의 선택 세트가 이미 있으면 AutoCAD가 오류 메시지를 반환합니다. 같은 이름의 선택 세트가 더 이상 필요하지 않으면 삭제해 버리는 것이 좋은 프로그래밍 습관입니다. 다음 예제에서처럼, Delete 메서드를 사용하여 선택 세트를 삭제하십시오.

ThisDrawing.SelectionSets.Item("NewSelectionSet").Delete

빈 선택 세트 작성

이 예제에서는 새 선택 세트를 작성합니다.

Sub Ch4_CreateSelectionSet()
    Dim selectionSet1 As AcadSelectionSet
    Set selectionSet1 = ThisDrawing.SelectionSets. _
                        Add("NewSelectionSet")
End Sub


선택 세트에 객체 추가

선택 세트 작성
선택 세트로 작업
선택 세트의 규칙 정의
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 선택 세트로 작업 >
선택 세트에 객체 추가

다음과 같은 메서드로 활성 선택 세트에 객체를 추가할 수 있습니다.

AddItems

지정된 선택 세트에 하나 이상의 객체를 추가합니다.

Select

객체를 선택하여 활성 선택 세트에 배치합니다. 직사각형 영역 내에 있거나 걸쳐 있는 객체, 다각형 영역 내에 있거나 걸쳐 있는 객체, 울타리를 걸쳐 있는 모든 객체, 가장 최근에 작성한 객체, 가장 최근 선택 세트의 객체, 윈도우 내에 있는 객체 또는 윈도우 다각형 내에 있는 객체 등을 모두 선택할 수 있습니다.

SelectAtPoint

주어진 점을 통과하는 객체를 선택하여 활성 선택 세트에 추가합니다.

SelectByPolygon

울타리 내에 있는 객체를 선택하여 활성 선택 세트에 추가합니다.

SelectOnScreen

화면에서 객체를 선택하라는 프롬프트를 표시하고 사용자가 선택한 객체를 활성 선택 세트에 추가합니다.

선택 세트에 선택한 객체 추가

이 예제는 사용자에게 객체를 선택하라고 표시하고 해당 객체를 선택 세트에 추가합니다.

Sub Ch4_AddToASelectionSet()
    ' Create a new selection set
    Dim sset As AcadSelectionSet
    Set sset = ThisDrawing.SelectionSets.Add("SS1")
    ' Prompt the user to select objects
    ' and add them to the selection set.
    ' To finish selecting, press ENTER.
    sset.SelectOnScreen
End Sub


선택 세트의 규칙 정의

선택 세트에 객체 추가
선택 세트로 작업
필터 리스트를 사용하여 선택 세트 규칙 정의
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 선택 세트로 작업 >
선택 세트의 규칙 정의

필터 리스트를 사용하여 색상과 같은 특성이나 객체 유형에 의해 선택 세트를 제한할 수 있습니다. 예를 들면 회로판 도면에 있는 객체 중 파란색 객체만 복사하거나 특정 도면층에 있는 객체만 복사할 수 있습니다. 또한 필터 리스트에 있는 선택 기준을 결합할 수도 있습니다. 예를 들어, AutoCAD에서 객체가 특정 도면층에서 파란색 원인 경우에만 선택 세트에 포함하도록 할 수 있습니다. 필터 리스트는 Select, SelectAtPoint, SelectByPolygon 및 SelectOnScreen 메서드용으로 지정할 수 있습니다.

주필터링은 도면층에 의해 상속된 색상이나 선종류가 아닌 객체에 명시적으로 할당된 색상이나 선종류를 인식합니다.

이 단원의 항목

  • 필터 리스트를 사용하여 선택 세트 규칙 정의
  • 선택 세트 필터 리스트에서 여러 개의 기준 지정
  • 필터 리스트 조건에 복합성 추가
  • 선택 세트 필터 기준에 와일드 카드 패턴 사용
  • 확장 데이터 필터


필터 리스트를 사용하여 선택 세트 규칙 정의

선택 세트의 규칙 정의
선택 세트의 규칙 정의
선택 세트 필터 리스트에서 여러 개의 기준 지정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 선택 세트로 작업 > 선택 세트의 규칙 정의 >
필터 리스트를 사용하여 선택 세트 규칙 정의

필터 리스트는 인수의 쌍으로 이루어집니다. 첫 번째 인수는 필터의 유형(예: 객체)을 식별하고, 두 번째 인수는 필터링할 값(예: 원)을 지정합니다. 필터 유형는 사용할 필터를 지정하는 DXF 그룹 코드입니다. 가장 일반적인 필터 유형 몇 가지가 아래에 나열되어 있습니다.

일반 필터용 DXF 코드
DXF 코드 | 필터 유형
0 | 객체 유형(문자열) “선,” “원,” “호” 등과 같은 유형.
2 | 객체 이름(문자열) 명명된 객체의 테이블(주어진) 이름
8 | 도면층 이름(문자열) “Layer 0”과같은 이름.
60 | 객체 가시성(정수) 0을 사용하면 가시적으로, 1을 사용하면 비가시적으로 설정됩니다.
62 | 색상 번호(정수) 0-256의 숫자 색인 값 0은 BYBLOCK을 나타냅니다. 256은 BYLAYER를 나타냅니다. 음수 값은 도면층이 꺼졌음을 나타냅니다.
67 | 모형/도면 공간 지시자(정수) 0을 사용하거나 생략하면 모형 공간으로, 1을 사용하면 도면 공간으로 설정됩니다.

DXF 그룹 코드의 전체 리스트는 DXF 참조서의 그룹 코드값 유형을 참조하십시오.

필터 인수는 배열로 선언됩니다. 필터 유형는 정수로, 필터 값은 variant로 선언됩니다. 각 필터 유형는 필터 값으로 쌍을 만들어야 합니다. 예를 들어, 다음과 같습니다.

FilterType(0) = 0 'Indicates filter refers to an object type
FilterData(0) = "Circle" 'Indicates the object type is "Circle"

선택 세트에 하나의 선택 기준 지정

다음 코드에서는 선택 세트에 포함될 객체를 선택하라는 메시지를 표시한 다음, 사용자가 선택한 객체가 원일 때만 선택 세트에 추가합니다.

Sub Ch4_FilterMtext()
   Dim sstext As AcadSelectionSet
   Dim FilterType(0) As Integer
   Dim FilterData(0) As Variant
   Set sstext = ThisDrawing.SelectionSets.Add("SS2")
   FilterType(0) = 0
   FilterData(0) = "Circle"
   sstext.SelectOnScreen FilterType, FilterData
End Sub


선택 세트 필터 리스트에서 여러 개의 기준 지정

필터 리스트를 사용하여 선택 세트 규칙 정의
선택 세트의 규칙 정의
필터 리스트 조건에 복합성 추가
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 선택 세트로 작업 > 선택 세트의 규칙 정의 >
선택 세트 필터 리스트에서 여러 개의 기준 지정

선택 기준을 여러 개 지정하려면, 각 기준을 표현하는 데 필요한 요소가 충분히 있는 배열을 선언한 다음에 각 요소에 기준을 하나씩 지정하십시오.

세 가지 기준에 맞는 객체 선택

다음 코드는 객체는 원이어야 하고, 객체는 도면층 0에 있어야 한다는 두 가지 기준을 지정합니다. 그에 따라 FilterType과 FilterData를 2개의 요소가 있는 배열로 선언하고, 각 요소에 기준을 하나씩 지정합니다.

Sub Ch4_FilterBlueCircleOnLayer0()
   Dim sstext As AcadSelectionSet
   Dim FilterType(1) As Integer
   Dim FilterData(1) As Variant
   Set sstext = ThisDrawing.SelectionSets.Add("SS4")
   FilterType(0) = 0
   FilterData(0) = "Circle"
   FilterType(1) = 8
   FilterData(1) = "0"
   sstext.SelectOnScreen FilterType, FilterData
End Sub


필터 리스트 조건에 복합성 추가

선택 세트 필터 리스트에서 여러 개의 기준 지정
선택 세트의 규칙 정의
선택 세트 필터 기준에 와일드 카드 패턴 사용
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 선택 세트로 작업 > 선택 세트의 규칙 정의 >
필터 리스트 조건에 복합성 추가

선택 기준을 여러 개 지정하면 AutoCAD는 선택한 객체가 각각의 기준에 맞는 것으로 가정합니다. 그러나 다른 방식으로 기준을 규정할 수 있습니다. 숫자 항목의 경우, 연관 연산(예: 원의 반지름이 5.0 이상이어야 함)을 지정할 수 있습니다. 모든 항목의 경우에 대해서는 논리 연산(예: Text 또는 Mtext)을 지정할 수 있습니다.

필터 지정에 연관 연산자를 포함하려면 -4 DXF 코드를 사용하십시오. 연산자를 문자열로 지정하십시오. 사용할 수 있는 연관 연산자는 다음 테이블에 나와 있습니다.

선택 세트 필터용 연관 연산자 리스트
연산자 | 설명
"*" | 모든 항목이 허용됨(항상 참)
"=" | 같음
"!=" | 같지 않음
"/=" | 같지 않음
"<>" | 같지 않음
"<" | 작음
"<=" | 작거나 같음
">" | 큼
">=" | 크거나 같음
"&" | 비트 논리곱(정수 그룹에만 적용)
"&=" | 비트 마스크 같음(정수 그룹에만 적용)

필터 리스트의 논리 연산자도 -4 그룹 코드로 표시되므로, 연산자는 문자열이되 쌍을 이루어야 합니다. 열기 연산자 앞에는 보다 작음 기호 (<)가 붙으며, 닫기 연산자 뒤에는 보다 큼 기호 (>)가 옵니다. 다음 테이블에서는 선택 세트 필터링에 사용할 수 있는 논리 연산자를 나열합니다.

선택 세트 필터용 논리 그룹 연산자 리스트
시작 연산자 | 대상 | 종료 연산자
"<AND" | 하나 이상의 피연산자 | "AND>"
"<OR" | 하나 이상의 피연산자 | "OR>"
"<XOR" | 두 개의 피연산자 | "XOR>"
"<NOT" | 하나의 피연산자 | "NOT>"

반지름이 5.0 이상인 원 선택

다음 코드에서는 선택된 객체가 반지름이 5.0 이상인 원이 되도록 지정합니다.

Sub Ch4_FilterRelational()
   Dim sstext As AcadSelectionSet
   Dim FilterType(2) As Integer
   Dim FilterData(2) As Variant
   Set sstext = ThisDrawing.SelectionSets.Add("SS5")
   FilterType(0) = 0
   FilterData(0) = "Circle"
   FilterType(1) = -4
   FilterData(1) = ">="
   FilterType(2) = 40
   FilterData(2) = 5#
   sstext.SelectOnScreen FilterType, FilterData
End Sub
문자 또는 다중 문자 선택
다음 예제에서는 Text 또는 Mtext 객체가 선택되도록 지정합니다.
Sub Ch4_FilterOrTest()
   Dim sstext As AcadSelectionSet
   Dim FilterType(3) As Integer
   Dim FilterData(3) As Variant
   Set sstext = ThisDrawing.SelectionSets.Add("SS6")
   FilterType(0) = -4
   FilterData(0) = "<or"
   FilterType(1) = 0
   FilterData(1) = "TEXT"
   FilterType(2) = 0
   FilterData(2) = "MTEXT"
   FilterType(3) = -4
   FilterData(3) = "or>"
   sstext.SelectOnScreen FilterType, FilterData
End Sub


선택 세트 필터 기준에 와일드 카드 패턴 사용

필터 리스트 조건에 복합성 추가
선택 세트의 규칙 정의
확장 데이터 필터
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 선택 세트로 작업 > 선택 세트의 규칙 정의 >
선택 세트 필터 기준에 와일드 카드 패턴 사용

필터 리스트의 기호 이름과 문자열은 와일드 카드 패턴을 포함할 수 있습니다.

다음 테이블에는 AutoCAD가 인식할 수 있는 와일드 카드 문자와 문자열 문맥에서의 의미가 요약되어 있습니다.

와일드 카드 문자
문자 | 정의
# (파운드) | 하나의 십진수에 일치
@ (앳) | 하나의 영문자에 일치
. (마침표) | 하나의 비영문자에 일치
* (별표) | 공백 문자를 포함한 임의의 일련 문자와 일치하며 처음, 중간 또는 끝 등 검색 패턴의 어디에서든지 사용할 수 있습니다.
? (물음표) | 모든 단일 문자에 일치
~ (물결 기호) | 패턴의 첫 문자로 사용되는 경우 해당 패턴을 제외한 모든 문자에 일치
[...] | 괄호 내부의 문자 중 하나와 일치
[~...] | 괄호 외부의 문자와 일치
- (하이픈) | 괄호 안에 사용되며 단일 문자에 대한 범위를 지정함
, (쉼표) | 두 패턴을 분리함
` (역 따옴표) | ESC 특수 문자(다음 문자를 읽음)

와일드카드 문자가 아닌 글자 의미대로 해석해야 한다는 것을 나타내려면 작은 따옴표(`)를 사용합니다. 예를 들어, “*U2”로 명명된 익명 블록만 선택 세트에 포함되도록 지정하려면 다음 필터 인수를 사용하십시오.

FilterType(0) = 2
FilterData(0) = "`*U2"

텍스트에 특정 단어가 포함되어 있는 다중 문자 선택

다음 코드는 선택 기준을 “The”가 문자열에 나타나는 모든 여러 줄 문자로 정의합니다. 이 예제에서는 SelectByPolygon 선택 메서드도 사용합니다.

Sub Ch4_FilterPolygonWildcard()
   Dim sstext As AcadSelectionSet
   Dim FilterType(1) As Integer
   Dim FilterData(1) As Variant
   Dim pointsArray(0 To 11) As Double
   Dim mode As Integer
   mode = acSelectionSetWindowPolygon
   pointsArray(0) = -12#: pointsArray(1) = -7#: pointsArray(2) = 0
   pointsArray(3) = -12#: pointsArray(4) = 10#: pointsArray(5) = 0
   pointsArray(6) = 10#: pointsArray(7) = 10#: pointsArray(8) = 0
   pointsArray(9) = 10#: pointsArray(10) = -7#: pointsArray(11) = 0
   Set sstext = ThisDrawing.SelectionSets.Add("SS10")
   FilterType(0) = 0
   FilterData(0) = "MTEXT"
   FilterType(1) = 1
   FilterData(1) = "*The*"
   sstext.SelectByPolygon mode, pointsArray, FilterType, FilterData
End Sub


확장 데이터 필터

선택 세트 필터 기준에 와일드 카드 패턴 사용
선택 세트의 규칙 정의
선택 세트에 대한 정보 표시
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 선택 세트로 작업 > 선택 세트의 규칙 정의 >
확장 데이터 필터

외부 응용프로그램은 문자열, 숫자 값, 3D 점, 거리 및 도면층 이름과 같은 데이터를 AutoCAD 객체에 부착할 수 있습니다. 이 데이터를 확장 데이터 또는 xdata라고 합니다. 지정된 응용프로그램의 확장 데이터가 들어 있는 도면 요소를 필터링할 수 있습니다.

확장 데이터에 대한 자세한 정보는 확장 데이터 필터를 참고하십시오.

xdata가 포함된 원 선택

다음 예제에서는 “MY_APP” 응용프로그램에 추가된 확장 데이터가 포함된 원을 필터링합니다.

Sub Ch4_FilterXdata()
   Dim sstext As AcadSelectionSet
   Dim mode As Integer
   Dim pointsArray(0 To 11) As Double
   mode = acSelectionSetWindowPolygon
   pointsArray(0) = -12#: pointsArray(1) = -7#: pointsArray(2) = 0
   pointsArray(3) = -12#: pointsArray(4) = 10#: pointsArray(5) = 0
   pointsArray(6) = 10#: pointsArray(7) = 10#: pointsArray(8) = 0
   pointsArray(9) = 10#: pointsArray(10) = -7#: pointsArray(11) = 0
   Dim FilterType(1) As Integer
   Dim FilterData(1) As Variant
   Set sstext = ThisDrawing.SelectionSets.Add("SS9")
   FilterType(0) = 0
   FilterData(0) = "Circle"
   FilterType(1) = 1001
   FilterData(1) = "MY_APP"
   sstext.SelectByPolygon mode, pointsArray, FilterType, FilterData
End Sub


선택 세트에 대한 정보 표시

확장 데이터 필터
선택 세트로 작업
선택 세트에서 객체 제거
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 선택 세트로 작업 >
선택 세트에 대한 정보 표시

이름을 알고 있는 기존 선택 세트를 참조하려면 이름별로 참조하십시오. 다음 예제는 “SS10:”으로 명명된 선택 세트를 참고합니다.

Sub GetObjInSet()
  Dim selset As AcadSelectionSet
  Set selset = ThisDrawing.SelectionSets("SS10")
  MsgBox ("Selection set " & selset.Name & " contains " & _
    selset.Count & " items")
End Sub
도면의 각 선택 세트는 SelectionSets 컬렉션의 구성원입니다. For Each 문을 도면의 SelectionSets 컬렉션 전체에 반복적으로 사용하여 각 선택 세트에 대한 정보를 수집할 수 있습니다.
도면의 각 선택 세트 이름 표시
다음 코드에서는 도면에 있는 각 선택 세트의 이름을 표시하고 각 선택 세트에 들어 있는 객체의 종류를 나열합니다.
Sub ListSelectionSets()
  Dim selsetCollection As AcadSelectionSets
  Dim selset As AcadSelectionSet
  Dim ent As Object
  Dim i, j As Integer
  Set selsetCollection = ThisDrawing.SelectionSets
  ' Find each selection set in the drawing
  i = 0
  For Each selset In selsetCollection
    MsgBox "Selection set " & CStr(i) & " is: " & selset.Name
    ' Now find each object in the selection set, and say what it is
    j = 0
    For Each ent In selset
       MsgBox "Item " & CStr(j + 1) & " in " & selset.Name _
         & "is: " & ent.EntityName
       j = j + 1
    Next
    i = i + 1
  Next
End Sub


선택 세트에서 객체 제거

선택 세트에 대한 정보 표시
선택 세트로 작업
객체 편집
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 선택 세트로 작업 >
선택 세트에서 객체 제거

선택 세트를 작성한 다음, 해당 선택 세트에서 개별 객체 또는 모든 객체를 선택하여 제거할 수 있습니다. 예를 들어, 꽉 채워진 객체 그룹 전체를 선택한 다음, 해당 세트에 배치할 객체만 남겨두고 그룹의 특정 객체를 제거할 수 있습니다.

선택 세트에서 항목을 제거하려면 다음 메서드를 사용하십시오.

RemoveItems

RemoveItems 메서드는 선택 세트로부터 하나 또는 그 이상의 항목을 제거합니다. 제거된 항목이 여전히 존재하지만, 더 이상 선택 세트에 상주하지 않습니다.

Clear

Clear 메서드는 선택 세트를 지웁니다. 선택 세트는 여전히 존재하지만 그 안에는 항목은 없습니다. 이전에 선택에 상주했던 항목이 여전히 존재하지만, 더 이상 선택 세트에 상주하지 않습니다.

Erase

Erase 메서드는 선택 세트의 모든 항목을 삭제합니다. 그래도 선택 세트는 존재하지만 그 안에는 항목이 들어 있지 않습니다. 이전에 선택 세트에 상주했던 항목이 더 이상 존재하지 않습니다.

Delete

Delete 메서드는 선택 세트와 그 안에 있는 모든 항목을 삭제합니다. 선택 세트나 선택 세트에 있었던 항목도 Delete 메서드를 호출한 후에는 존재하지 않습니다.


객체 편집

선택 세트에서 객체 제거
AutoCAD 도면요소 작성 및 편집
명명된 객체와 작업
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 >
객체 편집

기존 객체를 수정하려면 해당 객체와 연관된 메서드와 특성을 사용하십시오. 그래픽 객체의 가시적 특성을 수정하는 경우, Update 메서드를 사용하여 객체를 화면에 다시 그리십시오.

이 절에서는 2D 객체를 편집하는 방법을 설명합니다.

이 단원의 항목

  • 명명된 객체와 작업
  • 객체 복사
  • 객체 간격띄우기
  • 객체 대칭
  • 객체 배열
  • 객체 이동
  • 객체 회전
  • 객체 삭제
  • 객체 축척
  • 객체 변환
  • 객체 연장 및 자르기
  • 객체 분해
  • 폴리선 편집
  • 스플라인 편집
  • 해치 편집


명명된 객체와 작업

객체 편집
객체 편집
명명된 객체 소거
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 >
명명된 객체와 작업

AutoCAD에서 사용되는 그래픽 객체 이외에도 도면 파일에 저장된 몇 가지 유형의 비그래픽 객체가 있습니다. 이러한 객체에는 블록, 도면층, 그룹, 치수 스타일 등과 같이 객체와 연관된 설명이 있습니다. 대부분의 경우, 객체를 작성할 때 명명한 후 나중에 이름을 바꿀 수 있습니다. 이름은 기호 테이블에 저장됩니다. 명명된 객체를 지정할 때, 기호 테이블에 있는 객체의 이름 및 관련 데이터를 참조하게 됩니다.

이 단원의 항목

  • 명명된 객체 소거
  • 객체 이름 바꾸기


명명된 객체 소거

명명된 객체와 작업
명명된 객체와 작업
객체 이름 바꾸기
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 > 명명된 객체와 작업 >
명명된 객체 소거

명명된 객체 중에서 사용되지 않거나 참조되지 않는 객체는 편집 세션 중에 언제라도 도면에서 소거할 수 있습니다. 소거하면 도면 크기가 줄어듭니다. 다른 객체가 참조하는 객체는 소거할 수 없습니다. 예를 들어, 글꼴 파일은 문자 스타일에서 참조할 수 있습니다. 도면층은 도면층의 객체가 참조합니다.

도면을 소거하려면 다음과 같이 PurgeAll 메서드를 사용하십시오.

ThisDrawing.PurgeAll


객체 이름 바꾸기

명명된 객체 소거
명명된 객체와 작업
객체 복사
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 > 명명된 객체와 작업 >
객체 이름 바꾸기

도면이 복잡해짐에 따라, 이름을 의미 있게 유지하거나 또는 기본 도면에 삽입된 다른 도면의 이름과 충돌을 방지하기 위해 객체의 이름을 변경할 수 있습니다.

도면층 0이나 CONTINUOUS 선종류와 같이 AutoCAD가 기본값으로 명명한 객체를 제외하고, 모든 명명된 객체의 이름을 바꿀 수 있습니다.

이름은 최대 255자까지 사용할 수 있습니다. 이름은 문자와 숫자 외에도 공백(AutoCAD는 이름 바로 앞이나 뒤에 오는 공백을 제거하지만)과 Microsoft Windows 또는 AutoCAD에서 다른 목적으로 사용되지 않는 특수 문자를 포함할 수 있습니다. 사용할 수 없는 특수 문자에는 부등호(< >), 슬래시와 백슬래시(/ \), 큰 따옴표("), 콜론(:), 세미콜론(;), 물음표(?), 쉼표(,), 별표(*), 수직 막대(|), 등호(=) 및 작은 따옴표(')가 있습니다. 유니코드 글꼴로 작성된 특수 문자도 사용할 수 없습니다.

객체의 이름을 바꾸려면 해당 객체의 Name 특성을 사용하십시오.

도면층 이름 바꾸기

이 예제에서는 “NewLayer”라는 도면층을 작성한 다음 “MyLayer”로 이름을 바꿉니다.

Sub Ch4_RenamingLayer()
    ' Create a layer
    Dim layerObj As AcadLayer
    Set layerObj = ThisDrawing.Layers.Add("NewLayer")
    ' Change the name of the layer
    layerObj.Name = "MyLayer"
End Sub


객체 복사

객체 이름 바꾸기
객체 편집
같은 위치에 객체 복사
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 >
객체 복사

현재의 도면의 객체를 하나 또는 여러 개 복사할 수 있습니다. 간격띄우기는 선택된 객체에서 지정된 거리에 또는 지정된 점을 통해 새로운 객체를 작성합니다. 대칭은 지정된 대칭선으로 객체의 대칭 이미지를 작성합니다. 배열하기는 복사된 객체 세트를 직사각형 또는 원형 패턴으로 작성합니다.

객체 복사에 대한 자세한 정보는 사용자 안내서의 “객체 복사, 간격띄우기 및 대칭”을 참고하십시오.

주컬렉션에서 반복하면서 copy 메서드를 동시에 수행할 수 없습니다. 반복 작업은 이 메서드가 읽기-쓰기 작업 실행을 시도하는 중에 읽기 전용 작업을 위해 작업공간을 엽니다. 이러한 메서드를 호출하기 전에 컬렉션 반복을 완료하십시오.

이 단원의 항목

  • 같은 위치에 객체 복사
  • 다중 객체 복사


같은 위치에 객체 복사

객체 복사
객체 복사
다중 객체 복사
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 > 객체 복사 >
같은 위치에 객체 복사

단일 객체를 복사하려면 해당 객체에 제공된 Copy 메서드를 사용하십시오. 이 메서드는 원본 객체를 복제한 새로운 객체를 작성합니다. 새로운 객체는 원본과 같은 위치에 있으며 복사 메서드에 의해 반환됩니다.


다중 객체 복사

같은 위치에 객체 복사
객체 복사
객체 간격띄우기
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 > 객체 복사 >
다중 객체 복사

다중 객체를 복사하려면 CopyObjects 메서드를 사용하거나 Copy 메서드를 사용해서 객체 배열을 작성하십시오. (선택 세트의 객체를 복사하려면 선택 세트를 반복하고 객체를 배열에 저장하십시오.) 배열을 반복하여 각 객체를 따로 복사하고 새로 작성한 객체를 2차 배열에 모으십시오.

여러 개의 객체를 다른 도면으로 복사하려면, CopyObjects 메서드를 사용하고 Owner 매개변수를 도면의 모형 공간으로 설정합니다.

2개의 원 객체 복사

이 예제에서는 2개의 Circle 객체를 작성한 다음, CopyObjects 메서드를 사용하여 원을 복사합니다.

Sub Ch4_CopyCircleObjects()
    Dim DOC1 As AcadDocument
    Dim circleObj1 As AcadCircle
    Dim circleObj2 As AcadCircle
    Dim circleObj1Copy As AcadCircle
    Dim circleObj2Copy As AcadCircle
    Dim centerPoint(0 To 2) As Double
    Dim radius1 As Double
    Dim radius2 As Double
    Dim radius1Copy As Double
    Dim radius2Copy As Double
    Dim objCollection(0 To 1) As Object
    Dim retObjects As Variant
    ' Define the Circle object
    centerPoint(0) = 0: centerPoint(1) = 0: centerPoint(2) = 0
    radius1 = 5#: radius2 = 7#
    radius1Copy = 1#: radius2Copy = 2#
       ' Create a new drawing
    Set DOC1 = ThisDrawing.Application.Documents.Add
    ' Add two circles to the drawing
    Set circleObj1 = DOC1.ModelSpace.AddCircle _
                     (centerPoint, radius1)
    Set circleObj2 = DOC1.ModelSpace.AddCircle _
                     (centerPoint, radius2)
    ZoomAll
    ' Put the objects to be copied into a form
    ' compatible with CopyObjects
    Set objCollection(0) = circleObj1
    Set objCollection(1) = circleObj2
    ' Copy object and get back a collection of
    ' the new objects (copies)
    retObjects = DOC1.CopyObjects(objCollection)
    ' Get newly created object and apply
    ' new properties to the copies
    Set circleObj1Copy = retObjects(0)
    Set circleObj2Copy = retObjects(1)
    circleObj1Copy.radius = radius1Copy
    circleObj1Copy.Color = acRed
    circleObj2Copy.radius = radius2Copy
    circleObj2Copy.Color = acRed
    ZoomAll
End Sub
객체를 다른 도면으로 복사
이 예제는 Circle 객체를 작성하고, CopyObjects 메서드를 사용하여 원을 새 도면으로 복사합니다.
Sub Ch3_NewDrawing()
    Dim DOC1 As AcadDocument
    Dim circleObj1 As AcadCircle, circleObj2 As AcadCircle
    Dim centerPoint(0 To 2) As Double
    Dim radius1 As Double, radius2 As Double
    Dim radius1Copy As Double, radius2Copy As Double
    Dim objCollection(0 To 1) As Object
    Dim retObjects As Variant
    ' Define the Circle object
    centerPoint(0) = 0: centerPoint(1) = 0: centerPoint(2) = 0
    radius1 = 5#: radius2 = 7#
    radius1Copy = 1#: radius2Copy = 2#
    ' Add two circles to the drawing
    Set circleObj = ThisDrawing.ModelSpace.AddCircle _
                    (centerPoint, radius1)
    Set circleObj = ThisDrawing.ModelSpace.AddCircle _
                    (centerPoint, radius2)
    ThisDrawing.Application.ZoomAll
    ' Save pointer to the current drawing
    Set DOC1 = ThisDrawing.Application.Documents.Add
    ' Copy objects
    '
    ' First put the objects to be copied into a form compatible with CopyObjects
    ' with CopyObjects
    Set objCollection(0) = circleObj1
    Set objCollection(1) = circleObj2
    ' Create a new drawing and point to its model space
    Dim Doc1MSpace As AcadModelSpace
    Dim DOC1 As AcadDocument
    Set DOC1 = Documents.Add
    Set Doc1MSpace = DOC1.ModelSpace
    ' Copy the objects into the model space of the new drawing. A
    ' collection of the new (copied) objects is returned.
    retObjects = DOC1.CopyObjects(objCollection)
    Dim circleObj1Copy As AcadCircle, circleObj2Copy As AcadCircle
    ' Get the newly created object collection and apply new
    ' new properties to the copies
    Set circleObj1Copy = retObjects(0)
    Set circleObj2Copy = retObjects(1)
    circleObj1Copy.radius = radius1Copy
    circleObj1Copy.Color = acRed
    circleObj2Copy.radius = radius2Copy
    circleObj2Copy.Color = acRed
    ThisDrawing.Application.ZoomAll
    MsgBox "Circles copied."
End Sub


객체 간격띄우기

다중 객체 복사
객체 편집
객체 대칭
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 >
객체 간격띄우기

객체 간격띄우기는 원본 객체로부터 지정된 간격띄우기 거리에 새로운 객체를 작성합니다. 호, 원, 타원, 선, 단순 폴리선, 폴리선, 스플라인 및 X선을 간격띄우기할 수 있습니다.

객체를 간격띄우기하려면 해당 객체에 제공된 Offset 메서드를 사용하십시오. 이 메서드에서는 객체를 간격띄우기할 거리만 입력하면 됩니다. 이 거리가 음수이면 AutoCAD에서는 “더 작은” 곡선을 만드는 간격띄우기가 되도록 해석합니다(즉, 호의 경우 지정된 거리가 시작 곡선 반지름보다 작은 반지름으로 간격띄우기함). “더 작은” 곡선이 의미가 없으면 AutoCAD에서는 더 작은 X,Y,Z WCS 좌표의 방향으로 간격띄우기합니다. 간격띄우기 거리가 부적합하면 오류가 반환됩니다.

많은 객체의 경우, 이 작업의 결과는 원본 곡선과 같은 유형이 아닐 수 있는 새로운 단일 곡선이 됩니다. 예를 들어 타원을 간격띄우기하면 결과가 타원의 방정식에 맞기 때문에 결국 스플라인이 됩니다. 일부 경우 간격띄우기 결과가 여러 개의 곡선이 될 필요가 있을 수 있습니다. 그러므로 메서드는 새로운 객체나 객체의 배열을 variant로서 반환합니다.

객체 간격띄우기에 대한 자세한 정보는 사용자 안내서의 “객체 복사, 간격띄우기 및 대칭”을 참고하십시오.

폴리선 간격띄우기

이 예제는 단순 폴리선을 작성한 다음, 폴리선을 간격띄우기합니다.

Sub Ch4_OffsetPolyline()
    ' Create the polyline
    Dim plineObj As AcadLWPolyline
    Dim points(0 To 11) As Double
    points(0) = 1: points(1) = 1
    points(2) = 1: points(3) = 2
    points(4) = 2: points(5) = 2
    points(6) = 3: points(7) = 2
    points(8) = 4: points(9) = 4
    points(10) = 4: points(11) = 1
    Set plineObj = ThisDrawing.ModelSpace. _
                   AddLightWeightPolyline(points)
    plineObj.Closed = True
    ZoomAll
    ' Offset the polyline
    Dim offsetObj As Variant
    offsetObj = plineObj.Offset(0.25)
ZoomAll
End Sub


객체 대칭

객체 간격띄우기
객체 편집
객체 배열
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 >
객체 대칭

대칭하기는 축이나 대칭선을 기준으로 객체의 대칭 이미지 사본을 작성합니다. 모든 도면 객체를 대칭시킬 수 있습니다.

객체를 대칭하려면 해당 객체에 제공된 Mirror 메서드를 사용하십시오. 이 메서드에서는 2개의 좌표를 입력해야 합니다. 지정된 2개의 좌표는 기준 객체가 반영될 대칭선의 두 끝점이 됩니다. 이 선은 3D에서 대칭선이 들어 있는 UCS의 XY 평면과 수직인 대칭 평면이 됩니다.

AutoCAD의 대칭 명령과 달리 이 메서드는 반사된 이미지를 도면에 넣고 원본 객체를 유지합니다. (원본 객체를 제거하려면 Erase 메서드를 사용하십시오.

Text 객체의 반사 특성을 관리하려면 MIRRTEXT 시스템 변수를 사용하십시오. MIRRTEXT의 기본 설정은 켜기(1)로서, 다른 객체와 마찬가지로 Text 객체가 대칭됩니다. MIRRTEXT가 끄기(0)로 설정되면 문자가 대칭되지 않습니다. MIRRTEXT 설정을 조회하고 설정하려면 GetVariable 및 SetVariable 메서드를 사용하십시오.

도면 공간에 있는 Viewport 객체를 대칭시킬 수도 있지만, 그렇게 해도 모형 공간 뷰나 모형 공간 객체에는 영향이 미치지 않습니다.

객체 대칭에 대한 자세한 정보는 사용자 안내서의 “객체 복사, 간격띄우기 및 대칭”을 참고하십시오.

축을 중심으로 폴리선 대칭

이 예제는 단순 폴리선을 작성하고 해당 폴리선을 축을 기준으로 대칭시킵니다. 새로 작성된 폴리선은 파랑색으로 지정됩니다.

Sub Ch4_MirrorPolyline()
    ' Create the polyline
    Dim plineObj As AcadLWPolyline
    Dim points(0 To 11) As Double
    points(0) = 1: points(1) = 1
    points(2) = 1: points(3) = 2
    points(4) = 2: points(5) = 2
    points(6) = 3: points(7) = 2
    points(8) = 4: points(9) = 4
    points(10) = 4: points(11) = 1
    Set plineObj = ThisDrawing.ModelSpace. _
               AddLightWeightPolyline(points)
    plineObj.Closed = True
    ZoomAll
    ' Define the mirror axis
    Dim point1(0 To 2) As Double
    Dim point2(0 To 2) As Double
    point1(0) = 0: point1(1) = 4.25: point1(2) = 0
    point2(0) = 4: point2(1) = 4.25: point2(2) = 0
    ' Mirror the polyline
    Dim mirrorObj As AcadLWPolyline
    Set mirrorObj = plineObj.Mirror(point1, point2)
    Dim col As New AcadAcCmColor
    Call col.SetRGB(125, 175, 235)
    mirrorObj.TrueColor = col
    ZoomAll
End Sub


객체 배열

객체 대칭
객체 편집
원형 배열 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 >
객체 배열

원형 또는 직사각형 배열로 객체를 복사할 수 있습니다. 원형 배열의 경우, 객체의 사본 수와 배열을 채울 각도가 조정됩니다. 직사각형 배열의 경우에는 행과 열의 수와 그 사이의 거리가 조정됩니다.

배열에 대한 자세한 정보는 사용자 안내서의 “객체 배열 작성”을 참고하십시오.

이 단원의 항목

  • 원형 배열 작성
  • 직사각형 배열 작성


원형 배열 작성

객체 배열
객체 배열
직사각형 배열 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 > 객체 배열 >
원형 배열 작성

모든 도면 객체를 배열할 수 있습니다. 원형 배열을 작성하려면 해당 객체에 제공된 ArrayPolar 메서드를 사용하십시오. 이 메서드에서는 작성할 객체 수, 채울 각도 및 배열의 중심점을 제공해야 합니다. 객체 수는 1 이상의 양의 정수이어야 합니다 채울 각도는 라디안으로 표시해야 합니다. 양의 값은 시계 반대 방향 회전을 지정합니다. 음의 값은 시계방향 회전을 지정합니다. 각도가 0이면 오류가 반환됩니다. 중심점은 3개의 배정도가 들어 있는 variant 배열입니다. 이들 배정도는 원형 배열의 중심점을 지정하는 3D WCS 좌표를 나타냅니다.

AutoCAD는 배열의 중심점과 원본 객체의 참조점 간의 거리를 결정합니다. 객체 유형에 따라 다른 참조점이 사용됩니다. AutoCAD는 원이나 호의 중심점, 블록이나 쉐이프의 삽입점, 문자의 시작점 및 선이나 두께선의 한 끝점을 사용합니다.

이 메서드는 AutoCAD ARRAY 명령의 복사 중 회전 옵션을 지원하지 않습니다.

원형 배열 작성

이 예제는 원을 작성한 다음, 원을 원형으로 배열합니다. 그러면 기준점(4, 4, 0) 주위에 180도를 채운 4개의 원이 작성됩니다.

Sub Ch4_ArrayingACircle()
    ' Create the circle
    Dim circleObj As AcadCircle
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 2#: center(1) = 2#: center(2) = 0#
    radius = 1
    Set circleObj = ThisDrawing.ModelSpace. _
                    AddCircle(center, radius)
    ZoomAll
    ' Define the polar array
    Dim noOfObjects As Integer
    Dim angleToFill As Double
    Dim basePnt(0 To 2) As Double
    noOfObjects = 4
    angleToFill = 3.14 ' 180 degrees
    basePnt(0) = 4#: basePnt(1) = 4#: basePnt(2) = 0#
    ' The following example will create 4 copies
    ' of an object by rotating and copying it about
    ' the point (3,3,0).
    Dim retObj As Variant
    retObj = circleObj.ArrayPolar _
             (noOfObjects, angleToFill, basePnt)
    ZoomAll
End Sub


직사각형 배열 작성

원형 배열 작성
객체 배열
객체 이동
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 > 객체 배열 >
직사각형 배열 작성

2D 또는 3D 직사각형 배열을 작성하려면 해당 객체에 제공된 ArrayRectangular 메서드를 사용하십시오. 이 메서드에서는 행 수, 열 수, 행 사이의 거리, 열 사이의 거리를 제공해야 합니다. 3D 배열을 작성할 때는 레벨 수와 레벨 사이의 거리도 지정해야 합니다.

직사각형 배열은 선택 세트의 객체를 적절한 횟수만큼 복제해서 구성됩니다. 하나의 행을 정의하는 경우, 하나보다 많은 열을 지정해야 합니다. 그리고 그 반대의 경우도 마찬가지입니다.

원래 객체는 왼쪽 아래 구석에 있다고 가정하고 오른쪽 위로 배열이 생성됩니다. 행 사이 거리가 음수이면, 행이 아래로 추가됩니다. 열 사이의 거리가 음수이면 열이 왼쪽에 추가됩니다.

AutoCAD는 현재 스냅 회전 각도로 정의되는 기준선을 따라 직사각형 배열을 구성합니다. 이 각도는 기본값이 0이므로 직사각형 배열의 열과 행은 X와 Y 도면축에 대해 직각을 이룹니다. 스냅 회전 각도를 0이 아닌 값으로 설정함으로써, 이 각도를 변경하여 회전된 배열을 작성할 수 있습니다. 그러기 위해서는 SnapRotationAngle 특성을 사용합니다.

직사각형 배열 작성

이 예제에서는 원을 작성한 다음 직사각형 배열을 수행하여 원의 행과 열을 각각 5개씩 작성합니다.

Sub Ch4_ArrayRectangularExample()
    ' Create the circle
    Dim circleObj As AcadCircle
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 2#: center(1) = 2#: center(2) = 0#
    radius = 0.5
    Set circleObj = ThisDrawing.ModelSpace. _
                           AddCircle(center, radius)
    ZoomAll
    ' Define the rectangular array
    Dim numberOfRows As Long
    Dim numberOfColumns As Long
    Dim numberOfLevels As Long
    Dim distanceBwtnRows As Double
    Dim distanceBwtnColumns As Double
    Dim distanceBwtnLevels As Double
    numberOfRows = 5
    numberOfColumns = 5
    numberOfLevels = 2
    distanceBwtnRows = 1
    distanceBwtnColumns = 1
    distanceBwtnLevels = 1
    ' Create the array of objects
    Dim retObj As Variant
    retObj = circleObj.ArrayRectangular _
        (numberOfRows, numberOfColumns, numberOfLevels, _
        distanceBwtnRows, distanceBwtnColumns, distanceBwtnLevels)
    ZoomAll
End Sub


객체 이동

직사각형 배열 작성
객체 편집
벡터를 따라 객체 이동
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 >
객체 이동

방향이나 크기를 변경하지 않아도 벡터를 따라 객체를 이동할 수 있습니다. 객체를 기준점 주위로 회전할 수도 있습니다.

객체 이동에 대한 자세한 정보는 사용자 안내서의 “객체 이동”을 참고하십시오.

이 단원의 항목

  • 벡터를 따라 객체 이동


벡터를 따라 객체 이동

객체 이동
객체 이동
객체 회전
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 > 객체 이동 >
벡터를 따라 객체 이동

모든 도면 객체와 속성 참조 객체는 지정된 벡터를 따라 이동할 수 있습니다.

객체를 이동하려면 해당 객체에 제공된 Move 메서드를 사용하십시오. 이 메서드에서는 2개의 좌표를 입력해야 합니다. 이들 좌표는 주어진 객체의 이동 거리 및 이동 방향을 나타내는 변위 벡터를 정의합니다.

벡터를 따라 원 이동

이 예제에서는 원을 작성한 다음 X 축을 따라 2단위 만큼 원을 이동합니다.

Sub Ch4_MoveCircle()
    ' Create the circle
    Dim circleObj As AcadCircle
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 2#: center(1) = 2#: center(2) = 0#
    radius = 0.5
    Set circleObj = ThisDrawing.ModelSpace. _
                    AddCircle(center, radius)
    ZoomAll
    ' Define the points that make up the move vector.
    ' The move vector will move the circle 2 units
    ' along the x axis.
    Dim point1(0 To 2) As Double
    Dim point2(0 To 2) As Double
    point1(0) = 0: point1(1) = 0: point1(2) = 0
    point2(0) = 2: point2(1) = 0: point2(2) = 0
    ' Move the circle
    circleObj.Move point1, point2
    circleObj.Update
End Sub


객체 회전

벡터를 따라 객체 이동
객체 편집
객체 삭제
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 >
객체 회전

도면 객체와 속성 참조 객체를 모두 회전할 수 있습니다.

객체를 회전하려면 해당 객체에 제공된 Rotate 메서드를 사용하십시오. 이 메서드에서는 기준점과 회전 각도를 입력해야 합니다. 기준점은 3개의 배정도가 있는 variant 배열입니다. 이들 배정도는 회전축이 정의되는 점을 지정하는 3D WCS 좌표를 나타냅니다. 회전 각도는 라디안으로 지정됩니다. 이 각도는 객체가 현재 위치에 상대적인 기준점 주위로 회전되는 거리를 결정합니다.

객체 회전에 대한 자세한 정보는 사용자 안내서의 “객체 회전”을 참고하십시오.

기준점을 중심으로 폴리선 회전

이 예제에서는 닫힌 단순 폴리선을 작성한 다음 기준점(4, 4.25, 0)을 중심으로 45도 회전합니다.

Sub Ch4_RotatePolyline()
    ' Create the polyline
    Dim plineObj As AcadLWPolyline
    Dim points(0 To 11) As Double
    points(0) = 1: points(1) = 2
    points(2) = 1: points(3) = 3
    points(4) = 2: points(5) = 3
    points(6) = 3: points(7) = 3
    points(8) = 4: points(9) = 4
    points(10) = 4: points(11) = 2
    Set plineObj = ThisDrawing.ModelSpace. _
                   AddLightWeightPolyline(points)
    plineObj.Closed = True
    ZoomAll
    ' Define the rotation of 45 degrees about a
    ' base point of (4, 4.25, 0)
    Dim basePoint(0 To 2) As Double
    Dim rotationAngle As Double
    basePoint(0) = 4: basePoint(1) = 4.25: basePoint(2) = 0
    rotationAngle = 0.7853981 ' 45 degrees
    ' Rotate the polyline
    plineObj.Rotate basePoint, rotationAngle
    plineObj.Update
End Sub


객체 삭제

객체 회전
객체 편집
객체 축척
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 >
객체 삭제

Delete 메서드를 사용하여 개별 객체를 삭제할 수 있습니다.

주ActiveX Automation의 Collection 객체에는 이들 객체가 타입 라이브러리에 정의된 방식 때문에 Delete 메서드가 있습니다. 그러나 ModelSpace 컬렉션, Layers 컬렉션 및 Dictionaries 컬렉션과 같은 Collection 객체는 삭제되지 않습니다. 컬렉션을 삭제하려고 시도하면 오류가 발생합니다.

폴리선 작성 및 삭제

이 예제에서는 단순 폴리선을 작성한 다음 삭제합니다.

Sub Ch4_DeletePolyline()
    ' Create the polyline
    Dim lwpolyObj As AcadLWPolyline
    Dim vertices(0 To 5) As Double
    vertices(0) = 2: vertices(1) = 4
    vertices(2) = 4: vertices(3) = 2
    vertices(4) = 6: vertices(5) = 4
    Set lwpolyObj = ThisDrawing.ModelSpace. _
                 AddLightWeightPolyline(vertices)
    ZoomAll
' Erase the polyline
    lwpolyObj.Delete
    ThisDrawing.Regen acActiveViewport
End Sub


객체 축척

객체 삭제
객체 편집
객체 변환
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 >
객체 축척

객체는 현재 도면 단위에 근거하여 축척 비율로 사용되는 기준점과 길이를 지정하여 축척됩니다. 속성 참조 객체는 물론, 모든 도면 객체도 축척할 수 있습니다.

객체를 축척하려면 해당 객체에 제공된 ScaleEntity 메서드를 사용하십시오. 이 메서드는 객체를 X, Y와 Z 방향에서 똑같이 축척합니다. 축척 기준점과 축척 비율을 입력으로 사용합니다. 기준점은 3개의 배정도가 있는 variant 배열입니다. 이들 배정도는 축척이 시작되는 점을 지정하는 3D WCS 좌표를 나타냅니다. 축척 비율은 객체를 축척할 비율입니다. 객체의 치수는 축척 비율을 곱한 값입니다. 1보다 큰 축척 비율은 객체를 확대합니다. 0과 1사이의 축척 비율은 객체를 축소합니다.

축척에 대한 자세한 정보는 사용자 안내서의 “객체 크기 조정 또는 쉐이프 조정”을 참고하십시오.

폴리선 축척

이 예제에서는 닫힌 단순 폴리선을 작성한 다음 0.5배 비율로 축적합니다.

Sub Ch4_ScalePolyline()
    ' Create the polyline
    Dim plineObj As AcadLWPolyline
    Dim points(0 To 11) As Double
    points(0) = 1: points(1) = 2
    points(2) = 1: points(3) = 3
    points(4) = 2: points(5) = 3
    points(6) = 3: points(7) = 3
    points(8) = 4: points(9) = 4
    points(10) = 4: points(11) = 2
    Set plineObj = ThisDrawing.ModelSpace. _
                      AddLightWeightPolyline(points)
    plineObj.Closed = True
    ZoomAll
    ' Define the scale
    Dim basePoint(0 To 2) As Double
    Dim scalefactor As Double
    basePoint(0) = 4: basePoint(1) = 4.25: basePoint(2) = 0
    scalefactor = 0.5
    ' Scale the polyline
    plineObj.ScaleEntity basePoint, scalefactor
    plineObj.Update
End Sub


객체 변환

객체 축척
객체 편집
객체 연장 및 자르기
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 >
객체 변환

TransformBy 메서드를 사용하여 주어진 4x4 변환 행렬로 객체를 이동, 축적 또는 회전할 수 있습니다.

다음 테이블은 변환 행렬 구성을 보여줍니다. 여기에서 R = 회전, T = 변환입니다.

변환 행렬 구성
R00 | R01 | R02 | T0
R10 | R11 | R12 | T1
R20 | R21 | R22 | T2
0 | 0 | 0 | 1

객체를 변환하려면 먼저 변환 행렬을 초기화하십시오. 다음 예제는 도면 요소를 점(0, 0, 0) 주위로 90도까지 회전하는 변수 tMatrix에 지정된 변환 행렬을 보여줍니다.

tMatrix(0,0) = 0.0
tMatrix(0,1) = -1.0
tMatrix(0,2) = 0.0
tMatrix(0,3) = 0.0
tMatrix(1,0) = 1.0
tMatrix(1,1) = 0.0
tMatrix(1,2) = 0.0
tMatrix(1,3) = 0.0
tMatrix(2,0) = 0.0
tMatrix(2,1) = 0.0
tMatrix(2,2) = 1.0
tMatrix(2,3) = 0.0
tMatrix(3,0) = 0.0
tMatrix(3,1) = 0.0
tMatrix(3,2) = 0.0
tMatrix(3,3) = 1.0

변환 행렬이 완료되면 TransformBy 메서드를 사용하여 행렬을 객체에 적용하십시오. 다음 코드 행은 행렬(tMatrix)을 객체(anObj)에 적용하는 것을 보여줍니다.

anObj.TransformBy tMatrix

변환 행렬을 사용하여 선 회전

다음 예제에서는 선을 작성한 다음 변환 행렬을 사용하여 선을 90도 회전합니다.

Sub Ch4_TransformBy()
    ' Create a line
    Dim lineObj As AcadLine
    Dim startPt(0 To 2) As Double
    Dim endPt(0 To 2) As Double
    startPt(0) = 2
    startPt(1) = 1
    startPt(2) = 0
    endPt(0) = 5
    endPt(1) = 1
    endPt(2) = 0
    Set lineObj = ThisDrawing.ModelSpace. _
                AddLine(startPt, endPt)
    ZoomAll
    ' Initialize the transMat variable with a
    ' transformation matrix that will rotate
    ' an object by 90 degrees about the point(0,0,0)
    Dim transMat(0 To 3, 0 To 3) As Double
    transMat(0, 0) = 0#: transMat(0, 1) = -1#
    transMat(0, 2) = 0#: transMat(0, 3) = 0#
    transMat(1, 0) = 1#: transMat(1, 1) = 0#
    transMat(1, 2) = 0#: transMat(1, 3) = 0#
    transMat(2, 0) = 0#: transMat(2, 1) = 0#
    transMat(2, 2) = 1#: transMat(2, 3) = 0#
    transMat(3, 0) = 0#: transMat(3, 1) = 0#
    transMat(3, 2) = 0#: transMat(3, 3) = 1#
    ' Transform the line using the defined transformation matrix
    lineObj.TransformBy transMat
    lineObj.Update
End Sub
다음은 변환 행렬에 대한 몇 가지 예제입니다.
회전 행렬: 점(0, 0, 0)을 중심으로 90도
0.0 | -1.0 | 0.0 | 0.0
1.0 | 0.0 | 0.0 | 0.0
0.0 | 0.0 | 1.0 | 0.0
0.0 | 0.0 | 0.0 | 1.0
회전 행렬: 점 (5, 5, 0)을 중심으로 45도
0.707107 | -0.707107 | 0.0 | 5.0
0.707107 | 0.707107 | 0.0 | -2.071068
0.0 | 0.0 | 1.0 | 0.0
0.0 | 0.0 | 0.0 | 1.0
변환 행렬: (10, 10, 0)만큼 도면요소 이동
1.0 | 0.0 | 0.0 | 10.0
0.0 | 1.0 | 0.0 | 10.0
0.0 | 0.0 | 1.0 | 0.0
0.0 | 0.0 | 0.0 | 1.0
축척 행렬: 점 (0, 0, 0)에서 10,10 비율로 축척
10.0 | 0.0 | 0.0 | 0.0
0.0 | 10.0 | 0.0 | 0.0
0.0 | 0.0 | 10.0 | 0.0
0.0 | 0.0 | 0.0 | 1.0
축척 행렬: 점 (2, 2, 0)에서 10,10 비율로 축척
10.0 | 0.0 | 0.0 | -18.0
0.0 | 10.0 | 0.0 | -18.0
0.0 | 0.0 | 10.0 | 0.0
0.0 | 0.0 | 0.0 | 1.0


객체 연장 및 자르기

객체 변환
객체 편집
객체 분해
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 >
객체 연장 및 자르기

호의 각도를 변경할 수 있으며, 열린 선, 호, 열린 폴리선, 타원형 호 및 열린 스플라인의 길이를 변경할 수 있습니다. 길이를 변경한 결과는 객체 연장과 자르기의 2가지 작업 결과와 비슷합니다.

특성을 편집하여 객체를 연장하거나 자를 수 있습니다. 예를 들어 선을 연장하려면 StartPoint 또는 EndPoint 특성의 좌표를 변경하면 됩니다. 호의 각도를 변경하려면 호의 StartAngle 또는 EndAngle 특성을 변경하십시오. 객체의 특성을 변경한 다음에는 Update 메서드를 사용하여 도면의 변경 사항을 확인할 수 있습니다.

객체 연장 및 자르기에 대한 자세한 정보는 사용자 안내서의 “객체 크기 조정 또는 쉐이프 조정”을 참고하십시오.

선 길이 늘이기

이 예제는 선을 작성한 다음, 더 길어진 선의 끝점을 변경합니다.

Sub Ch4_LengthenLine()
    ' Define and create the line
    Dim lineObj As AcadLine
    Dim startPoint(0 To 2) As Double
    Dim endPoint(0 To 2) As Double
    startPoint(0) = 0
    startPoint(1) = 0
    startPoint(2) = 0
    endPoint(0) = 1
    endPoint(1) = 1
    endPoint(2) = 1
    Set lineObj = ThisDrawing.ModelSpace. _
                  AddLine(startPoint, endPoint)
    lineObj.Update
    ' Lengthen the line by changing the
    ' endpoint to 4, 4, 4
    endPoint(0) = 4
    endPoint(1) = 4
    endPoint(2) = 4
    lineObj.endPoint = endPoint
    lineObj.Update
End Sub


객체 분해

객체 연장 및 자르기
객체 편집
폴리선 편집
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 >
객체 분해

객체를 분해하면 하나의 객체가 해당 구성 요소로 변환되지만 눈에 보이는 효과는 없습니다. 예를 들어 분해하기는 3D 다각형, 폴리선, 다각형 메쉬 및 영역들로부터 단순한 선과 호를 형성합니다. 블록을 구성하는 단순 객체의 사본으로 블록 참조를 대치합니다.

객체 분해에 대한 자세한 정보는 사용자 안내서의 “복합 객체 연관해제(분해)”를 참고하십시오.

폴리선 분해

이 예제는 단순 폴리선 객체를 작성합니다. 그런 다음, 폴리선을 별도의 객체로 분해합니다. 그러면 예제가 결과 객체를 반복하고, 분해된 객체의 리스트에 각 객체의 이름과 색인이 들어 있는 메시지 상자를 표시합니다.

Sub Ch4_ExplodePolyline()
    Dim plineObj As AcadLWPolyline
    Dim points(0 To 11) As Double
    ' Define the 2D polyline points
    points(0) = 1: points(1) = 1
    points(2) = 1: points(3) = 2
    points(4) = 2: points(5) = 2
    points(6) = 3: points(7) = 2
    points(8) = 4: points(9) = 4
    points(10) = 4: points(11) = 1
    ' Create a light weight Polyline object
    Set plineObj = ThisDrawing.ModelSpace. _
                  AddLightWeightPolyline(points)
    ' Set the bulge on one segment to vary the
    ' type of objects in the polyline
    plineObj.SetBulge 3, -0.5
    plineObj.Update
    ' Explode the polyline
    Dim explodedObjects As Variant
    explodedObjects = plineObj.Explode
    ' Loop through the exploded objects
    ' and displays a message box with
    ' the type of each object
    Dim I As Integer
    For I = 0 To UBound(explodedObjects)
    explodedObjects(I).Update
        MsgBox "Exploded Object " & I & ": " & _
                    explodedObjects(I).ObjectName
        explodedObjects(I).Update
    Next
End Sub


폴리선 편집

객체 분해
객체 편집
스플라인 편집
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 >
폴리선 편집

2D 폴리선과 3D 폴리선, 직사각형, 다각형과 3D 다각형 메쉬는 모두 폴리선 variant이고, 폴리선과 동일한 방법으로 편집됩니다.

AutoCAD는 맞춤 폴리선과 스플라인 맞춤 폴리선을 모두 인식합니다. 스플라인 맞춤 폴리선은 B-스플라인과 유사한 곡선 맞춤을 사용합니다. 스플라인 맞춤 폴리선에는 2차원 및 3차원의 두 종류가 있습니다. 두 폴리선은 모두 SPLINETYPE 시스템 변수에 의해 조정됩니다. 맞춤 폴리선은 곡선 맞춤에 표준 곡선을 사용하며 주어진 정점에 설정된 접선 방향을 사용합니다.

폴리선을 편집하려면 LightweightPolyline 또는 Polyline 객체의 특성과 메서드를 사용하십시오. 폴리선을 열거나 닫을 때, 폴리선 정점의 좌표를 변경하거나 폴리선 정점을 추가할 때는 다음과 같은 특성과 메서드를 사용하십시오.

Closed 특성

폴리선을 열거나 닫습니다.

Coordinates 특성

폴리선의 각 정점에 대한 좌표를 지정합니다.

AddVertex 메서드

정점을 단순 폴리선에 추가합니다.

폴리선의 돌출이나 폭을 업데이트하려면 다음 메서드를 사용하십시오.

SetBulge

주어진 세그먼트 색인으로 폴리선의 돌출을 설정합니다.

SetWidth

주어진 세그먼트 색인으로 폴리선의 시작과 끝 부분 폭을 설정합니다.

폴리선 편집에 대한 자세한 정보는 사용자 안내서의 “폴리선 수정 또는 결합”을 참고하십시오.

폴리선 편집

이 예제에서는 단순 폴리선을 작성합니다. 그런 다음 돌출을 폴리선의 세 번째 세그먼트에 추가하고 정점을 폴리선에 첨부하고 마지막 세그먼트의 폭을 변경한 다음, 마지막으로 폴리선을 닫습니다.

Sub Ch4_EditPolyline()
    Dim plineObj As AcadLWPolyline
    Dim points(0 To 9) As Double
    ' Define the 2D polyline points
    points(0) = 1: points(1) = 1
    points(2) = 1: points(3) = 2
    points(4) = 2: points(5) = 2
    points(6) = 3: points(7) = 2
    points(8) = 4: points(9) = 4
    ' Create a light weight Polyline object
    Set plineObj = ThisDrawing.ModelSpace. _
                   AddLightWeightPolyline(points)
    ' Add a bulge to segment 3
    plineObj.SetBulge 3, -0.5
    ' Define the new vertex
    Dim newVertex(0 To 1) As Double
    newVertex(0) = 4: newVertex(1) = 1
    ' Add the vertex to the polyline
    plineObj.AddVertex 5, newVertex
    ' Set the width of the new segment
    plineObj.SetWidth 4, 0.1, 0.5
    ' Close the polyline
    plineObj.Closed = True
    plineObj.Update
End Sub


스플라인 편집

폴리선 편집
객체 편집
해치 편집
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 >
스플라인 편집

다음과 같은 편집 가능한 특성을 사용하여 스플라인을 변경하십시오.

ControlPoints

스플라인의 조정점을 지정합니다.

EndTangent

스플라인의 끝 접선을 방향 벡터로 지정합니다.

FitPoints

스플라인의 모든 맞춤점을 지정합니다.

FitTolerance

기존 점의 스플라인을 새 공차 값에 따라 다시 맞춥니다.

Knots

스플라인의 knot 벡터를 지정합니다.

StartTangent

스플라인의 시작 접선을 지정합니다.

그 외에도 다음 메서드를 사용하여 스플라인을 편집할 수 있습니다.

AddFitPoint

주어진 색인에서 단일 맞춤점을 스플라인에 추가합니다.

DeleteFitPoint

주어진 색인에서 스플라인의 맞춤점을 삭제합니다.

ElevateOrder

스플라인의 순서를 주어진 순서로 변경합니다.

GetFitPoint

주어진 색인에서 스플라인의 맞춤점을 가져옵니다. (하나의 맞춤점만 가져올 수 있으며 스플라인의 맞춤점을 모두 조회하려면 FitPoints 특성을 사용하십시오.)

Reverse

스플라인의 방향을 반대로 지정합니다.

SetControlPoint

주어진 색인에서 스플라인의 조정점을 설정합니다.

SetFitPoint

주어진 색인에서 스플라인의 조정점을 설정합니다. (하나의 맞춤점만 설정할 수 있으며 스플라인의 맞춤점을 모두 변경하려면 FitPoints 특성을 사용하십시오.)

SetWeight

주어진 색인에서 조정점의 가중치를 설정합니다.

스플라인을 조회하려면 다음과 같은 읽기 전용 특성을 사용하십시오.

Area

스플라인의 닫힌 영역을 구합니다.

Closed

열린 스플라인인지 아니면 닫힌 스플라인인지를 나타냅니다.

도

스플라인의 다항식 표현의 단계를 얻습니다.

IsPeriodic

주어진 스플라인이 주기적인지 여부를 지정합니다.

IsPlanar

주어진 스플라인이 평면인지 여부를 지정합니다.

IsRational

주어진 스플라인이 유리수인지 여부를 지정합니다.

NumberOfControlPoints

스플라인의 조정점 수를 구합니다.

NumberOfFitPoints

스플라인의 맞춤점 수를 구합니다.

스플라인 편집에 대한 자세한 정보는 사용자 안내서의 “스플라인 수정”을 참고하십시오.

스플라인의 조정점 변경

이 예제에서는 스플라인을 작성한 다음 첫 번째 조정점을 변경합니다.

Sub Ch4_ChangeSplineControlPoint()
    ' Create the spline
    Dim splineObj As AcadSpline
    Dim startTan(0 To 2) As Double
    Dim endTan(0 To 2) As Double
    Dim fitPoints(0 To 8) As Double
    startTan(0) = 0.5: startTan(1) = 0.5: startTan(2) = 0
    endTan(0) = 0.5: endTan(1) = 0.5: endTan(2) = 0
    fitPoints(0) = 1: fitPoints(1) = 1: fitPoints(2) = 0
    fitPoints(3) = 5: fitPoints(4) = 5: fitPoints(5) = 0
    fitPoints(6) = 10: fitPoints(7) = 0: fitPoints(8) = 0
    Set splineObj = ThisDrawing.ModelSpace. _
                   AddSpline(fitPoints, startTan, endTan)
    splineObj.Update
    ' Change the coordinate of the first fit point
    Dim controlPoint(0 To 2) As Double
    controlPoint(0) = 0
    controlPoint(1) = 3
    controlPoint(2) = 0
    splineObj.SetControlPoint 0, controlPoint
    splineObj.Update
End Sub


해치 편집

스플라인 편집
객체 편집
해치 경계 편집
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 >
해치 편집

해치 경계와 해치 패턴 모두 편집 가능합니다. 연관 해치의 경계를 편집하는 경우, 편집으로 경계가 적합해지면 패턴이 업데이트됩니다. 연관 해치는 도면층이 꺼져 있는 경우에도 업데이트됩니다. 해치 패턴을 수정하거나 기존 해치의 새로운 패턴을 선택할 수 있지만 해치가 작성되면 연관성만 설정할 수 있습니다. AssociativeHatch 특성을 사용하면 Hatch 객체가 연관적인지 확인할 수 있습니다. (해치 작성에 대한 자세한 정보는 AddHatch 메서드를 참고하십시오.)

해치의 편집사항을 확인하려면 Evaluate 메서드를 사용하여 해치를 재평가해야 합니다.

해치 편집에 대한 자세한 정보는 사용자 안내서의 “해치 및 솔리드 채움 영역 수정”을 참고하십시오.

이 단원의 항목

  • 해치 경계 편집
  • 해치 패턴 편집


해치 경계 편집

해치 편집
해치 편집
해치 패턴 편집
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 > 해치 편집 >
해치 경계 편집

해치 경계에 루프를 추가하거나 삽입할 수 있습니다. 연관 해치는 경계가 변경되면 그에 따라 업데이트됩니다. 비연관 해치는 업데이트되지 않습니다.

다음 메서드 중 하나를 사용하여 곡선을 작성할 수 있습니다.

AppendInnerLoop

해치에 내부 루프를 추가합니다.

AppendOuterLoop

해치에 외부 루프를 추가합니다.

InsertLoopAt

해치의 주어진 색인에 루프를 삽입합니다.

해치에 내부 루프 추가

이 예제는 연관 해치를 작성합니다. 그런 다음, 원을 작성하여 내부 루프로서 해치에 추가합니다.

Sub Ch4_AppendInnerLoopToHatch()
    Dim hatchObj As AcadHatch
    Dim patternName As String
    Dim PatternType As Long
    Dim bAssociativity As Boolean
    ' Define and create the hatch
    patternName = "ANSI31"
    PatternType = 0
    bAssociativity = True
    Set hatchObj = ThisDrawing.ModelSpace. _
        AddHatch(PatternType, patternName, bAssociativity)
    ' Create the outer loop for the hatch.
    Dim outerLoop(0 To 1) As AcadEntity
    Dim center(0 To 2) As Double
    Dim radius As Double
    Dim startAngle As Double
    Dim endAngle As Double
    center(0) = 5: center(1) = 3: center(2) = 0
    radius = 3
    startAngle = 0
    endAngle = 3.141592
    Set outerLoop(0) = ThisDrawing.ModelSpace. _
       AddArc(center, radius, startAngle, endAngle)
    Set outerLoop(1) = ThisDrawing.ModelSpace. _
       AddLine(outerLoop(0).startPoint, outerLoop(0).endPoint)
    ' Append the outer loop to the hatch object
    hatchObj.AppendOuterLoop (outerLoop)
    ' Create a circle as the inner loop for the hatch.
    Dim innerLoop(0) As AcadEntity
    center(0) = 5: center(1) = 4.5: center(2) = 0
    radius = 1
    Set innerLoop(0) = ThisDrawing.ModelSpace. _
                                 AddCircle(center, radius)
    ' Append the circle as an inner loop to the hatch
    hatchObj.AppendInnerLoop (innerLoop)
    ' Evaluate and display the hatch
    hatchObj.Evaluate
    ThisDrawing.Regen True
End Sub


해치 패턴 편집

해치 경계 편집
해치 편집
도면층, 색상 및 선종류 사용
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 객체 편집 > 해치 편집 >
해치 패턴 편집

기존 해치 패턴의 각도나 간격을 변경할 수 있습니다. 또는 솔리드 채우기나 AutoCAD가 제공하는 미리 정의된 패턴 중 하나로 대치할 수 있습니다. 경계 해치 대화상자의 패턴 옵션은 이런 패턴의 리스트를 표시합니다. 해치 도면요소를 단일 그래픽 객체로 도면에 정의하면 파일 크기가 감소됩니다.

해치 패턴을 편집하려면 다음 특성과 메서드를 사용하십시오.

PatternAngle

해치 패턴의 각도를 지정합니다.

PatternDouble

사용자 정의 해치의 이중 해치 여부를 지정합니다.

PatternName

해치 패턴의 이름을 지정합니다(패턴 유형는 변경하지 않음).

PatternScale

해치 패턴 축척을 지정합니다.

PatternSpace

사용자 정의 해치 패턴 간격을 지정합니다.

SetPattern

해치의 패턴 이름과 패턴 스타일을 설정합니다.

해치의 패턴 간격 변경

이 예제는 해치를 작성합니다. 그런 다음, 해치의 현재 패턴 간격에 2를 추가합니다.

Sub Ch4_ChangeHatchPatternSpace()
    Dim hatchObj As AcadHatch
    Dim patternName As String
    Dim PatternType As Long
    Dim bAssociativity As Boolean
    ' Define the hatch
    patternName = "ANSI31"
    PatternType = 0
    bAssociativity = True
    ' Create the associative Hatch object
    Set hatchObj = ThisDrawing.ModelSpace. _
        AddHatch(PatternType, patternName, bAssociativity)
    ' Create the outer loop for the hatch.
    Dim outerLoop(0 To 0) As AcadEntity
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 5
    center(1) = 3
    center(2) = 0
    radius = 3
    Set outerLoop(0) = ThisDrawing.ModelSpace. _
                                AddCircle(center, radius)
    hatchObj.AppendOuterLoop (outerLoop)
    hatchObj.Evaluate
    ' Change the spacing of the hatch pattern by
    ' adding 2 to the current spacing
    hatchObj.patternSpace = hatchObj.patternSpace + 2
    hatchObj.Evaluate
    ThisDrawing.Regen True
End Sub


도면층, 색상 및 선종류 사용

해치 패턴 편집
AutoCAD 도면요소 작성 및 편집
도면층으로 작업
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 >
도면층, 색상 및 선종류 사용

도면층은 사용자가 여러 종류의 도면 정보를 정리하여 모아 놓은 투명한 오버레이와 유사합니다. 작성된 객체에는 도면층, 색상 및 선종류 등의 특성이 있습니다. 색상은 도면에 있는 유사한 요소들을 구별하는 데 사용되고, 선종류는 중심선이나 은선 같이 여러 제도 요소들의 차이를 쉽게 구별하는 데 사용됩니다. 도면층과 도면층상의 객체를 구성하면 도면 정보를 더 쉽게 관리할 수 있습니다.

이 항목에 대한 자세한 정보는 사용자 안내서의 “객체 특성 조정”을 참고하십시오.

이 단원의 항목

  • 도면층으로 작업
  • 색상으로 작업
  • 선종류로 작업
  • 객체에 도면층, 색상 및 선종류 지정


도면층으로 작업

도면층, 색상 및 선종류 사용
도면층, 색상 및 선종류 사용
도면층 및 선종류 정렬
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 >
도면층으로 작업

도면층에서는 항상 도면을 그릴 수 있습니다. 이 도면층은 기본 도면층이거나 사용자가 작성하고 명명한 도면층일 수 있습니다. 각 도면층에는 연관된 색상과 선종류가 있습니다. 예를 들어, 중심선만을 그린 도면층을 작성한 후 이 도면층에 파란색과 선종류 CENTER를 지정할 수 있습니다. 그러면 중심선을 그릴 때마다 해당 도면층으로 전환하여 그리기를 시작할 수 있습니다.

모든 도면층과 선종류는 해당되는 상위 Collection 객체 안에 저장됩니다. 도면층은 Layers 컬렉션에 저장되고, 선종류는 Linetypes 컬렉션에 저장됩니다.

도면층 작업에 대한 자세한 정보는 사용자 안내서의 “도면층으로 작업”을 참고하십시오.

이 단원의 항목

  • 도면층 및 선종류 정렬
  • 도면층 작성 및 명명
  • 도면층을 활성 도면층으로 작성
  • 도면층 켜기와 끄기
  • 도면층 동결 및 동결 해제
  • 도면층 잠그기 및 잠금해제하기
  • 도면층에 색상 지정
  • 도면층에 선종류 지정
  • 도면층 삭제


도면층 및 선종류 정렬

도면층으로 작업
도면층으로 작업
도면층 작성 및 명명
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 > 도면층으로 작업 >
도면층 및 선종류 정렬

Layers와 Linetypes 컬렉션을 반복하여 도면에 있는 모든 도면층과 선종류를 찾을 수 있습니다.

Layers 컬렉션을 반복

다음 코드는 Layers 컬렉션을 반복하여 도면에 있는 모든 도면층의 이름을 수집합니다. 그런 다음 이름이 메시지 상자에 표시됩니다.

Sub Ch4_IteratingLayers()
    Dim layerNames As String
    Dim entry As AcadLayer
    layerNames = ""
    For Each entry In ThisDrawing.Layers
        layerNames = layerNames + entry.Name + vbCrLf
    Next
    MsgBox "The layers in this drawing are: " + _
           vbCrLf + layerNames
End Sub


도면층 작성 및 명명

도면층 및 선종류 정렬
도면층으로 작업
도면층을 활성 도면층으로 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 > 도면층으로 작업 >
도면층 작성 및 명명

새로운 도면층을 작성하고, 작성한 도면층에 색상과 선종류 특성을 지정할 수 있습니다. 각각의 개별 도면층은 Layers 컬렉션의 일부입니다. 도면층을 새로 작성하여 Layers 컬렉션에 추가하려면 Add 메서드를 사용하십시오.

도면층이 작성될 때 이름을 지정할 수 있습니다. 작성된 다음에 도면층의 이름을 바꾸려면 Name 특성을 사용하십시오. 도면층 이름에는 글자와 숫자, 달러 기호($), 하이픈(-), 밑줄(_)과 같은 특수 문자가 포함되여 최대 31자까지 사용할 수 있지만 공백은 사용할 수 없습니다.

도면층 작성에 대한 자세한 정보는 사용자 안내서의 “도면층 작성 및 명명”을 참고하십시오.

새 도면층을 작성하여 빨간색 지정 후 도면층에 객체 추가

다음 코드는 원과 새로운 도면층을 작성합니다. 새로운 도면층에 빨간색이 지정됩니다. 원이 도면층에 지정되면 그에 따라 원의 색상도 변경됩니다.

Sub Ch4_NewLayer()
    ' Create a circle
    Dim circleObj As AcadCircle
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 2: center(1) = 2: center(2) = 0
    radius = 1
    Set circleObj = ThisDrawing.ModelSpace. _
                        AddCircle(center, radius)
    ' Create a color object
    Dim col As New AcadAcCmColor
    col.ColorMethod = AutoCAD.acColorMethodForeground
    ' Set the layer to the color
    Dim layColor As AcadAcCmColor
    Set layColor =
      AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.17")
    Call layColor.SetRGB(122, 199, 25)
    ThisDrawing.ActiveLayer.TrueColor = layColor
    col.ColorMethod = AutoCAD.acColorMethodByLayer
    ' Assign the circle the color "ByLayer" so
    ' that the circle will automatically pick
    ' up the color of the layer on which it resides
    circleObj.Color = acByLayer
    circleObj.Update
End Sub


도면층을 활성 도면층으로 작성

도면층 작성 및 명명
도면층으로 작업
도면층 켜기와 끄기
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 > 도면층으로 작업 >
도면층을 활성 도면층으로 작성

도면은 항상 활성 도면층에서 작성하게 됩니다. 도면층을 활성 도면층으로 만들어, 그 도면층에서 새로운 객체를 작성할 수 있습니다. 다른 도면층을 활성 도면층으로 만들면 사용자가 작성한 새로운 객체는 새로운 활성 도면층에서 작성되고 그 색상과 선종류를 사용합니다. 도면층이 동결되면 활성으로 만들 수 없습니다.

도면층을 활성화하려면 ActiveLayer 특성을 사용하십시오. 이 특성은 현재 도면에 설정되어 있습니다. 예를 들어, 다음과 같습니다.

Dim newlayer As AcadLayer
Set newlayer = ThisDrawing.Layers.Add("LAYER1")
ThisDrawing.ActiveLayer = newlayer


도면층 켜기와 끄기

도면층을 활성 도면층으로 작성
도면층으로 작업
도면층 동결 및 동결 해제
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 > 도면층으로 작업 >
도면층 켜기와 끄기

꺼진 도면층은 도면과 함께 재생성되지만 화면에 표시되거나 플롯되지는 않습니다. 도면층을 끄면 도면층을 동결해제할 때마다 도면을 재생성하지 않아도 됩니다. 꺼져 있던 도면층을 켜면, AutoCAD는 해당 도면층의 객체를 다시 그립니다.

도면층을 켜거나 끄려면 LayerOn 특성을 사용하십시오. 이 특성에 TRUE 값을 입력하면 도면층이 켜지고, FALSE 값을 입력하면 도면층이 꺼집니다.

도면층 끄기

이 예제에서는 새 도면층을 작성하고 도면층에 원을 추가한 다음, 원이 보이지 않도록 도면층을 끕니다.

Sub Ch4_LayerInvisible()
    ' Create a circle
    Dim circleObj As AcadCircle
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 2: center(1) = 2: center(2) = 0
    radius = 1
    Set circleObj = ThisDrawing.ModelSpace. _
                        AddCircle(center, radius)
    ' Create a new layer called "ABC"
    Dim layerObj As AcadLayer
    Set layerObj = ThisDrawing.Layers.Add("ABC")
    ' Assign the circle to the "ABC" layer
    circleObj.Layer = "ABC"
    circleObj.Update
    ' Turn off layer "ABC"
    layerObj.LayerOn = False
    ThisDrawing.Regen acActiveViewport
End Sub


도면층 동결 및 동결 해제

도면층 켜기와 끄기
도면층으로 작업
도면층 잠그기 및 잠금해제하기
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 > 도면층으로 작업 >
도면층 동결 및 동결 해제

도면층을 동결하여 변경 사항에 대한 화면표시 속도를 높일 수 있고, 객체 선택 성능을 향상시킬 수 있으며, 복잡한 도면의 재생성 시간을 단축시킬 수 있습니다. AutoCAD는 동결된 도면층의 객체를 표시, 플롯 또는 재생성하지 않습니다. 장기간 보이지 않게 하려는 도면층은 동결하십시오. 동결된 도면층을 “동결해제”하는 경우 AutoCAD는 해당 도면층에서 객체를 재생성하여 표시합니다.

도면층을 동결하거나 동결 해제하려면 Freeze 특성을 사용하십시오. 이 특성에 TRUE 값을 입력하면 도면층이 동결되고 FALSE 값을 입력하면 도면층이 동결 해제됩니다.

도면층 동결

이 예제에서는 “ABC”라는 도면층을 새로 작성한 다음 도면층을 동결합니다.

Sub Ch4_LayerFreeze()
    ' Create a new layer called "ABC"
    Dim layerObj As AcadLayer
    Set layerObj = ThisDrawing.Layers.Add("ABC")
    ' Freeze layer "ABC"
    layerObj.Freeze = True
End Sub


도면층 잠그기 및 잠금해제하기

도면층 동결 및 동결 해제
도면층으로 작업
도면층에 색상 지정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 > 도면층으로 작업 >
도면층 잠그기 및 잠금해제하기

잠긴 도면층의 객체는 편집할 수 없지만 도면층이 켜져 있고 동결해제되어 있으면 계속 볼 수 있습니다. 잠긴 도면층을 현재 도면층으로 만들 수 있고, 잠긴 도면층에 객체를 추가할 수도 있습니다. 잠긴 도면층을 동결하거나 끌 수 있으며 도면층과 연관된 색상과 선종류를 변경할 수 있습니다.

도면층을 잠그거나 잠금을 해제하려면 Lock 특성을 사용하십시오. 이 특성에 TRUE 값을 입력하면 도면층이 잠기고, FALSE 값을 입력하면 도면층이 잠금해제됩니다.

도면층 잠금

이 예제에서는 “ABC”라는 새 도면층을 작성한 다음 도면층을 잠급니다.

Sub Ch4_LayerLock()
    ' Create a new layer called "ABC"
    Dim layerObj As AcadLayer
    Set layerObj = ThisDrawing.Layers.Add("ABC")
    ' Lock layer "ABC"
    layerObj.Lock = True
End Sub


도면층에 색상 지정

도면층 잠그기 및 잠금해제하기
도면층으로 작업
도면층에 선종류 지정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 > 도면층으로 작업 >
도면층에 색상 지정

도면층에 색상을 지정할 수 있습니다. 색상은 AcCmColor 객체에 의해 식별됩니다. 객체는 RGB 값, ACI 번호(1에서 255 까지의 정수), 또는 명명된 색상을 갖고 있을 수 있습니다.

도면층에 색상을 지정하려면 TrueColor 특성을 사용하십시오.

7개의 표준 색상과 BYBLOCK 및 BYLAYER 지정을 위해 상수가 제공되었습니다.

acByBlock을 사용하는 경우 새 객체가 블록으로 그룹화될 때까지 AutoCAD는 기본 색상(구성에 따라 흰색 또는 검은색)으로 새 객체를 그립니다. 블록이 도면에 삽입될 때, 블록의 객체는 현재 설정값을 상속합니다.

acByLayer를 사용하는 경우 새 객체는 객체가 그려지는 도면층의 색상으로 간주합니다.


도면층에 선종류 지정

도면층에 색상 지정
도면층으로 작업
도면층 삭제
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 > 도면층으로 작업 >
도면층에 선종류 지정

도면층을 정의할 때 선종류는 시각적 정보를 전달할 수 있는 또 다른 방법을 제공합니다. 선종류는 각각 선의 용도를 구분하기 위해 사용할 수 있는 대시, 점 및 공백의 반복적인 패턴입니다.

선종류의 이름과 정의는 대시와 점의 특정 순서, 대시와 공백의 상대 길이, 포함된 문자나 쉐이프의 특성 등을 설명합니다.

도면층에 선종류를 지정하려면 Linetype 특성을 사용하십시오. 이 특성은 선종류 이름을 입력으로 사용합니다.


도면층 삭제

도면층에 선종류 지정
도면층으로 작업
색상으로 작업
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 > 도면층으로 작업 >
도면층 삭제

도면층을 삭제하려면, Delete 메서드를 사용하십시오.

도면 작성 세션 중에 언제든지 도면층을 삭제할 수 있습니다. 그러나 현재 도면층, 도면층 0, 외부참조 종속 도면층 또는 객체가 포함된 도면층은 삭제할 수 없습니다.

주DEFPOINTS라고 명명된 특수 도면층과 함께 블록 정의에 참조된 도면층은 가시적인 객체가 들어 있지 않아도 삭제할 수 없습니다.


색상으로 작업

도면층 삭제
도면층, 색상 및 선종류 사용
선종류로 작업
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 >
색상으로 작업

AcCmColor 객체를 사용하여 도면의 개별 객체에 트루 컬러를 지정할 수 있습니다. AcCmColor 객체의 RGB 값을 사용하여 선, 원, 기타 개별 객체의 색상을 설정할 때 백만 가지 이상의 색상 중에서 색상을 선택할 수 있습니다. AcCmColor 객체는 또한 색상 이름, 색상표, 색상 색인, 색상 값 및 색상 메서드를 지정하는 메서드와 특성을 포함합니다.

또한 도면층에 색상을 지정할 수 있습니다. 각 색상은 이름, AutoCAD 색상 색인(ACI) 번호인 1과 255 사이의 정수로 식별될 수 있습니다. 일부 객체와 도면층은 같은 색상 번호를 가질 수도 있습니다. 펜 플로터의 각 펜에 서로 다른 색상 번호를 지정할 수 있으며, 화면으로는 색상을 볼 수 없지만 도면의 특정 객체를 식별할 수 있도록 색상 번호를 사용할 수 있습니다.

색상을 지정할 때 색상 이름이나 ACI 번호를 입력할 수 있습니다. ACI는 255개의 색상 번호를 제공합니다. 표준 색상 이름은 색상 1과 7 사이에서만 사용할 수 있습니다.

1과 7 사이의 색상
색상 번호 | 색상 이름
1 | 빨간색
2 | 노란색
3 | 초록색
4 | 하늘색
5 | 파란색
6 | 선홍색
7 | 검은색/흰색

8과 255 사이의 색상은 숫자로 지정하거나 대화상자에서 색상을 선택하여 지정해야 합니다. 기본 색상(7)은 배경 색상에 따라 흰색 또는 검은색 중의 하나입니다.

색상 관련 작업에 대한 자세한 정보는 사용자 안내서의 “색상으로 작업”을 참고하십시오.


선종류로 작업

색상으로 작업
도면층, 색상 및 선종류 사용
선종류를 활성 선종류로 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 >
선종류로 작업

선종류는 대시, 점 및 공백이 반복되는 패턴입니다. 복합 선종류는 기호를 반복하는 패턴입니다. 선종류를 사용하려면 먼저 선종류를 도면에 로드 합니다. 선종류 정의는 선종류가 도면으로 로드되기 전에 LIN 라이브러리 파일에 존재해야만 합니다. 선종류를 도면으로 로드하려면, Load 메서드를 사용하십시오.

선종류 관련 작업에 대한 자세한 정보는 사용자 안내서의 “선종류 개요”를 참고하십시오.

주AutoCAD에서 내부에 사용되는 선종류를 일부 플로터에서 제공한 하드웨어 선종류와 혼동하지 마십시오. 이 두 대시선은 비슷하게 적용되지만 그러나 결과를 예측할 수 없으므로 두 종류의 선을 동시에 사용하지는 마십시오.

AutoCAD에 선종류 로드

이 예제에서는 acad.lin 파일에서 선종류 “CENTER” 로드를 시도합니다. 선종류가 이미 있거나 파일이 없는 경우에는 메시지가 표시됩니다.

Sub Ch4_LoadLinetype()
    On Error GoTo ERRORHANDLER
    Dim linetypeName As String
    linetypeName = "CENTER"
    ' Load "CENTER" line type from acad.lin file
    ThisDrawing.Linetypes.Load linetypeName, "acad.lin"
    Exit Sub
ERRORHANDLER:
    MsgBox Err.Description
End Sub
이 단원의 항목
  • 선종류를 활성 선종류로 작성
  • 선종류의 이름 바꾸기
  • 선종류 삭제
  • 선종류 설명 변경
  • 선종류 축척 지정


선종류를 활성 선종류로 작성

선종류로 작업
선종류로 작업
선종류의 이름 바꾸기
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 > 선종류로 작업 >
선종류를 활성 선종류로 작성

선종류를 사용하여 현재 도면층에 그리려면 선종류를 활성으로 작성해야 합니다. 새로 작성되는 모든 객체는 활성 선종류를 사용하여 그려집니다.

주외부참조에 종속된 선종류는 활성 선종류로 만들 수 없습니다.

선종류를 활성으로 하려면 ActiveLinetype 특성을 사용하십시오. 이 특성은 현재 도면에 설정되어 있습니다. 예를 들어, 다음과 같습니다.

ThisDrawing.ActiveLinetype = ThisDrawing. _
Linetypes.Item("CONTINUOUS")

선종류 활성화에 대한 자세한 정보는 사용자 안내서의 “현재 선종류 설정”을 참고하십시오.


선종류의 이름 바꾸기

선종류를 활성 선종류로 작성
선종류로 작업
선종류 삭제
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 > 선종류로 작업 >
선종류의 이름 바꾸기

선종류의 이름을 바꾸려면 Name 특성을 사용하십시오. 선종류 이름을 바꾸면 도면에 있는 선종류 정의만 이름이 바뀝니다. LIN 라이브러리 파일의 이름은 새로운 이름을 반영하도록 업데이트되지 않습니다.


선종류 삭제

선종류의 이름 바꾸기
선종류로 작업
선종류 설명 변경
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 > 선종류로 작업 >
선종류 삭제

선종류를 삭제하려면 Delete 메서드를 사용하십시오. 도면 세션중에 언제라도 선종류를 삭제할 수 있지만 BYLAYER, BYBLOCK, CONTINUOUS, 현재 선종류 및 외부 참조 종속 선종류는 삭제할 수 없습니다. 또한 블록 정의에 의해 참조되는 선종류는 다른 객체가 사용하고 있지 않더라도 삭제할 수 없습니다.

선종류 삭제에 대한 자세한 정보는 사용자 안내서의 “현재 선종류 설정”을 참고하십시오.


선종류 설명 변경

선종류 삭제
선종류로 작업
선종류 축척 지정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 > 선종류로 작업 >
선종류 설명 변경

선종류에는 선종류에 대한 설명이 있습니다. 설명은 선종류를 ASCII로 표시합니다. Description 특성을 사용하여 선종류 설명을 지정하거나 변경할 수 있습니다.

선종류 설명은 47자까지 가능합니다. 설명은 주석이거나 선종류 패턴의 간단한 표현을 보여 주기 위한 일련의 밑줄, 점, 대사 및 공백입니다. 예를 들어, 다음과 같습니다.

ThisDrawing.ActiveLinetype.Description = "Exterior Wall"


선종류 축척 지정

선종류 설명 변경
선종류로 작업
객체에 도면층, 색상 및 선종류 지정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 > 선종류로 작업 >
선종류 축척 지정

작성하는 객체에 대한 선종류 축척을 지정할 수 있습니다. 축척이 작을수록 도면 단위당 더 많은 패턴이 반복됩니다. 기본적으로 AutoCAD는 한 개의 도면 단위와 동일한 1.0의 전체 선종류 축척을 사용합니다. 도면 객체, 속성 참조 및 그룹에 대한 선종류 축척을 모두 변경할 수 있습니다.

선종류 축척을 변경하려면 LinetypeScale 특성을 사용하십시오.

CELTSCALE 시스템 변수는 새로 작성된 객체에 대한 선종류 축척을 설정합니다. LTSCALE은 새로운 객체뿐만 아니라 기존 객체의 선종류 축척을 전체적으로 변경합니다. AutoCAD ActiveX Automation을 사용하여 시스템 변수의 값을 변경하려면 SetVariable 메서드를 사용하십시오.

선종류 축척에 대한 자세한 정보는 사용자 안내서의 “선종류 축척 조정”을 참고하십시오.

원의 선종류 축적 변경

Sub Ch4_ChangeLinetypeScale()
  ' Save the current linetype
  Set currLineType = ThisDrawing.ActiveLinetype
  ' Change the active linetype to Border, so the scale change will
  ' be visible.
  ' First see if the Border linetype is already loaded
  On Error Resume Next 'Turn on error trapping
  ThisDrawing.ActiveLinetype = ThisDrawing.Linetypes.Item("BORDER")
  If Err.Number = -2145386476 Then
    ' Error indicates linetype is not currently loaded, so load it.
    ThisDrawing.Linetypes.Load "BORDER", "acad.lin"
    ThisDrawing.ActiveLinetype = _
          ThisDrawing.Linetypes.Item("BORDER")
  End If
  On Error GoTo 0 'Turn off error trapping
  ' Create a circle object in model space
  Dim center(0 To 2) As Double
  Dim radius As Double
  Dim circleObj As AcadCircle
  center(0) = 2
  center(1) = 2
  center(2) = 0
  radius = 4
  Set circleObj = ThisDrawing.ModelSpace.AddCircle(center, radius)
  circleObj.Update
  MsgBox ("Here is the circle with the original linetype")
  ' Set the linetype scale of a circle to 3
  circleObj.LinetypeScale = 3#
  circleObj.Update
  MsgBox ("Here is the circle with the new linetype")
  ' Restore original active linetype
  ThisDrawing.ActiveLinetype = currLineType
End Sub


객체에 도면층, 색상 및 선종류 지정

선종류 축척 지정
도면층, 색상 및 선종류 사용
객체의 도면층 변경
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 >
객체에 도면층, 색상 및 선종류 지정

일단 도면층, 색상 및 선종류를 정의하면 이들을 도면의 객체에 지정할 수 있습니다. 객체를 도면층에 지정하면 도면의 연관된 구성요소를 분류할 수 있습니다. 도면층의 가시성, 색상 및 선종류를 조정할 수 있으며, 도면층의 객체가 편집 가능한지 여부를 지정할 수 있습니다. 객체를 한 도면층에서 다른 도면층으로 이동할 수 있으며 도면층의 이름을 바꿀 수 있습니다.

사실상 도면에 있는 도면층 수와 각 도면층의 객체 수에는 제한이 없습니다. 각 도면층에 이름을 지정하고 화면에 표시할 임의의 도면층 조합을 선택할 수 있습니다.

원래 다른 색상과 선종류를 갖는 서로 다른 도면층에서 그려진 객체로부터 블록을 정의할 수 있습니다 객체의 도면층, 색상 및 선종류 정보를 블록에 보존할 수 있습니다. 그러면 블록을 삽입할 때마다 각 객체가 원래의 색상과 선종류로 원래의 도면층에 그려집니다.

이 단원의 항목

  • 객체의 도면층 변경
  • 객체의 색상 변경
  • 객체의 선종류 변경


객체의 도면층 변경

객체에 도면층, 색상 및 선종류 지정
객체에 도면층, 색상 및 선종류 지정
객체의 색상 변경
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 > 객체에 도면층, 색상 및 선종류 지정 >
객체의 도면층 변경

객체를 작성하고 객체에 도면층, 색상 및 선종류 특성을 할당한 후 객체의 도면층을 변경해야 할 경우가 있습니다. 객체의 도면층을 변경하는 것은 실수로 잘못된 도면층에 객체를 작성한 경우나 도면층 구성을 나중에 변경하려는 경우에 유용합니다.

객체의 도면층을 변경하려면 해당 객체에 제공된 Layer 특성을 사용하십시오. Layer 특성은 선종류 이름을 입력으로 사용합니다.

다른 도면층으로 객체 이동

이 예제에서는 활성 도면층에 원을 작성한 다음 “ABC”라는 도면층을 새로 작성합니다. 그런 다음, 새로운 도면층으로 원을 이동합니다.

Sub Ch4_MoveObjectNewLayer()
    ' Create a circle
    Dim circleObj As AcadCircle
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 2: center(1) = 2: center(2) = 0
    radius = 1
    Set circleObj = ThisDrawing.ModelSpace. _
                        AddCircle(center, radius)
    ' Create a new layer called "ABC"
    Dim layerObj As AcadLayer
    Set layerObj = ThisDrawing.Layers.Add("ABC")
    ' Assign the circle to the "ABC" layer
    circleObj.Layer = "ABC"
    circleObj.Update
End Sub


객체의 색상 변경

객체의 도면층 변경
객체에 도면층, 색상 및 선종류 지정
객체의 선종류 변경
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 > 객체에 도면층, 색상 및 선종류 지정 >
객체의 색상 변경

객체의 색상을 변경하려면 해당 객체에 제공된 TrueColor 특성을 사용하십시오. 색상을 도면에 있는 각각의 객체에도 지정할 수 있습니다. 각각의 색상은 AcCmColor 객체에 의해 식별됩니다. 객체는 RGB 값, ACI 번호(1에서 255 까지의 정수), 또는 명명된 색상을 갖고 있을 수 있습니다. RGB 값을 사용하여 백만 가지 이상의 색상에서 선택할 수 잇습니다.

객체의 색상을 설정하면 객체가 상주하는 도면층의 색상 설정이 재지정됩니다. 특정 도면층의 객체는 유지하되 이 도면층의 색상은 유지하지 않으려는 경우 객체의 색상을 변경할 수 있습니다.

원의 색상 변경

이 예제는 원을 작성한 다음 색상을 파랑색으로 지정합니다.

Sub Ch4_ColorCircle()
    Dim color As AcadAcCmColor
    Set color = _
    AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.17")
    Call color.SetRGB(80, 100, 244)
    Dim circleObj As AcadCircle
    Dim centerPoint(0 To 2) As Double
    Dim radius As Double
    centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#
    radius = 5#
    Set circleObj = _
    ThisDrawing.ModelSpace.AddCircle(centerPoint, radius)
    circleObj.TrueColor = color
    ZoomAll
End Sub


객체의 선종류 변경

객체의 색상 변경
객체에 도면층, 색상 및 선종류 지정
도면층 설정값 저장 및 복원
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층, 색상 및 선종류 사용 > 객체에 도면층, 색상 및 선종류 지정 >
객체의 선종류 변경

기본적으로, 객체는 자신이 작성된 도면층의 선종류를 상속합니다 객체의 선종류를 변경하려면 해당 객체에 제공된 Linetype 특성을 사용하십시오. Linetype 특성은 선종류의 이름을 객체에 대한 입력으로서 지정합니다.

주선종류를 객체에 지정하기 전에 선종류를 현재 도면으로 로드 합니다. 선종류를 도면으로 로드하려면 Load 메서드를 사용하십시오.

선종류에 대한 자세한 정보는 사용자 안내서의 “선종류 개요”를 참고하십시오.

원의 선종류 변경

이 예제는 원을 작성합니다. 그런 다음, acad.lin 파일에서 선종류 “CENTER” 로드를 시도합니다. 선종류가 이미 있거나 파일이 없는 경우에는 메시지가 표시됩니다. 마지막으로 원의 선종류를 “CENTER로 설정합니다.”를 참조하십시오.

Sub Ch4_ChangeCircleLinetype()
    On Error Resume Next
    ' Create a circle
    Dim circleObj As AcadCircle
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 2: center(1) = 2: center(2) = 0
    radius = 1
    Set circleObj = ThisDrawing.ModelSpace. _
                        AddCircle(center, radius)
    Dim linetypeName As String
    linetypeName = "CENTER"
    ' Load "CENTER" line type from acad.lin file
    ThisDrawing.Linetypes.Load linetypeName, "acad.lin"
    If Err.Description <> "" Then MsgBox Err.Description
    ' Assign the circle the linetype "CENTER"
    circleObj.Linetype = "CENTER"
    circleObj.Update
End Sub


도면층 설정값 저장 및 복원

객체의 선종류 변경
AutoCAD 도면요소 작성 및 편집
AutoCAD가 도면층 설정값을 저장하는 방법 이해하기
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 >
도면층 설정값 저장 및 복원

도면의 도면층 설정값을 저장한 다음 나중에 복원할 수 있습니다. 그러면 도면을 완료하거나 도면을 플롯팅할 때 다른 단계에서 모든 도면층에 지정된 설정값으로 쉽게 복귀할 수 있습니다.

도면층 설정값에는 도면층이 새로운 뷰포트, 도면층의 색상, 선종류, 선가중치 및 플롯 스타일로 도면층이 자동으로 동결되었는지, 도면층이 켜졌는지, 동결되었는지, 잠겼는지, 플롯되었는지 여부가 포함됩니다. 저장할 설정값을 지정할 수 있으므로 도면에 서로 다른 그룹의 설정값을 저장할 수 있습니다.

특수 객체 LayerStateManager는 ActiveX를 사용하여 도면층 설정값 작업에 대한 기능을 제공합니다.

도면층 설정값 저장에 대한 자세한 정보는 사용자 안내서의 “도면층 설정값 저장 및 복원”을 참고하십시오.

이 단원의 항목

  • AutoCAD가 도면층 설정값을 저장하는 방법 이해하기
  • LayerStateManager를 사용하여 도면층 설정값 관리하기


AutoCAD가 도면층 설정값을 저장하는 방법 이해하기

도면층 설정값 저장 및 복원
도면층 설정값 저장 및 복원
LayerStateManager를 사용하여 도면층 설정값 관리하기
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층 설정값 저장 및 복원 >
AutoCAD가 도면층 설정값을 저장하는 방법 이해하기

AutoCAD에서 도면층 설정값 정보는 도면의 Layers 컬렉션에 있는 확장 사전에 저장합니다. 먼저 도면층 설정값을 도면에 저장하면 AutoCAD가 다음을 수행합니다.

  • Layers 컬렉션에 확장 사전을 작성합니다.
  • 확장 사전에 ACAD_LAYERSTATE라는 Dictionary 객체를 작성합니다.
  • XRecord 객체의 도면에 있는 각 도면층의 특성을 ACAD_LAYERSTATE 사전에 저장합니다. AutoCAD는 도면층 설정값을 모두 XRecord에 저장하지만 저장하기는 선택한 특정 설정값을 식별합니다. 도면층 설정값을 복원하면 AutoCAD는 저장하기로 선택했던 설정값만 복원합니다.

사용자가 도면에 있는 다른 도면층 설정값을 저장할 때마다 AutoCAD는 저장된 설정값을 설명하는 다른 XRecord 객체를 작성하고 ACAD_LAYERSTATE 사전에 XRecord를 저장합니다. 다음 그림은 그 과정을 설명합니다.

ActiveX를 사용해서 도면층 설정값에 대해 작업할 때 XRecord를 해석하지 않아도 됩니다. 저장된 도면층 설정값에 접근하려면 LayerStateManager 객체의 함수를 사용하십시오.

도면의 저장된 도면층 설정값 나열

현재의 도면에서 도면층 설정값이 저장된 경우, 다음 코드를 사용하여 저장된 모든 도면층 설정값 이름을 나열할 수 있습니다.

Sub Ch4_ListStates()
     On Error Resume Next
    Dim oLSMDict As AcadDictionary
    Dim XRec As Object
    Dim layerstateNames As String
    layerstateNames = ""
    ' Get the ACAD_LAYERSTATES dictionary, which is in the
    ' extension dictionary in the Layers object.
    Set oLSMDict = ThisDrawing.Layers. _
           GetExtensionDictionary.Item("ACAD_LAYERSTATES")
    ' List the name of each saved layer setting. Settings are
    ' stored as XRecords in the dictionary.
    For Each XRec In oLSMDict
       layerstateNames = layerstateNames + XRec.Name + vbCrLf
    Next XRec
    MsgBox "The saved layer settings in this drawing are: " + _
            vbCrLf + layerstateNames
End Sub


LayerStateManager를 사용하여 도면층 설정값 관리하기

AutoCAD가 도면층 설정값을 저장하는 방법 이해하기
도면층 설정값 저장 및 복원
도면층 설정값 저장
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층 설정값 저장 및 복원 >
LayerStateManager를 사용하여 도면층 설정값 관리하기

LayerStateManager 객체는 데이터를 조작하는 함수 세트를 제공하는 AutoCAD Utility 객체와 유사합니다. 이들 함수는 저장된 도면층 설정값에 대한 작업 메서드입니다. 저장된 도면층 설정값에 대해 작업하려면 다음 LayerStateManager 메서드를 사용하십시오.

Delete

저장된 도면층 설정값을 삭제합니다.

Export

저장된 도면층 설정값을 파일로 내보냅니다.

Import

지정된 파일에서 저장된 도면층 설정값을 가져옵니다.

Rename

저장된 도면층 설정값의 이름을 바꿉니다.

Restore

현재 도면에서 지정된 도면층 설정값을 복원합니다.

Save

지정된 도면층 상태와 특성을 저장합니다.

SetDataBase

AutoCAD 데이터베이스를 LayerStateManager에 연결합니다.

LayerStateManager 객체에 접근하려면 GetInterfaceObject 메서드를 사용하십시오.

Dim oLSM As AcadLayerStateManager
Set oLSM = ThisDrawing.Application. _
   GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")

LayerStateManager 객체를 검색한 다음 객체의 메서드에 접근하기 전에 먼저 데이터베이스와 연관시켜야 합니다. 데이터베이스를 LayerStateManager와 연관시키려면 SetDatabase 메서드를 사용하십시오.

oLSM.SetDatabase ThisDrawing.Database

이 단원의 항목

  • 도면층 설정값 저장
  • 도면층 설정값 복원
  • 저장된 도면층 설정값 내보내기 및 가져오기


도면층 설정값 저장

LayerStateManager를 사용하여 도면층 설정값 관리하기
LayerStateManager를 사용하여 도면층 설정값 관리하기
도면층 설정값 복원
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층 설정값 저장 및 복원 > LayerStateManager를 사용하여 도면층 설정값 관리하기 >
도면층 설정값 저장

도면층 설정값 세트를 도면에 저장하려면 Save 메서드를 사용하십시오. Save 메서드는 2개의 매개변수를 사용합니다. 첫 번째 매개변수는 저장하려는 도면층 설정값을 명명하는 문자열입니다. 두 번째 매개변수는 저장할 도면층 특성을 식별합니다. 도면층 특성을 식별하려면 다음 테이블에 있는 상수를 사용하십시오.

도면층 특성을 식별하는 상수
상수 이름 | Layer 특성
acLsAll | 모든 도면층 설정값
acLsColor | Color
acLsFrozen | 동결 또는 동결 해제
acLsLineType | Linetype
acLsLineWeight | 선가중치
acLsLocked | 잠김 또는 잠금 해제
acLsNewViewport | 새로운 뷰포트 도면층 동결 또는 동결 해제
acLsNone | 없음
acLsOn | 껴기 또는 끄기
acLsPlot | 플로팅 켜짐 또느 꺼짐
acLsPlotStyle | 플롯 스타일

여러 개의 특성을 지정하려면 해당 상수를 함께 추가하십시오.

도면층 설정값을 이미 있는 이름에 저장하면 오류가 발생합니다. 이름을 재사용하려면 저장된 기존 도면층 설정값의 이름을 바꾸거나 삭제해야 합니다.

도면층 색상 및 선종류 설정값 저장

다음 코드에서는 현재 도면층의 색상 및 선종류 설정값을 ColorLinetype이라는 이름으로 저장합니다.

Sub Ch4_SaveLayerColorAndLinetype()
    Dim oLSM As AcadLayerStateManager
    ' Access the LayerStateManager object
    Set oLSM = ThisDrawing.Application. _
       GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")
    ' Associate the current drawing database with LayerStateManager
    oLSM.SetDatabase ThisDrawing.Database
    oLSM.Save "ColorLinetype", acLsColor + acLsLineType
End Sub

저장된 도면층 설정값의 이름 바꾸기

다음 코드는 ColorLinetype 도면층 설정값의 이름을 OldColorLinetype으로 바꿉니다.

Sub Ch4_RenameLayerSettings()
    Dim oLSM As AcadLayerStateManager
    Set oLSM = ThisDrawing.Application. _
       GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")
    oLSM.SetDatabase ThisDrawing.Database
    oLSM.Rename "ColorLinetype", "OldColorLinetype"
End Sub

저장된 도면층 설정값 삭제

다음 코드에서는 ColorLinetype 이라는 이름으로 저장된 도면층 설정값을 삭제합니다.

Sub Ch4_DeleteColorAndLinetype()
    Dim oLSM As AcadLayerStateManager
    Set oLSM = ThisDrawing.Application. _
       GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")
    oLSM.SetDatabase ThisDrawing.Database
    oLSM.Delete "ColorLinetype"
End Sub


도면층 설정값 복원

도면층 설정값 저장
LayerStateManager를 사용하여 도면층 설정값 관리하기
저장된 도면층 설정값 내보내기 및 가져오기
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층 설정값 저장 및 복원 > LayerStateManager를 사용하여 도면층 설정값 관리하기 >
도면층 설정값 복원

Restore 메서드는 현재 도면에 있는 모든 도면층 설정값을 이전에 저장한 값으로 복원합니다. 예를 들어, 도면 색상과 선종류 설정값을 “ColorLinetype” 이름으로 저장하고 다음에 이 설정값을 변경하는 경우, “ColorLinetype”을 복원하면 도면층은 “ColorLinetype”을 저장했을 때의 색상 및 선종류로 재설정됩니다. “ColorLinetype”을 저장한 다음 새 도면층을 도면에 추가하면 “ColorLinetype”을 복원할 때 새로운 도면층이 영향을 받지 않습니다.

도면의 도면층 색상과 선종류 설정값 복원

현재 도면에 있는 도면층의 색상 및 선종류 설정값이 이전에 “ColorLinetype,”이라는 이름으로 저장되었다고 가정하면, 다음 코드에서는 도면의 각 도면층 색상 및 선종류 설정값을 “ColorLinetype”을 저장한 때의 값으로 재설정합니다.

Sub Ch4_RestoreLayerSettings()
    Dim oLSM As AcadLayerStateManager
    Set oLSM = ThisDrawing.Application. _
       GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")
    oLSM.SetDatabase ThisDrawing.Database
    oLSM.Restore "ColorLinetype"
End Sub


저장된 도면층 설정값 내보내기 및 가져오기

도면층 설정값 복원
LayerStateManager를 사용하여 도면층 설정값 관리하기
도면에 추가
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면층 설정값 저장 및 복원 > LayerStateManager를 사용하여 도면층 설정값 관리하기 >
저장된 도면층 설정값 내보내기 및 가져오기

저장된 도면층 설정값을 내보내거나 가져와서 다른 도면에 사용할 수 있습니다. 도면층 설정값을 파일에 저장하려면 LayerStateManager의 Export 메서드를 사용하고, 저장된 도면층 설정값을 도면으로 가져오려면 Import 메서드를 사용하십시오.

주도면층 설정값을 가져온다고 설정값이 복원되는 것은 아닙니다. 도면의 도면층을 가져온 설정값으로 지정하려면 Restore 메서드를 사용해야 합니다.

Export 메서드는 2개의 매개변수를 사용합니다. 첫 번째 매개변수는 내보내려는 저장된 도면층 설정값을 식별하는 문자열입니다. 두 번째 매개변수는 내보낼 설정값 파일의 이름입니다. 파일의 경로를 지정하지 않으면 AutoCAD 설치 디렉토리에 저장됩니다. 지정한 파일 이름이 이미 있으면 기존 파일을 덮어 씁니다. 파일을 명명할 때는 . las 확장자를 사용하십시오. 이것은 AutoCAD가 내보낸 도면층 설정값 파일을 인식하는 확장자입니다.

Import 메서드는 하나의 매개변수를 승인합니다. 파일을 명명하는 문자열에는 가져오려는 도면층 설정값이 들어 있습니다.

도면층 설정값을 가져오는 경우, 가져오려는 도면에서 저장된 설정값의 참조된 특성을 사용할 수 없으면 오류 상태가 나타납니다. 그러나 가져오기는 완료되고 기본 특성이 사용됩니다. 예를 들어, 내보낸 도면층이 가져올 도면에 로드되지 않은 선종류로 설정되면 오류 상태가 나타나고 도면의 기본 선종류로 대체됩니다. 코드가 이 오류 조건을 고려해야 하며 오류 조건이 나타나면 계속 처리해야 합니다.

가져온 파일이 현재 도면에 없는 도면층의 설정값을 정의하면 그러한 도면층이 현재 도면에 작성됩니다. Restore 메서드를 사용하는 경우, 설정값이 저장될 때 지정한 특성이 새로운 도면층에 지정됩니다. 새로운 도면층의 나머지 특성에 기본 설정값이 지정됩니다.

저장된 도면층 설정값 내보내기

다음 코드에서는 저장된 도면층 설정값을 Colortype.las라는 파일로 내보냅니다.

Sub Ch4_ExportLayerSettings()
    Dim oLSM As AcadLayerStateManager
    Set oLSM = ThisDrawing.Application. _
       GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")
    oLSM.SetDatabase ThisDrawing.Database
    oLSM.Export "ColorLinetype", "c:\my documents\ColorLType.las"
End Sub

저장된 도면층 설정값 내보내기

다음 코드에서는 Colortype.las라는 파일에서 도면층 설정값을 가져옵니다.

Sub Ch4_ImportLayerSettings()
    Dim oLSM As AcadLayerStateManager
    Set oLSM = ThisDrawing.Application. _
       GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")
    oLSM.SetDatabase ThisDrawing.Database
    ' If the drawing you're importing to does not contain
    ' all the linetypes referenced in the saved settings,
    ' an error is returned. The import is completed, though,
    ' and the default linetype is used.
    On Error Resume Next
    oLSM.Import "c:\my documents\ColorLType.las"
    If Err.Number = -2145386359 Then
       ' Error indicates a linetype is not defined
       MsgBox ("One or more linetypes specified in the imported " + _
              "settings is not defined in your drawing")
    End If
    On ErrorGoTo0
End Sub


도면에 추가

저장된 도면층 설정값 내보내기 및 가져오기
AutoCAD 도면요소 작성 및 편집
문자 스타일로 작업
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 >
도면에 추가

문자는 도면에서 중요한 정보를 전달합니다. 문자는 제목 블록에 사용되는 경우, 도면의 각 부분별로 레이블을 붙이는 경우, 지정 사항을 제공하는 경우 또는 주석을 다는 경우에 사용하게 됩니다.

AutoCAD에는 다양한 문자 작성 방법이 있습니다. 짧고 간단한 항목을 작성하려면 행 문자를 사용하십시오. 내부 형식이 있는 긴 항목에는 여러 줄 문자를 사용하십시오. 입력된 모든 문자는 기본 글꼴과 형식 설정값이 정해진 현재 문자 스타일을 사용하게 되지만, 사용자가 문자 모양을 사용자화할 수 있습니다.

문자 관련 작업에 대한 자세한 정보는 사용자 안내서의 “문자 작성”을 참고하십시오.

이 단원의 항목

  • 문자 스타일로 작업
  • 행 문자(Text) 사용
  • 여러 줄 문자(Mtext) 사용
  • 유니코드 문자, 조정 코드 및 특수 문자 사용
  • 대체 글꼴
  • 철자 검사


문자 스타일로 작업

도면에 추가
도면에 추가
문자 스타일 수정 및 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 >
문자 스타일로 작업

AutoCAD 도면의 모든 문자에는 문자 스타일이 연관되어 있습니다. 문자를 입력하면 AutoCAD는 현재 문자 스타일을 사용하며, 이에 따라 글꼴, 크기, 각도, 방향 및 기타 문자 특성이 설정됩니다. 기본 스타일을 사용하거나 수정할 수 있으며, 새로운 스타일을 작성하고 로드할 수 있습니다. 스타일이 작성되면 속성을 수정할 수 있으며, 더 이상 필요하지 않을 때는 삭제할 수 있습니다.

이 단원의 항목

  • 문자 스타일 수정 및 작성
  • 글꼴 지정
  • 트루 타입 글꼴 사용
  • 유니코드 및 큰 글꼴 사용
  • 문자 높이 설정
  • 기울기 각도 설정
  • 문자 생성 플래그 설정


문자 스타일 수정 및 작성

문자 스타일로 작업
문자 스타일로 작업
글꼴 지정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 > 문자 스타일로 작업 >
문자 스타일 수정 및 작성

현재 문자 스타일의 높이, 폭 요인, 기울기 각도 및 문자 생성 특성이 새로 작성되는 문자에 상속됩니다. 문자 스타일을 작성하려면 Add 메서드를 사용하여 TextStyle 객체를 새로 작성해서 TextStyles 컬렉션에 추가하십시오. Add 메서드에서는 TextStyle 이름을 입력으로 사용합니다. 작성된 후에는 AutoCAD ActiveX Automation을 통해 문자 스타일의 이름을 변경할 수 없습니다.

스타일 이름은 글자와 숫자를 포함할 수 있으며, 특수 문자로 달러 기호($), 밑줄(_) 및 하이픈(-)을 포함할 수 있습니다. AutoCAD는 문자를 대문자로 변환합니다. 스타일 이름을 입력하지 않으면 AutoCAD에서 스타일은 자동으로 Stylen으로 명명됩니다. 여기서 n은 1부터 시작하는 숫자입니다. 각각의 새로운 스타일은 1씩 증가하여 표시됩니다.

TextStyle 객체의 특성을 변경하여 기존 스타일을 수정할 수 있습니다. 또한, 해당 문자 스타일로 된 기존 문자를 업데이트하여 변경 사항을 반영하도록 할 수 있습니다. TextStyle 객체를 수정하려면 다음 특성을 사용하십시오.

FontFile

글꼴(문자 스타일)과 연관된 파일을 지정합니다.

BigFontFile

ASCII 이외의 문자 세트에 사용되는 특수 쉐이프 정의 파일을 지정합니다.

Height

문자 높이를 지정합니다.

Width

문자의 확대 또는 축소를 지정합니다.

ObliqueAngle

문자의 기울기를 지정합니다.

TextGenerationFlag

역 문자, 위아래가 뒤집힌 문자 또는 두 가지 모두를 지정합니다.

기존 스타일의 글꼴이나 방향을 변경하면, 이 스타일을 사용하는 모든 문자가 새로운 글꼴이나 방향으로 변경됩니다. 문자 높이, 폭 비율 및 기울기 각도를 변경하면, 기존 문자는 변경되지 않고 그 이후에 작성한 문자 객체가 변경됩니다.

주위의 특성에 대한 변경 사항을 확인하려면 Regen 또는 Update 메서드를 호출해야 합니다.


글꼴 지정

문자 스타일 수정 및 작성
문자 스타일로 작업
트루 타입 글꼴 사용
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 > 문자 스타일로 작업 >
글꼴 지정

글꼴은 각 문자 세트를 이루고 있는 문자의 쉐이프를 정의합니다. 단일 글꼴은 둘 이상의 스타일에 사용될 수 있습니다. 글꼴을 문자 스타일에 지정하려면 TextStyle 객체의 FontFile 특성을 사용하십시오. AutoCAD 컴파일 SHX 글꼴이 들어 있는 글꼴 파일을 입력하여 문자 스타일에 해당 글꼴을 지정할 수 있습니다.

문자의 글꼴 설정

이 예제에서는 활성 문자 스타일의 현재 글꼴 값을 가져온 다음, 글꼴의 서체를 “PlayBill”로 변경합니다.그런 다음 SetFont 메서드를 사용하여 새로운 글꼴을 설정합니다. 서체의 변경 효과를 확인하려면 예제를 실행하기 전에 일부 MText나 Text를 현재 도면에 추가하십시오. 시스템에 PlayBill 글꼴이 없으면 예제 실행에 필요한 글꼴로 대체해야 합니다.

Sub Ch4_UpdateTextFont()
    MsgBox ("Look at the text now...")
    Dim typeFace As String
    Dim SavetypeFace As String
    Dim Bold As Boolean
    Dim Italic As Boolean
    Dim charSet As Long
    Dim PitchandFamily As Long
    ' Get the current settings to fill in the
    ' default values for the SetFont method
    ThisDrawing.ActiveTextStyle.GetFont typeFace, _
                 Bold, Italic, charSet, PitchandFamily
    ' Change the typeface for the font
    SavetypeFace = typeFace
    typeFace = "PlayBill"
    ThisDrawing.ActiveTextStyle.SetFont typeFace, _
                Bold, Italic, charSet, PitchandFamily
    ThisDrawing.Regen acActiveViewport
    MsgBox ("Now see how it looks after changing the font...")
    'Restore the original typeface
    ThisDrawing.ActiveTextStyle.SetFont SavetypeFace, _
                Bold, Italic, charSet, PitchandFamily
    ThisDrawing.Regen acActiveViewport
End Sub


트루 타입 글꼴 사용

글꼴 지정
문자 스타일로 작업
유니코드 및 큰 글꼴 사용
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 > 문자 스타일로 작업 >
트루 타입 글꼴 사용

트루타입 글꼴은 항상 도면에 채워진 상태로 표시됩니다. 그러나 플롯할 때 TEXTFILL 시스템 변수는 글꼴이 채워질지 여부를 조정합니다. 기본적으로 TEXTFILL은 1로 설정되어 채워진 글꼴로 플롯됩니다. Export 메서드를 사용하여 도면을 PostScript®  형식으로 내보내어 PostScript 장치에서 인쇄하면 글꼴이 설계한 대로 플롯됩니다.


유니코드 및 큰 글꼴 사용

트루 타입 글꼴 사용
문자 스타일로 작업
문자 높이 설정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 > 문자 스타일로 작업 >
유니코드 및 큰 글꼴 사용

AutoCAD는 유니코드 문자 코드화 표준을 지원합니다. 유니코드 글꼴은 여러 언어를 위한 쉐이프와 함께 65,535자를 포함할 수 있습니다. 이제 모든 AutoCAD SHX 쉐이프 글꼴은 유니코드 글꼴입니다.

한글과 같은 일부 문자를 위한 텍스트 파일은 수천 개의 비ASCII 문자들을 포함하고 있습니다. 이러한 문자들을 처리하기 위해 AutoCAD는 큰 글꼴 파일이라는 특수한 유형의 쉐이프 정의를 지원합니다. 보통 글꼴 파일과 큰 글꼴 파일 모두를 사용할 수 있도록 스타일을 설정할 수 있습니다. FontFile 특성을 사용하여 보통 글꼴을 지정하고 BigFontFile 특성을 사용하여 큰 글꼴을 지정하십시오.

주글꼴 파일 이름에는 쉼표를 사용할 수 없습니다.

AutoCAD는 한 글꼴을 다른 글꼴로 대체하거나 기본 글꼴을 지정하는 방법을 제공합니다. 자세한 정보는 대체 글꼴를 참고하십시오.

글꼴 파일 변경

이 예제는 FontFile과 BigFontFile 특성을 변경합니다. 예제에 나열된 경로 정보를 사용자의 시스템에 적합한 경로와 파일 이름으로 대치해야 합니다.

Sub Ch4_ChangeFontFiles()
    ThisDrawing.ActiveTextStyle.BigFontFile = _
                     "C:/AutoCAD/Fonts/bigfont.shx"
    ThisDrawing.ActiveTextStyle.fontFile = _
                     "C:/AutoCAD/Fonts/italic.shx"
End Sub


문자 높이 설정

유니코드 및 큰 글꼴 사용
문자 스타일로 작업
기울기 각도 설정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 > 문자 스타일로 작업 >
문자 높이 설정

문자 높이는 사용할 글꼴의 글자 크기를 도면 단위로 결정합니다. 문자 높이 값은 트루타입 글꼴의 경우를 제외하고는 일반적으로 대문자 크기를 나타냅니다.

트루타입 글꼴의 경우, 문자 높이로 지정한 값이 대문자 높이를 나타내지 않을 수 있습니다. 즉, 지정된 높이는 대문자의 높이에 비영어권 언어에 사용되는 액센트 표시 및 기타 표시에 대한 하강 영역을 더한 값을 나타냅니다. 대문자와 상승 문자에 지정된 영역과 관계된 부분은 글꼴이 설계된 시점의 글꼴 설계자에 의해 결정되므로, 결과적으로 글꼴에 따라 다양합니다.

사용자가 지정한 높이를 구성하는 상승 영역과 대문자 높이 외에, 트루타입 글꼴은 문자 삽입선 밑으로 연장되는 문자 부분에 대한 하강 영역을 갖고 있습니다. 그러한 문자의 예로는 y, j, p, g, q 등이 있습니다.

문자 높이는 Height 특성을 사용하여 지정됩니다. 이 특성에는 양수만 사용됩니다.

Text 객체의 높이 변경

다음 예제에서는 한 행의 문자를 작성한 다음 문자의 높이를 변경합니다.

Sub Ch4_ChangeTextHeight()
    Dim textObj As AcadText
    Dim textString As String
    Dim insertionPoint(0 To 2) As Double
    Dim height As Double
    ' Define the text object
    textString = "Hello, World."
    insertionPoint(0) = 3
    insertionPoint(1) = 3
    insertionPoint(2) = 0
    height = 0.5
    ' Create the text object in model space
    Set textObj = ThisDrawing.ModelSpace. _
                 AddText(textString, insertionPoint, height)
    ' Change the value of the Height to 1
    textObj.height = 1
    textObj.Update
End Sub


기울기 각도 설정

문자 높이 설정
문자 스타일로 작업
문자 생성 플래그 설정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 > 문자 스타일로 작업 >
기울기 각도 설정

기울기 각도는 문자가 앞으로 또는 뒤로 기울어진 정도를 결정합니다. 각도는 수직축(90도)으로부터 기울어진 각도입니다. 기울기 각도를 설정하려면 ObliqueAngle 특성을 사용하십시오. 기울기 각도는 라디안으로 지정해야 합니다. 양수 값은 오른쪽으로 기우는 것을 나타내고, 음수 값에는 양수 값으로 변환하는 2*PI가 추가됩니다.

기울기 문자 작성

다음 예제에서는 Text 객체를 작성한 다음에 문자를 45도 기울입니다.

Sub Ch4_ObliqueText()
    Dim textObj As AcadText
    Dim textString As String
    Dim insertionPoint(0 To 2) As Double
    Dim height As Double
    ' Define the text object
    textString = "Hello, World."
    insertionPoint(0) = 3
    insertionPoint(1) = 3
    insertionPoint(2) = 0
    height = 0.5
    ' Create the text object in model space
    Set textObj = ThisDrawing.ModelSpace. _
               AddText(textString, insertionPoint, height)
    ' Change the value of the ObliqueAngle
    ' to 45 degrees (.707 radians)
    textObj.ObliqueAngle = 0.707
    textObj.Update
End Sub


문자 생성 플래그 설정

기울기 각도 설정
문자 스타일로 작업
행 문자(Text) 사용
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 > 문자 스타일로 작업 >
문자 생성 플래그 설정

문자 생성 플래그는 문자를 역방향으로 표시할지 또는 위아래를 뒤집어서 표시할지 지정합니다. 문자 생성 플래그를 설정하려면 TextGenerationFlag 특성을 사용하십시오. 문자를 역방향으로 표시하려면 이 특성에 acTextFlagBackward를 입력하십시오. 문자를 위아래를 뒤집어 표시하려면 이 특성에 acTextFlagUpsideDown을 입력하십시오. 문자를 역방향과 위아래를 뒤집어 표시하려면 이 특성에 acTextFlagBackward+acTextFlagUpsidedown을 입력하여 두 개의 상수를 함께 추가하십시오.

역방향으로 문자 표시

이 예제에서는 문자 행을 작성한 다음 TextGenerationFlag 특성을 사용하여 문자를 역방향으로 표시되도록 설정합니다.

Sub Ch4_ChangingTextGenerationFlag()
    Dim textObj As AcadText
    Dim textString As String
    Dim insertionPoint(0 To 2) As Double
    Dim height As Double
    ' Create the text object
    textString = "Hello, World."
    insertionPoint(0) = 3
    insertionPoint(1) = 3
    insertionPoint(2) = 0
    height = 0.5
    Set textObj = ThisDrawing.ModelSpace. _
                AddText(textString, insertionPoint, height)
    ' Change the value of the TextGenerationFlag
    textObj.TextGenerationFlag = acTextFlagBackward
    textObj.Update
End Sub


행 문자(Text) 사용

문자 생성 플래그 설정
도면에 추가
행 문자 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 >
행 문자(Text) 사용

도면에 추가한 문자는 다양한 정보를 전달합니다. 이 문자는 복잡한 지정, 제목 블록 정보, 레이블 또는 도면의 일부분일 수 있습니다. 다중 글꼴이나 선이 필요하지 않은 짧은 항목에서는 Text 객체를 사용하여 행 문자를 작성하십시오. 행 문자는 레이블에 사용하는 것이 더 편리합니다.

이 단원의 항목

  • 행 문자 작성
  • 행 문자의 형식 설정
  • 행 문자 정렬
  • 문자 변경


행 문자 작성

행 문자(Text) 사용
행 문자(Text) 사용
행 문자의 형식 설정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 > 행 문자(Text) 사용 >
행 문자 작성

문자의 개별 행은 각각 행 문자를 사용할 때 별개의 객체입니다. 행 문자 객체를 작성하려면 AddText 메서드를 사용하십시오. 이 메서드에서는 문자열, 삽입점 및 문자의 높이 등 3가지 값을 입력해야 합니다.

문자열은 표시될 실제 문자입니다. 유니코드, 조정 코드 및 특수 문자를 사용할 수 있습니다. 삽입점은 variant 배열로, 그 안에는 문자를 놓을 도면에서 3D WCS 좌표를 표현하는 3개의 배정도가 들어 있습니다. 문자의 높이는 대문자의 높이를 나타내는 양수입니다. 높이는 현재 단위로 측정됩니다.

행 문자를 작성하려면

이 예제에서는 모형 공간의 (2, 2, 0) 좌표에 문자 행을 작성합니다.

Sub Ch4_CreateText()
    Dim textObj As AcadText
    Dim textString As String
    Dim insertionPoint(0 To 2) As Double
    Dim height As Double
    ' Create the text object
    textString = "Hello, World."
    insertionPoint(0) = 2
    insertionPoint(1) = 2
    insertionPoint(2) = 0
    height = 0.5
    Set textObj = ThisDrawing.ModelSpace. _
                AddText(textString, insertionPoint, height)
    textObj.Update
End Sub


행 문자의 형식 설정

행 문자 작성
행 문자(Text) 사용
행 문자 정렬
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 > 행 문자(Text) 사용 >
행 문자의 형식 설정

Text 객체는 활성 문자 스타일을 사용하여 작성됩니다. 연관된 문자 스타일을 변경하거나 Text 객체의 특성을 편집하면 Text 객체의 형식을 변경할 수 있습니다. 형식은 개별 단어와 문자에 적용할 수 없습니다.

개별 Text 객체와 연관된 문자 스타일을 변경하려면 StyleName 특성을 새로운 문자 스타일로 설정하십시오. 문자 스타일이 변경되면 Text 객체에 Update 메서드를 사용하여 도면의 변경 사항을 확인하십시오.

도면요소(예: 색상, 도면층, 선종류)에 대해 편집 가능한 표준 특성 외에, 다음과 같이 Text 객체에 대해 변경할 수 있는 다른 특성이 있습니다.

Alignment

문자의 수평 및 수직 정렬을 지정합니다.

InsertionPoint

문자의 삽입점을 지정합니다.

ObliqueAngle

개별 문자 객체의 기울기 각도를 지정합니다.

Rotation

문자의 회전 각도를 라디안 단위로 지정합니다.

ScaleFactor

문자의 축척 비율을 지정합니다.

TextAlignmentPoint

문자의 정렬점을 지정합니다.

TextGenerationFlag

문자를 역방향으로 표시할지, 위아래 뒤집어 표시할지 또는 두 가지를 동시에 적용해 표시할지 지정합니다.

TextString

표시될 실제 문자열을 지정합니다.

특성이 변경되면 Update 메서드를 사용하여 도면의 변경 사항을 확인하십시오.

주메서드와 특성의 전체 리스트는 AutoCADActiveX and VBA Reference의 Text 객체 문서를 참고하십시오.


행 문자 정렬

행 문자의 형식 설정
행 문자(Text) 사용
문자 변경
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 > 행 문자(Text) 사용 >
행 문자 정렬

행 문자를 수평과 수직으로 자리맞추기할 수 있습니다. 왼쪽 정렬이 기본값입니다. 수평과 수직 정렬 옵션을 설정하려면 Alignment 특성을 사용하십시오.

문자 재정렬

이 예제는 Text 객체와 Point 객체를 작성합니다. Point 객체는 문자 정렬 점으로 설정되며, 보일 수 있도록 빨간색 십자선으로 변경됩니다. 문자 정렬이 변경되며, 매크로 실행이 중지되도록 메시지 상자가 표시됩니다. 그러면 문자 정렬의 변경 효과를 확인할 수 있습니다.

Sub Ch4_TextAlignment()
    Dim textObj As AcadText
    Dim textString As String
    Dim insertionPoint(0 To 2) As Double
    Dim height As Double
    ' Define the new Text object
    textString = "Hello, World."
    insertionPoint(0) = 3
    insertionPoint(1) = 3
    insertionPoint(2) = 0
    height = 0.5
    ' Create the Text object in model space
    Set textObj = ThisDrawing.ModelSpace. _
                    AddText(textString, insertionPoint, height)
    ' Create a point over the text alignment point,
    ' so we can better visualize the alignment process
    Dim pointObj As AcadPoint
    Dim alignmentPoint(0 To 2) As Double
    alignmentPoint(0) = 3
    alignmentPoint(1) = 3
    alignmentPoint(2) = 0
    Set pointObj = ThisDrawing.ModelSpace. _
                    AddPoint(alignmentPoint)
    pointObj.Color = acRed
    ' Set the point style to crosshair
    ThisDrawing.SetVariable "PDMODE", 2
   ' Align the text to the Left
    textObj.Alignment = acAlignmentLeft
    ThisDrawing.Regen acActiveViewport
    MsgBox "The Text object is now aligned left"
    ' Align the text to the Center
    textObj.Alignment = acAlignmentCenter
    ' Align the text to the point (necessary for
    ' all but left aligned text.)
    textObj.TextAlignmentPoint = alignmentPoint
    ThisDrawing.Regen acActiveViewport
    MsgBox "The Text object is now centered"
    ' Align the text to the Right
    textObj.Alignment = acAlignmentRight
    ThisDrawing.Regen acActiveViewport
    MsgBox "The Text object is now aligned right"
End Sub


문자 변경

행 문자 정렬
행 문자(Text) 사용
여러 줄 문자(Mtext) 사용
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 > 행 문자(Text) 사용 >
문자 변경

다른 객체와 마찬가지로, Text 객체 역시 이동, 회전, 지우기 및 복사할 수 있습니다. 또한 문자를 대칭시킬 수도 있습니다. 문자를 대칭시킬 때 역으로 바뀌지 않게 하려면, MIRRTEXT 시스템 변수를 0으로 설정합니다.

다음 리스트는 Text 객체가 편집에 사용하는 데 필요한 몇 가지 메서드를 표시합니다. 전체 리스트는 AutoCAD ActiveX 및 VBA 참조의 Text 객체 설명서를 참조하십시오.

ArrayPolar

원형 배열을 작성합니다.

ArrayRectangular

직사각형 배열을 작성합니다.

Copy

Text 객체를 복사합니다.

Erase

Text 객체를 지웁니다.

Mirror

Text 객체의 대칭을 만듭니다.

Move

Text 객체를 이동시킵니다.

Rotate

Text 객체를 회전시킵니다.


여러 줄 문자(Mtext) 사용

문자 변경
도면에 추가
여러 줄 문자 작성
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 >
여러 줄 문자(Mtext) 사용

길고 복잡한 항목을 작성하려면, 여러 줄 문자(mtext)를 작성하십시오. 여러 줄 문자는 지정된 폭에 맞춰지지만 수직으로는 무한한 길이로 연장될 수 있습니다. 여러 줄 문자 내의 개별적인 단어나 문자의 형식을 만들 수도 있습니다.

이 단원의 항목

  • 여러 줄 문자 작성
  • 여러 줄 문자 형식화


여러 줄 문자 작성

여러 줄 문자(Mtext) 사용
여러 줄 문자(Mtext) 사용
여러 줄 문자 형식화
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 > 여러 줄 문자(Mtext) 사용 >
여러 줄 문자 작성

AddMText 메서드를 사용하면 여러 줄 문자 객체(MText 객체)를 작성할 수 있습니다. 이 메서드에서는 문자열, 문자를 넣을 도면에서의 삽입점, 문자 경계 상자의 폭 등 3가지 값을 입력해야 합니다.

문자열은 표시될 실제 문자입니다. 유니코드, 조정 코드 및 특수 문자를 사용할 수 있습니다. 삽입점은 variant 배열로, 그 안에는 문자를 놓을 도면에서 3D WCS 좌표를 표현하는 3개의 배정도가 들어 있습니다. 문자의 폭은 문자에 대한 경계 상자의 폭을 나타내는 양수이어야 합니다. 현재 단위로 폭이 측정됩니다.

MText 객체가 작성되면 문자 높이, 자리맞추기, 회전 각도 및 스타일을 MText 객체에 적용하거나 문자 형식을 선택된 문자에 적용할 수 있습니다.

MText 객체에 적용되는 메서드와 특성에 대한 리스트는 ActiveX 및 VBA 참조의 MText 항목을 참조하십시오.

여러 줄 문자를 작성하려면

다음 코드는 모형 공간의 좌표(2, 2, 0)에서 MText 객체를 작성합니다.

Sub Ch4_CreateMText()
    Dim mtextObj As AcadMText
    Dim insertPoint(0 To 2) As Double
    Dim width As Double
    Dim textString As String
    insertPoint(0) = 2
    Characters
    insertPoint(2) = 0
    width = 4
    textString = "This is a text string for the mtext object."
    ' Create a text Object in model space
    Set mtextObj = ThisDrawing.ModelSpace. _
               AddMText(insertPoint, width, textString)
    ZoomAll
End Sub


여러 줄 문자 형식화

여러 줄 문자 작성
여러 줄 문자(Mtext) 사용
유니코드 문자, 조정 코드 및 특수 문자 사용
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 > 여러 줄 문자(Mtext) 사용 >
여러 줄 문자 형식화

새로운 문자는 자동으로 현재 문자 스타일의 특성을 가집니다. STANDARD 문자 스타일이 기본값입니다. 형식을 개별 문자에 적용하고 특성을 Text 객체에 적용하여 기본 문자 스타일을 재지정할 수 있습니다. 이 절에서 설명한 메서드를 사용하여 형식이나 특수 문자를 표시할 수도 있습니다.

스타일, 자리맞추기, 폭 및 회전과 같은 방향 옵션은 특정 단어나 문자가 아닌 여러 줄 문자 경계 내에 있는 모든 문자에 영향을 미칩니다. 여러 줄 문자의 자리맞추기를 변경하려면 AttachmentPoint 특성을 사용하고, 문자 경계의 회전 각도를 조정하려면 Rotation 특성을 사용하십시오.

StyleName 특성은 새로운 문자의 기본 글꼴과 형식 특성을 설정합니다. 문자 작성시, 기존 스타일의 리스트에서 사용할 스타일을 선택할 수 있습니다. 문자 형식을 문자의 부분에 적용한 MText 객체의 스타일을 변경하면 스타일이 전체 객체에 적용되고, 문자의 일부 형식이 유지되지 않을 수 있습니다. 예를 들어 트루타입 스타일을 SHX 글꼴을 사용하는 스타일이나 또 다른 트루타입 글꼴로 변경하면 문자가 전체 객체에 새로운 글꼴을 사용하고 문자 형식이 분실됩니다.

밑줄, 스택 문자 또는 글꼴과 같은 형식 옵션은 단락 안에 있는 개별적인 단어나 문자에 적용될 수 있습니다. 또한 색상, 글꼴 및 문자 높이를 변경할 수 있습니다. 문자와 문자 사이의 공간을 변경하거나 문자 자체의 폭을 늘릴 수 있습니다.

형식 변경을 중괄호 안의 문자에만 적용하려면 굽은 중괄호({ })를 사용하십시오. 괄호는 8단계까지 내포할 수 있습니다.

또한 행이나 단락 내에 제어 코드에 해당하는 ASCII 문자를 입력하여 공차나 치수기입 기호와 같은 특수 문자와 형식을 나타낼 수 있습니다.

다음 조정 문자는 그림에서 문자를 작성하는 데 사용할 수 있습니다. (이 문자열에 해당하는 ASCII의 경우, 다음 그림의 예제를 참고하십시오.)

{{\H1.5x; Big text} \A2; over text\A1;/\A0; under text}

여러 줄 문자 형식에 대한 자세한 정보는 사용자 안내서의 “여러 줄 문자 내 문자 형식”을 참고하십시오.

문자 형식을 맞추기 위해 조정 문자 사용하기

이 예제에서는 MText 객체를 작성하고 형식을 지정합니다.

Sub Ch4_FormatMText()
    Dim mtextObj As AcadMText
    Dim insertPoint(0 To 2) As Double
    Dim width As Double
    Dim textString As String
    insertPoint(0) = 2
    Characters
    insertPoint(2) = 0
    width = 4
    ' Define the ASCII characters for the control characters
    Dim OB As Long ' Open Bracket {
    Dim CB As Long ' Close Bracket }
    Dim BS As Long ' Back Slash \
    Dim FS As Long ' Forward Slash /
    Dim SC As Long ' Semicolon ;
    OB = Asc("{")
    CB = Asc("}")
    BS = Asc("\")
    FS = Asc("/")
    SC = Asc(";")
    ' Assign the text string the following line of control
    ' characters and text characters:
    ' {{\H1.5x; Big text}\A2; over text\A1;/\A0; under text}
    textString = Chr(OB) + Chr(OB) + Chr(BS) + "H1.5x" _
    + Chr(SC) + "Big text" + Chr(CB) + Chr(BS) + "A2" _
    + Chr(SC) + "over text" + Chr(BS) + "A1" + Chr(SC) _
    + Chr(FS) + Chr(BS) + "A0" + Chr(SC) + "under text" _
    + Chr(CB)
    ' Create a text Object in model space
    Set mtextObj = ThisDrawing.ModelSpace. _
               AddMText(insertPoint, width, textString)
    ZoomAll
End Sub


유니코드 문자, 조정 코드 및 특수 문자 사용

여러 줄 문자 형식화
도면에 추가
대체 글꼴
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 >
유니코드 문자, 조정 코드 및 특수 문자 사용

기호를 표시할 문자열에 유니코드 문자, 조정 코드 및 특수 문자를 사용할 수 있습니다. (텍스트형 이외의 모든 문자는 해당되는 ASCII로 입력해야 합니다.)

다음 유니코드 문자열을 입력하면 특수 문자를 작성할 수 있습니다.

유니코드 문자 설명
유니코드 문자 | 설명
\U+00B0 | 각도 기호
\U+00B1 | 더하기/빼기 공차 기호
\U+2205 | 지름 치수기입 기호

특수 문자에 유니코드 문자를 사용하는 것 외에도 문자열에 조정 정보를 포함시켜서 특수 문자를 지정할 수 있습니다. 각 조정 순서를 사용하려면 한 쌍의 퍼센트 기호(%%)를 사용하십시오. 예를 들어, 다음 조정 코드는 문자 번호 nnn을 그리기 위해 표준 AutoCAD 문자와 PostScript 글꼴 작업에 사용됩니다.

%%nnn

VB나 VBA 문자열에서는 이 예제가 다음과 같이 입력됩니다.

Dim percent as Long
percent = ASC("%")
TextString = chr(percent) + chr(percent) + "nnn"

이러한 조정 코드는 표준 AutoCAD 문자 글꼴 작업에만 사용됩니다.

조정 코드 설명
조정 코드 | 설명
%%o | 윗줄 켜기와 끄기 전환합니다.
%%u | 밑줄 켜기와 끄기 전환합니다.
%%d | 각도 기호 그립니다.
%%p | 더하기/빼기 공차 기호 그립니다.
%%c | 지름 치수기입 기호 그립니다.
%%% | 하나의 퍼센트 기호 그립니다.


대체 글꼴

유니코드 문자, 조정 코드 및 특수 문자 사용
도면에 추가
대체 기본 글꼴 지정
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 >
대체 글꼴

다른 글꼴에 대한 대체 글꼴이나 AutoCAD가 도면에서 지정된 글꼴을 찾지 못할 때 기본값으로 사용할 글꼴을 지정할 수 있습니다.

도면의 문자에 사용될 글꼴은 문자 스타일에 의해 결정됩니다. 단, 여러 줄 문자의 경우에는 문자 섹션에 적용된 개별 글꼴 형식에 의해 결정됩니다.

글꼴 매핑 테이블을 사용하여 도면에 특정 글꼴만 사용되었는지 확인하거나 사용한 글꼴을 다른 글꼴로 변환할 수 있습니다. 이러한 글꼴 매핑 테이블을 사용하여 공동의 글꼴 표준이 사용되도록 하거나, 오프라인 인쇄를 쉽게 할 수 있습니다. AutoCAD에는 기본 글꼴 매핑 테이블이 함께 제공됩니다. ASCII 문서 편집기를 사용하여 이 파일을 편집할 수 있습니다. 또한 Preferences 객체에 FontFileMap 특성을 사용하여 여러 글꼴 매핑 테이블 파일을 지정할 수도 있습니다.

글꼴 매핑 테이블과 대체 글꼴에 대한 자세한 정보는 사용자 안내서의 “대체 글꼴”을 참고하십시오.

이 단원의 항목

  • 대체 기본 글꼴 지정


대체 기본 글꼴 지정

대체 글꼴
대체 글꼴
철자 검사
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 > 대체 글꼴 >
대체 기본 글꼴 지정

도면에서 현재 시스템에 없는 글꼴을 지정할 경우, AutoCAD는 자동으로 사용자의 대체 글꼴로 지정된 글꼴을 대체합니다. 기본적으로 AutoCAD는 simplex.shx 파일을 사용합니다. 그러나 필요에 따라 다른 글꼴을 지정할 수 있습니다. 대체 글꼴 파일 이름을 설정하려면 Preferences 객체에 AltFontFile 특성을 사용하십시오.

큰 글꼴을 사용하는 문자 스타일을 사용하는 경우, AltFontFile 특성을 사용하여 다른 글꼴로 매핑할 수 있습니다. 이 시스템 변수는 txt.shx, bigfont.shx의 기본 글꼴 파일 쌍을 사용합니다.

도면이 열렸을 때 AutoCAD가 글꼴 파일을 찾을 수 없으면 글꼴 대체 규칙의 기본 세트가 적용됩니다.


철자 검사

대체 기본 글꼴 지정
도면에 추가
치수 및 공차
ActiveX 및 VBA 개발자 안내서 > AutoCAD 도면요소 작성 및 편집 > 도면에 추가 >
철자 검사

철자를 검사할 때 AutoCAD는 도면에 있는 단어를 현재 주 사전에 있는 단어와 일치시킵니다. 사용자가 추가하는 단어는 철자 검사 시의 현재 사용자 사전에 저장됩니다. 예를 들어, 적절한 이름을 추가하여 AutoCAD가 더 이상 해당 단어를 철자가 틀린 단어로 지적하지 않도록 할 수 있습니다.

다른 언어로 철자를 검사하려면 다른 주 사전으로 변경하면 됩니다.

AutoCAD ActiveX Automation에는 철자 검사를 위한 방법이 없습니다. 그러나 MainDictionary 특성을 사용하여 다른 주 사전을 지정하거나 Preferences 객체에 CustomDictionary 특성을 사용하여 다른 사용자 사전을 지정할 수 있습니다.

철자 검사에 대한 자세한 정보는 사용자 안내서의 “철자 검사”를 참고하십시오.


치수 및 공차

철자 검사
치수기입 개요
ActiveX 및 VBA 개발자 안내서 >
치수 및 공차

치수기입은 측정값을 도면에 추가합니다. 공차는 치수가 달라질 수 있는 정도를 지정합니다. ActiveX 자동화를 사용하면 치수 스타일과 재지정을 통해 치수를 유지할 수 있습니다.

이 단원의 항목

  • 치수기입 개요
  • 치수 작성
  • 치수 편집
  • 문자 스타일로 작업
  • 모형 공간과 도면 공간에서 치수기입
  • 지시선과 주석 작성
  • 기하학적 공차 사용


치수기입 개요

치수 및 공차
치수 및 공차
치수의 일부
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 >
치수기입 개요

치수는 객체의 기하학적 측정값, 객체 간의 거리나 각도, 또는 피쳐의 X와 Y 좌표를 나타냅니다. AutoCAD®은(는) 선형, 반지름 및 각도와 같은 세 가지 기본 유형의 치수기입을 제공합니다. 선형 치수에는 정렬된, 회전된 및 세로좌표 치수가 있습니다.

선, 여러 줄, 호, 원 및 폴리선 세그먼트의 치수를 작성하거나 독립 실행형 치수를 작성할 수 있습니다.

AutoCAD는 현재 도면층에 치수를 그립니다. 모든 치수는 기본값이든 아니면 사용자가 정의한 값이든 상관없이 그와 연관된 치수 스타일을 갖고 있습니다. 스타일은 색상, 문자 스타일 및 선종류 축척과 같은 특성을 조정합니다. 두께 정보는 지원되지 않습니다. 스타일 패밀리를 사용하면 여러 유형의 치수에 맞게 기준 스타일을 미세하게 수정할 수 있습니다. 재지정을 사용하면 특정 치수에 맞게 스타일을 수정할 수 있습니다.

치수에 대한 자세한 정보는 사용자 안내서의 “기존 객체 변경”을 참고하십시오.

이 단원의 항목

  • 치수의 일부
  • 치수 시스템 변수 정의
  • 치수 문자 스타일 설정
  • 지시선 이해
  • 연관 치수 이해


치수의 일부

치수기입 개요
치수기입 개요
치수 시스템 변수 정의
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 > 치수기입 개요 >
치수의 일부

이 절에서는 치수를 구성하는 여러 요소를 간단히 정의합니다.

치수 선은 치수의 방향과 범위를 나타내는 선입니다. 각도 치수의 경우 치수 선은 호입니다. 투영선 또는 표지선이라고도 하는 치수보조선은 치수기입될 피쳐에서 치수 선까지 연장된 선입니다. 종료 기호 또는 그냥 종료라고도 하는 화살촉은 치수 선의 양끝에 추가됩니다. 치수 문자는 보통, 실제 측정치를 나타내는 문자열입니다. 머리말, 꼬리글 및 공차도 문자에 포함될 수 있습니다. 지시선은 주석으로부터 참조된 피쳐까지 이어지는 솔리드 선입니다. 중심 표식은 원이나 호의 중심을 표시하는 작은 십자형입니다. 중심선은 원이나 호의 중심을 표시하는 끊어진 선입니다.

치수의 일부에 대한 자세한 정보는 사용자 안내서의 “치수의 일부”를 참고하십시오.


치수 시스템 변수 정의

치수의 일부
치수기입 개요
치수 문자 스타일 설정
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 > 치수기입 개요 >
치수 시스템 변수 정의

치수기입 시스템 변수는 치수의 모양을 조정합니다. 치수 시스템 변수에는 DIMAUNIT, DIMUPT, DIMTOFL, DIMFIT, DIMTIH, DIMTOH, DIMJUST 및 DIMTAD가 있습니다. 이러한 변수는 SetVariable 메서드를 사용하여 설정할 수 있습니다. 예를 들어, 다음의 코드 행은 DIMAUNIT 시스템 변수(각도 치수의 단위 형식)를 라디안 (3)으로 설정합니다.

ThisDrawing.SetVariable "DIMAUNIT", 3

치수기입 시스템 변수에 대한 자세한 정보는 사용자 안내서의 “치수 스타일 사용”을 참고하십시오.


치수 문자 스타일 설정

치수 시스템 변수 정의
치수기입 개요
지시선 이해
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 > 치수기입 개요 >
치수 문자 스타일 설정

치수문자는 측정값, 공차(측면과 기하학적 둘다), 머리글, 꼬리글 및 단일행이나 단락 형식의 문자 주석을 포함하여, 치수와 연관되어 있는 일종의 문자입니다. AutoCAD에서 계산한 기본 측정치를 문자로 사용하고 고유한 문자를 제공하거나 문자를 완전히 표시하지 않을 수 있습니다. 치수 문자를 사용하여, 특수 제조 절차나 조립 지시사항과 같은 정보를 추가할 수 있습니다.

단일행 치수 문자는 ActiveTextStyle 특성으로 지정된 활성 문자 스타일을 사용합니다. 단락에는 문자열에서 수정한 사항에 따라 활성 문자 스타일이 사용됩니다.

치수 문자에 대한 자세한 정보는 사용자 안내서의 “치수 문자 조정”을 참고하십시오.


지시선 이해

치수 문자 스타일 설정
치수기입 개요
연관 치수 이해
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 > 치수기입 개요 >
지시선 이해

기본 지시선은 도면의 피쳐를 가리키는, 화살촉을 가진 직선입니다. 일반적으로 지시선의 기능은 주석과 피쳐를 연결하는 것입니다. 이런 경우 주석은 단락 문자, 블록 또는 피쳐 조정 프레임을 나타냅니다. 이러한 지시선은 반지름, 지름 및 선형 치수에 대해 AutoCAD에서 자동으로 작성된 단순 지시선과는 다릅니다. 단순 지시선의 문자는 치수보조선 사이에 꼭 맞지 않습니다.

지시선 객체가 주석과 연관되어 있으므로 주석이 편집되면 지시선도 그에 따라 업데이트됩니다. 사용된 주석을 도면의 다른 곳에 복사하여 지시선에 추가하거나 새로운 주석을 작성할 수 있습니다. 주석을 추가하지 않고 지시선을 작성할 수도 있습니다.

지시선에 대한 자세한 정보는 사용자 안내서의 “문자 및 지시선 작성 개요”를 참고하십시오.


연관 치수 이해

지시선 이해
치수기입 개요
치수 작성
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 > 치수기입 개요 >
연관 치수 이해

연관 치수와 관련된 기하학적 객체를 수정하면 연관 치수의 위치와 방향 및 측정값이 자동으로 조정됩니다. DIMASSOC 시스템 변수는 연관 치수기입을 조정합니다. DIMASSOC를 2로 설정하여 연관 치수기입을 켭니다.

연관 치수에 대한 자세한 정보는 사용자 안내서의 “연관 치수”를 참고하십시오.


치수 작성

연관 치수 이해
치수 및 공차
선형 치수 작성
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 >
치수 작성

선형, 반지름, 각도 및 세로좌표 치수를 작성할 수 있습니다.

치수를 작성할 때는 활성 치수 스타일이 사용됩니다. 치수가 작성되면 치수보조선 원점, 치수 문자 위치, 치수 문자 내용 및 각도를 치수 선에 따라 수정할 수 있습니다. 치수에 사용된 치수 스타일도 변경할 수 있습니다.

치수 작성에 대한 자세한 정보는 사용자 안내서의 “기존 객체 변경”을 참고하십시오.

이 단원의 항목

  • 선형 치수 작성
  • 반지름 치수 작성
  • 각도 치수 작성
  • 세로좌표 치수 작성


선형 치수 작성

치수 작성
치수 작성
반지름 치수 작성
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 > 치수 작성 >
선형 치수 작성

선형 치수는 정렬되거나 회전할 수 있습니다. 정렬된 치수에서 치수 선은 치수보조선 원점이 있는 선과 평행입니다. 회전된 치수에서 치수 선은 치수보조선 원점에 대한 각도로 배치됩니다.

선형 치수를 작성하려면 AddDimAligned 또는 AddDimRotated 메서드를 사용하십시오. 선형 치수를 작성한 다음에는 문자, 문자의 각도 또는 치수 선의 각도를 수정할 수 있습니다. 다음 그림에서는 치수보조선 원점이 명시적으로 표시되어 있습니다. 결과적인 치수 선 위치도 나타나 있습니다.

정렬된 치수를 작성하려면 AddDimAligned 메서드를 사용하십시오. 이 메서드에서는 두 치수보조선의 원점과 문자 위치와 같은 3개의 좌표를 입력해야 합니다.

회전된 치수를 작성하려면, AddDimRotated 메서드를 사용하십시오. 이 메서드에서는 3개의 좌표와 치수 선의 각도를 입력해야 합니다. 3개의 좌표는 두 치수보조선의 원점과 문자 위치입니다. 각도는 라디안으로 지정해야 하며 치수 선의 회전 각도를 표시합니다.

선형 치수 작성에 대한 자세한 정보는 사용자 안내서의 “선형 치수 작성”을 참고하십시오.


반지름 치수 작성

선형 치수 작성
치수 작성
각도 치수 작성
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 > 치수 작성 >
반지름 치수 작성

반지름 치수는 호와 원의 반지름 및 지름을 측정합니다. 반지름 치수를 작성하려면 AddDimRadial 메서드를 사용하십시오.

원이나 호의 크기, TextPosition 특성 및 DIMUPT, DIMTOFL, DIMFIT, DIMTIH, DIMTOH, DIMJUST 및 DIMTAD 치수 시스템 변수의 값에 따라 여러 유형의 반지름 치수가 작성됩니다. (GetVariable 및 SetVariable 메서드를 사용하여 시스템 변수를 조회하거나 설정할 수 있습니다.)

수평 치수 문자의 경우, 치수 선의 각도가 수평에서 15도 이상이고 원이나 호의 밖에 있으면 AutoCAD는 랜딩 또는 도그레그라고 하는 갈고리선을 그립니다. 갈고리선은 아래 그림에서와 같이 하나의 화살촉 길이로서, 치수문자 다음에 놓입니다.

반지름 치수를 작성하려면 AddDimRadial 또는 AddDimDiametric 메서드를 사용하십시오. 이 메서드에서는 원 또는 호의 중심 좌표, 지시선 부착 좌표 및 지시선 길이 등 세 개의 값을 입력해야 합니다.

이 메서드는 ChordPoint에서부터 치수가 주석 문자에 수평 갈고리선을 만드는 지점(또는 갈고리선이 필요하지 않은 경우 멈추는 지점)까지의 거리로서 LeaderLength 매개변수를 사용합니다.

반지름 치수 작성에 대한 자세한 정보는 사용자 안내서의 “반지름 치수 작성”을 참고하십시오.

반지름 치수 작성

이 예제에서는 모형 공간에 반지름 치수를 작성합니다.

Sub Ch5_CreateRadialDimension()
    Dim dimObj As AcadDimRadial
    Dim center(0 To 2) As Double
    Dim chordPoint(0 To 2) As Double
    Dim leaderLen As Integer
    ' Define the dimension
    center(0) = 0
    center(1) = 0
    center(2) = 0
    chordPoint(0) = 5
    chordPoint(1) = 5
    chordPoint(2) = 0
    leaderLen = 5
    ' Create the radial dimension in model space
    Set dimObj = ThisDrawing.ModelSpace. _
           AddDimRadial(center, chordPoint, leaderLen)
    ZoomAll
End Sub
주LeaderLength 설정값은 치수를 작성하는 동안(또한 치수가 기본 문자 위치값을 사용하도록 설정된 경우)에만 사용됩니다. 치수가 처음으로 완료된 후에는 LeaderLength 값을 변경해도 치수 표시에 영향을 주지 않습니다. 그러나 새 설정값은 저장되어 DXF, LISP 및 ADSRX 응용프로그램에서 나타날 수 있습니다.


각도 치수 작성

반지름 치수 작성
치수 작성
세로좌표 치수 작성
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 > 치수 작성 >
각도 치수 작성

각도 치수는 두 선 또는 세 점 사이의 각도를 측정합니다. 예를 들어, 각도 치수를 사용하면 한 원에서 두 반지름 사이의 각도를 측정할 수 있습니다. 치수 선은 호를 형성합니다.

각도 치수를 작성하려면 AddDimAngular 메서드를 사용하십시오. 이 메서드에서는 각도 정점, 치수보조선의 원점 및 문자 위치와 같은 3개의 값을 입력해야 합니다. AngleVertex는 원이나 호의 중심점이거나 치수 기입되는 두 선 사이의 공통 정점입니다. 치수보조선의 원점은 두 치수보조선이 지나가는 점입니다.

AngleVertex는 원점들 중 하나와 같을 수 있습니다. 치수보조선이 필요하면 자동으로 추가됩니다.

각도 치수 작성에 대한 자세한 정보는 사용자 안내서의 “각도 치수 작성”을 참고하십시오.

각도 치수 작성

이 예제에서는 모형 공간에 각도 치수를 작성합니다.

Sub Ch5_CreateAngularDimension()
    Dim dimObj As AcadDimAngular
    Dim angVert(0 To 2) As Double
    Dim FirstPoint(0 To 2) As Double
    Dim SecondPoint(0 To 2) As Double
    Dim TextPoint(0 To 2) As Double
    ' Define the dimension
    angVert(0) = 0
    angVert(1) = 5
    angVert(2) = 0
    FirstPoint(0) = 1
    FirstPoint(1) = 7
    FirstPoint(2) = 0
    SecondPoint(0) = 1
    SecondPoint(1) = 3
    SecondPoint(2) = 0
    TextPoint(0) = 3
    TextPoint(1) = 5
    TextPoint(2) = 0
    ' Create the angular dimension in model space
    Set dimObj = ThisDrawing.ModelSpace. _
     AddDimAngular(angVert, FirstPoint, SecondPoint, TextPoint)
    ZoomAll
End Sub


세로좌표 치수 작성

각도 치수 작성
치수 작성
치수 편집
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 > 치수 작성 >
세로좌표 치수 작성

세로좌표 또는 데이텀 치수는 데이텀이라 불리는 원점에서부터 부품의 구멍과 같은 치수기입된 피쳐까지의 수직 거리를 측정합니다. 이러한 치수는 기준점에서부터 피쳐까지 정확한 간격을 유지함으로써 오류가 단계적으로 확대되는 것을 방지합니다.

세로좌표 치수는 지시선을 가진 X 또는 Y 세로좌표로 구성되어 있습니다. X-데이텀 세로좌표 치수는 데이텀으로부터 X축을 따라 피쳐의 거리를 측정합니다. Y-데이텀 세로좌표 치수는 Y 축을 따라 동일한 거리를 측정합니다. AutoCAD는 현재 현재 사용자 좌표계(UCS)의 원점을 사용하여 측정된 좌표를 결정합니다. 좌표의 절대값이 사용됩니다.

문자는 현재 치수 스타일에 의해 정의된 문자 방향과 관계없이 세로좌표 지시선에 따라 정렬됩니다. 기본 문자를 승인하거나 사용자 고유의 문자를 제공할 수 있습니다.

세로좌표 치수를 작성하려면, AddDimOrdinate 메서드를 사용하십시오. 이 메서드에서는 치수 기입할 점(A)을 지정하는 좌표, 지시선의 끝(B)을 지정하는 좌표 및 치수가 X-데이터 세로좌표 치수인지 Y-데이터 세로좌표 치수인지 지정하는 부울 플래그와 같은 3개의 값을 입력해야 합니다. 부울 플래그에 TRUE를 입력하면 메서드는 X-데이텀 세로좌표 치수를 작성하고, FALSE를 입력하면 Y-데이텀 세로좌표 치수를 작성합니다.

세로좌표 치수 작성에 대한 자세한 정보는 사용자 안내서의 “세로좌표 치수 작성”을 참고하십시오.

세로좌표 치수 작성

이 예제에서는 모형 공간에 세로좌표 치수를 작성합니다.

Sub Ch5_CreatingOrdinateDimension()
    Dim dimObj As AcadDimOrdinate
    Dim definingPoint(0 To 2) As Double
    Dim leaderEndPoint(0 To 2) As Double
    Dim useXAxis As Long
    ' Define the dimension
    definingPoint(0) = 5
    definingPoint(1) = 5
    definingPoint(2) = 0
    leaderEndPoint(0) = 10
    leaderEndPoint(1) = 5
    leaderEndPoint(2) = 0
    useXAxis = 5
    ' Create an ordinate dimension in model space
    Set dimObj = ThisDrawing.ModelSpace. _
               AddDimOrdinate(definingPoint, _
               leaderEndPoint, useXAxis)
    ZoomAll
End Sub


치수 편집

세로좌표 치수 작성
치수 및 공차
치수 문자 재지정
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 >
치수 편집

AutoCAD의 다른 그래픽 객체와 마찬가지로 객체에 제공된 표준 메서드와 특성을 사용하여 치수를 편집할 수 있습니다.

다음 특성은 대부분의 치수 객체에서 사용할 수 있습니다.

Rotation

치수 선의 회전 각도를 라디안으로 지정합니다.

StyleName

치수 스타일의 이름을 지정합니다.

TextOverride

치수의 문자열을 지정합니다.

TextPosition

치수 문자 위치를 지정합니다.

TextRotation

치수 문자의 회전 각도를 지정합니다.

Measurement

치수의 실제 측정값을 지정합니다.

그 외에도 일부 치수 객체는 치수보조선 원점과 지시선 길이를 편집하는 데 사용되는 특성을 제공합니다.

치수 객체 편집에는 다음 메서드가 사용됩니다.

ArrayPolar

원형 배열을 작성합니다.

ArrayRectangular

직사각형 배열을 작성합니다.

Copy

치수 객체를 복사합니다.

Erase

치수 객체를 지웁니다.

Mirror

치수 객체를 대칭시킵니다.

Move

치수 객체를 이동시킵니다.

Rotate

치수 객체를 회전시킵니다.

ScaleEntity

치수 객체를 축척합니다.

치수 편집에 대한 자세한 정보는 사용자 안내서의 “기존 치수 수정”을 참고하십시오.

이 단원의 항목

  • 치수 문자 재지정


치수 문자 재지정

치수 편집
치수 편집
문자 스타일로 작업
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 > 치수 편집 >
치수 문자 재지정

표시된 치수 값은 TextOverride 특성을 사용하여 대치될 수 있습니다. 이 특성을 사용하면 표시된 치수 값을 완전히 교체하거나 값에 문자를 추가할 수 있습니다.

치수 문자 수정

이 예제에서는 문자열과 치수 값이 모두 표시되도록 문자를 값에 추가합니다.

Sub Ch5_OverrideDimensionText()
    Dim dimObj As AcadDimAligned
    Dim point1(0 To 2) As Double
    Dim point2(0 To 2) As Double
    Dim location(0 To 2) As Double
    ' Define the dimension
    point1(0) = 5#: point1(1) = 3#: point1(2) = 0#
    point2(0) = 10#: point2(1) = 3#: point2(2) = 0#
    location(0) = 7.5: location(1) = 5#: location(2) = 0#
    ' Create an aligned dimension object in model space
    Set dimObj = ThisDrawing.ModelSpace. _
                   AddDimAligned(point1, point2, location)
    ' Change the text string for the dimension
    dimObj.TextOverride = "The value is <>"
    dimObj.Update
End Sub


문자 스타일로 작업

치수 문자 재지정
치수 및 공차
치수 스타일 작성, 수정 및 복사
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 >
문자 스타일로 작업

명명된 치수 스타일은 치수의 모양을 결정하는 치수 설정값의 그룹입니다. 명명된 치수 스타일을 사용하면 도면의 제도 표준을 수립하고 실행할 수 있습니다.

모든 치수는 현재 스타일을 사용하여 작성됩니다. 치수를 작성하기 전에 스타일을 정의하거나 적용하지 않으면 AutoCAD에서는 기본 스타일인 STANDARD가 적용됩니다. 활성 치수 스타일을 설정하려면 ActiveDimStyle 특성을 사용하십시오.

상위 치수 스타일을 설정하려면 먼저 스타일에 이름을 부여한 후 저장함으로써 시작하십시오. 새로운 스타일은 현재의 스타일을 기준으로 하며, 치수 구성요소의 배치, 문자의 위치지정 및 주석의 모양에 대한 모든 후속 변경 사항을 포함합니다. 이런 경우 주석은 1차 단위와 대체 단위, 공차 및 문자를 의미합니다.

치수 스타일에 대한 자세한 정보는 사용자 안내서의 “치수 스타일 사용”을 참고하십시오.

이 단원의 항목

  • 치수 스타일 작성, 수정 및 복사
  • 치수 스타일 재지정


치수 스타일 작성, 수정 및 복사

문자 스타일로 작업
문자 스타일로 작업
치수 스타일 재지정
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 > 문자 스타일로 작업 >
치수 스타일 작성, 수정 및 복사

새로운 치수 스타일을 작성하려면, Add 메서드를 사용하십시오. 이 메서드에서는 새 치수 스타일의 이름을 입력해야 합니다.

AutoCAD ActiveX 자동화를 사용하면 새 치수 스타일을 추가하고 활성 치수 스타일을 변경할 수 있습니다. 주어진 치수와 연관된 치수 스타일도 StyleName 특성을 통해 변경할 수 있습니다.

또한 기존 스타일이나 재지정 세트를 복사할 수도 있습니다. CopyFrom 메서드를 사용하여 원본 객체의 치수 스타일을 새 치수 스타일로 복사하십시오. 원본 객체는 또 다른 DimStyle 객체, 치수, Tolerance 또는 Leader 객체가 되거나 Document 객체가 될 수도 있습니다. 스타일 설정값을 다른 치수 스타일에서 복사하는 경우에는 스타일이 정확히 복제됩니다. 치수, Tolerance 또는 Leader 객체에서 스타일 설정값을 복사하는 경우에는 객체 재지정을 포함하여 현재의 설정값이 새 스타일로 복사됩니다. Document 객체의 스타일을 복사하면 도면 재지정과 함께 활성 치수 스타일이 새 스타일로 복사됩니다.

치수 스타일 및 재지정 복사

이 예제는 3개의 새 치수 스타일을 작성하고 문서, 주어진 치수 스타일 및 주어진 치수 등의 현재 설정값을 각각 새로운 치수 스타일로 복사합니다. 예제를 실행하기 전에 적합한 설정을 수행하면 다른 치수 스타일이 작성됩니다.

  1. 새 도면을 작성하여 활성 도면으로 작성합니다.
  2. 새 도면에 선형 치수를 작성합니다. 이 치수는 도면에서 유일한 객체이어야 합니다.
  3. 치수 선의 색상을 노란색으로 바꿉니다.
  4. DIMCLRD 시스템 변수를 5(파란색)로 변경합니다.
  5. 다음 예제를 실행합니다.
Sub Ch5_CopyDimStyles()
    Dim newStyle1 As AcadDimStyle
    Dim newStyle2 As AcadDimStyle
    Dim newStyle3 As AcadDimStyle
    Set newStyle1 = ThisDrawing.DimStyles.Add _
                    ("Style 1 copied from a dim")
    Call newStyle1.CopyFrom(ThisDrawing.ModelSpace(0))
    Set newStyle2 = ThisDrawing.DimStyles.Add _
                    ("Style 2 copied from Style 1")
    Call newStyle2.CopyFrom(ThisDrawing.DimStyles.Item _
                    ("Style 1 copied from a dim"))
    Set newStyle2 = ThisDrawing.DimStyles.Add _
                    ("Style 3 copied from the running drawing values")
    Call newStyle2.CopyFrom(ThisDrawing)
End Sub
DIMSTYLE 대화상자를 엽니다. 세 가지 치수 스타일이 나열됩니다. 스타일 1에는 노란색의 치수 선이 있어야 합니다. 스타일 2는 스타일 1과 같아야 하며 스타일 3에는 파란색 치수 선이 있어야 합니다.


치수 스타일 재지정

치수 스타일 작성, 수정 및 복사
문자 스타일로 작업
모형 공간과 도면 공간에서 치수기입
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 > 문자 스타일로 작업 >
치수 스타일 재지정

각 치수마다 해당 치수의 치수 스타일에는 설정값 재지정 기능이 있습니다. 다음 특성은 대부분의 치수 객체에서 사용할 수 있습니다.

AltRoundDistance

대체 단위의 반올림을 지정합니다.

AngleFormat

각도 치수의 단위 형식을 지정합니다.

Arrowhead1Block, Arrowhead2Block

치수 선에서 사용자 정의 화살촉으로 사용할 블록을 지정합니다.

Arrowhead1Type, Arrowhead2Type

치수 선의 화살촉 유형을 지정합니다.

ArrowheadSize

치수 선 화살촉, 지시선 화살촉 및 갈고리선의 크기를 지정합니다.

CenterMarkSize

반지름 및 지름 치수에 대한 중심 표식의 크기를 지정합니다.

CenterType

반지름 및 지름 치수에 대한 중심 표식의 유형을 지정합니다.

DecimalSeparator

십진 치수와 공차 값에서 소수부 구분자로 사용할 문자를 지정합니다.

DimensionLineColor

치수, 지시선 또는 공차 객체에 대한 치수 선의 색상을 지정합니다.

DimensionLineWeight

치수 선의 선 가중치를 지정합니다.

DimLine1Suppress, DimLine2Suppress

치수 선의 억제를 지정합니다.

DimLineInside

치수보조선 안에 있는 치수 선만 화면표시하도록 지정합니다.

ExtensionLineColor

치수보조선의 색상을 지정합니다.

ExtensionLineExtend

치수보조선이 치수 선을 벗어나는 거리를 지정합니다.

ExtensionLineOffset

치수보조선이 원점에서 떨어지는 거리를 지정합니다.

ExtensionLineWeight

치수보조선의 선 가중치를 지정합니다.

ExtLine1EndPoint, ExtLine2EndPoint

치수보조선의 끝점을 지정합니다.

ExtLine1StartPoint, ExtLine2StartPoint

치수보조선의 시작점을 지정합니다.

ExtLine1Suppress, ExtLine2Suppress

치수보조선의 억제를 지정합니다.

맞춤

치수보조선 안이나 밖의 문자 및 화살촉 배치를 지정합니다.

ForceLineInside

문자가 치수보조선 밖에 놓일 때도 치수 선이 치수보조선 사이에 그려지는지를 지정합니다.

FractionFormat

치수와 공차의 분수 값 형식을 지정합니다.

HorizontalTextPosition

치수 문자의 수평 자리맞추기를 지정합니다.

LinearScaleFactor

선형 치수기입 측정값에 대한 전역 축척 비율을 지정합니다.

PrimaryUnitsPrecision

치수나 공차의 1차 단위로 표시할 소수부 자릿수를 지정합니다.

SuppressLeadingZeros, SuppressTrailingZeros

치수 값에서 선행 0과 후행 0의 억제를 지정합니다.

SuppressZeroFeet, SuppressZeroInches

치수 값에서 0피트와 0인치 측정의 억제를 지정합니다.

TextColor

치수와 공차 객체의 문자 색상을 지정합니다.

TextGap

치수 선을 치수 문자에 맞게 끊을 때 치수 문자와 치수 선 사이의 거리를 지정합니다.

TextHeight

치수나 공차 문자의 높이를 지정합니다.

TextInside

치수 문자를 치수보조선 안에 그릴지 여부를 지정합니다.

TextInsideAlign

세로좌표를 제외한 모든 치수 유형의 치수보조선 안에 치수 문자의 위치를 지정합니다.

TextMovement

문자가 이동할 때 치수 문자를 그리는 방법을 지정합니다.

TextOutsideAlign

세로좌표를 제외한 모든 치수 유형의 치수보조선 밖에 치수 문자의 위치를 지정합니다.

TextPosition

치수 문자 위치를 지정합니다.

TextPrecision

각도 치수 문자의 정밀도를 지정합니다.

TextPrefix

치수 값 머리글을 지정합니다.

TextRotation

치수 문자의 회전 각도를 지정합니다.

TextSuffix

치수 값 꼬리글을 지정합니다.

ToleranceDisplay

치수 문자와 함께 공차가 표시되는지 여부를 지정합니다.

ToleranceHeightScale

치수 문자 높이를 기준으로 공차 값의 문자 높이에 대한 축척 비율을 지정합니다.

ToleranceJustification

명목상의 치수 문자를 기준으로 공차 값의 수직 자리맞추기를 지정합니다.

ToleranceLowerLimit

치수 문자의 최소 공차 한계를 지정합니다.

TolerancePrecision

1차 치수에 공차 값의 정밀도를 지정합니다.

ToleranceSuppressLeadingZeros

공차 값에 선행 0의 억제를 지정합니다.

ToleranceSuppressTrailingZeros

치수 값에 후행 0의 억제를 지정합니다.

ToleranceUpperLimit

치수 문자의 최대 공차 한계를 지정합니다.

UnitsFormat

각도를 제외한 모든 치수의 단위 형식을 지정합니다.

VerticalTextPosition

치수 선을 기준으로 문자의 수직 위치를 지정합니다.

정렬된 치수에 사용자 정의 꼬리글 입력

이 예제에서는 모형 공간에서 정렬된 치수를 작성하며, TextSuffix 특성을 사용하여 치수의 문자 꼬리글을 변경할 수 있도록 합니다.

Sub Ch5_AddTextSuffix()
    Dim dimObj As AcadDimAligned
    Dim point1(0 To 2) As Double
    Dim point2(0 To 2) As Double
    Dim location(0 To 2) As Double
    Dim suffix As String
    ' Define the dimension
    point1(0) = 0: point1(1) = 5: point1(2) = 0
    point2(0) = 5: point2(1) = 5: point2(2) = 0
    location(0) = 5: location(1) = 7: location(2) = 0
    ' Create an aligned dimension object in model space
    Set dimObj = ThisDrawing.ModelSpace. _
                 AddDimAligned(point1, point2, location)
    ThisDrawing.Application.ZoomAll
    ' Allow the user to change the text suffix for the dimension
    suffix = InputBox("Enter a new text suffix for the dimension" _
                      , "Set Dimension Suffix", ":SUFFIX")
    ' Apply the change to the dimension
    dimObj.TextSuffix = suffix
    ThisDrawing.Regen acAllViewports
End Sub


모형 공간과 도면 공간에서 치수기입

치수 스타일 재지정
치수 및 공차
지시선과 주석 작성
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 >
모형 공간과 도면 공간에서 치수기입

도면 공간과 모형 공간 모두에서 치수를 그릴 수 있습니다. 그러나 치수기입하려는 형상이 모형 공간에 있는 경우 모형 공간에서 치수를 그리는 것이 더 나은데, 그 이유는 AutoCAD에서는 형상이 그려진 공간에 정의점이 위치하기 때문입니다.

모형의 형상을 묘사한 도면 공간에 치수를 그리는 경우, 편집 명령을 사용하거나 모형 공간 뷰포트의 화면표시 배율을 변경해도 도면 공간 치수는 변경되지 않습니다. 또한 도면 공간에서 모형 공간으로 뷰를 변경해도 도면 공간 치수의 위치는 그대로입니다.

도면 공간에서 치수기입할 때 선형 치수기입을 위한 전역 축척 비율(DIMLFAC 시스템 변수)이 0보다 작게 설정된 경우, 측정된 거리는 DIMLFAC의 절대값을 곱한 값이 됩니다. 모형 공간에 치수기입할 경우, DIMLFAC가 0 미만이어도 값 1.0이 사용됩니다. 치수 프롬프트에서 변수를 변경하고 뷰포트 옵션을 선택한 경우 AutoCAD에서 DIMLFAC의 값을 계산합니다. AutoCAD는 도면 공간에 대한 모형 공간의 축척을 계산하고 이 값의 음수를 DIMLFAC에 지정합니다.


지시선과 주석 작성

모형 공간과 도면 공간에서 치수기입
치수 및 공차
지시선 작성
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 >
지시선과 주석 작성

지시선은 주석을 도면의 피쳐에 연결한 선입니다. 지시선과 그 주석이 연관되어 있으므로 주석을 수정하면 지시선도 그에 따라 업데이트됩니다. Leader 객체를 치수선의 일부로 AutoCAD에서 자동으로 생성되는 지시선과 혼동해서는 안 됩니다.

지시선에 대한 자세한 정보는 사용자 안내서의 “지시선으로 문자 작성”을 참고하십시오.

이 단원의 항목

  • 지시선 작성
  • 지시선에 주석 추가
  • 지시선 연관성
  • 지시선 연관성 편집
  • 지시선 편집


지시선 작성

지시선과 주석 작성
지시선과 주석 작성
지시선에 주석 추가
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 > 지시선과 주석 작성 >
지시선 작성

도면에 있는 임의의 점이나 피쳐로부터 지시선을 작성할 수 있으며 지시선을 그릴 때 그 외관을 조정할 수 있습니다. 지시선은 직선 세그먼트이거나 또는 부드러운 스플라인 곡선입니다. 지시선 색상은 현재의 치수 선 색상에 따라 조정됩니다. 지시선 축척은 활성 치수 스타일의 전역 치수 축척 설정에 의해 조정됩니다. 화살촉이 있는 경우 그 유형와 크기는 활성 스타일에서 정의된 첫 번째 화살촉에 의해 조정됩니다.

대개 갈고리선이라고 하는 작은 선이 주석을 지시선에 연결합니다. 갈고리선은 마지막 지시선 세그먼트가 수평에서 15도보다 더 큰 각도에 있는 경우에 단락 문자 및 피쳐 조정 프레임과 함께 나타나거나 나타납니다. 갈고리선의 길이는 화살촉 하나의 길이와 같습니다. 지시선에 주석이 없으면, 갈고리선도 없습니다.

지시선을 작성하려면 AddLeader 메서드를 사용하십시오. 이 메서드에서는 지시선을 작성할 좌표의 배열, 주석 객체(지시선에 주석이 없을 경우 NULL) 및 작성할 지시선의 유형과 같은 3개의 값을 입력해야 합니다. 지시선의 유형는 지시선이 직선인지 아니면 부드러운 스플라인 곡선인지 지정합니다. 또한 지시선에 화살표가 있는지 여부도 결정합니다. 다음 상수 중 하나를 사용하여 지시선 유형을 지정합니다: acLineNoArrow, acLineWithArrow, acSplineNoArrow 또는 acSplineWithArrow. 이러한 상수는 상호 배타적입니다.

지시선 작성

이 예제에서는 모형 공간에 상자를 작성합니다. 지시선과 연관된 주석은 없습니다.

Sub Ch5_CreateLeader()
    Dim leaderObj As AcadLeader
    Dim points(0 To 8) As Double
    Dim leaderType As Integer
    Dim annotationObject As AcadObject
    points(0) = 0: points(1) = 0: points(2) = 0
    points(3) = 4: points(4) = 4: points(5) = 0
    points(6) = 4: points(7) = 5: points(8) = 0
    leaderType = acLineWithArrow
    Set annotationObject = Nothing
    ' Create the leader object in model space
    Set leaderObj = ThisDrawing.ModelSpace. _
          AddLeader(points, annotationObject, leaderType)
    ZoomAll
End Sub


지시선에 주석 추가

지시선 작성
지시선과 주석 작성
지시선 연관성
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 > 지시선과 주석 작성 >
지시선에 주석 추가

지시선 주석은 Tolerance, MText 또는 BlockRef 객체가 될 수 있습니다. 새로운 주석을 작성하거나 기존 주석의 사본을 덧붙일 수 있습니다. 주석은 지시선이 작성될 때만 지시선에 추가됩니다.

지시선이 작성되고 있을 때 주석을 추가하려면 AddLeader 메서드에 주석을 입력하십시오.


지시선 연관성

지시선에 주석 추가
지시선과 주석 작성
지시선 연관성 편집
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 > 지시선과 주석 작성 >
지시선 연관성

지시선은 지시선의 주석과 연관되어 있기 때문에 주석을 이동하면, 지시선의 끝점도 함께 이동합니다. 문자와 피쳐 조정 프레임 주석을 이동할 때 최종 지시선 세그먼트는 지시선의 끝에서 두 번째 점과 주석의 관계에 따라 주석의 왼쪽이나 오른쪽에 번갈아 부착됩니다. 주석의 중간점이 지시선의 끝에서 두 번째 점보다 오른쪽에 있으면 지시선이 오른쪽에 부착되고, 그렇지 않으면 왼쪽에 부착됩니다.

Erase, Add(블록 추가) 또는 WBlock 메서드를 사용하여 도면에서 객체를 제거하면 연관성이 끊어집니다. 지시선과 주석이 단일 작업으로 함께 복사되는 경우, 이 새로운 사본도 서로 연관됩니다. 그러나 개별적으로 복사되면 연관되지 않습니다. 예를 들어, Leader 객체만 복사하거나 주석을 지우는 등의 이유로 인해 연관성이 끊어지면, 갈고리선이 지시선에서 제거됩니다.

주석에 지시선을 연관

이 예제는 MText 객체를 작성합니다. 그런 다음 MText 객체를 주석으로 사용하여 지시선을 작성합니다.

Sub Ch5_AddAnnotation()
    Dim leaderObj As AcadLeader
    Dim mtextObj As AcadMText
    Dim points(0 To 8) As Double
    Dim insertionPoint(0 To 2) As Double
    Dim width As Double
    Dim leaderType As Integer
    Dim annotationObject As Object
    Dim textString As String, msg As String
    ' Create the MText object in model space
    textString = "Hello, World."
    insertionPoint(0) = 5
    insertionPoint(1) = 5
    insertionPoint(2) = 0
    width = 2
    Set mtextObj = ThisDrawing.ModelSpace. _
               AddMText(insertionPoint, width, textString)
    ' Data for Leader
    points(0) = 0: points(1) = 0: points(2) = 0
    points(3) = 4: points(4) = 4: points(5) = 0
    points(6) = 4: points(7) = 5: points(8) = 0
    leaderType = acLineWithArrow
    ' Create the Leader object in model space and associate
    ' the MText object with the leader
    Set annotationObject = mtextObj
    Set leaderObj = ThisDrawing.ModelSpace. _
            AddLeader(points, annotationObject, leaderType)
    ZoomAll
End Sub


지시선 연관성 편집

지시선 연관성
지시선과 주석 작성
지시선 편집
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 > 지시선과 주석 작성 >
지시선 연관성 편집

지시선과 주석의 연관성 관계를 제외하고, 지시선과 그 주석은 도면에서 완전히 독립적인 객체입니다. 지시선을 편집해도 주석에 영향을 주지 않으며, 주석을 편집해도 지시선에 영향을 주지 않습니다.

문자 주석은 해당 색상, 높이 및 스타일을 정의하기 위해 DIMCLRT, DIMTXT 및 DIMTXSTY 시스템 변수를 사용하여 작성되지만, 문자 주석은 실제 치수 객체가 아니므로 이들 시스템 변수에 의해 변경되지 않습니다. 문자 주석은 다른 Mtext 객체와 동일한 방식으로 편집되어야 합니다.

Evaluate 메서드를 사용하여 연관된 주석과 지시선의 관계를 평가하십시오. 이 메서드는 필요에 따라 지시선 형상을 업데이트합니다.


지시선 편집

지시선 연관성 편집
지시선과 주석 작성
기하학적 공차 사용
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 > 지시선과 주석 작성 >
지시선 편집

지시선 주석의 위치가 변경되도록 수정하면 연관된 지시선의 끝점 위치에 영향을 미칩니다. 또한 주석을 회전하면 지시선 갈고리선(있는 경우)도 회전하게 됩니다.

지시선의 크기를 조절하려면 축척하십시오. 축척하면 선택된 객체의 축척만 업데이트됩니다. 예를 들어, 지시선을 축척하면 주석은 지시선 끝점을 기준으로 동일한 위치에 남아 있지만 축척되지는 않습니다.

축척 뿐만이 아니라 지시선은 이동, 대칭 및 회전이 가능합니다. ScaleEntity, Move, Mirror 및 Rotate 메서드를 사용하여 지시선을 편집하십시오. StyleName 특성을 사용하여 주석과 연관된 문자 스타일을 변경할 수도 있습니다.


기하학적 공차 사용

지시선 편집
치수 및 공차
기하학적 공차 작성
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 >
기하학적 공차 사용

기하학적 공차는 피쳐의 모양, 윤곽, 방향, 위치 및 런아웃의 편차를 나타냅니다. 기하학적 공차는 피쳐 조정 프레임에 추가됩니다. 이 프레임에는 단일 치수에 대한 모든 공차 정보가 포함됩니다.

피쳐 조정 프레임 사용 및 기하학적 공차 관련 작업에 대한 자세한 정보는 사용자 안내서의 “기하학적 공차 추가”를 참고하십시오.

이 단원의 항목

  • 기하학적 공차 작성
  • 공차 편집


기하학적 공차 작성

기하학적 공차 사용
기하학적 공차 사용
공차 편집
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 > 기하학적 공차 사용 >
기하학적 공차 작성

기하학적 공차를 작성하려면 AddTolerance 메서드를 사용하십시오. 이 메서드에서는 공차 기호를 구성하는 문자열, 공차를 넣을 도면에서의 위치 및 공차의 방향을 지정하는 방향 벡터와 같은 3개의 값을 입력해야 합니다. 공차를 복사, 이동, 지우기, 축척 및 회전할 수도 있습니다.

기하학적 공차 작성

이 예제에서는 모형 공간에서 간단한 기하학적 공차를 작성합니다.

Sub Ch5_CreateTolerance()
    Dim toleranceObj As AcadTolerance
    Dim textString As String
    Dim insertionPoint(0 To 2) As Double
    Dim direction(0 To 2) As Double
    ' Define the tolerance object
    textString = "Here is the Feature Control Frame"
    insertionPoint(0) = 5
    insertionPoint(1) = 5
    insertionPoint(2) = 0
    direction(0) = 1
    direction(1) = 1
    direction(2) = 0
    ' Create the tolerance object in model space
    Set toleranceObj = ThisDrawing.ModelSpace. _
        AddTolerance(textString, insertionPoint, direction)
    ZoomAll
End Sub


공차 편집

기하학적 공차 작성
기하학적 공차 사용
도구막대 및 메뉴 사용자화
ActiveX 및 VBA 개발자 안내서 > 치수 및 공차 > 기하학적 공차 사용 >
공차 편집

공차는 여러 시스템 변수의 영향을 받습니다. DIMCLRD는 피쳐 조정 프레임의 색상을 조정합니다. DIMCLRT는 공차 문자의 색상을 조정합니다. DIMGAP는 피쳐 조정 프레임과 문자 간의 간격을 조정합니다. DIMTXT는 공차 문자의 크기를 조정합니다. DIMTXSTY는 공차 문자의 스타일을 조정합니다. 시스템 변수의 값을 설정하려면 SetVariable 메서드를 사용하십시오.


도구막대 및 메뉴 사용자화

공차 편집
MenuBar 및 MenuGroups 컬렉션 이해
ActiveX 및 VBA 개발자 안내서 >
도구막대 및 메뉴 사용자화

AutoCAD ActiveX 자동화를 사용하면 현재 AutoCAD 세션에 있는 메뉴와 도구막대를 다양하게 사용자화할 수 있습니다.

AutoCAD ActiveX/VBA를 사용하면 기존 메뉴 구조를 편집하거나 또는 더 늘리거나 또는 현재 메뉴 구조를 완전히 대치할 수 있습니다. 도구막대를 조작하고 메뉴를 마우스 오른쪽 버튼으로 클릭할 수도 있습니다.

메뉴 사용자화를 통해 응용프로그램 고유의 작업을 보이거나 여러 단계의 작업을 하나의 메뉴로 압축함으로써 생산성을 향상시킬 수 있습니다.

이 절에 있는 정보외에 메뉴와 도구막대를 사용자화하는 방법에 대해서는 사용자화 안내를 참고하십시오.

이 단원의 항목

  • MenuBar 및 MenuGroups 컬렉션 이해
  • 메뉴 그룹 로드
  • 메뉴 막대 변경
  • 풀다운 메뉴와 바로 가기 메뉴 작성 및 편집
  • 도구막대 작성 및 편집
  • 매크로 작성
  • 메뉴 항목과 도구막대 항목에 대한 상태 행 도움말 작성
  • 마우스 오른쪽 버튼으로 클릭 메뉴에 항목 추가


MenuBar 및 MenuGroups 컬렉션 이해

도구막대 및 메뉴 사용자화
도구막대 및 메뉴 사용자화
메뉴 그룹 로드
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 >
MenuBar 및 MenuGroups 컬렉션 이해

AutoCAD® ActiveX®는 여러 가지 메뉴 관련 객체를 제공합니다. 가장 중요한 2가지 컬렉션은 MenuBar 컬렉션과 MenuGroups 컬렉션입니다. MenuBar 컬렉션에는 AutoCAD 메뉴 막대에 표시되어 있는 모든 메뉴가 들어 있습니다.

MenuGroups 컬렉션에는 현재 AutoCAD 세션에 로드된 메뉴 그룹이 들어 있습니다. 이 메뉴 그룹 안에는 AutoCAD 세션에 사용할 수 있는 모든 메뉴가 있으며, 그 중 일부 또는 전부가 AutoCAD 메뉴 막대에 표시될 수 있습니다. 메뉴 외에도 메뉴 그룹 안에는 현재 AutoCAD 세션에서 사용할 수 있는 모든 도구막대가 들어 있습니다. 메뉴 그룹은 타일 메뉴, 화면 메뉴 또는 타블렛 메뉴를 나타낼 수도 있습니다.

각 메뉴 그룹에는 PopupMenus 컬렉션과 Toolbars 컬렉션이 들어 있습니다. PopupMenus 컬렉션에는 메뉴 그룹 안의 모든 메뉴가 포함됩니다. 마찬가지로 Toolbars 컬렉션에도 메뉴 그룹 안의 모든 도구막대가 포함됩니다.

각 PopupMenu는 실제로 해당 메뉴에 나타나는 각각의 메뉴 항목에 대한 개별 객체가 들어 있는 컬렉션입니다. 마찬가지로 각 Toolbar도 해당 도구막대에 나타나는 각각의 도구막대 항목에 대한 개별 객체가 들어 있는 컬렉션입니다.


메뉴 그룹 로드

MenuBar 및 MenuGroups 컬렉션 이해
도구막대 및 메뉴 사용자화
메뉴 막대 변경
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 >
메뉴 그룹 로드

메뉴 그룹은 Load 메서드를 사용하여 AutoCAD로 로드됩니다. 예를 들어, 다음 코드는 사용자화 파일 acad.mnc를 로드합니다.

ThisDrawing.Application.MenuGroups.Load "acad.cui"

Load 메서드를 사용할 때 BaseMenu 매개변수를 TRUE로 설정하여 새 메뉴 그룹을 메뉴 막대로 로드하십시오. 그러면 AutoCAD에서의 MENU 명령과 똑같은 방식으로 메뉴 그룹이 기준 메뉴로서 로드됩니다.

새 메뉴 그룹을 부분적 메뉴로서 로드하려면 BaseMenu 매개변수를 생략하십시오. 그러면 AutoCAD에서의 MENULOAD 명령과 똑같은 방식으로 메뉴 그룹이 로드됩니다. MenuGroups 컬렉션으로 로드되면 InsertMenuInMenuBar 메서드나 InsertInMenuBar 메서드를 사용하여 부분적 메뉴를 메뉴 막대에 삽입할 수 있습니다.

메뉴 그룹이 로드되고 나면 해당 메뉴 그룹에서 정의한 메뉴와 도구막대를 모두 사용할 수 있습니다. 다음 작업을 수행할 수 있습니다.

  • 메뉴 막대에 새 메뉴 추가
  • 메뉴 막대에서 메뉴 제거
  • 메뉴 막대에 메뉴 재배열
  • 기존 메뉴 또는 도구막대에 새 항목 추가
  • 기존 메뉴 또는 도구막대에서 항목 제거
  • 새 메뉴 및 도구막대 작성
  • 도구막대 이동 또는 고정
  • 메뉴 및 도구막대 항목을 작동 가능 또는 작동 불가능으로 지정
  • 메뉴 항목 선택 또는 선택 해제
  • 메뉴 또는 도구막대 항목의 꼬리표, 레이블 또는 도움말 문자열 변경
  • 메뉴 또는 도구막대 항목과 연관된 매크로 재지정
주ActiveX 자동화를 사용하여 팝업 메뉴와 도구막대만을 편집할 수 있습니다. 그러나 ActiveX 자동화를 사용하여 이미지 배열 메뉴 항목, 화면 메뉴 또는 타블렛 메뉴 등의 기타 메뉴 유형을 로드 및 언로드할 수 있습니다.


메뉴 막대 변경

메뉴 그룹 로드
도구막대 및 메뉴 사용자화
메뉴 막대에 메뉴 삽입
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 >
메뉴 막대 변경

앞에서 본 것처럼 해당 그룹이 기준 메뉴로서 로드되면 메뉴 막대를 새 메뉴 그룹으로 완전히 대치할 수 있습니다. 또한 메뉴 막대에 있는 개별 메뉴를 추가, 제거 또는 재정렬할 수 있습니다.

이 단원의 항목

  • 메뉴 막대에 메뉴 삽입
  • 메뉴 막대에서 메뉴 제거
  • 메뉴 막대의 메뉴 항목 재배열


메뉴 막대에 메뉴 삽입

메뉴 막대 변경
메뉴 막대 변경
메뉴 막대에서 메뉴 제거
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 메뉴 막대 변경 >
메뉴 막대에 메뉴 삽입

기존 메뉴를 메뉴 막대에 삽입하려면 InsertMenuInMenuBar 또는 InsertInMenuBar 메서드를 사용하십시오. 두 메서드는 모두 기존 메뉴를 메뉴 막대에 삽입하기 위해 사용됩니다.

두 메서드의 차이는 메서드를 호출하는 객체에 있습니다. InsertMenuInMenuBar 메서드는 PopupMenus 컬렉션에서 호출합니다. 이 메서드를 사용하면 컬렉션에 있는 메뉴를 메뉴 막대의 지정 위치에 삽입할 수 있습니다. 이 메서드에서는 삽입할 메뉴의 이름과 메뉴 막대에서의 삽입 위치를 입력해야 합니다.

InsertInMenuBar 메서드는 삽입할 PopupMenu 객체에서 직접 호출합니다. 이 메서드에서는 메뉴 막대에서의 위치만 입력하면 됩니다. 삽입할 객체에서 직접 메서드를 호출하기 때문에 메뉴의 이름은 필요하지 않습니다.

사용자의 응용프로그램에 더 편리한 방법을 선택해서 사용하십시오.

메뉴 막대에 메뉴 삽입

이 예제는 TestMenu라고 하는 새 메뉴를 작성하고 새 메뉴에 메뉴 항목을 삽입합니다. 메뉴 항목에 OPEN 명령이 지정됩니다. 그런 다음 메뉴 막대에 메뉴가 표시됩니다.

Sub Ch6_InsertMenu()
    ' Define a variable for the current menu group
    Dim currMenuGroup As AcadMenuGroup
    Set currMenuGroup = ThisDrawing.Application. _
                                    MenuGroups.Item(0)
    ' Create a new menu
    Dim newMenu As AcadPopupMenu
    Set newMenu = currMenuGroup.Menus.Add("TestMenu")
    ' Declare the variables for the menu item
    Dim newMenuItem As AcadPopupMenuItem
    Dim openMacro As String
    ' Assign the macro string the VB equivalent of
    ' "ESC ESC _open " and create the menu item
    openMacro = Chr(3) + Chr(3) + "_open "
    Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, _
        "Open", openMacro)
    ' Display the menu on the menu bar
    currMenuGroup.Menus.InsertMenuInMenuBar "TestMenu", ""
End Sub


메뉴 막대에서 메뉴 제거

메뉴 막대에 메뉴 삽입
메뉴 막대 변경
메뉴 막대의 메뉴 항목 재배열
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 메뉴 막대 변경 >
메뉴 막대에서 메뉴 제거

메뉴 막대에서 메뉴를 제거하려면 RemoveMenuFromMenuBar 또는 RemoveFromMenuBar 메서드를 사용하십시오. 두 메서드는 모두 메뉴 막대에서 메뉴를 제거하기 위해 사용됩니다.

두 메서드의 차이는 메서드를 호출하는 객체에 있습니다. RemoveMenuFromMenuBar 메서드는 PopupMenus 컬렉션에서 호출합니다. 이 메서드에서는 제거할 메뉴의 이름, 메뉴 막대에서 제거할 메뉴의 위치를 입력해야 합니다. 예를 들어 다음 문은 메뉴 막대에 메뉴 삽입에서 추가했던 메뉴를 제거합니다.

currMenuGroup.Menus.RemoveMenuFromMenuBar ("TestMenu")

RemoveFromMenuBar 메서드는 제거할 PopupMenu 객체에서 직접 호출합니다. 이 메서드에서는 아무런 입력이 필요하지 않습니다. 제거할 객체에서 직접 메서드를 호출하기 때문에 메뉴의 이름은 필요하지 않습니다.

사용자의 응용프로그램에 더 편리한 방법을 선택해서 사용하십시오.

주메뉴를 메뉴 막대에서 제거한 후에도 지정된 메뉴 그룹에서 계속 사용할 수 있습니다. 단지 사용자가 더 이상 볼 수 없는 것 뿐입니다.


메뉴 막대의 메뉴 항목 재배열

메뉴 막대에서 메뉴 제거
메뉴 막대 변경
풀다운 메뉴와 바로 가기 메뉴 작성 및 편집
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 메뉴 막대 변경 >
메뉴 막대의 메뉴 항목 재배열

메뉴 막대에서 메뉴를 재배열하려면 원하는 구성이 만들어질 때까지 메뉴를 삽입하고 제거하십시오.

메뉴 막대의 끝으로 첫 번째 메뉴 이동

이 예제에서는 메뉴 막대의 첫 번째 메뉴를 제거하여 메뉴 막대의 마지막 메뉴로 삽입합니다.

Sub Ch6_MoveMenu()
    ' Define a variable to hold the menu to be moved
    Dim moveMenu As AcadPopupMenu
    Dim MyMenuBar As AcadMenuBar
    Set MyMenuBar = ThisDrawing.Application.menuBar
    ' Set moveMenu equal to the first menu displayed
    ' on the menu bar
    Set moveMenu = MyMenuBar.Item(0)
    ' Remove the first menu from the menu bar
    MyMenuBar.Item(0).RemoveFromMenuBar
    ' Add the menu back into the menu bar
    ' in the last position on the bar
    moveMenu.InsertInMenuBar (MyMenuBar.count)
End Sub


풀다운 메뉴와 바로 가기 메뉴 작성 및 편집

메뉴 막대의 메뉴 항목 재배열
도구막대 및 메뉴 사용자화
새 메뉴 작성
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 >
풀다운 메뉴와 바로 가기 메뉴 작성 및 편집

AutoCAD ActiveX/VBA에는 메뉴, 풀다운 메뉴 및 바로 가기 메뉴(종종 커서 메뉴로 불림)의 두 가지 AutoCAD 유형을 사용자화하는 기능이 있습니다. 풀다운 메뉴와 바로 가기 메뉴는 모두 계단식 메뉴로 표시됩니다. 바로 가기 메뉴는 객체 스냅 모드처럼 자주 사용되는 메뉴 항목에 빨리 접근할 수 있습니다.

풀다운 메뉴는 최대 999개의 메뉴 항목을 포함할 수 있고 바로 가기 메뉴는 최대 499개의 메뉴 항목을 포함할 수 있습니다. 두 한계 모두 계층구조의 모든 메뉴를 포함한 범위입니다. 한 메뉴의 메뉴 항목 수가 이 한계를 초과하면 AutoCAD가 여분의 항목을 무시합니다. 풀다운 메뉴나 바로 가기 메뉴가 그래픽 화면에서 사용할 수 있는 공간보다 크면 화면에 맞게 잘립니다.

풀다운 메뉴는 항상 메뉴 막대로부터 펼쳐지지만 바로 가기 메뉴는 항상 그래픽 화면의 십자선이나 그 근처에 표시됩니다. 두 메뉴 유형은 바로 가기 메뉴 캡션이 메뉴 막대에 포함되지 않는다는 점을 제외하고 동일하게 처리됩니다. 바로 가기 메뉴 캡션은 표시되지 않습니다. 바로 가기 메뉴는 기준 메뉴 그룹의 단일 메뉴를 통해 접근할 수 있습니다. 바로 가기 메뉴는 ShortcutMenu 특성을 사용하여 식별할 수 있습니다. ShortcutMenu 특성이 TRUE를 반환하는 경우, 조회한 메뉴는 해당 그룹에 대한 바로 가기 메뉴입니다.

이 단원의 항목

  • 새 메뉴 작성
  • 메뉴에 새 메뉴 항목 추가
  • 메뉴에 구분자 추가
  • 메뉴 항목에 바로 가기 키 지정
  • 계단식 부메뉴 작성
  • 메뉴에서 메뉴 항목 삭제
  • 메뉴 항목의 특성 알아보기


새 메뉴 작성

풀다운 메뉴와 바로 가기 메뉴 작성 및 편집
풀다운 메뉴와 바로 가기 메뉴 작성 및 편집
메뉴에 새 메뉴 항목 추가
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 풀다운 메뉴와 바로 가기 메뉴 작성 및 편집 >
새 메뉴 작성

메뉴를 새로 작성하려면 Add 메서드를 사용하여 새 PopupMenu 객체를 PopupMenus 컬렉션에 추가하십시오.

바로 가기 메뉴를 새로 작성하려면 기존 바로 가기 메뉴를 삭제해야 합니다. 메뉴 그룹마다 바로 가기 메뉴가 하나만 있을 수 있습니다. 메뉴 그룹에 다른 바로 가기 메뉴가 없으면 레이블이 “POP0”인 메뉴를 추가할 수 있습니다. 그러면 바로 가기 메뉴를 작성하라고 AutoCAD에 알립니다.

Add 메서드에서는 추가할 메뉴의 이름(레이블)을 입력해야 합니다. 이 이름은 메뉴 막대에서 로드될 때 메뉴의 제목이 됩니다. 이름은 컬렉션 안의 메뉴를 식별하는 가장 쉬운 방법이기도 합니다.

메뉴 이름은 간단한 문자열이거나 특수 코드를 사용할 수 있습니다. 메뉴가 작성되면 그 이름을 바꿀 수 있습니다. 기존 메뉴의 이름을 변경하려면 해당 메뉴의 Name 특성을 사용하십시오.

새 팝업 메뉴 작성

이 예제에서는 MenuGroups 컬렉션의 첫 번째 메뉴 그룹에서 “TestMenu”라는 새 팝업 메뉴를 작성합니다.

Sub Ch6_CreateMenu()
    Dim currMenuGroup As AcadMenuGroup
    Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
    ' Create the new menu
    Dim newMenu As AcadPopupMenu
    Set newMenu = currMenuGroup.Menus.Add("TestMenu")
End Sub


메뉴에 새 메뉴 항목 추가

새 메뉴 작성
풀다운 메뉴와 바로 가기 메뉴 작성 및 편집
Index 매개변수 지정
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 풀다운 메뉴와 바로 가기 메뉴 작성 및 편집 >
메뉴에 새 메뉴 항목 추가

메뉴에 새 메뉴 항목을 추가하려면, AddMenuItem 메서드를 사용하십시오. 이 메서드는 새 PopupMenuItem 객체를 작성하여 지정된 메뉴에 추가합니다.

AddMenuItem 메서드에서는 Index, Label, Tag 및 Macro의 4가지 매개변수를 취합니다.

이 단원의 항목

  • Index 매개변수 지정
  • Label 매개변수 지정
  • Tag 매개변수 지정
  • Macro 매개변수 지정


Index 매개변수 지정

메뉴에 새 메뉴 항목 추가
메뉴에 새 메뉴 항목 추가
Label 매개변수 지정
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 풀다운 메뉴와 바로 가기 메뉴 작성 및 편집 > 메뉴에 새 메뉴 항목 추가 >
Index 매개변수 지정

Index 매개변수는 메뉴에서 새 메뉴 항목의 위치를 지정하는 정수입니다. 색인은 0으로 시작하며, 0 값은 메뉴의 첫 번째 위치(제목 뒤)를 지정합니다. 메뉴의 끝에 새 메뉴 항목을 추가하려면 Index 매개변수를 메뉴의 Count 특성과 같도록 설정하십시오. (메뉴의 Count 특성은 해당 메뉴에 있는 메뉴 항목의 전체 수를 나타냅니다.)

첫 번째 색인 위치는 영(0)이며 구분자는 자신의 색인 위치와 함께 개별 메뉴 항목으로 나열됩니다. 그림에 표시된 메뉴의 Count 특성은 6입니다. 메뉴 항목을 수평 타일식과 수직 타일식 사이에 추가하려면 Index 매개변수를 수직 타일식 메뉴 항목의 색인인 2로 설정하십시오. 그러면 새 메뉴 항목이 색인 2에 삽입되고 나머지 메뉴 항목들은 색인 위치에서 하나씩 아래로 내려갑니다.

메뉴 항목이 작성되면 Index 특성을 사용하여 메뉴 항목의 색인을 변경할 수 없습니다. 기존 메뉴 항목의 색인을 변경하려면 메뉴 항목을 삭제하여 다른 위치에 다시 추가하거나 적절히 배치될 때까지 주변 메뉴 항목을 추가하거나 삭제해야 합니다.


Label 매개변수 지정

Index 매개변수 지정
메뉴에 새 메뉴 항목 추가
Tag 매개변수 지정
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 풀다운 메뉴와 바로 가기 메뉴 작성 및 편집 > 메뉴에 새 메뉴 항목 추가 >
Label 매개변수 지정

레이블은 메뉴 항목의 내용과 형식을 정의하는 문자열입니다. 메뉴 항목 레이블에는 표시될 때마다 상황에 따라 레이블을 변경하는 DIESEL 문자열 표현식이 포함될 수 있습니다.

DIESEL 문자열 표현식 외에도 특수 코드를 레이블에 사용할 수 있습니다. 예를 들어 문자 바로 앞에 넣은 앰퍼샌드(&)는 해당 문자를 바로 가기 키로 지정합니다.

메뉴 항목에 표시되는 사용자가 볼 수 있는 문자는 캡션이라고 하며, 레이블 안에 있는 특수 코드와 모든 DIESEL 문자열 표현식의 해석을 통해 레이블에서 파생됩니다. 예를 들어, 레이블 “&Edit”는 캡션 “Edit”를생성합니다.

메뉴 항목이 작성되면 Label 특성을 사용하여 메뉴 항목의 레이블을 변경할 수 있습니다.


Tag 매개변수 지정

Label 매개변수 지정
메뉴에 새 메뉴 항목 추가
Macro 매개변수 지정
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 풀다운 메뉴와 바로 가기 메뉴 작성 및 편집 > 메뉴에 새 메뉴 항목 추가 >
Tag 매개변수 지정

꼬리표 또는 이름 꼬리표는 영숫자 및 밑줄(_) 문자로 이루어진 문자열입니다. 이 문자열은 해당 메뉴 안의 메뉴 항목을 고유하게 식별합니다.

메뉴 항목이 작성되면 TagString 특성을 사용하여 메뉴 항목의 태그를 변경할 수 있습니다.


Macro 매개변수 지정

Tag 매개변수 지정
메뉴에 새 메뉴 항목 추가
메뉴에 구분자 추가
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 풀다운 메뉴와 바로 가기 메뉴 작성 및 편집 > 메뉴에 새 메뉴 항목 추가 >
Macro 매개변수 지정

매크로는 메뉴 항목이 선택될 때 특정 작업을 실행하는 일련의 명령입니다. 메뉴 매크로는 단지 작업을 수행하는 키 입력에 대한 기록이거나 명령, AutoLISP, DIESEL 또는 ActiveX 프로그래밍 코드의 복잡한 결합일 수 있습니다.

메뉴 항목이 작성되면 Macro 특성을 사용하여 메뉴 항목의 매크로를 변경할 수 있습니다.

팝업 메뉴에 메뉴 항목 추가

이 예제는 “TestMenu”라는 메뉴를 새로 작성하고 메뉴 항목을 삽입합니다. 메뉴 항목 이름이 “Open,”으로 지정되며 이 메뉴 항목에 지정된 매크로는 OPEN 명령입니다.

Sub Ch6_AddAMenuItem()
    Dim currMenuGroup As AcadMenuGroup
    Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
    ' Create the new menu
    Dim newMenu As AcadPopupMenu
    Set newMenu = currMenuGroup.Menus.Add("TestMenu")
    ' Add a menu item to the new menu
    Dim newMenuItem As AcadPopupMenuItem
    Dim openMacro As String
    ' Assign the macro the VBA equivalent of "ESC ESC _open "
    openMacro = Chr(3) + Chr(3) + "_open "
    Set newMenuItem = newMenu.AddMenuItem _
                       (newMenu.count + 1, "Open", openMacro)
    ' Display the menu on the menu bar
    newMenu.InsertInMenuBar _
                 (ThisDrawing.Application.menuBar.count + 1)
End Sub


메뉴에 구분자 추가

Macro 매개변수 지정
풀다운 메뉴와 바로 가기 메뉴 작성 및 편집
메뉴 항목에 바로 가기 키 지정
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 풀다운 메뉴와 바로 가기 메뉴 작성 및 편집 >
메뉴에 구분자 추가

메뉴에 구분 기호를 추가하려면 AddSeparator 메서드를 사용하십시오. 이 메서드는 새 PopupMenuItem 객체를 작성하여 지정된 메뉴에 추가합니다. 이런 종류의 PopupMenuItem 객체에는 acSeparator의 유형이 지정됩니다. 메뉴 유형는 Type 특성을 통해 찾아 볼 수 있습니다.

AddSeparator 메서드는 Index 매개변수를 유일한 입력으로 사용합니다. Index 매개변수는 메뉴에서 구분자 위치를 지정하는 정수입니다. 색인은 0으로 시작하며, 0 값은 메뉴의 첫 번째 위치(제목 뒤)를 지정합니다.

메뉴에 구분자를 추가하는 예제는 메뉴 항목 작동 가능 및 작동 불가능을 참고하십시오.


메뉴 항목에 바로 가기 키 지정

메뉴에 구분자 추가
풀다운 메뉴와 바로 가기 메뉴 작성 및 편집
계단식 부메뉴 작성
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 풀다운 메뉴와 바로 가기 메뉴 작성 및 편집 >
메뉴 항목에 바로 가기 키 지정

AutoCAD ActiveX/VBA를 통해 메뉴 항목의 가속 키를 지정하려면 주어진 메뉴 항목의 Label 특성을 사용하십시오. 바로 가기 키를 지정하려면 레이블에서 바로 가기 키로 사용할 문자 바로 앞에 앰퍼샌드(&)와 동등한 ASCII 값을 삽입하십시오. 예를 들어, 레이블 Chr(Asc("&")) + "Edit"는 가속 키로 사용될 문자 “E”가 있는 “Edit,”로 표시됩니다.

메뉴에 바로 가기 키 추가

이 예제에서는 팝업 메뉴에 메뉴 항목 추가의 예제를 반복하여 “TestMenu” 및 “Open” 메뉴에 대한 가속 키를 추가합니다. “s”는 “TestMenu” 메뉴의 가속 키로 사용되고, “O”는 “Open” 메뉴의 가속 키로 사용됩니다.

Sub Ch6_AddAMenuItem()
    Dim currMenuGroup As AcadMenuGroup
    Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
    ' Create the new menu
    Dim newMenu As AcadPopupMenu
    Set newMenu = currMenuGroup.Menus.Add _
                              ("Te" + Chr(Asc("&")) + "stMenu")
    ' Add a menu item to the new menu
    Dim newMenuItem As AcadPopupMenuItem
    Dim openMacro As String
    ' Assign the macro the VBA equivalent of "ESC ESC _open "
    openMacro = Chr(3) + Chr(3) + "_open "
    Set newMenuItem = newMenu.AddMenuItem _
                       (newMenu.count + 1, Chr(Asc("&")) _
                        + "Open", openMacro)
    ' Display the menu on the menu bar
    newMenu.InsertInMenuBar _
                 (ThisDrawing.Application.menuBar.count + 1)
End Sub


계단식 부메뉴 작성

메뉴 항목에 바로 가기 키 지정
풀다운 메뉴와 바로 가기 메뉴 작성 및 편집
메뉴에서 메뉴 항목 삭제
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 풀다운 메뉴와 바로 가기 메뉴 작성 및 편집 >
계단식 부메뉴 작성

계단식 부메뉴를 추가하려면 AddSubmenu 메서드를 사용하여 부메뉴를 작성하십시오. 이 메서드는 새 PopupMenuItem 객체를 작성하여 지정된 메뉴에 추가합니다. 이 특별한 종류의 PopupMenuItem 객체에는 acSubmenu 유형이 지정됩니다.

AddSubmenu 메서드에서는 Index, Label 및 Tag의 3가지 매개변수를 취합니다.

Index 매개변수는 메뉴에서 새 메뉴 항목의 위치를 지정하는 정수입니다. 색인은 0으로 시작하며, 0 값은 메뉴의 첫 번째 위치(제목 뒤)를 지정합니다. 메뉴의 끝에 새 메뉴 항목을 추가하려면 Index 매개변수를 메뉴의 Count 특성과 같도록 설정하십시오. (메뉴의 Count 특성은 해당 메뉴에 있는 메뉴 항목의 전체 수를 나타냅니다.)

Label 매개변수는 메뉴 항목의 내용과 형식을 정의하는 문자열입니다. 메뉴 항목에 표시되어 사용자에게 보이는 문자를 캡션이라고 하며 레이블 안에 있는 특수 코드와 모든 DIESEL 문자열 표현식을 해석하여 레이블에서 파생됩니다. 예를 들어, 레이블 “&Edit”는 캡션 “Edit”를생성합니다.

Tag 매개변수 또는 이름 꼬리표는 영숫자 및 밑줄(_) 문자로 이루어진 문자열입니다. 이 문자열은 해당 메뉴 안의 메뉴 항목을 고유하게 식별합니다.

AddSubmenu 메서드는 작성된 PopupMenuItem 객체를 반환하지 않습니다. 대신, 부메뉴가 가리키는 새로운 메뉴를 반환합니다. PopupMenu 객체로서 반환되는 새 메뉴는 일반 메뉴처럼 채울 수 있습니다. 메뉴 채우기에 대한 자세한 정보는 메뉴에 새 메뉴 항목 추가를 참고하십시오.

부메뉴 작성 및 채우기

이 예제는 “TestMenu”라는 메뉴를 새로 작성하여 “OpenFile”이라는 부메뉴에 추가합니다.그런 다음, 실행 시 도면을 여는 “Open,”이라는 메뉴 항목으로 부메뉴가 채워집니다. 마지막으로 메뉴가 메뉴 막대에 표시됩니다.

Sub Ch6_AddASubMenu()
    Dim currMenuGroup As AcadMenuGroup
    Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
    ' Create the new menu
    Dim newMenu As AcadPopupMenu
    Set newMenu = currMenuGroup.Menus.Add("TestMenu")
    ' Add the submenu
    Dim FileSubMenu As AcadPopupMenu
    Set FileSubMenu = newMenu.AddSubMenu("", "OpenFile")
    ' Add a menu item to the sub menu
    Dim newMenuItem As AcadPopupMenuItem
    Dim openMacro As String
    ' Assign the macro the VB equivalent of "ESC ESC _open "
    openMacro = Chr(3) + Chr(3) + "_open "
    Set newMenuItem = FileSubMenu.AddMenuItem _
                          (newMenu.count + 1, "Open", openMacro)
    ' Display the menu on the menu bar
    newMenu.InsertInMenuBar _
                   (ThisDrawing.Application.menuBar.count + 1)
End Sub


메뉴에서 메뉴 항목 삭제

계단식 부메뉴 작성
풀다운 메뉴와 바로 가기 메뉴 작성 및 편집
메뉴 항목의 특성 알아보기
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 풀다운 메뉴와 바로 가기 메뉴 작성 및 편집 >
메뉴에서 메뉴 항목 삭제

메뉴에서 메뉴 항목을 제거하려면 메뉴 항목에 있는 Delete 메서드를 사용하십시오.

경고메뉴 항목을 삭제할 경우, 같은 매크로에서 같은 CUI 파일을 직접 또는 간접적으로 다시 로드하는 다른 메서드 또는 특성을 호출하지 마십시오. 예를 들어 메뉴 항목을 삭제한 후에, MenuGroup.Load 메서드나 Preferences.Profiles.ActiveProfile 특성, 또는 Document.SendCommand 메서드를 사용하여 "Menuload" 명령을 사용하지 마십시오. 이 항목들을 사용하면 CUI 파일이 직접 또는 간접적으로 로드됩니다. 별도의 매크로에서 이 메서드나 특성을 사용해야만 합니다.

메뉴에서 메뉴 항목 삭제

이 예제는 메뉴 항목을 메뉴 막대에 표시된 마지막 메뉴의 끝에 추가합니다. 그런 다음 메뉴 항목을 삭제합니다.

Sub Ch6_DeleteMenuItem()
    Dim LastMenu As AcadPopupMenu
    Set LastMenu = ThisDrawing.Application.menuBar. _
                Item(ThisDrawing.Application.menuBar.count - 1)
    ' Add a menu item
    Dim newMenuItem As AcadPopupMenuItem
    Dim openMacro As String
    ' Assign the macro the VB equivalent of "ESC ESC _open "
    openMacro = Chr(3) + Chr(3) + "_open "
    Set newMenuItem = LastMenu.AddMenuItem _
                          (LastMenu.count + 1, "Open", openMacro)
    ' Remove the menu item from the menu
    newMenuItem.Delete
End Sub


메뉴 항목의 특성 알아보기

메뉴에서 메뉴 항목 삭제
풀다운 메뉴와 바로 가기 메뉴 작성 및 편집
도구막대 작성 및 편집
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 풀다운 메뉴와 바로 가기 메뉴 작성 및 편집 >
메뉴 항목의 특성 알아보기

모든 메뉴 항목은 다음과 같은 특성을 공유합니다.

TagString

꼬리표 또는 이름 꼬리표는 영숫자와 밑줄(_) 문자로 이루어진 문자열입니다. 이 문자열은 해당 메뉴 안의 메뉴 항목을 고유하게 식별합니다. 꼬리표는 메뉴 항목에 해당되는 바로 가기 키(키보드 키 순서)를 식별합니다.

TagString 특성을 사용하여 꼬리표 값을 읽거나 쓸 수 있습니다.

Lable

레이블은 메뉴 항목의 내용과 형식을 정의하는 문자열입니다.

메뉴 항목 레이블에는 표시될 때마다 상황에 따라 레이블을 변경하는 DIESEL 문자열 표현식이 포함될 수 있습니다.

Label 특성을 사용하여 레이블 값을 읽거나 쓸 수 있습니다.

Caption

캡션은 사용자가 볼 수 있도록 메뉴에 표시되는 문자입니다. 이 특성은 읽기 전용이며 DIESEL 문자열 표현식을 제거함으로써 Label 특성으로부터 파생됩니다.

Caption 특성을 사용하여 캡션 값을 읽을 수 있습니다.

매크로

매크로는 메뉴 항목이 선택될 때 특정 작업을 실행하는 일련의 명령입니다. 메뉴 매크로는 단지 작업을 수행하는 키 입력에 대한 기록이거나 명령, AutoLISP, DIESEL 또는 ActiveX 프로그래밍 코드의 복잡한 결합일 수 있습니다.

Macro 특성을 사용하여 메뉴 매크로 값을 읽거나 쓸 수 있습니다.

HelpString

도움말 문자열은 사용자가 선택한 메뉴 항목을 강조할 때 AutoCAD 상태 행에 나타나는 문자열입니다.

HelpString 특성을 사용하면 도움말 문자열 값을 읽거나 쓸 수 있습니다.

Enable

Enable 특성을 사용하면 메뉴 항목을 작동 가능 또는 작동 불가능하게 할 수 있습니다. Enable 특성을 읽어서 현재 메뉴 항목의 작동 가능 여부를 알아 볼 수도 있습니다. 메뉴 항목을 작동 가능 또는 작동 불가능하게 하는 데 이 특성을 사용하면 메뉴 항목의 DIESEL 표현식을 작동 가능하게 하는 설정이 재지정됩니다.

메뉴 항목 작동 불가능하게 하기에 대한 예제는 메뉴 항목의 특성 알아보기를 참고하십시오.

Check

Check 특성을 사용하면 메뉴 항목을 선택하거나 선택 해제할 수 있습니다. Check 특성을 읽어서 현재 메뉴 항목의 선택 여부를 알아 볼 수도 있습니다. 메뉴 항목을 선택하거나 선택 해제하는 경우에 이 특성을 사용하면 메뉴 항목의 DIESEL 표현식에서 선택에 대한 설정이 재지정됩니다.

Index

메뉴 항목의 색인은 메뉴 항목이 속한 메뉴에서의 위치를 지정합니다. 메뉴의 색인 위치는 항상 0 위치에서 시작됩니다. 예를 들어 항목이 메뉴의 첫 번째 항목이면 색인 위치가 0이 되고, 메뉴의 두 번째 항목이면 색인 위치가 1이 됩니다.

Type

Type 특성을 사용하여 메뉴 항목의 유형을 결정할 수 있습니다. 메뉴 항목은 일반 메뉴, 구분 기호 또는 부메뉴의 제목 중 하나일 수 있습니다. 항목이 보통 메뉴 항목인 경우, 이 특성은 acMenuItem을 반환하며 항목이 구분자이면 acMenuSeparator를 반환하며 항목이 부메뉴의 제목이면 acSubMenu를 반환합니다.

SubMenu

부메뉴는 SubMenu 특성을 사용하여 찾을 수 있습니다. 메뉴 항목이 acSubMenu 유형이면 이 특성은 부메뉴나 포함된 메뉴로서 부착되는 메뉴를 반환합니다. 포함된 메뉴는 PopupMenu 객체로서 반환됩니다.

메뉴 항목이 acSubMenu 유형이 아니면 오류가 반환됩니다.

Parent

Parent 특성을 사용하여 메뉴 항목이 속한 메뉴를 찾을 수 있습니다. 이 특성은 메뉴 항목이 상주하는 메뉴를 반환합니다. 상위 메뉴는 PopupMenu 객체로서 반환됩니다.

메뉴 항목 작동 가능 및 작동 불가능

이 예제에서는 “TestMenu”라는 메뉴를 새로 작성하고 두 개의 메뉴 항목을 삽입합니다. 두 번째 메뉴 항목은 Enable 특성을 사용해서 작동 불가능해지고, 메뉴는 메뉴 막대에 표시됩니다.

Sub Ch6_DisableMenuItem()
    Dim currMenuGroup As AcadMenuGroup
    Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
    ' Create the new menu
    Dim newMenu As AcadPopupMenu
    Set newMenu = currMenuGroup.Menus.Add("TestMenu")
    ' Add two menu items and a menu separator to the new menu
    Dim MenuEnable As AcadPopupMenuItem
    Dim MenuDisable As AcadPopupMenuItem
    Dim MenuSeparator As AcadPopupMenuItem
    Dim openMacro As String
    ' Assign the macro the VB equivalent of "ESC ESC _open "
    openMacro = Chr(3) + Chr(3) + "_open "
    Set MenuEnable = newMenu.AddMenuItem _
                (newMenu.count + 1, "OpenEnabled", openMacro)
    Set MenuSeparator = newMenu.AddSeparator("")
    Set MenuDisable = newMenu.AddMenuItem _
                (newMenu.count + 1, "OpenDisabled", openMacro)
    ' Disable the second menu item
    MenuDisable.Enable = False
    ' Display the menu on the menu bar
    newMenu.InsertInMenuBar _
                (ThisDrawing.Application.menuBar.count + 1)
End Sub


도구막대 작성 및 편집

메뉴 항목의 특성 알아보기
도구막대 및 메뉴 사용자화
새 도구막대 작성
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 >
도구막대 작성 및 편집

AutoCAD ActiveX/VBA를 사용하여 기존 메뉴 그룹에 있는 도구막대를 작성하고 편집할 수 있습니다.

이 단원의 항목

  • 새 도구막대 작성
  • 도구막대에 새 도구막대 버튼 추가
  • 도구막대에 구분자 추가
  • 도구막대 버튼 이미지 정의
  • 플라이아웃 도구막대 작성
  • 도구막대 이동식으로 만들기 및 고정시키기
  • 도구막대에서 도구막대 버튼 삭제
  • 도구막대 항목의 특성 알아보기


새 도구막대 작성

도구막대 작성 및 편집
도구막대 작성 및 편집
도구막대에 새 도구막대 버튼 추가
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 도구막대 작성 및 편집 >
새 도구막대 작성

도구막대를 새로 작성하려면 Add 메서드를 사용하여 새 Toolbar 객체를 Toolbars 컬렉션에 추가하십시오.

Add 메서드에서는 추가할 도구막대의 이름을 입력해야 합니다. 이름은 대시(-)나 밑줄(_) 이외에는 어떠한 구두점도 포함되지 않는 영숫자의 문자열입니다. 이름은 컬렉션 안의 도구막대를 식별하는 가장 쉬운 방법입니다.

도구막대가 작성되면 그 이름을 바꿀 수 있습니다. 기존 도구막대의 이름을 변경하려면 해당 도구막대의 Name 특성을 사용하십시오.

새 도구막대 작성

이 예제에서는 MenuGroups 컬렉션의 첫 번째 메뉴 그룹에 “TestToolbar”라는 새 도구막대를 작성합니다.

Sub Ch6_CreateToolbar()
    Dim currMenuGroup As AcadMenuGroup
    Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
    ' Create the new toolbar
    Dim newToolbar As AcadToolbar
    Set newToolbar = currMenuGroup.Toolbars.Add("TestToolbar")
End Sub


도구막대에 새 도구막대 버튼 추가

새 도구막대 작성
도구막대 작성 및 편집
도구막대에 구분자 추가
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 도구막대 작성 및 편집 >
도구막대에 새 도구막대 버튼 추가

도구막대에 새 도구막대 버튼을 추가하려면 AddToolbarButton 메서드를 사용하십시오. 이 메서드는 새 ToolbarItem 객체를 작성하여 지정된 도구막대에 추가합니다. 도구막대가 보이는 동안에만 도구막대에 버튼을 추가해야 합니다.

AddToolbarButton 메서드에서는 Index, Name, HelpString, Macro 및 FlyoutButton의 5가지 매개변수를 사용합니다.

Index

Index 매개변수는 도구막대에서 새 도구막대 항목의 위치를 지정하는 정수입니다. 색인은 0으로 시작하며, 0 값은 도구막대의 첫 번째 위치(제목 뒤)를 지정합니다. 메뉴의 끝에 새 도구막대 버튼을 추가하려면 Index 매개변수를 도구막대의 Count 특성과 같도록 설정하십시오. (메뉴의 Count 특성은 해당 도구막대에 있는 도구막대 버튼의 총 수를 나타냅니다.)

도구막대 버튼이 작성된 후에는 Index 특성을 통해 버튼의 색인을 변경할 수 없습니다. 기존 도구막대 버튼의 색인을 변경하려면 도구막대 버튼을 삭제하여 다른 위치에 다시 추가하거나 적절히 배치될 때까지 주변 도구막대 버튼을 추가하거나 삭제해야 합니다.

Name

이름은 도구막대 버튼을 식별하는 문자열입니다. 문자열은 영숫자로 구성되며 대시(-)나 밑줄(_) 이외에는 어떠한 구두점도 포함되지 않습니다. 이 문자열은 커서가 도구막대 버튼 위에 놓일 때 툴팁으로 표시됩니다.

도구막대 버튼은 작성된 후에 Name 매개변수를 사용하여 이름을 변경할 수 있습니다.

HelpString

도움말 문자열은 사용자가 선택한 메뉴 항목을 강조할 때 AutoCAD 상태 행에 나타나는 문자열입니다.

도구막대 버튼이 작성되면 HelpString 매개변수를 사용하여 버튼의 도움말 문자열을 변경할 수 있습니다.

매크로

매크로는 도구막대 항목이 선택될 때 특정 동작을 실행하는 일련의 명령입니다. 메뉴 매크로는 단순히 작업을 수행하는 키 입력에 대한 기록일 수도 있고 명령, AutoLISP, DIESEL 또는 ActiveX 프로그래밍 코드의 복잡한 결합일 수도 있습니다.

도구막대 버튼이 작성된 후에는 Macro 매개변수를 사용하여 버튼에 대한 매크로를 변경할 수 있습니다.

FlyoutButton

FlyoutButton 매개변수는 새 버튼이 플라이아웃 버튼인지 여부를 나타내는 선택적 플래그입니다. 버튼이 플라이아웃 버튼이면 이 매개변수를 TRUE로 설정해야 합니다. 새 버튼이 플라이아웃 버튼이 아니면 이 매개변수를 FALSE로 설정하거나 무시할 수 있습니다.

새 도구막대에 버튼 추가

이 예제는 도구막대를 새로 작성하고 버튼을 도구막대에 추가합니다. 버튼에는 버튼이 선택될 때 OPEN 명령을 실행하는 매크로가 지정됩니다.

Sub Ch6_AddButton()
    Dim currMenuGroup As AcadMenuGroup
    Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
    ' Create the new toolbar
    Dim newToolbar As AcadToolbar
    Set newToolbar = currMenuGroup.Toolbars.Add("TestToolbar")
    ' Add a button to the new toolbar
    Dim newButton As AcadToolbarItem
    Dim openMacro As String
    ' Assign the macro the VB equivalent of "ESC ESC _open "
    openMacro = Chr(3) + Chr(3) + "_open "
    Set newButton = newToolbar.AddToolbarButton _
                   ("", "NewButton", "Open a file.", openMacro)
End Sub


도구막대에 구분자 추가

도구막대에 새 도구막대 버튼 추가
도구막대 작성 및 편집
도구막대 버튼 이미지 정의
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 도구막대 작성 및 편집 >
도구막대에 구분자 추가

도구막대에 구분 기호를 추가하려면 AddSeparator 메서드를 사용하십시오. 이 메서드는 새 ToolbarItem 객체를 작성하여 지정된 도구막대에 추가합니다. 이 유형의 ToolbarItem 객체에 acSeparator 유형이 지정됩니다. 도구막대 버튼의 유형는 Type 특성을 통해 찾아 볼 수 있습니다.

AddSeparator 메서드에서는 Index라는 1개의 매개변수를 취합니다. Index 매개변수는 도구막대 안에서 구분자의 위치를 지정하는 정수입니다. 색인은 0으로 시작하며, 0 값은 도구막대의 첫 번째 위치(제목 뒤)를 지정합니다.


도구막대 버튼 이미지 정의

도구막대에 구분자 추가
도구막대 작성 및 편집
플라이아웃 도구막대 작성
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 도구막대 작성 및 편집 >
도구막대 버튼 이미지 정의

도구막대 버튼에서 사용할 이미지를 정의하려면 SetBitmaps과 GetBitmaps 메서드를 사용하십시오.

SetBitmaps 메서드에서는 SmallIconName 및 LargeIconName의 2가지 매개변수를 취합니다.

SmallIconName

작은 아이콘 이름은 작은 이미지 리소스(16×15 비트맵)의 ID 문자열을 식별합니다. 문자열은 영숫자로 구성되고, 대시(-)나 밑줄(_) 이외에는 어떠한 구두점도 포함되지 않으며.bmp 확장자를 사용해야 합니다. 자원은 시스템 비트맵이나 사용자 정의 비트맵이 될 수 있습니다. 사용자 정의 비트맵은 크기가 적절해야 하고 Support 경로에 있어야 합니다.

LargeIconName

큰 아이콘 이름은 큰 이미지 리소스(24×22 비트맵)의 ID 문자열을 식별합니다. 문자열은 영숫자로 구성되고, 대시(-)나 밑줄(_) 이외에는 어떠한 구두점도 포함되지 않으며.bmp 확장자를 사용해야 합니다. 자원은 시스템 비트맵이나 사용자 정의 비트맵이 될 수 있습니다. 사용자 정의 비트맵은 크기가 적절해야 하고 Support 경로에 있어야 합니다.

기존 도구막대를 조회하여 버튼의 아이콘 이름 찾기

Sub Ch6_GetButtonImages()
    Dim Button As AcadToolbarItem
    Dim Toolbar0 As AcadToolbar
    Dim MenuGroup0 As AcadMenuGroup
    Dim SmallButtonName As String
    Dim LargeButtonName As String
    Dim msg As String
    Dim ButtonType As String
    ' Get the first toolbar in the first menu group
    Set MenuGroup0 = ThisDrawing.Application. _
                                 MenuGroups.Item(0)
    Set Toolbar0 = MenuGroup0.Toolbars.Item(0)
    ' Clear the string variables
    SmallButtonName = ""
    LargeButtonName = ""
    ' Create a header for the message box and
    ' display the toolbar to be queried
    msg = "Toolbar: " + Toolbar0.Name + vbCrLf
    Toolbar0.Visible = True
    ' Iterate through the toolbar and collect data
    ' for each button in the toolbar. If the toolbar is
    ' a normal button or a flyout, collect the small
    ' and large button names for the button.
    For Each Button In Toolbar0
        ButtonType = Choose(Button.Type + 1, "Button", _
                        "Separator", "Control", "Flyout")
        msg = msg & ButtonType & ": "
        If Button.Type = acToolbarButton Or _
                       Button.Type = acToolbarFlyout Then
            Button.GetBitmaps SmallButtonName, _
                              LargeButtonName
            msg = msg + SmallButtonName + ", " _
                      + LargeButtonName
        End If
        msg = msg + vbCrLf
    Next Button
    ' Display the results
    MsgBox msg
End Sub


플라이아웃 도구막대 작성

도구막대 버튼 이미지 정의
도구막대 작성 및 편집
도구막대 이동식으로 만들기 및 고정시키기
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 도구막대 작성 및 편집 >
플라이아웃 도구막대 작성

도구막대에 플라이아웃 도구막대 버튼을 추가하려면 AddToolbarButton 메서드를 사용하십시오. 이 메서드는 새 ToolbarItem 객체를 작성하여 지정된 도구막대에 추가합니다.

AddToolbarButton 메서드에서는 Index, Name, HelpString, Macro 및 FlyoutButton의 5개 매개 변수를 취합니다. FlyoutButton 매개변수를 TRUE로 설정하면 새 버튼이 플라이아웃 버튼으로 작성됩니다. 이 메서드의 반환 값은 새 플라이아웃 도구막대가 됩니다. 플라이아웃 도구막대는 보통 도구막대처럼 채울 수 있습니다.

도구막대 채우기에 대한 자세한 정보는 도구막대에 새 도구막대 버튼 추가를 참고하십시오.

플라이아웃 도구막대 버튼

이 예제는 2개의 도구막대를 작성합니다. 첫 번째 도구막대에는 플라이아웃 버튼이 들어 있습니다. 두 번째 도구막대는 첫 번째 도구막대의 플라이아웃 버튼에 부착됩니다.

Sub Ch6_AddFlyoutButton()
    Dim currMenuGroup As AcadMenuGroup
    Set currMenuGroup = ThisDrawing.Application. _
                                 MenuGroups.Item(0)
    ' Create the first toolbar
    Dim FirstToolbar As AcadToolbar
    Set FirstToolbar = currMenuGroup.Toolbars. _
                                Add("FirstToolbar")
    ' Add a flyout button to the first menu on the menu bar
    Dim FlyoutButton As AcadToolbarItem
    Set FlyoutButton = FirstToolbar.AddToolbarButton _
            ("", "Flyout", "Demonstrates a flyout button", _
             "OPEN", True)
    ' Create the second toolbar. This will be attached to
    ' the first toolbar via the flyout button.
    Dim SecondToolbar As AcadToolbar
    Set SecondToolbar = currMenuGroup.Toolbars. _
            Add("SecondToolbar")
    ' Add a button to the next toolbar
    Dim newButton As AcadToolbarItem
    Dim openMacro As String
    ' Assign the macro the VB equivalent of "ESC ESC _open "
    openMacro = Chr(3) + Chr(3) + "_open "
    Set newButton = SecondToolbar.AddToolbarButton _
            ("", "NewButton", "Open a file.", openMacro)
    ' Attach the second toolbar to the flyout
    ' button on the first toolbar
    FlyoutButton.AttachToolbarToFlyout currMenuGroup.Name, _
            SecondToolbar.Name
    ' Display the first toolbar, hide the second toolbar
    FirstToolbar.Visible = True
    SecondToolbar.Visible = False
End Sub


도구막대 이동식으로 만들기 및 고정시키기

플라이아웃 도구막대 작성
도구막대 작성 및 편집
도구막대에서 도구막대 버튼 삭제
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 도구막대 작성 및 편집 >
도구막대 이동식으로 만들기 및 고정시키기

도구막대를 고정시키거나 이동식으로 만드는 것은 프로그래밍을 통해 구현할 수 있습니다.

도구막대를 이동식으로 만들려면 도구막대에 Float 메서드를 사용하십시오. Float 메서드에서는 Top, Left 및 NumberFloatRows의 3가지 매개변수를 취합니다. Top과 Left 매개변수는 도구막대의 위쪽과 왼쪽 모서리의 픽셀 위치를 지정합니다. NumberFloatRows 매개변수는 수평 도구막대가 작성되는 행 수를 지정합니다. 이 숫자는 1 이상이어야 합니다. 도구막대의 버튼은 지정된 행 수에 맞게 자동으로 배치됩니다. 세로로 정렬된 도구막대의 경우에는 이 값이 열 수를 지정합니다.

도구막대를 고정시키려면 도구막대에 Dock 메서드를 사용하십시오. Dock 메서드에서는 Side, Row 및 Column의 3가지 매개변수를 취합니다. Side 매개변수는 고정 방식으로 위치를 지정하게 될 도구막대의 면을 지정합니다. 도구막대의 상단, 하단, 왼쪽, 오른쪽을 지정할 수 있습니다. Row 및 Column 매개변수는 도구막대를 고정시킬 고정 도구막대의 기존 행과 열 수를 지정합니다.

DockStatus 특성을 사용하여 도구막대가 고정되어 있는지 조회할 수 있습니다. DockStatus 특성은 도구막대가 고정되어 있는 경우 TRUE를 반환하고, 도구막대가 이동식인 경우에는 FALSE를 반환합니다.

도구막대 고정시키기

이 예제는 3개의 버튼이 있는 새 도구막대를 작성합니다. 도구막대는 화면의 왼쪽에 표시되고 고정됩니다.

Sub Ch6_DockToolbar()
    Dim currMenuGroup As AcadMenuGroup
    Set currMenuGroup = ThisDrawing.Application. _
                                        MenuGroups.Item(0)
    ' Create the new toolbar
    Dim newToolbar As AcadToolbar
    Set newToolbar = currMenuGroup.Toolbars. _
                                       Add("TestToolbar")
    ' Add three buttons to the new toolbar.
    ' All three buttons will have the same macro attached.
    Dim newButton1 As AcadToolbarItem
    Dim newButton2 As AcadToolbarItem
    Dim newButton3 As AcadToolbarItem
    Dim openMacro As String
    ' Assign the macro the VB equivalent of "ESC ESC _open "
    openMacro = Chr(3) + Chr(3) + "_open "
    Set newButton1 = newToolbar.AddToolbarButton _
                   ("", "NewButton1", "Open a file.", openMacro)
    Set newButton2 = newToolbar.AddToolbarButton _
                   ("", "NewButton2", "Open a file.", openMacro)
    Set newButton3 = newToolbar.AddToolbarButton _
                   ("", "NewButton3", "Open a file.", openMacro)
    ' Display the toolbar
    newToolbar.Visible = True
    ' Dock the toolbar to the left of the screen.
    newToolbar.Dock acToolbarDockLeft
End Sub


도구막대에서 도구막대 버튼 삭제

도구막대 이동식으로 만들기 및 고정시키기
도구막대 작성 및 편집
도구막대 항목의 특성 알아보기
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 도구막대 작성 및 편집 >
도구막대에서 도구막대 버튼 삭제

도구막대에서 도구막대 버튼을 제거하려면 도구막대 버튼에 Delete 메서드를 사용하십시오. 도구막대가 보이는 동안에만 도구막대에서 버튼을 삭제해야 합니다.


도구막대 항목의 특성 알아보기

도구막대에서 도구막대 버튼 삭제
도구막대 작성 및 편집
매크로 작성
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 도구막대 작성 및 편집 >
도구막대 항목의 특성 알아보기

모든 도구막대 항목은 다음과 같은 특성을 공유합니다.

Tagstring

꼬리표 또는 이름 꼬리표는 영숫자와 밑줄(_) 문자로 이루어진 문자열입니다. 이 문자열은 해당 도구막대의 도구막대 항목을 고유하게 식별합니다. 도구막대 항목이 작성될 때 자동으로 새 꼬리표가 지정됩니다.

Tagstring 특성을 사용하여 꼬리표 값을 읽거나 쓸 수 있습니다.

Name

이름은 도구막대 항목을 식별하는 문자열입니다. 또한 툴팁 문자에도 사용되는 문자열로, 사용자가 마우스나 다른 포인팅 장치를 도구막대 항목 위에 누르고 있을 때 AutoCAD에서 팝업되는 문자열입니다.

Name 특성을 사용하여 이름의 값을 읽거나 쓸 수 있습니다.

매크로

매크로는 도구막대 항목이 선택될 때 특정 동작을 실행하는 일련의 명령입니다. 매크로는 단순히 작업을 수행하는 키 입력에 대한 기록일 수도 있고 명령, AutoLISP, DIESEL 또는 ActiveX 프로그래밍 코드의 복잡한 명령들의 결합일 수도 있습니다.

Macro 특성을 사용하여 매크로의 값을 읽거나 쓸 수 있습니다.

HelpString

도움말 문자열은 AutoCAD 상태 행에 나타나는 도구막대 버튼에 대한 문자열입니다.

HelpString 특성을 사용하면 도움말 문자열 값을 읽거나 쓸 수 있습니다.

Index

도구막대 항목의 색인은 도구막대 항목이 속한 도구막대에서의 위치를 지정합니다. 도구막대의 색인 위치는 항상 0 위치에서 시작됩니다. 예를 들어 항목이 도구막대의 첫 번째 항목이면 색인 위치가 0이 되고, 도구막대의 두 번째 항목이면 색인 위치가 1이 됩니다.

Index 특성을 사용하여 도구막대 항목의 색인 위치를 읽을 수 있습니다.

Type

도구막대 항목은 일반 도구막대 버튼, 구분 기호, 플라이아웃 도구막대 버튼 또는 특수 조정 요소와 같은 유형 중 하나입니다. 항목이 보통 도구막대 버튼이면 이 특성은 acButton을 반환하며, 구분자일 경우에는 acToolButtonSeparator을 반환하며, 플라이아웃 버튼이면 acFlyout을 반환하며, 특수 조정 요소이면 acControl을 반환합니다.

Type 특성을 사용하여 도구막대 항목의 유형을 결정할 수 있습니다.

Flyout

도구막대 항목이 acFlyout 유형이면 이 특성은 플라이아웃 도구막대로 부착된 도구막대를 반환합니다. 플라이아웃 도구막대는 Toolbar 객체로서 반환됩니다.

메뉴 항목이 acFlyout 스타일이 아니면 이 특성은 NULL을 반환합니다.

Flyout 특성을 사용하여 도구막대 항목의 플라이아웃 도구막대를 찾을 수 있습니다.

Parent

이 특성은 도구막대 항목이 상주하는 도구막대를 반환합니다. 상위 도구막대는 Toolbar 객체로서 반환됩니다.

Parent 특성을 사용하여 도구막대 항목이 속한 도구막대를 찾을 수 있습니다.

Toolbar 특성

그 밖에도 도구막대의 모든 도구막대 항목에 적용되는 특성이 있습니다. 이러한 특성에는 도구막대가 고정식인지 이동식인지 여부, 가시적인지 숨겨지는지 여부, 도구막대가 큰 버튼을 사용하는지 작은 버튼을 사용하는지 등이 있습니다.


매크로 작성

도구막대 항목의 특성 알아보기
도구막대 및 메뉴 사용자화
해당 ASCII 문자로 매크로 문자 매핑
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 >
매크로 작성

매크로는 도구막대 항목이 선택될 때 특정 동작을 실행하는 일련의 명령입니다. 매크로는 단순히 작업을 수행하는 키 입력에 대한 기록일 수도 있고 명령, AutoLISP, DIESEL 또는 ActiveX 프로그래밍 코드의 복잡한 결합일 수도 있습니다.

명령 매개변수를 메뉴 매크로에 포함시키는 경우에는 명령에서 예상되는 해당 매개변수의 순서를 알아야 합니다. 메뉴 매크로의 모든 문자와 심지어 공백도 중요합니다. AutoCAD가 개정되거나 향상됨으로써 여러 명령에 대한 프롬프트 순서에 따라 명령 이름까지도 변경할 수 있습니다. 따라서, 사용자 메뉴는 AutoCAD의 신규 릴리즈로 업그레이드할 때 약간 변경해야 합니다.

명령 입력이 메뉴 항목에서 나오면 PICKADD 및 PICKAUTO 시스템 변수의 설정값은 각각 1과 0으로 간주됩니다. 그러면 AutoCAD의 이전 릴리즈와의 호환성이 유지되며, 이들 변수의 설정값을 검사하지 않아도 되기 때문에 더 쉽게 사용자화할 수 있습니다.

이 단원의 항목

  • 해당 ASCII 문자로 매크로 문자 매핑
  • 매크로 종료
  • 사용자 입력을 위한 일시 중지
  • 명령 취소
  • 매크로 반복
  • 단일 객체 선택 모드 사용


해당 ASCII 문자로 매크로 문자 매핑

매크로 작성
매크로 작성
매크로 종료
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 매크로 작성 >
해당 ASCII 문자로 매크로 문자 매핑

다음 테이블은 VB와 VBA에서 사용될 때 메뉴 매크로에 사용된 특수 문자와 그에 해당하는 ASCII 숫자에 대한 개요입니다. 이러한 특수 문자에 해당하는 ASCII 값은 Macro 특성의 문자열을 작성할 때 사용하십시오.

메뉴와 도구막대 매크로에 사용되는 특수 문자
문자 | 해당 ASCII 값 | 설명
; | chr(59) | ENTER 키를 실행합니다.
^M | chr(13) | ENTER 키를 실행합니다.
^| | chr(94) + chr(124) | TAB 키를 실행합니다.
SPACEBAR 키 | chr(32) | 하나의 빈칸을 입력합니다. 메뉴 항목에 있는 명령들 사이의 빈칸은 SPACEBAR 키를 누르는 것에 해당합니다.
\ | chr(92) | 사용자 입력을 일시 중지합니다.
_ | chr(95) | 다음에 오는 AutoCAD 명령과 키워드를 변환합니다.
+ | chr(43) | 다음 선에 메뉴 매크로를 계속합니다 (마지막 문자의 경우).
=* | chr(61) + chr(42) | 현재 맨 위 레벨 이미지, 풀다운 또는 바로 가기 메뉴를 표시합니다.
*^C^C | chr(42) + chr(3) + chr(3) | 반복되는 항목의 머리글입니다.
$ | chr(36) | 메뉴 섹션을 로드하거나 조건부 DIESEL 매크로 표현식을 시작합니다.
^B | chr(2) | 스냅 켜기 또는 끄기 사이에서 전환합니다(CTRL+B).
^C | chr(3) | 명령을 취소합니다(CTRL+C).
Esc | chr(3) | 명령을 취소합니다(ESC).
^D | chr(4) | 좌표 켜기 또는 끄기 사이에서 전환합니다(CTRL+D).
^E | chr(5) | 다음 등각투영 평면을 설정합니다(CTRL+E).
^G | chr(7) | 모눈 켜기 또는 끄기 사이에서 전환합니다(CTRL+G).
^H | chr(8) | 백스페이스를 실행합니다.
^O | chr(15) | 직교 켜기 또는 끄기 사이에서 전환합니다(CTRL+O).
^P | chr(16) | MENUECHO 켜기 또는 끄기 사이에서 전환합니다.
^Q | chr(17) | 모든 프롬프트, 상태 리스트 및 입력을 프린터로 보냅니다(CTRL+Q).
^T | chr(20) | 타블렛 켜기 또는 끄기 사이에서 전환합니다(CTRL+T).
^V | chr(22) | 현재 뷰포트를 변경합니다(CTRL+V).
^Z | chr(26) | 메뉴 항목의 끝에서 SPACEBAR 키 자동 추가를 억제하는 NULL 문자입니다.


매크로 종료

해당 ASCII 문자로 매크로 문자 매핑
매크로 작성
사용자 입력을 위한 일시 중지
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 매크로 작성 >
매크로 종료

매크로가 실행될 때 AutoCAD는 명령 순서를 처리하기 전에 매크로의 끝에 공백을 넣습니다. AutoCAD에서는 line SPACEBAR 키를 입력한 것처럼 다음 메뉴 매크로를 처리합니다.

line

이것이 필요하지 않는 경우도 있는데, 예를 들어 TEXT 또는 DIM 명령은 공백이 아니라 Enter 키로 종료해야 합니다. 또한 명령을 완료하는 데 두 개 이상의 공백(또는 Enter 키)을 사용할 수 있지만, 일부 문서 편집기에서는 후행 공백이 있는 행을 작성할 수 없습니다. 이 문제는 다음 2가지 특수 규칙으로 해결됩니다.

  • 매크로에 세미콜론(;)이 나타나면 AutoCAD에서는 Enter 키를 대체합니다.
  • 행이 조정 문자, 백슬래쉬(\), 더하기 기호(+) 또는 세미콜론(;)으로 끝나는 경우 AutoCAD는 그 뒤에 공백을 추가하지 않습니다.

다음 매크로를 보십시오.

erase \;

이 항목이 백슬래쉬(사용자 입력을 나타냄)로 끝나면 AutoCAD에서는 백슬래쉬 다음에 공백을 추가하지 않기 때문에 ERASE 작업이 완료되지 않습니다. 따라서 사용자 입력 다음에 Enter 키를 강제로 적용하기 위해 이 매크로는 세미콜론(;)을 사용합니다. 다음은 몇 가지 예입니다.

ucs
ucs ;
text \.4 0 DRAFT Inc;;;Main St.;;;City, State;

첫 번째 매크로를 선택하면 명령행에 ucs와 SPACEBAR 키가 입력되고 다음 프롬프트가 나타납니다.

옵션 입력 [신규(N)/이동(M)/직교(G)/이전(P)/복원(R)/저장(S)/삭제(D)/?/표준(W)] <표준>:

두 번째 매크로를 선택하면 명령행에 ucs, SPACEBAR 키 및 세미콜론(;)이 입력되어 기본값 World를 승인합니다. 화면 상에서는 첫 번째 항목과 두 번째 항목의 차이가 분명히 나타나지 않으므로, 일반적으로 두 항목을 같은 메뉴에 배치하지 않습니다.

세 번째 매크로를 선택하면 시작점에 프롬프트가 표시된 다음, 세 행에 주소를 기입합니다. 3중 세미콜론(;;;)에서 첫 번째 세미콜론은 문자열을 끝내고, 두 번째는 TEXT 명령을 반복하며, 세 번째는 이전 행 아래의 기본 배치를 요구합니다.

주특수 문자는 모두 해당 ASCII 값을 사용해서 입력해야 합니다. 해당 ASCII 값 리스트는 해당 ASCII 문자로 매크로 문자 매핑를 참고하십시오.


사용자 입력을 위한 일시 중지

매크로 종료
매크로 작성
명령 취소
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 매크로 작성 >
사용자 입력을 위한 일시 중지

어떤 경우에는, 입력할 지점에 백슬래쉬(\)를 입력하여 매크로의 중간에서 키보드나 좌표입력 장치를 사용한 입력을 허용하는 것이 좋습니다.

circle \1
layer off \;

첫 번째 매크로는 사용자에게 중심점을 묻기 위해 일시 중지한 다음, 매크로에서 반지름 1을 읽습니다. 백슬래쉬 문자(\) 다음에는 공백이 없습니다. 그 다음 매크로는 사용자에게 도면층 이름 입력을 요청하기 위해 일시 중지한 다음, 도면층을 끄고 LAYER 명령을 종료합니다. 일반적으로 LAYER 명령은 다른 작업에 대한 프롬프트를 표시하며, SPACEBAR 키(공백) 또는 Enter 키(;)를 누를 경우에만 종료됩니다.

매크로는 보통, 한 항목이 입력된 후에 계속됩니다. 따라서 개체 선택의 경우처럼 가변 입력 수를 승인하여 계속되는 매크로를 구성할 수 없습니다. 그러나 SELECT 명령의 경우 예외적으로 백슬래쉬는 객체 선택이 완료될 때까지 매크로를 일시 중단합니다. 예를 들어, 다음 매크로를 살펴 보십시오.

select \change previous ;properties color red ;

이 매크로는 SELECT 명령을 사용하여 하나 이상의 객체 선택 세트를 작성합니다. 그런 다음 CHANGE 명령을 실행하고, 이전 옵션을 사용하여 이 선택 세트를 참조하며, 선택된 모든 객체의 색상을 빨간색으로 변경합니다.

백슬래쉬 문자(\)로 인해 매크로가 사용자 입력을 위해 일시 중지하기 때문에 매크로에서 다른 목적으로 백슬래쉬를 사용할 수 없습니다. 예를 들어, /direct/file과 같이 파일 디렉토리 경로를 지정할 때 슬래시(/)를 경로 구분자로 앞에 사용하십시오.

다음과 같은 경우에서는 매크로의 재개를 지연합니다.

  • 점 입력이 예상되는 경우, 객체 스냅 모드가 실제 점 입력 이전에 올 수도 있습니다.
  • X/Y/Z 점 필터가 사용되는 경우, 전체 점이 축적될 때까지 매크로가 임시 정지된 상태로 유지됩니다.
  • SELECT 명령에 한해서는 객체 선택을 완료해야 매크로가 재개됩니다.
  • 사용자가 명시적인 명령으로 응답하면 임시 정지된 매크로는 명령이 완료되고 처음에 요청한 입력을 받을 때까지 임시 정지된 상태로 유지됩니다.
  • 사용자가 다른 매크로(옵션 제공 또는 명시적인 명령 실행을 위한)를 선택하여 응답하면 원래의 매크로가 임시 정지되고, 새로 선택된 항목이 처리를 완료한 후에야 임시 정지된 매크로가 재개됩니다.


명령 취소

사용자 입력을 위한 일시 중지
매크로 작성
매크로 반복
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 매크로 작성 >
명령 취소

이전에 완료되지 않은 명령을 모두 취소하려면 매크로에 ^C^C를 사용하십시오. 이것은 키보드에서 ESC 키를 두 번 누르는 것과 같습니다. 하나의 ^C로 대부분의 명령이 취소되지만 DIM 명령에서 명령 프롬프트로 복귀하려면 ^C^C가 필요합니다. 따라서 AutoCAD에서 ^C^C를 사용하면 대부분의 경우 명령 프롬프트로 돌아갑니다.


매크로 반복

명령 취소
매크로 작성
단일 객체 선택 모드 사용
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 매크로 작성 >
매크로 반복

일단 명령이 선택되면 다른 명령으로 이동하기 전에 여러 차례 그 명령을 사용하게 됩니다. 대부분의 경우 이런 방식으로 도구를 사용하게 되며, 도구를 선택해서 여러 가지 작업을 수행한 다음 다른 도구를 선택합니다. 사용할 때마다 도구를 선택하지 않기 위해, AutoCAD는 Null 응답으로 발생되는 명령 반복 기능을 제공합니다. 그러나 명령 옵션을 지정할 때에는 이 기능을 사용할 수 없습니다.

이 기능은 다른 명령을 선택할 때까지 자주 사용하는 명령을 반복할 수 있도록 해줍니다. 매크로가 항목 레이블 바로 다음에 *^C^C로 시작되면 매크로가 메모리에 저장됩니다. ESC 키 또는 다른 매크로의 선택으로 종료될 때까지 해당 매크로가 후속 명령 프롬프트에 응답합니다.

매크로 반복이 취소되게 되므로 *^C^C 문자열로 시작되는 매크로에서는 ^C(취소)를 사용하지 마십시오.

다음은 명령을 처리하는 반복적이거나 형식적인 접근 방법에 대한 예제입니다.

*^C^CMOVE Single
*^C^CCOPY Single
*^C^CERASE Single
*^C^CSTRETCH Single Crossing
*^C^CROTATE Single
*^C^CSCALE Single

매크로 반복은 이미지 타일 메뉴의 항목에서는 사용할 수 없습니다.


단일 객체 선택 모드 사용

매크로 반복
매크로 작성
메뉴 항목과 도구막대 항목에 대한 상태 행 도움말 작성
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 > 매크로 작성 >
단일 객체 선택 모드 사용

단일 객체 선택은 객체 선택을 단일 선택 모드에 넣고 객체 선택으로 실행된 보통 대화상자를 작동 불가능하게 하므로 선택이 후속 옵션에서 선택한 첫 번째 객체를 반환합니다. 이 작업은 매크로에서는. 매우 쉽습니다. 예를 들어, 다음 매크로를 살펴봅니다.

*^C^CERASE single

이 매크로는 현재 명령을 종료하며, 단일 선택 옵션을 사용하여 ERASE 명령을 활성화합니다. 이 항목을 선택한 다음에는 지울 단일 객체를 가리키거나 빈 영역을 가리키고 윈도우를 지정합니다. 이런 식으로 선택된 객체는 지워지며, 다른 것을 지울 수 있도록 매크로가 반복됩니다(선행 별표로 인해). 단일 선택 모드는 AutoCAD와의 상호 작용을 보다 동적으로 만듭니다.


메뉴 항목과 도구막대 항목에 대한 상태 행 도움말 작성

단일 객체 선택 모드 사용
도구막대 및 메뉴 사용자화
마우스 오른쪽 버튼으로 클릭 메뉴에 항목 추가
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 >
메뉴 항목과 도구막대 항목에 대한 상태 행 도움말 작성

상태 행 도움말 메시지는 기본 도움말 지원에서 중요한 부분입니다. 이러한 메시지는 메뉴나 도구막대 항목이 강조 표시될 때 상태 행에 나타나는 간단한 설명 메시지입니다. 모든 메뉴와 도구막대 항목에 대한 상태 행 도움말은 해당 항목의 HelpString 특성에 포함되어 있습니다.

메뉴나 도구막대 항목이 처음 작성되는 시점에 HelpString 특성은 비어 있습니다.

메뉴 항목에 상태 행 도움말 추가

이 예제에서는 “TestMenu”라는 메뉴를 새로 작성한 후 “Open”이라는 메뉴 항목을 작성합니다.그런 다음 HelpString 특성을 통해 메뉴 항목에 상태 행 도움말을 지정합니다.

Sub Ch6_AddHelp()
    Dim currMenuGroup As AcadMenuGroup
    Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
    ' Create the new menu
    Dim newMenu As AcadPopupMenu
    Set newMenu = currMenuGroup.Menus.Add _
                              ("Te" + Chr(Asc("&")) + "stMenu")
    ' Add a menu item to the new menu
    Dim newMenuItem As AcadPopupMenuItem
    Dim openMacro As String
    ' Assign the macro the VBA equivalent of "ESC ESC _open "
    openMacro = Chr(3) + Chr(3) + "_open "
    ' Create the menu item
    Set newMenuItem = newMenu.AddMenuItem _
                       (newMenu.count + 1, Chr(Asc("&")) _
                        + "Open", openMacro)
    ' Add the status line help to the menu item
     newMenuItem.HelpString = "Opens an AutoCAD drawing file."
    ' Display the menu on the menu bar
    newMenu.InsertInMenuBar _
                 (ThisDrawing.Application.menuBar.count + 1)
End Sub


마우스 오른쪽 버튼으로 클릭 메뉴에 항목 추가

메뉴 항목과 도구막대 항목에 대한 상태 행 도움말 작성
도구막대 및 메뉴 사용자화
사용자 이벤트
ActiveX 및 VBA 개발자 안내서 > 도구막대 및 메뉴 사용자화 >
마우스 오른쪽 버튼으로 클릭 메뉴에 항목 추가

마우스 오른쪽 버튼으로 클릭 메뉴나 바로 가기 메뉴는 AutoCAD 기준 메뉴 그룹에 포함된 특수 메뉴입니다. 이 메뉴는 사용자가 SHIFT 키를 누른 상태에서 마우스 오른쪽 버튼을 누를 때 나타납니다.

AutoCAD는 TRUE로 설정된 ShortcutMenu 특성을 가진 메뉴의 기준 메뉴 그룹을 찾아서 바로 가기 메뉴를 찾습니다. 메뉴에 새 메뉴 항목 추가에 나열되어 있는 단계를 수행하면 새 메뉴 항목을 바로 가기 메뉴에 추가할 수 있습니다.

새 메뉴 그룹에서는 바로 가기 메뉴를 사용하거나 사용할 수 없습니다. 메뉴 그룹의 바로 가기 메뉴를 작성하려면 새 메뉴 작성에 나열되어 있는 지침에 따라 POP0을 새 메뉴의 레이블로 사용하십시오.

마우스 오른쪽 버튼으로 클릭 메뉴의 끝에 메뉴 항목 추가

이 예제에서는 “OpenDWG” 메뉴 항목을 오른쪽 클릭 메뉴의 끝에 추가합니다.

Sub Ch6_AddMenuItemToshortcutMenu()
    Dim currMenuGroup As AcadMenuGroup
    Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
    ' Find the shortcut menu and assign it to the
    ' shortcutMenu variable
    Dim scMenu As AcadPopupMenu
    Dim entry As AcadPopupMenu
    For Each entry In currMenuGroup.Menus
        If entry.shortcutMenu = True Then
            Set scMenu = entry
        End If
    Next entry
    ' Add a menu item to the shortcut menu
    Dim newMenuItem As AcadPopupMenuItem
    Dim openMacro As String
    ' Assign the macro the VBA equivalent of "ESC ESC _open "
    openMacro = Chr(3) + Chr(3) + "_open "
    Set newMenuItem = scMenu.AddMenuItem _
                                    ("", Chr(Asc("&")) _
                                     + "OpenDWG", openMacro)
End Sub


사용자 이벤트

마우스 오른쪽 버튼으로 클릭 메뉴에 항목 추가
AutoCAD의 이벤트 이해
ActiveX 및 VBA 개발자 안내서 >
사용자 이벤트

이벤트란 세션의 현재 상태를 알리거나 어떤 일이 일어났다는 것을 경고하기 위해 AutoCAD에서 전송하는 통지 또는 메시지입니다. 예를 들어 도면을 열면 BeginOpen 이벤트가 발생됩니다. 이 이벤트에는 열었던 AutoCAD 도면의 이름이 있습니다. 도면이 닫힐 때는 또 다른 이벤트가 발생됩니다. 이 정보를 제공하는 이러한 이벤트를 사용해서, 특정 도면에서 사용자가 작업한 시간을 추적하는 서브루틴이나 이벤트 핸들러를 작성할 수 있습니다.

이 단원의 항목

  • AutoCAD의 이벤트 이해
  • 이벤트 핸들러 작성 지침
  • 응용프로그램 수준 이벤트 처리
  • 문서 수준 이벤트 처리
  • 객체 수준 이벤트 처리


AutoCAD의 이벤트 이해

사용자 이벤트
사용자 이벤트
이벤트 핸들러 작성 지침
ActiveX 및 VBA 개발자 안내서 > 사용자 이벤트 >
AutoCAD의 이벤트 이해

AutoCAD®에는 다음과 같은 세 가지 유형의 이벤트가 있습니다.

  • 응용프로그램 수준 이벤트는 AutoCAD 응용프로그램과 해당 환경의 변경 사항에 응답합니다. 이러한 이벤트는 도면 열기, 저장하기, 닫기 및 인쇄하기, 새로운 도면 작성, AutoCAD 명령 실행, ARX 및 LISP 응용프로그램 로드하기와 언로드하기, 시스템 변수 변경 및 Application 윈도우 변경 등에 응답합니다.
  • 문서 수준 이벤트는 특정 문서나 그 내용의 변경 사항에 응답합니다. 이러한 이벤트는 객체 추가, 삭제 및 수정, 바로 가기 메뉴 활성화, pickfirst 선택 세트 변경, Drawing 윈도우 변경 및 도면 재생성 등에 응답합니다. 또한 도면 열기, 닫기 및 인쇄하기, 도면에서 ARX와 LISP 응용프로그램 로드하기, 언로드하기에 대한 문서 수준 이벤트도 있습니다.
  • 객체 수준 이벤트는 특정 객체의 변경 사항에 응답합니다. 현재는 하나의 객체 수준 이벤트만 있으며 객체가 수정될 때마다 발생됩니다.

이벤트에 응답하는 서브루틴을 이벤트 핸들러라고 하며 지정된 이벤트가 발생될 때마다 자동으로 실행됩니다. BeginOpen 이벤트의 도면 이름과 같이 이벤트에 있는 정보는 매개변수를 통해 이벤트 핸들러로 전달됩니다.


이벤트 핸들러 작성 지침

AutoCAD의 이벤트 이해
사용자 이벤트
응용프로그램 수준 이벤트 처리
ActiveX 및 VBA 개발자 안내서 > 사용자 이벤트 >
이벤트 핸들러 작성 지침

이벤트는 단순히 AutoCAD 내에서 발생하는 상태 또는 동작에 관한 정보를 제공한다는 점을 기억해야 합니다. 이러한 이벤트에 응답하기 위해 이벤트 핸들러가 작성될 수 있으나 이벤트 핸들러가 발생할 때 AutoCAD가 명령을 처리 중인 경우가 종종 있습니다. 따라서 이벤트 핸들러에는 AutoCAD 및 해당 데이터베이스와의 안전한 작업을 위해 몇 가지 제한 사항이 있습니다.

  • 이벤트 순서에 의존하지 마십시오.

    이벤트 핸들러를 작성할 때, 이벤트 순서가 예상 순서와 똑같이 발생한다고 생각하지 마십시오. 예를 들어, OPEN 명령을 실행하면 BeginCommand, BeginOpen, EndOpen 및 EndCommand 이벤트가 발생합니다. 그러나 그 순서대로 발생하지 않을 수 있습니다. 확실하다고 생각할 수 있는 유일한 이벤트 순서는 해당 End 이벤트 보다 Begin 이벤트가 먼저 발생한다는 것입니다. 이전 예제에서 이벤트는 BeginCommand, BeginOpen, EndCommand 및 EndOpen 또는 BeginCommand, EndCommand, BeginOpen 및 EndOpen 등의 순서로 발생할 수 있습니다.

  • 작동 순서에 의존하지 마십시오.

    object1을 삭제한 다음에 object2를 삭제하는 경우, object1의 ObjectErased 이벤트를 받은 다음에 object2의 ObjectErased 이벤트를 받을 것으로 생각하지 마십시오. object2의 ObjectErased 이벤트를 먼저 받을 수 있습니다.

  • 이벤트 핸들러에서 대화식 함수를 시도하지 마십시오.

    이벤트 핸들러 내에서 대화식 함수를 실행하면 이벤트가 발생될 때 AutoCAD에서 명령을 처리하게 되는 심각한 문제가 발생할 수 있습니다. 따라서 선택 세트 작업과 이벤트 핸들러 내의 SendCommand 메서드뿐만 아니라 GetPoint, GetEntity, GetKeyword 등과 같은 입력 획득 메서드의 사용을 피해야 합니다.

  • 이벤트 핸들러 내에서 대화상자를 실행하지 마십시오.

    대화상자는 대화식 함수로 간주되며 AutoCAD의 현재 작업을 간섭할 수 있습니다. 메시지 상자와 경고 상자는 대화식으로 간주되지 않으므로 안전하게 실행될 수 있지만, BeginModal, EndModal, Activate, Deactivate 및 BeginRightClick 이벤트의 이벤트 핸들러에서 메시지 상자를 실행하면 예기치 않게 중단됩니다.

  • 이벤트를 실행한 객체를 제외하고 데이터베이스의 모든 객체에 데이터를 기록할 수 있습니다.

    이벤트를 발생시키는 객체는 AutoCAD에서 사용되기 위해 계속 열려 있는 상태로 현재 작업이 진행되고 있을 수 있습니다. 그러므로 같은 객체에 대한 정보를 이벤트 핸들러의 객체에 기록하지 마십시오. 그러나 정보 읽기는 이벤트를 발생시킨 객체에서 안전하게 수행할 수 있습니다. 예를 들어 바닥이 바둑판식으로 채워져 있고, 바닥의 경계에 이벤트 핸들러를 부착한다고 가정해보십시오. 바닥의 크기를 변경하면 이벤트 핸들러는 타일을 자동으로 추가하거나 제거하여 새 영역을 채웁니다. 이벤트 핸들러는 경계의 새 영역을 읽을 수 있지만 경계 자체는 변경할 수 없습니다.

  • 동일한 이벤트를 발생시키는 이벤트 핸들러에서는 동작을 수행하지 마십시오.

    같은 이벤트를 발생시키는 이벤트 핸들러에서 같은 작업을 수행하면 무한 루프가 작성됩니다. 예를 들어 절대로 BeginOpen 이벤트 내에서 도면을 열면 안 됩니다. 도면을 열게 되면 AutoCAD는 도면을 열 수 있는 최대 수에 이를 때까지 계속해서 도면을 열게 됩니다.

  • AutoCAD가 모달 대화상자를 표시하는 동안에는 이벤트가 시작되지 않습니다.


응용프로그램 수준 이벤트 처리

이벤트 핸들러 작성 지침
사용자 이벤트
응용프로그램 수준 사용
ActiveX 및 VBA 개발자 안내서 > 사용자 이벤트 >
응용프로그램 수준 이벤트 처리

응용프로그램 수준 이벤트는 AutoCAD VBA에서 영구적이지 않습니다. 즉, VBA 프로젝트를 올릴 때 자동으로 작동되지 않는다는 것입니다. 따라서 응용프로그램 수준 이벤트는 VBA와 기타 모든 ActiveX® Automation 컨트롤러에 대해서 작동 가능해야 합니다.

응용프로그램 수준 이벤트가 작동 가능해 지면 다양한 이벤트를 사용할 수 있습니다. 이러한 이벤트는 다음과 같습니다.

AppActivate

주 응용프로그램 윈도우가 활성화되기 직전에 발생합니다.

AppDeactivate

주 응용프로그램 윈도우가 비활성화되기 직전에 발생합니다.

ARXLoaded

ObjectARX 응용프로그램이 로드되어 있는 경우에 발생합니다.

ARXUnloaded

ObjectARX 응용프로그램이 언로드되어 있는 경우에 발생합니다.

BeginCommand

명령이 실행된 직후에, 그 명령이 완료되기 전에 발생합니다.

BeginFileDrop

주 응용프로그램 윈도우에 파일을 끌어 놓은 경우에 발생합니다.

BeginLISP

AutoCAD가 LISP 표현식 평가 요청을 수신한 직후에 발생합니다.

BeginModal

모달 대화상자가 표시되기 직전에 발생합니다.

BeginOpen

AutoCAD가 기존의 도면을 여는 요청을 수신한 직후에 발생합니다.

BeginPlot

AutoCAD가 도면 인쇄 요청을 수신한 직후에 발생합니다.

BeginQuit

AutoCAD 세션이 종료되기 직전에 발생합니다.

BeginSave

AutoCAD가 도면 저장 요청을 수신한 직후에 발생합니다.

EndCommand

명령이 완료된 직후에 발생합니다.

EndLISP

LISP 표현식 평가가 완료되는 즉시 발생합니다.

EndModal

모달 대화상자가 해제되는 즉시 발생합니다.

EndOpen

AutoCAD가 기존 도면 열기를 종료한 직후에 발생합니다.

EndPlot

문서가 프린터에 전송된 직후에 발생합니다.

EndSave

AutoCAD가 도면 저장을 종료할 때 발생합니다.

LISPCancelled

LISP 표현식에 대한 평가가 취소되었을 때 발생합니다.

NewDrawing

새로운 도면이 작성되기 직전에 발생합니다.

SysVarChanged

시스템 변수의 값이 변경될 때 발생합니다.

WindowChanged

응용프로그램 윈도우를 변경할 때 발생합니다.

WindowMovedOrResized

응용프로그램 윈도우가 이동되거나 크기가 조정된 직후에 발생합니다.

이 단원의 항목

  • 응용프로그램 수준 사용


응용프로그램 수준 사용

응용프로그램 수준 이벤트 처리
응용프로그램 수준 이벤트 처리
문서 수준 이벤트 처리
ActiveX 및 VBA 개발자 안내서 > 사용자 이벤트 > 응용프로그램 수준 이벤트 처리 >
응용프로그램 수준 사용

응용프로그램 수준 이벤트를 사용하기 전에 클래스 모듈을 새로 작성하고 이벤트를 사용하여 객체 유형 AcadApplication을 선언해야 합니다. 예를 들어, EventClassModule이라는 클래스 모듈을 새로 작성한다고 가정해 봅니다. 새 클래스 모듈에는 VBA 키워드가 WithEvents인 응용프로그램 선언이 포함됩니다.

새 클래스를 작성한 다음 이벤트를 사용하여 Application 객체를 선언하려면

  1. VBA IDE에서 클래스 모듈을 삽입합니다. 삽입 메뉴에서 클래스 모듈을 선택합니다.
  2. 프로젝트 윈도우에서 새 클래스 모듈을 선택합니다.
  3. 특성 윈도우에서 클래스 이름을 EventClass-Module로 변경합니다.
  4. F7 키를 사용하거나 뷰 [image] 코드 메뉴 옵션을 선택하여 해당 클래스의 코드 윈도우를 엽니다.
  5. 클래스의 코드 윈도우에서 다음 행을 추가합니다.
Public WithEvents App As AcadApplication

이벤트를 사용해서 선언된 새 객체는 클래스 모듈의 객체 드롭다운 리스트 상자에 나타나며, 사용자는 클래스 모듈의 새 객체에 대한 이벤트 프로시져를 작성할 수 있습니다. (객체 상자에서 새 객체를 선택하면 객체에 적합한 이벤트가 프로시져 드롭다운 리스트 상자에 표시됩니다.)

그러나 절차를 실행하기 전에 클래스 모듈에 있는 선언된 객체를 Application 객체에 연결해야 합니다. 임의의 모듈에서 다음 코드를 사용해서 이 작업을 수행할 수 있습니다.

선언된 객체를 Application 객체에 연결하려면

  1. 주 모듈에 대한 코드 윈도우에서 다음 행을 선언 섹션에 추가하십시오.
    Dim X As New EventClassModule
  2. 같은 윈도우에서 다음 서브루틴을 추가합니다.
    Sub InitializeEvents()
    Set X.App = ThisDrawing.Application
    End Sub
  3. 주 모듈에 대한 코드에서 다음의 InitializeEvents 서브루틴 호출을 추가하십시오.
    Call InitializeEvents

InitializeEvents 프로시져가 실행되면 클래스 모듈의 App 객체는 지정된 Application 객체를 가리키며, 클래스 모듈의 이벤트 프로시져는 이벤트가 발생할 때 실행됩니다.

도면이 AutoCAD에 놓일 때 계속 진행하도록 메시지 표시

이 예제는 파일을 끌어서 AutoCAD에 놓았을 때 로드 프로세스를 차단합니다. 끌어서 놓은 파일의 이름과 사용자가 파일을 계속 로드할지 또는 표시할지 결정할 수 있는 예/아니오/계속 버튼이 들어 있는 메시지 상자가 표시됩니다. 사용자가 작업을 취소하기로 선택하면 BeginFileDrop 이벤트의 Cancel 매개변수를 통해 결정 항이 반환되며 파일은 로드되지 않습니다.

Public WithEvents ACADApp As AcadApplication
Sub Example_AcadApplication_Events()
 ' This example intializes the public variable (ACADApp)
 ' which will be used to intercept AcadApplication Events
 '
 ' Run this procedure FIRST!
 ' We could get the application from the ThisDocument
 ' object, but that would require having a drawing open,
 ' so we grab it from the system.
 Set ACADApp = GetObject(, "AutoCAD.Application.17")
End Sub
Private Sub ACADApp_BeginFileDrop _
 (ByVal FileName As String, Cancel As Boolean)
 ' This example intercepts an Application BeginFileDrop event.
 '
 ' This event is triggered when a drawing file is dragged
 ' into AutoCAD.
 '
 ' To trigger this example event:
    ' 1) Make sure to run the example that initializes
 ' the public variable (named ACADApp) linked to this event.
 '
 ' 2) Drag an AutoCAD drawing file into the AutoCAD
 ' application from either the Windows Desktop
 ' or Windows Explorer
 ' Use the "Cancel" variable to stop the loading of the
 ' dragged file, and the "FileName" variable to notify
 ' the user which file is about to be dragged in.
 If MsgBox("AutoCAD is about to load " & FileName & vbCrLf _
 & "Do you want to continue loading this file?", _
 vbYesNoCancel + vbQuestion) <> vbYes Then
 Cancel = True
 End If
End Sub


문서 수준 이벤트 처리

응용프로그램 수준 사용
사용자 이벤트
VBA 이외의 환경에서 문서 수준 이벤트 사용
ActiveX 및 VBA 개발자 안내서 > 사용자 이벤트 >
문서 수준 이벤트 처리

문서 수준 이벤트는 AutoCAD VBA에서 영구적입니다. 즉, VBA 프로젝트를 올릴 때 자동으로 작동됩니다. 그러나 VB와 같은 다른 컨트롤러에서는 작동되지 않습니다. 그러므로 문서 수준 이벤트는 나머지 ActiveX 자동화 컨트롤러에서 작동 가능해야 합니다.

문서 수준 이벤트가 작동 가능하게 되면 다양한 이벤트를 사용할 수 있습니다. 이러한 이벤트는 다음과 같습니다.

Activate

문서 윈도우가 활성화될 때 발생합니다.

BeginDocClose

도면을 닫기 위한 요청이 수신된 직후에 발생합니다.

BeginCommand

명령이 실행된 직후에, 그 명령이 완료되기 전에 발생합니다.

BeginDoubleClick

사용자가 도면에서 객체를 두 번 클릭한 후에 발생합니다.

BeginLISP

AutoCAD가 LISP 표현식 평가 요청을 수신한 직후에 발생합니다.

BeginPlot

AutoCAD가 도면 인쇄 요청을 수신한 직후에 발생합니다.

BeginRightClick

사용자가 도면 윈도우에서 마우스 오른쪽 버튼으로 클릭한 후에 발생합니다.

BeginSave

AutoCAD가 도면 저장 요청을 수신한 직후에 발생합니다.

BeginShortcutMenuCommand

사용자가 도면 윈도우에서 마우스 오른쪽 버튼으로 클릭한 후에, 명령 모드에서 바로 가기 메뉴가 나타나기 전에 발생합니다.

BeginShortcutMenuDefault

사용자가 도면 윈도우에서 마우스 오른쪽 버튼으로 클릭한 후에, 기본 모드에서 바로 가기 메뉴가 나타나기 전에 발생합니다.

BeginShortcutMenuEdit

사용자가 도면 윈도우에서 마우스 오른쪽 버튼으로 클릭한 후에, 편집 모드에서 바로 가기 메뉴가 나타나기 전에 발생합니다.

BeginShortcutMenuGrip

사용자가 도면 윈도우에서 마우스 오른쪽 버튼으로 클릭한 후에, 그립 모드에서 바로 가기 메뉴가 나타나기 전에 발생합니다.

BeginShortcutMenuOsnap

사용자가 도면 윈도우에서 마우스 오른쪽 버튼으로 클릭한 후에, 객체 스냅 모드에서 바로 가기 메뉴가 나타나기 전에 발생합니다.

Deactivate

도면 윈도우가 비활성화되었을 때 발생합니다.

EndCommand

명령이 완료된 직후에 발생합니다.

EndLISP

LISP 표현식 평가가 완료되는 즉시 발생합니다.

EndPlot

문서가 프린터에 전송된 직후에 발생합니다.

EndSave

AutoCAD가 도면 저장을 종료할 때 발생합니다.

EndShortcutMenu

바로 가기 메뉴가 나타난 후에 발생합니다.

LayoutSwitched

사용자가 다른 배치로 전환한 후에 발생합니다.

LISPCancelled

LISP 표현식에 대한 평가가 취소되었을 때 발생합니다.

ObjectAdded

객체가 도면에 추가되었을 때 발생합니다.

ObjectErased

객체가 도면에서 지워졌을 때 발생합니다.

ObjectModified

도면에서 객체가 수정되었을 때 발생합니다.

SelectionChanged

현재의 pickfirst 선택 세트가 변경될 때 발생합니다.

WindowChanged

문서 윈도우가 변경될 때 발생합니다.

WindowMovedOrResized

도면 윈도우가 이동되거나 크기가 조정된 직후에 발생합니다.

이 단원의 항목

  • VBA 이외의 환경에서 문서 수준 이벤트 사용
  • VBA 이외의 환경에서 문서 수준 이벤트 코딩
  • VBA에서 문서 수준 이벤트 코딩


VBA 이외의 환경에서 문서 수준 이벤트 사용

문서 수준 이벤트 처리
문서 수준 이벤트 처리
VBA 이외의 환경에서 문서 수준 이벤트 코딩
ActiveX 및 VBA 개발자 안내서 > 사용자 이벤트 > 문서 수준 이벤트 처리 >
VBA 이외의 환경에서 문서 수준 이벤트 사용

문서 수준 이벤트를 VB 환경이나 VBA 이외의 다른 환경에서 사용하려면 클래스 모듈을 새로 작성하고 이벤트를 사용하여 객체를 AcadDocument 스타일로 선언해야 합니다. 예를 들어, EventClassModule이라는 새 클래스 모듈을 작성한다고 가정해 봅니다. 새 클래스 모듈에는 VBA 키워드가 WithEvents인 응용프로그램 선언이 포함됩니다.

새 클래스를 작성한 다음 이벤트를 사용하여 Document 객체를 선언하려면

  1. VBA IDE에서 클래스 모듈을 삽입합니다. 삽입 메뉴에서 클래스 모듈을 선택합니다.
  2. 프로젝트 윈도우에서 새 클래스 모듈을 선택합니다.
  3. 특성 윈도우에서 클래스 이름을 EventClass-Module로 변경합니다.
  4. F7 키를 사용하거나 뷰 [image] 코드 메뉴 옵션을 선택하여 해당 클래스의 코드 윈도우를 엽니다.
  5. 클래스의 코드 윈도우에서 다음 행을 추가합니다.
Public WithEvents Doc As AcadDocument

이벤트를 사용해서 선언된 새 객체는 클래스 모듈의 객체 드롭다운 리스트 상자에 나타나며, 사용자는 클래스 모듈의 새 객체에 대한 이벤트 프로시져를 작성할 수 있습니다. (객체 상자에서 새 객체를 선택하면 객체에 적합한 이벤트가 프로시져 드롭다운 리스트 상자에 표시됩니다.)

그러나 프로시져를 실행하기 전에 클래스 모듈에 있는 선언된 객체를 Document 객체에 연결해야 합니다. 임의의 모듈에서 다음 코드를 사용해서 이 작업을 수행할 수 있습니다.

선언된 객체를 Document 객체에 연결하려면

  1. 주 모듈에 대한 코드 윈도우에서 다음 행을 선언 섹션에 추가하십시오.
    Dim X As New EventClassModule
  2. 같은 윈도우에서 다음 서브루틴을 추가합니다.
    ub InitializeEvents()
     Set X.Doc = ThisDrawing
    End Sub
  3. 주 모듈에 대한 코드에 다음과 같은 InitializeApp 서브루틴 호출을 추가합니다.
    Call InitializeEvents

    InitializeEvents 프로시져가 실행된 후, 클래스 모듈의 Doc 객체는 작성된 Document 객체를 가리키며 클래스 모듈의 이벤트 프로시져는 이벤트가 발생할 때 실행됩니다.


VBA 이외의 환경에서 문서 수준 이벤트 코딩

VBA 이외의 환경에서 문서 수준 이벤트 사용
문서 수준 이벤트 처리
VBA에서 문서 수준 이벤트 코딩
ActiveX 및 VBA 개발자 안내서 > 사용자 이벤트 > 문서 수준 이벤트 처리 >
VBA 이외의 환경에서 문서 수준 이벤트 코딩

문서 수준 이벤트가 작동 가능해지면 클래스 모듈 코드 윈도우의 객체 드롭다운 리스트에서 Doc 클래스 변수를 사용할 수 있습니다. Doc 클래스를 선택하면 사용 가능한 이벤트의 리스트가 프로시져 드롭다운 리스트에 나타납니다. 핸들러를 작성할 이벤트를 선택하기만 하면 핸들러 윤곽이 자동으로 작성됩니다.


VBA에서 문서 수준 이벤트 코딩

VBA 이외의 환경에서 문서 수준 이벤트 코딩
문서 수준 이벤트 처리
객체 수준 이벤트 처리
ActiveX 및 VBA 개발자 안내서 > 사용자 이벤트 > 문서 수준 이벤트 처리 >
VBA에서 문서 수준 이벤트 코딩

문서 수준 이벤트는 VBA 프로젝트를 로드할 때 자동으로 작동됩니다. VBA에서 문서 수준 이벤트의 이벤트 핸들러를 작성하려면 코드 윈도우의 객체 드롭다운 리스트에서 AcadDocument를 선택하면 됩니다. 문서에 사용할 수 있는 이벤트가 프로시져 드롭다운 리스트에 나타납니다. 핸들러를 작성할 이벤트를 선택하기만 하면 핸들러 윤곽이 자동으로 작성됩니다.

이 방식으로 작성된 이벤트 핸들러는 현재의 활성 도면에 적용됩니다. 특정 도면의 이벤트 핸들러를 작성하려면 먼저 VBA 이외의 환경에서 문서 수준 이벤트 사용에 나열되어 있는 단계를 수행하십시오. 그러면 이벤트에 대한 특정 문서를 작동할 수 있습니다.

다음 예제에서는 BeginShortcutMenuDefault 이벤트의 이벤트 핸들러를 사용하여 “OpenDWG” 메뉴 항목을 바로 가기 메뉴의 시작 부분에 추가합니다. 그런 다음, 사용자의 메뉴 구성에 영구적으로 저장되지 않도록 EndShortcutMenu 이벤트의 이벤트 핸들러에서 추가 메뉴 항목을 제거합니다.

Private Sub AcadDocument_BeginShortcutMenuDefault _
                    (ShortcutMenu As AutoCAD.IAcadPopupMenu)
    On Error Resume Next
    ' Add a menu item to the cursor menu
    Dim newMenuItem As AcadPopupMenuItem
    Dim openMacro As String
    openMacro = Chr(vbKeyEscape) + Chr(vbKeyEscape) + "_open "
    Set newMenuItem = ShortcutMenu.AddMenuItem _
                                    (0, Chr(Asc("&")) _
                                     + "OpenDWG", openMacro)
End Sub
Private Sub AcadDocument_EndShortcutMenu _
                   (ShortcutMenu As AutoCAD.IAcadPopupMenu)
    On Error Resume Next
    ShortcutMenu.Item("OpenDWG").Delete
End Sub


객체 수준 이벤트 처리

VBA에서 문서 수준 이벤트 코딩
사용자 이벤트
객체 수준 이벤트 사용
ActiveX 및 VBA 개발자 안내서 > 사용자 이벤트 >
객체 수준 이벤트 처리

객체 수준 이벤트는 AutoCAD VBA에서 영구적이 아닙니다. 즉, VBA 프로젝트를 올릴 때 자동으로 작동 가능하게 되지 않습니다. 객체 수준 이벤트는 VBA와 나머지 ActiveX 자동화 컨트롤러에서 작동 가능하게 되어야 합니다.

객체 수준 이벤트가 작동 가능하게 되면 사용자는 Modified 이벤트를 사용할 수 있습니다. 이 이벤트는 도면에서 객체가 수정되었을 때 발생합니다.

이 단원의 항목

  • 객체 수준 이벤트 사용


객체 수준 이벤트 사용

객체 수준 이벤트 처리
객체 수준 이벤트 처리
3차원 공간에서 작업
ActiveX 및 VBA 개발자 안내서 > 사용자 이벤트 > 객체 수준 이벤트 처리 >
객체 수준 이벤트 사용

객체 수준 이벤트를 사용하려면 클래스 모듈을 새로 작성하고 이벤트를 사용하여 객체 유형을 AcadObject로 선언해야 합니다. 예를 들어, EventClassModule이라는 클래스 모듈을 새로 작성한다고 가정해 봅니다. 새 클래스 모듈에는 VBA 키워드가 WithEvents인 응용프로그램 선언이 포함됩니다.

새 클래스를 작성한 다음 이벤트를 사용하여 Circle 객체를 선언하려면

  1. VBA IDE에서 클래스 모듈을 삽입합니다. 삽입 메뉴에서 클래스 모듈을 선택합니다.
  2. 프로젝트 윈도우에서 새 클래스 모듈을 선택합니다.
  3. 특성 윈도우에서 클래스 이름을 EventClass-Module로 변경합니다.
  4. F7 키를 사용하거나 뷰 [image] 코드 메뉴 옵션을 선택하여 해당 클래스의 코드 윈도우를 엽니다.
  5. 클래스의 코드 윈도우에서 다음 행을 추가합니다.
Public WithEvents Object As AcadCircle

이벤트를 사용해서 선언된 새 객체는 클래스 모듈의 객체 드롭다운 리스트 상자에 나타나며, 사용자는 클래스 모듈의 새 객체에 대한 이벤트 프로시져를 작성할 수 있습니다. (객체 상자에서 새 객체를 선택하면 객체에 적합한 이벤트가 프로시져 드롭다운 리스트 상자에 표시됩니다.)

그러나 프로시져를 실행하기 전에 클래스 모듈에 있는 선언된 객체를 Circle 객체와 연결해야 합니다. 임의의 모듈에서 다음 코드를 사용하여 이 작업을 수행할 수 있습니다.

선언된 객체를 Automation 객체에 연결하려면

  1. 주 모듈에 대한 코드 윈도우에서 다음 행을 선언 섹션에 추가하십시오.
    Dim X As New EventClassModule
  2. 동일한 윈도우에서 “MyCircle”이라는 원을 작성한 후 포함하는 다음 이벤트로 원을 초기화합니다.
    Sub InitializeEvents()
     Dim MyCircle As AcadCircle
     Dim centerPoint(0 To 2) As Double
     Dim radius As Double
     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#
     radius = 5#
     Set MyCircle = ThisDrawing.ModelSpace.AddCircle(centerPoint, radius)
     Set X.Object = MyCircle
    End Sub
  3. 주 모듈에 대한 코드에서 다음과 같은 InitializeApp 서브루틴 호출을 추가합니다.
    Call InitializeEvents

    InitializeEvents 프로시져가 실행되면 클래스 모듈의 Circle 객체는 작성된 Circle 객체를 가리키며, 클래스 모듈의 이벤트 프로시져는 이벤트가 발생할 때 실행됩니다.

    주VBA에서 코딩할 때, 모든 객체에 Modified 이벤트가 사용 가능하도록 이벤트 핸들러를 제공해야 합니다. 핸들러를 제공하지 않으면 VBA는 예상치 못하게 종료됩니다.
    폴리선이 업데이트될 때마다 닫힌 폴리선의 영역 표시

    다음 예제는 이벤트를 사용하여 단순 폴리선을 작성합니다. 그런 다음 폴리선이 변경될 때마다 폴리선의 이벤트 핸들러가 새 영역을 표시합니다. 이벤트를 발생시키려면 AutoCAD에서 폴리선의 크기를 변경하면 됩니다. CreatePLineWithEvents 서브루틴을 실행해야 이벤트 핸들러가 활성화됩니다.

    Public WithEvents PLine As AcadLWPolyline
    Sub CreatePLineWithEvents()
     ' This example creates a light weight polyline
     Dim points(0 To 9) As Double
     points(0) = 1: points(1) = 1
     points(2) = 1: points(3) = 2
     points(4) = 2: points(5) = 2
     points(6) = 3: points(7) = 3
     points(8) = 3: points(9) = 2
     Set PLine = ThisDrawing.ModelSpace. _
     AddLightWeightPolyline(points)
     PLine.Closed = True
     ThisDrawing.Application.ZoomAll
    End Sub
    Private Sub PLine_Modified _
     (ByVal pObject As AutoCAD.IAcadObject)
     ' This event is triggered when the polyline is resized.
     ' If the polyline is deleted the modified event is still
     ' triggered, so we use the error handler to avoid
     ' reading data from a deleted object.
     On Error GoTo ERRORHANDLER
     MsgBox "The area of " & pObject.ObjectName & " is: " _
     & pObject.Area
     Exit Sub
    ERRORHANDLER:
     MsgBox Err.Description
    End Sub


3차원 공간에서 작업

객체 수준 이벤트 사용
3D 좌표 지정
ActiveX 및 VBA 개발자 안내서 >
3차원 공간에서 작업

대부분의 도면은 3차원(3D) 객체에 대한 2차원(2D) 뷰로 이루어집니다. 이 제도 방식은 건축과 공학 부문에서 널리 사용되고 있으나, 도면은 3D 객체의 2D로 표현되어 시각적으로 해석된다는 측면에서 제한적입니다. 게다가 뷰는 독립적으로 작성되기 때문에 더 많은 오류와 다의성을 발생시킬 수 있습니다. 이로 인해 2D 표현 대신, 진정한 3D 모형 필요로 하게 됩니다. AutoCAD 도면 작성 도구를 사용하면 상세하고 사실적인 3D 객체를 작성하여 다양한 방식으로 조작할 수 있습니다.

이 단원의 항목

  • 3D 좌표 지정
  • 사용자 좌표계 정의
  • 좌표 변환
  • 3D 객체 작성
  • 3D에서 편집
  • 3D 솔리드 편집


3D 좌표 지정

3차원 공간에서 작업
3차원 공간에서 작업
사용자 좌표계 정의
ActiveX 및 VBA 개발자 안내서 > 3차원 공간에서 작업 >
3D 좌표 지정

3D 표준 좌표계(WCS) 좌표 입력은 2D WCS 좌표 입력과 유사합니다. X 및 Y 값뿐 아니라 Z 값도 지정해야 합니다. 2D 좌표에서와 마찬가지로 좌표를 ActiveX ® 메서드 및 특성으로 전달하고 좌표를 조회하는 데 variant가 사용됩니다.

3D 좌표 지정에 대한 자세한 정보는 사용자 안내서의 “3D 좌표 입력”을 참고하십시오.

2D 및 3D 폴리선의 좌표 정의 및 조회

이 예제에서는 각각 3개의 좌표가 있는 두 폴리선을 작성합니다. 첫 번째 폴리선은 2D 폴리선이고, 두 번째 폴리선은 3D입니다. 정점이 들어 있는 배열의 길이는 3D 폴리선을 작성할 때 Z 좌표를 포함하도록 확장됩니다. 예제는 폴리선의 좌표를 조회하고 좌표를 메시지 상자에 표시하는 것으로 끝납니다.

Sub Ch8_Polyline_2D_3D()
    Dim pline2DObj As AcadLWPolyline
    Dim pline3DObj As AcadPolyline
    Dim points2D(0 To 5) As Double
    Dim points3D(0 To 8) As Double
    ' Define three 2D polyline points
   points2D(0) = 1: points2D(1) = 1
   points2D(0) = 1: points2D(1) = 1
   points2D(4) = 2: points2D(5) = 2
    ' Define three 3D polyline points
   points3D(0) = 1: points3D(1) = 1: points3D(2) = 0
   points3D(3) = 2: points3D(4) = 1: points3D(5) = 0
   points3D(3) = 2: points3D(4) = 1: points3D(5) = 0
    ' Create the 2D light weight Polyline
    Set pline2DObj = ThisDrawing.ModelSpace. _
                             AddLightWeightPolyline(points2D)
    pline2DObj.Color = acRed
    pline2DObj.Update
    ' Create the 3D polyline
    Set pline3DObj = ThisDrawing.ModelSpace. _
                             AddPolyline(points3D)
    pline3DObj.Color = acBlue
    pline3DObj.Update
    ' Query the coordinates of the polylines
    Dim get2Dpts As Variant
    Dim get3Dpts As Variant
    get2Dpts = pline2DObj.Coordinates
    get3Dpts = pline3DObj.Coordinates
    ' Display the coordinates
    MsgBox ("2D polyline (red): " & vbCrLf & _
            get2Dpts(0) & ", " & get2Dpts(1) & vbCrLf & _
            get2Dpts(2) & ", " & get2Dpts(3) & vbCrLf & _
            get2Dpts(4) & ", " & get2Dpts(5))
    MsgBox ("3D polyline (blue): " & vbCrLf & _
            get3Dpts(0) & ", " & get3Dpts(1) & ", " & _
            get3Dpts(2) & vbCrLf & _
            get3Dpts(3) & ", " & get3Dpts(4) & ", " & _
            get3Dpts(5) & vbCrLf & _
            get3Dpts(6) & ", " & get3Dpts(7) & ", " & _
            get3Dpts(8))
End Sub


사용자 좌표계 정의

3D 좌표 지정
3차원 공간에서 작업
좌표 변환
ActiveX 및 VBA 개발자 안내서 > 3차원 공간에서 작업 >
사용자 좌표계 정의

(0, 0, 0)인 원점의 위치 및 XY 평면과 Z축의 방향을 변경할 때 사용자 좌표계(UCS) 객체를 정의합니다. UCS를 3D 공간의 아무데나 지정하여 방향을 맞출 수 있으며 UCS를 필요한 만큼 정의, 저장하고 다시 호출할 수 있습니다. 좌표 입력과 화면표시는 현재의 UCS를 기준으로 합니다.

UCS의 원점과 방향을 나타내기 위해 UCSIconAtOrigin 특성을 사용하여 UCS 원점에 UCS 아이콘을 표시할 수 있습니다. UCS 아이콘이 켜져 있는 경우(UCSIconOn 특성 참고) 원점에 표시되지 않으면 UCSORG 시스템 변수에 의해 정의된 WCS 좌표에 표시됩니다.

Add 메서드를 사용하여 사용자 좌표계를 새로 작성할 수 있습니다. 원점의 좌표, X축과 Y축의 좌표 및 UCS 이름 등 4가지 값을 입력해야 합니다.

AutoCAD® ActiveX Automation의 모든 좌표는 표준 좌표계로 입력됩니다. 주어진 UCS의 변환 행렬을 반환하려면 GetUCSMatrix 메서드를 사용하십시오. 같은 WCS 좌표를 찾으려면 이 변환 행렬을 사용하십시오.

UCS를 활성화하려면 Document 객체의 ActiveUCS 특성을 사용하십시오. 활성 UCS를 변경하는 경우에는 변경 사항이 나타나도록 새로운 UCS 객체를 활성 UCS로 재설정해야 합니다. 활성 UCS를 재설정하려면 업데이트된 UCS 객체와 함께 이 특성을 다시 호출하기만 하면 됩니다.

UCS 정의에 대한 자세한 정보는 사용자 안내서의 “3D로 사용자 좌표계 조정”을 참고하십시오.

새 UCS를 작성하여 활성 상태로 만들고 한 점의 좌표를 UCS 좌표로 변환

다음 서브루틴은 UCS를 새로 작성하여 도면의 활성 UCS로 설정합니다. 그런 다음, 사용자에게 도면에서 점을 선택하라고 표시하고 점의 WCS와 UCS 좌표를 리턴합니다.

Sub Ch8_NewUCS()
    ' Define the variables we will need
    Dim ucsObj As AcadUCS
    Dim origin(0 To 2) As Double
    Dim xAxisPnt(0 To 2) As Double
    Dim yAxisPnt(0 To 2) As Double
    ' Define the UCS points
    origin(0) = 4: origin(1) = 5: origin(2) = 3
    xAxisPnt(0) = 5: xAxisPnt(1) = 5: xAxisPnt(2) = 3
    yAxisPnt(0) = 4: yAxisPnt(1) = 6: yAxisPnt(2) = 3
    ' Add the UCS to the
    ' UserCoordinatesSystems collection
    Set ucsObj = ThisDrawing.UserCoordinateSystems. _
             Add(origin, xAxisPnt, yAxisPnt, "New_UCS")
    ' Display the UCS icon
    ThisDrawing.ActiveViewport.UCSIconAtOrigin = True
    ThisDrawing.ActiveViewport.UCSIconOn = True
    ' Make the new UCS the active UCS
    ThisDrawing.ActiveUCS = ucsObj
    MsgBox "The current UCS is : " & ThisDrawing.ActiveUCS.Name _
            & vbCrLf & " Pick a point in the drawing."
    ' Find the WCS and UCS coordinate of a point
    Dim WCSPnt As Variant
    Dim UCSPnt As Variant
    WCSPnt = ThisDrawing.Utility.GetPoint(, "Enter a point: ")
    UCSPnt = ThisDrawing.Utility.TranslateCoordinates _
             (WCSPnt, acWorld, acUCS, False)
    MsgBox "The WCS coordinates are: " & WCSPnt(0) & ", " _
             & WCSPnt(1) & ", " & WCSPnt(2) & vbCrLf & _
             "The UCS coordinates are: " & UCSPnt(0) & ", " _
             & UCSPnt(1) & ", " & UCSPnt(2)
End Sub


좌표 변환

사용자 좌표계 정의
3차원 공간에서 작업
3D 객체 작성
ActiveX 및 VBA 개발자 안내서 > 3차원 공간에서 작업 >
좌표 변환

TranslateCoordinates 메서드는 한 좌표계에서 다른 좌표계로 한 점 또는 변위를 변환합니다. OriginalPoint라고 하는 점 인수는 3D 점이나 3D 변위 벡터로 해석될 수 있습니다. 이 인수는 Boolean 인수인 Disp와 구별됩니다. Disp 인수가 TRUE로 설정되면 OriginalPoint 인수는 변위 벡터로 간주되고, 그 밖의 경우에는 점으로 간주됩니다. 2개의 추가 인수가 OriginalPoint가 나온 좌표계와 OriginalPoint가 변환될 좌표계를 결정합니다. 다음 AutoCAD 좌표계는 From과 To 인수에 지정할 수 있습니다.

WCS

전체 좌표계: 참조 좌표계. 나머지 좌표계는 WCS에 따라 정의되며 WCS는 절대로 변경되지 않습니다. WCS를 기준으로 측정한 값은 다른 좌표계의 변경 사항에 의해 변경되지 않습니다. ActiveX 메서드와 특성으로 전달된 모든 점은 달리 명시하지 않는 한 WCS로 표시됩니다.

UCS

사용자 좌표계(UCS): 작업 좌표계. 사용자는 도면 작업을 쉽게 하기 위해 UCS를 지정합니다. AutoLISP 루틴과 외부 함수에서 반환된 점을 포함하여 AutoCAD 명령으로 전달된 모든 점은 현재 UCS에 있는 점입니다(사용자가 명령 프롬프트에서 점 앞에 *를 붙이지 않는 경우). 응용프로그램에서 WCS, OCS 또는 DCS 좌표를 AutoCAD 명령으로 보내려면 먼저 TranslateCoordinates 메서드를 호출하여 좌표로 변환해야 합니다.

OCS

객체 좌표계: Polyline 및 LightweightPolyline 객체의 일부 메서드와 특성으로 지정된 점 값은 객체에 따라 이 좌표계로 표시됩니다. 보통, 이러한 점은 객체의 용도에 따라 WCS, 현재 UCS 또는 현재 DCS로 변환됩니다. 반대로, WCS, UCS 또는 DCS의 점들은 같은 특성을 통해 데이터베이스에 기록되기 전에 OCS로 변환되어야 합니다. 이 좌표계를 사용하는 메서드와 특성에 대해서는 AutoCAD ActiveX and VBA Reference를 참조하십시오.

좌표를 OCS로 변환하거나 OCS로부터 변환할 경우, TranslateCoordinates 함수의 마지막 인수에 OCS의 법선을 입력해야 합니다.

DCS

표시 좌표계: 객체가 표시되기 전에 변환되는 좌표계입니다. DCS의 원점은 AutoCAD 시스템 변수 TARGET에 저장된 점이고, Z 축은 뷰 방향입니다. 그러므로 뷰포트는 항상 DCS의 평면도입니다. 이러한 좌표는 특정 항목을 AutoCAD 사용자에게 표시할 위치를 결정하는 데 사용됩니다.

PSDCS

도면 공간 DCS: 이 좌표계는 현재 활성 모형 공간 뷰포트의 DCS로 또는 DCS로부터만 변환될 수 있습니다. 기본적으로는 2D 변환으로서, Disp 인수가 FALSE이면 X와 Y 좌표가 항상 축척되고 간격이 띄워집니다. Z 좌표는 축척되지만 변환되지는 않습니다. 그러므로 Z 좌표는 두 좌표계 사이의 축척 비율을 찾는 데 사용할 수 있습니다. PSDCS는 현재 모형 공간 뷰포트로만 변환될 수 있습니다. from 인수가 PSDCS와 같으면 to 인수는 DCS와 같아야 하며, 반대의 경우도 마찬가지입니다.

OCS 좌표를 WCS 좌표로 변환

이 예제에서는 모형 공간에 폴리선을 작성합니다. 폴리선의 첫 번째 정점은 OCS와 WCS 좌표로 표시됩니다. OCS에서 WCS로 변환하려면 OCS의 법선을 TranslateCoordinates 메서드의 마지막 인수에 넣어야 합니다.

Sub Ch8_TranslateCoordinates()
    ' Create a polyline in model space.
    Dim plineObj As AcadPolyline
    Dim points(0 To 14) As Double
    ' Define the 2D polyline points
    points(0) = 1: points(1) = 1: points(2) = 0
    points(3) = 1: points(4) = 2: points(5) = 0
    points(6) = 2: points(7) = 2: points(8) = 0
    points(9) = 3: points(10) = 2: points(11) = 0
    points(12) = 4: points(13) = 4: points(14) = 0
    ' Create a light weight Polyline object in model space
    Set plineObj = ThisDrawing.ModelSpace.AddPolyline(points)
    ' Find the X and Y coordinates of the
    ' first vertex of the polyline
    Dim firstVertex As Variant
    firstVertex = plineObj.Coordinate(0)
    ' Find the Z coordinate for the polyline
    ' using the elevation property
    firstVertex(2) = plineObj.Elevation
    ' Change the normal for the pline so that the
    ' difference between the coordinate systems
    ' is obvious.
    Dim plineNormal(0 To 2) As Double
    plineNormal(0) = 0#
    plineNormal(1) = 1#
    plineNormal(2) = 2#
    plineObj.Normal = plineNormal
    ' Translate the OCS coordinate into WCS
    Dim coordinateWCS As Variant
    coordinateWCS = ThisDrawing.Utility.TranslateCoordinates _
          (firstVertex, acOCS, acWorld, False, plineNormal)
    ' Display the coordinates of the point
    MsgBox "The first vertex has the following coordinates:" _
           & vbCrLf & "OCS: " & firstVertex(0) & ", " & _
           firstVertex(1) & ", " & firstVertex(2) & vbCrLf & _
           "WCS: " & coordinateWCS(0) & ", " & _
           coordinateWCS(1) & ", " & coordinateWCS(2)
End Sub


3D 객체 작성

좌표 변환
3차원 공간에서 작업
와이어프레임 작성
ActiveX 및 VBA 개발자 안내서 > 3차원 공간에서 작업 >
3D 객체 작성

폴리면 메쉬 작성. 쐐기 솔리드 작성. AutoCAD는 와이어프레임, 곡면 및 솔리드와 같은 3가지 3D 모델링 유형을 지원합니다. 각각의 유형에는 고유의 작성 및 편집 기술이 있습니다.

3D 객체 작성에 대한 자세한 정보는 사용자 안내서의 “3D 객체 작성”을 참고하십시오.

이 단원의 항목

  • 와이어프레임 작성
  • 메쉬 작성
  • 폴리면 메쉬 작성
  • 솔리드 작성


와이어프레임 작성

3D 객체 작성
3D 객체 작성
메쉬 작성
ActiveX 및 VBA 개발자 안내서 > 3차원 공간에서 작업 > 3D 객체 작성 >
와이어프레임 작성

AutoCAD를 사용하여 3D 공간의 임의 지점에 2D 평면 객체를 놓아 와이어프레임 모형을 작성할 수 있습니다. 다음의 몇 가지 방식을 사용하여 2D 객체를 3D 공간에 배치할 수 있습니다.

  • 3D 점을 입력하여 객체를 작성합니다. 점의 X, Y 및 Z 위치를 정의하는 좌표를 입력합니다.
  • UCS를 정의하여 객체를 그릴 기본 구성 평면(XY 평면)을 설정합니다.
  • 객체를 작성한 뒤 3D 공간에서 적절한 방향으로 이동시킵니다.

또한 폴리선처럼 3차원에 존재할 수 있는 몇 가지 와이어프레임 객체를 작성할 수도 있습니다. 3D 폴리선을 작성하려면 Add3DPoly 메서드를 사용하십시오.

와이어프레임 작성에 대한 자세한 정보는 사용자 안내서의 “와이어프레임 모형 작성”을 참고하십시오.


메쉬 작성

와이어프레임 작성
3D 객체 작성
폴리면 메쉬 작성
ActiveX 및 VBA 개발자 안내서 > 3차원 공간에서 작업 > 3D 객체 작성 >
메쉬 작성

직사각형 메쉬(PolygonMesh 객체)는 평면형 퍼셋을 사용하여 객체의 곡면을 표현합니다. 메쉬 밀도 또는 깎인 면의 수는 행과 열로 구성된 모눈과 유사한 M과 N 정점의 행렬식으로 정의됩니다. M과 N은 각각 주어진 정점의 열과 행 위치를 지정합니다. 메쉬는 2D와 3D에서 모두 작성할 수 있으나 주로 3D에서 사용됩니다.

직사각형 메쉬를 작성하려면 Add3DMesh 메서드를 사용하십시오. M 방향의 정점 수, N 방향의 정점 수 및 메쉬의 모든 정점에 대한 좌표가 들어 있는 variant 배열 등 3가지 값을 입력해야 합니다.

PolygonMesh가 작성되면 MClose와 NClose 특성을 사용하여 메쉬를 닫습니다.

메쉬 작성에 대한 자세한 정보는 사용자 안내서의 “곡면 작성”을 참고하십시오.

다각형 메쉬 작성하기

이 예제에서는 4×4 다각형 메쉬를 작성합니다. 그런 다음, 메쉬의 3차원 특징이 쉽게 보이도록 활성 뷰포트의 방향을 조정합니다.

Sub Ch8_Create3DMesh()
    Dim meshObj As AcadPolygonMesh
    Dim mSize, nSize, Count As Integer
    Dim points(0 To 47) As Double
    ' create the matrix of points
    points(0) = 0: points(1) = 0: points(2) = 0
    points(3) = 2: points(4) = 0: points(5) = 1
    points(6) = 4: points(7) = 0: points(8) = 0
    points(9) = 6: points(10) = 0: points(11) = 1
    points(12) = 0: points(13) = 2: points(14) = 0
    points(15) = 2: points(16) = 2: points(17) = 1
    points(18) = 4: points(19) = 2: points(20) = 0
    points(21) = 6: points(22) = 2: points(23) = 1
    points(24) = 0: points(25) = 4: points(26) = 0
    points(27) = 2: points(28) = 4: points(29) = 1
    points(30) = 4: points(31) = 4: points(32) = 0
    points(33) = 6: points(34) = 4: points(35) = 0
    points(36) = 0: points(37) = 6: points(38) = 0
    points(39) = 2: points(40) = 6: points(41) = 1
    points(42) = 4: points(43) = 6: points(44) = 0
    points(45) = 6: points(46) = 6: points(47) = 0
    mSize = 4: nSize = 4
    ' creates a 3Dmesh in model space
    Set meshObj = ThisDrawing.ModelSpace. _
                        Add3DMesh(mSize, nSize, points)
    ' Change the viewing direction of the viewport
    ' to better see the cylinder
    Dim NewDirection(0 To 2) As Double
    NewDirection(0) = -1
    NewDirection(1) = -1
    NewDirection(2) = 1
    ThisDrawing.ActiveViewport.direction = NewDirection
    ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport
    ZoomAll
End Sub


폴리면 메쉬 작성

메쉬 작성
3D 객체 작성
솔리드 작성
ActiveX 및 VBA 개발자 안내서 > 3차원 공간에서 작업 > 3D 객체 작성 >
폴리면 메쉬 작성

AddPolyfaceMesh 메서드를 사용하여 각 면의 정점이 여러 개인 폴리면 메쉬를 작성할 수 있습니다.

폴리면 메쉬를 작성하는 것은 직사각형 메쉬를 작성하는 것과 유사합니다. 폴리면 메쉬를 작성하려면 먼저 모든 정점의 좌표를 지정한 다음, 해당 면의 모든 정점에 대한 정점 수를 입력하여 각 면을 정의하십시오. 폴리면 메쉬를 작성할 때, 특정 모서리를 보이지 않도록 설정하거나 도면층에 지정하거나 모서리에 색상을 지정할 수 있습니다.

모서리를 보이지 않게 하려면 해당 모서리의 정점 수를 음수로 입력하십시오. 폴리면 메쉬 작성에 대한 자세한 정보는 ActiveX and VBA Reference의 AddPolyfaceMesh 메서드를 참고하십시오.

폴리면 메쉬 작성

이 예제에서는 모형 공간에 Polyface Mesh 객체를 작성합니다. 메쉬의 3차원 특징을 쉽게 표시할 수 있도록 활성 뷰포트의 관측 방향이 업데이트됩니다.

Sub Ch8_CreatePolyfaceMesh()
    'Define the mesh vertices
    Dim vertex(0 To 17) As Double
    vertex(0) = 4: vertex(1) = 7: vertex(2) = 0
    vertex(3) = 5: vertex(4) = 7: vertex(5) = 0
    vertex(6) = 6: vertex(7) = 7: vertex(8) = 0
    vertex(9) = 4: vertex(10) = 6: vertex(11) = 0
    vertex(12) = 5: vertex(13) = 6: vertex(14) = 0
    vertex(15) = 6: vertex(16) = 6: vertex(17) = 1
    ' Define the face list
    Dim FaceList(0 To 7) As Integer
    FaceList(0) = 1
    FaceList(1) = 2
    FaceList(2) = 5
    FaceList(3) = 4
    FaceList(4) = 2
    FaceList(5) = 3
    FaceList(6) = 6
    FaceList(7) = 5
    ' Create the polyface mesh
    Dim polyfaceMeshObj As AcadPolyfaceMesh
    Set polyfaceMeshObj = ThisDrawing.ModelSpace.AddPolyfaceMesh _
                                  (vertex, FaceList)
    ' Change the viewing direction of the viewport to
    ' better see the polyface mesh
    Dim NewDirection(0 To 2) As Double
    NewDirection(0) = -1
    NewDirection(1) = -1
    NewDirection(2) = 1
    ThisDrawing.ActiveViewport.direction = NewDirection
    ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport
    ZoomAll
End Sub


솔리드 작성

폴리면 메쉬 작성
3D 객체 작성
3D에서 편집
ActiveX 및 VBA 개발자 안내서 > 3차원 공간에서 작업 > 3D 객체 작성 >
솔리드 작성

솔리드 객체(3DSolid 객체)는 객체의 전체 체적을 표시합니다. 솔리드는 정보면에서 완성된 유형이며 3D 모델링 유형 중 가장 명료합니다. 복잡한 솔리드 쉐이프도 와이어프레임과 메쉬보다 구성 및 편집 과정이 더 쉽습니다.

상자, 원추, 원통, 구, 원환, 쐐기 등의 기본 솔리드 쉐이프 중 한 쉐이프로부터 솔리드를 작성하거나, 경로를 따라 2D 객체를 돌출시키거나 축 주위로 2D 객체를 회전하여 솔리드를 작성할 수 있습니다. 다음 메서드 중 하나를 사용하여 솔리드를 작성하십시오.

AddBox, AddCone, AddCylinder, AddEllipticalCone, AddEllipticalCylinder, AddExtrudedSolid, AddExtrudedSolidAlongPath, AddRevolvedSolid, AddSolid, AddSphere, AddTorus 또는 AddWedge.

메쉬와 마찬가지로 솔리드도 숨기기, 음영처리 또는 렌더링될 때까지는 와이어프레임으로 표시됩니다. 또한 솔리드를 질량 특성(체적, 관성 모멘트, 무게 중심 등)에 따라 분석할 수도 있습니다. 솔리드를 분석하려면 다음 특성을 사용하십시오: MomentOfInertia, PrincipalDirections, PrincipalMoments, ProductOfInertia, RadiiOfGyration 및 Volume.

ContourlinesPerSurface 특성은 와이어프레임의 곡선 부분을 시각화하기 위해 사용되는 곡선 다듬기 수를 조정합니다. RenderSmoothness 특성은 음영처리 및 은선 객체의 부드러운 정도를 조정합니다.

솔리드 작성에 대한 자세한 정보는 사용자 안내서의 “3D 객체 작성”을 참고하십시오.

쐐기 솔리드 작성

이 예제에서는 모형 공간에 쐐기형 솔리드를 작성합니다. 쐐기의 3차원 특징을 쉽게 표시하기 위해 활성 뷰포트의 관측 방향이 업데이트됩니다.

Sub Ch8_CreateWedge()
    Dim wedgeObj As Acad3DSolid
    Dim center(0 To 2) As Double
    Dim length As Double
    Dim width As Double
    Dim height As Double
    ' Define the wedge
    center(0) = 5#: center(1) = 5#: center(2) = 0
    length = 10#: width = 15#: height = 20#
    ' Create the wedge in model space
    Set wedgeObj = ThisDrawing.ModelSpace. _
                   AddWedge(center, length, width, height)
    ' Change the viewing direction of the viewport
    Dim NewDirection(0 To 2) As Double
    NewDirection(0) = -1
    NewDirection(1) = -1
    NewDirection(2) = 1
    ThisDrawing.ActiveViewport.direction = NewDirection
    ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport
    ZoomAll
End Sub


3D에서 편집

솔리드 작성
3차원 공간에서 작업
3D에서 회전
ActiveX 및 VBA 개발자 안내서 > 3차원 공간에서 작업 >
3D에서 편집

이 절에서는 회전하기, 배열하기, 대칭시키기와 같은 3D 객체를 편집하는 방법에 대해 설명합니다.

이 단원의 항목

  • 3D에서 회전
  • 3D 배열
  • 평면을 따라 객체 대칭


3D에서 회전

3D에서 편집
3D에서 편집
3D 배열
ActiveX 및 VBA 개발자 안내서 > 3차원 공간에서 작업 > 3D에서 편집 >
3D에서 회전

Rotate 메서드를 사용하면 지정된 점을 기준으로 2D 객체를 회전할 수 있습니다. 회전 방향은 WCS에 의해 결정됩니다. Rotate3D 메서드는 지정된 축을 기준으로 3D 객체를 회전시킵니다. Rotate3D 메서드는 회전축을 정의하는 두 점의 WCS 좌표, 라디안으로 표시된 회전 각도 등 3가지 값을 입력해야 합니다.

3D 객체를 회전시키려면 Rotate 또는 Rotate3D 메서드를 사용하십시오.

3D에서의 회전에 대한 자세한 정보는 사용자 안내서의 “객체 회전”을 참고하십시오.

3D 상자를 작성하여 축을 중심으로 회전

이 예제에서는 3D 상자를 작성합니다. 그런 다음, 회전할 축을 정의하고 마지막으로 상자를 축 주위로 30도 회전시킵니다.

Sub Ch8_Rotate_3DBox()
    Dim boxObj As Acad3DSolid
    Dim length As Double
    Dim width As Double
    Dim height As Double
    Dim center(0 To 2) As Double
    ' Define the box
    center(0) = 5: center(1) = 5: center(2) = 0
    length = 5
    width = 7
    height = 10
    ' Create the box object in model space
    Set boxObj = ThisDrawing.ModelSpace. _
                AddBox(center, length, width, height)
    ' Define the rotation axis with two points
    Dim rotatePt1(0 To 2) As Double
    Dim rotatePt2(0 To 2) As Double
    Dim rotateAngle As Double
    rotatePt1(0) = -3: rotatePt1(1) = 4: rotatePt1(2) = 0
    rotatePt2(0) = -3: rotatePt2(1) = -4: rotatePt2(2) = 0
    rotateAngle = 30
    rotateAngle = rotateAngle * 3.141592 / 180#
    ' Rotate the box
    boxObj.Rotate3D rotatePt1, rotatePt2, rotateAngle
    ZoomAll
End Sub


3D 배열

3D에서 회전
3D에서 편집
평면을 따라 객체 대칭
ActiveX 및 VBA 개발자 안내서 > 3차원 공간에서 작업 > 3D에서 편집 >
3D 배열

ArrayRectangular 메서드를 사용하면 3D에서 직사각형 배열을 작성할 수 있습니다. 열(X 방향)과 행(Y 방향)의 수를 지정하는 것 이외에도 레벨(Z 방향) 수도 지정하게 됩니다.

3D에서 객체의 배열 사용에 대한 자세한 정보는 사용자 안내서의 “객체 배열 작성”을 참고하십시오.

3D 직사각형 배열 작성

이 예제에서는 원을 작성한 다음, 그 원을 사용하여 원에 대한 4행, 4열 및 3단계의 직사각형 배열을 작성합니다.

Sub Ch8_CreateRectangularArray()
    ' Create the circle
    Dim circleObj As AcadCircle
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 2: center(1) = 2: center(2) = 0
    radius = 0.5
    Set circleObj = ThisDrawing.ModelSpace. _
                              AddCircle(center, radius)
    ' Define the rectangular array
    Dim numberOfRows As Long
    Dim numberOfColumns As Long
    Dim numberOfLevels As Long
    Dim distanceBwtnRows As Double
    Dim distanceBwtnColumns As Double
    Dim distanceBwtnLevels As Double
    numberOfRows = 4
    numberOfColumns = 4
    numberOfLevels = 3
    distanceBwtnRows = 1
    distanceBwtnColumns = 1
    distanceBwtnLevels = 4
    ' Create the array of objects
    Dim retObj As Variant
    retObj = circleObj.ArrayRectangular _
        (numberOfRows, numberOfColumns, _
         numberOfLevels, distanceBwtnRows, _
         distanceBwtnColumns, distanceBwtnLevels)
    ZoomAll
End Sub


평면을 따라 객체 대칭

3D 배열
3D에서 편집
3D 솔리드 편집
ActiveX 및 VBA 개발자 안내서 > 3차원 공간에서 작업 > 3D에서 편집 >
평면을 따라 객체 대칭

Mirror3D 메서드를 사용하면 세 점으로 지정된 대칭 평면을 기준으로 객체를 대칭시킬 수 있습니다.

3D에서의 객체 대칭에 대한 자세한 정보는 사용자 안내서의 “객체 대칭”을 참고하십시오.

3D 대칭

이 예제에서는 모형 공간에 상자를 작성합니다. 그런 다음, 상자를 평면 주위로 대칭화하고 대칭된 상자에 빨간색을 지정합니다.

Sub Ch8_MirrorABox3D()
    ' Create the box object
    Dim boxObj As Acad3DSolid
    Dim length As Double
    Dim width As Double
    Dim height As Double
    Dim center(0 To 2) As Double
    center(0) = 5#: center(1) = 5#: center(2) = 0
    length = 5#: width = 7: height = 10#
    ' Create the box (3DSolid) object in model space
    Set boxObj = ThisDrawing.ModelSpace. _
                AddBox(center, length, width, height)
    ' Define the mirroring plane with three points
    Dim mirrorPt1(0 To 2) As Double
    Dim mirrorPt2(0 To 2) As Double
    Dim mirrorPt3(0 To 2) As Double
    mirrorPt1(0) = 1.25: mirrorPt1(1) = 0: mirrorPt1(2) = 0
    mirrorPt2(0) = 1.25: mirrorPt2(1) = 2: mirrorPt2(2) = 0
    mirrorPt3(0) = 1.25: mirrorPt3(1) = 2: mirrorPt3(2) = 2
    ' Mirror the box
    Dim mirrorBoxObj As Acad3DSolid
    Set mirrorBoxObj = boxObj.Mirror3D _
                (mirrorPt1, mirrorPt2, mirrorPt3)
    mirrorBoxObj.Color = acRed
    ZoomAll
End Sub


3D 솔리드 편집

평면을 따라 객체 대칭
3차원 공간에서 작업
레이아웃 및 플롯 정의하기
ActiveX 및 VBA 개발자 안내서 > 3차원 공간에서 작업 >
3D 솔리드 편집

솔리드가 작성되고 나면 솔리드를 결합하여 더 복잡한 쉐이프를 만들 수 있습니다. 솔리드를 결합하거나 서로 빼거나 또는 솔리드의 공통 체적(중첩 부분)을 찾아 볼 수 있습니다. 이러한 조합을 수행하려면 Boolean 또는 CheckInterference 메서드를 사용하십시오.

솔리드의 2D 횡단면을 구하거나 솔리드를 두 부분으로 자를 수 있습니다. 솔리드의 횡단면을 찾으려면 SectionSolid 메서드를 사용하고, 솔리드를 두 부분으로 분할하려면 SliceSolid 메서드를 사용하십시오.

두 솔리드 사이의 간섭 찾아 보기

이 예제에서는 모형 공간에 상자와 원통을 작성합니다. 그런 다음, 두 솔리드간의 간섭을 찾아서 간섭으로부터 솔리드를 새로 작성합니다. 쉽게 알아볼 수 있도록 상자에 흰색을 지정하고, 원통에는 하늘색, 간섭 솔리드에는 빨간색을 지정합니다.

Sub Ch8_FindInterferenceBetweenSolids()
    ' Define the box
    Dim boxObj As Acad3DSolid
    Dim length As Double
    Dim width As Double
    Dim height As Double
    Dim center(0 To 2) As Double
    center(0) = 5: center(1) = 5: center(2) = 0
    length = 5
    width = 7
    height = 10
    ' Create the box object in model space
    ' and color it white
    Set boxObj = ThisDrawing.ModelSpace. _
                AddBox(center, length, width, height)
    boxObj.Color = acWhite
    ' Define the cylinder
    Dim cylinderObj As Acad3DSolid
    Dim cylinderRadius As Double
    Dim cylinderHeight As Double
    center(0) = 0: center(1) = 0: center(2) = 0
    cylinderRadius = 5
    cylinderHeight = 20
    ' Create the Cylinder and
    ' color it cyan
    Set cylinderObj = ThisDrawing.ModelSpace.AddCylinder _
                   (center, cylinderRadius, cylinderHeight)
    cylinderObj.Color = acCyan
    ' Find the interference between the two solids
    ' and create a new solid from it. Color the
    ' new solid red.
    Dim solidObj As Acad3DSolid
    Set solidObj = boxObj.CheckInterference(cylinderObj, True)
    solidObj.Color = acRed
    ZoomAll
End Sub
솔리드를 두 개로 자르기
이 예제에서는 모형 공간에 상자를 작성합니다. 그런 다음, 세 개의 점으로 정의된 평면을 기준으로 상자를 분할합니다. 슬라이스는 3DSolid로서 반환됩니다.
Sub Ch8_SliceABox()
    ' Create the box object
    Dim boxObj As Acad3DSolid
    Dim length As Double
    Dim width As Double
    Dim height As Double
    Dim center(0 To 2) As Double
    center(0) = 5#: center(1) = 5#: center(2) = 0
    length = 5#: width = 7: height = 10#
    ' Create the box (3DSolid) object in model space
    Set boxObj = ThisDrawing.ModelSpace. _
                AddBox(center, length, width, height)
    boxObj.Color = acWhite
    ' Define the section plane with three points
    Dim slicePt1(0 To 2) As Double
    Dim slicePt2(0 To 2) As Double
    Dim slicePt3(0 To 2) As Double
    slicePt1(0) = 1.5: slicePt1(1) = 7.5: slicePt1(2) = 0
    slicePt2(0) = 1.5: slicePt2(1) = 7.5: slicePt2(2) = 10
    slicePt3(0) = 8.5: slicePt3(1) = 2.5: slicePt3(2) = 10
    ' slice the box and color the new solid red
    Dim sliceObj As Acad3DSolid
    Set sliceObj = boxObj.SliceSolid _
                    (slicePt1, slicePt2, slicePt3, True)
    sliceObj.Color = acRed
    ZoomAll
End Sub


레이아웃 및 플롯 정의하기

3D 솔리드 편집
모형 공간과 도면 공간
ActiveX 및 VBA 개발자 안내서 >
레이아웃 및 플롯 정의하기

AutoCAD로 도면을 작성한 후에는 대개 용지에 도면을 플롯합니다. 플롯된 도면에는 도면의 단일 뷰가 포함되거나 더 복잡하게 배열된 뷰가 포함됩니다. 도면 공간에서, 도면의 여러 뷰를 표시하는 부동 뷰포트라고 하는 윈도우를 작성할 수 있습니다. 필요에 따라 하나 이상의 뷰포트를 플롯하거나 또는 플롯 대상과 이미지를 용지에 맞추는 방법을 결정하는 옵션을 설정할 수 있습니다.

이 단원의 항목

  • 모형 공간과 도면 공간
  • 레이아웃
  • 뷰포트
  • 도면 플롯


모형 공간과 도면 공간

레이아웃 및 플롯 정의하기
레이아웃 및 플롯 정의하기
레이아웃
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 >
모형 공간과 도면 공간

모형 공간은 모형에 대한 형상을 작성하는 도면 환경입니다. 일반적으로, 모형 공간에서 도면 작성을 시작할 때 도면의 한계를 지정하여 도면 환경의 범위를 결정하고 도면을 실제 단위로 그리게 됩니다.

도면 공간은 모형이 플롯될 용지 표현을 나타냅니다. 도면 공간에서는 도면의 여러 가지 다른 뷰를 배치하고, 뷰마다 독립적으로 축척하고, 플롯할 때 도면의 다른 뷰들을 정렬할 수 있습니다. 도면에 대한 여러 가지 다른 도면 공간 표현이 있을 수 있습니다.


레이아웃

모형 공간과 도면 공간
레이아웃 및 플롯 정의하기
레이아웃 및 블록
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 >
레이아웃

도면의 모든 형상은 레이아웃에 들어 있습니다. 모형 공간 형상은 Model이라고 하는 단일 레이아웃에 포함되어 있습니다. 모형 공간 레이아웃의 이름을 바꿀 수 없으며, 다른 모형 공간 레이아웃을 작성할 수도 없습니다. 각 도면에 모형 공간 레이아웃만 존재합니다.

도면 공간 형상도 레이아웃에 들어 있습니다. 도면에는 각각 인쇄할 여러 구성을 나타내는 서로 다른 도면 공간 레이아웃이 있을 수 있습니다. 도면 공간 레이아웃의 이름은 바꿀 수 있습니다.

ActiveX® Automation에서 ModelSpace 컬렉션은 모형 공간 배치의 모든 형상을 포함합니다. 도면에 둘 이상의 도면 공간 레이아웃이 있을 수 있으므로, PaperSpace 컬렉션은 마지막 활성 도면 공간 레이아웃을 가리킵니다.

도면 공간 배치 관련 작업에 대한 자세한 정보는 사용자 안내서의 “해치, 채우기 및 객체 가리기”를 참고하십시오.

이 단원의 항목

  • 레이아웃 및 블록
  • 플롯 구성
  • 레이아웃 설정값


레이아웃 및 블록

레이아웃
레이아웃
플롯 구성
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 레이아웃 >
레이아웃 및 블록

레이아웃의 내용은 Layout 객체 및 Block 객체의 다른 ActiveX 객체 2개로 배포됩니다. Layout 객체는 AutoCAD 사용자 인터페이스에 나타날 때 레이아웃의 플롯 설정과 가시적 특성을 포함합니다. Block 객체 안에는 레이아웃에 대한 형상이 들어 있습니다.

각 Layout 객체는 하나의 Block 객체하고만 연관됩니다. 주어진 레이아웃과 연관된 Block 객체에 접근하려면 Block 특성을 사용하십시오. 반대로, 각 Block 객체는 하나의 Layout 객체하고만 연관됩니다. 주어진 Block과 연관된 Layout 객체에 접근하려면 해당 블록의 Layout 특성을 사용하십시오.


플롯 구성

레이아웃 및 블록
레이아웃
레이아웃 설정값
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 레이아웃 >
플롯 구성

PlotConfiguration 객체는 Layout 객체와 유사하며, 둘 다 동일한 플롯 정보가 포함되어 있습니다. Layout 객체에는 플롯할 형상이 포함된 Block 객체와 연관되어 있다는 점이 다릅니다. PlotConfiguration 객체는 특정 Block 객체와 연관되지 않습니다. 플롯 구성은 단순히 임의의 형상과 함께 사용할 수 있는 명명된 플롯 설정값의 집합입니다.


레이아웃 설정값

플롯 구성
레이아웃
용지 크기 및 단위
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 레이아웃 >
레이아웃 설정값

레이아웃 설정값은 마지막으로 플롯된 출력을 조정합니다. 이들 설정값은 용지 크기, 플롯 축척, 플롯 영역, 플롯 원점 및 플롯 장치 이름에 영향을 줍니다. 레이아웃 설정값의 사용 방법을 이해하면 레이아웃을 예상대로 플롯할 수 있습니다. 레이아웃에 대한 모든 설정값은 Layout 객체 특성과 메서드에서 변경할 수 있습니다.

이 단원의 항목

  • 용지 크기 및 단위
  • 플롯 원점 조정
  • 플롯 영역 설정
  • 플롯 축척 설정
  • 선가중치 축척 설정
  • 플롯 장치 설정


용지 크기 및 단위

레이아웃 설정값
레이아웃 설정값
플롯 원점 조정
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 레이아웃 > 레이아웃 설정값 >
용지 크기 및 단위

용지 크기는 시스템에 맞게 구성된 플로터에 의해 결정됩니다. 각 플로터마다에는 각각 사용 가능한 용지 크기의 표준 리스트가 있습니다. CanonicalMediaName 특성을 사용하면 레이아웃에 대한 용지 크기를 변경할 수 있습니다.

PaperUnits 특성을 사용하여 레이아웃 단위를 지정할 수도 있습니다. 이 특성은 acInches, acMillimeters 또는 acPixels 중 하나를 취합니다. 플로터가 래스터 출력용으로 구성된 경우 출력 크기를 픽셀 단위로 지정해야 합니다.


플롯 원점 조정

용지 크기 및 단위
레이아웃 설정값
플롯 영역 설정
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 레이아웃 > 레이아웃 설정값 >
플롯 원점 조정

플롯 원점은 지정된 플롯 영역의 왼쪽 아래 구석에 있으며 PlotOrigin 특성에 의해 조정됩니다. 일반적으로, 플롯 원점은 (0, 0)으로 설정됩니다. 그러나 CenterPlot 특성을 TRUE로 설정하면 플롯의 중심을 용지에 맞출 수 있습니다. 플롯을 중심에 맞추면 플롯 원점이 변경됩니다.


플롯 영역 설정

플롯 원점 조정
레이아웃 설정값
플롯 축척 설정
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 레이아웃 > 레이아웃 설정값 >
플롯 영역 설정

레이아웃을 플롯할 준비가 되면 플롯 영역을 지정하여 플롯에 포함할 부분을 결정할 수 있습니다. 플롯 영역을 지정하려면 PlotType 특성을 사용하십시오. 이 특성에서는 다음 값 중 하나를 입력해야 합니다.

acDisplay

현재 모형 공간 표시에 있는 모든 항목을 인쇄합니다. 도면 공간 레이아웃에서 플롯할 때는 이 옵션을 사용할 수 없습니다.

acExtents

현재 선택된 공간의 경계 내에 있는 모든 항목을 인쇄합니다.

acLimits

현재 공간의 범위 내에 있는 모든 항목을 인쇄합니다.

acView

ViewToPlot 특성에 의해 명명된 뷰를 인쇄합니다.

acWindow

SetWindowToPlot 메서드로 지정된 윈도우에 있는 모든 항목을 인쇄합니다.

acLayout

지정된 용지 크기의 여백 내에 있는 모든 것을 인쇄합니다. 모형 공간에서 인쇄할 때에는 이 옵션을 사용할 수 없습니다.

새 도면 공간 레이아웃을 작성할 때 기본 옵션은 acLayout입니다.


플롯 축척 설정

플롯 영역 설정
레이아웃 설정값
선가중치 축척 설정
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 레이아웃 > 레이아웃 설정값 >
플롯 축척 설정

일반적으로 객체는 실제 크기로 그려집니다. 도면을 플롯할 때 정확한 축척을 지정하거나 이미지를 용지에 맞출 수 있습니다. 축척을 지정하려면 표준 또는 사용자화 플롯 축척을 입력하십시오.

표준 축척을 입력하려면 먼저 UseStandardScale 특성을 TRUE로 설정하십시오. 그런 다음, StandardScale 특성을 사용하여 원하는 축척을 입력할 수 있습니다.

사용자화 축척을 입력하려면, 먼저 UseStandardScale 특성을 FALSE로 설정하십시오. 그런 다음, SetCustomScale 메서드를 사용하여 사용자 축척을 입력할 수 있습니다.

초안 뷰를 검토할 때, 언제나 정밀한 축척이 중요한 것은 아닙니다. StandardScale 특성의 acScaleToFit 값을 사용하여 용지에 맞는 가장 큰 크기로 레이아웃을 플롯할 수 있습니다.


선가중치 축척 설정

플롯 축척 설정
레이아웃 설정값
플롯 장치 설정
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 레이아웃 > 레이아웃 설정값 >
선가중치 축척 설정

선가중치는 레이아웃에서 플롯 축척과 비례하여 축척될 수 있습니다. 보통, 선가중치는 플롯된 객체의 선 폭을 지정하며 플롯 축척과 관계없이 선 폭 크기에 따라 플롯됩니다. 대개의 경우 레이아웃을 플롯할 때는 1:1의 기본 플롯 축척이 사용됩니다. 그러나 예를 들어, A 크기의 용지에 맞게 축척한 E 크기 레이아웃를 플롯할 경우에는, 선가중치가 새 플롯 축척에 비례하여 축척되도록 지정할 수 있습니다.

선가중치를 축척하려면 ScaleLineweights 특성을 TRUE로 설정하십시오. 선가중치가 축척되지 않도록 하려면 이 특성을 FALSE로 설정하십시오.


플롯 장치 설정

선가중치 축척 설정
레이아웃 설정값
뷰포트
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 레이아웃 > 레이아웃 설정값 >
플롯 장치 설정

플롯 장치 이름이 ConfigName 특성에 지정됩니다. 이 이름을 시스템에 적합한 장치 이름으로 설정할 수 있습니다. 이 특성을 설정하지 않으면 플롯이 시스템의 기본 장치로 전송됩니다.


뷰포트

플롯 장치 설정
레이아웃 및 플롯 정의하기
부동 뷰포트
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 >
뷰포트

모형 공간에서 작업할 때는 타일식 뷰포트(ActiveX 자동화에서는 Viewport 객체라고 함)에 형상이 그려집니다. 뷰포트는 한번에 하나 또는 여러 개를 표시할 수 있습니다. 여러 개의 타일식 뷰포트가 표시된 경우, 한 뷰포트에서 편집한 결과는 나머지 뷰포트에도 영향을 미칩니다. 그러나 뷰포트마다 배율, 관측점, 모눈 및 스냅 설정값을 따로 설정할 수 있습니다.

도면 공간에서는 모형에 대한 여러 개의 뷰를 포함하는 부동 도면 공간 뷰포트(ActiveX 자동화에서는 PViewport 객체라고 함)에서 작업하게 됩니다. 부동 뷰포트는 적합한 레이아웃을 작성하기 위해 이동, 크기 조정 및 모양을 지정을 할 수 있는 객체로 간주됩니다. 모형 자체에는 영향을 주지 않으면서 제목 블록이나 주석과 같은 객체를 도면 공간 뷰에 직접 그릴 수도 있습니다.

뷰포트에 대한 자세한 정보는

사용자 안내서의 “모형 공간 뷰포트 설정” 및 “모형 공간에서 다중 뷰 표시”를 참고하십시오.

이 단원의 항목

  • 부동 뷰포트
  • 도면 공간 레이아웃으로 전환하기
  • 모형 공간 레이아웃으로 전환
  • 도면 공간 뷰포트 작성
  • 뷰포트 뷰 및 내용 변경
  • 도면 공간을 기준으로 뷰 축척
  • 도면 공간에서 선종류 패턴 축척
  • 음영처리된 뷰포트 사용


부동 뷰포트

뷰포트
뷰포트
도면 공간 레이아웃으로 전환하기
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 뷰포트 >
부동 뷰포트

도면 공간에서는 모형을 편집할 수 없습니다. PViewport 객체의 모형에 접근하려면 ActiveSpace 특성을 사용하여 도면 공간에서 모형 공간으로 전환하십시오. 결과적으로 전체적인 레이아웃을 보면서 모형에 대해 작업할 수 있습니다. PViewport 객체에서의 편집 및 뷰 변경 기능은 Viewport 객체에서와 거의 동일합니다. 그러나 개별 뷰에 대한 조정 기능은 더 많습니다. 예를 들어 다른 뷰포트에 영향을 미치지 않고 일부 뷰포트의 도면층을 동결하거나 끌 수 있으며 전체 뷰포트 화면표시를 켜거나 끌 수 있습니다. 또한, 뷰포트 사이에 뷰를 정렬할 수 있고, 전체적인 레이아웃에 따라 뷰를 축척할 수도 있습니다.

다음 그림은 모형의 서로 다른 뷰를 도면 공간에 표시하는 방법을 보여 줍니다. 각 도면 공간 이미지는 뷰가 여러 개인 PViewport 객체를 나타냅니다. 한 뷰에서는 치수 기입 도면층이 동결되어 있습니다. 도면 공간에서 그려진 제목 블록, 경계, 주석은 모형 공간 뷰에 나타나지 않습니다. 뷰포트 경계를 포함하는 도면층도 꺼져 있습니다.

Viewport 객체에서 작업할 때는 ActiveSpace 특성을 항상 acModelSpace로 설정해야 합니다. PViewport 객체에서 작업할 때에는 필요에 따라 도면 공간과 모형 공간 사이를 전환할 수 있도록 ActiveSpace 특성을 acModelSpace 또는 acPaperSpace로 설정할 수 있습니다.

PViewport 객체, Viewport 객체 및 ActiveSpace 특성 설정값
뷰포트의 종류 | 상태 | 용도
PViewport | ActiveSpace = acPaperspace | 부동 뷰포트를 작성하고 제목 블록 경계와 주석을 추가하여 레이아웃을 배치합니다. 편집해도 모형에는 영향을 미치지 않습니다.
PViewport | ActiveSpace = acModelspace | 부동 뷰포트 안에서 모형을 편집하거나 뷰를 변경하는 작업을 합니다. 개별 뷰포트의 도면층을 끄거나 동결할 수 있습니다.
뷰포트 | ActiveSpace = acModelspace | 모형에 대한 여러 가지 뷰를 편집할 수 있도록 화면을 타일식 뷰포트로 분할합니다.

AutoCAD® ActiveX Automation에서는 ActiveSpace 특성을 사용하여 TILEMODE 시스템 변수를 조정합니다. ThisDrawing.ActiveSpace = acModelSpace 설정은 TILEMODE = on 설정과 같으며, ThisDrawing.ActiveSpace = acPaperSpace 설정은 TILEMODE = off 설정과 같습니다.

마찬가지로 MSpace 특성도 AutoCAD의 MSPACE 및 PSPACE 명령과 같습니다. ThisDrawing.MSpace = TRUE 설정은 모형 공간으로 전환하는 MSPACE 명령을 사용하는 것과 같습니다. ThisDrawing.MSpace = TRUE 설정은 도면 공간으로 전환하는 PSPACE 명령을 사용하는 것과 같습니다.

또한 MSpace 특성을 TRUE로 설정하기 전에 Display 메서드를 사용해야 합니다. Display 메서드는 모형 공간으로 전환하기 전에 설정되야 하는 특정 그래픽 설정값을 초기화합니다. AutoCAD에서 이것은 “후면에서” 이루어집니다.그러나, ActiveX Automation 인터페이스에서 초기화할 때 프로그래머는 주의해야 합니다.

주MSpace 특성을 TRUE로 설정하려면 최소한 하나의 PViewport 객체에 Display 메서드를 사용하여 화면표시를 켜야 합니다. 화면표시 켜기가 실패하면 MSpace 특성을 설정하려고 시도할 때 오류가 리턴됩니다.


도면 공간 레이아웃으로 전환하기

부동 뷰포트
뷰포트
모형 공간 레이아웃으로 전환
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 뷰포트 >
도면 공간 레이아웃으로 전환하기

모형 공간에서 마지막 활성 도면 레이아웃으로 전환할 수 있습니다.

마지막 활성 도면 공간 레이아웃으로 전환하기

  1. 다음과 같이 ActiveSpace 특성을 acPaperSpace로 설정합니다.
    ThisDrawing.ActiveSpace = acPaperSpace
  2. 다음과 같이 MSpace 특성을 FALSE로 전환합니다.
ThisDrawing.MSpace = FALSE

도면 공간에서는 도면 공간 사용자 좌표계(UCS) 아이콘이 그래픽 영역의 왼쪽 하단 구석에 표시됩니다. 십자선은 도면 공간 레이아웃 영역(뷰포트의 뷰가 아니라)이 편집될 수 있다는 것을 나타냅니다.


모형 공간 레이아웃으로 전환

도면 공간 레이아웃으로 전환하기
뷰포트
도면 공간 뷰포트 작성
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 뷰포트 >
모형 공간 레이아웃으로 전환

도면 공간에서 모형 공간 부동 뷰포트나 모형 공간 타일식 뷰포트로 전환할 수 있습니다.

부동 뷰포트로 전환

  1. Display 메서드를 사용하여 다음 그래픽 설정값을 초기화하십시오.
    ThisDrawing.ActivePViewport.Display TRUE
  2. 다음과 같이 MSpace 특성을 TRUE로 전환하십시오.
ThisDrawing.MSpace = TRUE

그 결과 모형 공간의 부동 뷰포트로 이동됩니다.

주모형 공간으로 전환하기 전에 부동 뷰포트를 작성해야 합니다.

타일식 뷰포트로 전환

타일식 뷰포트로 전환하려면 추가로 다음 단계를 수행하십시오.

  • 다음과 같이 ActiveSpace 특성을 acModelSpace로 설정합니다.
ThisDrawing.ActiveSpace = acModelSpace


도면 공간 뷰포트 작성

모형 공간 레이아웃으로 전환
뷰포트
뷰포트 뷰 및 내용 변경
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 뷰포트 >
도면 공간 뷰포트 작성

도면 공간 뷰포트는 AddPViewport 메서드를 사용하여 작성됩니다. 이 메서드에는 새로운 뷰포트의 중심점, 폭과 높이가 필요합니다. 뷰포트를 작성하기 전에 ActiveSpace 특성을 사용하여 도면 공간을 현재 공간으로 설정하십시오(일반적으로 TILEMODE를 0으로 설정하여 수행).

PViewport 객체가 작성되면 관측 방향(Direction 특성), 투시도의 렌즈 길이(LensLength 특성) 및 모눈 표시(GridOn 특성)와 같은 뷰 자체의 특성을 설정할 수 있습니다. 또한 도면층(Layer 특성), 선종류(Linetype 특성) 및 선종류 축척(LinetypeScale 특성)과 같은 뷰포트 자체의 특성을 조정할 수도 있습니다.

부동 뷰포트 작성 및 작동 가능하게 하기

이 예제에서는 AutoCAD를 도면 공간으로 전환하여 부동 뷰포트를 작성하고, 뷰를 설정하고 뷰포트를 작동 가능하게 합니다.

Sub Ch9_SwitchToPaperSpace()
   ' Set the active space to paper space
    ThisDrawing.ActiveSpace = acPaperSpace
   ' Create the paperspace viewport
    Dim newVport As AcadPViewport
    Dim center(0 To 2) As Double
    center(0) = 3.25
    center(1) = 3
    center(2) = 0
    Set newVport = ThisDrawing.PaperSpace. _
                              AddPViewport(center, 6, 5)
   ' Change the view direction for the viewport
    Dim viewDir(0 To 2) As Double
    viewDir(0) = 1
    viewDir(1) = 1
    viewDir(2) = 1
    newVport.direction = viewDir
   ' Enable the viewport
    newVport.Display True
   ' Switch to model space
    ThisDrawing.MSpace = True
   ' Set newVport current
   ' (not always necessary but a good idea)
    ThisDrawing.ActivePViewport = newVport
   ' Zoom Extents in model space
    ZoomExtents
   ' Turn model space editing off
    ThisDrawing.MSpace = False
    ' ZoomExtents in paperspace
    ZoomExtents
End Sub
앞의 코드에서는 단계의 순서가 중요합니다. 대개는 AutoCAD 명령행에서 수행되는 것과 똑같은 순서로 수행됩니다. 그렇지 않은 작업은 뷰 정의와 뷰포트를 작동 가능하게 설정하는 작업 뿐입니다.
주뷰의 여러 가지 측면(뷰 방향, 렌즈 길이 등)을 설정하거나 수정하려면 Viewport 객체의 Display 메서드를 끄기(FALSE)로 설정해야 하며, 뷰포트를 현재로 설정하기 전에 Display 메서드를 켜기(TRUE)로 설정해야 합니다.
4개의 부동 뷰포트 작성
이 예제에서는 "부동 뷰포트 작성 및 사용"의 예제를 사용하여 4개의 부동 뷰포트를 계속적으로 작성하고 뷰를 각각 평면도, 정면도, 우측면도, 등각투영 뷰로 설정합니다. 각각의 뷰는 도면 공간 축척의 절반으로 축척됩니다. 이들 뷰포트에 보이는 것이 있는지 확인하기 위해 3D 솔리드 구를 먼저 작성해서 이 예제를 시도할 수 있습니다.
Sub Ch9_FourPViewports()
    Dim topVport, frontVport As AcadPViewport
    Dim rightVport, isoVport As AcadPViewport
    Dim pt(0 To 2) As Double
    Dim viewDir(0 To 2) As Double
    ThisDrawing.ActiveSpace = acPaperSpace
    ThisDrawing.MSpace = True
' Take the existing PViewport and make it the topVport
    pt(0) = 2.5: pt(1) = 5.5: pt(2) = 0
    Set topVport = ThisDrawing.ActivePViewport
    'No need to set Direction for top view
    topVport.center = pt
    topVport.width = 2.5
    topVport.height = 2.5
    topVport.Display True
    ThisDrawing.MSpace = True
    ThisDrawing.ActivePViewport = topVport
    ZoomExtents
    ZoomScaled 0.5, acZoomScaledRelativePSpace
'Create and setup frontVport
    pt(0) = 2.5: pt(1) = 2.5: pt(2) = 0
    Set frontVport = ThisDrawing.PaperSpace. _
            AddPViewport(pt, 2.5, 2.5)
    viewDir(0) = 0: viewDir(1) = 1: viewDir(2) = 0
    frontVport.direction = viewDir
    frontVport.Display acOn
    ThisDrawing.MSpace = True
    ThisDrawing.ActivePViewport = frontVport
    ZoomExtents
    ZoomScaled 0.5, acZoomScaledRelativePSpace
'Create and setup rightVport
    pt(0) = 5.5: pt(1) = 5.5: pt(2) = 0
    Set rightVport = ThisDrawing.PaperSpace. _
            AddPViewport(pt, 2.5, 2.5)
    viewDir(0) = 1: viewDir(1) = 0: viewDir(2) = 0
    rightVport.direction = viewDir
    rightVport.Display acOn
    ThisDrawing.MSpace = True
    ThisDrawing.ActivePViewport = rightVport
    ZoomExtents
    ZoomScaled 0.5, acZoomScaledRelativePSpace
'Create and set up isoVport
    pt(0) = 5.5: pt(1) = 2.5: pt(2) = 0
    Set isoVport = ThisDrawing.PaperSpace. _
                             AddPViewport(pt, 2.5, 2.5)
    viewDir(0) = 1: viewDir(1) = 1: viewDir(2) = 1
    isoVport.direction = viewDir
    isoVport.Display acOn
    ThisDrawing.MSpace = True
    ThisDrawing.ActivePViewport = isoVport
    ZoomExtents
    ZoomScaled 0.5, acZoomScaledRelativePSpace
'Finish: Perform a regen in all viewports
    ThisDrawing.Regen True
End Sub


뷰포트 뷰 및 내용 변경

도면 공간 뷰포트 작성
뷰포트
도면 공간을 기준으로 뷰 축척
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 뷰포트 >
뷰포트 뷰 및 내용 변경

Viewport 객체 내에서 뷰를 변경하려면 모형 공간에 있어야 하고 뷰포트가 활성 상태여야 합니다.

부동 뷰포트에서 도면을 편집하려면

  1. 모형 공간에서 다음과 같이 ActiveViewport 특성을 설정하여 뷰포트를 활성으로 만듭니다.
    Thisdrawing.ActiveViewport = MyViewportObject
  2. 도면을 편집합니다.

도면 공간에서 주석, 치수 및 제목 블록과 같은 객체를 작성할 수도 있습니다. 그러나 ActiveSpace 특성을 FALSE로 설정하고, MSpace 특성을 사용해서 도면 공간을 켜야 합니다. 도면 공간에서 작성한 객체만 도면 공간에서 볼 수 있습니다.


도면 공간을 기준으로 뷰 축척

뷰포트 뷰 및 내용 변경
뷰포트
도면 공간에서 선종류 패턴 축척
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 뷰포트 >
도면 공간을 기준으로 뷰 축척

플롯하기 전에 도면의 각 부분에 대해 정확한 줌 축척 비율을 지정할 수 있습니다. 도면 공간을 기준으로 뷰를 축척하면, 표시되는 각각의 뷰에 대해 일관된 축척이 설정됩니다. 예를 들어, 다음 그림은 각각 다른 축척과 뷰로 설정된 여러 개의 뷰포트로 된 도면 공간 뷰를 보여줍니다. 플롯된 도면을 정확히 축척하려면 이전 뷰나 전체 축척 모형이 아닌 도면 공간을 기준으로 각각의 뷰를 축척해야만 합니다.

도면 공간에서 작업할 경우, 축척 비율은 플롯된 도면의 크기와 뷰포트에 표시된 실제 모형 크기 사이의 비율을 나타냅니다. 이 축척을 얻으려면 도면 공간 단위를 모형 공간 단위로 나누십시오. 예를 들어 4분의 1 축척 도면의 경우, 축척 비율은 모형 공간 단위 4에 대해 도면 공간 단위 1(1:4)로 지정됩니다.

도면 공간 단위를 기준으로 뷰포트를 축척하려면 ZoomScaled 메서드를 사용하십시오. 이 메서드에는 축척할 뷰포트, 축척 비율 및 축척 비율 적용 방법 등 3가지 값으로 입력해야 합니다. 세 번째 값은 선택 사항으로, 축척이 적용되는 방법을 결정합니다.

  • 도면 한계를 기준으로
  • 현재 뷰를 기준으로
  • 도면 공간 단위를 기준으로

도면 공간 단위를 기준으로 축척을 지정하려면 이 값에 acZoomScaledRelativePSpace 상수를 입력하십시오.

그림에 있는 것처럼 도면 공간 단위를 기준으로 축척 2를 입력하는 경우, 뷰포트의 축척은 도면 공간 단위 크기의 2배로 증가합니다. 도면 공간 단위를 기준으로 한 축척 5는 축척을 도면 공간 단위 크기의 절반으로 설정합니다. 모형은 실제 크기의 절반으로 플롯됩니다.


도면 공간에서 선종류 패턴 축척

도면 공간을 기준으로 뷰 축척
뷰포트
음영처리된 뷰포트 사용
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 뷰포트 >
도면 공간에서 선종류 패턴 축척

도면 공간에서 모든 유형의 선종류를 두 가지 방법으로 축척할 수 있습니다. 객체가 작성된 공간(모형 또는 도면)의 도면작성 단위를 기준으로 축척할 수 있습니다. 선종류 축척은 도면 공간 단위를 기준으로 하는 균일한 축척이 될 수도 있습니다. PSLTSCALE 시스템 변수를 사용하여 여러 뷰포트에서 서로 다른 줌 축척으로 표시된 객체에 대해 같은 선종류 축척을 유지할 수 있습니다. 이 변수는 3D 뷰에서의 선 화면표시에도 영향을 미칩니다.

다음 그림에서 모형 공간에 있는 선의 패턴 선종류는 PSLTSCALE 시스템 변수를 사용하여 도면 공간에 균일하게 축척됩니다. 비록 객체의 줌 축척은 다르지만 두 뷰포트의 선종류는 같은 축척임을 알 수 있습니다.

PSLTSCALE 시스템 변수의 값을 설정하려면 SetVariable 메서드를 사용하십시오.


음영처리된 뷰포트 사용

도면 공간에서 선종류 패턴 축척
뷰포트
도면 플롯
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 뷰포트 >
음영처리된 뷰포트 사용

도면에 3D 면, 메쉬, 돌출된 객체, 곡면 또는 솔리드가 포함되어 있을 경우, 표시되는 대로, 와이어프레임, 숨김 및 렌더 옵션을 사용하여 도면 공간에서 플롯할 수 있습니다. 음영처리된 뷰포트 및 렌더링된 뷰포트는 플롯 미리보기되고, 플롯되고, 전체 음영처리 및 렌더링으로 파일에 플롯됩니다.

도면 공간에 음영처리된 뷰포트 플로팅에 대한 옵션을 설정하려면, PViewport 객체의 ShadePlot 특성을 사용하십시오.

주모형 공간 뷰포트(Viewport 객체)의 플롯에서 선을 숨기려면 Layout 객체의 PlotHidden 특성을 사용하십시오. 이 특성은 1개의 부울 값을 취합니다. TRUE를 입력하면 은선이 제거되고 FALSE를 입력하면 은선이 그려집니다.


도면 플롯

음영처리된 뷰포트 사용
레이아웃 및 플롯 정의하기
기본 플로팅 수행
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 >
도면 플롯

모형 공간에서 보이는 것처럼 도면을 플롯하거나 준비되어 있는 도면 공간 레이아웃중 하나를 플롯할 수 있습니다. 모형 공간에서의 플로팅은 종종 도면 공간 레이아웃을 작성하기 전에 도면을 보거나 검사하기 위해 사용됩니다. 모형이 준비되면 도면 공간 레이아웃을 준비하고 플롯할 수 있습니다.

주BACKGROUNDPLOT 시스템 변수가 0으로 설정된 후 스크립트는 다중 작업을 플롯할 수 있습니다.

플로팅 작업에는 Layout 객체와 Plot 객체 등 2개의 ActiveX 자동화 객체 작업이 포함됩니다. Layout 객체에는 주어진 레이아웃에 대한 플롯 설정값이 들어 있으며 Plot 객체에는 플롯 순서를 시작하고 모니터하는 메서드와 특성이 들어 있습니다.

이 단원의 항목

  • 기본 플로팅 수행
  • 모형 공간에서 플롯
  • 도면 공간에서 플롯


기본 플로팅 수행

도면 플롯
도면 플롯
모형 공간에서 플롯
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 도면 플롯 >
기본 플로팅 수행

Plot 객체에서 다음 메서드와 특성을 사용할 수 있습니다.

PlotToFile

파일에 플롯합니다.

PlotToDevice

플로터나 프린터에 플롯합니다.

DisplayPlotPreview

지정된 플롯의 미리보기를 화면에 표시합니다.

QuietErrorMode

플롯 오류를 보고할 때 소리나지 않는 오류 모드를 전환합니다.


모형 공간에서 플롯

기본 플로팅 수행
도면 플롯
도면 공간에서 플롯
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 도면 플롯 >
모형 공간에서 플롯

일반적으로 바닥 평면도와 같은 대형 도면을 플롯할 때, 축척을 지정하여 실제 도면 단위를 플롯된 인치나 밀리미터로 변환할 수 있습니다. 그러나 모형 공간에서 플롯할 때, 설정값이 지정되어 있지 않을 경우 사용되는 기본값에는 시스템 프린터로 플롯, 현재 화면표시 플롯, 꼭 맞게 축척, 0 회전 및 0,0 간격띄우기가 포함됩니다. 플롯 설정값을 수정하려면 모형 공간과 연관된 Layout 객체의 특성을 변경하십시오.

활성 모형 공간 레이아웃의 범위 플롯

이 예제에서는 먼저 활성 공간이 모형 공간인지 확인합니다. 그런 다음, 여러 가지 플롯 설정값을 설정합니다. 마지막으로 PlotToDevice 메서드를 사용하여 플롯을 보냅니다.

Sub Ch9_PrintModelSpace()
    ' Verify that the active space is model space
    If ThisDrawing.ActiveSpace = acPaperSpace Then
        ThisDrawing.MSpace = True
        ThisDrawing.ActiveSpace = acModelSpace
    End If
    ' Set the extents and scale of the plot area
    ThisDrawing.ModelSpace.Layout.PlotType = acExtents
    ThisDrawing.ModelSpace.Layout. _
                          StandardScale = acScaleToFit
    ' Set the number of copies to one
    ThisDrawing.Plot.NumberOfCopies = 1
    ' Initiate the plot
    ThisDrawing.Plot.PlotToDevice
End Sub
장치 이름은 ConfigName 특성을 사용하여 지정할 수 있습니다. PC3 파일을 지정함으로써 PlotToDevice 메서드의 이 장치를 재지정할 수 있습니다.


도면 공간에서 플롯

모형 공간에서 플롯
도면 플롯
고급 도면 및 구성 기법
ActiveX 및 VBA 개발자 안내서 > 레이아웃 및 플롯 정의하기 > 도면 플롯 >
도면 공간에서 플롯

도면 공간 레이아웃을 플롯할 수 있습니다. "모형 공간에서 플롯"에 설명한 대로, 활성 레이아웃을 플롯하거나 플롯할 레이아웃을 이름별로 지정할 수 있습니다.


고급 도면 및 구성 기법

도면 공간에서 플롯
래스터 이미지로 작업
ActiveX 및 VBA 개발자 안내서 >
고급 도면 및 구성 기법

경험이 쌓여감에 따라, AutoCAD의 여러 가지 고급 기능을 이용하여 응용프로그램을 향상시킬 수 있습니다.

컴퓨터 렌더링 이미지뿐만 아니라 항공 사진, 위성 사진, 디지털 사진과 같은 래스터 이미지도 도면에 넣을 수 있습니다. 이 절의 정보 및 래스터 이미지에 대한 정보는 사용자 안내서를 참고하십시오.

도면의 시각적 이미지를 향상시키는 것 외에, AutoCAD에서 제공하는 유용한 데이터 구성 기능을 사용하여 도면에서 객체의 지능을 확장할 수 있습니다.

이 단원의 항목

  • 래스터 이미지로 작업
  • 블록 및 속성 사용
  • 외부 참조 사용
  • 확장 데이터 지정 및 검색


래스터 이미지로 작업

고급 도면 및 구성 기법
고급 도면 및 구성 기법
래스터 이미지 부착 및 축척
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 >
래스터 이미지로 작업

AutoCAD®를 사용하면 벡터를 기반으로 하는 AutoCAD 도면에 래스터 이미지를 추가하고, 그 결과로 만들어진 파일을 보거나 플롯할 수 있습니다.

이 단원의 항목

  • 래스터 이미지 부착 및 축척
  • 래스터 이미지 관리
  • 이미지와 이미지 경계 수정
  • 이미지 자르기


래스터 이미지 부착 및 축척

래스터 이미지로 작업
래스터 이미지로 작업
래스터 이미지 관리
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 래스터 이미지로 작업 >
래스터 이미지 부착 및 축척

이미지는 도면 파일에 위치하지만 실제로는 파일의 부분이 아닙니다. 이미지는 경로 이름이나 데이터 관리 문서 ID를 통해 도면 파일에 링크됩니다. 링크된 이미지 경로는 언제든지 변경하거나 제거할 수 있습니다. 이미지를 부착하려면 AddRaster 메서드를 사용하여 Raster 객체를 도면에 작성합니다. 부착할 이미지 파일의 이름, 이미지를 도면에 넣을 삽입점, 이미지의 축척 비율, 이미지의 회전 각도 등 4가지 값을 입력해야 합니다. Raster 객체는 이미지 자체가 아니라 이미지에 대한 별개의 링크를 표시합니다.

이미지가 부착되고 나면, 여러 번 다시 부착하여 부착할 때마다 새로운 Raster 객체를 작성할 수 있습니다. 부착할 때마다 이미지는 고유의 자르기 경계와 고유의 밝기, 대조, 흐림 및 투명도에 대한 설정값을 갖습니다. 단일 이미지는 도면에 독립적으로 재배열될 수 있는 여러 개의 조각으로 자를 수 있습니다.

래스터 객체를 작성할 경우, 이미지의 형상 축척이 AutoCAD 도면에서 작성한 형상 축척에 일치하도록 래스터 이미지의 축척 비율을 설정할 수 있습니다. 부착할 이미지를 선택하면, 이미지는 AutoCAD 측정 단위 1에 대해 이미지 측정 단위 1의 축척 비율로 삽입됩니다. 이미지 축척 비율을 설정하려면, 이미지상의 형상 축척 값을 알아야 하며 1 AutoCAD 단위 정의에 사용할 측정 단위(인치, 피트 등)도 알아야 합니다. 이미지 파일은 DPI(또는 인치당 도트 수) 및 이미지의 픽셀 수를 정의하는 해상도 정보를 포함해야 합니다.

이미지에 해상도 정보가 있으면, AutoCAD는 이 정보를 도면의 이미지를 축척하기 위해 제공한 AutoCAD 측정 단위 및 축척 비율과 결합합니다. 예를 들어 축척이 1인치가 50 피트와 대응되거나 1:600인 스캔된 청사진이 있는데, 1단위가 1인치를 표시하도록 AutoCAD 도면을 설정한 다음 이미지의 축척 비율을 설정할 경우에는 AddRaster 메서드의 ScaleFactor 매개변수에 600을 입력하십시오. 그러면 AutoCAD가 이미지의 형상을 도면의 벡터 형상에 맞춰 정렬하는 축척으로 이미지를 삽입합니다.

주부착된 이미지 파일에 해상도 정보가 정의되어 있지 않으면, AutoCAD는 이미지의 원래 폭을 1단위로 계산합니다. 삽입 후, AutoCAD 단위의 이미지 폭은 축척 비율과 같습니다.

래스터 이미지 부착

이 예제에서는 모형 공간에 래스터 이미지를 추가합니다. 이 예제에서는 sample 디렉토리에 있는 watch.jpg 파일을 사용합니다. 이 이미지가 없거나 이미지가 다른 디렉토리에 있는 경우에는 imageName 변수에 올바른 경로 이름과 파일 이름을 입력하십시오.

Sub Ch10_AttachingARaster()
    Dim insertionPoint(0 To 2) As Double
    Dim scalefactor As Double
    Dim rotationAngle As Double
    Dim imageName As String
    Dim rasterObj As AcadRasterImage
    imageName = "C:/Program Files/AutoCAD Directory/sample/watch.jpg '
insertionPoint(0) = 5
insertionPoint(1) = 5
insertionPoint(2) = 0
scalefactor = 2
rotationAngle = 0
  On Error GoTo ERRORHANDLER
   ' Attach the raster image in model space
  Set rasterObj = ThisDrawing.ModelSpace.AddRaster _
        (imageName, insertionPoint, _
               scalefactor, rotationAngle)
   ZoomAll
   Exit Sub
ERRORHANDLER:
    MsgBox Err.Description
End Sub


래스터 이미지 관리

래스터 이미지 부착 및 축척
래스터 이미지로 작업
이미지 파일 경로 변경
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 래스터 이미지로 작업 >
래스터 이미지 관리

Raster 객체의 특성을 사용하여 래스터 이미지 이름, 파일 이름 및 파일 경로를 관리할 수 있습니다.

이 단원의 항목

  • 이미지 파일 경로 변경
  • 이미지 명명


이미지 파일 경로 변경

래스터 이미지 관리
래스터 이미지 관리
이미지 명명
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 래스터 이미지로 작업 > 래스터 이미지 관리 >
이미지 파일 경로 변경

이미지의 경로와 파일 이름은 ImageFile 특성을 사용해서 조회하거나 변경합니다. 이 특성으로 설정된 경로는 AutoCAD가 이미지를 찾는 실제 경로입니다.

도면을 찾을 수 없을 경우(예를 들어, ImageFile 특성으로 저장했던 디렉토리와 다른 디렉토리로 해당 파일을 이동하였을 때), 이름에서 상대 또는 절대 경로 정보를 제거하고(예를 들어, \images\tree.tga 또는 c:\my project\images\tree.tga가 tree.tga가 됨) 사용자가 Preferences 객체에 SetProjectFilePath 메서드를 사용하여 정의해 놓은 경로를 검색합니다. 도면이 경로에 없으면 첫 번째 검색 경로를 다시 시도합니다.

파일 이름에서 경로를 제거하거나 ImageFile 특성을 재설정하여 상대 경로를 지정할 수도 있습니다.

ImageFile 특성의 경로를 변경해도 프로젝트 파일의 검색 경로 설정값에는 영향을 주지 않습니다.


이미지 명명

이미지 파일 경로 변경
래스터 이미지 관리
이미지와 이미지 경계 수정
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 래스터 이미지로 작업 > 래스터 이미지 관리 >
이미지 명명

이미지 이름이 이미지 파일 이름과 같을 필요는 없습니다. 이미지를 도면에 부착할 때 AutoCAD는 파일 확장자를 뺀 파일 이름을 이미지 이름으로 사용합니다. 파일 이름에 영향을 미치지 않고 이미지 이름을 변경할 수 있습니다.

이미지 파일은 Raster 객체의 ImageFile 특성에 의해 표시됩니다. ImageFile 특성을 변경하면 도면의 이미지가 변경됩니다. 이미지 이름은 Name 특성에 의해 표시되고, Name 특성을 변경하면 이름과 연관된 파일이 아니라 이미지의 이름만 변경됩니다.


이미지와 이미지 경계 수정

이미지 명명
래스터 이미지로 작업
이미지 경계 표시 및 숨기기
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 래스터 이미지로 작업 >
이미지와 이미지 경계 수정

모든 이미지에는 이미지 경계가 있습니다. 이미지를 도면에 부착하면 이미지 경계는 색상, 도면층, 선종류 및 선종류 축척을 포함하여 현재 특성 설정값을 그대로 사용합니다. 이미지가 비트 이미지이면 이미지 색상과 경계 색상이 같습니다.

다른 AutoCAD 객체와 마찬가지로 이미지와 경계 특성도 수정할 수 있습니다. 예를 들어 다음과 같은 작업을 수행할 수 있습니다.

  • 이미지 경계 표시 또는 숨기기
  • 이미지 도면층, 경계 색상 및 선종류 수정
  • 이미지 위치 변경
  • 이미지 폭과 높이 축척, 회전 및 변경
  • 이미지 가시성 전환
  • 이미지 투명도 변경
  • 이미지 밝기, 대조 및 흐림 변경
  • 이미지 화면표시 품질과 속도 변경

이 단원의 항목

  • 이미지 경계 표시 및 숨기기
  • 이미지 도면층, 경계 색상 및 경계 선종류 변경
  • 이미지 축척, 회전, 위치, 폭 및 높이 변경
  • 이미지 가시성 변경
  • 비트 이미지의 색상과 투명도 수정
  • 이미지 밝기, 대조 및 흐림 조정


이미지 경계 표시 및 숨기기

이미지와 이미지 경계 수정
이미지와 이미지 경계 수정
이미지 도면층, 경계 색상 및 경계 선종류 변경
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 래스터 이미지로 작업 > 이미지와 이미지 경계 수정 >
이미지 경계 표시 및 숨기기

이미지 경계를 숨기면, 이미지가 실수로 이동 또는 수정되거나, 경계가 플롯 또는 표시되는 것을 방지할 수 있습니다. 이미지 경계가 숨겨지면 잘려진 이미지는 여전히 지정된 경계 한계까지 표시되며 경계만 영향을 받습니다. 이미지 경계를 표시하거나 숨기면 도면에 부착된 모든 이미지가 영향을 받습니다.

이미지 경계를 표시하거나 숨기려면 ClippingEnabled 특성을 사용하십시오.

주이 특성은 이미지 경계에만 영향을 미칩니다. 이 특성을 전환할 때 이미지의 변경된 모양을 확인해 보려면 이미지 주변의 작은 경계를 자세히 보십시오.


이미지 도면층, 경계 색상 및 경계 선종류 변경

이미지 경계 표시 및 숨기기
이미지와 이미지 경계 수정
이미지 축척, 회전, 위치, 폭 및 높이 변경
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 래스터 이미지로 작업 > 이미지와 이미지 경계 수정 >
이미지 도면층, 경계 색상 및 경계 선종류 변경

이미지 경계의 색상과 선종류 및 이미지의 도면층을 다음과 같은 특성을 사용하여 변경할 수 있습니다.

Layer

이미지 도면층을 지정합니다.

Color

이미지 경계의 색상을 지정합니다.

Linetype

이미지의 선종류를 지정합니다.


이미지 축척, 회전, 위치, 폭 및 높이 변경

이미지 도면층, 경계 색상 및 경계 선종류 변경
이미지와 이미지 경계 수정
이미지 가시성 변경
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 래스터 이미지로 작업 > 이미지와 이미지 경계 수정 >
이미지 축척, 회전, 위치, 폭 및 높이 변경

다음 메서드와 특성을 사용하여 이미지의 축척, 회전, 위치, 폭 및 높이를 변경할 수 있습니다.

ScaleEntity

이미지를 축척합니다.

Rotate

이미지를 회전합니다.

Origin

이미지의 위치를 지정합니다.

Width

이미지의 폭을 픽셀 단위로 지정합니다.

Height

이미지의 높이를 픽셀 단위로 지정합니다.

ImageWidth

이미지의 폭을 데이터베이스 단위로 지정합니다.

ImageHeight

이미지의 높이를 데이터베이스 단위로 지정합니다.

ShowRotation

래스터를 회전된 상태로 표시할지 여부를 결정합니다.


이미지 가시성 변경

이미지 축척, 회전, 위치, 폭 및 높이 변경
이미지와 이미지 경계 수정
비트 이미지의 색상과 투명도 수정
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 래스터 이미지로 작업 > 이미지와 이미지 경계 수정 >
이미지 가시성 변경

이미지 가시성은 현재 도면 세션의 이미지를 숨김으로써 다시 그리기 속도에 영향을 미칩니다. 가려진 이미지는 화면에 표시되거나 플롯되지 않으며 도면 경계만 표시됩니다. 이미지를 가리려면 ImageVisibility 특성을 FALSE로 설정하십시오. 가려진 이미지를 다시 표시하려면 ImageVisibility 특성을 TRUE로 설정하십시오.


비트 이미지의 색상과 투명도 수정

이미지 가시성 변경
이미지와 이미지 경계 수정
이미지 밝기, 대조 및 흐림 조정
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 래스터 이미지로 작업 > 이미지와 이미지 경계 수정 >
비트 이미지의 색상과 투명도 수정

비트 래스터 이미지는 전경 색상과 배경 색상만으로 구성된 이미지입니다. 비트 이미지를 부착하면 이미지의 전경 픽셀은 현재 도면층의 색상 설정값을 그대로 사용합니다. 사용자는 부착된 모든 이미지를 수정할 수 있을 뿐만 아니라, 전경 색상을 변경하고 배경의 투명도를 켜거나 끔으로써 비트 이미지를 수정할 수도 있습니다.

주비트 이미지와 비트 이미지 경계는 항상 같은 색상입니다.

비트 이미지의 전경 색상을 변경하려면 Color 특성을 사용하십시오. 투명도를 켜고 끄려면 Transparency 특성을 사용하십시오.


이미지 밝기, 대조 및 흐림 조정

비트 이미지의 색상과 투명도 수정
이미지와 이미지 경계 수정
이미지 자르기
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 래스터 이미지로 작업 > 이미지와 이미지 경계 수정 >
이미지 밝기, 대조 및 흐림 조정

AutoCAD에서 원래의 래스터 이미지 파일에 영향을 주지 않고, 이미지의 표시와 플롯 출력에 맞게 이미지 밝기, 대조 및 흐림을 조정할 수 있습니다.

다음 특성을 사용하여 밝기, 대조 및 흐림을 조정하십시오.

Brightness

이미지의 밝기 수준을 지정합니다.

Contrast

이미지의 대조 수준을 지정합니다.

Fade

이미지의 흐림 수준을 지정합니다.


이미지 자르기

이미지 밝기, 대조 및 흐림 조정
래스터 이미지로 작업
자르기 경계 변경
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 래스터 이미지로 작업 >
이미지 자르기

이미지를 잘라 표시하고 플로팅할 이미지 영역을 정의할 수 있습니다. 자르기 경계는 이미지의 경계 안에 놓이도록 제한된 정점을 가진 2D 다각형이나 직사각형이어야 합니다. 동일한 이미지의 여러 복제는 서로 다른 경계를 가질 수 있습니다.

이미지를 자르려면

  1. ClippingEnabled 특성을 사용하여 이미지 경계를 켭니다.
  2. 자르기 경계를 지정한 다음 ClipBoundary 메서드를 사용하여 자르기를 수행합니다. 래스터 이미지의 자르기 경계를 지정하는 2D 표준 좌표계 좌표의 variant 배열만 입력하면 됩니다.

이 단원의 항목

  • 자르기 경계 변경
  • 자르기 경계 표시 및 숨기기


자르기 경계 변경

이미지 자르기
이미지 자르기
자르기 경계 표시 및 숨기기
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 래스터 이미지로 작업 > 이미지 자르기 >
자르기 경계 변경

기존의 자르기 경계를 변경하려면 앞 단계를 반복하면 됩니다. 기존 경계가 삭제되고 새로운 경계가 기존 경계를 대치합니다.


자르기 경계 표시 및 숨기기

자르기 경계 변경
이미지 자르기
래스터 이미지 경계 자르기
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 래스터 이미지로 작업 > 이미지 자르기 >
자르기 경계 표시 및 숨기기

자르기 경계를 사용하여 잘려진 이미지를 표시할 수 있거나 자르기 경계를 가리고 원래의 이미지 경계를 표시할 수도 있습니다. 자르기 경계를 가리고 원래 이미지를 표시하려면 ClippingEnabled 특성을 FALSE로 설정하십시오. 잘린 이미지를 표시하려면 ClippingEnabled 특성을 TRUE로 설정하십시오.

이 단원의 항목

  • 래스터 이미지 경계 자르기


래스터 이미지 경계 자르기

자르기 경계 표시 및 숨기기
자르기 경계 표시 및 숨기기
블록 및 속성 사용
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 래스터 이미지로 작업 > 이미지 자르기 > 자르기 경계 표시 및 숨기기 >
래스터 이미지 경계 자르기

이 예제에서는 모형 공간에 래스터 이미지를 추가합니다. 그런 다음, 자르기 경계에 따라 이미지를 자릅니다. 이 예제에서는 sample 디렉토리에 있는 downtown.jpg 파일을 사용합니다. 이 이미지가 없거나 이미지가 다른 디렉토리에 있는 경우에는 imageName 변수에 올바른 경로 이름과 파일 이름을 입력하십시오.

Sub Ch10_ClippingRasterBoundary()
    Dim insertionPoint(0 To 2) As Double
    Dim scalefactor As Double
    Dim rotationAngle As Double
    Dim imageName As String
    Dim rasterObj As AcadRasterImage
    imageName = "C:\AutoCAD\sample\downtown.jpg"
    insertionPoint(0) = 5
    insertionPoint(1) = 5
    insertionPoint(2) = 0
    scalefactor = 2
    rotationAngle = 0
    On Error GoTo ERRORHANDLER
    ' Creates a raster image in model space
    Set rasterObj = ThisDrawing.ModelSpace.AddRaster _
                    (imageName, insertionPoint, _
                     scalefactor, rotationAngle)
   ZoomAll
    ' Establish the clip boundary with an array of points
    Dim clipPoints(0 To 9) As Double
    clipPoints(0) = 6: clipPoints(1) = 6.75
    clipPoints(2) = 7: clipPoints(3) = 6
    clipPoints(4) = 6: clipPoints(5) = 5
    clipPoints(6) = 5: clipPoints(7) = 6
    clipPoints(8) = 6: clipPoints(9) = 6.75
    ' Clip the image
    rasterObj.ClipBoundary clipPoints
    ' Enable the display of the clip
    rasterObj.ClippingEnabled = True
    ThisDrawing.Regen acActiveViewport
    Exit Sub
ERRORHANDLER:
    MsgBox Err.Description
End Sub


블록 및 속성 사용

래스터 이미지 경계 자르기
고급 도면 및 구성 기법
블록으로 작업
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 >
블록 및 속성 사용

AutoCAD는 도면에서의 객체 관리를 위한 몇 가지 기능을 제공합니다. 블록을 사용하면 여러 객체를 하나의 구성요소로 구성하고 조작할 수 있습니다. 속성은 정보 항목을 도면 및 mdash 블록의 정보 항목(예: 부품 번호와 가격)과 연관시킵니다.

AutoCAD 외부 참조를 사용하면 전체 도면을 현재 도면에 부착하거나 중첩할 수 있습니다. 현재 도면을 열면 참조된 도면의 변경 사항이 현재 도면에 나타납니다.

이 단원의 항목

  • 블록으로 작업
  • 속성으로 작업


블록으로 작업

블록 및 속성 사용
블록 및 속성 사용
블록 정의
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 블록 및 속성 사용 >
블록으로 작업

블록은 함께 연관시킬 수 있는 객체들의 집합으로서 단일 객체나 블록 정의를 형성합니다. 도면에서 블록 참조를 삽입, 축척 및 회전시킬 수 있습니다. 블록 참조를 해당 구성요소 객체로 분해하고 수정한 다음, 블록을 재정의할 수 있습니다. AutoCAD는 해당 블록 정의를 기준으로 이후의 모든 블록 참조 복제를 업데이트합니다.

원래 다른 색상과 선종류를 갖는 서로 다른 도면층에서 그려진 객체로부터 블록이 정의될 수 있습니다 객체의 도면층, 색상 및 선종류 정보를 블록에 보존할 수 있습니다. 그러면 블록을 삽입할 때마다, 원본 도면층에 그려진 블록 내의 각 객체는 원래의 색상과 선종류를 가지게 됩니다.

블록 관련 작업에 대한 자세한 정보는 사용자 안내서의 “기호(블록) 작성 및 삽입”을 참고하십시오.

이 단원의 항목

  • 블록 정의
  • 블록 삽입
  • 블록 참조 분해
  • 블록 재정의


블록 정의

블록으로 작업
블록으로 작업
블록 삽입
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 블록 및 속성 사용 > 블록으로 작업 >
블록 정의

새 블록을 작성하려면 Add 메서드를 사용하십시오. 블록이 추가되는 도면의 위치와 작성할 블록의 이름 등 두 가지 값을 입력해야 합니다.

블록이 작성된 다음엔 기하학적 객체나 또 다른 블록을 새로 작성한 블록에 추가할 수 있습니다. 그런 다음, 블록의 복제를 도면에 삽입할 수 있습니다. 삽입된 블록은 블록 참조라고 하는 객체입니다.

또한 WBlock 메서드를 사용해서 블록을 작성하여 객체를 별도의 도면 파일로 분류할 수 있습니다. 그러면 도면 파일은 다른 도면에 대한 블록 정의로 사용할 수 있습니다. 다른 도면에 삽입된 도면은 블록으로 간주됩니다.

블록 정의에 대한 자세한 정보는 사용자 안내서의 “블록 작성”을 참고하십시오.


블록 삽입

블록 정의
블록으로 작업
블록 참조 분해
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 블록 및 속성 사용 > 블록으로 작업 >
블록 삽입

InsertBlock 메서드를 사용하여 블록 또는 전체 도면을 현재 도면에 삽입할 수 있습니다. 6개의 입력 값인 삽입점, 삽입할 블록 또는 도면의 이름, X 축척 비율, Y 축척 비율, Z 축척 비율 및 회전 각도를 입력해야 합니다.

전체 도면을 다른 도면에 삽입하면 AutoCAD는 삽입된 도면을 다른 블록 참조처럼 처리합니다. 이후에 그 도면을 삽입할 때는 다른 위치, 축척 및 회전 설정값을 가진 블록 정의(블록에 대한 기하학적 설명이 포함되어 있음)를 참조합니다. 도면을 삽입한 후 원래 도면을 변경해도 삽입된 블록에는 영향이 없습니다. 삽입된 블록이 원본 도면의 변경 사항을 반영하려면 원본 도면을 다시 삽입하여 해당 블록을 재정의합니다. InsertBlock 메서드를 통해 수행할 수 있습니다.

도면을 블록으로 삽입하면 파일 이름이 자동으로 블록 이름으로 사용됩니다. 블록을 작성한 후에는 Name 특성을 사용하여 블록의 이름을 변경할 수 있습니다.

삽입되는 도면의 삽입 기준점으로 사용되는 기본값은 좌표 (0,0,0)입니다. 원본 도면을 열고 SetVariable 메서드를 사용해서 INSBASE 시스템 변수에 다른 삽입 기준점을 지정하여 도면의 기준점을 변경할 수 있습니다. AutoCAD는 다음번 도면 삽입에 새 기준점을 사용합니다.

삽입한 도면에 PaperSpace 객체가 포함된 경우, 해당 객체는 현재 도면의 블록 정의에 포함되지 않습니다. PaperSpace 객체를 다른 도면에 사용하려면, 원래 도면을 연 다음 Add 메서드를 사용하여 PaperSpace 객체를 블록으로 정의하십시오. 도면 공간이나 모형 공간에서 도면을 다른 도면에 삽입할 수 있습니다.

블록 참조를 구성하는 원본 객체를 찾기 위해 블록 참조를 반복할 수 없습니다. 그러나 원래의 블록 정의를 반복하거나 블록 참조를 원래의 구성요소로 분해할 수 있습니다.

또한 AddMInsertBlock 메서드를 사용하여 블록의 배열을 삽입할 수도 있습니다. 이 메서드는 InsertBlock 메서드처럼 단일 블록을 도면에 삽입하는 것이 아니라 지정된 블록의 배열을 삽입합니다. 이 메서드는 MInsertBlock 객체를 반환합니다.

블록 삽입에 대한 자세한 정보는 사용자 안내서의 “블록 삽입”을 참고하십시오.

블록 정의 및 도면에 블록 삽입

이 예제에서는 블록을 정의하고 블록 정의에 원을 추가합니다. 그런 다음, 블록이 블록 참조로 도면에 삽입됩니다.

Sub Ch10_InsertingABlock()
    ' Define the block
    Dim blockObj As AcadBlock
    Dim insertionPnt(0 To 2) As Double
    insertionPnt(0) = 0
    insertionPnt(1) = 0
    insertionPnt(2) = 0
    Set blockObj = ThisDrawing.Blocks.Add _
                     (insertionPnt, "CircleBlock")
    ' Add a circle to the block
    Dim circleObj As AcadCircle
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 0
    center(1) = 0
    center(2) = 0
    radius = 1
    Set circleObj = blockObj.AddCircle(center, radius)
    ' Insert the block
    Dim blockRefObj As AcadBlockReference
    insertionPnt(0) = 2
    insertionPnt(1) = 2
    insertionPnt(2) = 0
    Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _
               (insertionPnt, "CircleBlock", 1#, 1#, 1#, 0)
    ZoomAll
    MsgBox "The circle belongs to " & blockRefObj.ObjectName
End Sub
주삽입한 후, 외부 파일의 WCS는 현재 도면에서 현재 사용자 좌표계(UCS)의 XY 평면에 평행하게 정렬됩니다. 그러므로, 외부 파일의 블록은 이를 삽입하기 전에 UCS를 설정함으로써 공간의 모든 방향으로 삽입될 수 있습니다.


블록 참조 분해

블록 삽입
블록으로 작업
블록 재정의
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 블록 및 속성 사용 > 블록으로 작업 >
블록 참조 분해

Explode 메서드를 사용하여 블록 참조를 분해할 수 있습니다. 블록 복제를 분해함으로써, 블록을 수정할 수 있으며 블록을 정의하는 객체를 추가하거나 삭제할 수 있습니다.

분해된 블록 참조의 결과 표시

이 예제에서는 블록을 작성하고 블록 정의에 원을 추가합니다. 그런 다음, 블록을 블록 참조로 도면에 삽입합니다. 그런 다음 블록 참조를 분해하고 분해 프로세스로 발생된 객체가 객체 유형에 따라 표시됩니다.

Sub Ch10_ExplodingABlock()
    ' Define the block
    Dim blockObj As AcadBlock
    Dim insertionPnt(0 To 2) As Double
    insertionPnt(0) = 0
    insertionPnt(1) = 0
    insertionPnt(2) = 0
    Set blockObj = ThisDrawing.Blocks.Add _
                     (insertionPnt, "CircleBlock")
    ' Add a circle to the block
    Dim circleObj As AcadCircle
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 0
    center(1) = 0
    center(2) = 0
    radius = 1
    Set circleObj = blockObj.AddCircle(center, radius)
    ' Insert the block
    Dim blockRefObj As AcadBlockReference
    insertionPnt(0) = 2
    insertionPnt(1) = 2
    insertionPnt(2) = 0
    Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _
               (insertionPnt, "CircleBlock", 1#, 1#, 1#, 0)
    ZoomAll
    MsgBox "The circle belongs to " & blockRefObj.ObjectName
    ' Explode the block reference
    Dim explodedObjects As Variant
    explodedObjects = blockRefObj.Explode
    ' Loop through the exploded objects
    Dim I As Integer
    For I = 0 To UBound(explodedObjects)
        explodedObjects(I).Color = acRed
        explodedObjects(I).Update
        MsgBox "Exploded Object " & I & ": " _
                            & explodedObjects(I).ObjectName
        explodedObjects(I).Color = acByLayer
        explodedObjects(I).Update
    Next
End Sub


블록 재정의

블록 참조 분해
블록으로 작업
속성으로 작업
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 블록 및 속성 사용 > 블록으로 작업 >
블록 재정의

Block 객체 메서드와 특성을 사용하여 블록을 재정의할 수 있습니다. 블록을 재정의하면, 도면에 있는 해당 블록에 대한 모든 참조가 즉시 업데이트되어 새로운 정의를 반영합니다.

재정의는 이전과 앞으로의 블록 삽입에 영향을 미칩니다. 상수 속성이 유실되고 새로운 상수 속성으로 대치됩니다. 변수 속성은 새 블록 정의에 속성이 없더라도 변경되지 않은 상태로 남아 있습니다.

블록 정의에서 객체 재정의

이 예제에서는 블록을 작성하고 블록 정의에 원을 추가합니다. 그런 다음, 블록을 블록 참조로 도면에 삽입합니다. 블록 정의에 있는 원이 업데이트되고 블록 참조가 자동으로 업데이트됩니다.

Sub Ch10_RedefiningABlock()
    ' Define the block
    Dim blockObj As AcadBlock
    Dim insertionPnt(0 To 2) As Double
    insertionPnt(0) = 0
    insertionPnt(1) = 0
    insertionPnt(2) = 0
    Set blockObj = ThisDrawing.Blocks.Add _
                     (insertionPnt, "CircleBlock")
    ' Add a circle to the block
    Dim circleObj As AcadCircle
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 0
    center(1) = 0
    center(2) = 0
    radius = 1
    Set circleObj = blockObj.AddCircle(center, radius)
    ' Insert the block
    Dim blockRefObj As AcadBlockReference
    insertionPnt(0) = 2
    insertionPnt(1) = 2
    insertionPnt(2) = 0
    Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _
               (insertionPnt, "CircleBlock", 1#, 1#, 1#, 0)
    ZoomAll
    ' Redefine the circle in the block,
    ' and update the block reference
    circleObj.radius = 3
    blockRefObj.Update
End Sub


속성으로 작업

블록 재정의
블록 및 속성 사용
속성 정의 및 속성 참조 작성
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 블록 및 속성 사용 >
속성으로 작업

속성 참조는 문자를 블록에 부착할 수 있도록 대화식 레이블이나 꼬리표를 제공합니다. 이런 데이터의 예로는 부품 번호, 가격, 주석 및 소유자 이름 등이 있습니다.

도면으로부터 속성 참조 정보를 추출할 수 있으며, 스프레드시트나 데이터베이스에서 이 정보를 사용하여 부품 리스트나 재료 명세서(BOM)같은 항목을 작성할 수 있습니다. 각 속성 참조가 서로 다른 꼬리표를 가진 경우 2개 이상의 속성 참조를 하나의 블록과 연관시킬 수 있습니다. 상수 속성을 정의할 수도 있습니다. 이 경우, 블록의 모든 객체가 동일한 속성 값을 가지기 때문에 블록을 삽입할 때 값을 입력하라는 프롬프트가 표시되지 않습니다.

속성은 보이지 않게 할 수 있으며, 이것은 속성이 화면에 표시되지 않거나 플롯되지 않음을 의미합니다. 그러나 속성 참조에 대한 정보는 도면 파일에 저장됩니다.

속성 관련 작업에 대한 자세한 정보는 사용자 안내서의 “블록 속성 개요”를 참고하십시오.

이 단원의 항목

  • 속성 정의 및 속성 참조 작성
  • 속성 정의 편집
  • 속성 정보 추출


속성 정의 및 속성 참조 작성

속성으로 작업
속성으로 작업
속성 정의 편집
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 블록 및 속성 사용 > 속성으로 작업 >
속성 정의 및 속성 참조 작성

속성 참조를 작성하려면 먼저 AddAttribute 메서드를 사용하여 블록에 속성 정의를 작성해야 합니다. 속성 문자의 높이, 속성 모드, 프롬프트 문자열, 삽입점, 태그 문자열 및 기본 속성값과 같은 6가지 값을 입력해야 합니다.

모드 값은 선택 사항입니다. Attribute 모드를 지정하기 위해 입력할 수 있는 상수로는 다음과 같은 5가지가 있습니다.

acAttributeModeNormal

각 속성의 현재 모드를 유지하도록 지정합니다.

acAttributeModeInvisible

블록을 삽입할 때 속성 값이 보이지 않도록 지정합니다. ATTDISP 명령은 Invisible 모드를 재지정합니다.

acAttributeModeConstant

블록 삽입을 위한 고정 값을 속성에 지정합니다.

acAttributeModeVerify

블록을 삽입할 때 속성값이 올바른지 확인하도록 제시합니다.

acAttributeModePreset

현재의 속성이 들어 있는 블록을 삽입할 때 속성을 기본값으로 설정합니다. 이 모드에서는 값을 편집할 수 없습니다.

아무 값도 입력하지 않거나, 임의의 조합을 입력하거나 모든 옵션을 입력할 수 있습니다. 옵션의 조합을 지정하려면 상수를 함께 추가하십시오. 예를 들어, acAttributeModeInvisible + acAttributeModeConstant를 입력할 수 있습니다.

속성이 들어 있는 블록이 삽입될 때 프롬프트 문자열이 나타납니다. 이 문자열의 기본값은 Tag 문자열입니다. 모드에 acAttributeModeConstant를 입력하면 프롬프트가 작동되지 않습니다.

꼬리표 문자열은 속성이 나타날 때마다 속성을 식별합니다. 빈칸이나 느낌표를 제외한 모든 문자를 사용할 수 있습니다. AutoCAD는 소문자를 대문자로 변환합니다.

속성 정의가 블록에 정의되면 InsertBlock 메서드를 사용해서 블록을 삽입할 때마다 속성 참조에 서로 다른 값을 지정할 수 있습니다.

속성 정의는 속성 정의가 작성되어 있는 블록에 연결됩니다. 모형 공간이나 도면 공간에 작성된 속성 정의는 주어진 어떤 블록에도 부착되지 않습니다.

속성 정의 지정

이 예제에서는 블록을 작성한 다음, 속성을 블록에 추가합니다. 그런 다음, 블록을 도면에 삽입합니다.

Sub Ch10_CreatingAnAttribute()
    ' Define the block
    Dim blockObj As AcadBlock
    Dim insertionPnt(0 To 2) As Double
    insertionPnt(0) = 0
    insertionPnt(1) = 0
    insertionPnt(2) = 0
    Set blockObj = ThisDrawing.Blocks.Add _
                     (insertionPnt, "BlockWithAttribute")
    ' Add an attribute to the block
    Dim attributeObj As AcadAttribute
    Dim height As Double
    Dim mode As Long
    Dim prompt As String
    Dim insertionPoint(0 To 2) As Double
    Dim tag As String
    Dim value As String
    height = 0.45kg = 1
    mode = acAttributeModeVerify
    prompt = "New Prompt"
    insertionPoint(0) = 5
    insertionPoint(1) = 5
    insertionPoint(2) = 0
    tag = "New Tag"
    value = "New Value"
    Set attributeObj = blockObj.AddAttribute(height, mode, _
                          prompt, insertionPoint, tag, value)
    ' Insert the block, creating a block reference
    ' and an attribute reference
    Dim blockRefObj As AcadBlockReference
    insertionPnt(0) = 2
    insertionPnt(1) = 2
    insertionPnt(2) = 0
    Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _
               (insertionPnt, "BlockWithAttribute", 1#, 1#, 1#, 0)
End Sub


속성 정의 편집

속성 정의 및 속성 참조 작성
속성으로 작업
속성 정보 추출
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 블록 및 속성 사용 > 속성으로 작업 >
속성 정의 편집

Attribute 객체 특성과 메서드를 사용하여 속성을 편집할 수 있습니다. 속성 특성에는 다음과 같은것이 있습니다.

Alignment

속성의 수평 정렬과 수직 정렬을 지정합니다.

Backward

속성 문자의 방향을 지정합니다.

FieldLength

속성의 필드 길이를 지정합니다.

Height

속성의 높이를 지정합니다.

InsertionPoint

속성의 삽입점을 지정합니다.

Mode

속성의 모드를 지정합니다.

PromptString

속성의 프롬프트 문자열을 지정합니다.

Rotation

속성의 회전을 지정합니다.

ScaleFactor

속성의 축척 비율을 지정합니다.

TagString

속성의 꼬리표 문자열을 지정합니다.

다음과 같은 몇 가지 메서드를 사용하여 속성을 편집할 수 있습니다.

ArrayPolar

원형 배열을 작성합니다.

ArrayRectangular

직사각형 배열을 작성합니다.

Copy

속성을 복사합니다.

Erase

속성을 지웁니다.

Mirror

속성을 대칭시킵니다.

Move

속성을 이동시킵니다.

Rotate

속성을 회전시킵니다.

ScaleEntity

속성을 축척합니다.

속성 정의 재지정

이 예제에서는 블록을 작성한 다음, 속성을 블록에 추가합니다. 그런 다음, 블록을 도면에 삽입합니다. 그 다음에는 속성 문자가 역순으로 표시되도록 업데이트합니다.

Sub Ch10_RedefiningAnAttribute()
    ' Define the block
    Dim blockObj As AcadBlock
    Dim insertionPnt(0 To 2) As Double
    insertionPnt(0) = 0
    insertionPnt(1) = 0
    insertionPnt(2) = 0
    Set blockObj = ThisDrawing.Blocks.Add _
                     (insertionPnt, "BlockWithAttribute")
    ' Add an attribute to the block
    Dim attributeObj As AcadAttribute
    Dim height As Double
    Dim mode As Long
    Dim prompt As String
    Dim insertionPoint(0 To 2) As Double
    Dim tag As String
    Dim value As String
    height = 0.45kg = 1
    mode = acAttributeModeVerify
    prompt = "New Prompt"
    insertionPoint(0) = 5
    insertionPoint(1) = 5
    insertionPoint(2) = 0
    tag = "New Tag"
    value = "New Value"
    Set attributeObj = blockObj.AddAttribute(height, mode, _
                          prompt, insertionPoint, tag, value)
    ' Insert the block, creating a block reference
    ' and an attribute reference
    Dim blockRefObj As AcadBlockReference
    insertionPnt(0) = 2
    insertionPnt(1) = 2
    insertionPnt(2) = 0
    Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _
               (insertionPnt, "BlockWithAttribute", 1#, 1#, 1#, 0)
    ' Redefine the attribute text to display backwards.
    attributeObj.Backward = True
    attributeObj.Update
End Sub


속성 정보 추출

속성 정의 편집
속성으로 작업
외부 참조 사용
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 블록 및 속성 사용 > 속성으로 작업 >
속성 정보 추출

GetAttributes와 GetConstantAttributes 메서드를 사용하여 도면에서 속성 정보를 추출할 수 있습니다. GetAttributes 메서드는 현재 값에 따라 블록에 부착된 속성 참조의 배열을 반환합니다. GetConstantAttributes 메서드는 블록 참조나 외부 참조에 부착된 상수 속성의 배열을 반환합니다. 이 메서드에 의해 반환된 속성은 속성 참조가 아니라 상수 속성 정의입니다.

속성 정보를 추출하는 데 템플릿 파일이 필요하지 않기 때문에 속성 정보 파일이 작성되지 않습니다. 속성 참조의 TagString과 TextString 특성을 사용하여 속성 참조의 배열을 반복하면 속성 정보를 검사할 수 있습니다.

TagString 특성은 속성 참조의 개별 꼬리표를 나타냅니다. TextString 특성 안에는 속성 참조 값이 들어 있습니다.

속성 정보 추출에 대한 자세한 정보는 사용자 안내서의 “블록 속성에서 데이터 추출”을 참고하십시오.

속성 참조 정보 가져오기

이 예제에서는 블록을 작성한 다음, 속성을 블록에 추가합니다. 그런 다음, 블록을 도면에 삽입합니다. 그 다음에는 속성이 반환되고, 메시지 상자를 사용하여 표시됩니다. 그런 다음 속성 데이터가 블록 참조에 맞게 업데이트되며, 다시 한번 속성 데이터가 반환되고 표시됩니다.

Sub Ch10_GettingAttributes()
    ' Create the block
    Dim blockObj As AcadBlock
    Dim insertionPnt(0 To 2) As Double
    insertionPnt(0) = 0
    insertionPnt(1) = 0
    insertionPnt(2) = 0
    Set blockObj = ThisDrawing.Blocks.Add _
                          (insertionPnt, "TESTBLOCK")
    ' Define the attribute definition
    Dim attributeObj As AcadAttribute
    Dim height As Double
    Dim mode As Long
    Dim prompt As String
    Dim insertionPoint(0 To 2) As Double
    Dim tag As String
    Dim value As String
    height = 0.45kg
    mode = acAttributeModeVerify
    prompt = "Attribute Prompt"
    insertionPoint(0) = 5
    insertionPoint(1) = 5
    insertionPoint(2) = 0
    tag = "Attribute Tag"
    value = "Attribute Value"
    ' Create the attribute definition object on the block
    Set attributeObj = blockObj.AddAttribute _
                        (height, mode, prompt, _
                        insertionPoint, tag, value)
    ' Insert the block
    Dim blockRefObj As AcadBlockReference
    insertionPnt(0) = 2
    insertionPnt(1) = 2
    insertionPnt(2) = 0
    Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _
                     (insertionPnt, "TESTBLOCK", 1, 1, 1, 0)
    ZoomAll
    ' Get the attributes for the block reference
    Dim varAttributes As Variant
    varAttributes = blockRefObj.GetAttributes
    ' Move the attribute tags and values into a
    ' string to be displayed in a Msgbox
    Dim strAttributes As String
    strAttributes = ""
    Dim I As Integer
    For I = LBound(varAttributes) To UBound(varAttributes)
        strAttributes = strAttributes + " Tag: " + _
                    varAttributes(I).TagString + vbCrLf + _
                    " Value: " + varAttributes(I).textString
    Next
    MsgBox "The attributes for blockReference " + _
                   blockRefObj.Name & " are: " & vbCrLf _
                   & strAttributes
    ' Change the value of the attribute
    ' Note: There is no SetAttributes. Once you have the
    ' variant array, you have the objects.
    ' Changing them changes the objects in the drawing.
    varAttributes(0).textString = "NEW VALUE!"
    ' Get the attributes again
    Dim newvarAttributes As Variant
    newvarAttributes = blockRefObj.GetAttributes
    ' Again, display the tags and values
    strAttributes = ""
    For I = LBound(varAttributes) To UBound(varAttributes)
        strAttributes = strAttributes + " Tag: " + _
                    newvarAttributes(I).TagString + vbCrLf + _
                    " Value: " + newvarAttributes(I).textString
    Next
    MsgBox "The attributes for blockReference " & _
                  blockRefObj.Name & " are: " & vbCrLf _
                  & strAttributes
End Sub


외부 참조 사용

속성 정보 추출
고급 도면 및 구성 기법
외부 참조 업데이트
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 >
외부 참조 사용

외부 참조(xref)는 다른 도면을 현재 도면에 링크합니다. 도면을 블록으로서 삽입한 경우, 모든 연관된 형상과 블록이 현재 도면 데이터베이스에 저장됩니다. 원본 도면이 변경되어도 삽입된 도면은 업데이트되지 않습니다. 그러나 도면을 외부 참조로 삽입하면 원본 도면이 변경될 때 외부 참조도 업데이트됩니다. 따라서 외부 참조가 들어 있는 도면은 항상 외부적으로 참조된 각 파일의 최신 편집 상태를 반영합니다.

블록 참조와 마찬가지로 외부 참조도 현재 도면에서 단일 객체로서 표시됩니다. 그러나 외부 참조는 현재 도면의 파일 크기를 크게 늘리지 않으며 분해될 수 없습니다. 블록 참조와 마찬가지로, 도면에 부착된 외부 참조를 내포시킬 수 있습니다.

외부 참조에 대한 자세한 정보는 사용자 안내서의 “외부 참조 부착, 업데이트 및 결합”을 참고하십시오.

이 단원의 항목

  • 외부 참조 업데이트
  • 외부 참조 부착
  • 외부 참조 분리
  • 외부 참조 다시 로드
  • 외부 참조 언로드
  • 외부 참조 결합
  • 블록 및 외부 참조 자르기
  • 요청하여 로드하기 및 외부 참조 성능


외부 참조 업데이트

외부 참조 사용
외부 참조 사용
외부 참조 부착
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 외부 참조 사용 >
외부 참조 업데이트

도면을 열거나 플롯하면 각 외부 참조가 다시 로드되여 참조된 도면의 최신 상태를 반영합니다. 외부 참조 도면이 변경되고 파일이 저장되면 외부 참조를 다시 로드하는 즉시 다른 사용자가 변경 사항에 접근할 수 있습니다.


외부 참조 부착

외부 참조 업데이트
외부 참조 사용
외부 참조 중첩
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 외부 참조 사용 >
외부 참조 부착

외부 참조 부착은 한 도면(참조 파일 또는 외부 참조)을 현재 도면에 링크합니다. 도면이 외부 참조를 참조하는 겨우 블록 정의와 내용이 현재 도면에 함께 저장되는 일반 블록의 경우와는 달리 도면에는 외부 참조 정의만 부착됩니다. AutoCAD는 현재 도면에 표시할 내용을 결정하기 위해 참조 도면을 읽습니다. 참조 파일이 누락되거나 손상되면 해당 데이터가 현재 도면에 표시되지 않습니다. 도면을 열 때마다, 참조 파일의 모든 그래픽 객체와 비그래픽 객체(예: 도면층, 선종류, 문자 스타일)가 로드됩니다. VISRETAIN이 켜져 있는 경우, 업데이트된 모든 외부 참조 종속 도면층 정보가 현재 도면에 저장됩니다.

원하는 수만큼 외부 참조의 사본을 부착할 수 있으며 각 위치, 축척 및 회전이 다를 수 있습니다. 해당 외부 참조에 정의되어 있는 종속 도면층 및 선종류 특성도 조정할 수 있습니다.

외부 참조를 부착하려면 AttachExternalReference 메서드를 사용하십시오. 이 메서드를 실행하려면 참조될 도면의 경로와 파일 이름, 외부 참조가 현재 도면에서 사용하는 이름, 외부 참조의 삽입점, 외부 참조의 회전 정보를 입력해야 합니다. AttachExternalReference 메서드는 새로 작성된 ExternalReference 객체를 반환합니다.

외부 참조 부착에 대한 자세한 정보는 사용자 안내서의 “외부 참조 부착”을 참고하십시오.

도면에 외부 참조 부착

이 예제에서는 외부 참조를 추가하기 전과 후에 모든 블록을 현재 도면에 표시합니다. 이 예제에서는 sample 디렉토리에 있는 3D House.dwg 파일을 사용합니다. 이 이미지가 없거나 이미지가 다른 디렉토리에 있는 경우에는 PathName 변수에 올바른 경로 이름과 파일 이름을 입력하십시오.

Sub Ch10_AttachingExternalReference()
    On Error GoTo ERRORHANDLER
    Dim InsertPoint(0 To 2) As Double
    Dim insertedBlock As AcadExternalReference
    Dim tempBlock As AcadBlock
    Dim msg As String, PathName As String
    ' Define external reference to be inserted
    InsertPoint(0) = 1
    InsertPoint(1) = 1
    InsertPoint(2) = 0
    PathName = "C:/Program Files/AutoCAD 2008/sample/3D House.dwg"
    ' Display current Block information for this drawing
    GoSub ListBlocks
    ' Add the external reference to the drawing
    Set insertedBlock = ThisDrawing.ModelSpace. _
            AttachExternalReference(PathName, "XREF_IMAGE", _
            InsertPoint, 1, 1, 1, 0, False)
    ZoomAll
    ' Display new Block information for this drawing
    GoSub ListBlocks
    Exit Sub
ListBlocks:
    msg = vbCrLf ' Reset message
    For Each tempBlock In ThisDrawing.Blocks
        msg = msg & tempBlock.Name & vbCrLf
    Next
    MsgBox "The current blocks in this drawing are
    Return
ERRORHANDLER:
    MsgBox Err.Description
End Sub
이 단원의 항목
  • 외부 참조 중첩


외부 참조 중첩

외부 참조 부착
외부 참조 부착
외부 참조 분리
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 외부 참조 사용 > 외부 참조 부착 >
외부 참조 중첩

중첩은 도면이 부착되거나 중첩될 때를 제외하고 부착하기와 유사합니다. 그 안에 내포된 다른 중첩은 무시되기 때문에 표시되지 않습니다. 그러므로 내포된 중첩을 읽을 수 없습니다.

외부 참조를 중첩하려면 AttachExternalReference 메서드의 bOverlay 매개변수를 TRUE로 설정하십시오.


외부 참조 분리

외부 참조 중첩
외부 참조 사용
외부 참조 다시 로드
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 외부 참조 사용 >
외부 참조 분리

외부 참조 정의를 분리하여 외부 참조를 도면에서 완전히 제거할 수 있습니다. 또한 개별 외부 참조 복제를 지울 수도 있습니다. 외부 참조 정의를 분리하면 외부 참조와 연관된 종속 기호가 모두 제거됩니다. 외부 참조의 복제가 모두 도면에서 지워지면 다음에 도면을 열 때 AutoCAD가 외부 참조 정의를 제거합니다.

외부 참조를 분리하려면 Detach 메서드를 사용하십시오. 내포된 외부 참조는 분리할 수 없습니다.

외부 참조 정의 분리

이 예제에서는 외부 참조를 부착한 다음, 외부 참조를 분리합니다. 이 예제에서는 sample 디렉토리에 있는 3D House.dwg 파일을 사용합니다. 이 이미지가 없거나 이미지가 다른 디렉토리에 있는 경우에는 PathName 변수에 올바른 경로 이름과 파일 이름을 입력하십시오.

Sub Ch10_DetachingExternalReference()
    On Error GoTo ERRORHANDLER
    ' Define external reference to be inserted
    Dim xrefHome As AcadBlock
    Dim xrefInserted As AcadExternalReference
    Dim insertionPnt(0 To 2) As Double
    Dim PathName As String
    insertionPnt(0) = 1
    insertionPnt(1) = 1
    insertionPnt(2) = 0
    PathName = "c:/AutoCAD 2008/sample/3D House.dwg"
    ' Add the external reference
    Set xrefInserted = ThisDrawing.ModelSpace. _
            AttachExternalReference(PathName, "XREF_IMAGE", _
            insertionPnt, 1, 1, 1, 0, False)
    ZoomAll
    MsgBox "The external reference is attached."
    ' Detach the external reference definition
    Dim name As String
    name = xrefInserted.name
    ThisDrawing.Blocks.Item(name).Detach
    MsgBox "The external reference is detached."
    Exit Sub
ERRORHANDLER:
    MsgBox Err.Description
End Sub


외부 참조 다시 로드

외부 참조 분리
외부 참조 사용
외부 참조 언로드
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 외부 참조 사용 >
외부 참조 다시 로드

사용자가 외부 참조가 부착된 호스트 도면에서 작업하는 동안 누군가가 그 외부 참조 도면을 수정한 경우, Reload 메서드를 사용하여 외부 참조 도면을 업데이트할 수 있습니다. 다시 로드하면 선택된 외부 참조 도면이 호스트 도면에서 업데이트됩니다. 외부 참조를 언로드할 때에도 언제든지 외부적으로 참조된 도면을 다시 로드하도록 선택할 수 있습니다.

외부 참조 정의 다시 로드

이 예제에서는 외부 참조를 부착한 다음, 외부 참조를 다시 로드 합니다. 이 예제에서는 sample 디렉토리에 있는 3D House.dwg 파일을 사용합니다. 이 이미지가 없거나 이미지가 다른 디렉토리에 있는 경우에는 PathName 변수에 올바른 경로 이름과 파일 이름을 입력하십시오.

Sub Ch10_ReloadingExternalReference()
    On Error GoTo ERRORHANDLER
    ' Define external reference to be inserted
    Dim xrefHome As AcadBlock
    Dim xrefInserted As AcadExternalReference
    Dim insertionPnt(0 To 2) As Double
    Dim PathName As String
    insertionPnt(0) = 1
    insertionPnt(1) = 1
    insertionPnt(2) = 0
    PathName = "c:/AutoCAD 2008/sample/3D House.dwg"
    ' Add the external reference to the block
    Set xrefInserted = ThisDrawing.ModelSpace. _
            AttachExternalReference(PathName, "XREF_IMAGE", _
            insertionPnt, 1, 1, 1, 0, False)
    ZoomAll
    MsgBox "The external reference is attached."
    ' Reload the external reference definition
    ThisDrawing.Blocks.Item(xrefInserted.name).Reload
    MsgBox "The external reference is reloaded."
    Exit Sub
ERRORHANDLER:
    MsgBox Err.Description
End Sub


외부 참조 언로드

외부 참조 다시 로드
외부 참조 사용
외부 참조 결합
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 외부 참조 사용 >
외부 참조 언로드

외부 참조를 언로드하려면 Unload 메서드를 사용하십시오. 현재 도면에서 사용되지 않는 참조 파일을 로드하면 불필요한 도면 형상 및 기호 테이블 정보를 읽거나 표시할 필요가 없으므로 AutoCAD의 성능이 향상됩니다. 외부 참조 형상 및 내포된 외부 참조의 형상은 외부 참조가 다시 로드 될 때까지 현재 도면에 표시되지 않습니다.

외부 참조 정의 언로드

이 예제에서는 외부 참조를 부착한 다음, 외부 참조를 언로드합니다. 이 예제에서는 sample 디렉토리에 있는 3D House.dwg 파일을 사용합니다. 이 이미지가 없거나 이미지가 다른 디렉토리에 있는 경우에는 PathName 변수에 올바른 경로 이름과 파일 이름을 입력하십시오.

Sub Ch10_UnloadingExternalReference()
    On Error GoTo ERRORHANDLER
    ' Define external reference to be inserted
    Dim xrefHome As AcadBlock
    Dim xrefInserted As AcadExternalReference
    Dim insertionPnt(0 To 2) As Double
    Dim PathName As String
    insertionPnt(0) = 1
    insertionPnt(1) = 1
    insertionPnt(2) = 0
    PathName = "c:/AutoCAD 2008/sample/3D House.dwg"
    ' Add the external reference
    Set xrefInserted = ThisDrawing.ModelSpace. _
            AttachExternalReference(PathName, "XREF_IMAGE", _
            insertionPnt, 1, 1, 1, 0, False)
    ZoomAll
    MsgBox "The external reference is attached."
    ' Unload the external reference definition
    ThisDrawing.Blocks.Item(xrefInserted.name).Unload
    MsgBox "The external reference is unloaded."
    Exit Sub
ERRORHANDLER:
    MsgBox Err.Description
End Sub


외부 참조 결합

외부 참조 언로드
외부 참조 사용
블록 및 외부 참조 자르기
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 외부 참조 사용 >
외부 참조 결합

Bind 메서드를 사용해 외부 참조를 도면에 결합하여, 외부 참조를 외부적으로 참조된 파일이 아닌 도면의 영구적인 한 부분으로 만들 수 있습니다. 외부적으로 참조되는 정보는 블록이 됩니다. 외부적으로 참조되는 도면이 업데이트되는 경우 결합된 외부 참조는 업데이트되지 않습니다. 이 프로세스는 모든 종속 기호를 포함하여 전체 도면의 데이터베이스를 결합합니다.

종속 기호는 블록, 치수 스타일, 도면층, 선종류, 문자 스타일과 같이 명명된 객체입니다. 외부 참조를 결합함으로써 외부 참조의 명명된 객체를 현재 도면에서 사용할 수 있습니다.

Bind 메서드에는 매개변수 bPrefixName만 있습니다. bPrefixName 매개변수를 TRUE로 설정하면 현재 도면에서 외부 참조 도면의 기호 이름에 머리말 <blockname>$x$가 붙습니다. 여기서 x 는 기존 블록 정의를 재지정하지 않도록 자동으로 증분되는 정수입니다. bPrefixName 매개변수를 FALSE로 설정하면 외부 참조 도면의 기호 이름이 머리말 없이 현재 도면에 결합됩니다. 중복 이름이 있으면 AutoCAD는 로컬 도면에 이미 정의되어 있는 기호를 사용합니다. 도면에 중복되는 기호 이름이 있는지 모를 경우, bPrefixName을 TRUE로 설정하는 것이 좋습니다.

외부 참조 결합에 대한 자세한 정보는 사용자 안내서의 “외부 참조(결합)를 포함하는 도면 보관”을 참고하십시오.

외부 참조 정의 결합

이 예제에서는 외부 참조를 부착한 다음, 외부 참조를 도면에 결합합니다. 이 예제에서는 sample 디렉토리에 있는 3D House.dwg 파일을 사용합니다. 이 이미지가 없거나 이미지가 다른 디렉토리에 있는 경우에는 PathName 변수에 올바른 경로 이름과 파일 이름을 입력하십시오.

Sub Ch10_BindingExternalReference()
    On Error GoTo ERRORHANDLER
    ' Define external reference to be inserted
    Dim xrefHome As AcadBlock
    Dim xrefInserted As AcadExternalReference
    Dim insertionPnt(0 To 2) As Double
    Dim PathName As String
    insertionPnt(0) = 1
    insertionPnt(1) = 1
    insertionPnt(2) = 0
    PathName = "c:/AutoCAD 2008/sample/3D House.dwg"
    ' Add the external reference
    Set xrefInserted = ThisDrawing.ModelSpace. _
            AttachExternalReference(PathName, "XREF_IMAGE", _
            insertionPnt, 1, 1, 1, 0, False)
    ZoomAll
    MsgBox "The external reference is attached."
    ' Bind the external reference definition
    ThisDrawing.Blocks.Item(xrefInserted.name).Bind False
    MsgBox "The external reference is bound."
    Exit Sub
ERRORHANDLER:
    MsgBox Err.Description
End Sub


블록 및 외부 참조 자르기

외부 참조 결합
외부 참조 사용
요청하여 로드하기 및 외부 참조 성능
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 외부 참조 사용 >
블록 및 외부 참조 자르기

ActiveX 자동화에서는 블록과 외부 참조의 경계를 자르기 위한 메서드를 제공하지 않습니다. AutoCAD의 XCLIP 명령을 사용하거나 SendCommand 메서드를 사용해서 XCLIP 명령을 AutoCAD로 보내십시오.


요청하여 로드하기 및 외부 참조 성능

블록 및 외부 참조 자르기
외부 참조 사용
확장 데이터 지정 및 검색
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 > 외부 참조 사용 >
요청하여 로드하기 및 외부 참조 성능

요청하여 로드하기 및 색인과 함께 도면 저장하기를 조합하면 외부 참조가 있는 도면의 성능을 향상시킬 수 있습니다. 요청되어 로드하기는 XLOADCTL 및 INDEXCTL 시스템 변수와 같이 작동합니다. 요청되어 로드하기를 켤 때, 참조된 도면에 색인이 저장되어 있으면 AutoCAD는 참조 도면에서 현재 도면을 재생성하는 데 필요한 데이터만 메모리로 로드합니다. 즉, “요청 시” 참조된 재료를 읽습니다.

요청되어 로드하기의 이점을 최대한 이용하려면 참조된 도면을 도면층 색인 및 공간 색인과 함께 저장해야 합니다. 다음과 같은 경우에 요청되어 로드하기를 사용하면 가장 뛰어난 성능을 얻을 수 있습니다.

  • 외부 참조를 작은 부분이 표시되도록 자르면 공간 색인이 외부적으로 참조된 도면에 저장됩니다.
  • 외부 참조의 여러 도면층을 동결하면 외부적으로 참조된 도면이 도면층 색인과 함께 저장됩니다.

요청되어 로드하기를 켜려면 XRefDemandLoad 특성을 사용하십시오. acDemandLoadEnabledWithCopy 옵션을 사용하여 요청되어 로드하기를 켜는 경우, AutoCAD는 외부 참조 파일의 임시 사본을 만들어 이 임시 파일을 로드 합니다. 그러면 원래의 참조 도면이 수정할 수 있게 되는 동시에 외부 참조를 요청되어 로드할 수 있습니다. 요청되어 로드하기를 작동 불가능하게 하면, AutoCAD가 도면층 가시성이나 잘린 복제와 관계없이 전체 참조 도면을 읽습니다.

도면층 색인과 공간 색인을 켜려면 SetVariable 메서드를 사용하여 INDEXCTL 시스템 변수를 설정하십시오. 다음과 같은 설정값을 INDEXCTL 시스템 변수에 적용할 수 있습니다:

  • 0 = 색인이 작성되지 않음
  • 1 = 도면층 색인이 작성됨
  • 2 = 공간 색인이 작성됨
  • 3 = 공간 색인과 도면층 색인이 모두 작성됨

새로운 AutoCAD 도면을 작성할 때, 기본적으로 INDEXCTL은 0으로 설정됩니다.

요청 시 로드 및 외부 참조에 대한 자세한 정보는 사용자 안내서의 “큰 외부 참조의 성능 향상”을 참고하십시오.


확장 데이터 지정 및 검색

요청하여 로드하기 및 외부 참조 성능
고급 도면 및 구성 기법
VBA를 사용한 응용프로그램 개발
ActiveX 및 VBA 개발자 안내서 > 고급 도면 및 구성 기법 >
확장 데이터 지정 및 검색

확장 데이터(xdata)를 도면에 있는 객체에 정보를 연결하는 수단으로 사용할 수 있습니다.

선택 세트의 모든 객체에 xdata 지정

이 예제에서는 사용자에게 도면에서 객체를 선택하라고 표시합니다. 선택한 객체가 선택 세트에 놓이며, 지정된 xdata가 선택 세트의 모든 객체에 부착됩니다

Sub Ch10_AttachXDataToSelectionSetObjects()
    ' Create the selection set
    Dim sset As Object
    Set sset = ThisDrawing.SelectionSets.Add("SS1")
    ' Prompt the user to select objects
    sset.SelectOnScreen
    ' Define the xdata
    Dim appName As String, xdataStr As String
    appName = "MY_APP"
    xdataStr = "This is some xdata"
    Dim xdataType(0 To 1) As Integer
    Dim xdata(0 To 1) As Variant
    ' Define the values for each array
    '1001 indicates the appName
    xdataType(0) = 1001
    xdata(0) = appName
    '1000 indicates a string value
    xdataType(1) = 1000
    xdata(1) = xdataStr
    ' Loop through all entities in the selection
    ' set and assign the xdata to each entity
    Dim ent As Object
    For Each ent In sset
        ent.SetXData xdataType, xdata
    Next ent
End Sub
선택 세트에 있는 모든 객체의 xdata 보기
이 예제에서는 앞의 예제에서 부착한 xdata를 표시합니다. 문자열(1000 입력) 이외의 xdata를 부착하는 경우에는 이 코드를 수정해야 합니다
Sub Ch10_ViewXData()
    ' Find the selection created in previous example
    Dim sset As Object
    Set sset = ThisDrawing.SelectionSets.Item("SS1")
    ' Define the xdata variables to hold xdata information
    Dim xdataType As Variant
    Dim xdata As Variant
    Dim xd As Variant
    'Define index counter
    Dim xdi As Integer
    xdi = 0
    ' Loop through the objects in the selection set
    ' and retrieve the xdata for the object
    Dim msgstr As String
    Dim appName As String
    Dim ent As AcadEntity
    appName = "MY_APP"
    For Each ent In sset
        msgstr = ""
        xdi = 0
        ' Retrieve the appName xdata type and value
        ent.GetXData appName, xdataType, xdata
        ' If the xdataType variable is not initialized, there
        ' was no appName xdata to retrieve for that entity
        If VarType(xdataType) <> vbEmpty Then
            For Each xd In xdata
                msgstr = msgstr & vbCrLf & xdataType(xdi) _
                         & ": " & xd
                xdi = xdi + 1
            Next xd
        End If
        ' If the msgstr variable is NULL, there was no xdata
        If msgstr = "" Then msgstr = vbCrLf & "NONE"
        MsgBox appName & " xdata on " & ent.ObjectName & _
                                      ":" & vbCrLf & msgstr
    Next ent
End Sub


VBA를 사용한 응용프로그램 개발

확장 데이터 지정 및 검색
추가 VBA 용어
ActiveX 및 VBA 개발자 안내서 >
VBA를 사용한 응용프로그램 개발

대부분의 프로그래밍 작업은 단순히 AutoCAD ActiveX 객체 모형으로 작업하는 것 이상의 작업을 포함합니다. 이 장에는 대화상자 작성, 오류 처리, 윈도우 포커스 조정, 다른 응용프로그램에 응용프로그램 배포 등에 대한 간략한 개요가 있습니다.

VBA 관련 Microsoft 문서에는 다음 주제에 대한 자세한 정보가 들어 있습니다.

이 단원의 항목

  • 추가 VBA 용어
  • VBA 형식
  • 오류 처리
  • VBA 코드 모듈 암호화
  • 도구막대 또는 메뉴에서 VBA 매크로 실행
  • 자동으로 VBA 프로젝트 로드
  • 자동으로 VBA 매크로 실행
  • 프로젝트를 로드할 때마다 자동으로 VBA IDE 열기
  • 문서가 없는 상태에서 작업
  • 응용프로그램 배포
  • 64비트 마이그레이션


추가 VBA 용어

VBA를 사용한 응용프로그램 개발
VBA를 사용한 응용프로그램 개발
VBA 형식
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 >
추가 VBA 용어

이 장에서는 VBA에 대해 좀더 자세히 알아봅니다. 다음 용어는 VBA 환경에서 이해하고 작업하는 데 유용합니다.

프로젝트

단일 파일로 그룹화된 형식 및 모듈 세트

모듈

관련있는 서브루틴 및 함수들의 그룹

매크로

공용 서브루틴이나 함수 매크로는 사용자에게 프로젝트의 실행 가능한 구성요소로서 표시됩니다.

대화상자

응용프로그램 실행 중에 정보를 표시하거나 입력받는 도구

형식

대화상자 조정에 사용되는 컨테이너


VBA 형식

추가 VBA 용어
VBA를 사용한 응용프로그램 개발
설계 및 실행 모드
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 >
VBA 형식

형식은 응용프로그램 고유의 사용자 대화상자를 작성할 수 있도록 해주는 기본 원칙입니다. 사용자화 형식을 통해 사용자에게 정보를 제공하거나 사용자로부터 정보를 얻고 사용자가 응용프로그램에서 조정 작업을 할 수 있게 합니다.

폼은 백지에서 시작하는 화가의 캔버스와 같습니다. 캔버스를 채우려면 팔레트가 필요합니다. 이 경우, 팔레트는 컨트롤 도구 상자입니다. 화가로서, 여러분은 도구 상자에서 선택한 컨트롤을 형식에 넣습니다. 원하는 수 만큼 컨트롤을 추가할 수 있습니다. 언제든지 조정 및 형식 자체의 크기와 특성을 조정할 수 있습니다. 마지막으로, 작성된 형식을 호출하는 기능(코드)을 컨트롤에 추가합니다.

Visual Basic 6는 다른 유형의 형식을 지원하지만, VBA는 사용자 정의 폼만 지원합니다. 이것은 Visual Basic 6에서 작성하고 내보낸 일부 형식은 VBA로 가져올 수 없음을 의미합니다.

사용자 정의 폼 또는 폼을 이 안내서에서는 모달 또는 모덜리스라고 합니다. 형식의 ShowModal 특성은 형식이 모달인지 모덜리스인지 판별합니다. 활성 응용프로그램에 표시되는 모달 형식은 사용자가 응용프로그램에서 다른 작업을 수행하기 전에 닫아야 합니다. 모달 형식 작업에 대한 자세한 정보는 모달 형식 를 참고하십시오.

프로젝트에서 새 형식 작성

  1. VBA IDE의 프로젝트 윈도우를 열고 형식을 추가할 프로젝트를 선택합니다.
  2. 삽입 메뉴에서 사용자 정의 폼을 선택합니다.

    빈 형식이 작성되고 프로젝트에 추가됩니다.

프로젝트에서 모덜리스 형식 작성

  1. VBA IDE의 프로젝트 윈도우를 열고 형식을 추가할 프로젝트를 선택합니다.
  2. 삽입 메뉴에서 사용자 정의 폼을 선택한 후, ShowModal 특성을 False로 변경합니다.
  3. 도구상자에 AcFocusCtrl (AcFocusCtrl.dll)을 추가한 후, 컨트롤을 형식으로 끌어 옵니다.

    AcFocusCtrl는 사용자의 상호 작용중에 형식의 활성화를 유지합니다.

이 단원의 항목

  • 설계 및 실행 모드
  • 형식에 컨트롤 추가
  • 형식 표시 및 숨기기
  • 형식 로드 및 언로드
  • 모달 형식


설계 및 실행 모드

VBA 형식
VBA 형식
형식에 컨트롤 추가
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 > VBA 형식 >
설계 및 실행 모드

설계 모드에서 작업할 형식을 작성하는 동안 다음 작업을 수행할 수 있습니다.

  • 형식에 컨트롤 추가
  • 형식의 특성 변경
  • 형식의 컨트롤 특성 변경
  • 형식 모듈에 코드 추가

설계 모드에서 사용자, AutoCAD®의 사용자 인터페이스 및 사용자 폼 사이에 상호 작용은 발생하지 않습니다.

응용프로그램 관리자나 사용자가 응용프로그램을 실행한 다음에 형식은 실행 모드에 있게 됩니다. 실행 모드에 있을 때는 형식을 직접 조정할 수 없습니다. 그러나 형식이 현재 AutoCAD 사용자 인터페이스에 표시되므로 사용자는 응용프로그램 일반 작업의 일부로서 형식과 상호 작용할 수 있습니다.


형식에 컨트롤 추가

설계 및 실행 모드
VBA 형식
컨트롤의 크기 및 배치 변경
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 > VBA 형식 >
형식에 컨트롤 추가

컨트롤을 형식에 추가하는 작업은 간단합니다. 컨트롤 도구 상자에서 컨트롤을 선택하여 형식으로 끌어가면 됩니다. 마우스를 놓으면 컨트롤의 사본이 형식에 놓이게 됩니다. 컨트롤이 형식에 놓인 다음에는 컨트롤의 위치와 크기를 변경할 수 있습니다. 컨트롤을 필요한 수 만큼 복사할 수 있습니다.

앞에서 언급한 끌기 방법 외의 다른 방법으로 컨트롤을 형식에 배치할 수도 있습니다.

이 단원의 항목

  • 컨트롤의 크기 및 배치 변경
  • 형식화 컨트롤 사용
  • 컨트롤의 특성 변경
  • 컨트롤에 코드 추가


컨트롤의 크기 및 배치 변경

형식에 컨트롤 추가
형식에 컨트롤 추가
형식화 컨트롤 사용
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 > VBA 형식 > 형식에 컨트롤 추가 >
컨트롤의 크기 및 배치 변경

컨트롤을 이동하려면 컨트롤을 선택하여 형식의 새 위치로 끌어가기만 하면 됩니다.

컨트롤의 크기를 조정하려면 먼저 컨트롤을 한번 클릭하여 선택하십시오. 컨트롤을 선택하면 경계가 보이게 됩니다. 컨트롤의 크기를 조정하려면 현재 경계에 표시된 크기 조정 그립 중에서 하나를 선택하고 그립을 새 위치로 끌어가면 됩니다. 그립에서 손을 떼면 해당 위치에 맞게 컨트롤의 크기가 변경됩니다. (같은 방식으로 형식의 크기를 조정할 수 있습니다.)

여러 개의 컨트롤을 동시에 옮기거나 크기를 조정하려면 SHIFT 키를 누른 채 각각의 컨트롤을 선택합니다. 그러면 모든 컨트롤이 강조 표시됩니다. 이제 컨트롤을 하나의 그룹으로서 이동하거나 크기를 조정할 수 있습니다.

배치에 따라 컨트롤 크기 조정

  1. 컨트롤 도구상자에서 원하는 컨트롤을 선택합니다.
  2. 형식에서 마우스 버튼을 누르고 끌어 옮긴 다음 버튼을 놓습니다.. 선택한 컨트롤이 형식에 배치됩니다. 컨트롤의 크기는 마우스를 끈 거리에 따라 달라집니다.

동일한 컨트롤의 여러 배치

  1. 컨트롤 도구상자에서 배치할 컨트롤을 두 번 클릭합니다.
  2. 형식에서 컨트롤의 사본을 넣을 위치를 클릭합니다. 형식의 다른 위치로 이동하고 다시 클릭합니다. 또 다른 컨트롤 사본이 표시됩니다. 필요한 수만큼 컨트롤의 사본을 추가할 수 있습니다.
  3. 컨트롤 작업이 끝나면 컨트롤 도구상자로 돌아가서 컨트롤을 한번 더 클릭하여 선택 해제합니다.


형식화 컨트롤 사용

컨트롤의 크기 및 배치 변경
형식에 컨트롤 추가
컨트롤의 특성 변경
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 > VBA 형식 > 형식에 컨트롤 추가 >
형식화 컨트롤 사용

VBA는 형식을 적절히 배치하도록 도와주는 여러 가지 형식화 컨트롤을 제공합니다. 이러한 컨트롤은 VBA IDE의 형식 메뉴에 있습니다. 이러한 컨트롤을 사용하여 컨트롤끼리 정렬하고 둘 이상의 컨트롤을 같은 크기로 만들고 컨트롤 사이의 간격을 변경하고 컨트롤을 형식의 중심에 맞출 수 있습니다.

형식화 컨트롤을 사용할 때 SHIFT 키를 사용하면 여러 개의 컨트롤을 한꺼번에 선택할 수 있습니다.


컨트롤의 특성 변경

형식화 컨트롤 사용
형식에 컨트롤 추가
컨트롤에 코드 추가
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 > VBA 형식 > 형식에 컨트롤 추가 >
컨트롤의 특성 변경

특성은 컨트롤의 크기, 쉐이프, 색상, 레이블 및 기본값과 같은 여러 가지 특징을 조정합니다. 특성 윈도우를 사용하면 설계 모드에서 컨트롤의 특성을 설정할 수 있습니다.

컨트롤의 특성 변경

  1. 형식에서 원하는 컨트롤을 선택합니다.
  2. 특성 윈도우가 열려 있지 않으면 F4 키를 사용하여 엽니다.
  3. 특성 윈도우에서 변경할 특성을 찾고 해당 특성의 현재값을 선택합니다.
  4. 특성의 값을 원하는 새 값으로 변경합니다.

해당 특성에 접근하기 위해 코드를 작성하여 실행 시간에 컨트롤의 특성을 변경할 수도 있습니다. 실행 시간에 컨트롤 특성 변경하기에 대한 자세한 정보는 Microsoft 설명서를 참고하십시오.


컨트롤에 코드 추가

컨트롤의 특성 변경
형식에 컨트롤 추가
형식 표시 및 숨기기
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 > VBA 형식 > 형식에 컨트롤 추가 >
컨트롤에 코드 추가

원하는 모양의 폼을 갖추었으므로 몇몇 코드를 컨트롤에 추가할 수 있습니다. 컨트롤에 대한 코드 윈도우를 열려면 형식 윈도우에서 컨트롤을 두 번 클릭합니다. 컨트롤과 기본 이벤트에 대해 작성한 서브루틴과 함께 코드 윈도우가 열립니다.

코드를 기본 이벤트에 추가하거나 코드 윈도우의 상단 오른쪽 구석에 있는 이벤트 드롭다운 리스트에서 다른 이벤트를 선택할 수 있습니다.


형식 표시 및 숨기기

컨트롤에 코드 추가
VBA 형식
형식 로드 및 언로드
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 > VBA 형식 >
형식 표시 및 숨기기

이제 모든 컨트롤과 그에 대한 완전한 함수 코드를 갖춘 형식이 완벽하게 설계되었습니다. 마지막 단계는 형식을 실행 시간에 사용자에게 표시하는 것입니다. 형식 표시는 VBA Show 메서드를 통해 수행됩니다. Show 메서드는 응용프로그램의 코드 모듈에서 호출할 수 있습니다.

작성된 형식은 기본적으로 모달이므로 사용자는 형식이 표시되어 있을 때 AutoCAD와 직접 상호 작용할 수 없습니다. 예를 들어, 사용자는 형식이 표시된 상태의 도면에서 점이나 객체를 선택할 수 없습니다. AutoCAD 도면에 접근하려면 VBA Hide 메서드를 사용하십시오. Hide 메서드는 형식을 숨겨서 사용자가 AutoCAD에 제한적으로 접근할 수 있도록 합니다. Hide 메서드를 사용할 때는 형식을 메모리에서 언로드하지 않아야 합니다. 그러면 가린 상태에서 현재 값이 모두 유지됩니다.

Hide 메서드는 Show 메서드와 동일한 방식으로 호출됩니다.

형식 표시

이 예제에서는 “UserForm1”로 명명된 폼을 표시합니다.

Public Sub MyApplication()
   UserForm1.Show
End Sub

이제 서브루틴(및 그에 따른 폼의 화면표시)을 VBARUN 명령의 매크로로 호출하거나 AutoCAD 메뉴에서 호출할 수 있습니다.

형식 숨기기

이 예제에서는 “UserForm1”로 명명된 폼을 숨깁니다.

Public Sub MyAppHide()
   UserForm1.Hide
End Sub


형식 로드 및 언로드

형식 표시 및 숨기기
VBA 형식
모달 형식
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 > VBA 형식 >
형식 로드 및 언로드

형식을 표시하는 것이 아니라 형식을 실행 시 메모리로 로드할 때가 있을 수 있습니다. 응용프로그램에서 로드 시간이 발생할 때 또는 형식에 대한 프로그래밍 방식의 접근 권한이 필요하지만 형식을 사용자에게 표시하지는 않을 때를 잘 조정하기 위해 이를 수행할 수 있습니다.

형식을 표시하는 것이 아니라 로드 하려면 VBA Load 메서드를 사용하십시오. 그런 다음, 응용프로그램이 실행되는 동안 적절한 때에 Show 메서드를 사용하여 폼을 가시적으로 만들 수 있습니다. 폼이 가시적이 된 후에야 사용자는 폼과 상호 작용할 수 있습니다.

형식이 로드 되지 않은 상태에서 Show 메서드가 호출되면 자동으로 형식이 로드됩니다.

형식을 언로드할 때도 있을 수 있습니다. 형식을 언로드 하면 형식이 메모리에서 제거되고 형식과 연관된 모든 메모리가 재생됩니다. 사용자는 Load 또는 Show 메서드를 사용하여 폼을 다시 로드할 때까지는 폼과 상호 작용할 수 없으며, 폼을 프로그래밍 방식으로 처리할 수 없습니다. 형식이 응용프로그램에서 다시 사용되지 않으며 메모리를 재생하려고 할 때 형식을 언로드하도록 선택하게 됩니다.

Hide 메서드는 언로드를 수행하지 않습니다. 응용프로그램이 종료되었는데 형식이 언로드되지 않았으면 자동으로 언로드됩니다. 다음 테이블에서는 VBA Show, Hide, Load 및 Unload 메서드를 비교합니다.

VBA Show, Hide, Load 및 Unload 메서드
메서드 | 용도
Show | 형식을 표시합니다. 형식이 로드되지 않았으면 자동으로 로드됩니다.
Hide | 형식을 숨깁니다. 형식은 메모리에서 언로드되지 않습니다.
Load | 형식을 메모리로 로드하지만 표시하지는 않습니다.
Unload | 형식을 메모리에서 언로합니다. Unload 메서드를 통해 명시적으로 수행하거나 응용프로그램이 종료될 때 자동으로 수행됩니다.


모달 형식

형식 로드 및 언로드
VBA 형식
오류 처리
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 > VBA 형식 >
모달 형식

대화상자를 AutoCAD VBA에서 모달로 정의하면 사용자는 대화상자에 응답해야 응용프로그램의 다른 부분을 계속할 수 있습니다. Hide나 Unload 메서드를 통해 모달 대화상자를 닫을 때까지 후속 코드가 실행되지 않습니다. 이를 위해 응용프로그램의 개발자로서 대화상자를 구현하는 방법과 실행 시기를 신중히 고려해야 합니다.

예를 들어 사용자가 AutoCAD 도면에서 객체를 선택해야 하는 대화상자가 있을 수 있습니다. AutoCAD 응용프로그램 윈도우에서 객체를 선택하려면 Hide 메서드를 호출하여 형식을 숨겨야 합니다. 객체가 선택되면 Show 메서드를 사용하여 모든 데이터가 여전히 현재 상태인 형식을 다시 표시하고 응용프로그램을 계속하십시오.

주모달 대화상자가 표시될 때 응용프로그램 내의 기타 형식은 작동 불가능 상태가 되지만 다른 응용프로그램은 작동 가능합니다.


오류 처리

모달 형식
VBA를 사용한 응용프로그램 개발
응용프로그램 오류 유형 정의
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 >
오류 처리

대부분의 개발 환경은 기본적으로 오류 처리 기능을 제공합니다. VB와 VBA의 경우, 오류에 대한 기본 작업은 오류 메시지를 표시하고 응용프로그램을 종료하는 것입니다. 이런 동작은 응용프로그램의 개발 단계에는 적합하지만 일반 사용자에게는 비생산적입니다. 무시할 수 있는 오류나 특별한 응답을 제공해야 할 오류가 있습니다. 오류 메시지 표시를 억제하는 오류나 메시지가 사용자에게 표시되도록 조정하는 오류가 있습니다. 또한, 응용프로그램을 자동으로 종료하는 것은 일반 사용자가 거의 수용할 수 없는 동작입니다.

일반적으로 사용자 입력이 필요하거나 파일 입출력 작업을 할 때마다 오류 처리가 필요합니다. 필요한 파일이 있고 그 파일을 프로세스에 사용할 수 있다고 확신하더라도 생각치 못한 오류가 발생할 수 있습니다.

주AutoCAD 설명서에 있는 예제 코드의 대부분은 오류 잡기를 사용하지 않습니다. 따라서 예제가 간단하고 요점 중심입니다. 그러나 모든 프로그래밍 언어에서처럼 강력한 응용프로그램을 위해서는 적절한 오류 잡기와 처리가 필수적입니다.

이 단원의 항목

  • 응용프로그램 오류 유형 정의
  • 실행 시간 오류 추적
  • 추적된 오류에 대한 반응
  • AutoCAD 사용자 입력 오류에 대한 반응


응용프로그램 오류 유형 정의

오류 처리
오류 처리
실행 시간 오류 추적
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 > 오류 처리 >
응용프로그램 오류 유형 정의

응용프로그램에서 발생할 수 있는 오류 스타일에는 컴파일 시간 오류, 런타임 오류 및 논리 오류의 3가지 유형이 있습니다.

  • 컴파일 시간 오류는 응용프로그램을 구성하는 동안 발생합니다. 이 오류는 주로 구문 실수, 변수 범위 문제 또는 데이터 입력 문제로 이루어집니다. VBA에서 이런 스타일의 오류는 개발 환경에 의해 발견됩니다. 올바르지 않은 코드 행을 입력하면 행이 강조표시되고 문제가 있음을 알려주는 오류 메시지가 나타납니다. 컴파일 시간 오류는 응용프로그램이 실행되기 전에 해결해야 합니다.
  • 실행 시간 오류 찾기와 해결하기는 약간 더 어렵습니다. 이 오류는 코드 실행 중에 발생하며, 간혹 사용자로부터 정보를 받을 때 발생하기도 합니다. 예를 들어, 응용프로그램에서 사용자가 도면의 이름을 입력해야 할 때 존재하지 않는 도면의 이름을 입력하면 런타임 오류가 발생합니다. 실행 시간 오류를 효과적으로 처리하려면 발생할 수 있는 문제의 종류를 예상해서 이러한 상황을 해결할 수 있는 코드를 작성해야 합니다.
  • 논리적 오류를 찾고 해결하는 것이 가장 어렵습니다. 논리적 오류의 증상으로는, 컴파일 시간 오류와 실행 시간 오류는 없지만 프로그램의 결과가 계속 잘못되는 상황을 들 수 있습니다. 프로그래머들은 이것을 버그라고 하며, 버그는 추적하기가 매우 쉬울 수도 있고 어려울 수도 있습니다.

3가지 스타일의 오류 찾기 및 해결하기에 대한 내용은 개발 환경에 해당되는 설명서에 있습니다. AutoCAD 특정 오류는 런타임 오류 범주에 속하므로 이러한 유형의 오류에 대해서는 이 설명서에서 자세히 다룰 예정입니다.


실행 시간 오류 추적

응용프로그램 오류 유형 정의
오류 처리
추적된 오류에 대한 반응
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 > 오류 처리 >
실행 시간 오류 추적

VB와 VBA에서 실행 시간 오류는 On Error 문을 사용하여 추적할 수 있습니다. 사실상 이 구문은 시스템에 추적을 설정합니다. 오류가 발생하면 이 구문은 오류 처리를 임시 작성된 오류 핸들러로 자동으로 우회합니다. 시스템의 기본 오류 처리를 무시하는 것입니다.

On Error 문에는 다음과 같은 3가지 형식이 있습니다.

  • On Error Resume Next
  • On Error GoTo Label
  • On ErrorGoTo0

On Error Resume Next 구문은 오류를 무시할 때 사용됩니다. 이 구문은 오류를 트랩한 후, 오류 메시지를 표시하고 프로그램을 종료하는 대신, 코드의 다음 행으로 이동하여 프로세스를 계속합니다. 예를 들어 모형 공간을 반복하기 위해 서브루틴을 작성하고 각 도면요소의 색상을 변경한 경우, 잠긴 도면층의 도면요소에 색상을 지정하려 하면 AutoCAD에 오류가 표시됩니다. 프로그램을 종료하는 대신, 잠긴 도면층의 도면 요소를 생략하고 나머지 도면 요소의 처리를 계속합니다. On Error Resume Next 구문이 그렇게 하도록 허용합니다.

On Error GoTo Lable 구문은 명시적인 오류 핸들러를 작성할 때 사용됩니다. 이 구문을 오류를 잡은 후, 오류 메시지를 표시하고 프로그램을 종료하는 대신, 코드의 특정 위치로 점프합니다. 그러면 어떠한 방식이 응용프로그램에 적합한지에 관계없이 코드가 오류에 응답할 수 있습니다. 예를 들어 위의 예제는 잠긴 도면층의 각 도면 요소에 대한 처리를 설명하는 메시지를 표시하는 것으로 확대될 수 있습니다.

On Error Resume Next 문으로 오류 처리

다음 서브루틴은 모형 공간을 반복하고 각 도면요소의 색상을 빨간색으로 바꿉니다. 여러 도면 요소 중 일부가 잠긴 도면층에 있는 도면에서 이 서브루틴을 실행해 봅니다. 그런 다음, On Error Resume Next 구문에 주석을 붙이고 서브루틴을 다시 실행하십시오. 서브루틴이 잠긴 도면층의 첫 번째 도면요소에서 종료됨을 알 수 있습니다.

Sub Ch11_ColorEntities()
    Dim entry As Object
    On Error Resume Next
    For Each entry In ThisDrawing.ModelSpace
        entry.Color = acRed
    Next entry
End Sub

On Error GoTo 구문으로 오류 처리

다음 서브루틴은 모형 공간을 반복하고 각 도면요소의 색상을 빨간색으로 바꿉니다. 잠긴 도면층의 각 도면요소에 대하여 오류 핸들러는 사용자화 오류 메시지와 도면요소의 처리를 표시합니다. 여러 도면 요소 중 일부가 잠긴 도면층에 있는 도면에서 이 서브루틴을 실행해 봅니다. 그런 다음, On Error GoTo MyErrorHandling 구문에 주석을 붙이고 서브루틴을 다시 실행하십시오. 서브루틴이 잠긴 도면층의 첫 번째 도면요소에서 종료됨을 알 수 있습니다.

Sub Ch11_ColorEntities2()
    Dim entry As Object
    On Error GoTo MyErrorHandler
    For Each entry In ThisDrawing.ModelSpace
        entry.Color = acRed
    Next entry
    ' Important! Exit the subroutine before the error handler
    Exit Sub
MyErrorHandler:
    Msgbox entry.EntityName + " is on a locked layer." + _
                 " The handle is: " + entry.Handle
    Resume Next
End Sub

On Error GoTo 0 구문은 현재 오류 핸들러를 취소합니다. On Error Resume Next 문과 On Error GoTo Label 구문은 서브루틴이 종료되고 다른 오류 핸들러가 선언되거나 오류 핸들러가 On Error GoTo 0 구문을 사용해서 취소될 때까지 유효합니다.


추적된 오류에 대한 반응

실행 시간 오류 추적
오류 처리
AutoCAD 사용자 입력 오류에 대한 반응
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 > 오류 처리 >
추적된 오류에 대한 반응

오류를 추적해낸 다음에는 무엇을 수행해야 합니까? 그에 대한 대답은 응용프로그램의 특징과 오류의 특징에 의해 결정됩니다.

VB와 VBA는 Err 객체를 사용해서 추적한 오류의 유형에 대한 정보를 제공합니다. 이 객체에는 Number, Description, Source, HelpFile, HelpContext 및 LastDLLError 등의 특성이 있습니다. Err 객체의 특성은 최신 오류에 대한 정보로 채워집니다. 가장 중요한 특성은 Number와 Description 특성입니다. Number 특성 안에는 오류와 연관된 고유한 오류 코드가 들어 있고, Description 특성 안에는 일반적으로 표시되는 오류 메시지가 들어 있습니다.

오류 핸들러에서 오류의 Number 특성을 예상 값과 비교할 수 있습니다. 그러면 발생한 오류의 특징을 파악하는 데 도움이 됩니다. 처리하게 될 오류의 종류를 알게 되면 적절한 조치를 취할 수 있습니다.


AutoCAD 사용자 입력 오류에 대한 반응

추적된 오류에 대한 반응
오류 처리
VBA 코드 모듈 암호화
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 > 오류 처리 >
AutoCAD 사용자 입력 오류에 대한 반응

사용자 입력 메서드는 사용자가 특정 형식의 데이터를 입력하는데 있어 상속된 오류 추적을 다소 제공합니다. 사용자가 다른 데이터를 입력하려고 하면 AutoCAD가 입력을 거부하고 사용자에게 메시지를 다시 표시합니다. InitializeUserInput 메서드를 사용자 입력 함수와 함께 사용하면 사용자 입력이 추가로 제어되지만 오류 추적을 통해 확인해야 할 추가 상황이 발생할 수도 있습니다. 특정한 형식의 사용자 입력에 필요한 오류 추적에 대한 예제에 대해서는 사용자 입력을 위한 프롬프트를 참고하십시오.


VBA 코드 모듈 암호화

AutoCAD 사용자 입력 오류에 대한 반응
VBA를 사용한 응용프로그램 개발
도구막대 또는 메뉴에서 VBA 매크로 실행
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 >
VBA 코드 모듈 암호화

VBA는 실행 파일의 작성을 지원하지 않지만 프로젝트 형식, 클래스 및 모듈의 가시성에 대한 암호 보호를 프로젝트별로 제공합니다. 이 프로젝트 보호 기능은 VBA IDE 메뉴에 있습니다. 도구 [image] 프로젝트 특성 [image] 보호를 선택합니다.


도구막대 또는 메뉴에서 VBA 매크로 실행

VBA 코드 모듈 암호화
VBA를 사용한 응용프로그램 개발
자동으로 VBA 프로젝트 로드
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 >
도구막대 또는 메뉴에서 VBA 매크로 실행

해당 도구막대나 메뉴의 Macro 특성을 변경하기만 하면 AutoCAD 도구막대나 메뉴에서 VBA 매크로를 실행할 수 있습니다. Macro 특성은 다음과 똑같이 설정되어야 합니다.

-VBARUN filename.dvb!modulename.macroname

여기에서 filename은 프로젝트 파일의 이름이고 modulename은 실행할 매크로가 들어 있는 모듈의 이름이며 macroname은 매크로의 이름입니다. 파일 이름은 파일이 AutoCAD의 현재 세션에서 로드되지 않은 경우에만 필요합니다. 파일 이름이 제공되면 파일이 로드됩니다.

메뉴와 도구막대 편집에 대한 자세한 정보는 도구막대 및 메뉴 사용자화를 참고하십시오.


자동으로 VBA 프로젝트 로드

도구막대 또는 메뉴에서 VBA 매크로 실행
VBA를 사용한 응용프로그램 개발
자동으로 VBA 매크로 실행
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 >
자동으로 VBA 프로젝트 로드

VBA 프로젝트를 자동으로 로드는 방법에는 다음 두 가지가 있습니다.

  • VBA가 로드되면 AutoCAD 디렉토리에서 acad.dvb라고 명명된 프로젝트를 찾습니다. 이 파일은 기본 프로젝트로 자동 로드됩니다.
  • 기본값 acad.dvb 이외의 프로젝트는 VBALOAD 명령을 사용하여, 시작할 때 해당 프로젝트를 명시적으로 로드하여 사용할 수 있습니다. 다음 예제 코드는 AutoLISP 시작 파일을 사용하여, AutoCAD가 시작될 때 VBA와 myproj.dvb라고 명명된 VBA 프로젝트를 로드합니다. notepad.exe를 시작하고 acad.lsp 파일에 다음 행을 작성하거나 추가하십시오

    (defun S::STARTUP()

    (command "_VBALOAD" "myproj.dvb")

    )


자동으로 VBA 매크로 실행

자동으로 VBA 프로젝트 로드
VBA를 사용한 응용프로그램 개발
프로젝트를 로드할 때마다 자동으로 VBA IDE 열기
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 >
자동으로 VBA 매크로 실행

acad.lsp와 같은 AutoCAD 시작 기능에서 VBARUN의 명령행 버전으로 호출하면 acad.dvb 파일에서 매크로를 자동으로 실행할 수 있습니다. 예를 들어 drawline으로 명명된 매크로를 자동으로 실행하려면 먼저 drawline 매크로를 acad.dvb 파일에 저장하십시오. 그런 다음, notepad.exe를 실행하고 acad.lsp에 다음 행을 작성하거나 추가하십시오.

(defun S::STARTUP()
     (command "_-vbarun" "drawline")
)

AcadStartup으로 매크로를 명명하면 VBA를 로드할 때 매크로가 자동으로 실행됩니다. AcadStartup으로 명명된 acad.dvb 파일의 매크로는 VBA를 로드할 때 자동으로 실행됩니다.


프로젝트를 로드할 때마다 자동으로 VBA IDE 열기

자동으로 VBA 매크로 실행
VBA를 사용한 응용프로그램 개발
문서가 없는 상태에서 작업
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 >
프로젝트를 로드할 때마다 자동으로 VBA IDE 열기

VBA 프로젝트 열기 대화상자에는 대화식 개발 환경을 자동으로 열 수 있는 옵션이 있습니다. 대화상자의 왼쪽 하단에 있는 Visual Basic Editor 열기 확인란을 선택하면 VBA 프로젝트가 로드될 때마다 VBA IDE가 자동으로 열립니다. 이 옵션은 다시 끌 때까지 계속 설정되어 있습니다.

주VBA 프로젝트 열기 대화상자에 액세스하려면 명령행에 VBALOAD를 입력합니다. 로드할 프로젝트를 선택할 수 있는 대화상자가 열립니다. VBA 프로젝트 열기 대화상자가 보이지 않으면 대부분은 시스템 변수 FILEDIA가 꺼져있기 때문입니다. 이 시스템 변수는 대화상자의 화면 표시를 켜고 끕니다. FILEDIA를 다시 켜려면 1로 설정하십시오.


문서가 없는 상태에서 작업

프로젝트를 로드할 때마다 자동으로 VBA IDE 열기
VBA를 사용한 응용프로그램 개발
응용프로그램 배포
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 >
문서가 없는 상태에서 작업

0 문서 상태는 AutoCAD에 열린 도면이 없는 상태를 말합니다. 0 문서 상태에서 VBA에 대한 작업을 수행하는 경우 몇 가지 사항을 고려해야 합니다.

  • ThisDrawing 객체는 0 문서 상태에서 정의되지 않습니다. ThisDrawing을 사용하려고 하면 오류가 발생하게 됩니다.
  • 문서 종속 객체도 0 문서 상태에서 정의되지 않습니다. 문서 종속 객체는 AutoCAD 객체 모형의 Document 객체에 속하는 객체입니다. Application 또는 MenuBar 객체와 같이 문서 종속이 아닌 객체 관련 작업은 허용됩니다.
  • AutoCAD에는 0 문서 상태의 명령행이 없습니다. AutoCAD가 0 문서 상태일 때 AutoCAD 명령행에 접근하려고 하면 오류가 발생합니다.


응용프로그램 배포

문서가 없는 상태에서 작업
VBA를 사용한 응용프로그램 개발
Visual Basic 6 응용프로그램 배포
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 >
응용프로그램 배포

VBA 응용프로그램의 배포 방법에는 다음과 같은 2가지가 있습니다.

  • AutoCAD 도면 파일에 포함
  • VBA 프로젝트 파일에 저장

응용프로그램에 적합한 배포 옵션을 선택해야 합니다. 현재 도면에는 적용 가능하지만 다른 도면에는 접근할 수 없는 응용프로그램이 도면에 포함되기도 합니다. 응용프로그램을 도면에 포함시키면 도면을 열 때 마다 항상 응용프로그램이 로드되므로 사용자가 사용할 수 있습니다.

많은 사람들이 사용하고 자주 업데이트되는 응용프로그램은 다른 도면을 열고 닫아야 하거나 자주 사용되지 않으므로 VBA 프로젝트 파일에 저장할 수 있습니다. 따라서 응용프로그램에 하나의 중앙 위치가 있으므로 모든 사람들은 최신 버전을 확실하게 사용할 수 있습니다.

포함된 프로젝트와 VBA 프로젝트 파일에 대한 자세한 정보는 포함된 VBA 및 전역 VBA 프로젝트 이해를 참고하십시오.

이 단원의 항목

  • Visual Basic 6 응용프로그램 배포


Visual Basic 6 응용프로그램 배포

응용프로그램 배포
응용프로그램 배포
64비트 마이그레이션
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 > 응용프로그램 배포 >
Visual Basic 6 응용프로그램 배포

Visual Basic 6 응용프로그램 또는 처리가 끝난 다른 응용프로그램은 AutoCAD 도면에 저장할 수 없습니다. 이 응용프로그램은 독립 실행형 실행 파일로 컴파일됩니다(EXE).


64비트 마이그레이션

Visual Basic 6 응용프로그램 배포
VBA를 사용한 응용프로그램 개발
VBA에서 AutoCAD 객체 인스턴스화
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 >
64비트 마이그레이션

Microsoft는 개발자에게 64비트 버전의 VBA를 제공하지 않으므로 사용자가 개발한 32비트 응용프로그램은 64비트 AutoCAD 릴리즈로 이동해야 합니다. 64비트에서 VBA는 32비트 및 64비트 “썽크” 도면층을 통해 액세스되는 프로세스 외 구성요소로 실행됩니다.

64비트 버전의 AutoCAD에서 VBA 동작이 32비트 AutoCAD의 VBA 동작과 반드시 일치하지는 않습니다. 예를 들어, VBA IDE가 활성 상태이거나 모달 윈도우가 표시된 경우 AutoCAD 윈도우를 다시 페인팅하는 동안 약간의 지연이 발생할 수 있습니다.

자세한 정보는 AutoCAD 마이그레이션 안내서를 참고하십시오.

이 단원의 항목

  • VBA에서 AutoCAD 객체 인스턴스화
  • 객체 ID 처리
  • Appendix of 32-비트 Methods


VBA에서 AutoCAD 객체 인스턴스화

64비트 마이그레이션
64비트 마이그레이션
객체 ID 처리
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 > 64비트 마이그레이션 >
VBA에서 AutoCAD 객체 인스턴스화

64비트 운영 체제에서는 32비트 및 64비트 응용프로그램을 모두 실행할 수 있지만 한 프로세스에서 두 유형을 혼합하여 사용할 수는 없습니다. 예를 들어, 32비트 DLL을 64비트 프로세스로 로드할 수 없으며 그 반대의 경우도 마찬가지입니다. 한 프로세스로 로드된 모든 실행 구성요소(EXE 및 DLL 파일)는 해당 프로세스의 이진 형식과 일치해야 합니다. 64비트 응용프로그램용 프로세스 내 구성요소는 가능한 많은 64비트 프로세스로 이동해야 합니다.

새로운 객체를 작성하려고 하면 오류가 발생할 수 있습니다. VB의 새 키워드에서 64비트 AutoCAD COM DLL을 로드하려고 합니다. VBA는 32비트 응용프로그램이므로 64비트 DLL을 로드할 수 없습니다. 예를 들어, 다음과 같은 코드는

Dim color As AcadAcCmColor
Set color = New AcadAcCmColor

또는

Dim color As New AcadAcCmColor
color.SomeMethod()

다음과 같이 수정하고 이동해야 합니다.

Dim color As AcadAcCmColor
Set color = AcadApplication.GetInterfaceObject(“Autocad.AcCmColor.17”).

IDispatch에서 파생된 모든 객체의 경우 위 문제는 AcadApplication.GetInterfaceObject(“ProgIdOfAcAnyObject”)를 사용하여 해결해야 합니다. IUnknown(예: AcSmSheetSet, AcSmSheetMgr 등)에서 파생된 클래스는 64비트 VBA 마이그레이션을 가질 수 없습니다. 그러한 프로세스를 VB .Net로 이동할 것을 권장합니다.


객체 ID 처리

VBA에서 AutoCAD 객체 인스턴스화
64비트 마이그레이션
Appendix of 32-비트 Methods
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 > 64비트 마이그레이션 >
객체 ID 처리

AutoCAD 2008 64비트부터 객체 ID는 64비트 정수 선종류에 의해 표현됩니다(__int64). 32비트 VBA의 값에 액세스하면 컴파일 오류가 발생합니다. 이전 메서드에 해당하는 “32”를 접미사로 사용하는 새로운 메서드 세트가 해결 방법으로 사용됩니다(예: ObjectID32(), OwnerID32()). 이 메서드에서는 64비트 정수 데이터 유형으로 내부적으로 매핑되는 LONG 데이터 유형을 사용합니다.

정확성을 위해 VBA에 필요한 각 객체 ID에 대해 32비트 객체 ID가 내부적으로 작성됩니다. 32비트 ID가 VBA 코드에서 AutoCAD로 다시 전달되는 경우 64비트 객체 ID를 반환하여 모든 용도에 내부적으로 사용되도록 이 ID는 64비트의 실제 ID로 매핑됩니다.

다음은 이동된 32비트 객체 ID 코드의 예제입니다.

원래 코드:

Dim splineObj As AcadSpline
Dim objectID As Long
objectID = splineObj.objectID
Dim tempObj As AcadObject
Set tempObj = ThisDrawing.ObjectIdToObject(objectID)

64비트 호환을 위해 이동된 코드:

Dim splineObj As AcadSpline
Dim objectID As Long
objectID = splineObj.objectID32
Dim tempObj As AcadObject
Set tempObj = ThisDrawing.ObjectIdToObject32(objectID)

또한 VBA 응용프로그램은 객체 ID 대신 객체의 핸들을 사용할 수 있습니다. 다음은 객체 ID 대신 핸들을 사용하는 방법을 보여주는 예제입니다.

원래 코드:

Dim splineObj As AcadSpline
Dim objectID As Long
objectID = splineObj.objectID
Dim tempObj As AcadObject
Set tempObj = ThisDrawing.ObjectIdToObject(objectID)

64비트 호환을 위해 이동된 코드:

Dim splineObj As AcadSpline
Dim objectHandle As String
objectHandle = splineObj.Handle
Dim tempObj As AcadObject
Set tempObj = ThisDrawing.HandleToObject(objectHandle)
주:다음 AutoCAD 버전에서는 VBA가 지원되지 않습니다. VBA 개발자는 VBA 코드를 VB.Net로 이동할 준비를 해야 합니다.


Appendix of 32-비트 Methods

객체 ID 처리
64비트 마이그레이션
기타 응용프로그램 및 Windows API와 상호 작용
ActiveX 및 VBA 개발자 안내서 > VBA를 사용한 응용프로그램 개발 > 64비트 마이그레이션 >
Appendix of 32-비트 Methods

다음 테이블에는 32비트 대체를 위해 AutoCAD 2008에 추가된 새로운 메서드가 나열됩니다.

64비트 시스템의 VBA 테이블 메서드
메서드 | 용도
GetBlockAttributeValue32 | 32비트 객체 ID를 사용하는 블록에 포함된 속성 정의 객체에 지정된 블록 셀에서 속성 값을 반환합니다.
GetBlockTableRecordId32 | 블록 유형 셀 및 nContent와 연관된 블록 테이블 레코드의 32비트 객체 ID를 가져옵니다.
GetDataLink32 | 데이터 링크 객체의 32비트 객체 ID를 반환합니다.
GetFieldId32 | 지정된 셀과 연관된 필드 객체의 32비트 객체 ID를 반환합니다.
GetGridLinetype32 | 모눈 선종류 객체의 32비트 객체 ID를 반환합니다.
Key32 | 64비트 시스템의 CopyObjects 연산에 원본 객체의 객체 ID를 지정합니다.
ObjectID32 | 64비트 시스템의 객체 ID를 가져옵니다.
ObjectIDtoObject32 | 64비트 시스템에 지정된 객체 ID에 해당하는 객체를 가져옵니다.
OwnerID32 | 64비트 시스템에 대한 소유자(상위) 객체의 객체 ID를 가져옵니다.
SetBlockAttributeValue32 | 32비트 객체 ID를 사용하는 블록 및 nContent에 포함된 속성 정의 객체에 지정된 블록 셀에서 속성 값을 설정합니다.
SetBlockTableRecordId32 | 블록 유형 셀 및 nContent와 연관된 32비트 객체 ID 블록 테이블 레코드를 설정합니다.
SetDataLink32 | 데이터 링크 객체의 32비트 객체 ID를 설정합니다.
SetFieldId32 | 지정된 셀 및 nContent와 연관된 필드 객체의 32비트 객체 ID를 설정합니다.
SetGridLinetype32 | 눈금선 유형 객체의 32비트 객체 ID를 설정합니다.
Value32 | 64비트 시스템에 대해 새로 작성된 복제 객체의 객체 ID 또는 현재 특성 값을 지정합니다.


기타 응용프로그램 및 Windows API와 상호 작용

Appendix of 32-비트 Methods
Visual LISP 응용프로그램과 상호 작용
ActiveX 및 VBA 개발자 안내서 >
기타 응용프로그램 및 Windows API와 상호 작용

ActiveX 기술을 사용하면 다른 AutoCAD 응용프로그램 및 Microsoft Excel이나 Microsoft Word와 같이 ActiveX 사용 가능한 다른 응용프로그램과 정보를 쉽게 교환할 수 있습니다. 이 장에서는 다른 응용프로그램과의 상호 작용을 위한 몇 가지 기본 프로시저대해 알아봅니다.

이 단원의 항목

  • Visual LISP 응용프로그램과 상호 작용
  • 다른 Windows 응용프로그램과 상호 작용
  • VBA에서 Windows API에 접근


Visual LISP 응용프로그램과 상호 작용

기타 응용프로그램 및 Windows API와 상호 작용
기타 응용프로그램 및 Windows API와 상호 작용
다른 Windows 응용프로그램과 상호 작용
ActiveX 및 VBA 개발자 안내서 > 기타 응용프로그램 및 Windows API와 상호 작용 >
Visual LISP 응용프로그램과 상호 작용

Visual LISP® 응용프로그램에는 ActiveX® 객체 전체에 대한 접근 권한이 있습니다. 이들 응용프로그램은 ActiveX 메서드를 호출하고 ActiveX 특성을 설정 및 검색할 수 있습니다. 그 외에, Visual LISP 응용프로그램은 VBARUN 명령을 통해 VBA 매크로를 실행할 수도 있습니다.

ActiveX와 VBA 응용프로그램은 SendCommand 명령을 통해 Visual LISP 응용프로그램을 실행할 수 있습니다. 이 메서드에서는 ActiveX와 VBA 응용프로그램이 AutoCAD 명령행으로 명령을 보낼 수 있습니다.

Visual LISP를 통해 ActiveX 객체에 접근하는 데 대한 자세한 정보는 AutoLISP Developer’s Guide를 참고하십시오.


다른 Windows 응용프로그램과 상호 작용

Visual LISP 응용프로그램과 상호 작용
기타 응용프로그램 및 Windows API와 상호 작용
다른 응용프로그램의 ActiveX 객체 라이브러리 참조
ActiveX 및 VBA 개발자 안내서 > 기타 응용프로그램 및 Windows API와 상호 작용 >
다른 Windows 응용프로그램과 상호 작용

AutoCAD® ActiveX 기술을 사용하면 Microsoft Excel 또는 Microsoft Word와 같이 다른 ActiveX 사용 응용프로그램과 정보를 쉽게 교환할 수 있습니다. 이 기능은 AutoCAD 정보를 AutoCAD 도면 이외의 형식으로 수집, 저장하고 표시할 수 있도록 해줍니다. 또한 이들 응용프로그램의 정보를 AutoCAD로 다시 읽어서 AutoCAD 객체를 작성하거나 조작할 수도 있습니다. 이러한 기술을 사용하는 예로, AutoCAD 도면의 객체에서 재료 명세서(BOM)를 Microsoft Excel 스프레드시트로서 작성하기를 들 수 있습니다.

AutoCAD ActiveX 객체 모형을 사용하여 코드를 작성하는 방법에 대해서는 이미 배웠습니다. 다른 ActiveX 사용 응용프로그램과 정보를 교환하려면 다른 응용프로그램의 ActiveX 객체 모형을 간단하게 참조하고 객체를 활용하는 데 필요한 코드를 작성해야 합니다.

주이 장에서는 상호 응용프로그램 프로그래밍의 기능에 대해서만 간략히 소개합니다. 이 내용은 AutoCAD에 고유한 것이 아니므로 Microsoft 문서와 다른 프로그래밍 안내서에 설명되어 있습니다.

ActiveX 객체 모형간에 정보 교환

  1. 다른 응용프로그램의 ActiveX 객체 모형을 참조합니다.

    그러면 코드가 다른 객체 모형의 객체에 대한 이름과 관계를 인식하게 됩니다.

  2. 다른 응용프로그램의 복제를 작성합니다.

    그러면 다른 객체 모형의 기본 객체에 대한 유효한 객체가 작성(인스턴스화)됩니다.

  3. AutoCAD 객체 모형과 다른 응용프로그램의 객체 모형을 모두 사용하여 코드를 작성합니다.

    이렇게 하여 데이터 교환이 발생하는 것입니다.

이 단원의 항목

  • 다른 응용프로그램의 ActiveX 객체 라이브러리 참조
  • 다른 응용프로그램의 복제 작성
  • 다른 응용프로그램의 객체를 사용한 프로그래밍


다른 응용프로그램의 ActiveX 객체 라이브러리 참조

다른 Windows 응용프로그램과 상호 작용
다른 Windows 응용프로그램과 상호 작용
다른 응용프로그램의 복제 작성
ActiveX 및 VBA 개발자 안내서 > 기타 응용프로그램 및 Windows API와 상호 작용 > 다른 Windows 응용프로그램과 상호 작용 >
다른 응용프로그램의 ActiveX 객체 라이브러리 참조

다른 응용프로그램에 접근하는 코드를 작성하려면 다른 응용프로그램에서 객체를 사용할 수 있도록 VBA에 명령해야 합니다. 다른 응용프로그램의 객체 라이브러리에서 참조를 설정하여 이 작업을 수행합니다. 이것은 해당 응용프로그램의 모든 객체, 메서드, 특성, 상수 및 이벤트가 정의되어 있는 컴퓨터의 파일입니다.

객체 라이브러리에 대한 참조는 VBA IDE를 통해서 할 수 있습니다 VBA IDE의 도구 메뉴 아래에 참조라고 하는 메뉴 옵션이 있습니다. 이 메뉴 옵션은 VBA가 시스템에서 찾은 모든 객체 라이브러리를 나열하는 대화상자를 표시합니다. 라이브러리에 대한 참조를 작성하려면 리스트에서 라이브러리를 선택하면 됩니다. 점검 상자에 선택 표시되어 있는 라이브러리는 현재 프로젝트에서 이미 참조한 것입니다. 예를 들어 Microsoft Excel 객체 라이브러리를 추가하려면 리스트에서 Microsoft Excel 객체 라이브러리 항목을 선택하십시오.

다른 응용프로그램의 객체 라이브러리에 대한 참조가 작성되면, VBA 객체 검색기를 사용하여 응용프로그램의 객체 리스트를 볼 수 있습니다.

주이 객체 모형을 사용할 각 VBA 프로젝트마다 참조를 설정해야 합니다. 한 프로젝트에 대한 참조를 설정하더라도 다른 프로젝트에 대한 참조가 자동으로 설정되지는 않습니다. 이는 성능상의 이유 때문입니다.

다른 응용프로그램의 객체 라이브러리에 대한 참조를 작성하려면

  1. VBA IDE에서 도구 메뉴를 열고 참조 메뉴 옵션을 선택합니다.
  2. 접근할 응용프로그램의 사용 가능한 참조 리스트에서 항목을 찾아서 선택합니다.
  3. 대화상자를 변경한 다음 확인을 선택하여 닫습니다.


다른 응용프로그램의 복제 작성

다른 응용프로그램의 ActiveX 객체 라이브러리 참조
다른 Windows 응용프로그램과 상호 작용
다른 응용프로그램의 객체를 사용한 프로그래밍
ActiveX 및 VBA 개발자 안내서 > 기타 응용프로그램 및 Windows API와 상호 작용 > 다른 Windows 응용프로그램과 상호 작용 >
다른 응용프로그램의 복제 작성

응용프로그램의 객체 라이브러리가 참조되면 응용프로그램의 복제를 작성해야 합니다. 이 방법은 다른 응용프로그램을 프로그래밍 방식으로 시작하는 데 필요한 고급 방법이기 때문에 그에 대해 작업하려면 코드에 적합한 객체가 있어야 합니다.

이를 위해 먼저 다른 응용프로그램을 나타내는 변수를 선언하십시오. Dim문을 사용하여 내장 객체와 동일한 방식으로 수행합니다. Dim 문에서는 응용프로그램의 종류를 지정해 놓아야 합니다. 예를 들어 다음 Dim 문은 Excel.Application 스타일의 객체 변수를 선언합니다.

Dim ExcelAppObj as Excel.Application

변수를 선언한 뒤에는 Set 문을 New 키워드와 함께 사용하여 변수를 응용프로그램의 활성 복제와 똑같이 설정하십시오. 예를 들어 다음 Set 문은 위에서 선언한 변수를 Excel 응용프로그램과 똑같이 설정합니다. New 키워드는 Excel의 새로운 세션을 시작합니다.

Set ExcelAppObj = New Excel.Application
주일부 응용프로그램에서는 응용프로그램의 활성 복제를 한번에 하나만 허용합니다. 그러한 응용프로그램에서 New 키워드를 사용하면 기존 복제에 대한 참조가 설정되고 응용프로그램의 새로운 세션이 시작되지 않습니다.


다른 응용프로그램의 객체를 사용한 프로그래밍

다른 응용프로그램의 복제 작성
다른 Windows 응용프로그램과 상호 작용
다른 응용프로그램 종료
ActiveX 및 VBA 개발자 안내서 > 기타 응용프로그램 및 Windows API와 상호 작용 > 다른 Windows 응용프로그램과 상호 작용 >
다른 응용프로그램의 객체를 사용한 프로그래밍

객체 라이브러리가 참조되고 응용프로그램의 복제가 새로 작성되었으므로 해당 응용프로그램에서 객체를 작성하고 조작할 수 있습니다. 객체 모형에 정의된 객체, 메서드 및 특성을 모두 사용할 수 있습니다. 예를 들어 앞 절의 변수 선언을 사용하면 다음 코드 행은 Excel 세션을 사용자에게 보이게 만듭니다.

ExcelAppObj.Visible = TRUE

코드를 작성하려는 응용프로그램의 객체 모형에 대해 잘 알고 있어야 합니다. VBA 객체 검색기나 응용프로그램의 도움말 파일을 사용하여 참조할 객체 모형에 대해 알아볼 수 있습니다.

이 단원의 항목

  • 다른 응용프로그램 종료


다른 응용프로그램 종료

다른 응용프로그램의 객체를 사용한 프로그래밍
다른 응용프로그램의 객체를 사용한 프로그래밍
VBA에서 Windows API에 접근
ActiveX 및 VBA 개발자 안내서 > 기타 응용프로그램 및 Windows API와 상호 작용 > 다른 Windows 응용프로그램과 상호 작용 > 다른 응용프로그램의 객체를 사용한 프로그래밍 >
다른 응용프로그램 종료

프로그래밍 방식으로 응용프로그램을 시작하면 컴퓨터의 메모리를 차지하게 됩니다. 응용프로그램 사용을 끝나면 응용프로그램을 종료해야 시스템 자원을 사용할 수 있습니다.

객체 모형은 각각 다르더라도 대부분, 응용프로그램을 완전히 종료하는 데 사용할 수 있는 Application 객체의 Quit 메서드가 있습니다. 예를 들어 앞 절의 변수 선언을 사용하면 다음 코드 행은 Excel을 종료합니다.

ExcelAppObj.Application.Quit
주객체 변수의 범위를 무시하거나 벗어난다고 해서 반드시 응용프로그램이 종료하는 것은 아닙니다. 응용프로그램은 해당 메모리가 지워지도록 항상 적합한 메서드를 사용해서 종료해야 합니다.

Excel 스프레드시트에 AutoCAD 속성 나열하기

이 서브루틴은 현재 도면에서 블록 참조를 모두 찾습니다. 그런 다음, 그러한 블록 참조에 부착된 속성을 찾아서 Excel 스프레드시트에 나열합니다. 이 예제를 실행하려면 다음을 수행하십시오.

  1. 속성과 함께 블록 참조가 들어 있는 도면을 엽니다 (견본 도면 sample/activeX/attrib.dwg 안에 그러한 블록 참조가 들어 있습니다).
  2. AutoCAD VBAIDE 명령을 사용하여 VBA IDE를 엽니다.
  3. VBA IDE에서 도구 [image] 참조 메뉴 옵션을 사용하여 Microsoft Excel 8.0 객체 모형을 선택합니다.
  4. 이 서브루틴을 VBA 코드 윈도우로 복사하고 실행합니다.
Sub Ch12_Extract()
    Dim Excel As Excel.Application
    Dim ExcelSheet As Object
    Dim ExcelWorkbook As Object
    Dim RowNum As Integer
    Dim Header As Boolean
    Dim elem As AcadEntity
    Dim Array1 As Variant
    Dim Count As Integer
    ' Launch Excel.
    Set Excel = New Excel.Application
    ' Create a new workbook and find the active sheet.
    Set ExcelWorkbook = Excel.Workbooks.Add
    Set ExcelSheet = Excel.ActiveSheet
    ExcelWorkbook.SaveAs "Attribute.xls"
    RowNum = 1
    Header = False
    ' Iterate through model space finding
    ' all block references.
    For Each elem In ThisDrawing.ModelSpace
        With elem
            ' When a block reference has been found,
            ' check it for attributes
            If StrComp(.EntityName, "AcDbBlockReference", 1) _
                = 0 Then
                If .HasAttributes Then
                    ' Get the attributes
                    Array1 = .GetAttributes
                    ' Copy the Tagstrings for the
                    ' Attributes into Excel
                    For Count = LBound(Array1) To UBound(Array1)
                        If Header = False Then
                            If StrComp(Array1(Count).EntityName, _
                                  "AcDbAttribute", 1) = 0 Then
                                ExcelSheet.Cells(RowNum, _
                                    Count + 1).value = _
                                    Array1(Count).TagString
                            End If
                        End If
                    Next Count
                    RowNum = RowNum + 1
                    For Count = LBound(Array1) To UBound(Array1)
                        ExcelSheet.Cells(RowNum, Count + 1).value _
                                    = Array1(Count).textString
                    Next Count
                    Header = True
                End If
            End If
        End With
    Next elem
    Excel.Application.Quit
End Sub


VBA에서 Windows API에 접근

다른 응용프로그램 종료
기타 응용프로그램 및 Windows API와 상호 작용
ActiveX/VBA 튜토리얼: Garden 경로 설계
ActiveX 및 VBA 개발자 안내서 > 기타 응용프로그램 및 Windows API와 상호 작용 >
VBA에서 Windows API에 접근

Windows® API 프로시져는 대부분의 Windows 응용프로그램에서 사용할 수 있습니다. 이러한 프로시져를 사용하면 응용프로그램의 기능을 확장할 수 있습니다.

Windows API를 사용하면 시스템에 설치되었거나 실행 중인 다른 프로그램, 시스템에서 정보가 있는 장소 및 시스템에 대한 현재 컨트롤 설정값 등과 같은 현재 시스템에 관한 정보를 얻을 수 있습니다. 뿐만 아니라 조이스틱, 멀티미디어, 음향 조절에도 접근할 수 있습니다. 이러한 작업은 Windows API에서 제공하는 여러가지 기능들 중에서 몇 가지만 나타낸 데 불과합니다.

Windows API를 사용하려면 먼저 응용프로그램에서 API를 선언해야 합니다. 선언은 Declare 문을 사용하여 수행됩니다. Declare 문에는 다음과 같은 여러 가지 정보가 필요합니다.

  • 사용할 프로시져가 포함된 DLL(동적 링크 라이브러리)의 이름
  • DLL에 나타나 있는 프로시져 이름
  • 응용프로그램에서 사용할 프로시져의 이름
  • 프로시져에서 수신할 매개변수
  • 반환 값 데이터 유형(호출할 프로시져가 함수인 경우)

Declare 문을 VBA 모듈에 넣을 수 있습니다. 표준 모듈에 넣을 경우, Private 키우드를 사용하여 범위를 제한하지 않는 한, 응용프로그램의 모든 모듈에서 프로시져를 사용할 수 있습니다. Declare 문을 클래스나 양식 모듈에 넣을 경우에는 해당 모듈에서만 프로시져를 사용할 수 있습니다. 프로시져가 선언되면 응용프로그램의 다른 프로시져와 마찬가지로 해당 프로시져를 호출할 수 있습니다.

Declare 문을 적절하게 사용하려면 많은 연습이 필요합니다. Declare 문을 잘못 사용하기 쉬우며 엄청난 결과가 뒤따릅니다. 새로운 Declare 문을 시도하기 전에 반드시 모든 정보를 활성 응용프로그램에 저장해야 합니다.

Declare 문 사용에 도움이 될 수 있도록 Microsoft에서는 가장 일반적으로 많이 사용되는 선언을 나열한 파일을 제공합니다. 이 파일은 Win32api.txt라고 하며 Visual Basic 6와 Office에 포함되어 있습니다. 이 파일을 검색하여 필요한 프로시져를 찾아보고, 제공된 Declare 문을 코드에 복사할 수 있습니다.

Microsoft VBA 설명서에는 Declare 문에 대한 자세한 정보와 사용 예제가 들어 있습니다. Microsoft Windows API 참조서는 Microsoft Developer Network CD subscription의 일부로 사용할 수 있으며, Windows API에서 사용할 수 있는 모든 프로시져에 대한 참조를 제공합니다. Dan Appleman의 Visual Basic Programmer's Guide to the Win32 API도 Visual Basic 6 프로그래머를 위한 훌륭한 자료입니다.


ActiveX/VBA 튜토리얼: Garden 경로 설계

VBA에서 Windows API에 접근
환경 확인
ActiveX 및 VBA 개발자 안내서 >
ActiveX/VBA 튜토리얼: Garden 경로 설계

이 튜토리얼은 ActiveX 및 VBA(Visual Basic for Applications) 사용 방법과 AutoCAD에 매크로를 추가하는 방법을 보여줍니다. 이 튜토리얼은 조경 건축을 지향하지만 개념에 있어서는 모든 응용프로그램 영역과 관련되어 있습니다.

이 튜토리얼은 VBA 프로그램을 처음 사용하는 숙련된 AutoCAD 사용자들을 위해 설계되었습니다.

이 단원의 항목

  • 환경 확인
  • 목표 정의
  • 첫 번째 함수 작성
  • 입력
  • 경로 윤곽선 그리기
  • 타일 그리기
  • 전체 결합
  • 코드를 통한 단계별 실행
  • 매크로 실행
  • 대화상자 인터페이스 추가


환경 확인

ActiveX/VBA 튜토리얼: Garden 경로 설계
ActiveX/VBA 튜토리얼: Garden 경로 설계
목표 정의
ActiveX 및 VBA 개발자 안내서 > ActiveX/VBA 튜토리얼: Garden 경로 설계 >
환경 확인

이 튜토리얼에서는 AutoCAD® VBA IDE(VBA 통합 개발 환경)가 필요합니다. VBA IDE는 AutoCAD 설치 프로그램의 전체 설치 옵션을 사용하여 자동으로 설치됩니다. AutoCAD를 설치할 때 사용자화 옵션을 선택하면 VBA IDE가 설치되지 않을 수도 있습니다. 이런 경우에는 AutoCAD 설치 프로그램을 다시 실행하여 VBA IDE를 설치해야 합니다.

VBA IDE 설치 여부를 테스트하려면

  1. AutoCAD를 시작합니다.
  2. 명령행에서 vbaide를 입력한 후 ENTER 키를 누르십시오.

    VBA IDE가 열리면 VBA IDE는 설치되어 있습니다. “AutoCAD VBA가 현재 설치되어 있지 않습니다.”라는 메시지가 표시되면 VBA IDE가 설치되어 있지 않는 것입니다.


목표 정의

환경 확인
ActiveX/VBA 튜토리얼: Garden 경로 설계
첫 번째 함수 작성
ActiveX 및 VBA 개발자 안내서 > ActiveX/VBA 튜토리얼: Garden 경로 설계 >
목표 정의

이 튜토리얼의 목표는 Garden Path를 그리면서 원형 콘크리트 타일로 이를 채우는 AutoCAD의 새로운 매크로를 개발하는 것입니다. 새로운 매크로는 다음과 같은 프롬프트 순서를 가지고 있습니다.

명령: gardenpath

경로의 시작점: 시작점을 지정합니다.

경로의 끝점: 끝점을 지정합니다.

경로의 반폭: 숫자를 지정합니다.

타일의 반지름: 숫자를 지정합니다.

타일 간 간격: 숫자를 지정합니다.

매크로는 먼저 사용자가 시작점과 끝점을 입력하도록 프롬프트하며 경로의 중심선을 지정합니다. 다음으로 사용자가 경로의 반폭 및 원형 타일의 반지름을 입력하도록 제시합니다. 마지막으로 사용자는 타일 간 간격을 입력합니다. 경로의 중심선에서 반폭을 시각화하는 작업이 편리하므로 사용자는 경로의 전폭 대신 반폭을 사용합니다.


첫 번째 함수 작성

목표 정의
ActiveX/VBA 튜토리얼: Garden 경로 설계
입력
ActiveX 및 VBA 개발자 안내서 > ActiveX/VBA 튜토리얼: Garden 경로 설계 >
첫 번째 함수 작성

사용자는 일련의 함수 및 서브루틴을 사용하여 Gardenpath 매크로를 개발합니다. 수많은 서브루틴에서 각도의 조작이 필요합니다. ActiveX는 라디안으로 각도를 지정하나, 대부분의 사용자는 도의 관점에서 각도를 생각함으로 도를 라디안으로 변환하는 함수를 작성하여 시작해야 합니다.

도를 라디안으로 변환하려면

  1. 명령행에서 vbaide를 입력한 후 ENTER 키를 누르십시오.
  2. VBA IDE의 뷰 메뉴에서 Code를 클릭하여 Code 윈도우를 여십시오.
  3. Code 윈도우에서 다음 코드를 입력하십시오.
    Const pi = 3.14159
    ' Convert angle in degrees to radians
    Function dtr(a As Double) As Double
        dtr = (a / 180) * pi
    End Function

    행 Function dtr(a As Double) As Double을 입력한 후 ENTER 키를 누르면 바로 End Function이 자동으로 추가됩니다. 이를 통해 모든 서브루틴 및 함수에 연관된 End 문이 있도록 합니다.

    이제 코드를 보십시오. 먼저 상수 pi는 3.141159 값으로 정의됩니다. 따라서, 해당 값을 사용할 필요가 있을 때마다 3.141159를 입력하는 대신 단어 pi를 사용할 수 있습니다.

    다음으로 dtr(degrees to radians의 약어)이라고 하는 함수를 정의합니다. 함수 dtr은 도의 각도인 하나의 인수 a를 취합니다. 각도를 180도로 나누어 그 결과값을 구한 후 이 값에 pi를 곱합니다. 작은 따옴표로 시작하는 행은 주석입니다. VBA는 작은 따옴표 뒤에 오는 행의 모든 문자를 무시합니다.

    이제 이 함수는 프로젝트를 통해 다른 서브루틴에서 사용될 수 있습니다.

  4. 작업을 저장하십시오. 파일 [image] Global1 저장을 클릭합니다. 프로젝트를 gardenpath.dvb으로 명명하십시오.

다음, 함수를 추가하여 점 간 거리를 계산하십시오.

두 점 간 거리를 계산하려면

  1. dtr 함수 뒤에 다음 코드를 입력하십시오.
    ' Calculate distance between two points
    Function distance(sp As Variant, ep As Variant) _
     As Double
        Dim x As Double
        Dim y As Double
        Dim z As Double
        x = sp(0) - ep(0)
        y = sp(1) - ep(1)
        z = sp(2) - ep(2)
        distance = Sqr((Sqr((x ^ 2) + (y ^ 2)) ^ 2) + (z ^ 2))
    End Function
  2. 작업을 저장하십시오.


입력

첫 번째 함수 작성
ActiveX/VBA 튜토리얼: Garden 경로 설계
변수 선언
ActiveX 및 VBA 개발자 안내서 > ActiveX/VBA 튜토리얼: Garden 경로 설계 >
입력

Gardenpath 매크로는 사용자에게 경로를 그리는 지점, 경로를 넓게 하는 방법, 콘크리트 타일의 크기 및 해당 타일의 간격 정도를 요청합니다. 사용자에게 이들 항목을 요청한 후 다양한 수를 계산하여 매크로의 나머지 부분에서 사용하는 서브루틴을 정의합니다.

이 서브루틴에서는 Utility 객체의 사용자 입력 방법을 사용합니다.

이 단원의 항목

  • 변수 선언
  • gpuser 서브루틴 입력


변수 선언

입력
입력
gpuser 서브루틴 입력
ActiveX 및 VBA 개발자 안내서 > ActiveX/VBA 튜토리얼: Garden 경로 설계 > 입력 >
변수 선언

다음 서브루틴에서는 여러 변수가 사용됩니다. 모든 변수는 서브루틴이 변수에 접근하기 전에 선언되어야 합니다.

VBA IDE의 Code 윈도우에서 행 Const pi = 3.14159 바로 다음에 다음 코드를 입력하십시오.

Private sp(0 To 2) As Double
Private ep(0 To 2) As Double
Private hwidth As Double
Private trad As Double
Private tspac As Double
Private pangle As Double
Private plength As Double
Private totalwidth As Double
Private angp90 As Double
Private angm90 As Double

이제 Code 윈도우의 맨 위에 있는 두 개의 드롭다운 리스트를 보십시오. 이들 리스트는 Object Box 및 Procedure/Event Box라고 하며 용어 (General) 및 (Declarations)를 현재 각각 표시합니다. 이들 리스트에서는 작업 중인 코드의 현재 섹션이 표시되며 리스트에서 단지 하나의 섹션을 선택함으로써 다른 섹션으로 빠르게 이동할 수 있습니다. (Declarations) 섹션은 둘 이상의 서브루틴에서 사용할 변수를 선언하는 적절한 위치입니다.


gpuser 서브루틴 입력

변수 선언
입력
경로 윤곽선 그리기
ActiveX 및 VBA 개발자 안내서 > ActiveX/VBA 튜토리얼: Garden 경로 설계 > 입력 >
gpuser 서브루틴 입력

gpuser 서브루틴은 garden path를 그리는 데 필요한 정보를 제시합니다. distance 함수 뒤에 다음 코드를 입력하십시오.

' Acquire information for garden path
Private Sub gpuser()
    Dim varRet As Variant
    varRet = ThisDrawing.Utility.GetPoint( _
     , "Start point of path: ")
    sp(0) = varRet(0)
    sp(1) = varRet(1)
    sp(2) = varRet(2)
    varRet = ThisDrawing.Utility.GetPoint( _
     , "Endpoint of path: ")
    ep(0) = varRet(0)
    ep(1) = varRet(1)
    ep(2) = varRet(2)
    hwidth = ThisDrawing.Utility. _
     GetDistance(sp, "Half width of path: ")
    trad = ThisDrawing.Utility. _
     GetDistance(sp, "Radius of tiles: ")
    tspac = ThisDrawing.Utility. _
     GetDistance(sp, "Spacing between tiles: ")
    pangle = ThisDrawing.Utility.AngleFromXAxis( _
     sp, ep)
    totalwidth = 2 * hwidth
    plength = distance(sp, ep)
    angp90 = pangle + dtr(90)
    angm90 = pangle - dtr(90)
End Sub
gpuser 서브루틴에서 행 Dim varRet As Variant는 변수 varRet를 선언합니다. 이 변수는 이 서브루틴에서만 사용되기 때문에 (Declarations) 섹션 대신에 로컬로 여기에서 선언될 수 있습니다.
다음 행 varRet = ThisDrawing.Utility.GetPoint( , "Start point of path는 GetPoint 메서드를 호출합니다. 행의 밑줄은 긴 행을 보다 쉽게 읽을 수 있도록 하며 해당 행과 다음 행이 마치 동일한 행에 있는 것처럼 VBA에 알려줍니다. 한 행에 모든 코드를 배치하여 밑줄을 제거할 수 있습니다.
GetPoint 메서드에 접근하려면 현재 도면을 나타내는 ThisDrawing 객체를 먼저 사용해야 합니다. ThisDrawing을 입력한 후 마침표(.)를 입력하면, 해당 객체 내의 요소에 접근할 예정임을 의미합니다. 마침표를 입력한 후, Utility 및 다른 마침표를 입력합니다. 다시 한번 Utility 객체 내의 요소에 접근하게 됩니다. 마지막으로 GetPoint라는 이름을 가진 메서드를 입력하여 호출하십시오.
GetPoint 메서드는 두 개의 매개변수를 취합니다. 첫 번째 매개변수는 선택사항이며 사용되지 않을 수 있습니다. 매개변수를 공란으로 두고 그 점을 표시하도록 쉼표만 입력하십시오. 두 번째 매개변수는 프롬프트로 이 역시 선택사항입니다. 이 매개변수에서 사용자에게 시작점을 입력하도록 프롬프트하는 문자열이 입력하였습니다. 사용자가 입력한 점은 varRet 변수로 배치됩니다. 서브루틴의 다음 세 행은 사용자가 반환한 점을 sp 배열로 복사합니다.
끝점은 동일한 방식으로 반환됩니다.
GetDistance 메서드를 사용하여 경로의 반폭(hwidth), 타일의 반지름(trad) 및 타일 간의 간격(tspac)을 구합니다. GetDistance 메서드는 두 개의 매개변수를 취합니다. 첫 번째 매개변수는 기준점입니다. 이 값에 대한 시작점을 제공합니다. 두 번째 매개변수는 프롬프트이며 이에 대한 적절한 입력값을 표시하는 문자열을 제공합니다. GetDistance 메서드에서 흥미로운 사실은 이 메서드가 명령행에 입력된 값이나 AutoCAD에서 선택한 점 및 시작점 간의 거리를 반환할 수 있다는 점입니다.
이 서브루틴은 매크로에서 나중에 사용된 여러 변수에 대한 계산 과정을 계속 진행합니다. pangle 변수는 시작점에서 끝점까지의 각으로 설정되며 AngleFromXAxis 메서드를 사용하여 구합니다. 경로 폭은 반폭에 2를 곱해서 구합니다. plength 변수는 경로 길이로 설정되며 초기에 입력한 거리 함수를 사용하여 구합니다. 마지막으로 angp90 및 angm90에서 각각 90도를 더하고 뺀 경로 각을 계산하여 저장하십시오.
다음 설명에서는 gpuser로 구한 변수가 경로의 치수를 지정하는 방법을 나타내고 있습니다.

작업을 저장하십시오.


경로 윤곽선 그리기

gpuser 서브루틴 입력
ActiveX/VBA 튜토리얼: Garden 경로 설계
타일 그리기
ActiveX 및 VBA 개발자 안내서 > ActiveX/VBA 튜토리얼: Garden 경로 설계 >
경로 윤곽선 그리기

경로의 폭 및 위치를 구했으므로 윤곽선을 그릴 수 있습니다. gpuser 서브루틴 아래에 다음 코드를 추가하십시오.

' Draw outline of path
Private Sub drawout()
    Dim points(0 To 9) As Double
    Dim pline As AcadLWPolyline
    Dim varRet As Variant
    varRet = ThisDrawing.Utility.PolarPoint( _
        sp, angm90, hwidth)
    points(0) = varRet(0)
    points(1) = varRet(1)
    points(8) = varRet(0)
    points(9) = varRet(1)
    varRet = ThisDrawing.Utility.PolarPoint( _
        varRet, pangle, plength)
    points(2) = varRet(0)
    points(3) = varRet(1)
    varRet = ThisDrawing.Utility.PolarPoint( _
        varRet, angp90, totalwidth)
    points(4) = varRet(0)
    points(5) = varRet(1)
    varRet = ThisDrawing.Utility.PolarPoint( _
        varRet, pangle + dtr(180), plength)
    points(6) = varRet(0)
    points(7) = varRet(1)
    Set pline = ThisDrawing.ModelSpace. _
     AddLightWeightPolyline(points)
End Sub

이 서브루틴은 AddLightweightPolyline 메서드를 사용하여 경로의 윤곽선을 그립니다. 이 메서드는 1가지 매개변수인 폴리선을 구성하는 점의 배열을 취합니다. 폴리선 객체를 구성하는 모든 점을 찾아 이를 그려질 수 있도록 배열에 배치합니다. 이 폴리선에 필요한 점은 경로의 구석입니다.

경로의 구석을 찾으려면 PolarPoint 메서드를 사용하십시오. 이 메서드는 기준점에서의 주어진 거리 및 각도인 점을 찾습니다. 시작점(sp)로 시작하여 시계 반대 방향으로 작업하면서 경로의 첫 번째 구석을 찾으십시오. 이 구석은 경로의 반폭 거리(hwidth) 및 경로 각에서 -90도에 있습니다. 경로에 대해 닫힌 직사각형을 그리려고 하기 때문에 이 점은 배열의 첫 번째 및 마지막 점이 됩니다. 따라서 PolarPoint 메서드에서 반환되는 X 및 Y 좌표는 점 배열의 첫 번째 및 마지막 위치로 이동됩니다.

경로의 남아있는 구석은 경로의 길이 및 폭(plength 및 width)과 경로의 각을 사용하여 동일한 방식으로 발견됩니다. PolarPoint 메서드를 호출할 때마다 (varRet)로 반환되는 좌표는 점 배열로 복사됩니다.

모든 구석을 점 배열에서 확인하면 AddLightweightPolyline 메서드가 호출됩니다. ModelSpace 객체에서 이 메서드를 호출해야 합니다. 이 매크로를 실행하려는 경우 AutoCAD에서는 아직 폴리선을 볼 수 없습니다. 나중에 수행할 화면 업데이트 전에는 폴리선을 볼 수 없습니다.


타일 그리기

경로 윤곽선 그리기
ActiveX/VBA 튜토리얼: Garden 경로 설계
전체 결합
ActiveX 및 VBA 개발자 안내서 > ActiveX/VBA 튜토리얼: Garden 경로 설계 >
타일 그리기

이제 윤곽선을 그리는 서브루틴을 따라 사용자 입력 서브루틴을 개발하였으므로 원형 타일로 경로를 채울 준비를 합니다. 이 작업에는 일부 형상이 필요합니다.

VBA IDE의 Code 윈도우에서 drawout 서브루틴 뒤에 다음 코드를 입력하십시오.

' Place one row of tiles the given distance along path
' and possibly offset it
Private Sub drow(pd As Double, offset As Double)
    Dim pfirst(0 To 2) As Double
    Dim pctile(0 To 2) As Double
    Dim pltile(0 To 2) As Double
    Dim cir As AcadCircle
    Dim varRet As Variant
    varRet = ThisDrawing.Utility.PolarPoint( _
     sp, pangle, pd)
    pfirst(0) = varRet(0)
    pfirst(1) = varRet(1)
    pfirst(2) = varRet(2)
    varRet = ThisDrawing.Utility.PolarPoint( _
     pfirst, angp90, offset)
    pctile(0) = varRet(0)
    pctile(1) = varRet(1)
    pctile(2) = varRet(2)
    pltile(0) = pctile(0)
    pltile(1) = pctile(1)
    pltile(2) = pctile(2)
    Do While distance(pfirst, pltile) < (hwidth - trad)
        Set cir = ThisDrawing.ModelSpace.AddCircle( _
         pltile, trad)
        varRet = ThisDrawing.Utility.PolarPoint( _
         pltile, angp90, (tspac + trad + trad))
        pltile(0) = varRet(0)
        pltile(1) = varRet(1)
        pltile(2) = varRet(2)
    Loop
    varRet = ThisDrawing.Utility.PolarPoint( _
     pctile, angm90, tspac + trad + trad)
    pltile(0) = varRet(0)
    pltile(1) = varRet(1)
    pltile(2) = varRet(2)
    Do While distance(pfirst, pltile) < (hwidth - trad)
        Set cir = ThisDrawing.ModelSpace.AddCircle( _
         pltile, trad)
        varRet = ThisDrawing.Utility.PolarPoint( _
         pltile, angm90, (tspac + trad + trad))
        pltile(0) = varRet(0)
        pltile(1) = varRet(1)
        pltile(2) = varRet(2)
    Loop
End Sub
' Draw the rows of tiles
Private Sub drawtiles()
    Dim pdist As Double
    Dim offset As Double
    pdist = trad + tspac
    offset = 0
    Do While pdist <= (plength - trad)
        drow pdist, offset
        pdist = pdist + ((tspac + trad + trad) * Sin(dtr(60)))
        If offset = 0 Then
            offset = (tspac + trad + trad) * Cos(dtr(60))
        Else
            offset = 0
        End If
    Loop
End Sub

이 서브루틴을 작동하는 방법을 이해하려면 다음 설명을 참조하십시오. 서브루틴 drow는 첫 번째 인수로 지정된 경로를 따라 주어진 거리에서 타일 행을 그리며 두 번째 인수로 지정된 거리에 의해 경로에 수직을 이루는 행의 간격을 띄웁니다. 대체 행에서 타일의 간격을 띄워 더 많은 공간을 덮고 보다 만족할 수 있는 배열을 작성합니다.

drow 서브루틴에서는 PolarPoint 메서드를 사용하여 첫 번째 행의 위치를 찾아 첫 번째 인수가 지정하는 거리로 경로를 따라 이동합니다. 그 다음 서브루틴은 다시 PolarPoint 메서드를 사용하여 간격을 띄우기 위해 경로에 수직으로 이동합니다. 서브루틴은 While 문을 사용하여 경로의 가장자리에 접할 때까지 원을 계속 그립니다. 첫 번째 While 문의 PolarPoint 메서드는 두 개의 타일 반지름(trad) 및 두 개의 타일 반지름 사이의 공간(tspac) 거리에 대한 간격을 두어 다음 타일 위치로 이동합니다. 그 다음 두 번째 while 루프는 다른 가장자리에 접할 때까지 다른 방향으로 행에서 타일을 그립니다.

drawtiles 서브루틴은 drow를 반복적으로 호출하여 모든 타일 행을 그립니다. 서브루틴 While loop는 각 행에 drow를 호출하여 경로를 따라 이동합니다. 인접한 행의 타일은 이전 설명에서 나타난 바와 같이 정삼각형을 형성합니다. 이 삼각형의 모서리는 타일 간 간격에 반지름을 더한 값의 두 배입니다. 따라서 삼각법으로 행 간 경로에 따른 거리는 사인 60도에 이 양을 곱한 값이며 홀수 행의 간격띄우기는 이 양에 코사인 60도를 곱한 값입니다.

If 구문은 drawtiles에서 사용되어 다른 모든 행의 간격을 띄웁니다. 간격띄우기가 0과 같으면 앞서 설명한 대로 타일 중심선 간 간격에 코사인 60도를 곱한 값으로 설정하십시오. 간격띄우기가 0이 아닌 경우 0으로 설정하십시오. 이 값은 사용자가 원하는 대로 행의 간격띄우기를 대체합니다.

작업을 저장하십시오.


전체 결합

타일 그리기
ActiveX/VBA 튜토리얼: Garden 경로 설계
코드를 통한 단계별 실행
ActiveX 및 VBA 개발자 안내서 > ActiveX/VBA 튜토리얼: Garden 경로 설계 >
전체 결합

서브루틴을 Gardenpath 매크로와 결합할 준비를 합니다. VBA IDE의 Code 윈도우에서 drawtiles 서브루틴 뒤에 다음 코드를 입력하십시오.

' Execute command, calling constituent functions
Sub gardenpath()
    Dim sblip As Variant
    Dim scmde As Variant
    gpuser
    sblip = ThisDrawing.GetVariable("blipmode")
    scmde = ThisDrawing.GetVariable("cmdecho")
    ThisDrawing.SetVariable "blipmode", 0
    ThisDrawing.SetVariable "cmdecho", 0
    drawout
    drawtiles
    ThisDrawing.SetVariable "blipmode", sblip
    ThisDrawing.SetVariable "cmdecho", scmde
End Sub

path 서브루틴은 gpuser을 호출하여 필요한 입력값을 수집합니다. 그런 다음 GetVariable 메서드를 사용하여 BLIPMODE 및 CMDECHO 시스템 변수의 현재 값을 구하고 이 값을 sblip 및 scmde로 저장합니다. 그 다음 서브루틴은 SetVariable 메서드를 사용하여 이 시스템 변수 모두 0으로 설정함으로써 선택점 및 명령 반향을 비활성화되도록 합니다. 다음, 경로는 drawout 및 drawtiles 서브루틴을 사용하여 그려집니다. 마지막으로 SetVariable 메서드를 사용하여 시스템 변수를 원래 값으로 재설정합니다.

이 입력한 서브루틴은 서브루틴을 현재 모듈 내에 호출할 수 있는 Private 키워드로 시작하지 않는 유일한 서브루틴입니다. gardenpath 서브루틴을 사용자가 사용할 수 있어야 하므로 Private 키워드를 생략해야 합니다.

작업을 저장하십시오.


코드를 통한 단계별 실행

전체 결합
ActiveX/VBA 튜토리얼: Garden 경로 설계
매크로 실행
ActiveX 및 VBA 개발자 안내서 > ActiveX/VBA 튜토리얼: Garden 경로 설계 >
코드를 통한 단계별 실행

이제 실행할 코드를 통해 단계별로 매크로를 실행하십시오.

AutoCAD 도구 메뉴에서 매크로 [image] 매크로를 클릭하십시오. 매크로 대화상자에서 ThisDrawing.gardenpath를 선택하고 Step Into를 클릭하십시오.

VBA IDE를 gardenpath 매크로의 첫 번째 행이 강조 표시된 채로 화면 앞으로 가져옵니다. 강조 표시된 행은 막 실행되려는 코드의 행입니다. 행을 실행하려면 F8 키를 누르십시오. 실행될 코드의 다음 행은 gpuser 서브루틴입니다. gpuser 서브루틴을 한 단계씩 실행하려면 다시 F8 키를 누르십시오.

이제 gpuser 루틴을 시작합니다. 첫 번째 GetPoint 메서드를 강조하려면 F8 키를 한번 더 누르십시오. 이 행을 실행하기 전에 뷰 [image] 로컬 뷰를 클릭하여 로컬 윈도우를 여십시오. 이 윈도우가 VBA IDE의 맨 아래에 표시됩니다. 모든 로컬 변수 및 해당 값이 매크로 실행 중에 로컬 윈도우에 표시됩니다.

이제 F8 키를 눌러 GetPoint 메서드를 실행하십시오. 강조 표시가 사라지고 새로운 코드가 표시되지 않습니다. 이는 GetPoint 메서드가 AutoCAD에서 사용자가 점을 입력하도록 기다리기 때문입니다. AutoCAD 윈도우로 다시 전환하십시오. 명령행에서 GetPoint 호출에 지정한 프롬프트를 확인합니다. 점을 입력하십시오.

이제 컨트롤이 매크로로 반환합니다. GetPoint 메서드로 호출한 다음 행이 강조 표시됩니다. F8 키를 눌러 코드를 단계별로 계속 실행하십시오. 정보를 입력하는 경우 AutoCAD 윈도우로 다시 전환해야 합니다.


매크로 실행

코드를 통한 단계별 실행
ActiveX/VBA 튜토리얼: Garden 경로 설계
대화상자 인터페이스 추가
ActiveX 및 VBA 개발자 안내서 > ActiveX/VBA 튜토리얼: Garden 경로 설계 >
매크로 실행

매크로를 실행할 때마다 코드를 단계별로 실행할 필요가 없습니다. 매크로 [image] 매크로를 클릭하고 매크로를 선택한 다음 실행을 클릭하여 도구 메뉴에서 매크로를 실행할 수 있습니다. 이를 통해 사용자가 이를 확인하는 방식으로 실행 흐름을 확인할 수 있습니다. 다음 값을 입력하여 AutoCAD에서 매크로를 실행하십시오.

경로의 시작점; 2, 2

경로의 끝점; 9, 8

경로의 반폭; 2

타일의 반지름: .2

타일 간 간격; 0.1

이 예제에는 다음 도형에서 나타나는 것처럼 garden 경로를 그려야 합니다.

다양한 입력값을 지정하여 Gardenpath 매크로로 실험할 수 있습니다.


대화상자 인터페이스 추가

매크로 실행
ActiveX/VBA 튜토리얼: Garden 경로 설계
대화상자 작성
ActiveX 및 VBA 개발자 안내서 > ActiveX/VBA 튜토리얼: Garden 경로 설계 >
대화상자 인터페이스 추가

Gardenpath 매크로는 명령행 입력값을 승인하도록 작성됩니다. 대화상자를 추가하려면 VBA IDE의 양식을 사용합니다.

먼저 완료된 gardenpath.dvb 버전을 또 다른 파일, gpdialog.dvb로 복사하십시오. 그리고 나서 gpdialog.dvb를 AutoCAD로 끌어 놓으십시오.

이 단원의 항목

  • 대화상자 작성
  • 프로젝트 윈도우를 사용하여 프로젝트 검색
  • 기존 코드 업데이트
  • 대화상자에 코드 추가


대화상자 작성

대화상자 인터페이스 추가
대화상자 인터페이스 추가
프로젝트 윈도우를 사용하여 프로젝트 검색
ActiveX 및 VBA 개발자 안내서 > ActiveX/VBA 튜토리얼: Garden 경로 설계 > 대화상자 인터페이스 추가 >
대화상자 작성

작성한 대화상자에는 타일 모양 선택에 적합한 두 개의 옵션 버튼(원 또는 다각형)이 들어 있습니다. 또한, 대화상자에는 타일 반지름, 타일 간 간격 및 타일 면의 수(다각형 옵션 버튼을 선택한 경우에만 사용 가능)와 같이 수치 값을 입력하는 텍스트 상자가 들어 있습니다.

VBA IDE에서 대화상자를 작성하려면

  1. Insert 메뉴에서 User Form을 클릭하여 새로운 양식을 여십시오. 두 개의 윈도우, 도구상자 및 빈 사용자 양식이 표시됩니다.
  2. 하나씩 도구상자에서 다음 컨트롤을 선택하여 끌어 놓은 다음 사용자 양식에 이를 배치합니다. 다음 양식에서 설명하고 있는 것처럼 두 개의 옵션 버튼(

    ), 세 개의 레이블(

    ), 세 개의 입력란(

    ) 및 두 개의 명령 버튼(

    )을 배치합니다.

  3. 도구상자를 닫으십시오.

라디오 버튼 컨트롤 속성을 설정하려면

  1. 사용자 양식에서 OptionButton1 컨트롤을 선택하십시오. 뷰 메뉴에서 특성 윈도우를 클릭한 후 다음 OptionButton1의 특성을 변경하십시오.

    (Name) = gp_poly

    Caption = Polygon

    ControlTipText = Polygon Tile Shape

    Accelerator = P

  2. 사용자 양식에서 OptionButton2 컨트롤을 선택하십시오. 특성 윈도우에서 OptionButton2의 다음 특성을 변경하십시오.

    (Name) = gp_circ

    Caption = Circle

    ControlTipText = Circle Tile Shape

    Accelerator = I

레이블 컨트롤의 특성을 설정하려면

  1. 사용자 양식에서 Label1 컨트롤을 선택하십시오. 특성 윈도우에서 Label1의 다음 특성을 변경하십시오.

    (Name) = label_trad

    Caption = Radius of tiles

    TabStop = True

  2. 사용자 양식에서 Label2 컨트롤을 선택하십시오. 특성 윈도우에서 Label2의 다음 특성을 변경하십시오.

    (Name) = label_tspac

    Caption = Space between tiles

    TabStop = True

  3. 사용자 양식에서 Label3 컨트롤을 선택하십시오. 특성 윈도우에서 다음 Label3 특성을 변경하십시오.

    (Name) = label_tsides

    Caption = Number of sides

    TabStop = True

입력란 컨트롤의 특성을 설정하려면

  1. 사용자 양식에서 TextBox1 컨트롤을 선택하십시오. 특성 윈도우에서 다음 TextBox1의 특성을 변경하십시오.

    (Name) = gp_trad

  2. 사용자 양식에서 TextBox2 컨트롤을 선택하십시오. 특성 윈도우에서 다음 TextBox2의 특성을 변경하십시오.

    (Name) = gp_tspac

  3. 사용자 양식에서 TextBox3 컨트롤을 선택하십시오. 특성 윈도우에서 다음 TextBox3의 특성을 변경하십시오.

    (Name) = gp_tsides

명령 버튼 컨트롤 및 양식 윈도우의 특성을 설정하려면

  1. 사용자 양식에서 CommandButton1 컨트롤을 선택하십시오. 특성 윈도우에서 다음 CommandButton1의 특성을 변경하십시오.

    (Name) = accept

    Caption = OK

    ControlTipText = Accept the options

    Accelerator = O

    Default = True

  2. 사용자 양식에서 CommandButton2 컨트롤을 선택하십시오. 특성 윈도우에서 다음 CommandButton2의 특성을 변경하십시오.

    (Name) = cancel

    Caption = Cancel

    ControlTipText = Cancel the operation

    Accelerator = C

  3. 모든 컨트롤에 속하지 않는 양식의 배경 부분을 클릭하여 사용자 양식 자체를 선택하십시오. 특성 윈도우에서 양식의 다음 특성을 변경하십시오.

    (Name) = gpDialog

    Caption = Garden Path

    이제 사용자 양식이 다음과 같아야 합니다.

  4. 작업을 저장하십시오.


프로젝트 윈도우를 사용하여 프로젝트 검색

대화상자 작성
대화상자 인터페이스 추가
기존 코드 업데이트
ActiveX 및 VBA 개발자 안내서 > ActiveX/VBA 튜토리얼: Garden 경로 설계 > 대화상자 인터페이스 추가 >
프로젝트 윈도우를 사용하여 프로젝트 검색

VBA IDE에서, Project 윈도우에는 프로젝트 이름 및 위치, AutoCAD Objects라고 명명된 폴더와 Forms이라 명명된 폴더가 있습니다. (Toggle Folders를 클릭하여 폴더를 확인해야 합니다.) AutoCAD Objects 폴더를 여는 경우(이미 열려져 있는 경우 포함), 도면 아이콘 및 이름 ThisDrawing을 볼 수 있습니다. Forms 폴더를 여는 경우(이미 열려진 경우 포함), 양식 아이콘, 작성한 양식인 gpDialog 이름을 볼 수 있습니다.

Project 윈도우를 사용하여 코드를 통해 검색할 수 있으며 사용자가 작업하는 지점을 확인할 수 있습니다. 예를 들어 작성한 양식과 관련된 코드를 보려면 Project 윈도우에서 gpDialog를 강조 표시한 후 View Code를 클릭하십시오.

양식의 Code 윈도우가 표시됩니다.

이제 Project 윈도우에서 ThisDrawing을 강조 표시하십시오. View Code를 클릭하여 코드를 볼 수 있습니다. 이미 입력한 모든 코드는 이 윈도우에 있습니다.


기존 코드 업데이트

프로젝트 윈도우를 사용하여 프로젝트 검색
대화상자 인터페이스 추가
대화상자에 코드 추가
ActiveX 및 VBA 개발자 안내서 > ActiveX/VBA 튜토리얼: Garden 경로 설계 > 대화상자 인터페이스 추가 >
기존 코드 업데이트

대화상자를 작성하였으므로 코드를 수정하고 추가할 수 있습니다.

기존 코드를 수정하려면

  1. 아직 열려 있지 않은 경우 ThisDrawing의 코드를 여십시오.
  2. Declarations 섹션에서 다음 라인을 업데이트하십시오.
    Public trad As Double ' Updated
    Public tspac As Double ' Updated
    Public tsides As Integer ' Add
    Public tshape As String ' Add

    양식의 코드가 trad 및 tspac에 접근하므로 해당 정의를 업데이트하여 이를 공용으로 만듭니다. Private 변수는 정의된 모듈에서만 사용 가능하므로 변수를 공용으로 변경할 필요가 있습니다. 또한 다각형 타일 변의 수로 tsides를, 원 또는 다각형의 타일 쉐이프에 대한 사용자 선택 사항으로 tshape를 추가했습니다.

  3. gpuser 서브루틴으로 이동하십시오. 양식에서 이 정보를 얻을 수 있으므로 타일의 반지름 및 타일 간 간격을 구하는 두 행을 제거하십시오. 특히 다음을 제거하십시오.
    trad = ThisDrawing.Utility. _
         GetDistance(sp, "Radius of tiles: ")
    tspac = ThisDrawing.Utility. _
         GetDistance(sp, "Spacing between tiles: ")
  4. 양식을 로드하여 표시하는 행을 추가하십시오. 단계 3에서 제거된 행의 위치에 다음 행을 추가하십시오.
    Load gpDialog
    gpDialog.Show
  5. 원형 타일이나 다각형 타일을 그리는 코드 파일의 끝에 서브루틴을 추가하십시오.
    'Draw the tile with the designated shape
    Sub DrawShape(pltile)
        Dim angleSegment As Double
        Dim currentAngle As Double
        Dim angleInRadians As Double
        Dim currentSide As Integer
        Dim varRet As Variant
        Dim aCircle As AcadCircle
        Dim aPolygon As AcadLWPolyline
        ReDim points(1 To tsides * 2) As Double
        'Branch based on the type of shape to draw
        Select Case tshape
        Case "Circle"
            Set aCircle = ThisDrawing.ModelSpace. _
                          AddCircle(pltile, trad)
        Case "Polygon"
            angleSegment = 360 / tsides
            currentAngle = 0
            For currentSide = 0 To (tsides - 1)
                angleInRadians = dtr(currentAngle)
                varRet = ThisDrawing.Utility.PolarPoint(pltile, _
                         angleInRadians, trad)
                points((currentSide * 2) + 1) = varRet(0)
                points((currentSide * 2) + 2) = varRet(1)
                currentAngle = currentAngle + angleSegment
            Next currentSide
            Set aPolygon = ThisDrawing.ModelSpace. _
                            AddLightWeightPolyline(points)
            aPolygon.Closed = True
        End Select
    End Sub

    이 서브루틴은 Select Case 문을 사용하여 그려야 할 모양의 유형에 따라 프로그램의 컨트롤을 분기합니다. tshape 변수를 사용하여 모양의 유형을 판별합니다.

  6. 다음, drow 서브루틴으로 이동하십시오. 다음 두 개의 행을 찾아 보십시오.
    Set cir = ThisDrawing.ModelSpace.AddCircle(pltile, trad)

    이들 행을 변경하여 다음과 같이 적절한 모양의 타일을 그리십시오.

    DrawShape (pltile) ' Updated


대화상자에 코드 추가

기존 코드 업데이트
대화상자 인터페이스 추가
Visual LISP과 ActiveX/VBA 비교
ActiveX 및 VBA 개발자 안내서 > ActiveX/VBA 튜토리얼: Garden 경로 설계 > 대화상자 인터페이스 추가 >
대화상자에 코드 추가

이제 원형 타일 작성용 코드를 제거하고 DrawShape 서브루틴을 호출하여 적절한 모양을 대신 그리십시오.

대화상자에 이벤트 핸들러 추가하려면

  1. gpDialog의 Code 윈도우를 여십시오.
  2. 윈도우의 맨 위에 다음 코드를 입력하십시오.
    Private Sub gp_poly_Click()
        gp_tsides.Enabled = True
        ThisDrawing.tshape = "Polygon"
    End Sub
    Private Sub gp_circ_Click()
        gp_tsides.Enabled = False
        ThisDrawing.tshape = "Circle"
    End Sub

    서브루틴 gp_poly_Click() 및 gp_circ_Click()은 이전에 추가한 두 개의 옵션 컨트롤 뒤에 _Click이 추가된 이름으로 지정되었습니다. 이러한 서브루틴은 사용자가 해당 컨트롤을 클릭할 때 자동으로 실행됩니다. 또한 객체 상자에는 이름 특성에 따라 알파벳으로 정렬된 양식의 컨트롤이 나열되어 있습니다.

  3. Private Sub gp_poly_Click() 행에 커서를 올려 놓고 Procedure/Event Box를 여십시오.

    gp_poly 옵션 컨트롤에 응답할 수 있는 모든 이벤트 리스트를 볼 수 있습니다. 입력한 두 개의 서브루틴은 Click 이벤트를 처리합니다. 또한 사용자가 컨트롤을 두 번 클릭할 때 자동 실행할 DblClick 이벤트에 응답하도록 코드를 추가할 수 있습니다. 나열된 모든 이벤트의 코드를 추가할 수 있습니다. 이러한 서브루틴의 유형을 이벤트 핸들러라 합니다.

    이 두 개의 이벤트 핸들러에 대해 입력한 코드를 확인하십시오. 첫 번째 이벤트 핸들러는 gp_poly 옵션 컨트롤용 Click 이벤트에 응답합니다. 코드의 첫 번째 행은 변의 수에 대해 입력란이 사용 가능하게 합니다. 이 입력란은 다각형용으로만 사용 가능하므로 다각형 컨트롤을 선택하지 않은 경우 사용할 수 없습니다. 다음 코드 행은 tshape 변수를 Polygon으로 설정합니다.

    두 번째 이벤트 핸들러는 gp_circ 옵션 컨트롤용 Click 이벤트에 응답합니다. 이 핸들러는 변의 수에 대해 입력란을 사용 불가능하게 하고 tshape 변수를 Circle로 설정합니다.

  4. 확인 버튼에 대한 이벤트 핸들러를 추가하십시오.
    Private Sub accept_Click()
        If ThisDrawing.tshape = "Polygon" Then
            ThisDrawing.tsides = CInt(gp_tsides.text)
            If (ThisDrawing.tsides < 3#) Or _
                             (ThisDrawing.tsides > 1024#) Then
                MsgBox "Enter a value between 3 and " & _
                        "1024 for the number of sides."
                Exit Sub
            End If
        End If
        ThisDrawing.trad = CDbl(gp_trad.text)
        ThisDrawing.tspac = CDbl(gp_tspac.text)
        If ThisDrawing.trad < 0# Then
            MsgBox "Enter a positive value for the radius."
            Exit Sub
        End If
        If (ThisDrawing.tspac < 0#) Then
            MsgBox "Enter a positive value for the spacing."
            Exit Sub
        End If
        GPDialog.Hide
    End Sub

    이 코드는 마지막 선택한 모양이 다각형인지를 테스트합니다. 다각형인 경우 코드는 gp_tsides 컨트롤에서 변의 수를 검색합니다. 사용자가 입력한 값을 Text 특성에 저장합니다. 이것은 텍스트 문자열로 저장되므로 CInt 함수를 사용하여 문자열을 해당되는 정수로 변환합니다. 구하고 나면 이벤트 핸들러는 값의 범위를 테스트하여 3과 1024 사이에 있는 지 확인합니다. 그렇지 않은 경우 메시지를 표시하고 이벤트 핸들러를 추가 프로세스 없이 종료합니다. 그 결과 메시지가 표시되고 사용자는 값을 변경할 수 있습니다. 확인 버튼을 다시 클릭한 후, 이 이벤트 핸들러는 실행되어 값을 다시 테스트합니다.

    매크로에서 반지름과 간격 값을 구하지만 해당 값은 정수가 아닌 배정도이며 CDbl 함수를 사용하여 이 값을 구합니다. 또한 해당 값을 테스트하여 양수인지 확인합니다.

    값을 구하여 이를 확인한 후 gpDialog.Hide 문은 처음 양식을 호출한 서브루틴으로 다시 컨트롤을 전달하면서 양식을 숨깁니다.

  5. 취소 버튼에 대한 다음 이벤트 핸들러를 추가하십시오.
    Private Sub cancel_Click()
        Unload Me
        End
    End Sub

    이 간단한 이벤트 핸들러는 양식을 언로드하며 전체 매크로를 종료합니다.

    수행하지 않은 유일한 작업은 폼에 대한 초기 값 추가 작업입니다. 양식에 적용되는 Initialize 이벤트가 있습니다. 양식이 처음 로드될 때 이를 실행합니다.

  6. 양식 초기화에 대한 다음 이벤트 핸들러를 추가하십시오.
    Private Sub UserForm_Initialize()
        gp_circ.Value = True
        gp_trad.Text = ".2"
        gp_tspac.Text = ".1"
        gp_tsides.Text = "5"
        gp_tsides.Enabled = False
        ThisDrawing.tsides = 5
    End Sub

이 코드는 tsides 변수 및 양식의 초기값을 설정합니다. tsides 변수를 사용자가 원을 선택한 경우에도 3보다 큰 양수로 설정해야 합니다. 이를 이해하려면 초기에 입력한 DrawShape 서브루틴을 살펴 보십시오. 다각형에 대한 변의 수를 사용하여 정의된 points라고 하는 변수가 있습니다. 해당 변수는 다각형 모양의 요청 여부에 관계 없이 이에 할당된 메모리를 확보합니다. 이로 인해 tsides는 이에 대해 정의된 유효 범위를 가져야 합니다. 매크로 실행 중 자유롭게 이 값을 변경할 수 있습니다.

이제 AutoCAD에서 매크로를 저장하여 실행하십시오.


Visual LISP과 ActiveX/VBA 비교

대화상자에 코드 추가
Visual LISP과 ActiveX/VBA 비교
ActiveX 및 VBA 개발자 안내서 >
Visual LISP과 ActiveX/VBA 비교

Visual LISP 인터페이스에 있는 대부분의 기능은 ActiveX 및 VBA 인터페이스에도 있습니다. 이 부록은 Visual LISP에 익숙한 개발자들이 그와 동등한 ActiveX와 VBA 기능을 찾는 데 도움이 되는 참조로 사용됩니다.

이 단원의 항목

  • Visual LISP과 ActiveX/VBA 비교


Visual LISP과 ActiveX/VBA 비교
Visual LISP과 ActiveX/VBA 비교
ActiveX 및 VBA 개발자 안내서 > Visual LISP과 ActiveX/VBA 비교 >
Visual LISP과 ActiveX/VBA 비교

다음 테이블에서는 Visual LISP 함수를 유사한 ActiveX®, VBA 및 Visual Basic 6 함수 및 연산자와 비교합니다. ActiveX Automation 해당 항목은 “AutoCAD.Application.”으로표시되고, Visual Basic 6 해당 항목은 함수 또는 연산자로 나열됩니다.

Visual LISP과 ActiveX/VBA 비교
AutoLISP 함수 | ActiveX, VBA 또는 Visual Basic 6에서 해당되는 부분
+(더하기) | +(더하기 연산자)
-(빼기) | -(빼기 연산자)
*(곱하기) | *(곱하기 연산자)
/(나누기) | /(나누기 연산자)
=(같음) | =(같음 비교 연산자)
/=(같지 않음) | <>(같지 않음 비교 연산자)
<(작음) | <(작음 비교 연산자)
<=(작거나 같음) | <=(작거나 같음 비교 연산자)
/=(같지 않음) | <>(같지 않음 비교 연산자)
>(큼) | >(큼 비교 연산자)
>=(크거나 같음) | >=(크거나 같음 비교 연산자)
~(비트 논리 부정) | 연산자 없음
1+(증가) | +(더하기 연산자) 사용
1- (감소) | -(빼기 연산자) 사용
abs | Abs 함수
acad_colordlg | 제공되지 않음
acad_helpdlg | 온라인 도움말 색인에서 HELP 검색
acad_strlsort | 온라인 도움말 색인에서 SORT 검색
action_tile | Dialog Editor 사용
add_list | Dialog Editor 사용
ads | AutoCAD.Application.ListADS 메서드
alert | MsgBox 함수
and | And 연산자
angle | AutoCAD.Application.ActiveDocument.Utility. AngleFromXAxis 메서드
angtof | AutoCAD.Application.ActiveDocument.Utility.AngleToReal 메서드
angtos | AutoCAD.Application.ActiveDocument.Utility. AngleToString 메서드
append | 배열 조작 기능 사용
apply | 제공되지 않음
arx | AutoCAD.Application.ListARX 메서드
arxload | AutoCAD.Application.LoadARX 메서드
arxunload | AutoCAD.Application.UnloadARX 메서드
ascii | Asc 함수
assoc | 제공되지 않음
atan | Atn 함수
atof | CDbl 함수
atoi | CInt 함수
atom | 온라인 도움말 색인에서 IS 검색
atoms-family | 제공되지 않음
autoarxload | 제공되지 않음
autoload | 제공되지 않음
Boole | 논리 연산자 사용
boundp | 온라인 도움말 색인에서 IS 검색
car/cdr | 배열 조작 기능 사용
chr | Chr 함수
client_data_tile | Dialog Editor 사용
close | AutoCAD.Application.Documents.Close 메서드
command | AutoCAD.ActiveDocument.SendCommand 메서드
cond | Case 문 선택
cons | 배열 조작 함수 또는 AutoCAD.Application.collection.Add<entityname> 메서드 사용
cos | Cos 함수
cvunit | 변환 함수 사용
defun | 키워드 Function 및 End Function
dictadd | AutoCAD.Application.ActiveDocument.Dictionaries.Add 메서드
dictnext | AutoCAD.Application.ActiveDocument.Dictionaries.Item 메서드
dictremove | AutoCAD.Application.ActiveDocument.Dictionaries. Dictionary.Delete 메서드
dictrename | AutoCAD.Application.ActiveDocument.Dictionaries. Dictionary.Rename 메서드
dictsearch | AutoCAD.Application.ActiveDocument.Dictionaries. Dictionary.GetName 및 GetObject 메서드
dimx_tile 및 dimy_tile | Dialog Editor 사용
distance | AutoCAD.Application.Utility.GetDistance(대화식 메서드)
distof | 제공되지 않음
done_dialog | Dialog Editor 사용
end_image | Dialog Editor 사용
end_list | Dialog Editor 사용
entdel | AutoCAD.Application.ActiveDocument.collection_object. Delete 메서드
entget | AutoCAD.Application.ActiveDocument.collection_object. 속성 특성
entlast | AutoCAD.Application.ActiveDocument.Modelspace. Item(count-1)
entmake | AutoCAD.Application.ActiveDocument.Modelspace. Add<entityname> 메서드
entmakex | AutoCAD.Application.ActiveDocument.Modelspace. Add<entityname> 메서드
entmod | 객체의 읽기-쓰기 특성 사용
entnext | AutoCAD.Application.ActiveDocument.collection.Item 메서드
entsel | AutoCAD.Application.ActiveDocument.SelectionSets 객체/메서드/특성
entupd | AutoCAD.Application.ActiveDocument.Modelspace.object. Update 메서드
eq | 제공되지 않음
equal | Eqv 연산자
*error* | 오류 객체/메서드/특성
eval | 제공되지 않음
exit | AutoCAD.Application.Quit 메서드
exp | Exp 함수
expand | 제공되지 않음
expt | ^(지수 연산자)
fill_image | Dialog Editor 사용
findfile | Dir 함수
fix | Fix, Int, Cint 함수
float | CDbl 함수
foreach | For Each...Next 문
gc | AutoCAD.Application.ActiveDocument.PurgeAll
gcd | 제공되지 않음
get_attr | Dialog Editor 사용
get_tile | Dialog Editor 사용
getangle | AutoCAD.Application.ActiveDocument.Utility.GetAngle 메서드
getcfg | AutoCAD.Application.Preferences.property 특성
getcname | 제공되지 않음
getcorner | AutoCAD.Application.ActiveDocument.Utility.GetCorner 메서드
getdist | AutoCAD.Application.ActiveDocument.Utility.GetDistance 메서드
getenv | AutoCAD.Application.Preferences.property 특성
getfiled | 파일 대화상자 사용
getint | AutoCAD.Application.ActiveDocument.Utility.GetInteger 메서드
getkword | AutoCAD.Application.ActiveDocument.Utility.GetKeyword 메서드
getorient | AutoCAD.Application.ActiveDocument.Utility. GetOrientation 메서드
getpoint | AutoCAD.Application.ActiveDocument.Utility.GetPoint 메서드
getreal | AutoCAD.Application.ActiveDocument.Utility.GetReal 메서드
getstring | AutoCAD.Application.ActiveDocument.Utility.GetString 메서드
getvar | AutoCAD.Application.GetVariable 메서드
graphscr | AppActivate AutoCAD.Application.Caption
grclear | Obsolete 함수
grdraw | 제공되지 않음
grread | 제공되지 않음
grtext | AutoCAD.Application.ActiveDocument.Utility.Prompt
grvecs | 제공되지 않음
handent | AutoCAD.Application.ActiveDocument.ModelSpace.object. 핸들 특성
help | 온라인 도움말 색인에서 HELP 검색
if | If… Then… Else 문
initget | AutoCAD.Application.ActiveDocument.Utility. InitializeUserInput
inters | AutoCAD.Application.ActiveDocument.Modelspace.object. IntersectWith
itoa | Str 함수
lambda | 제공되지 않음
last | 배열 이름(UBound(배열 이름))
length | UBound 함수
list | ReDim 문
listp | IsArray 함수
load_dialog | Dialog Editor 사용
load | AutoLISP는 자동화를 통해 지원되지 않음
log | Log 함수
logand | And 함수
logior | Or 함수
lsh | Imp 함수
mapcar | 제공되지 않음
max | Max 함수
mem | 제공되지 않음
member | 컬렉션 사용
menucmd | AutoCAD.Application.MenuBar 객체
menugroup | AutoCAD.Application.MenuGroup 객체
min | Min 함수
minusp | < 0 구문 사용
mode_tile | Dialog Editor 사용
namedobjdict | AutoCAD.Application.ActiveDocument.Dictionaries 컬렉션
nentsel | AutoCAD.Application.ActiveDocument.SelectionSets. SelectionSet.SelectAtPoint 메서드
nentselp | AutoCAD.Application.ActiveDocument.SelectionSets. SelectionSet.SelectAtPoint 메서드
new_dialog | Dialog Editor 사용
not | 논리 연산자 사용
nth | 객체 구문 사용
null | IsNull 함수
numberp | TypeName 함수
open | Open 함수
or | 논리 연산자 사용
osnap | 제공되지 않음(SetVariable 메서드를 사용하여 OSMODE 시스템 변수를 조정할 수 있음)
극좌표 | AutoCAD.Application.ActiveDocument.Utility.PolarPoint 메서드
prin1 | AutoCAD.Application.ActiveDocument.Utility.Prompt
princ | AutoCAD.Application.ActiveDocument.Utility.Prompt
print | AutoCAD.Application.ActiveDocument.Utility.Prompt
progn | 제공되지 않음
prompt | AutoCAD.Application.ActiveDocument.Utility.Prompt
quit | AutoCAD.Application.Quit 메서드
quote | 제공되지 않음
read | 제공되지 않음
read-char | Input 함수
read-line | Line Input 함수
redraw | AutoCAD.Application.ActiveDocument.Modelspace.object. Update 메서드
regapp | AutoCAD.Application.ActiveDocument. RegisteredApplications.Add method
rem | Mod 함수
repeat | For… Each, While,
reverse | 제공되지 않음
rtos | AutoCAD.Application.ActiveDocument.Utility.RealToString 메서드
set | Set 함수
set_tile | Dialog Editor 사용
setcfg | AutoCAD.Application.Preferences.property 특성
setfunhelp | 제공되지 않음
setq | Set 함수
setvar | AutoCAD.Application.SetVariable 메서드
sin | Sin 함수
setview | AutoCAD.Application.ActiveDocument.Viewports.Viewport. SetView 메서드
slide_image | Dialog Editor 사용
snvalid | 제공되지 않음
sqrt | Sqr 함수
ssadd | AutoCAD.Application.ActiveDocument.SelectionSets.Add 메서드
ssdel | AutoCAD.Application.ActiveDocument.SelectionSets. SelectionSet.Delete 메서드
ssget | AutoCAD.Application.ActiveDocument.SelectionSets. SelectionSet.SelectOnScreen 메서드
ssgetfirst | 제공되지 않음
sslength | AutoCAD.Application.ActiveDocument.SelectionSets. SelectionSet.Count 메서드
ssmemb | 객체 ID와 SelectionSet 구성원 비교
ssname | AutoCAD.Application.ActiveDocument.SelectionSets. SelectionSet.Name 특성
ssnamex | 제공되지 않음
sssetfirst | AutoCAD.Application.ActiveDocument.PickfirstSelectionSet
startapp | Shell 함수
start_dialog | Dialog Editor 사용
start_image | Dialog Editor 사용
start_list | Dialog Editor 사용
strcase | StrConv 함수
strcat | & 연산자
strlen | Len 함수
subst | 제공되지 않음
substr | Mid 함수
tablet | 제공되지 않음
tblnext | AutoCAD.Application.ActiveDocument.collection_object. Item 메서드
tblobjname | AutoCAD.Application.ActiveDocument.collection_object. Name 메서드
tblsearch | AutoCAD.Application.ActiveDocument.collection_object. Name 메서드
term_dialog | Dialog Editor 사용
terpri | 제공되지 않음
textbox | AutoCAD.Application.ActiveDocument.space.object. GetBoundingBox 메서드
textpage | 제공되지 않음
textscr | 제공되지 않음
trace | 제공되지 않음
trans | AutoCAD.Application.ActiveDocument.Utility. TranslateCoordinates 메서드
type | TypeName 함수
unload_dialog | Dialog Editor 사용
untrace | 제공되지 않음
vector_image | Dialog Editor 사용
ver | AutoCAD.Application.Version 특성
vports | AutoCAD.Application.ActiveDocument.Viewports 컬렉션
wcmatch | Like 연산자
while | While… Wend
write-char | Print 함수
write-line | Print 함수
xdroom | 제공되지 않음
xdsize | 제공되지 않음
zerop | = 0 구문 사용


의견 내보내기

의견이 있으시면 이 양식을 사용해서 문서 담당 부서인 Autodesk Technical Publications 그룹으로 보내주십시오.

항목 제목 및 위치 (편집하지 마십시오.):
이름(선택사항):
         전자 우편(선택사항):
설명:

주: 이 양식은 피드백이나 기술적 지원을 받는 용도로 작성되는 것은 아닙니다. 여러분께서 보내주신 정보는 앞으로 문서를 업데이트하는 데 사용됩니다. 감사합니다!