ObjectARX 개요



































프로그래밍 환경
 
 

ObjectARX 응용프로그램은 AutoCAD 주소 공간을 공유하고 AutoCAD를 직접 호출하는 함수를 만드는 동적 링크 라이브러리(DLL)입니다. ObjectARX 프로그램 환경에 새로운 클래스를 추가하고 다른 프로그램에서 사용될 수 있도록 반출할 수 있습니다. 생성된 ObjectARX 엔티티는 AutoCAD 엔티티로부터 사실상 구별할 수 없습니다. 또한 기존의 AutoCAD 클래스에 런타임시 함수를 추가함으로서 ObjectARX 프로토콜을 확장할 수 있습니다.

ObjectARX 프로그래밍 환경은 개발자에게 AutoCAD 사용, 사용자화, 확장을 위한 C++ 객체지향 프로그램 인터페이스를 제공합니다. ObjectARX 라이브러리는 응용프로그램 개발자에게 AutoCAD의 개방 구조를 최대한 활용하기 위한 다양한 도구 세트와 AutoCAD 데이터베이스 구조, 그래픽 시스템을 직접 액세스하고 현지 명령어 정의를 제공합니다. 그 밖에도 이 라이브러리는 Visual LISP과 연계하는 작업과 개발자의 요구와 경험에 맞는 프로그래밍 도구를 선택할 수 있도록 하기 위한 다른 응용프로그램의 인터페이스를 위해 설계되었습니다.

개발자로서 다음과 같은 작업를 수행하기 위해 ObjectARX를 사용할 수 있습니다.

  AutoCAD 데이터베이스 액세스
        AutoCAD 도면은 데이터베이스안에 저장된 객체의 집합체입니다. 이 객체는 그래픽 도면요소 뿐만         아니라 기호 테이블과 사전 같은 내부 구조물들을 포함합니다. ObjectARX는 응용프로그램에서 데         이터베이스의 구조를 액세스할 수 있게 합니다. 그 밖에도 특정 응용프로그램의 새로운 데이터베이         스의 객체를 생성할 수 있게 합니다.

  AutoCAD 편집기와 상호작용
        ObjectARX는 AutoCAD 편집기와 상호작용하는 클래스와 멤버함수를 제공합니다. 명령을 생성하         므로서 AutoCAD에서 명령을 등록할 수 있습니다. 응용프로그램에서 AutoCAD에서 발생하는 여러         가지 이벤트에 대한 통지를 받거나 응답할 수 있습니다.

  MFC를 사용한 사용자 인터페이스 생성
        MFC를 사용하여 사용자 인터페이스를 생성할 수 있습니다. ObjectARX 응용프로그램은 AutoCAD         와 공유하는 동적 링크 MFC 라이브러리로 만들 수 있습니다. 표준 마이크로소프트 윈도우 그래픽         사용자 인터페이스(GUI)를 생성하기 위해 이 라이브러리를 사용할 수 있습니다.

  다중 문서 인터페이스(MDI) 제공
        ObjectARX로서 AutoCAD 다중 문서 인터페이스를 지원하는 응용프로그램을 생성할 수 있고, 마이         크로소프트 윈도우 환경에서 다른 응용프로그램과 올바르게 상호작용하게 할 수 있습니다.

  사용자 클래스 생성
        사용자 클래스를 생성하기 위하여 ObjectARX 계층구조의 클래스를 사용할 수 있습니다. 그 밖에도         사용자 클래스를 생성할 때 ObjectARX의 광범위한 그래픽 라이브러리를 사용할 수 있습니다.

  복잡한 응용프로그램 개발
        ObjectARX는 다음과 같은 기능을 사용하여 복잡한 응용프로그램 개발을 지원합니다.

               통지
               트랜잭션 관리
               심층 복제
               참조 편집
               프로토콜 확장
               프록시 객체 지원
 
 

  다른 프로그래밍 환경과 상호작용
        ObjectARX 응용프로그램은 Visual LISP, ActiveX, COM과 같은 다른 프로그래밍 인터페이스와 통         신할 수 있습니다. 그 밖에도 ObjectARX 응용프로그램은 엔티티와 관련된 URL과 WWW으로부터         도면 파일을 올리고 저장함으로써 인터넷과 상호작용할 수 있습니다.


 


 


클래스 라이브러리


 

















클래스 라이브러리 개요
 
 

ObjectARX 환경은 다음과 같은 클래스 그룹과 함수로서 구성되어 있습니다.

  AcRx
        응용프로그램 바인딩과 런타임 클래스 등록 및 식별을 위한 클래스

  AcEd
        현지 AutoCAD 명령 등록과 AutoCAD 이벤트 통지를 위한 클래스

  AcDb
        AutoCAD 데이터베이스 클래스

  AcGi
        AutoCAD 엔티티 렌더링을 위한 그래픽 클래스

  AcGe
        일반적인 선형 대수학과 도형 객체를 위한 유틸리티 클래스

아래의 표는 ObjectARX 응용프로그램에 링크하기 위하여 요구되는 라이브러리 목록입니다. 모든 ObjectARX 응용프로그램은 acad.librxapi.lib를 링크해야 합니다. 다른 라이브러리는 사용하는 ObjectARX 클래스의 접두사와 함수에 따라 요구되어 질 수 있습니다.

 



















접  두  사 요구되는 라이브러리
AcRx   acad.lib, rxapi.lib, acrx15.lib
AcEd   acad.lib, rxapi.lib, acedapi.lib, acrx15.lib
AcDb   acad.lib, rxapi.lib, acdb15.lib, acrx15.lib
AcGi   acad.lib, rxapi.lib, acgiapi.lib, acrx15.lib
AcGe   acad.lib, rxapi.lib, acge15.lib, acrx15.lib
 


 





































AcRx 라이브러리
 
 

AcRx 라이브러리는 DLL 초기화 및 링크, 그리고 런타임 클래스 등록 및 식별을 위한 시스템 레벨 클래스를 제공합니다. 이 라이브러리의 기본 클래스는 아래와 같은 편의를 제공하는 AcRxObject입니다.

       객체 런타임 클래스 식별과 상속 해석
       기존 클래스에 새로운 프로토콜의 런타임 추가
       객체 상등 및 비교 시험
       객체 복사
 
 

또한 AcRx 라이브러리는 AcRxObject로부터 파생된 새로운 ObjectARX 클래스들을 생성하는데 도움을 주는 C++ 매크로들을 제공합니다.

AcRxDictionary는 이 라이브러리에서 또 다른 중요한 클래스입니다. 사전은 문자열로부터 또 다른 객체를 매핑하는 것입니다. AcRx 라이브러리에는 그것의 객체 및 클래스가 있고, AcRxDictionary 클래스의 인스턴스인 전역 객체 딕셔너리내의 딕셔너리들을 서비스합니다. 응용프로그램은 다른 응용프로그램을 액세스 가능하도록 하기 위해 이 딕셔너리에 객체를 추가할 수 있습니다.

AcRx 라이브러리의 클래스 계층구조는 다음과 같습니다.

            
 
 

AcRxObject의 각 서브클래스는 런타임 유형 식별에 사용되는 서술자 객체(AcRxClass 유형)에 관련된 하나의 클래스를 가지고 있습니다. ObjectARX는 객체가 특정 클래스인지 또는 파생된 클래스인지 검증하기 위한 함수, 두 개의 객체가 같은 클래스인지 검사하기 위한 함수 및 주어진 클래스의 클래스 서술자 객체를 리턴하기 위한 함수를 제공합니다.


 















AcEd 라이브러리
 
 

AcEd 라이브러리는 AutoCAD 고유의 명령과 같은 방식으로 동작하는 새로운 AutoCAD 명령을 정의하고 등록하는 클래스를 제공합니다. 정의된 새로운 명령은 고유의 명령과 같은 내부적인 구조(AcEdCommandStack)로 되어 있기 때문에 “고유” 명령으로 참조됩니다. 또한 AcEd 라이브러리는 편집기 리액터와 AutoCAD와 상호작용하기 위한 전역 함수의 세트를 제공합니다. 이 라이브러리에서 중요한 클래스는 AcEditorReactor이고, 이것은 AutoCAD 편집기 상태를 모니터하고 명령의 시작, 종료, 취소 등의 지정된 이벤트가 발생할 때 응용프로그램에 통지합니다.

AcEd 라이브러리의 클래스 계층구조는 다음과 같습니다.

            


 





























AcDb 라이브러리
 
 

AcDb 라이브러리는 AutoCAD 데이터베이스를 구성하는 클래스를 제공합니다. 이 데이터베이스에는 AutoCAD 도면을 구성하는 엔티티(도면요소)라 불리우는 그래픽 객체 뿐만 아니라 도면의 일부분으로서 비그래픽 객체(예를 들면, 도면층, 선종류, 문자유형 등)의 모든 정보가 저장됩니다. AcDb 라이브러리를 사용하여 AutoCAD 엔티티 및 객체의 존재하는 인스턴스를 질의 및 조작할 수 있고, 데이터베이스의 새로운 인스턴스를 생성할 수 있습니다.

AutoCAD 데이터베이스는 다음과 같은 주요 요소를 포함합니다.

       9 개의 기호 테이블 세트는 유일하게 명명된 기호 테이블 엔트리 객체를 소유합니다. 이 객체는 여       러가지 공통적으로 사용되는 AcDbDatabase 객체와 데이터 멤버를 표시합니다.
       AutoCAD 도면을 위한 “컨텐츠들의 테이블”을 제공하는 명명된 객체 딕셔너리(AcDbDictionary 클       래스). 초기에 이 “컨텐츠들의 테이블”은 AutoCAD에 의해 사용되는 4 개의 다른 딕셔너리의 ID를       가지고 있습니다. 응용프로그램의 개발 과정에서 딕셔너리에 다른 객체를 자유롭게 추가할 수 있       습니다.
       AutoCAD에 의해 값이 설정되는 약 200 개의 고정된 시스템 변수들.
 
 

AcDb 라이브러리의 클래스 계층구조는 다음과 같습니다.

 


 















AcGi 라이브러리
 
 

AcGi 라이브러리는 AutoCAD 엔티티를 그리기 위해 사용되는 그래픽 인터페이스를 제공합니다. 이 라이브러리는 표준 엔티티 프로토콜의 전체 부분인 AcDbEntity 멤버 함수들 worldDraw(), viewportDraw()saveAs() 등에 의해 사용됩니다. worldDraw() 함수는 모든 사용자화 엔티티 클래스들에 의해 정의되어야만 합니다. AcGiWorldDraw 객체는 AcDbEntity::worldDraw()가 모든 뷰포트를 동시에 그래픽으로 표시하는 API를 제공합니다. 이와 유사하게 AcGiViewportDraw 객체는 AcDbEntity::viewportDraw() 함수가 각 뷰포트마다 그래픽을 다르게 표시하는 API를 제공합니다.

AcGi 라이브러리의 클래스 계층구조는 다음과 같습니다.

          


 















AcGe 라이브러리
 
 

AcGe 라이브러리는 AcDb 라이브러리에 의해 사용되고 일반적인 2D 및 3D 도형을 연산하기 위해 사용되는 벡터와 행렬 같은 클래스를 제공합니다. 또한 점, 곡선, 곡면과 같은 기본 도형 객체를 제공합니다.

AcGe 라이브러리는 두 개의 서브세트 2D 도형 클래스 및 3D 도형 클래스로 구성되어 있습니다. 주요 기본 클래스는 AcGeEntity2d와 AcGeEntity3d 입니다. 다른 클래스로부터 파생되지 않은 기본 클래스로는 AcGePoint2d, AcGeVector2d 및 AcGeMatrix2d 등이 있습니다. 이러한 기본 클래스들은 점이나 벡터를 추가하거나, 두 벡터의 합이나 차를 계산하거나 또는 두 행렬의 합을 계산하는 등의 일반적인 조작의 많은 유형을 수행하기 위해 사용될 수 있습니다. 이 라이브러리의 최상급 레벨 클래스는 이 기본 클래스를 사용하여 도구화된 것입니다.

AcGe 라이브러리의 클래스 계층구조는 다음과 같습니다.

          


 


출처:> http://cadgroup.info


 



답글 남기기

이메일 주소는 공개되지 않습니다.