블로그 이미지
진연
3차원 CAD프로그램인 UGS에서 지원하는 API를 이용하여 프로그램하는 방법등을 소개하는 블로그입니다. 혹시 연락이 필요하신분은 youni7311@hanmail.net로 메일 보내주세요..

calendar

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

'NX Open for C/C++/초급 강좌'에 해당되는 글 8

  1. 2007.03.08 8. UG Interface Styler(3)
8. UG Interface Styler(3)

안녕하세요...출장 다녀오느라고 이제서야 8번째 강좌를 올립니다...혹시, 그만두는거 아닌가 하고 생각하셨다면 잊어주세요... 조금씩 시간내서 하는 일이라 마음 같이 안되네요...

그럼 저번시간에 예고 했듯이 UG Interface Styler에 대해 마무리를 하겠습니다...

기본적인 시용방법은 지난시간에 했던 내용과 크게 다른게 없습니다.. 개개인의 능력에 따라 응용하시면 될것 같고, 오늘은 UG Interface Styler에서 값을 받아오고, 설정하는 방법등에 대해서 알아보겠습니다.

UF_STYLER_ask_select_dialog_id
UF_STYLER_ask_value
UF_STYLER_ask_values
UF_STYLER_create_dialog
UF_STYLER_free_value
UF_STYLER_set_value

위에 나열한 함수는 NX3 Documentation -> NX Open -> Open C Reference Guide -> uf_styler 에 보시면 나와있는 함수들 입니다. 이 함수는들 UG Interface Styler를 제어 할 때 사용하는 함수들 입니다. 이중에서 UF_STYLER_create_dialog는 이미 Styler를 실행할 때 설명을 드렸습니다.. 만약, 모르시면 이전 강좌를 참조하시기 바랍니다.

UF_STYLER_ask_value, UF_STYLER_set_value, UF_STYLER_free_value는 지난 시간에 잠깐 보고 넘어간 함수인데 이 세개의 함수에 대해 좀더 알아보겠습니다..함수명을 보시면 알겠지만 UF_STYLER_ask_value는 Styler에서 입력된 값을 요청할 때 사용하고, UF_STYLER_set_value는 Styler에 값을 설정할 때 사용합니다. UF_STYLER_free_value는 이전 두 개의 함수에서 사용한 구조체의 메모리를 해제 하기위해서 사용합니다.

UF_STYLER_ask_value ( int dialog_id, UF_STYLER_item_value_type_p_t value );
UF_STYLER_set_value (int dialog_id, UF_STYLER_item_value_type_p_t value );
UF_STYLER_free_value (UF_STYLER_item_value_type_p_t data );

위에는 세가지 함수의 전체 형태를 보여주고 있습니다. 여기서 UF_STYLER_item_value_type_p_t value라는 Argument(구조체)가 동일하게 사용되는것을 볼수 있습니다. UF_STYLER_item_value_type_p_t 라는 구조체의 형태는 아래와 같습니다.

struct UF_STYLER_item_value_type_s {

   int reason;
   const char *item_id;
   int subitem_index;
   int count;
   int item_attr;
   int indicator;
   UF_STYLER_value_t value;

};

union UF_STYLER_value_u
{
   char *string; /* A string value */
   char **strings; /* An array of strings */
   int integer; /* An integer value */
   int *integers; /* An array of integers */
   double real; /* A double value */
   double *reals; /* An array of doubles */
   UF_UI_selection_p_t selection; /* A pointer to a selection structure */
   UF_STYLER_notification_p_t notify; /* A pointer to the notification structure */
   UF_UI_attachment_t attach; /* Attachments structure */
   UF_UI_option_toggle_t option_toggle; /* Option toggle structure */
};

그럼 이넘들을 어떻게 사용할까요?? 다행히 UG Documantation에 자세히 설명이 있습니다.. 지금부터 한번 보겠습니다. 지금 바로 NX3 Documentation을 열고 Tools -> Open User Interface Styler -> Dialog Item Reference -> Dialog Item Reference Overview로 가보시길 바랍니다...



Dialog Item Reference Overview
의 내용을 보면 Attlibute, Callback, Setting, Getting 네 가지로 구분되어 있습니다.

- Attlibute : UG에서 Dialog를 만들 때 설정할 수 있는 속성들입니다.(Resource Editor)
- Callback : 아이템이 가지는 Callback함수에 대해 나열 되어 있습니다. (Resource Editor)
- Setting : 아이템에 설정할 수 있는 값에 대해 나열되어 있습니다.
- Getting : 아이템에서 가져올 수 있는 값에 대해 나열되어 있습니다.

현재 우리에게 중요한 부분은 Setting, Getting입니다. 먼저 Real 아이템Setting을 마우스로 클릭해서 들어가 보겠습니다. 들어가 보시면 잘 정리된 표가 하나 나오고, 타이틀을 보시면 AttributeVariable and Required Input Value가 있습니다. Attribute는 Item에 설정 할 수 있는 값의 목록이고, Variable and Required Input ValueUF_STYLER_set_value()를 사용하는 방법이라고 보시면 됩니다. 예를 들어 Attribute의 Value 항목에 Variable and Required Input Value의 내용을 보시면 아래와 같이 나와 았습니다.

Variable      Value

item_attr      UF_STYLER_VALUE
item_id        Dialog item name
value.real   Real value to display in the text field

센스가 있으신분들은 금방 누치 채셨을 겁니다.. 그럼 지난번에 Real 아이템에 값을 설정하기 위해 만들었던 함수를 다시 한번 보겠습니다.

void set_real_to_styler(int dialog_id, char *item_id, double real)
{
   UF_STYLER_item_value_type_t item_value;

   item_value.item_attr = UF_STYLER_VALUE;
   item_value.item_id = item_id;
   item_value.value.real = real;

   UF_CALL(UF_STYLER_set_value(dialog_id, &item_value));

   return;
}

모르셨던 분들도 이제는 이해가 되셨을겁니다... Variable and Required Input Value의 내용은 UF_STYLER_item_value_type_t 구조체에 특정 값을 받아오기 위해 입력해야할 정보를 자세히 보여주고 있습니다... 이 도움말만 잘 보아도 UG Interface Styler는 다 안다고 말해도 과언이 아닐것 같습니다.. Getting이나 다른 아이템에 대해서는 따로 설명하지 않겠습니다. 두말하면 잔소리가 될것 같아서...^^

그럼 이번에는 Callback로 넘어가서 Real 아이템에 Callback를 클릭해서 들어가보면 역시 테이블이 나오고 Callback, Description, Returning Data 라는 세가지 타이틀이 있습니다. CallbacK은 callback 이름이고, Description은 callback 함수가 실행되는 시점을 설명하고 있습니다. 마지막으로 Returning Data는 callback함수가 호출될 때 리턴해주는 값에 대해 보여주고 있습니다. 그럼 예를 한번 보죠... 역시 Real 아이템의 Callback을 들어가보시면 아래과 같이 볼 수 있습니다.

Callback : Activate
Description : Called when a dialog user enters a valid real value and presses Return.

Returning Data :

   reason       UF_STYLER_ACTIVATE_REASON
  item_id       The name of the dialog item that triggers this callback
  indicator     UF_STYLER_REAL_VALUE
  count         1
  value.real   The real value displayed in the text field

이번에는 Real 아이템의 Callback 함수 형태를 한번 보겠습니다...

int BASIC_LINE_DLG_active_cb ( int dialog_id, void * client_data,   
                                      UF_STYLER_item_value_type_p_t callback_data
)
{
   
   if ( UF_initialize() != 0)
      return ( UF_UI_CB_CONTINUE_DIALOG );

   UF_terminate ();

   return (UF_UI_CB_CONTINUE_DIALOG);
}

함수 이름은 개발자가 원하는데로 정하시면 되고, 위에서 중용한 부분은 빨간색으로 표시한 부분인데, 이 넘이 Return Data를 받아오는 부분입니다. 설명이 점점 꼬이는것 같은데 이해되셨는지 모르겠습니다.. 정리하면 Real 아이템의 Active Callback은 유저가 값을 입력될때 실행되고, 그 순간에 입력된 값은 UF_STYLER_item_value_type_p_t callback_data를 통해서 가져올 수 있습니다. 이제 조금 이해 되셨으리라 생각됩니다. 다른 아이템들도 마찬가지 구조로 동작합니다.. 필요하시다면 한번씩 직접 해 보시는것이 가장 좋습니다...

이정도면 User Interface Styler의 기본적인 내용에 대해서는 모두 설명 한것 같습니다... 다 하고 보니 순서가 조금 뒤죽박죽인것 같은데.. 적절하게 재 조합해서 봐주시면 감사하겠습니다... 여하튼 여기까지면 일단 기초부분은 다 한것 같습니다. 그래서, 다음부터는 실전 프로그램을 하면서 실력을 좀더 높혀보도록 하겠습니다...

요즘 일이 바뻐서 강좌 쓰기가 여의치 않네요... 조금 늦어도 끝나지는 않으니 계속적인 관심 부탁드립니다... 그리고, 질문 이나 궁금한 점이 있으시면 댓글로 남겨주시거나, 지에기 메일 혹은 쪽지를 보내주시면 답변해 드리겠습니다...

그럼 오늘도 좋은 하루 되세요...

posted by 진연