Siemens NX 매크로 기록/재생 정리 다이얼로그 문제, 재생 실패
NX 매크로 기록/재생 정리 다이얼로그 문제, 재생 실패, UG_showPlaybackDialogbox 설정
NX 매크로 기록/재생은 반복되는 모델링·도면·검토 작업을 “한 번만” 수행해두고 그대로 재현할 수 있어서, 손이 많이 가는 루틴 업무에서 체감이 큽니다. 특히 어셈블리 정리, 레이어/표시 상태 정돈, 특정 명령 조합을 반복 적용하는 상황이라면 매크로만큼 효율 좋은 선택이 드뭅니다.

다만 NX 매크로는 기록 당시의 UI 상태와 재생 시점의 컨텍스트에 민감해서, “다이얼로그가 안 닫힘”, “기록 정지가 안 눌림”, “다른 환경에서 재생 실패” 같은 이슈가 종종 따라옵니다. 아래 내용은 기록과 재생을 안정적으로 쓰는 요령, 그리고 질문이 많은 다이얼로그 표시/억제 관련 설정을 한 번에 정리한 글입니다.
매크로 기록과 재생
| 기능 | 설명 | 사용 방법 | 주의 포인트 |
|---|---|---|---|
| 매크로 기록 시작 | 반복 작업을 자동화할 매크로 파일을 생성합니다. 기록 중에는 NX 하단에 기록 상태 아이콘이 표시됩니다. | 메뉴 → 도구 → 매크로 → 기록 시작 이름 입력(최대 24자, .macro 자동 추가) → 작업 수행 → 기록 정지 | 모달 다이얼로그가 떠 있으면 기록 정지가 막힐 수 있습니다. 뷰포트에 음영/오버레이가 걸린 상태도 문제를 만들 수 있습니다. |
| 매크로 재설정 | 기록 시작 전에 열린 다이얼로그/컨텍스트를 취소하고 초기 상태로 되돌립니다. | 매크로 기록 다이얼로그에서 재설정으로 매크로 기록 토글 사용 | 같은 작업이라도 NX 안에서 “어디에 서 있느냐”에 따라 실패가 갈리는데, 이 토글이 그 차이를 줄여줍니다. |
| Gateway 재설정 | 재생 위치/모듈에 종속되지 않게, 알려진 시작점으로 정렬합니다. | 파일 탭 → Gateway에서 매크로 기록 첫 이벤트 생성 | “현재 작업 앱/모듈” 영향을 덜 받게 되어 재생 성공률이 올라갑니다. |
| 매크로 파일 재생 | 기록된 매크로 파일을 실행해 자동 수행합니다. | 메뉴 → 도구 → 매크로 → 재생 → 파일 선택 | 기록 당시 상태(파트/표시/선택 모드)가 달라지면 실패할 수 있습니다. |
| 다이얼로그 표시 | 재생 중 다이얼로그를 띄울지 억제할지 결정합니다. | 기본은 억제(성능 유리). 표시가 필요하면 UG_showPlaybackDialogbox 사용자 기본값을 설정합니다. | 디버깅/검증용으로 켜고, 실사용은 억제가 더 편한 경우가 많습니다. |
| 단계별 실행 | 재생을 천천히 진행하며 동작을 확인합니다. | 메뉴 → 도구 → 매크로 → 단계를 선택 매크로 선택 → 옵션 지정 → 실행 버튼 반복 | 해당 창이 활성화된 동안 다른 NX 조작이 제한됩니다. |
| SpaceBall / SpaceMouse | 장치 입력(회전/이동/줌 등)을 기록 대상에 포함할 수 있습니다. | 변환 기록 옵션을 확인 후 포함/제외를 선택 | 장치 입력이 포함되면 환경 차이에 따라 재생이 흔들릴 수 있어, 꼭 필요한 경우에만 포함하는 편이 안정적입니다. |
| 버전/OS 호환성 | NX 버전, 운영체제 환경이 바뀌면 재생이 실패할 수 있습니다. | 구버전(예: V16 이전) 매크로는 최신 환경에서 바로 재생이 안 될 수 있습니다. | 장기간 운영할 매크로는 “짧게 쪼개기”가 유지보수에 유리합니다. |
| 기타 트러블 대응 | 재생 환경이 달라졌을 때 생기는 오류를 완화합니다. | 윈도우 크기/해상도 차이가 크면 resize 옵션 등으로 보정합니다. | 뷰포트 선택 좌표 기반 매크로는 “창 크기”에 특히 민감합니다. |
매크로 기록
매크로 기록 시작

- 기록 시작
- 메뉴에서 매크로를 선택하고 기록 시작을 누릅니다.
- 매크로 이름을 입력하는 파일 선택 창이 뜨며, 이름 끝에
.macro가 붙습니다. - 원하는 조작이 끝났으면 다시 매크로 메뉴에서 기록 정지를 눌러 마무리합니다.
- 재설정으로 매크로 기록
- 기록 시작 전에 열려 있던 다이얼로그 영역(DA2)을 정리하고, 기준 상태(DA1)로 되돌린 뒤 기록을 시작합니다.
- 매크로 첫 줄에
RESET이 삽입되는 형태로 남는 경우가 많아, 재생할 때 컨텍스트 차이를 줄이는 데 도움 됩니다.
- Gateway 재설정
- 파일 탭 → Gateway에서 첫 이벤트를 잡아두면, 매크로가 특정 앱/작업 위치에 덜 묶입니다.
- “어셈블리/모델링/도면”처럼 작업 모드가 섞이는 매크로에서 특히 효과가 좋습니다.
매크로 재생
- 재생
- 메뉴 → 도구 → 매크로 → 재생
- 파일 선택 창에서 매크로 파일을 선택합니다.
- 재생이 실패하는 대표 패턴
- 기록을 시작할 때의 파트/선택 모드/표시 상태가 재생 시점과 다를 때
- 다이얼로그/메시지 박스가 예상과 다르게 뜨거나(또는 안 뜨거나) 포커스가 다른 곳에 잡힐 때
- 그래픽 창 크기/배율 차이로 클릭/선택 좌표가 어긋날 때
- 기록 정지가 안 되는 상황
- 모달 다이얼로그가 떠 있으면 기록 정지가 눌리지 않는 경우가 있습니다.
- 기록 중 화면에 음영 처리(오버레이)가 남아 있으면 종료가 막히는 경우도 있어, 해당 상태를 먼저 정리한 뒤 끊는 편이 안전합니다.
- SpaceBall / SpaceMouse
- 장치 입력도 기록할 수 있지만, 환경이 바뀌면 재생이 불안정해질 수 있습니다.
- 뷰 조작이 “필수”인 경우가 아니라면, 모델링 명령 위주로 기록하는 쪽이 실무에서는 결과가 더 안정적입니다.
매크로 문제 해결 옵션
| 상황 | 해결 방향 |
|---|---|
| 다른 위치/다른 모듈에서 재생 | 기록과 동일 위치가 아니어도 돌려야 한다면, 기록할 때 재설정으로 매크로 기록 또는 Gateway 재설정을 섞어서 컨텍스트 의존도를 낮춥니다. |
| 윈도우 크기/해상도 차이 | 그래픽 창에서 선택을 기록한 매크로라면 창 크기 차이에 민감합니다. NX 실행 옵션(resize 등) 또는 동일한 작업 환경(모니터/배율)을 맞추면 성공률이 올라갑니다. |
| Pre-V16.0 매크로 | V16 이전 매크로는 최신 환경에서 바로 재생되지 않을 수 있습니다. 장기 운영이면 새 버전에서 다시 기록해두는 편이 관리가 편합니다. |
| Windows / 비-Windows 간 호환 | 운영체제가 바뀌면 경로/입력/대화상자 동작이 달라져 재생이 실패할 수 있습니다. 동일 OS에서 운용하는 매크로는 상대적으로 관리가 쉽습니다. |
| print.macro 지정 후 NX 무응답 | 무응답처럼 보이면 취소를 눌러 빠져나온 뒤 재생을 이어가는 방식이 도움이 될 수 있습니다. |
매크로 재생 중 다이얼로그 표시(억제/표시)
- 기본값은 다이얼로그 억제입니다. 재생 속도가 빠르고, 화면이 덜 흔들려서 실무에선 이 쪽이 더 편할 때가 많습니다.
- 재생 중 모든 다이얼로그를 보고 싶다면 사용자 기본값에서
UG_showPlaybackDialogbox값을 설정합니다.
단계 다이얼로그
단계 다이얼로그에서 볼 수 있는 옵션
| 옵션 | 설명 |
|---|---|
| 진행 속도 | 매크로 행 수 기준 또는 각 실행 텀을 조절합니다. |
| 포함 범위 | 사용자가 만든 행만 볼지, 내부 코드까지 포함해 자세히 볼지 선택합니다. |
| 선택 점 표시 | 각 동작에서 선택 좌표/선택 포인트를 표시합니다. |
| 임의 지점 중지/재시작 | 원하는 지점에서 멈추고 다시 이어갈 수 있습니다. |
| 주의 | 해당 다이얼로그가 활성화된 동안 다른 NX 옵션/모듈 조작이 제한됩니다. |
사용 방법

- 메뉴 → 도구 → 매크로 → 단계를 선택
- 파일 선택 창에서 매크로 선택
- 원하는 옵션을 지정
- 재생을 확인하면서 실행 버튼을 반복 선택
매크로 텍스트 파일 구성
NX 매크로 텍스트 파일은 크게 헤더와 본문으로 나뉘며, 헤더는 환경(버전/표시/선택 파라미터 등)을 정의하고, 본문은 다이얼로그 이벤트/입력/선택/메뉴 동작이 기록됩니다.
매크로 텍스트 파일 헤더 구성
표준 헤더는 아래 같은 항목을 담고, 이 순서를 크게 깨지 않는 편이 좋습니다.
- NX 버전
매크로가 작성된 NX 버전 정보 - 매크로 파일 경로
저장 경로와 파일명 - 매크로 버전
매크로 버전 정보 - 매크로 언어 및 코드 집합
언어/코드 집합 - 작성자 및 작성 일시
작성자와 시간 - 파트 이름 표시 스타일
파트명 표시 방식 - NX 선택 매개변수
선택 관련 파라미터 - NX 화면 표시 매개변수
뷰 표시 관련 파라미터 - 헤더 종료 표시
**************************************************************************아래부터 본문(또는 추가 메모)
헤더 자체를 과하게 손대는 건 추천하지 않지만, 매크로 사용 메모를 붙여두는 정도는 실무에서 꽤 도움이 됩니다. 이때는 별표 라인 위쪽에 적어두면 깔끔합니다.
헤더 예제
NX 10.0.1.30
매크로 파일: C:projectsmacro_example.macro
매크로 버전: 2.10
매크로 언어 및 코드 집합: 영어 4
2024년 7월 22일 월요일 작성자: 김철수 14:35
파트 이름 표시 스타일: $PARTNAME
선택 매개변수: 2 3 0.487654 1
표시 매개변수: 0.500000 12.345678 7.123456 -0.123456 0.789012 0.543210 0.987654
<여기에 컴포넌트 추가>
**************************************************************************
들여쓰기 규칙
본문의 들여쓰기는 다이얼로그 중첩을 표현하는 방식으로 기록됩니다. 다이얼로그가 시작되기 전에는 들여쓰기가 의미가 없고, 다이얼로그가 끝나면 다시 원래 레벨로 돌아갑니다.
예제
DIALOG_BEGIN "실린더 생성" ! 새 다이얼로그 시작
BEG_ITEM 1 (1 STRN) = "100" ! 기본 직경
BEG_ITEM 2 (1 STRN) = "200" ! 기본 높이
BEG_ITEM 3 (1 BOOL) = 1 ! 세그먼트 추가 여부
BEG_ITEM 4 (0 STRN) = "0.01" ! 정밀도
DIALOG_END -2, 0 ! 실린더 생성: 확인 버튼을 클릭하면 다이얼로그 종료
스냅샷 기록
매크로 재생이 흔들리는 원인의 상당수는 “버튼 클릭 자체”가 아니라, 그 순간 다이얼로그가 어떤 상태였는지가 바뀌기 때문입니다. 그래서 주요 지점에서는 다이얼로그 전체 상태를 남기는 형태가 안정적입니다.
스냅샷은 주로 BEG_ITEM과 END_ITEM로 시작/종료 값을 기록하고, 필요하면 APP_ITEM, USE_ITEM 같은 라인을 통해 적용/사용자 항목 상태를 남깁니다.
스냅샷 예제
BEG_ITEM 1 (1 STRN) = "5" ! 시작 지점에서의 설정값
END_ITEM 1 (1 STRN) = "10" ! 종료 지점에서의 설정값
APP_ITEM 1 (1 STRN) = "5" ! 적용 버튼 클릭 시의 설정값
USE_ITEM 1 (1 STRN) = "5" ! 사용자 항목의 설정값
이런 식으로 “값의 전후”를 남겨두면, 같은 버튼을 눌러도 NX 내부에서 다른 처리가 되는 상황을 꽤 줄일 수 있습니다.
NX 매크로 키워드 예제
매크로 파일은 다이얼로그 이벤트와 UI 동작을 텍스트로 기록합니다. 아래는 키워드가 어떻게 쓰이는지 감을 잡기 위한 예제입니다. 실제로는 “내가 자주 쓰는 작업”을 짧게 기록해놓고 그 파일을 기준으로 패턴을 맞추는 편이 빠릅니다.
매크로 파일 헤더
헤더는 정보를 담는 영역이라, 본문 로직처럼 자주 수정하기보다는 “관리 메모” 정도만 곁들이는 쪽이 안정적입니다.
예제 헤더
NX 12.0.2.25
매크로 파일: C:Projectsexample_macro.macro
매크로 버전: 2.01
매크로 언어 및 코드 집합: 영어 3
작성자: 김철수, 작성일: 2024년 7월 22일 10:15
파트 이름 표시 스타일: $FILENAME
선택 매개변수: 4 3 0.500000 2
화면표시 매개변수: 2.000000 12.345678 7.123456 -0.800000 -0.700000 0.800000 0.700000
<설명: 이 매크로는 부품 조립을 자동화하는 데 사용됩니다.>
**************************************************************************
매크로 파일 본문
DIALOG_BEGIN "부품 조립"
BEG_ITEM 1 (1 STRN) = "500" ! 부품 길이
BEG_ITEM 2 (1 BOOL) = 1 ! 조립 방향
BEG_ITEM 3 (1 OPTM) = 2 ! 조립 방식
BEG_ITEM 4 (0 STRN) = "0.005" ! 공차
APPLY 1 ! 적용 버튼 클릭
APP_ITEM 1 (1 STRN) = "500" ! 부품 길이
APP_ITEM 2 (1 BOOL) = 1 ! 조립 방향
APP_ITEM 3 (1 OPTM) = 2 ! 조립 방식
APP_ITEM 4 (0 STRN) = "0.005" ! 공차
EVENT VALUE_CHANGED, 1, 0, 2 ! 조립 방향 변경
EVENT ACTIVATE, 1, 2, 1 ! 부품 길이 입력
CURSOR_POS 2, 1.234567, 3.456789, 0.000000 ! 커서 위치 기록
FILE_BOX -2, C:Partsassembly.prt, *.prt, 0 ! 부품 파일 열기
USER_ENTRY_BEGIN
CURSOR_EVENT 0, 0, 51 ! 좌측 클릭
CURSOR_EVENT 1, 1, 52 ! 우측 클릭
CURSOR_POS 1, 2.345678, 4.567890, 0.000000 ! 추가 커서 위치
DIALOG_BEGIN "부품 세부 설정"
DIALOG_END -2, 0 ! 세부 설정 확인
USER_ENTRY_END
MESSAGE_BOX -2, 조립이 완료되었습니다.
MESSAGE_TEXT 결과를 확인해 주세요.
PAUSE 5 ! 5초 동안 일시중지
PENDING 1, 0 ! 다음 단계로 이동
DIALOG_END -1, 0 ! 조립 완료
POPUP 1, 1.234567, 2.345678, 0.000000, "옵션 메뉴" ! 팝업 메뉴 호출
MENU, 1, UG_VIEW_POPUP_ZOOM, UG_GATEWAY_VIEW_POPUP ! 뷰 확대 메뉴 선택
TOOL_BAR UG_INFORMATION_WINDOW_TOGGLE 1 ! 정보 창 토글 활성화
WORK_LAYER "10" ! 작업 레이어 설정
ZOOM 1, 0, 100, 150, 8 ! 확대/축소 슬라이더 조작
CUSTOM_HEADER 30 "Assembly Settings" 1 ! 사용자 정의 다이얼로그 등록
CUSTOM 30 ACTION_UPDATE * SET_PARAMETERS * (1 0) * 0 * 1 ! 사용자 정의 다이얼로그 작업
키워드 설명(실무에서 자주 보는 것만)
APPLY: 다이얼로그에서 적용 버튼이 눌린 이벤트가 기록됩니다.
APPLY 1 ! 적용 버튼 클릭
BEG_ITEM / END_ITEM: 다이얼로그 아이템 값의 “처음/끝”을 기록합니다.
BEG_ITEM 1 (1 STRN) = "500" ! 부품 길이
EVENT: 값 변경, 활성화 등 사용자 상호작용이 남습니다.
EVENT VALUE_CHANGED, 1, 0, 2 ! 조립 방향 변경
CURSOR_POS: 뷰 좌표 기준 커서 위치가 기록됩니다.
CURSOR_POS 2, 1.234567, 3.456789, 0.000000
FILE_BOX: 파일 선택 창에서 입력한 값이 기록됩니다.
FILE_BOX -2, C:Partsassembly.prt, *.prt, 0 ! 부품 파일 열기
USER_ENTRY_BEGIN / USER_ENTRY_END: 사용자 입력(클릭/커서 이동 등) 묶음을 기록합니다.
USER_ENTRY_BEGIN
CURSOR_EVENT 0, 0, 51
USER_ENTRY_END
MESSAGE_BOX / MESSAGE_TEXT: 메시지 박스 표시 및 텍스트가 기록됩니다.
MESSAGE_BOX -2, 조립이 완료되었습니다.
MESSAGE_TEXT 결과를 확인해 주세요.
PAUSE: 재생 중 잠깐 멈춥니다(타이밍 이슈 대응에 종종 사용).
PAUSE 5 ! 5초 동안 일시중지
PENDING: 상위 다이얼로그에서 하위 항목 선택 같은 “대기 상태 전환”이 남습니다.
PENDING 1, 0 ! 다음 단계로 이동
POPUP / MENU / TOOL_BAR: 팝업 메뉴 호출, 메뉴 선택, 툴바 토글 같은 UI 조작 기록입니다.
WORK_LAYER: 작업 레이어 설정입니다.
WORK_LAYER "10" ! 작업 레이어 설정
ZOOM: 줌 슬라이더 조작 기록입니다(뷰포트 의존도가 커서, 장기 운영 매크로에는 과하게 포함하지 않는 편이 편합니다).
ZOOM 1, 0, 100, 150, 8
CUSTOM_HEADER / CUSTOM: 사용자 정의 다이얼로그 및 동작 기록입니다.
CUSTOM_HEADER 30 "Assembly Settings" 1
CUSTOM 30 ACTION_UPDATE * SET_PARAMETERS * (1 0) * 0 * 1
재생 성공률 올리는 실무 요령
1) “클릭 좌표”가 들어가는 매크로는 짧게
그래픽 창에서 픽셀 위치 기반으로 선택이 기록되는 순간부터 매크로는 해상도·배율·창 크기에 민감해집니다.
오래 굴릴 매크로라면, 가능한 한 명령 실행/다이얼로그 값 입력 중심으로 남기고, 좌표 선택이 꼭 필요한 부분은 별도 파일로 나눠두는 편이 유지보수가 편합니다.
2) 시작점 정리를 습관처럼
매크로가 깨지는 가장 흔한 이유는 “이미 다른 다이얼로그가 열려 있음”, “선택 필터가 바뀜”, “모듈이 다름” 같은 사소한 상태 차이입니다. 그래서 재설정으로 매크로 기록이나 Gateway 재설정처럼 시작점을 잡아주는 옵션은, 복잡한 매크로일수록 효과가 큽니다.
3) 다이얼로그 표시를 “검증용”으로만 켜두기
재생이 안 될 때는 다이얼로그를 띄워서 어디서 멈추는지 확인하는 게 빠릅니다. 다만 평소에는 억제 쪽이 속도와 안정성에서 유리한 경우가 많아, UG_showPlaybackDialogbox는 테스트할 때만 켜두는 패턴이 사용성이 좋습니다.
4) 메시지 박스/경고창이 자주 뜨는 작업은 “예외 처리”를 고민
매크로 중간에 경고창이 뜨면 포커스가 바뀌면서 매크로가 끊기기 쉽습니다. 그 작업이 반복적으로 경고를 유발한다면, 원인(속성 충돌/참조 끊김/권한 문제)을 먼저 정리하거나, 경고가 나지 않는 입력 조합으로 기록하는 편이 결국 빠릅니다.
Q. 매크로 파일 확장자는 꼭 .macro인가요?
A. NX 기록 기능으로 생성하면 기본적으로 .macro가 붙습니다. 이름만 바꾸기보다, NX에서 관리하는 형태로 두는 편이 재생/공유에서 문제가 덜합니다.
Q. 재생이 “중간에서 멈춘 것처럼” 보일 때 가장 먼저 볼 것은?
A. 메시지 박스/모달 다이얼로그가 떠 있는지, 그리고 포커스가 입력창에 잡혀 있는지부터 확인하는 게 빠릅니다.
Q. 같은 매크로가 내 PC에선 되는데 다른 PC에선 실패해요.
A. 해상도/디스플레이 배율/창 크기, 그리고 NX 설정(선택 필터, 사용자 기본값)이 다른 경우가 많습니다. 좌표 선택이 포함된 매크로라면 특히 차이가 크게 납니다.
Q. SpaceMouse 입력을 꼭 넣어야 하나요?
A. 꼭 필요한 경우가 아니라면 빼는 편이 안정적입니다. 뷰 조작이 포함되면 환경 차이로 흔들릴 여지가 커집니다.
Q. 다이얼로그가 억제된 상태에서 재생이 잘 됐는지 확신이 안 들어요.
A. 검증할 때만 UG_showPlaybackDialogbox로 표시를 켜고, 정상 동작이 확인되면 다시 억제로 돌리는 패턴이 가장 편합니다.
Q. 매크로를 길게 하나로 만들었더니 유지보수가 힘들어요.
A. 자주 바뀌는 구간(선택/좌표/파일 경로)과 고정 구간(명령/값 입력)을 분리해 파일을 나눠두면 유지가 편해집니다.
Q. “기록 정지”가 눌리지 않는 대표 상황은 무엇인가요?
A. 모달 다이얼로그가 떠 있거나, 특정 오버레이/음영 상태가 남아있는 경우가 많습니다. 해당 상태를 먼저 정리한 뒤 종료하는 편이 안정적입니다.