본 발명에 따르면,
부품 또는 부품의 어셈블리를 설계하기 위한 시스템으로서,
(a) 프리미티브 및 오퍼레이션을 지니는 저장 포맷을 갖는 상기 히스토리-기반 설계 시스템으로서, 부품 또는 부품의 어셈블리는 히스토리 기반 설계 시스템에서 오퍼레이션 및 프리미티브의 순서화된 시퀀스에 의해 정의되는 시스템;
(b) 적어도 2 개의 기능적 피처로서, 각각이 스페시피케이션의 세트를 제공함으로써 최종 사용자에 의해 인스턴스화되도록 구성되며, 인스턴스화된 기능적 피처는 적어도 컨트리뷰션을 제공하며, 컨트리뷰션은 상기 히스토리-기반 설계 시스템의 오퍼레이션 및 프리미티브의 순서화된 시퀀스인 기능적 피처;
(c) 컨텍스트-프리 그래머를 이용하여 정의된 시드 구조로서, 상기 시드 구조는 인스턴스화된 기능적 피처로부터 컨트리뷰션을 수용하고, 수용된 컨트리뷰션의 오퍼레이션 및 프리미티브를 순서화하고, 그리고 상기 히스토리 기반 시스템에 오퍼레이션 및 프리미티브의 순서화된 시퀀스를 제공하도록 구성된 시드 구조; 및
(d) 상기 그래머로 상기 시드 구조를 편집하기 위한 편집기를 포함하는 설계 시스템이 제공된다.
오퍼레이션은 상호교환적 오퍼레이션 (commutative operations) 및 비상호교환적 오퍼레이션 (non-commutative operations) 을 포함할 수 있다. 그 후, 시드 구조 (seed structure) 는 컨트리뷰션을 수용하도록 구성된 입력을 가진다. 시드 구조는, 각각의 입력에 대해 수용된 컨트리뷰션에 비상호교환적 오퍼레이션을 적용시키고, 상기 컨트리뷰션에 적용된 상호교환적 오퍼레이션의 결과에 상호교환적 또는 비상호교환적 오퍼레이션을 적용시킨다.
바람직하게는, 시드 구조는 컨텍스트-프리 그래머에서 비주기적 오리엔티드 그래프 (acyclic oriented graph) 로서 표시된다. 이는 바이너리 트리 또는 비-바이너리 트리 (non-binary tree) 일 수도 있다.
바람직하게는, 컨텍스트 프리 그래머의 터미널 알파벳은 적어도 솔리드, 결합 (union), 교차 (intersection) 및 공제 (subtraction) 를 포함한다. 터미널 알파벳에 병치 (juxtaposition) 를 부가할 수도 있다.
일실시형태에서, 컨텍스트 프리 그래머의 터미널 알파벳은 커브, 표면 및 재경계를 포함한다.
또한, 본 발명은 부품 또는 부품의 어셈블리를 설계하기 위한 히스토리-프리 시스템을 제공하는 프로세스를 제공하며, 이 프로세스는,
(a) 프리미티브 및 오퍼레이션을 갖는 저장 포맷을 갖는 히스토리-기반 설계 시스템을 제공하되, 부품 또는 부품의 어셈블리는 오퍼레이션 및 프리미티브의 순서화된 시퀀스에 의해 상기 히스토리 기반 설계 시스템에서 정의되는 단계;
(b) 적어도 2 개의 기능적 피처를 제공하되, 그 각각은 스페시피케이션의 세트를 제공함으로써 최종 사용자에 의해 인스턴스화되도록 구성되며, 인스턴스화된 기능적 피처는 적어도 컨트리뷰션을 제공하며, 컨트리뷰션은 히스토리-기반 설계시스템의 오퍼레이션 및 프리미티브의 순서화된 시퀀스인 단계;
(c) 시드 구조를 정의하기 위해 컨텍스트-프리 그래머를 이용하되, 상기 시드 구조는 인스턴스화된 기능적 피처로부터 컨트리뷰션을 수용, 수용된 컨트리뷰션의 오퍼레이션 및 프리미티브를 순서화, 및 상기 히스토리 기반 시스템에 오퍼레이션 및 프리미티브의 순서화된 시퀀스를 제공하는 단계를 포함한다.
일실시형태에서, 오퍼레이션은 상호교환적 오퍼레이션 및 비상호교환적 오퍼레이션을 포함한다. 상기 이용 단계는, 컨트리뷰션을 수용하기에 구성된 입력을 가지는 시드 구조, 및 각각의 입력에서 수용된 컨트리뷰션에 상호교환적 오퍼레이션을 적용하고 상기 컨트리뷰션에 적용된 상기 상호교환적 오퍼레이션의 결과에 상호교환적 또는 비상호교환적 오퍼레이션을 적용하도록 구성된 상기 시드 구조를 제공하는 단계를 포함한다.
바람직하게는, 이용 단계는 시드 구조를 비주기적 오리엔티드 그래프로서 정의하는 단계를 포함한다. 그 후, 시드 구조는 바이너리 또는 비-바이너리 트리로 한정될 수 있다.
본 명세서에서, "부품" 또는 "부품의 어셈블리" 라는 용어는 컴퓨터-에이디드 시스템에서 모델링 또는 설계된 오브젝트를 지정하는데 이용된다.
도 5 를 참조하여, 본 발명에 따른 시스템의 일반적인 구조를 설명한다.
컨텍스트 프리 그래머에 관하여 도 6 및 도 7 을 참조하여 설명한다.
도 8 내지 도 18 을 참조하여 본 발명의 제 1 실시형태를 설명한다. 본 발명은 얇은 솔리드 (thin solids) 의 모델링에 적용된다.
도 19 및 도 20 을 참조하여 본 발명의 제 2 실시형태를 설명한다. 본 발명은 대응하는 몰드 (moulds) 에 동시적인 얇은 솔리드에 적용된다.
도 21 내지 도 30 및 도 35 를 참조하여 본 발명의 제 3 실시형태를 설명한다. 비-바이너리 트리에서 시드 구조를 표시할 수 있게 하는 일반적인 컨텍스트-프리 그래머를 개시한다.
마지막으로, 도 31 내지 도 34 를 참조하여 본 발명의 제 4 실시형태를 설명한다. 본 실시형태는 B-rep 평가기 (B-rep evaluator) 에서 모델링된 오브젝트의 빠른 평가를 허용한다.
본 발명은 CAD 시스템의 사용자로 하여금 피처 순서에 대한 염려없이 부품 또는 부품의 어셈블리를 설계할 수 있게 한다. 본질적으로, 본 발명에 의해 제공되는 시스템은 히스토리-프리 설계 시스템이다. 그러나, 이는 히스토리 기반 설계 시스템도 포함하며, 따라서 전술한 바와 같은 그러한 시스템의 이점을 제공한다. 따라서, 이는 사용자의 설계-의도를 포착하며, 사후 변경을 가능케 한다.
이는 시스템에서
- 히스토리-기반 또는 히스토리 의존 컴퓨터-에이디드 설계 시스템;
- 최종-사용자에 의해 액세스되고 인스턴스화되는 기능적 피처의 세트; 및
- 시드 구조
를 제공함으로써 달성된다.
히스토리-기반 설계 시스템에서, 모델링된 오브젝트는 오퍼레이션 및 프리미티브의 순서화된 시퀀스에 의해 정의된다. 시스템은 그러한 순서화된 시퀀스의형태로 데이터를 수용하도록 구성된다. 솔리드 오브젝트의 모델링용으로 구성된 설계 시스템에서의 프리미티브 (블록) 의 예시가 도 1 내지 도 3 에서 주어진다. 오퍼레이션의 예시는, 예를 들어 도 1 의 2 개의 블록에 적용된 바와 같은 어셈블링, 또는 예를 들어 다양한 스테이지에서 도 2 및 도 3 에 적용된 컷팅을 포함한다. 시퀀스에서 순서의 중요성은 도 1 내지 도 3을 참조하여 예시된다. 그러한 히스토리-기반 설계 시스템은 당업자에게 잘 알려져 있으며, 전술한 CATIA 시스템을 포함한다. 그러한 시스템에서 이용가능한 프리미티브 및 오퍼레이션 또한 당업자에게 알려져 있다.
히스토리 기반 시스템이 도 5 의 도면부호 40 에서 표시되며, 더 상세히 설명하지 않는다. 본 명세서의 이후 부분에서는, "코어 시스템" 이라고도 불리우는 이러한 시스템 (40) 이, 프리미티브 및 오퍼레이션의 순서화된 시퀀스를 수용하도록 구성되는 것으로 충분하다. 수용된 시퀀스를 평가하여 모델링된 오브젝트를 계산, 모델링된 오브젝트를 사용자에게 디스플레이, 시퀀스를 저장, 또는 수용된 순서화된 시퀀스의 임의의 부가적인 핸들을 제공할 수도 있다. 이 시스템에서 B-rep 타입 평가기를 이용할 수도 있다. B-rep 타입 평가기는 입력 솔리드의 경계 디스크립션으로부터의 결과 솔리드의 경계 디스크립션을 계산하는 기하학적 및 토폴로지 알고리즘이다.
본 발명의 시스템 (42) 은 히스토리-프리이며 선언적이다. 이는 최종-사용자 인터페이스 (44) 를 포함한다. 이 인터페이스는 기능적 피처의 세트 중에서 기능적 피처를 선택하고 선택된 기능적 피처를 파라미터로 인스턴스화하는 능력을, 최종-사용자에게 제공한다. 이는, 최종-사용자 인터페이스 (42) 로의 입력인 파라미터 (46) 및 선택된 기능적 피처 (48) 에 의해 도 5 에서 개략적으로 표시된다. 기능적 피처는 해당 기술 분야에서 관련있는 설계 기능을 표시한다. 예를 들어, 설계 시스템이 솔리드의 설계에 적용되면, 기능적 피처는 하우징, 스루 홀 (through holes), 블라인드 홀을 포함할 수 있다. 이하, 기능적 피처의 다른 예를 설명한다. 주어진 기능적 피처는, 선택된 기능적 피처에 관련된 파라미터 또는 값을 제공함으로써 인스턴스화될 수도 있다. 예를 들어, 하우징은 다음의 파라미터, 즉 프로파일, 높이, 및 두께를 제공함으로써 인스턴스화될 수 있다. 스루 홀은 위치할 지점, 축, 및 지름을 제공함으로써 인스턴스화될 수 있다. 블라인드 홀은 위치할 지점, 축, 지름, 및 깊이를 제공함으로써 인스턴스화될 수 있다. 후술하는 바와 같이, 기능적 피처의 세트는 숙련된 사용자에 의해 구성될 수도 있다.
사용자 인터페이스 (44) 는, 시드 구조 (52) 에 적용되는 컨트리뷰션 (50) 을 출력한다. 이하, 컨트리뷰션을 자세히 설명한다. 본질적으로, 최종-사용자 인터페이스 (44) 로의 인스턴스화된 기능적 피처 입력은 인터페이스 (44) 에 의해 적어도 하나의 컨트리뷰션 출력을 제공한다. 컨트리뷰션은 코어 시스템의 프리미티브 및 오퍼레이션의 순서화된 시퀀스이다. 후술하는 바와 같이, 컨트리뷰션은 시드 구조의 주어진 입력에 적용된다.
컨트리뷰션은 시드 구조 (52) 에 적용된다. 시드 구조는 컨트리뷰션을 수용하며, 수용된 컨트리뷰션에 기초하여, 코어 시스템에 의해 취급되도록 구성된프리미티브 및 오퍼레이션의 순서화된 시퀀스인 데이터 흐름 (54) 을 코어 시스템 (40) 에 제공한다. 더 자세하게는, 컨트리뷰션에 오퍼레이션을 적용하고 부가적인 프리미티브를 부가함으로써, 시드 구조는 컨트리뷰션을 수용하고 이러한 컨트리뷰션을 핸들한다. 시드 구조는 주어진 컨트리뷰션을 분리하거나 파괴하지 않는다. 즉, 시드 구조에 입력된 주어진 컨트리뷰션은, 시드 구조에 의해 제공되는 결과 시퀀스에서 발견된다.
시드 구조는, 컨트리뷰션이 수용되는 순서가 시드 구조에 의해 결과 출력을 변경하지 않도록, 더 자세하게는 코어 시스템에 의해 이 결과의 평가를 변경하지 않도록 형성된다. 시드 구조의 이러한 특성은
- 컨트리뷰션을 시드 구조에 적용하는 규칙이 상호교환적이며,
- 각각의 컨트리뷰션이 시드 구조에 의해 손상되지 않고 보존되기 때문에 보증된다.
본질적으로, 최종-사용자는 상호교환적인 것으로 나타나는 도구 (기능적 피처) 를 갖는다. 따라서, 기능적 피처는 임의의 순서로 최종-사용자에 의해 인스턴스화될 수도 있다. 비상호교환적 오퍼레이션은 컨트리뷰션에 포함되거나 시드 구조에 의해 수행된다. 시드 구조에서 컨트리뷰션이 분리되거나 파괴되지 않기 때문에, 컨트리뷰션에서의 프리미티브 및 오퍼레이션의 순서는 설계 시스템에 의해 정정되지 않는다. 시드 구조에서의 순서화가 사용자-의존적이지 않기 때문에, 시드 구조에서의 비상호교환적 오퍼레이션은 사용자 의존적이지 않은 결과를 제공한다.
또한, 시스템은 시드 구조를 편집하기 위한 편집기를 가지며, 이는 도 5 의 도면부호 56 에서 개략적으로 표시된다. 이 편집기는 숙련된 사용자가 시드 구조를 정정하고, 이를 설계 시스템이 이용되는 주어진 기술 분야의 특정 요구사항에 적합하게 한다. 시드 구조는 컨텍스트-프리 그래머에서 정의되며, 이 그래머로 편집될 수 있다. 이 그래머에서 관련된 신택스 규칙은, 최종-사용자에 의해 기능적 피처가 인스턴스화되는 순서에 무관하게, 시드 구조가 항상 다양한 컨트리뷰션의 순서화 특성을 유지하여 코어 시스템 (40) 에서 출력 데이터 흐름의 동일한 평가를 제공할 것을 보증한다.
본 발명의 바람직한 이용에서, 숙련된 사용자는 매우 숙련된 설계자가다. 그는 CAD 시스템 행동 및 한정 (겹친 또는 겹치지 않은 솔리드, 선형 Constructive Solid Geometry 구조, 밸런스드 Constructive Solid Geometry 구조 등) 뿐만 아니라 기술 분야 (시이트 메탈 비행체 (sheet metal aerospace), 비행체의 기계 부품, 자동 전력 열차 등) 에도 지식이 있는 자이다. 최종 사용자는 기계 설계자가며 다양한 기능적 피처를 갖는다. 컴퓨터 시스템에서 사용자에게 권리가 허용되는 방법은 당업자에게 잘 알려져 있으며, 더 자세히 설명하지 않는다.
도 5 의 화살표 (58) 에서 보는 바와 같이, 편집기는 또한 숙련된 사용자에게 기능적 피처의 세트를 변경하는 것, 예를 들어 새로운 기능적 피처를 부가하는 것을 허용할 수도 있다.
최종-사용자의 관점에서, 시스템 (42) 는 오브젝트를 쉽게 모델링할 수 있다는 이점을 지닌다. 첫째로, 기술 분야에 적합하며 오브젝트 모델링을 용이하게하는 기능적 피처를 제공한다. 둘째로, 기능적 피처가 인스턴스화되는 순서는 모델링된 오브젝트 결과와 무관하지 않다.
시스템 (42) 은, 시드 구조를 편집함으로써 기술 분야에 쉽게 적응할 수 있다는 다른 이점을 갖는다. 이는 다양한 기술 분야에 대해 동일한 시스템을 이용할 수 있게 하는 한편, 숙련된 사용자가 시스템을 커스터마이즈하도록 허용한다. 이하, 시드 구조의 몇가지 실시예를 설명한다. 도 8 내지 도 15 의 실시예에서, 시드 구조는 얇은 플라스틱 부품의 설계를 위해 구성된다. 도 16 및 도 17 의 실시예에서, 시드 구조는 동일한 상부 및 하부 몰드에서 설계하는 것을 가능하게 한다. 또한, 도 27 내지 도 30 을 참조하여, 잠정적 결과가 저장되는 경우, 모델링된 오브젝트의 평가를 최적화하도록 구성된 시드 구조의 실시예를 설명한다. 코어 시스템의 능력에 따라, 시드 구조가 구성될 수도 있다.
편집기는, 코어 시스템의 성능에 따라, 그 기능을 변경함이 없이 능률을 향상시키기 위해 기존의 시드 구조를 구성하는 것을 가능하게 한다. 또한, 편집기는 주어진 애플리케이션에서 시드 구조의 기능적 성능을 증가시키는 것을 가능하게 한다. 예를 들어, 이하 예시하는 바와 같이, 편집기는 솔리드에 대해 솔리드 컴포넌트 및 몰드를 동시에 설계하는 것을 가능하게 한다. 이는 어셈블리의 동일한 대응 엘리먼트, 예를 들어 결합된 하우징을 형성하는 2 개의 부품에서 설계하는 것을 가능하게 한다. 또한, 편집기는 숙련된 사용자가 주어진 애플리케이션용으로 구성된 시드 구조를 형성하는 것을 가능하게 한다. 예를 들어, 해양 건축에서, 벽, 출구, 결합 부재는 특정한 재경계 (relimitation) 로 결합된다.이 분야에서 이용되는 설계 방법론을 포착하기 위하여, 시드 구조는 편집기에서 설계될 수도 있다. 더 일반적으로, CAD 시스템에서 이용되는 임의의 설계 프로세스는 시드 구조 및 연관된 기능적 피처에서 포착될 수도 있다.
또한, 후술하는 바와 같이, 편집기는 숙련된 사용자로 하여금 기존의 기능적 피처를 정정하거나 새로운 기능적 피처를 생성하도록 허용할 수도 있다.
또한, 본 발명의 시스템은 동시적 엔지니어링을 허용한다. 동시적 엔지니어링은 공유 부품 또는 어셈블리에 대해 동시에 작업하는 다수의 설계자들을 조정하는 기술이다. 각각의 엔지니어는 (공유된) 부품을 수정하고 다른 설계자로부터의 수정을 수용하게 되어 있다. 키 포인트는 수정을 조정한다는 것이다. 종래 기술의 시스템에서는, 각각의 설계자로부터의 수정이 수행되는 순서가 모델링된 오브젝트의 결과에 영향을 미칠 수도 있으므로, 이는 문제점이었다. 본 발명에서의 설계 변경 사이의 순서 독립성은 각각의 설계자에 의해 수행된 수정 또는 부가의 간단한 통합을 허용한다.
본 발명을 예시하기 전에, 컨텍스트-프리 그래머를 간단히 설명한다. 컨텍스트-프리 그래머에 관한 세부 사항은 Addison-Wesley, 1979 년, J.E. Hopcroft 및 J.D. Ullmann 의 Introduction to Automata Theory, Language and Computation 에서 찾을 수 있다. 이 간행물이 컨텍스트-프리 그래머에 대해 기재하고는 있지만, 그러한 그래머를 컴퓨터 에이디드 설계 시스템에 이용하는 것에 관해서는 제안하는 바가 없다.
컨텍스트-프리 그래머G는G = (X, V, P)에 의해 정의되며,X는 터미널심볼의 세트,V는 비-터미널 심볼의 세트,P는 규칙의 세트이다. 규칙은 순서쌍(S, m)이며, 첫 번째 오브젝트는 비-터미널 심볼이며, 두 번째 오브젝트는 터미널 및 비-터미널 심볼로 구성된 스트링이다. 더 정확하게는,P는V×(X∪V) * 의 서브세트이다. 규칙은으로도 쓸 수 있다. 즉, 규칙은 비-터미널 심볼을 터미널 및 비-터미널 심볼로 구성된 스트링으로 변경한다. 컨텍스트-프리 그래머를 이용하는 것은 잘 정의된 신택스 및 알고리즘으로 워드를 재귀적으로 생성하여, 이러한 워드를 스캔하고 신택스를 체크하고 계산을 수행할 수 있게 한다. 이러한 관점에서, 그 기능에 기인하여 비-터미널 심볼의 기능은 터미널 및 비-터미널 심볼로 구성된 스트링에 의해 대체된다. 그래머에서 심볼의 시퀀스를 워드라 한다.
시드 구조 (52) 는 컨텍스트-프리 그래머에서 정의 및 편집된다. 그와 같이, 컨텍스트 프리 그래머에는 단지 워드만이 있다. 먼저, 그래머는 시드 구조를 정의하는데 형식적이고 엄격한 환경을 제공한다. 편집기 (56) 에서 편집된 시드 구조의 신택스를 체크하는 것은 최종-사용자가 신택스 규칙을 위반하는 것을 피할 수 있게 한다. 이는 시스템 (42) 이 이용되는 기술 분야에 완전히 독립적이다.
컨텍스트 프리 그래머의 이용은, 재귀적 기능을 이용함으로써,컨트리뷰션을 시드 구조에 입력하는 것을 용이하게 한다. 특히, 시드 구조는 컨트리뷰션을 시드 구조에 적용하는데 이용되는 다수의 터미널 및 비-터미널 심볼을 포함하는 워드이다. 비-터미널 심볼은 시드 구조에 대한 "입력" 으로 이해될 수 있으며, 터미널 심볼은 오브젝트들 (실시예에서의 솔리드 오브젝트들) 을 결합하는 오퍼레이션을 구체화하는데 이용된다. 이러한 관점에서, 컨트리뷰션을 시드 구조에 적용하는 것은, 단지 시드 구조의 비-터미널 심볼을 컨트리뷰션으로 대체함으로써 수행될 수 있다. 컨트리뷰션이 워드라면, 이는 단지 그래머의 주어진 규칙이다. 재귀 (recursivity : 임의의 개수의 컨트리뷰션을 시드 구조에 적용하는 능력) 를 보증하기 위해, 시드 구조의 비-터미널 심볼을, 컨트리뷰션 및 대체된 비-터미널 심볼을 포함하는 시퀀스로 대체함으로써, 컨트리뷰션을 시드 구조에 적용시키는 것으로 충분하다. 본 명세서의 이하 부분에서, 대체하는 스트링에서 대체된 비-터미널 심볼이 나타나는 규칙은 대체 (substitution) 라 부른다. 대체의 이러한 정의를 이용하여, 시드 구조의 비-터미널 심볼을 비-터미널 심볼 및 컨트리뷰션을 포함하는 워드로 변경하기 위해 대체를 이용함으로써, 컨트리뷰션은 시드 구조에 적용된다. 이는, 결과 워드가 여전히, 부가적인 컨트리뷰션이 적용될 수 있는 비-터미널 심볼을 포함한다는 것을 보증한다. 또한, 이는 시드 구조의 구조가 컨트리뷰션의 입력 동안에 걸쳐 보존된다는 것을 보증한다.
또한, 컨텍스트-프리 그래머를 이용하는 것은 숙련된 사용자로 하여금 시스템 (42) 이 선언적으로 유지된다는 것을 보증하기 용이하게 한다. 컨트리뷰션이 시드 구조에 적용됨을 허용하는 대체 규칙이 상호교환적으로 유지되는지를 체크하는 것으로 충분하다.
이하, 도 6 및 도 7 을 참조하여, 본 발명에서 이용되는 가장 간단한 컨텍스트-프리 그래머를 설명한다. 이 그래머는 다음과 같이 정의된다.
심볼 a 는 제 1 터미널 심볼이며, 컨트리뷰션에 의한 또는 프리미티브 및 코어 시스템의 오퍼레이션의 순서화된 시퀀스에 의한 실시형태에서 정의되는 임의의 솔리드를 표시한다. 심볼는 제 2 터미널 심볼이며, 결합 (+), 공제 (-) 및 교차 (·) 과 같은 임의의 오퍼레이션을 표시한다. 비-터미널 심볼 S 는, 규칙의 세트 P 에 포함된 규칙을 이용하여 비-터미널 심볼 및 터미널 심볼의 시퀀스로 대체될 수도 있다. 특히, 제 1 규칙는 비-터미널 심볼을 2 개의 비-터미널 심볼 사이의 오퍼레이션의 결과로 대체한다. 이 결과는, 단지를 표현하는 더 간단한 방식인로 표현된다. 트리에 관하여, 제 1 오퍼레이션은 트리의 리프 S 를 2 개의 브랜치 (branches) 를 갖는 노드로 대체한다. 노드는, 브랜치의 끝에 위치한 2 개의 비-터미널 심볼에 대한 오퍼레이션의 결과이다. 제 2 오퍼레이션는 비-터미널 심볼을 터미널 심볼로 대체하며, 주어진 값 (터미널 심볼) 이 트리의 리프에 적용되어야 할 때 통상적으로 이용된다.
이러한 그래머로 생성된 워드의 신택스는 도 6 에 표시된 푸쉬다운 오토마톤에 의해 체크될 수도 있다. 도 6 에서, 상태 1 은 초기 상태이다. 상태 2 는 최종 상태이다. 오토마톤이 최종 심볼을 판독한 후에 최종 상태에 도달하면신택스는 맞는 것이고, 그렇지 않으면 맞지 않는 것이다. 형식적 언어에 관한 당업자라면, 그래머에서 임의의 워드의 신택스가 용이하게 체크될 수 있다는 것을 알 수 있을 것이다.
도 7 은 이 그래머에서 코딩된 바이너리 트리의 실시예이다. 이 트리는a - ((b + c) - d)를 간단히 표현하는 방법인 워드a b c + d - -로 코딩된다. 이 트리는 그래머 규칙의 다음 시퀀스를 통해 생성된다.
즉, 비-터미널 심볼S로부터 시작한다. 제 1 오퍼레이션이 적용되어, 루트에서a -오퍼레이션을 이용하여 비-터미널 심볼을 2 개의 브랜치 (60 및 62) 를 갖는 트리로 대체한다. 제 2 오퍼레이션이 적용되어, 트리의 제 1 브랜치 (60) 의 리프에서의 비-터미널 심볼S를 터미널 심볼a로 대체한다. 그 후, 제 1 오퍼레이션이, 루트에서a -오퍼레이션을 이용하여 2 개의 브랜치 (64, 66) 를 갖는 트리로 대체되는 브랜치 (62) 의 리프에 남아있는 비-터미널 심볼에 적용된다. 제 2 오퍼레이션이 적용되어, 트리의 브랜치 (66) 의 리프에서의 비-터미널 심볼S를 터미널 심볼d로 대체한다. 그 후, 제 1 오퍼레이션이, 루트에서a+ 오퍼레이션을 이용하여 2 개의 브랜치 (68, 70) 를 갖는 트리로 대체되는 브랜치 (64) 의 리프에서의 비-터미널 심볼에 적용된다. 제 2 오퍼레이션은 2 번 적용되어 브랜치 (68, 70) 의 리프에서의 비-터미널 심볼S를 터미널 심볼b및c로 대체한다. 도 7 의 실시예에서,S의 모든 인스턴스가 트리 또는 터미널 심볼로 대체되었기 때문에, 비-터미널 심볼S는 더 이상 나타나지 않는다. 도 7 을 설명하면, 심볼a는 터미널 심볼을 설명하기 위해 이용된다. 또한, 이는 가능한 솔리드a, b, c,및d중의 하나로도 이용된다.
도 8 내지 도 18 은 본 발명의 제 1 실시형태에서의 설계 시스템을 예시한다. 제 1 실시형태의 시드 구조는 바이너리 트리로 표시된다. 설명하기 위해, 인젝션-몰딩된 플라스틱 부품과 같은 얇은 솔리드의 설계에 적용한다. 2 개의 기능적 피처가 제공된다. 제 1 기능적 피처는 얇은 블록이며 제 2 기능적 피처는 픽스처 (fixture) 이다.
도 8 은 본 실시예에서의 시드 구조의 개략도이다. 도 8 의 시드 구조는, 얇은 솔리드가 2 개의 솔리드의 공제 (subtraction) 로 구성된다는 고려로부터 도출된 것이다. 제 1 솔리드는 얇은 솔리드의 외부 형상이고, 제 2 솔리드는 얇은 솔리드의 내부 형상이다. 얇은 솔리드에 대한 기계적 기능은 다음 5 개의 기본 오퍼레이션으로 분석할 수 있다.
- 외부 형상에 재료를 부가
- 외부 형상으로부터 재료를 제거
- 내부 형상에 재료를 부가
- 내부 형상으로부터 재료를 제거 및
- 다시 채워지지 못하도록 전체 형상으로부터 재료를 제거
시드 구조는, 기본 오퍼레이션이 다음의 순서로 수행된다는 사실을 표시한다.
- 외부 형상에 재료를 부가 및 외부 형상으로부터 재료를 제거함으로써 외부 형상을 정의
- 내부 형상에 재료를 부가 및 내부 형상으로부터 재료를 제거함으로써 내부 형상을 정의
- 외부 형상으로부터 내부 형상을 제거 및
- 다시 채워지지 못하도록 전체 형상으로부터 재료를 제거
이러한 오퍼레이션 순서를 이용하면 항상 동일한 솔리드 결과물을 얻는다.
시드 구조는 다음의 컨텍스트-프리 그래머G 0 = (X, V, P)에서 정의될 수도 있다.
이 컨텍스트-프리 그래머는 도 6 및 도 7 을 참조하여 개시된 그래머의 정교한 버전이다. 전술한 바와 같이, 제 1 터미널 심볼a는 임의의 솔리드를 표시한다. 제 2, 제 3 및 제 4 터미널 심볼 +, -, · 은 각각 합, 공제 및 교차를 의미한다. 제 1 비-터미널 심볼S는 일반적이다. 비-터미널 심볼e +,e -,i +,i -및u는 위에 열거한 5 개의 오퍼레이션에서의 컨트리뷰션의 입력을 표시하기 위해 편의상 이용된다. 이들은 "핸들" 로 자격지어진다. 구체적으로, 비-터미널 심볼e +는 외부 형상에 재료를 부가 등에 이용된다. 비-터미널 심볼e +,e -,i +,i -및u의 비-기하학적 평가는 공집합이며, 시드 구조의 기하학적 형상도 공집합이다. 이는 바이너리 트리에서 실재 솔리드와의 공존을 허용한다. 즉, 비-터미널 심볼e +,e -,i +,i -및u는, 획득된 솔리드에 시드 구조가 아무런 영향을 주지 않고, 시드 구조의 출력에서 제공된 순서화된 시퀀스에 남아있을 수도 있다.
형식적 그래머의 제 1 오퍼레이션은 시드 구조를 제공한다. 일반적 심볼S는e + e --i + i -- -u -로 쓰여지는 도 8 의 시드 구조에 의해 대체된다. 시드 구조를 형성하는 트리의 리프는 심볼 "e +", "e -", "i +", "i -" 및 "u" 이다. 이 리프는 전술한 순서대로 5 개의 오퍼레이션에 대응한다. 시드 구조에서, 심볼 "-" 는 공제를 의미한다. 트리 구조를 다음과 같이 설명할 수 있다. 트리의 노드 (80) 에서, 외부 형상으로부터 제거된 재료 (리프e -) 는 외부 형상에 부가된 재료 (리프e -) 로부터 공제된다. 결과는 간단한 표시로e + e -- 로 표시된다. 그래프의 노드 (82) 에서, 내부 형상으로부터 제거된 재료 (리프 i-) 는 내부 형상에 부가된 재료 (리프i +) 로부터 공제된다. 결과는 다시i + i -- 로 표시될 수 있다. 그래프의 노드 (84) 에서, 노드 (82) 의 결과i + i -- 는 노드 (80) 의 결과e + e -- 로부터 공제되고, 간단한 표현으로e + e --i + i -- - 의 결과로 표시된다. 실질적으로 말하면, 이는 얇은 솔리드의 외부 형상으로부터 내부 형상을 공제하는 것과 동등하다. 트리 루트인 그래프의 노드 (86) 에서, 전체 형상으로부터 제거된 재료는 노드 (84) 의 결과로부터 공제된다. 이는e + e --i + i -- -u- 로 표시된다.
오퍼레이션의 제 2 세트는 대체를 포함하며, 이들 각각은 비-터미널 심볼 중의 하나를, 컨트리뷰션 및 대체된 비-터미널 심볼을 포함하는 시퀀스로 대체하는 것이다. 적어도 하나의 대체를 "핸들" 에 적용하는 것은 모델링된 오브젝트를 제공한다.
전술한 바와 같이, 대체는, 대체가 적용된 후에도 대체된 비-터미널 심볼이 여전히 이용가능하다는 점에서, 시드 구조를 보존하는 제 1 특성을 가지므로 추가적인 컨트리뷰션이 적용될 수 있게 한다. 또한, 대체는, 컨트리뷰션이 적용되는 순서에 무관하게, 모델링된 오브젝트 결과물을 변경하지 않는다는 제 2 특성을 갖는다. 예를 들어, 외부 형상에 재료b및c를 이 순서로 부가함으로써
e
+
b + c + e
-
- i
+
i
-
- - u -
를 얻는다. 모델링된 오브젝트는 외부 형상에 재료c및b를 이순서대로 부가함으로써 얻어지는
와 동일하다. 따라서, 제 2 오퍼레이션 세트 (대체) 가 상호교환적이라는 사실로 인하여, 기능적 피처는 임의의 순서로 인스턴스화될 수 있다. 결과 솔리드는 기능적 피처가 인스턴스화되는 순서에 독립적이다.
전술한 바와 같이, 도 8 의 예시적인 시드 구조는 숙련된 사용자에 의해 정정될 수 있다. 이하, 정정된 시드 구조의 실시예를 제공한다. 시드 구조를 정정하기 위하여, 다음의 그래머G 1 을 이용할 수 있다.
이 그래머는, 위에 정의된 바와 같이, 실질적으로 그래머G 0 을 "포함" 하며, "메타-그래머" 를 표시한다. 이 메타-그래머는 임의의 시드 구조를 정의하는 것을 가능하게 한다. 그래머G 0 와 달리, 이는 시스템이 선언적으로 유지된다는 것을 보증하지 않는다. 실제로 그래머G 1 은 비-상호교환적 대체를 정의하는 것을 가능하게 한다. 그래머G 1 은 숙련된 사용자에 의해 정정 또는 생성된 시드 구조의 신택스를 체크하는데 이용될 수도 있다. 이는 전술한 시드 구조 (e + e - - i + i - - - u -) 를 다른 시드 구조로 변경할 수 있게 한다. 그래머G 0 (또는 그의 정정된 버전) 는 상호교환적 대체를 이용하며, 전체 시스템이 선언적이고 히스토리-프리라는 것을 보증한다.
도 9 내지 도 18 은 도 8 의 시드 구조 및 다양한 기능적 피처를 이용하여획득된, 모델링된 오브젝트의 실시예를 나타낸다. 실시예에 나타난 제 1 기능적 피처는 기본 얇은 블록이다. 이는 평면 프로파일 및 돌출 길이로 정의된다. 두께는 설계되는 기계적 부품에 부가되는 소정의 값이다. 각각의 기능적 피처는 이를 재정의 (redefine) 하지 않는다. 이러한 컨벤션은 얇은 플라스틱 부품의 설계에 있어서 이점을 지니지만, 이것 없이도 수행될 수 있다. 두께가 주어진 오브젝트에 대해 정의된다면, 기능적 피처는, 프로파일 및 돌출 길이를 제공함으로써 최종-사용자에 의해 수행될 수도 있다.
통상적으로, 이 실시예에서, 저면은 디폴트 개방면 (open face) 이다. 따라서, 얇은 블록은 입력 데이터 (프로파일, 높이 및 두께) 에 의해 용이하게 생성된 2 개의 솔리드 A 및 B 에 의해 정의된다. 돌출된 솔리드 A 는, 리프 e+에 적용된 컨트리뷰션인 외부 형상에 부가된 재료를 표시한다. 돌출된 솔리드 B 는, 리프 i+에 적용된 컨트리뷰션인, 시드 구조의 내부 형상에 부가 및 내부 형상으로부터 제거된 재료를 표시한다. 컨트리뷰션 A 및 B 는, 사용자가 제공하는 정보에 기초하여 최종-사용자 인터페이스 (42) 에 의해 정의된다.
도 9 는 컨트리뷰션 A 및 B 를 나타낸다. 컨트리뷰션 A 는 평면 프로파일에 대응하는 외부 형상 및 돌출 길이에 대응하는 길이 L 을 갖는 솔리드이다. 컨트리뷰션 B 는 평면 프로파일 마이너스 소정의 두께에 대응하는 외부 형상 및 동일한 길이 L 을 갖는 솔리드이다. 전술한 바와 같이, 컨트리뷰션 A 는 오퍼레이션를 이용하여 리프 e+ 에 적용되며, 컨트리뷰션 B 는 오퍼레이션를 이용하여 리프 i+ 에 적용된다. 따라서, 시드 구조에서 시작하여 얇은 블록을 생성하는 것은 도 10 의 트리와 동등한 워드를 산출한다. 히스토리 기반 시스템의 표준 평가기를 통해서, 이 트리는 도 11 의 모델링된 오브젝트를 산출한다. 이 평가 동안에, 평가기에서및이다.
이러한 기능적 피처의 제 1 실시예는, 시드 구조의 엔트리에 적용된 컨트리뷰션이 사용자의 다양한 입력에 기초하여 정의된다는 것을 명확히 한다. 최종-사용자는 다양한 컨트리뷰션에 대해 염려할 필요가 없다. 최종-사용자의 유일한 입력은 기능적 피처 및 이러한 기능적 피처의 파라미터에 관한 것이다.
본 실시예에서 이용된 제 2 기능적 피처는, 도 12 에 나타나는 픽스처 피처이다. 이는 공간에서 점, 방향 및 홀 타입에 의해 정의된다. 이러한 다양한 파라미터는, 기능적 피처를 구현할 때 최종-사용자에 의해 입력된다. 주어진 모델링 오브젝트에 대해서 두께가 고정된다고 가정되며, 그렇지 않으면 이는 부가적인 파라미터가 된다. 공간에서 점 및 방향을 정의하기 위해서 종래의 기술, 예를 들어 US-A-2002/0133803 에서 설명된 데이터 평면 등의 방법을 이용할 수도 있다.
픽스처 기능적 피처는, 구멍이 뚫린 (drilled) 원 블록 및 적절한 공간 확보를 부품에 부가하여, 어셈블리를 쉽게 한다. 픽스처는 도 12 에서 C, D, E, F 및 G 로 표시하는 다수의 컨트리뷰션을 산출한다. 컨트리뷰션은, 최종-사용자에 의해 입력된 기능적 피처의 파라미터에 따라 정의된다.
제 1 컨트리뷰션은 외부 형상으로부터 재료를 제거한다. 이 재료는 도 12 에서 C 로 표시되며, 컨트리뷰션은 기능를 이용하여 시드 구조의 리프 e- 에 적용된다. 실질적으로 컨트리뷰션 C 는, 도 12 의 상부에서부터 컨트리뷰션 F 의 상부 디스크까지 연장하여, 외부 형상으로부터 원뿔 영역을 제거한다. 제 2 및 제 3 컨트리뷰션 D 및 E 는 내부 형상으로부터 재료를 제거한다. 이들은, 기능및를 이용하여 시드 구조의 리프 i- 에 적용된다. 이 단계에서, 제 2 및 제 3 컨트리뷰션이 적용되는 순서는 모델링된 오브젝트의 결과에 영향을 미치지 않는다. 제 4 컨트리뷰션F는, 기능를 이용하여, 리프e +에서, 외부 형상에 재료를 부가한다. 제 5 컨트리뷰션G는, 기능를 이용하여, 구멍이 뚫린 영역을 영구적으로 제거한다. 정의에 의해, 구멍이 뚫린 영역은 어떠한 경우에도 재료에 의해 채워질 수 없다.u심볼의 역할은 이 특성을 포착하는 것이다.
현행 부품 상에 생성되는 픽스처는 업데이트된 워드를 산출한다. 이 워드는 도 13 에서 표시되는 바이너리 CSG 트리와 동등하다. 대응하는 모델링된 오브젝트가 도 14 에 나타난다. 다양한 컨트리뷰션이 시드 구조의 리프에 적용되는 순서는, 평가된 모델링된 오브젝트에 무관하다. 즉, 다음의 워드는, 히스토리-기반 설계 시스템에서 평가될 때 동일한 모델링된 오브젝트를 제공한다.
기계적 기능과 그에 관련된 기본 솔리드 사이의 링크를 유지하기 위해, 부가적인 데이터 구조가 이용될 수도 있다. 실시예에서, 얇은 솔리드 피처와 컨트리뷰션 A 및 B 사이에는 링크가 있을 수도 있다. 픽스처 피처와 컨트리뷰션C, D, E, F및G사이에도 링크가 있을 수도 있다. 이는, 최종-사용자에게, 몇몇의 컨트리뷰션 (예를 들어 컨트리뷰션A및B) 이 실질적으로 주어진 기능적 피처의 인스턴스화로부터 유래한다는 사실을 유지할 수 있게 한다. 그 후, 기능적 피처에 대한 정정은 영향을 받은 다양한 컨트리뷰션을 변경시킨다.
또한, 다수의 인스턴스화된 기능적 피처들 (실시예에서는 도 11 의 얇은 솔리드 및 도 12 의 픽스처) 사이에는 종속성이 존재하지 않는다. 시스템의 관점에서, 픽스처는 얇은 솔리드없이 존재할 수 있다. 얇은 솔리드는 삭제될 수 있다. 부품은 여전히 신택스 및 토폴로지의 관점에서 유효하다. 이는 도 15 내지 도 17 에서 예시된다. 도 15 및 도 16 에서, 픽스처는 솔리드의 가운데에서 인스턴스화된다. 도 15 의 사시도는 픽스처를 갖는 얇은 솔리드 결과물의 내부를 나타낸다. 이는 외부 형상에 부가된 컨트리뷰션F및 내부 형상으로부터 제거된 컨트리뷰션D를 나타낸다. 도 15 의 컨트리뷰션D와F사이의 라인은 단지 명확히 하기 위해 나타낸 것이며, 평가기에 의해 생성된 모델링된 오브젝트에는 존재하지 않는다. 도 16 은 픽스처를 갖는 얇은 솔리드 결과물의 상부면을 나타낸다. 이는 외부 형상으로부터 제거된 컨트리뷰션C를 나타낸다.도 17 에서, 픽스처는 얇은 솔리드의 외부에 인스턴스화된다. 제거할 재료가 존재하지 않는 위치에 컨트리뷰션C, D및E가 적용되기 때문에, 컨트리뷰션C, D및E는 어떠한 재료도 제거하지 않는다. 컨트리뷰션F는, 도 6 의 얇은 솔리드A로부터 분리된 디스크의 형태로 외부 형상에 재료를 부가한다. 컨트리뷰션G는 컨트리뷰션F에서 부가된 디스크로부터 재료를 제거하여, 결과 픽스처는 단독의 분리되고 구멍 뚫린 디스크이다. 기술적인 관점에서, 얇은 솔리드의 외부에 재료를 부가하는 것은 부적절한 것일 수도 있다. 신택스 또는 토폴로지의 관점에서, 모델링된 오브젝트 결과물은 정확하다. 이러한 도면의 실시예는, 픽스처가 신택스 에러없이 임의의 위치에서 인스턴스화될 수 있다는 것을 나타낸다. 결과 오브젝트는 코어 시스템에 의해 항상 평가될 수 있다.
또한, 라운드, 필렛 (fillet) 및 드래프트가 기본 솔리드에 부가될 수도 있다. 라운딩된 (또는 드래프팅된 또는 필렛팅된) 기본 솔리드는 기본 솔리드와 유사하게 행동하기 때문에, 이러한 부가가 신택스를 변경하지는 않는다. 이러한 부가적 피처의 파라미터가 기능적 피처 정의에 포함될 수도 있다. 예를 들어, 라운딩되고 드래프팅된 얇은 솔리드는 도 18 에 표시된 부품을 산출한다.
전술한 실시예를 통해 전문 사용자 및 최종 사용자의 역할을 설명한다. 얇은 플라스틱 부품 산업에 관해 잘 아는 전문 사용자는
- 시드 구조
- 기능적 피처
를 설계한다.
전용 "Thin Plastic Part" 워크벤치에서, 최종-사용자에 대해 모든 기능적 피처가 이용가능하다. 최종-사용자는 이 워크벤치를 열고 소정의 선언적 기능적 피처를 독점적으로 이용하여 얇은 부품을 설계할 수 있다.
도 8 내지 도 18 의 실시형태는 단지 2 개의 기능적 피처만을 제공한다. 전문 사용자에 의해 더 많은 기능적 피처가 정의될 수 있다. 예를 들어, 얇은 플라스틱 솔리드에서, 다른 타입의 픽스처를 제공할 수 있다. 기능적 피처는, 기능적 피처를 인스턴스화하기 위해 최종-사용자에게 제공되는 파라미터(들)을 포함한다. 한편, 기능적 피처는 시드 구조에 적용되는 다수의 컨트리뷰션을 포함한다. 각각의 컨트리뷰션은 최종-사용자에 의해 입력되는 파라미터에 따라 정의된다. 전문 사용자는 임의의 수의 기능적 피처를 정의할 수도 있다.
도 8 내지 도 18 을 참조하여 시스템의 오퍼레이션을 설명한다. 전문 사용자는 먼저 시드 구조 및 기능적 피처를 정의한다. 최종-사용자는 기능적 피처 중의 하나 이상을 인스턴스화한다. 이는, 도 8, 도 10 및 도 13 과 같이, 시드 구조에 적용되는 컨트리뷰션을 산출한다. 대체의 재귀로 인하여, 새로운 컨트리뷰션은 항상 부가될 수 있다. 임의의 시간에, 대응하는 워드 (또는 대응하는 트리 구조) 가 히스토리-기반 설계 시스템에서 평가될 수도 있다. 최종-사용자에 대하여, 시스템은 히스토리-기반인 것으로 나타난다. 그러나, 전술한 바와 같이, 피처가 인스턴스화되는 순서에 독립적으로, 임의의 기능적 피처가 정정될 수 있다. 전술한 바와 같이, 이는, 컨트리뷰션이 시드 구조에 적용되는 순서가 모델링된 오브젝트에 무관하도록 시드 구조 및 컨트리뷰션이 형성된다는 사실에 기인한다.
제 2 실시형태가 도 19 및 도 20 을 참조하여 개시된다. 이 실시형태는 부품 및 이 부품에 대한 몰드를 동시에 설계할 수 있게 한다. 도 8 내지 도 18 의 시드 구조 및 컨트리뷰션은 부품에 이용될 수도 있다. 또한, 부가적인 시드 구조가 몰드의 상부 및 하부 매트릭스에 대해 제공된다.
본 실시형태의 컨텍스트-프리 그래머는 도 8 내지 도 18 을 참조하여 설명한 것과 유사하다. 부가적인 터미널 심볼 및 기능이 제공된다.
상부 및 하부 매트릭스에 대한 시작 형상은U및L로 정의된다. 이들은 예시된 컨텍스트 프리 그래머에서 비-터미널 심볼이다. 물론 이들은 구체적인 기능적 피처에 의해 정의될 수 있다. 이 형상은, 상부 매트릭스U및 하부 매트릭스L을 갖는 가장 간단한 몰드의 예이다. 이 매트릭스의 형상, 특히 결합면 정의는 최종 사용자의 책임이다.
P 1및P 2에서 부가적인 기능은 상부 및 하부 매트릭스에 대한 시드 구조를 제공한다. 이러한 시드 구조는 도 19 및 도 20 에 나타난다. 도 19 의 상부 매트릭스에 대한 시드 구조는 워드로 정의된다.U는 상부 매트릭스에 대한 시작 형상이다. "핸들"e +,e -는 도 8 내지 도 18 의 실시형태에서와 같은 의미를 갖는다. 도 20 의 하부 매트릭스에 대한 시드 구조는 워드에 의해 정의된다.L은 상부 매트릭스에 대한 시작 형상이다. 핸들i +,i -는 전술한 실시형태에서와 동일하다. 인스턴스화된 기능적 피처로부터의 컨트리뷰션이 3 개의 트리에 동시에 적용된다.
구체적으로, 도 9 내지 도 11 을 참조하여 전술한 바와 같이 얇은 솔리드가 정의된다고 가정한다. 외부 형상에 대한 컨트리뷰션A는, 도 10 을 참조하여 전술한 바와 같이 적용된다. 이는 도 19 의 트리에도 적용되어 워드 을 산출한다. 즉, 얇은 부품의 외부 형상이 상부 몰드U로부터 제거된다. 내부 형상에 대한 컨트리뷰션B는, 도 10 을 참조하여 전술한 바와 같이 적용된다. 또한, 이 컨트리뷰션은 도 20 의 트리에 적용되어, 워드를 산출한다. 이는 얇은 솔리드의 내부 형상이 하부 몰드L에 부가된다는 것을 의미한다. 이 단계에서, 단지 상부 및 하부 몰드에 대해 부가 워드 또는 시드 구조를 제공함으로써, 상부 및 하부 몰드가 부품 그 자체로서 동시에 정의된다. 컨트리뷰션은 위에 정의된 바와 동일하다. 그러나, 모델링된 오브젝트, 상부 몰드 및 하부 몰드에 대해서, 시드 구조는 3 개의 분리된 워드를 포함한다.
픽스처를 부가하기 위해 제 2 기능적 피처가 인스턴스화된다고 가정한다. 도 19 의 트리는이 되며, 도 20 의 트리는이 된다. 이 실시예는, 상부 및 하부 몰드 뿐만 아니라 부품을 동시에 설계하기 위해, 시드 구조가 몇몇의 워드를 포함할 수도 있다는 것을 나타낸다.
따라서, 부품에서의 새로운 기능적 피처를 인스턴스화하는 것은 상부 및 하부 매트릭스의 형상을 자동적으로 업데이트한다. 머시닝 피처가 몰드의 바로 외부 부품에 나타나지 않기 때문에,u비-터미널 심볼은 몰드 구조에서 나타나지 않는다.
도 19 및 도 20 의 실시예는, 전문 사용자에게 시드 구조를 정정하게 하는 것은 이 전문 사용자가 자신의 요구에 맞게 설계 시스템을 구성할 수 있게 한다는 것을 나타낸다.
도 21 내지 도 29 는 본 발명의 다른 실시형태의 설계 시스템을 예시한다. 이 실시형태의 시스템은 비-바이너리 트리를 이용한다. 비-바이너리 트리는 더 간단하고 더 짧은 시드 구조를 제공하는 것을 가능하게 한다. 일반적인 비-바이너리 컨텍스트-프리 그래머가 도 21 내지 도 24 를 참조하여 개시된다. 특정 비-바이너리 컨텍스트 프리 그래머를 이용하는 트리 구조의 제 1 실시예가 도 24 내지 도 26 을 참조하여 개시된다. 비-바이너리 트리를 이용하는 제 2 실시예가 도 27 및 도 28을 이용하여 개시된다. 도 29 를 참조하는 설명은, 비-바이너리 트리를 이용하여 도 8 내지 도 18 과 동일한 시드 구조를 개시한다.
다음의 컨텍스트 프리 그래머가 본 실시형태에서 이용된다. 그래머는이며, 이때
이다.
터미널 심볼 a 는 트리의 임의의 노드를 표시한다. 터미널 심볼 δ는, 부모 노드 하에 있는 자식 노드의 수를 카운트하는 신택스 피처이다. 이는 트리를 형성하는데 이용된다. 이러한 앱스트랙션 레벨에서는, 피오퍼레이션자 심볼과 오퍼레이션자 심볼 사이에 아무런 구분이 없다. 이러한 특화 (specialization) 는 그래머를 이용하는 애플리케이션에 의해 수행된다. 이는, 전술한 실시예와 달리, 터미널 심볼의 세트가 어떠한 "오퍼레이션" 도 포함하지 않는다는 것을 설명한다.
비-터미널 심볼S는, 규칙의 세트P에 포함된 규칙을 이용하여, 비-터미널 심볼 및 터미널 심볼의 시퀀스로 대체될 수도 있다. 비-터미널 심볼T는 트리에 브랜치를 부가하기 위해, 또한 터미널 심볼 δ를 이용하여 트리의 브랜치를 카운트하기 위해 이용된다. 즉, 비-터미널 심볼T는 트리의 임의의 장소에서 대체를 허용할 수 있게 한다.
제 1 규칙는 비-터미널 심볼S를 하나의 브랜치를 갖는 트리로대체한다. 제 2 규칙는 하나의 브랜치를 트리의 노드 S 에 부가한다. 제 3 규칙은 비-터미널 심볼을 터미널 심볼로 대체하며, 통상적으로 주어진 값 (터미널 심볼) 이 트리의 노드에 적용될 때 이용된다. 제 4 규칙은 비-터미널 심볼을 1 로 대체하여, 비-터미널 심볼T를 시드 구조로부터 삭제한다. 제 4 규칙은 주어진 노드에 브랜치를 부가할 필요가 없을 때, 특히 트리가 완료되었을 때 이용된다.
명백하게,를로 대체하도록 다시 쓰여진다면, 임의의 바이너리 트리는 이 언어와 호환된다. 따라서, 이 그래머는 전술한 그래머를 커버한다.
도 21 은 워드에 의해 코딩된 트리에서 이 그래머의 이용을 예시한다. 이 트리는 다음의 그래머 규칙 시퀀스에 의해 생성된다.
도 22 는, 이 그래머를 이용하여 생성된 워드의 신택스를 체크할 수 있는 오토마톤을 나타낸다. 상태 0 은 초기 상태이며, 상태 1 은 최종 상태이다.
트리와 워드 사이의 동등성은, 오토마톤 트랜지션과 연관시키는 액션에 의하여 설명될 수 있다.H 1 및H 2 의 2 개의 힙 (heaps) 이 유용하다. 힙에 대한 표준 오퍼레이션이 이용가능하다 (즉, 팝업 (힙의 상부에 오브젝트를 놓음) 및푸쉬다운 (힙의 상부로부터 오브젝트를 얻음)). transition(p, a, q)와 연관된 액션은 다음과 같다.
transition(q, δ, p)와 연관된 액션은 다음과 같다.
전체 워드가 스캔된 후, 힙H 1 은 루트 노드인 단지 하나의 오브젝트만을 포함해야 하며, 힙H 2 는 비어있어야 한다. 그렇지 않으면, 신택스는 정확하지 않다. 따라서, 도 22 의 오토마톤은 그래머의 임의의 트리의 신택스를 체크하는 것을 가능하게 한다. 따라서, 그러한 오토마톤의 이용은, 편집기에서, 전문 사용자에 의해 입력된 시드 구조의 신택스를 체크하는 것을 가능하게 한다.
종전의 그래머는 다음의 이유로 인하여 메타-언어를 정의한다. 임의의 (컨텍스트 프리) 그래머는, 소위 유도 트리 (derivation tree) 에서의 비-터미널 심볼, 터미널 심볼 및 규칙을 포착하는 그래프에 의해 설명될 수 있다. 종전의 그래머는 임의의 트리를 설명하도록 설계되기 때문에, 그 자신을 설명할 수도 있다. 트리 그래머의 유도 트리가 도 23 에 표시된다. 따라서, 임의의 트리는 이러한 컨텍스트-프리 그래머에서 설명될 수 있다. 편집기는, 일부의 터미널 심볼을 특정적으로 설계하여 이러한 메타-언어 또는 더 제한된 버전의 언어를 이용할 수도 있다. 일반적인 메타-언어를 이용하면 설계 시스템의 적용 가능 분야를 증가시키지만, 전문 사용자가 수행해야 할 일도 증가한다. 한편, 더 특정적으로 심볼 또는 오퍼레이션을 정의하는 것은 전문 사용자가 시드 구조를 쓰거나 정정하는 것을 돕는다.
또한, 도 21 내지 도 23 을 참조하여 설명한 그래머는, 그래프가 루프 또는 주기를 갖지 않는다면, 임의 방향의 비주기적 그래프를 커버할 수 있게 한다. 이러한 확장은 언어로 하여금 공유된 데이터, 공유된 입력 또는 부품 구조의 데이터 흐름의 결과를 핸들할 수 있게 한다. 따라서, 설계 시스템에서 데이터는 공유될 수 있다.
도 24 는 방향을 지닌 비주기적 그래프이며, 모델링된 오브젝트의 산출물 또는 구조를 표시한다. 이 그래프는 공유된 노드를 필요한 회수만큼 복제함으로써 트리로 변경될 수 있다. 결과 트리가 도 25 에 표시된다.
공유는 심볼 반복을 통해서 포착된다. 초기 그래프가 2 개의 루트 노드 i 및 j 를 특징으로 하기 때문에, 공유 노드를 복제하는 것은 각각및로 코딩된 2 개의 트리를 산출한다. 비주기적 그래프를 1 세트의 트리로 분해하는 것은 유일하지 않다. 예를 들어, 종전의 그래프는 도 26 의 트리 및 다음의 워드를 산출할 수 있다.
동일 레벨의 정보가 포착되기 때문에, 트리 분해의 이러한 비-유일성은 문제점은 아니다. 향상되거나 최상의 분해에 대한 기준은 애플리케이션의 책임이다.
도 19 및 도 20 을 참조하여 이미 예시한 바와 같이, 시드 구조 및 결과 워드는 유일할 필요가 없다는 사실을, 도 24 내지 도 26 의 실시예로부터 이해할 수 있다.
도 27 및 도 28 은 도 21 내지 도 23 중의 하나로부터 유도된 그래머에서 정의된 비-바이너리 트리를 이용하는 트리 구조를 개시한다. 트리는 부품의 복잡한 어셈블리를 설계하는데 이용되며, 메인 프로덕트를 컴포넌트로 상부 하부 재귀적 분해하는 것을 포착한다. "포함한다" 는 의미 링크 (semantic link) 가 시스템에 의해 포착된다. 프로덕트 구조 그래머는, 메인 프로덕트에 부가되는 임의의 장치가 관련된 서브 프로덕트를 자동적으로 업데이트하는 방식으로 전문 사용자가 소정의 뼈대 구조를 설계하는 것을 허용한다. 프로덕트 구조 컨텍스트에는 순서 종속성이 없다. 부가된 값은, 새로운 장치를 부가하는 것을 용이하게 하기 위한 구조 정의이다.
워드는 도 27 에 표시된 간단한 트리 구조를 포착한다. 구조는 타입S및T의 비-터미널 심볼을 갖는다. 단지 이해만을 위한 인덱스를 갖는다. 이 트리에서,d는 부품 또는 서브-프로덕트a, b및c의 어셈블리이다.f는 서브-프로덕트c의 컴포넌트이다. 비-바이너리 그래머는 다음의 오퍼레이션
으로 인하여, 서브-프로덕트a에 컴포넌트e를, 서브-프로덕트c에 컴포넌트g및h를 부가하는 것을 가능하게 한다.
타입T심볼은대체를 허용하며, 이때x는 터미널 심볼이다. 이는 다음의 워드및 도 28 의 트리를 산출한다. 종전과 같이, 비-터미널 심볼S 1 및S 2 는 추가적인 대체에 이용가능하도록 유지된다.
따라서, 비-바이너리 트리의 이용은, 부가되는 컴포넌트 개수에 대한 제한없이, 주어진 레벨에서 컴포넌트 또는 컨트리뷰션을 부가하는 것을 용이하게 한다.
도 8 내지 도 18 에서와 같이, 비-바이너리 트리는 얇은 솔리드를 향하는 시드 구조에 이용될 수도 있다. 형식적 그래머는 다음과 같다.
도 8 내지 도 18 을 참조하여 설명한 그래머에 비하여, 이 그래머는 부가적인 터미널 심볼 δ를 포함한다. 전술한 바와 같이, 이는 주어진 노드로부터 이슈된 브랜치의 수를 카운트하는데 이용된다. 설명을 명확히 하기 위해, 비-터미널 심볼T를 이용하지 않았다.
오퍼레이션의 집합P에서의 제 1 오퍼레이션은 시드 구조를 제공한다. 워드는이며, 대응하는 트리는 도 8 의 경우와 유사하며 도 29 에 표시된다. 한번 더, 메타-그래머를 이용하여 이러한 시드 구조가 형성된다. 그러나, 대체로 인하여 트리에 브랜치를 부가하는 능력이 제공된다. 대체는 타입의 오퍼레이션이며, 이때z는 비-터미널 심볼및 u 중의 임의의 것을 의미한다. 따라서, 대체는z를 포함하는 리스트에 새로운 피오퍼레이션자를 부가한다. 즉, 대체는z에 브러더 (brother) 를 부가한다. 이는 트리의 깊이가 제한된다는 점에서, 도 8 내지 도 18 의 실시형태에 비교하여 트리를 단순화한다.
컨트리뷰션은 전술한 바와 같이 정의될 수 있다. 위와 같이 얇은 솔리드 및 픽스처의 컨트리뷰션을 인스턴스화하는 것은 도 30 의 트리 또는 다음의 워드
를 제공한다.
히스토리 기반 설계 시스템에서 이 워드의 평가가 도 14 의 모델링된 오브젝트를 제공한다는 것은 명백하다. 그러나, 도 30 의 트리는 4 의 깊이를 가지며, 도 13 의 트리는 5 의 깊이를 갖는다. 도 8 의 시드 구조의 부가적인 컨트리뷰션은 트리의 깊이를 더 증가시키는 반면, 본 실시형태의 시드 구조에 대한 부가적인 컨트리뷰션은 도 30 의 트리의 깊이를 증가시키지 않는다.
따라서, 시드 구조를 정의하기 위한 비-바이너리 컨텍스트-프리 그래머의 이용은 전문 사용자에게 유용한 가능성을 확장한다.
이하, 도 31 내지 도 34 를 참조하여 본 발명의 제 3 실시형태를 설명한다. 제 3 실시형태는, 모델링된 오브젝트의 컴포넌트를 변경한 후에, 모델링된 오브젝트의 평가 속도를 증가시키는 것을 가능하게 한다. 이러한 목적으로, 중간 솔리드 (intermediate solids) 는 가능한 한 변경의 경우의 재평가를 피하도록 유지된다.
컴포넌트를 변경하는 것에 대한 문제점은 도 31 을 참조하여 예시된다. 이는 도 13 의 경우와 유사하지만 "핸들" 이 없는 트리 구조를 보여준다. 이 트리의 리프L이 수정된다고 가정한다. 중간 솔리드가 유지되면, 반복된 오퍼레이션은 루트 솔리드에서 수정된 리프 솔리드까지의 경로에 대한 것이다. 도 31 의 실시예에서, 유일한 반복은 리프L로부터 트리의 루트까지의 경로에 대한 것이며, 이는 도 31 에 표시된 4 개의 오퍼레이션이다. 솔리드의 새로운 형태를 얻기 위해, 단지 4 개의 오퍼레이션만이 재계산될 필요가 있다.
이러한 이점을 보존하기 위해, 존재하는 중간 솔리드가 가능한 한 변화하지 않게 유지시키는 방식으로, 대체는 구조를 증가시켜야 한다. 새로운 솔리드가 기존의 솔리드의 상부에 나타나기 때문에, 이는 바이너리 트리 그래머 및 도 8 의시드 구조에는 해당되지 않는다. 이는 무용한 B-rep 오퍼레이션을 초래할 수 있다.
제 3 실시형태에서 그래머 및 시드 구조의 목표는 새로운 솔리드를 구조에서 가장 가능한 곳에 위치시키는 것이다. 그래머는 다음과 같다.
이 그래머에서, 심볼x는 공집합으로 평가하는 더미 (dummy) 솔리드를 의미한다. 시드 구조는 제 1 오퍼레이션에 의해 제공되며, 다른 오퍼레이션에는 대체가 제공된다. 전술한 이유로, 대체는 명백히 상호교환적이다.
시드 구조는 워드
이며, 도 32 의 트리로 표시된다. 질적인 관점에서, 도 8 의 각각의 "핸들" 은 터미널 심볼x및 대응하는 핸들로 형성된 2 리프 트리로 대체된다.
그래머에서 표현되는 바와 같이, 대체 규칙은로 표현되며, 이때z는 비-터미널 심볼e +,e -,i +,i -및u중의 임의의 것을 의미하며,a는 임의의 기본 솔리드를 의미한다.
이 시드 구조의 오퍼레이션은 도 11 및 도 12 의 동일한 얇은 솔리드 및 픽스처를 이용하여 예시된다. 얇은 솔리드 기능적 피처는 다음의 대체
에 의해 포착되며, 이는 도 33 에 표시된 트리 또는 다음의 워드
를 산출한다.
픽스처 기능적 피처는 다음의 대체
에 의해 포착된다.
이러한 대체는 도 34 에 표시된 트리 및 다음의 워드
를 제공한다.
그래머로 인해 예상된 바와 같이, 기존의 솔리드에 이어 새로운 기본 솔리드가 트리에서 나타난다. 따라서, 새로운 솔리드가 부가된 후에도 중간 결과는 유지되며 재사용될 수 있다. 예를 들어,F는A에 후행하며,E는D에 후행한다.
이 실시형태에서는, 도 8 내지 도 18 을 참조하여 개시된 경우로부터 유도된 바이너리 트리 및 그래머를 이용한다. 또한, 제 3 실시형태에서 설명된 장점은 비-바이너리 트리에도 적용된다. 또한, 얇은 솔리드 이외의 모델링된 오브젝트에 대해서, 동일한 해결책을 다른 시드 구조에 적용할 수도 있다.
본 발명은 상세한 설명에서 예시된 실시예에 한정되지 아니한다. 실시예에서 설명한 것과 상이한 히스토리-기반 설계 시스템을 이용할 수 도 있다. 각각의 실시형태를 참조하여 설명된 다양한 해결책은 다른 실시형태에 적용될 수도 있다. 이는 전문 사용자의 기능에 대한 설명, 및 도 8 내지 도 18 의 제 1 실시형태를 참조하여 주어진 시스템의 오퍼레이션에 대한 설명에도 적용된다. 또한, 이들은 다른 실시형태에도 적용할 수 있다.
위에 주어진 실시예는 몰딩된 얇은 솔리드에 관한 것이다. 부가적 또는 대체적인 오퍼레이션 및 컨트리뷰션은 다른 타입의 모델링된 오브젝트에 대해서도 이용될 수 있다. 예를 들어, 부품의 어셈블리에 대해, 부품이 병치되도록 부가적으로 허용할 수 있다. 이는 부가적인 비-터미널 심볼을 단순히 표현한다. 표면 외부의 모델링된 오브젝트 (예를 들어 타출 (stamp) 된 금속 자동차 부품) 를 설계하는데 있어서, 터미널 심볼 커브 및 표면을 이용할 수 있다. 그 후, 오퍼레이션은 기존의 모델링된 오브젝트의 부품을 타출하기 위한 재경계, 또는 커브나 표면을 컷팅하기 위한 컷을 포함한다.
위에서 제공된 실시예에서, 비-터미널 심볼은 초기 시드 구조에서 모두 이용된다. 대체 규칙의 시퀀스는, 초기 시드 구조에는 없었던 새로운 비-터미널 심볼을 도입할 수도 있다. 이 능력은 시드 구조가 더 복잡해지는 것을 허용한다. 동적 비-터미널 심볼은 추가적인 대체 규칙에서 재사용될 수 있다. 예를 들어, 몇몇의 설계 스텝 후에, 필요한 것은 제 1 공제 오퍼레이션 후에 솔리드 부품에 재료를 부가하는 것이다. 도 30 의 트리 구조는 이 오퍼레이션을 지원할 수 없으며, 재료의 부가를 허용하기 위해서 도 35 의 구조로 변경되어야 한다. 도 35 의 트리는, 솔리드 컨트리뷰션을 포착할 준비가 되어 있는 새로운 비-터미널 심볼f를 특징짓는다. 대체 규칙의 시퀀스는 다음의 표현
으로 시작하며, 이는 도 30 의 트리를 표시한다. 이 표현에서, 제 1 공제 오퍼레이션 심볼은, 신택스를 절약하고 노드 삽입을 준비하는 비-터미널 심볼에 의해서 대체된다. 이는 다음의 표현
을 제공한다.
예상한 바와 같이, 시드 구조 편집은 메타-그래머와 관련된다.
그 후, 다음의 대체가 수행된다.
그리고 결과 표현은 도 35 의 기대 트리 (expected tree) 에 대응한다.
이러한 실시예는, 동일한 메타-그래머를 이용하여, 더 복잡한 시드 구조를 생성하기 위하여 시드 구조를 정정하는 것이 가능함을 나타낸다.
또한, 논리적 변수의 값에 따라, 기능적 피처에 부가하여, 대체 규칙을 수행하거나 수행하지 않는 것이 가능하다. 통상 "활성 (activity)" 이라 불리는 이 변수는 기능적 피처 정의에 임베딩될 수 있으며, 최종-사용자는 이 값 ("참" 또는 "거짓") 을 임의의 규칙 또는 프로그램을 이용하여 정의한다. 이는, 코어 시스템의 평가기에 의해 고려됨이 없이, 모델링된 오브젝트에서 기능적 피처를 유지하는 것을 가능하게 한다. 기능적 피처는 비활성화되며, 필요하면 활성화될 수 있다. 또한, 논리적 변수를 이용하는 것은 모델링된 오브젝트의 부가적인 뷰를 제공하는 것을 가능하게 한다. 예를 들어, 임의의 머시닝 스텝 전에 모델링된 오브젝트의 뷰를 제공하기를 원할 수도 있다. 그러면, 모델링된 오브젝트를 평가하기 전에 핸들 u 에 적용된 컨트리뷰션을 비활성화한다. 이 실시예는 전체 기능적 피처 뿐만 아니라 기능적 피처의 컨트리뷰션도 비활성화할 수 있음을 나타낸다.
마지막으로, 대체된 비-터미널 심볼이 타겟 구조에 없다면, 대체 규칙은 수행될 필요가 없다. 이는 대체 규칙의 표준 행동이며 에러 메시지를 내지는 않을 것이다. 예를 들어, 상부 및 하부 몰드의 실시예에서, 도 19 및 도 20 의 시드 구조는 핸들u를 포함하지 않는다. 이는 시스템이, 컨트리뷰션G를 고려함이 없이, 픽스처 기능적 피처를 상부 및 하부 몰드에 적용하는 것을 방지하지 않는다.
컴퓨터 시스템에서의 본 발명의 구현은 상세히 설명하지 않았다. 히스토리-기반 설계 시스템 (40) 의 구현은 당업자에게 잘 알려져 있다. 도 5 의 부가적인 피처는, 기존의 프로그래밍 언어 (C++, Java, Fortran 등) 및 임의의 CAD 시스템에서 통상적으로 이용가능한 프로그램의 라이브러리와 같은 도구를 이용하여, 동일한 또는 다른 컴퓨터 시스템에서 구현될 수도 있다. 그러한 라이브러리에서 프로그램은
- 오브젝트 생성
- 오브젝트 쓰기
- 모델링된 오브젝트 읽기 등
을 가능하게 한다.
따라서, 도 5 에 표시된 바와 같이, 임의의 기존 CAD 시스템에 본 발명을 구현할 수도 있으며, 이때 CAD 시스템은 도 5 의 코어 시스템 (40) 으로 이용된다.
또한, 대부분의 기존 CAD 시스템이, 본 발명의 부가적인 엘리먼트가 프로그래밍될 수도 있는 프로그램화 플랫폼을 제공하기 때문에 이는 더욱 용이하다.
본 발명은 CAD 시스템의 바람직한 실시형태를 참조하여 설명되었지만, 컴퓨터-에이디드 제조 (CAM) 시스템 및 컴퓨터-에이디드 엔지니어링 (CAE) 에도 적용될 수 있다. 프로덕트 데이터 관리 (PDM) 시스템, 가상 프로덕트 모델링 (VPM) 또는 프로덕트 주기 관리 (PLM) 시스템 등의 다른 시스템에 대해서, 그리고 기업 자원 계획 (ERP) 시스템에 대해서도 유사한 그래머 및 메타-그래머를 이용할 수도 있다. 그러한 시스템은 (일반적인 의미이서) 프로덕트에 대해 수행될 태스크를조직화한다. 통상적으로 프로세스 모델러에 의존하는 그러한 시스템에서, 쿼리 및 태스크는 순서에 민감하다. 다음의 표는 설명된 CAD 시스템과 PDM 시스템 사이의 가능한 관련의 예를 나타낸다.
- 히스토리-기반 설계 시스템 순서 기반 쿼리 시스템
- 기능적 피처 파라미터 태스크
- 피처 파라미터 태스크 파라미터
- 부품 태스크
- 프리미티브 엘리먼터리 액션
- 오퍼레이션 오퍼레이션
PDM 시스템의 태스크는 엘리먼터리 액션 및 오퍼레이션의 순서화된 시퀀스이며, CAD 시스템의 부품에 대응한다. 또한, 표는 CAD 시스템에 관하여 전술한 해결책이 PDM 시스템에도 적용되며 유사한 이점을 제공한다는 것을 나타낸다.