블로그 이미지
진연
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 31

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

  1. 2007.03.08 5. 메뉴 만들기2

5. 메뉴 만들기

안녕하세요... 블로그에 방문하시는 분이 아주 조금씩 늘어나네요... 진짜 필요하신분들이 다녀가시는지는 모르지만...^^

그건 그렇고, 본론으로 들어가겠습니다. 여러분은 지금까지 UG DLL를 만드시면 NX Open...(Ctrl+U)를 사용하셔서 실행하셨습니다. 무지 귀찮습니다...

오늘은 만든 DLL를 풀다운 메뉴나 툴바를 이용해서 실행하는 방법을 해보겠습니다... 먼저 메뉴나 툴바를 만들기전에 UG가 실행될때 우리가 만든 메뉴나 툴바를 읽어서 등록할 수 있도록 몇가지 해야할 일이 있습니다. 일단 아래 순서대로 따라해 보세요...

1. 우선 아무 드라이브에 폴더를 하나 만들어 주세요.. 이름은 원하시는대로.. 단, 한글이나 공백이 있으면 안됩니다.
2. 만든 폴더 안에 "Startup", "Application"이라고 두 개의 폴더를 더 만들어 주세요.
3. {UGII_BASE_DIR}\UGII\menus 안에 있는 "custom_dirs.dat" 파일을 메모장으로 열면 아래과 같은 내용이 나옵니다.
4. 영어로 나와있는 내용의 맨 아래에 1번에서 만든 폴더의 경로를 입력해 주세요. 예를 들어 "D:\UGDLL" 이라는 폴더를 만들고, 그 안에 "Startup", "Application" 만들었다면
아래처럼 "D:\UGDLL"이라고 쓰시면 됩니다.
5. 그리고, 파일을 저장하고 닫습니다.

###############################################################################
#
#
# This file is used to specify directories which will be searched for
# menu files, toolbar files, dialog files or UDO libraries. The directories
# added here may or may not exist, to allow the same file to be used at
# multiple sites. When Unigraphics starts up, it will check each entry, if
# the directory does not exist, the line will be discarded as if it was a
# comment. Comments are allowed, and must start with a # in column one.
#
# Directories must be listed one per line, with nothing else on the line. The
# directory may include environment variables, by specifying $variable. If
# a $ is needed in a directory, it may be specified using $$, e.g.
# /users/my$$ would be the directory /users/my$. The file may be made to
# work on UNX or WNT, on WNT any / characters will be replaced by \.
#
# A #include construct is supported to include other files, to make it easier
# for individual users to customize their runtime environment. Finally the
# location of this file is controlled by the environment variable
# $UGII_CUSTOM_DIRECTORY_FILE which by default points to
# $UGII_DEFAULT_MENU_DIR/custom_dirs.dat
#
# Customers should feel free to edit this file.
#
####################################################################
#
D:\UGDLL <-- 요렇게 써주세요

여기까지 하셨으면, 메뉴나 툴바를 만들어서 등록할 수 있는 환경이 만들어 졌습니다. 그럼 하나하나 짚어볼까요..?

Startup은 UG가 처음 시작할 때 읽는 폴더입니다. 즉, UG가 실행되면서 Startup 폴더 안에 들어있는 파일들을 읽어서 등록하는 작업을 합니다. 그러므로 Startup폴더에는 메뉴 혹은 툴바같은 파일를 저장하시면 됩니다. 반면 Application은 UG를 사용중에 풀다운메뉴나 기타 다른방법으로 호출하는 파일(UG Styler(*.dlg), 아이콘 이미지)들을 저장합니다. 그러면 UG에게 Srartup이나 Application폴더의 위치를 알려줘야하는데 이 역활은 custom_dirs.dat 파일이 담당하고 있습니다. 이해가 되셨나요..?

이제부터는 메뉴파일을 만들어 볼까요..? 메뉴파일은 확장자가 *.men 이고, 메모장이나 기타 텍스트 편집기로 만들 수 있습니다. 그럼 예제를 하나 보면서 공부해 볼까요.





//-----------------------------------------------------
//custom_menu.men
//-----------------------------------------------------

VERSION 120 - MenuScript 버젼

EDIT UG_GATEWAY_MAIN_MENUBAR - Edit Mode (이것도 특별히 변하지 않습니다.)

AFTER UG_APPLICATION - Menu1이 놓여질 위치입니다.(여기서는 Application 후에)

   CASCADE_BUTTON MENU1
   LABEL Menu1

END_OF_AFTER

MENU MENU1 - Menu1의 Sub Menu군 입니다.

   BUTTON MENU1-1
   LABEL Menu1-1
   ACCELERATOR Ctrl+Alt+Z - 단축키 설정
   ACTIONS custom1.dll - 메뉴를 클릭했을 때 동작이 일어나는 dll등을 설정

   SEPARATOR

   CASCADE_BUTTON MENU1-2
   LABEL Menu1-2

END_OF_MENU - Menu1 종료

MENU MENU1-2

   BUTTON MENU1-2-1 - 버튼 ID
   LABEL Menu1-2-1
   BITMAP icon1.bmp - 아이콘 이미지
   ACTIONS custom2.dll

   BUTTON MENU1-2-2
   LABEL Menu1-2-1
   BITMAP icon2.bmp
   ACTIONS custom3.dll

END_OF_MENU

첫번째 이미지는 아이콘 이미지와 메뉴파일의 위치입니다. 그리고, 두번째 이미지는 custom_menu.men를 실행시킨 결과이고, 바로 위에 코드가 custom_menu.men 파일의 내용입니다. 설명은 위에 주석으로 대체하겠습니다. 대충 아시겠죠? 이 외에도 토글버튼등 몇가지 더있는데 생략하겠습니다. 경험상 위에 예제만 알아도 사용하시는데 큰 문제가 없습니다.

그럼 이번에는 툴바를 한번 만들어 볼까요..? 툴바는 *.tbr의 확장자를 가지고, 역시 메모장이나 텍스트 편집기를 이용하여 만들 수 있고, Startup폴더에 저장하면 UG가 실행할때 자동으로 동록하여 사용할 수 있습니다.



TITLE
Custom Toolbar - 툴바 상단에 나오는 타이틀

VERSION 170

BUTTON TOOLBAR1 - 버튼 ID
LABEL Toolbar1 - 풍선도움말
BITMAP icon1.bmp - 아이콘 이미지
ACTION custom1.dll - 버튼을 클릭했을 때 동작이 일어나는 dll등을 설정

SEPARATOR - 구분선

BUTTON TOOLBAR2
LABEL Toolbar2
BITMAP icon2.bmp
ACTION custom2.dll

너무 간단해서 설명할 내용이 없네요... 굳이 하나 더 말씀드리자면 보통 툴바는 단독으로 사용하는것보다 메뉴와 같이 사용하는 경우가 더 많습니다. 예를들어 위에 custom_menu.men와 연동해서 툴바를 만들면 아래와 같이 만들 수 있습니다.

TITLE Custom Toolbar

VERSION 170

BUTTON MENU1-2-1
LABEL Toolbar1-2-1
BITMAP icon1.bmp

BUTTON MENU1-2-2
LABEL Toolbar1-2-2
BITMAP icon2.bmp

BUTTON ID를 메뉴의 ID와 동일하게 해주면 특별히 ACTION 명령 없이 툴바에서 버튼을 누르면 자동으로 메뉴에 ACTIONS에 연결되어 있는 DLL을 실행합니다. 나름대로 편리한 기능인것 같습니다.

아래는 드롭다운(Dropdown) 버튼을 만드는 예제입니다. 그대로 따라 하시면 특별히 어려운것은 없습니다...^^

BEGIN_DROPDOWN View Orientation
COLUMN_DROPDOWN 3

BUTTON UG_VIEW_POPUP_ORIENT_TFRTRI
LABEL Trimetric
BITMAP view_tfr_tri.bmp

BUTTON UG_VIEW_POPUP_ORIENT_TOP
LABEL Top
BITMAP view_top.bmp

BUTTON UG_VIEW_POPUP_ORIENT_TFRISO
LABEL Isometric
BITMAP view_tfr_iso.bmp

BUTTON UG_VIEW_POPUP_ORIENT_LEFT
LABEL Left
BITMAP view_left.bmp

BUTTON UG_VIEW_POPUP_ORIENT_FRONT
LABEL Front
BITMAP view_front.bmp

BUTTON UG_VIEW_POPUP_ORIENT_RIGHT
LABEL Right
BITMAP view_right.bmp

BUTTON UG_VIEW_POPUP_ORIENT_BACK
LABEL Back
BITMAP view_back.bmp

BUTTON UG_VIEW_POPUP_ORIENT_BOTTOM
LABEL Bottom
BITMAP view_bottom.bmp

END_DROPDOWN

이렇게 해서 오늘은 메뉴와 툴바 만드는 방법에 대해서 알아 봤습니다. 제 생각에는 어려운 부분은 없는것 같습니다. 단, 자동으로 등록시키기 위한 몇가지 설정에 대해서는 꼭 기억해 두셔야 합니다.

그럼 오늘은 이만하고ㅡ 다음에 더 좋은 자료를 가지고 뵙겠습니다..^^ 좋은 휴일 되세요...^^

posted by 진연
prev 1 2 3 4 5 6 7 8 next