NX UG [UF_SO] UF_SO_create_curve_extract 사용 방법

NX UG [UF_SO] UF_SO_create_curve_extract 사용 방법


uf_so.h


함수 원형


1
2
3
4
5
6
7
8
9
extern UFUNEXPORT int UF_SO_create_curve_extract (
    const tag_t object_in_part, // 변경할 커브의 태그
    const UF_SO_update_option_t update_option, // 변경된 커브의 업데이트 방법
    const tag_t curve1, // 변경할 커브의 태그
    const int type,  // 변경할 커브의 타입 (라인, 포인트, 이미지) 등
    const int subtype,  // 변경할 커브의 서브 타입
    const tag_t xform,  // 참고할 커브의 태그 (NULL 가능)
    tag_p_t curve2  // 변경된 커브의 새로운 태그
);

cs



설명


이번 예제에선 정육면체 block의 edge만 골라서 하이라이트 효과를 줄겁니다. UF_SO_create_curve_extract() 함수는 라인-라인, 포인트-포인트, 이미지 등의 속성을 변경하는 기능이 있습니다.



사용 방법


일단 소스를 확인해 보시죠.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
tag_t edge;
tag_t edges [ 3 ];
tag_t line;
 
double  origin [ ] = { 0.00.00.0 };
char   *sizes  [ ] = { "1""1""1" };
tag_t block_feature;
int count = 0;
 
UF_MODL_create_block1(UF_NULLSIGN, origin, sizes, &block_feature);
 
uf_list_p_t edge_list;
 
UF_MODL_create_list(&edge_list);
UF_MODL_ask_feat_edges(block_feature, &edge_list);
UF_MODL_ask_list_count(edge_list, &count);
 
for (int i = 0; i < count; i++)
{
    UF_MODL_ask_list_item(edge_list, i, &edge);
 
    edges[0= edge;
    edges[1= edge;
 
    UF_MODL_ask_list_item(edge_list, i, &edges[2]);
 
    UF_SO_create_curve_extract(edge, UF_SO_update_after_modeling, edge, UF_line_type, 0, NULL_TAG, &line);
    UF_SO_set_visibility_option(line, UF_SO_visible);
    UF_SO_display(line, UF_DISP_ALL_ACTIVE_VIEWS, UF_DISP_USE_SPECIFIED_COLOR, UF_OBJ_YELLOW);        
}
 
UF_MODL_delete_list(&edge_list);
cs



UF_MODL_create_block1() 함수를 이용해 블록을 하나 만듭니다.

다음 14, 15, 16번 라인을 거치며 블록의 엣지와 엣지가 몇 개인지 알아냅니다. 반복문에선 이 edge들의 태그를 하나씩 얻으며 속성을 변경합니다.


UF_SO_create_curve_extract() 실행 결과



커브 엣지를 변경하며 마치 하이라이트를 준 것과 같은 효과를 냈습니다.


위의 예제는 block을 이용했기에 UF_line_type을 4번째 인자로 사용했습니다. 여기서 사용할 인자는 uf_object_types.h 파일에서 확인할 수 있습니다.


1
2
3
4
5
#define UF_point_type  2 /* Point entity */
#define UF_line_type   3 /* Line entity */
#define UF_image_type  4 /* Image (new in NX9.0) */
#define UF_circle_type 5 /* Circle entity - also called "arc" */
#define UF_conic_type  6 /* Conic entity */
cs


여기서 상황에 맞는 타입을 선택하시면 됩니다. 그리고 UF_SO_set_visibility_option()의 인자에 UF_SO_visible 인자를 줘야 눈으로 확인이 되니 이 옵션도 잊으시면 안 됩니다.


NX UG [UF_SO] UF_SO_create_curve_extract 사용 방법

댓글(0)

Designed by JB FACTORY