david's daily developer note

[CAD] Hard & Soft Pointer, Hard & Soft Ownership 본문

Develop (CAD)

[CAD] Hard & Soft Pointer, Hard & Soft Ownership

mouse-david 2018. 5. 17. 13:12
728x90

DWG는 Native 프로그램의 물리적인 파일의 단위로 프로그램 구동시

메모리에 상주하는 DB의 바이너리 파일이다.

DB에는 다양한 CAD객체가 존재하고 상호 연관을 가진다.

편의를 위하여 기능과 객체가 추가되고 개념이 추가되면서 점점 복작해 지고 있지만

최초 DB를 설계할 때 만들어놓은 핵심적인 관계 개념은 달라지지 않는다

(개인적으로 DWG DB를 모델링한 사람은 천재라고 본다.).


그 중하나인 소유권 관계는 매우 중요하고 핵심적인 기준이지만, 매우 어렵다.

이는 CAD를 사용하는 사람들도 대부분이 모르며, 단순히 자신이 뭘 잘못했겠거니 하고 넘어가는 경우가 대부분이다.

그래도 크게 문제없다. 시간은 걸리겠지만 지우고 다시 그리면되니까...

하지만, DWG DB를 운영하고 개발해야 하는 사람들에게 소유권 관계에 대한 이해는 필수적이다.



상기 그림은 DWG DB의 소유권의 개념을 설명하는 그림이다 (ARX문서 참고).

여기서 owner와 pointer, Hard와 Soft의 개념이 등장한다.


Owner는 소유권을 의미한다.

예를들어, A라는 블록에 포함된 Line객체가 있다면, A라는 블록테이블레코드는 Line을 소유하고 있다고 볼 수 있다.


Pointer는 객체간 참조를 의미한다. 

예를들어, Line은 기본적인 객체 특성인 레이어(Layer)와 선종류(Line Type) 정의 객체를 참조해야한다. 

Line이 CAD상에서 그려지기 위해서 조건이다. 


그렇다면 Hard와 Soft는 무엇일까?

쉽게 말해서, 꼭 있어야 하는가? 없어도 되는가의 차이다.

앞서 예를든 레이어정의와 Line객체의 관계를 보자. CAD객체는 기본적으로 레이어라는 기본특성을 가진다.

그렇기에 객체들을 다양한 레이어로 분류하고, 필요에 의해서 감추거나, 동결할 수 있다.

이러한 조건에서 Line객체에게 레이어정의객체에 대한 Pointer가 없다면? 그것은 결함일 것이다.

(이런 이상한 상태의 DWG파일이 종종 발견된다. 이 것은 보통 잘못 만들어진 3rd Party프로그램이 원인이다.)


하나의 예를 더 들어보자. CAD의 문자객체는 문자스타일이라는 정보를 가지고 있다.

문자는 폰트없이 모니터에 그릴 수 없다는 것은 당연하다. 기본 폰트는 있을 수 있겠지만, 기본 폰트라고 표시하는 것도

문자스타일정보이다.  즉, CAD의 문자객체는 무조건 문자스타일 Pointer를 가져야한다.


반대의 예시도보자. 치수객체는 스냅점을 기준으로 연관 치수가 될 수 있다.

즉, Line객체의 시작,끝점에 부착한 연관치수는 Line이 형상이 바뀌면 따라서 바뀐다.

치수는 Line객체의 Pointer를 가지고 있기 때문에, watcher의 매커니즘으로 연관업데이트 될 수 있다.

하지만 Line객체가 치수의 Pointer를 가지고 있지 않다고 해서, Line에게 전혀 문제가 되지 않는다.


방금 3가지 예시에서 객체간에는 무조건 존재해야하는 관계와 있어도 그만, 없어도 그만인 관계를 발견하였다.

즉, 무조건 유지되어야하는 관계를 Hard로, 있어도 그만, 없어도 그만인 관계를 Soft로 표현할 수 있다.


예시에서 언급한 Line객체만 다른 DB로 복사될때, 

레이어정보는 Hard의 관계임으로 무조건 함께 복사되겠지만, 연관치수의 Pointer는 사라질 것이다.


치수와 같은 테이블 레코드들은 대부분 Hard관계를 가지는데,

Soft의 관계로 정의되는 테이블 레코드들도 있다. 예를 들어 Model_Space와 같은 블록인데,

DB에는 무조건 존재하는 블록테이블레코드임으로 복사하더라도 복사 대상 DB에 이미 존재할 것이 확실하여, 

복사가 무시되는데, 이러한 특수한 테이블 레코드들은 Soft의 관계를 가지기도 한다. 

이는.. 테이블 레코드의 복사에 대한 설명할 때, 자세히 언급하도록 하겠다.

728x90

'Develop (CAD)' 카테고리의 다른 글

DGN Format  (1) 2018.05.16