Crankshaft project - Part I
Crank Web Class
우리는 crankshaft design 어플리케이션을 위해 첫번째 클래스를 만들 예정이다.
Crank web클래스는 한개의 ug_block과 두개의 ug_cylinder 클래스를 포함한다.
![](https://img1.daumcdn.net/relay/cafe/original/?fname=http%3A%2F%2Fpds20.cafe.daum.net%2Fdownload.php%3Fgrpid%3D7yTF%26fldid%3D7K94%26dataid%3D33%26fileid%3D1%26regdt%3D20050705185111%26disk%3D9%26grpcode%3DKBE%26dncnt%3DN%26.gif)
Step 1
Text Editor로 xxx_crankweb.dfa 파일을 만든다.(xxx는 이니셜)
step 2
아래 첫째,둘째문장을 삽입한다:
#! UGNX/KF 2.0
DefClass: xx_crankweb (ug_base_part);
Step 3
4개의 number형 Attribute를 정의하고 모두 Modifiable Parameters 옵션을 설정한다:
· Stroke: 200;
· Thickness: 50;
· MBJournalDia: 100;
· FlangeWidth: 10;
Step 4
ug_cylinder 클래스로 부터 상속 받은 "bottom" 이라는 이름의 child rule을 정의한다:
· Diameter, MBJournalDia: + (FlangeWidth: * 2);
· Height, Thickness:;
· Direction, Vector(0,1,0);
설명: 크랭크 웹의 하단부 생성.
Step 5
ug_block 클래스로 부터 상속 받은 "crankweb"이라는 이름의 child rule을 정의한다:
· Length, bottom:Diameter:;
· Width, Thickness:;
· Height, Stroke:/2;
· Origin, Point(-(bottom:Diameter:/2), 0, 0);
· Operation, Unite;
· Target, {bottom:};
설명: Target attribute의 값은 List형태의 feature instance를 포함하고 있어야 한다.
TIP. KF의 Boolean Operaion에 관하여...
ug_block, ug_cylinder등과 같은 Child Class에 Boolean Operation을 위한 방법을 제공하고 있다. Operation은 Unite, Subtract, Intersect 3가지 이며 초기값으로 Unite로 설정되어 있으며 Target이 빈괄호(empty list)일 경우 Operation의 Unite는 무시된다.
KF로 Boolean Operation을 정의할 경우 흔히 범하기 쉬운 문제점이 있다.
첫째로 Target을 잘 못 설정하는 경우이다. 우리가 흔히 UG로 Modeling할때에는 고민할 필요가 없다. 하지만 프로그래밍을 할때에는 꼭 고려하여야 한다. 무엇이냐하면 한개의 SOLID BODY일 경우 Boolean이 최종적으로 계산된 Feature를 Target Feature로 설정하여야 한다는 단순한 원리이다. 하지만 이를 잊어버리고 잘못된 Feature의 이름을 지정할 경우가 가끔 있다.
둘째로 Boolean을 실패했을 경우가 있는데 Boolean Operation 최초 실행시 Operation을 실수로 Subtract을 해야 하는데 Unite로 설정할 경우가 가끔 있다. 잘못된 Class를 Edit로 Operation을 Unite를 Subract로 바꾸더라도 원하는 형태로 Boolean결과를 나타내질 못한다. 이문제는 NX1까지 있던 문제였다. NX2 QRM 2.0.5.1이상 버전에서는 고려하지 않아도 자동으로 Boolean Operation을 수행한다.
Step 6
ug_cylinder 클래스로 부터 상속 받은 "top" 이라는 이름의 child rule을 정의한다:
· Diameter, bottom:Diameter:;
· Height, bottom:Height:;
· Direction, bottom:Direction:;
· Origin, Point(0, 0, crankweb:Height:);
· Operation, Unite;
· Target, {crankweb:};
설명: 크랭크 웹의 상단부 생성.
Summary
crank web 클래스 정의를 완료하였다.
NX에서 crank web을 Test해 보라.
이번 단원에서 배운것:
1. 다른 child rule을 위해 참조문으로 인용하는 방법
2. ug_block를 위해 origin을 정의하는 방법
3. ug_cylinder를 위해 origin과 direction을 정의하는 방법
4. Feature의 Boolean operation방법
======= 완성된 xxx_crankweb.dfa은 UG_KF관련 자료 게시판에 있습니다. ============
첫댓글 점점 흥미있어 지는 군여...^^