Surface Entities and Complex Entity Instance at STEP-file

Surface Entities and Complex Entity Instance at STEP-file  Fusion360, MFCAD, SAMSUNG전자 및 내가 FreeCAD를 통해 직접 그린 형상을 기준으로 정리하였다.

Entities of Curve

Hierarchy of Curve

 편의상 사용되는 Curve들만 정리
  • Line
  • Conic
    • Circle
    • Ellipse
  • Bounded Curve
    • B-Spline Curve with Knots
 

Explanation of each entities and ideas to create edge feature for curve related entities

  • Line: Start point, End point
  • Circle: Start point, Center point, Radius, End point
  • Ellipse: Start point, Center point, Radius1, Radius2, End point
  • B-Spline Curve with Knots: Start point, [list of control points], [list of knot multiplicity], [list of knots], End point

Entities of Surface

Hierarchy of Surface

  • Elementary Surface
    • plane, cylindrical_surface, conical_surface, spherical_surface, toroidal_surface
  • Swept Surface
    • surface_of_linear_extrusion, surface_of_revolution, surface_curve_swept_surface, fixed_reference_swept_surface
  • Bounded Surface
    • b_spline_surface, rectangular_trimmed_surface, curve_bounded_surface, rectangular_composite_surface, locally_refined_spline_surface
  • Offset Surface
  • Surface Replica
 (Offset Surface, Surface Replica는 큰 필요 없어보인다.)
 OPEN_SHELL, TRIMMED_CURVE는 코드를 이용해서 지워도 괜찮고, Inventor를 이용하여 solid를 제외한 후 지워도 된다.
 

Explanation of each entities and ideas to create node feature for surface related entities

 참고: 아래에서 말하는 축 방향은 축의 위치는 고려하지 않고 orientation만 고려한 벡터 값을 의미함.
  • Elementary Surface
    • Plane: 평면 방정식의 parameter \(a, b, c, d\)
      평면은 평면 방정식 \( ax+by+cz+d=0 \)을 이용하여 표현할 수 있다.
      한 점 \( (x_0, y_0, z_0) \)을 지나고 법선벡터가 \( \vec{n}= \langle a, b, c \rangle \)이면 평명 방정식 \( a(x-x_0)+b(y-y_0)+c(z-z_0)=0 \)을 얻을 수 있다. 여기에서 식을 전개하고 상수를 따로 모아 \( d=-ax_0-by_0-cz_0 \)라고 하면 위에 있는 식 \( ax+by+cz+d=0 \)을 얻을 수 있다.
    • Cylindrical Surface: 공간상 xyz위치(plane에 부착된 cylinder 원점), 축 방향, 반지름
      Cylindrical surface equation을 이용하여 표현. Equation 자체만 보면(문자만 봤을 때) 원을 나타내는 방정식과 같다. 이는 cyllinder axis의 값이 unit vector이기만 하면 되기 때문이다. 다만, STEP-file을 보면 surface의 위치를 나타내는 entity인 AXIS2_PLACEMENT_3D에서 z-axis의 값에 부호가 들어가 있는데 neural net 학습이 용이하도록 축의 방향을 나타내는 벡터의 z값이 항상 양수가 되도록 표현하자. Cylindrical surface를 유일하게 표현하기 위함이다.
    • Conical Surface: 공간상 xyz위치, 축 방향, semi-angle
    • Spherical Surface: 공간상 xyz위치, 반지름
    • Toroidal Surface: 공간상 xyz위치, 회전 축 방향, major-radius(도넛의 반지름), minor-radius(도넛 단면의 반지름)
      • Torus의 회전 축 방향을 나타낼 때도 회전 축 방향을 나타내는 벡터의 z값은 항상 양수가 되도록 한다.
 
  • Swept Surface
    • Surface of Linear Extrusion: 공간상 xyz위치, extrusion 축 방향
      AP214기준, ellipse로 pad하거나 pocket으로 한 형상에만 적용된다. 따라서 하위에 있는 ellipse에 대한 parameter를 전부 feature vector에 넣을 필요는 없을 것 같다.
    • Surface of Revolution: 생성된 회전 축 위의 점 xyz위치, 회전 축 방향
      회전 대상이 되는 edge를 별도로 참조하나, 360도 회전이 아닌 경우 회전을 위해 sketch했던 edge만을 참조하기 때문에 넣지 않았다. 원점을 지나지 않는 기울어진 축을 기준으로 360보다 작게 회전시켰을 때 생성되는 2 set의 단면을 모두 참조하지 않기 때문에 편향된 정보만 이용한다고 생각한다.
    • Surface of Revolution, Fixed Reference Swept Surface 따로 사용되는 것 같진 않다. 일단 고려하지 않는 것으로 한다. => 최종적으로 Inventor에서 사용되는지 볼트그려서 확인해 보자.
 
  • Bounded Surface
    • 아래 세 개의 항목만이 사용된다. 삼상전자 dataset에 한해서 아래 세 개의 entity가 한데 묶여서 사용되며, 다른 dataset에서는 B-Spline Surface with Knots만이 사용되었다.
    • B-Spline Surface: Control point들의 공간상 xyz위치
    • B-Spline Surface with Knots
      • 단일 entity로 사용될 때:
        Control point들의 공간상 xyz위치, u_multiplicity, v_multiplicity, u_knot, v_knot
      • 다른 entity와 묶여서 사용될 때:
        u_multiplicity, v_multiplicity
    • Rational B-spline Surface: Control points들에 대한 weights_data
      • Rational B-spline은 knot parameter 대신 control point들에 대한 weights를 나타내는 것으로 표현한다.
    • 다른 타입에 비해 data를 처리하는데 난해한 부분은 parameter 개수가 많고 차원이 다르다는 것이다. Parameter 개수 문제는 control point sampling을 통해 해결해 보자.
    • control point sampling을 통해 해결해 보자.
 
 rotational invarient를 확보하기 위해서는 명시적인 coordinate가 아닌 다른 정보를 사용하는 것이 좋을 것 같다. 하지만 아직 특별한 idea가 없는 상황이니, 일단 coordinate 정보를 쓰는 것으로 하자.
 

Complex Entity Instance

 BOUNDED_SURFACE
 B_SPLINE_SURFACE
 B_SPLINE_SURFACE_WITH_KNOTS
 GEOMETRIC_REPRESENTATION_ITEM
 RATIONAL_B_SPLINE_SURFACE
 REPRESENTATION_ITEM
 SURFACE
  • 복잡한 경우, 위와 같은 entity들이 하나의 entity에 같이 묶여있다. 여태까지 봐왔던 경험으론 B_SPLINE_SURFACE를 표현할 때 complex entity instance로 표현했다.
  • B_SPLINE_SURFACE_WITH_KNOTS의 경우, 다른 entity를 참조할 때도 있으나, B_SPLINE_SURFACE와 함께 complex로 쓰일 때는 정수 값을 갖는다. \(\rightarrow\) knot multiplicity를 나타냄.
  • B_SPLINE_SURFACE의 확장판이 B_SPLINE_SURFACE_WITH_KNOTS이기 때문에 complex entity의 feature를 만들어 줄 때, 따로 만들 것이 아니라 하나의 feature를 갖는 entity로 바라보자.

댓글

이 블로그의 인기 게시물

로봇의 작업영역(Workspace)

Frenet-Serret formulas (프레네-세레 공식)

yes24 [뷰어 서버의 기본정보가 존재하지 않습니다.] 오류 해결