Make your own free website on Tripod.com
to designdb

|Abstract |Introduction |Goals of Research |Object-Oriented Database |System Implementation |Conclusion |References|

IV. System Implementation
since 15 December, 1996, last modified 15 December, 1996


4.1 부품 가공.조립에 관한 정보 모델

4.1.1 모델의 대상

앞에서 언급했듯이 이 연구에서는 여러가지 제조분야중 기계 가공, 조립 분야에 대한 데이타베이스 응용에 관심을 두었다. 개발된 정보 모델은 각 부품의 가공, 조립을 위한 정보를 객체 지향적 데이타 모델로 표현하고, 이는 상용 객체 지향적 데이타베이스를 이용하여 실제 시스템을 구축하는데 사용되었다. 정보 모델 개발시에는 객체지향적 시스템 개발 방법에 의한 개념화, 설계, 구현단계의 일관성 유지[11]를 중시하였다. 이 장에서 설계한 객체 지향적 모델은 별도의 전환을 거치지않고 데이타베이스 구현단계에서 사용하므로써, 기존의 시스템 분석에서 볼수 있는 설계와 구현단계의 상이한 모델의 혼합 사용으로 인한 불필요한 노력을 최소한으로 줄일 수 있었다.

적용될 모델은 Whelan[19]이 제시한 모델을 참조하여 개발되었다. 언급한 모델은 부품의 제조상의 요구사항, 형상 정보, 가공시 필요한 기계의 초기상태, 기계 공작, 그리고 공작 공구와 치구에 대한 정보를 일관되게 모델화 시키고 있다. 그러나, 정보들 중에서 부품의 형상에 관한 내용이 빈약하며, 전산 설계 시스템을 위한 형상 정보는 준비되어 있지 않다.

형상 정보를 담은 도면은 설계, 제조 단계에 참여하는 많은 사람들의 정보 양과 질을 극대화 시킨다는 점에서 매우 중요하게 취급되고 있다. 이러한 요구로 인하여 본 연구에서 개발된 모델은 기계 부품의 형상에 대한 정보를 CAD 응용에 사용할 수 있도록 설계되었다. 아울러, 설계, 제조 공정에서 많이 발생하는 제품에 대한 모의 실험, 설계 제한에 대한 검사, 부품사양에 대한 자료 인출 등의 응용 프로그램의 효과적 개발을 위한 메쏘드 모델을 고안하였으며, 조립부품의 무게를 검사하는 과정을 그 활용 예로 보인다.

4.1.2 정보 모델링

위에서 언급하였듯이 객체지향적 접근방식은, 다음 단계인 구현 단계와의 자연스러운 연계를 위하여 기본 개념을 같이 공유하고 있다. 객체지향적 데이타베이스에서 가지고 있는 객체, 클래스, 메쏘드 등의 개념이 이 단계에서도 똑 같이 적용된다.

이 모델은 조립부품과 단위부품으로 구성된 부품을 표현하는 PART 클래스를 중심으로 구성되어 있다. PART 클래스는 조립부품 클래스 (ASSY_PART Class)와 단위부품 클래스 (ATOMIC_PART Class)의 일반적인 경우가 되므로 상위 클래스가 되며, 이들의 관계가 IS-A 관계를 나타낸다. PART 클래스의 경우 각 부품 - 조립부품, 단위부품 클래스 - 에서 공통적으로 가져야 할 사항을 클래스의 항목 (Attribute)으로 가지고 있다. 우선 부품의 구별을 위한 부품 식별자 (part_id)를 위시해서 부품의 이름, 종류, 설계자, 작성일, 작성번호, 도면 종류등이 항목에 포함되어 있다. 다른 시각에서 보면 상위의 PART 클래스에 존재하는 데이타 항목들은 Lang-Lendorff 와 Unterburg [12]가 제시한 데이타 스키마(Data Schema)의 고정정보와 유동정보(Fixed and Variable Information)중, 고정정보를 포함하고 있다. 고정정보란 전체 부품설계 단계에서 그 값이 변하지 않는 속성을 가지는 정보를 뜻한다. PART 클래스는 실제로는 자신의 객체를 하나도 가지고 있지 않는다. 모든 부품은 단위 혹은 조립부품이므로 이 클래스는 단지 앞의 두 클래스의 공통된 데이타 스키마를 만들어 주는 역할만을 한다 (Abstract Class).

그림 4. 기계 부품과 관련 정보를 표현하는 정보 모델링

PART 클래스의 데이타 항목을 상속받은 클래스는 언급한 ATOMIC_PART 클래스와 ASSY_PART 클래스이다. ATOMIC_PART 클래스는 단위부품의 설계, 제작을 위한 정보들을 가지고 있고, 이들을 구성하여 만드는 조립부품에 관한 정보는 ASSY_PART 클래스에 존재한다. 이들 두 클래스는 설계단계에서 바뀔 가능성이 많은 유동정보 (Variable Information)를 포함한다. ATOMIC_PART 클래스는 항목으로 재료종류 (material_type), 단위 도형 리스트(element_list), 그리고 제조공정 (mfg_proc_ord)이 있다. 이들의 자료형 (Data Type)은 재료, 도형, 제조공정을 나타내는 클래스들을 범위(Domain)으로 하는 집합(Set)들이다. 이와 같이 자료형을 시스템이 제공한 단순한 종류(예: 정수, 실수, 문자등)뿐만 아니라, 사용자가 정의한 다른 클래스 형으로도 할 수 있다. 이러한 IS-PART-OF 관계를 나타낼 수 있는 객체지향적 모델의 기능은 현실 세계를 보다 자연스럽고, 효율적으로 표현하는 고도의 추상화(abstraction)를 가능하게 한다. material_type이라는 항목은 단위부품의 재질에 관한 정보를, element_list는 점, 선등으로 구성되는 부품의 형태에 관한 정보를 집합형태로 가지고 있다. 다음의 mfg_proc_ord는 제조 공정에 대한 정보를 순서에 입각한 집합 형태 (Sequence)로 가지고 있다.

확장된 관계형 데이타베이스나 객체지향적 데이타베이스에서는 집합(set)이라는 형태의 데이타 타입을 지원한다. 각각의 원소값이 유일한 집합(Set), 원소의 순서가 존재하는 리스트(List) 등이 각각 지원된다. 이들은 한 데이타 항목에 여러개의 연관된 정보를 포함시킬때 유용하다.

각각의 사용자정의클래스는 뒷부분에서 다룰것이며, 그림 5 의 이탤릭체의 데이타 항목은 동적 정보를 나타낸다. 동적 정보를 메쏘드(Method)라고 하기도 한다. ATOMIC 클래스에는 두개의 메쏘드가 있는데 이것들도 후반부의 메쏘드 모델에서 언급될 것이다.

그림 5. 기계 부품과 관련 정보를 표현하는 정보 모델링(형상정보)

PART 클래스의 또다른 하나의 하위 클래스는 조립부품을 뜻하는 ASSY_PART 클래스이다. 이 ASSY_PART 클래스는 componets라는 항목의 자료형을 PART 클래스의 집합으로 하고 있다. 즉 몇개의 단위부품을 모아 하나의 조립부품을 만드는 것을 표현하고 있다. 조립부품의 부품으로 다른 조립부품이 사용될 수도 있으므로 sub_assembly 라는 자료 항목이 존재한다. 이는 자기 자신의 항목의 범위를 자기 자신인 클래스로 정의함으로써 보다 다양한 표현을 할 수 있다. 아울러 이곳에는 도면의 위치를 나타내는 x,y_position 이라는 항목과 조립 과정을 설명하는 assy_description 이라는 항목이 있다.

PART 클래스의 자료 항목의 범위(Domain)를 제공하므로써 전체적으로 통합된 모델을 만들도록 도와주는 클래스 중의 하나가 MATERIAL 이다. 이와 같이 PART 클래스에 독립적으로 존재하며 IS-PART-OF 관계를 가지고 있는 클래스 군으로는 MATERLIAL, ELEMENT, MFG_PROC, 그리고 작업공정에 연관된 TOOL 클래스가 있다. 이들은 모두 가장 상위에 존재하는 Object 라는 시스템 클래스의 하부 클래스이다.

MATERIAL 클래스는 부품의 재질을 포함하는 정보를 가지고 있다. 재질의 이름, 재질의 구별 번호, 그리고 밀도는 모든 재질에 공통적으로 필요하므로 상위 클래스가 되고 하위에 금속을 나타내는 METAL과 합성수지를 나타내는 PLASTIC이 있다. 금속에는 강도에 관한 정보가 있고, 합성수지에는 녹는점과 접착제에 관한 정보가 있다.

ELEMENT 클래스는 부품의 형상에 관한 정보를 가지고 있다. 특히 CAD 등의 도면을 처리하는데 필요한 정보를 제공하고 있다. ELEMANT는 상위 클래스로써 요소의 이름, 요소 식별자, 요소의 색등이 공통적으로 표함되어 있다. 하위 클래스에는 2 차원 좌표 정보를 가진 점을 표현하는 POINT 클래스, 두개의 POINT 클래스를 포함하여 선을 나타내는 LINE, 그리고 한 POINT 클래스와 반지름 길이를 가진 CIRCLE 클래스를 가지고 있다. 이들은 다음 단계에 구현될 CAD 시스템에서 부품의 형상을 표현하는데 사용될 것이다.

마지막으로 제조공정을 나타내는 MFG_PROC라는 클래스가 각 공정에 사용되는 TOOL이라는 클래스와 함께 존재한다. MFG_PROC는 각 공정에 대한 설명, 필요한 기계, 필요한 공구의 집합등의 정보를 포함하고 있다. 이때 공구에 대한 정보를 집합 형태로 가지고 있는 것이 TOOL 클래스이다. 이 클래스는 각 공구의 이름과 설명, 그리고 사용 시간등의 자료를 가지고 있다.

위에서 설명한 각 클래스의 항목과 서로의 연관관계는 그림에 나타나 있다. 실선으로 표시된 것이 IS-A 관계를 나타내고 점선으로 표시된 것이 IS-PART-OF 관계를 나타낸다. 이탤릭체는 메쏘드를 나타내고, 이들간의 관계는 다음절에서 언급된다.

4.1.3 메쏘드 모델링

객체지향적 데이타베이스는 기존의 관계형 데이타베이스등에서 응용 프로그램에 해당했던 것들을 메쏘드을 이용하여 데이타와 동일하게 처리할 수 있는 기능을 가지고 있다. 이러한 메쏘드를 이용하여 본 연구에서는 각 단위 부품으로부터 전체 조립부품의 무게를 계산할 수 있는 모델을 제시하였다. 이 장에서 제시한 메쏘드 모델은 다른 부분에도 쉽게 응용될 수 있을 뿐 아니라 추후의 다른 응용 분야에서도 다시 사용될 수 있다.

ASSY_PART 클래스의 메쏘드로써 is_weight_less_than() 이라는 것이 있다. 이는 조립부품의 무게가 어느 일정 양보다 적은가를 검사하여 참, 거짓을 되돌려주는 메쏘드이다. 이 정보는 다시 다른 메쏘드인 cal_assy_weight() 를 부른다. 이 메쏘드는 해당 조립부품 객체의 componets 집합에 속한 각각의 단위부품 객체에 무게를 계산하는 메쏘드를 동작시키고 그 합을 되돌려주는 역할을 한다. componets의 각 단위부품 객체는 자신이 속한 조립부품에서 온 신호를 받고, 자신의 cal_vol() 메쏘드를 작동시킨다. 이 메쏘드는 element_list에 속한 요소들에서 부피를, material_type 에서 부품의 밀도를 계산하여 단위부품의 질량 값을 되돌려 보낸다.

그림 6. 무게의 일관성을 검사하는 메쏘드 모델링

그림에 나타난 각 메쏘드을 가상코드로 나타내면 다음과 같다.

is_weight_less_than(X, ASS_ID)

weight X;
object_id ASS_ID;

IF X < calc_assy_weight( ASS_ID.component )
        RETURN true;
ELSE
        RETURN false;


calc_assy_weight(component)

set_part_obj  component;

part_object obj;
RETURN   Σcal_weight( obj )
         when obj ∈ component;
 

calc_weight(obj)
part_obj obj;

RETURN calc_volumn(obj.elements) * obj.material_type.density;

이와 같은 각기 일정 객체가 다른 객체에 신호를 주어 그 객체의 동작을 일으키는 것을 메세지 전달(massage passing)이라고 한다. 메세지 전달은 기계의 구조와 같이 한부분의 변화가 다른 분야에 연쇄적으로 영향을 미치는 현상을 표현하는데 매우 적합하여, 위의 무게 계산뿐만 아니라 여러가지 다른 응용분야를 고려할 수 있다.

이러한 정보 모델은 객체지향적 모델 관점에서 구성되었기 때문에 다음의 구현 단계에서 쓰일 데이타 정의 언어(Data Definition Language:DDL)로 일대일 전환이 가능하다. 즉 초기 정보모델링에서 부터 구성될 정보 모델을 실제 구현될 데이타베이스의 데이타 정의 언어를 이용하여 설계할 수 있다.

4.2 시스템 설계 및 구현

설계된 정보 모델을 바탕으로 실제 데이타베이스와 응용 프로그램들을 구현하였다. 우선 상업용으로 개발된 객체지향적 데이타베이스 관리 시스템을 이용하여 가장 기본이 되는 데이타베이스를 만드는 것이 첫번째 작업이었다. 이렇게 만들어진 데이타베이스를 기본으로 필요한 응용 프로그램을 설계하고, 이에 필요한 메쏘드를 프로그램한 다음에 응용 프로그램을 작성하였다.

4.2.1 시스템의 전체 구조

우선 데이타베이스 시스템을 이용자와 시스템사이의 개발 환경의 계층적 관계로 알아보면 다음 그림과 같다. 이용자는 Work Station 환경에서 통합된 시스템을 이용하여 데이타베이스와 대화를 하게 된다. 가장 표면에 보이는 것은 OSF Motif를 이용하여 만든 그래픽 대화 시스템(Graphic User Interface)이다. 이 시스템은 CAD를 중심으로 한 통합 시스템으로써 간단한 설계 분석, 그리고 설계 대상의 여러가지 정보(재질, 가공정보 등)를 검색할 수 있는 기능을 아울러 가지고 있다. CAD 시스템과 설계분석, 그리고 관련 정보 인출 시스템은 데이타베이스와 상호작용을 한다. 이들 상호작용은 데이타베이스 관리 시스템에서 제공한 전용 함수 (Application Program Interface)를 사용한다[17].

이들 전용 함수와 그래픽 대화 시스템을 만드는데 사용한 MOTIF와는 C 언어를 이용하여 연결한다. 즉, C 언어가 데이타베이스 응용 프로그램의 주언어(Host Language)가 되는 것이다. 데이타 베이스 전용 함수들은 정보를 저장하고, 관리하는 객체지향적 데이타베이스에 접근하게 된다. 이때 데이타베이스는 가지고 있는 정보와 아울러 해당 정보의 기본적 활용을 제공하는 메쏘드들도 제공한다. 데이타베이스는 현재 상용화된 객체지향적 데이타베이스 관리 시스템의 하나인 UniSQL/X을 사용하였다.

UniSQL/X 는 객체지향적 개념에 충실할 뿐만아니라 관계형 데이타베이스와 호환성, 4GE(4th Generation Environment) 라는 시각적 데이타베이스 관리 환경을 제공한다[18]. 데이타베이스와의 연결을 위해서 UniSQL/X에서 제공한 API (Application Program Interface)[17] 함수들과 ESQL/X라는 질의 언어[16]를 사용하였다.

그림 7. 시스템의 수직적 구조

다음으로 평면적인 시스템의 구조를 알아 보자. 시스템은 일반적인 데이타베이스와 응용 프로그램을 포함한 시스템과 크게 다르지 않다. 개체 지향적 데이타베이스와 그 관리시스템이 중앙에 위치하며, 그 주위에 여러가지 설계, 제조에 필요한 응용 프로그램이 접속된다. 현재 본 논문에서 다루고 있는 범위는 중앙의 객체 지향적 데이타베이스와 응용 프로그램 중 2차원 CAD, 제품의 무게에 대한 일관성 검사 프로그램, 그리고 재질, 가공정보 검색 시스템이다. 이들 언급된 응용 프로그램들은 현재 하나의 통합된 이용자 대화 시스템을 통해 이용된다.

그림 8. 데이타베이스와 응용 프로그램의 수직적 관계

4.2.2 가공 정보 검색 시스템

가공 정보 검색 시스템은 부품의 필요한 가공정보를 검색할 수 있게 하여 준다. 아울러 이 시스템은 재질이나 가공순서등의 정보뿐만 아니라, 부품 설계 사향, 설계자, 그리고 버젼등의 일반적 자료도 아울러 제공한다. 설계자는 이 시스템을 이용하여 현재 작업환경에서 여러가지 부품에 대한 정보를 알아볼 수 있다. 부품에 관계된 다양한 정보의 제공은 설계자가 제품의 설계시에 다른 공정에 필요한 사항을 고려하게 하여, 다른 공정에 적절하지 않기떄문에 생기는 설계의 변경을 예방할 수 있게한다. 아울러 설계시에 공정에 관계된 전문가와 통합된 시스템에서 정보를 교환할 수 있는 환경을 제공하기도 한다. 표현력이 제한된 데이타베이스를 기초로한 가공 정보 검색 시스템은 특정 데이타만을 관리하는 여러개의 데이타베이스를 연결하고, 통합하여야만 이루어질 수 있다. 이 통합 작업은 이질 데이타베이스의 연결문제등이 있으므로 매우 어려운 작업이 될 것이다. 객체지향적 데이타베이스는 복잡하고 다양한 현실을 표현할 수 있는 기능으로 설계, 제조에 관계된 자료를 하나의 환경에서 저장, 관리할 수 있으므로 효과적인 정보 검색 시스템을 지원할 수 있었다.

현재 이 시스템에서는 부품일반, 부속품, 재질, 그리고 가공과정등의 정보를 검색할 수 있다. 부품일반에 관한 정보에 관한 사양, 설계자에 관한 정보등의 일반적 정보를 제공한다. 부속품의 경우는 질의의 대상이 조립품일 경우, 이 부품을 이루는 부속품의 이름을 제공한다. 재질에 관한 시스템은 재료의 종류와 강도등의 정보가 제공된다. 또다른 분야는 가공방법에 관한 정보이다. 이곳에서는 각 부품이 가공되는 순서에 따라 각 단계별 사용되는 기계, 기계 초기 설정, 가공 방법, 그리고 사용되는 공구에 대한 정보를 제공한다. 정보 모델에서 부품의 형상정보도 통합하였으므로, 형상정보에관한 접근도 가능하다. 하지만 형상정보의 입력과 변환은 주로 CAD 시스템에서 담당한다.

그림 7은 데이타베이스안에서 원하는 자료를 검색하는 한 예의 경로를 나타낸다. 이 예는 한 조립품의 부품의 가공 공정에서 사용하는 공구의 사용 시간을 검색하는 과정이다. 이용자는 검색시스템을 통하여 원하는 조립품 객체에 접근하게 된다. 다음으로 조립품 객체의 components라는 항목에서 이 조립품을 구성하는 부품객체의 집합에 접근하고, 여기에서 원하는 부품을 검색한다. 다시 이 부품 객체의 가공공정 (mfg_proc) 항목의 객체 인식자 (Object id)를 따라 해당 가공공정을 찾게 된다. 이 가공공정의 tool_order이라는 항목에서 이 공정에서 사용하는 공구들을 찾을 수 있다. 이들 공구중 해당 공구 객체에 접근하여 원하는 공구 수명에 관한 정보를 얻을 수 있다. 위 예에서 본 것과 같이 객체지향적 데이타베이스에서는 관계형 데이타베이스의 Join과 같은 값 비싼 연산을 하지 않고, 객체인식자를 이용하여 필요한 정보를 빠르게 찾을 수 있다.

그림 9. 객체지향적 데이타베이스에서의 자료 검색 예

위에서 언급한 필요한 자료에 대한 접근 방법은 관계형 데이타베이스에 비하여 매우 효율적이다. 이를 자세히 알아보기 위하여 본 시스템과 관계형 데이타베이스와의 검색방법을 예를 들어 비교해 보자.

그림 8은 이 논문에서 제안한 정보 모델과 대응하는 관계형 모델이다. 필요에 의하여 각 테이블의 항목들은 간략화하였다. 이 모델의 특징은 각 테이블의 연관관계를 유지하기 위하여 Key 항목을 연결시킨 테이블을 다시 만들어야 하는 것이다 (예: BOM, ELEMENT_ORDER, MFG_ORDER). 이렇게 구성된 관계형 모델과 객체지향적 모델에 동시에 같은 작업을 하는 질의를 구성하여 보았다. 이 질의는 ASSY-1 이라는 이름을 가진 조립품을 이루는 단위부품의 가공공정에 사용되는 공구를 인출하는 것이다. 본 시스템을 구현한 UniSQL/X는 객제 지향적 모델과 관계형 모델을 모두 지원하므로 두 질의는 같은 환경에서 행할수 있었다. 다음의 질의는 UniSQL/X 가 지원하는 SQL/X라는 질의어를 이용하여 구성하였다. 우선 객체지향적 모델에 적용된 질의를 보면 다음과 같다.

SELECT  assy_part.part_id,
        assy_part.part.components.mfg_proc_order.tool_id,
        assy_part.part.components.mfg_proc_order.tool_time,
FROM    assy_part
WHERE   
        assy_part.part_id = 'ASSY-1';

이 질의에서 알수 있듯이 각 객체의 인식자를 연결하여 직접 관련된 자료를 인출할 수 있었다. 다음은 관계형 모델을 위한 질의이다.

SELECT  assy_part.part_id, atomic_part.part_id, tools.tool_id, tool_time
FROM    assy_part, components, atomic_part, mfg_order, tool_order, tools
WHERE
        assy_part.part_id = 'ASSY-1' AND
        components.part_id = assy_part.part_id AND
        mfg_order.part_id = components.sub_part_id AND
        tool_order.tool_id = tools.tool_id;

그림 10. 기계부품 설계, 가공을 위한 관계형 모델

이 질의의 특징으로 반복되는 많은 Join 연산을 들 수 있다. 선택된 조립부품으로 부터 관계된 공구를 찾기위하여 단위부품, 제조과정의 테이블과 조인을 해야만 한다. 두 모델상의 비교에서 객체지향적 데이타베이스는 같은 제조 현실을 표현한 관계형 데이타베이스보다 효과적으로 원하는 자료를 검색할 수 있었다. 즉 복잡한 연관관계를 가진 제조 분야에 대한 자료의 저장과 인출을 객체지향적 데이타베이스가 관계형 데이타베이스보다 더 효율적으로 지원함을 알 수 있었다.

4.2.3 무게에 관한 일관성 검사 시스템

정보 모델링에서 구성된 메쏘드를 이용하여 무게에 대한 일관성을 검사하는 시스템을 구현하였다. 이 시스템은 주로 UniSQL/X에서 제공하는 API를 이용하여 작성되었다. 조립품의 무게를 구하는데 필요한 각 메쏘드 내용의 일부분과 메세지 전달이 앞의 4.1.3의 메쏘드 모델링 에 나타나 있다.

프로그램 예에서 볼 수 있듯이 대부분의 중요한 역할은 메쏘드가 하고, 주 프로그램 언어(Host Language)는 단지 메쏘드를 부르거나, 메쏘드 결과를 출력하는 역할을 할 뿐이다. 즉 응용 프로그래머는 단지 데이타베이스에서 관련된 메쏘드들을 불러 목적에 맞게 연결시키면 된다.그러므로 필요한 메쏘드를 목적에 맞게 재배열한다면 비슷한 응용분야에 재사용이 가능하다. 조립품의 무게를 구하는 메쏘드는 단지 단위부품의 무게를 구하는 메쏘드의 값을 합하는 기능만을 하므로 만일 단위부품의 무게만을 원할 경우에는 단위부품의 무게에 관련된 메쏘드만을 다시 사용하면 된다.

이와 같이 메쏘드는 프로그래머에게 존재하는 프로그램 자원을 재사용할 수 있게 할 뿐만아니라, 이 자원을 목적에 맞게 배열하는 것만으로도 새로운 응용 프로그램을 만들수 있게 한다. 이 검사 시스템도 단지 존재하는 메쏘드들의 배열에 필요한 이용자 대화 시스템을 덧붙여 개발할 수 있었다.

4.2.4 CAD 시스템

OSF MOTIF를 이용하여 만들어진 CAD 시스템은 이용자에게 위의 검색과 검사 시스템에동시에 접근할 수 있는 통합된 환경을 제공한다. 이와 같이 통합된 환경을 설계한 이유는 한 환경에서 도면의 형상정보와 아울러, 관계된 재질, 공정등의 정보도 다룰 수 있는 기능이 설계의 효율을 높일 수 있기 때문이다. 예로 부품을 설계하는 과정에 지금 설계하는 형상을 가공할 수 있는 공구가 존재하는 지를 질의할 수 있으면, 설계후에 공구가 없어서 다시 설계해야 하는 반복을 피할 수 있다. 같이 통합된 검사 시스템도 비슷한 역할을 하게 된다. 예를 들어, 지금 설계하고 있는 부품의 무게가 초과되었을때, 검색 시스템을 이용하여, 가능한 다른 재료로 해당 항목을 개정하고, 검사 시스템으로 이를 검사할 수 있기 때문이다.

개발된 CAD 시스템은 통합된 데이타베이스 접근 환경을 제공함과 아울러, 2차원 CAD의 기본적인 기능을 제공한다. 제공되는 기능중 도면 정보의 저장과 인출이 데이타베이스와 관계가 있고, 이들을 살펴보면 다음과 같다.

- 단위부품(Atomic Part)에 관계가 있는 기능

- 조립부품(Assembly Part)에 관계가 있는 기능

이러한 기능들을 객체지향적 데이타베이스에 저장하는 방법은 4.1 절에서 정한 데이타베이스 모델중 부품의 형상에 관한 데이타 구조와 관계가 깊다. 이제 위에서 언급한 각 기능이 객체지향적 데이타베이스에서 어떻게 구현되었는지 알아보자.

단위부품의 생성은 우선 CAD 환경에서의 설계활동에서 시작된다. 설계자가 형상화시킨 정보는 데이타베이스가 저장할 수 있는 형태로 CAD 의 임시저장 장소에 기억된다. 이때 데이타베이스에 저장할 수 있는 형태란 선을 두점의 좌표로 표시하는 것과 같이 정보 모델의 점, 선, 원, 직사각형, 그리고 다면체 자료구조에 맞게 변환된 형태를 말한다. 임시저장 장소에 기억된 정보는 설계자의 요구에 따라 지위지거나, 바뀌는등 설계가 끝날때까지 변화될 수 있다. 일단 설계가 끝나면 설계자는 데이타베이스에 새로운 부품의 정보를 저장시키는 명령을 내린다. 이 명령은 설계자에게 몇가지 기본적인 정보(부품 이름, 설계자 이름,등)을 입력하게 하고, 임시저장 장소에 있던 형상정보를 데이타베이스에 옮기게 된다.

형상정보가 데이타베이스에 새로이 저장되는 과정을 보다 자세히 살펴보자. 이해를 돕기위하여, 부품 이름이 '베어링'이고 형상은 4개의 선분으로 나타내어지는 부품의 저장을 예로 들겠다. 개발된 CAD 시스템의 임시저장 장소에는 고유번호(순차적으로 부여됨), 형상 종류(점, 선, 면 등), 시작점, 그리고 끝점의 기본적 정보가 존재한다. 하나 하나의 단위 형상정보는 연속적으로 연결되어 저장 된다 - 예에서는 4개의 선분에 대한 정보가 연속적으로 저장 -. 설계자가 새로운 부품의 생성을 명령하면 시스템은 클래스 메쏘드(Class Method)를 이용하여 설계자가 부여한 (예에서는 '베어링')이름을 가진 단위부품 객체를 하나를 만들게 된다. 다음으로 임시저장 장소에 있는 형상정보를 가지고 해당 정보를 가진 ELEMENT 객체를 만들게 된다(예에서는 LINE 객체를 4개 만든다.) 이 객체들이 새로 만들어진 단위 부품객체의 element_list 항목에 객체집합으로써 연결되면 새로운 단위부품 객체의 생성이 끝난다. 단위부품의 저장은 임시저장 장소에 있는 부품이 이미 존재하던 부품이어서 새로운 객체를 만들지 않는다는 점이외에는 새로운 부품 생성과 같은 과정을 거친다.

단위부품의 인출은 저장의 반대이다. 데이타베이스에 있는 형상정보와 부품이름등 기본적 정보를 CAD 시스템의 임시 저장장소에 옮기는 과정이다. 단 이때 각 형상객체는 자신을 도면에 그리는 메쏘드를 한번씩 실행시키는 점이 저장과 다른 점이다.예에서 '베어링' 객체를 인출하면 element_list에 있는 선분 객체를 하나씩 임시저장 장소에 옮기며 각 선분의 정보를 통하여 형상을 그리는 메쏘드를 실행한다.

조립부품은 단위부품의 집합으로부터 형성된다. 조립부품을 만들기 위해서는 필요한 단위부품들의 정보를 CAD 시스템의 임시저장 장소에 인출해 놓아야 한다. 이때 한 단위부품당 여러개의 형상 객체를 가지고 있으므로 한 형상 객체가 어느 부품에 속하는지를 표시하는 점이 단위부품 객체의 인출과 다르다. 이렇게 인출된 부품 정보는 CAD 시스템을 통해서 조립되어질 위치 정보를 얻게 된다. 조립도면의 완성이 끝나면 새로운 조립부품의 이름을 입력하여 처리한 정보를 저장하게 된다. 이때 입력된 이름을 가진 조립부품 객체가 크래스 메쏘드에 의하여 생긴다. 이 객체의 components 항목에는 임시저장 장소에 인출된 객체인식자 (Object id)를 집합 형태로 저장한다. 저장하고 있던 조립에 관련된 자료(각 부품의 상대적 조립 위치등)를 해당 항목에 저장하면 새로운 조립부품 객체가 만들어진다.

조립부품의 인출은 객체의 componets 항목에 속한 각각의 단위부품을 인출하는 메쏘드를 사용하여 임시저장 장소에 인출한다. 저장은 새로 객체를 만들지 않고 인출했던 객체에 다시 정보를 저장한다는 것을 제외하고는 조립부품 생성과 같다.

4.3 시스템 적용 예

다음 그림은 구축된 시스템에 적용될 예를 보여준다. 이 조립부품은 베어링, 지지대, 그리고 회전축의 3개의 단위부품으로 구성되어 있는 회전축 조립물이다. 이들을 바탕으로 CAD 시스템에서 새로운 조립부품 생성, 검색 시스템에서 한 조립 부품의 구성 요소의 재질 강도 검색, 그리고 무게 검사 시스템에서의 무게 측정등을 해 보았다.

그림 11. 구현된 시스템에 적용될 부품들의 형상

다음으로 조립부품 ASSY-1의 한 단위부품인 H-1의 재질의 강도를 검색하는 과정을 알아보자. 우선 ASSY_PART 클래스에서 part_id 항목이 'ASSY-1'인 객체를 찾는다. 검색된 객체의 components 항목에서 part_id가 'H-1'인 ATOMIC_PART 객체를 고른후, 이 객체의 materal_type 항목을 검색한다. 이 항목에서 H-1의 재질인 MATERAL 객체를 검색할 수 있다. 결과는 materal_name이 'carbon steel' 이고 hardness 값이 '3.5'인 재료였다.

그림 12. 부품 H-1의 재질의 강도를 검색하는 예

그림 13에서는 통합된 환경하에서 중량을 검사하는 것을 볼수 있다. 우선 이용자는 applications 라는 메뉴를 열어 자신이 실행해야 할 항목을 선택한다. 예에서는 'weight consistency check'(중량제한 측정)이라는 항목을 선택한다. 이 응용 프로그램은 현재 CAD 시스템에 인출된 부품의 중량에 대한 측정을 할 수 있게 하여준다.

그림 13. 부품의 중량의 일관성을 알아보는 예

to eng db
Korean Engineering Databases ⓒ copyright Namchul Do, 1996