주 콘텐츠로 건너뛰기
Hints and Tips 생성 편집

의도를 담은 설계: POST/TABLE에 담긴 비전

개요

MIDAS CIVIL NX는 사용하기 편리한 엔지니어링 솔루션을 지향하며, 다양한 데이터를 표 형태로 제공합니다.

“post/table” 명령은 다양한 데이터를 효율적이고 쉽게 생성·추출하기 위한 기능입니다. 다만 많은 테이블을 포함하고 있어 사용자가 모든 내용을 완전히 이해하기 어려울 수 있으므로, 여기에서는 사용 방법과 추가 정보를 안내합니다. 본 내용은 CIVIL 또는 CIVIL NX에는 익숙하지만 API에는 익숙하지 않은 사용자를 대상으로 합니다.  

 

Pre-Process Table

Pre-Process Table은 초기 기획 단계에서 개발 대상에서 제외되었습니다. 대부분 DB 데이터와 거의 동일하기 때문입니다.

예를 들어, 노드 정보는 db/node 명령(API)으로 조회할 수 있고, 제품의 테이블에서도 유사한 형태로 확인할 수 있습니다.

물론 API 데이터 형식과 제품의 테이블 형식은 꽤 다르며, 일정한 변환 작업이 필요합니다. 여기서는 API Response 데이터를 테이블 형식으로 변환하는 Python 예제를 보여드리겠습니다.

 

Python 예제 코드

import pandas as pd

def json_to_dataframe_with_units(data, unit_data):
    """
    Converts JSON data into a Pandas DataFrame and dynamically updates headers with unit information.
    """
    # Extract the main key dynamically (e.g., "NODE")
    main_key = list(data.keys())[0]
    nested_dict = data[main_key]

    # Convert the nested dictionary into a DataFrame
    df = pd.DataFrame.from_dict(nested_dict, orient='index')

    # Set index name dynamically
    df.index.name = main_key

    # Extract unit dictionary dynamically
    unit_main_key = list(unit_data.keys())[0]  # e.g., "UNIT"
    units = unit_data[unit_main_key]["1"]  # Get unit mappings

    # Identify the correct unit for distance-related columns
    dist_unit = units.get("DIST", "").lower()  # Get DIST unit if available

    # Update column names dynamically based on matching keys in unit_data
    df.rename(columns={col: f"{col}({dist_unit})" for col in df.columns}, inplace=True)

    return df

# Example usage
data = {
    "NODE": {
        "1": {"X": 0, "Y": 0, "Z": 0},
        "2": {"X": 1, "Y": 0, "Z": 0},
        "3": {"X": 2, "Y": 0, "Z": 0},
        "4": {"X": 6.25, "Y": 0, "Z": 0},
    }
}

unit_data = {
    "UNIT": {
        "1": {
            "FORCE": "KN",
            "DIST": "M",
            "HEAT": "J",
            "TEMPER": "C"
        }
    }
}

# Convert JSON to DataFrame with dynamic header updates
df_final = json_to_dataframe_with_units(data, unit_data)

# Display updated DataFrame
print(df_final)

# Save as CSV
df_final.to_csv('output.csv')

Python 결과

NODE,X(m),Y(m),Z(m)
1,0.0,0,0
2,1.0,0,0
3,2.0,0,0
4,6.25,0,0

일부 Pre-Process Table은 다음과 같은 경우에 개발되었습니다.

 • DB에 존재하지 않는 데이터인 경우 (예: Mass summary)

 • DB 데이터는 존재하지만 추가 정보를 함께 출력해야 하는 경우 (예: Section, Material)

이러한 기준에 따라 20개의 테이블이 개발되었으며, 아래 링크에서 확인할 수 있습니다.

MIDAS API Online Manual – MIDAS Support

 

Post-Process Table

해석 결과를 출력하는 기능은 API 명령 중 가장 핵심적인 기능이며, 가능한 많은 기능을 제공하는 데 중점을 두었습니다.

이를 위해 현재 아래와 같이 147개의 테이블을 제공하고 있으며, 나머지 테이블도 계속 개발 중입니다.

 • Analysis Result Table (89)

 • Time History Result Table (52)

 • Heat of Hydration Result Table (6)

또한 기본 결과를 쉽게 추출할 수 있으면서도, 표 안에서 고급 기능(예: Select Tendon, CS 등)까지 접근할 수 있도록 사용자 경험을 유지하고자 했습니다.

 

JSON 구조

147개의 테이블이 하나의 Endpoint만 사용하기 때문에, table 명령은 다양한 JSON 구조를 가질 수 있으며 구조를 이해하는 것이 매우 중요합니다. 구조는 테이블에 따라 달라질 수 있으며, 각 테이블별 구조는 별도로 제공하고 있습니다. 구조를 충분히 이해하면 활용 범위를 더욱 확장할 수 있습니다.

따라서 여기부터는 각 “key”의 개념을 하나씩 설명하겠습니다.

JSON 구조로 넘어가기 전에, JSON에 대해 충분히 이해해 주세요.

용어 설명: JSON(JavaScript Object Notation) - MIDAS Support

 

TABLE_NAME

Key: TABLE_NAME
Value Type: String
Required: No
Example:
"TABLE_NAME": "TABLE"

사용자는 임의의 “TABLE_NAME”을 지정하여 Response 상단에 표시되도록 할 수 있습니다. 필수 Key는 아니며, 값을 입력하지 않으면 Response에는 “empty” 메시지가 출력됩니다.

 

TABLE_TYPE

Key: TABLE_TYPE
Value Type: String (Enum)
Required: Yes
Example:
"TABLE_TYPE": "ELEMENTWEIGHT"

“TABLE_TYPE”은 테이블을 지정하기 위한 핵심 Key입니다. 각 테이블에는 매칭되는 문자열 값(Value)이 있으며, 사용자는 Support 웹사이트의 API 매뉴얼에서 확인할 수 있습니다.

 

EXPORT_PATH

Key: EXPORT_PATH
Value Type: String (Directory Path)
Required: No
Example:
"EXPORT_PATH": "C:\\MIDAS\\Result\\Elements.json"

“EXPORT_PATH” Key를 사용하면 Response JSON 데이터를 파일로 저장할 수 있습니다. 디렉터리 경로와 파일 확장자는 JSON 형식을 따라야 합니다.

 

UNIT

Key: UNIT
Value Type: Object
Required: No
Keys within UNIT:
᛫ FORCE, String, Enum: ["N", "KN", "KGF", "TONF", "LBF", "KIPS"]
᛫ DIST, String, Enum: ["M", "CM", "MM", "FT", "IN"]
᛫ HEAT, String, Enum: ["CAL", "KCAL", "J", "KJ", "BTU"]
᛫ TEMP, String, Enum: ["C", "F"]
Example:
"UNIT": {
"FORCE": "KN",
"DIST": "MM",
"HEAT": "J",
"TEMP": "C"
}

단위가 필요한 테이블의 경우, 사용자는 4가지 단위를 선택할 수 있습니다. “UNIT” Key는 “DB/UNIT”과 동일한 구조를 갖습니다. (Reference: Unit System—MIDAS Support) 값을 입력하지 않으면 API는 제품의 단위를 기준으로 Response를 생성합니다.

 

STYLES

Key: STYLES
Value Type: Object
Required: No
Keys within STYLES:
᛫ FORMAT, String, Enum: ["Default", "Fixed", "Scientific", "General"]
᛫ PLACE, Integer, Range 0 to 15
Example:
"STYLES": {
"FORMAT": "Fixed",
"PLACE": 3
}

“STYLES” Key는 제품의 Style Dialog 기능과 유사합니다. 실수(Real number) 타입 데이터에 대해 출력 형식과 소수점 자릿수를 사용자 지정할 수 있습니다(아래 그림 참고). 다만 한 가지 차이점이 있습니다. 제품에서는 각 행(Row)별 설정이 가능하지만, API에서는 테이블 전체에 동일하게 적용됩니다.

 

COMPONENTS

Key: COMPONENTS
Value Type: Array[String], Enum: Depend on the TABLE_TYPE
Required: No
Example:
"COMPONENTS": [
"Elem",
"Load",
"Part",
"Axial"
]

“COMPONENTS”는 Response에서 출력할 구성 요소(컬럼)를 설정하는 Key입니다. 기본 규칙은 다음과 같습니다.

 • “COMPONENTS” Key를 생략하거나 값이 비어 있는 경우([]), 모든 데이터를 출력합니다.

 • “HEAD” Key는 Response JSON Key 중 선택된 컬럼을 출력합니다.

 • “HEAD”의 “Index”는 기본적으로 행 번호를 의미하는 값입니다.

 • 헤더가 2중 배열 이상인 경우, 헤더명은 “/”로 구분하여 표현됩니다.

 • 2중(또는 그 이상) 배열 헤더의 경우 최상위 헤더가 기준이 됩니다. 여러 항목 중 하나만 지정하더라도 해당되는 모든 컬럼이 출력됩니다.

 • 단위계는 헤더에 표시되지 않습니다.

이 Key는 사용 빈도가 낮을 수 있어, Enum 데이터임에도 매뉴얼에는 포함하지 않았습니다. 필요할 때는 최소 입력 데이터로 요청을 보내고, COMPONENTS를 비워 둔 상태로 Response를 받아 필요한 값을 복사해 사용하는 것을 권장합니다.

 

NODE_ELEMS

Key: NODE_ELEMS
Value Type: Object
Required: No
Key within NODE_ELEMS:
᛫ KEYS, Array[Integer]
᛫ TO, String
᛫ STRUCTURE_GROUP_NAME, String
Example:
"NODE_ELEMS": {
"KEYS": [
101, 102, 103, 104, 105
]
}
or
"NODE_ELEMS": {
"TO": "101to105"
}
or
"NODE_ELEMS": {
"STRUCTURE_GROUP_NAME": "Group1"
}

이 Key는 노드 또는 요소를 선택해야 하는 테이블에서 사용됩니다. 전체 테이블 중 절반 이상이 이 Key를 사용하며, 사용자는 제품에서 아래와 같은 방식으로 입력할 수 있습니다.

사용자 경험과 편의성을 유지하기 위해, 3가지 형식을 모두 지원합니다.

 • “KEYS” → 출력할 특정 노드/요소를 정수 배열(Integer array)로 지정합니다.

 • “TO” → 출력할 노드/요소의 범위를 지정합니다.

 • “STRUCTRUE_GROUP_NAME” → 출력할 구조 그룹(Structure group)을 지정합니다.

특정 노드 또는 요소를 지정하지 않으면 Response는 전체 데이터를 출력합니다.

 

LOAD_CASE_NAMES

Key: LOAD_CASE_NAMES
Value Type: Array[String]
Required: No
Example:
"LOAD_CASE_NAMES": [
"DC(ST)",
"LC1(CB)",
"LC2(CB:all)",
"LC2(CB:max)",
"LC2(CB:min)",
"X-dir(RS)",
"MV_All(MV:all)",
"MV_All(MV:max)",
"MV_All(MV:min)",
"Settle(SM:all)",
"Settle(SM:max)",
"Settle(SM:min)",
]

이 Key는 테이블에서 하중 케이스(Load case) 또는 하중 조합(Load combination)을 고려해야 할 때 사용됩니다. 핵심 Key 중 하나로, 전체 테이블의 80% 이상이 이 Key를 사용합니다. 이 Key는 제품에서는 다음과 같이 표시됩니다.

사용자가 케이스를 지정하지 않거나 값이 비어 있으면, 사용 가능한 모든 케이스가 출력됩니다.

사용자는 DB를 통해 케이스 이름을 얻은 뒤, 괄호 안에 케이스에 맞는 추가 문자열을 붙여 최종 Load case name 문자열을 작성해야 합니다.

Load Case

Additional String

Related API Manual

Static Load Cases

(ST)

Static Load Cases - MIDAS Support

Moving Load Cases

(MV:all), (MV:max), (MV:min)

Moving Load Cases - MIDAS Support

Settlement Load Cases

(SM:all), (SM:max), (SM:min)

Settlement Load Cases - MIDAS Support

Response Spectrum Load Cases

(RS)

Response Spectrum Load Cases - MIDAS Support

Construction Stage

(CS)

-

Time History Load Cases

(TH:all), (TH:max), (TH:min)

Time History Load Cases - MIDAS Support

Load Combinations-General

(CB), (CB:all), (CB:max), (CB:min)

Load Combinations - General - MIDAS Support

Load Combinations-Steel

(CBS), (CBS:all), (CBS:max), (CBS:min)

Load Combinations - Steel Design - MIDAS Support

Load Combinations-Concrete

(CBC), (CBC:all), (CBC:max), (CBC:min)

Load Combinations - Concrete Design - MIDAS Support

Load Combinations-SRC

(CBR), (CBR:all), (CBR:max), (CBR:min)

Load Combinations - SRC Design - MIDAS Support

Load Combinations-Composite Steel Girder

(CBSC), (CBSC:all), (CBSC:max), (CBSC:min)

Load Combinations - Composite Steel Girder Design - MIDAS Support

Load Combinations-Sesimic

(CBSM), (CBSM:all), (CBSM:max), (CBSM:min)

Load Combinations - Seismic Design - MIDAS Support

어려운 부분은 Load Combination Case를 다루는 것입니다. 하중 조합에 Envelope case가 포함되지 않는 경우에는 (CB)로만 출력할 수 있습니다. 반면 Envelope case(예: 하중 케이스 또는 조합이 Envelope로 표현되는 경우)가 포함되면, (CB:all), (CB:max), (CB:min)으로 출력해야 합니다.

이러한 상황을 구분하기 위해 Load Combinations DB에 “bCB”라는 추가 Key가 포함되어 있습니다. 하중 조합을 조회할 때:

 • “bCB”: false → Envelope가 없는 경우 (CB)

 • “bCB”: true → Envelope 기반 조합인 경우 (CB:all/max/min)

제품은 Construction Stage에 대해 별도로 지정된 Load case name을 사용합니다. 또한 Construction Stage Analysis Control Data에서 지정된 Dead Load for C.S.를 활용할 수 있습니다 (Construction Stage Analysis Control Data - MIDAS Support).

이를 확인하는 가장 신뢰할 수 있는 방법은 제품의 Record Activation Dialog입니다. 제품에 익숙한 사용자라면 이 기능을 효율적으로 활용할 수 있을 것입니다.

 

TH_LOAD_CASE_NAMES

Key: TH_LOAD_CASE_NAMES
Value Type: Array[String]
Required: No
Example:
"TH_LOAD_CASE_NAMES": [
"DL(TH:all)",
"DL(TH:max)",
"DL(TH:min)",
]

이 기능은 Time History Analysis에서 Inelastic Hinges 및 Fiber Sections의 결과를 조회할 때 사용됩니다.

이 Key는 LOAD_CASE_NAMES Key와 유사한 특성을 갖습니다.

 

MODES

Key: MODES
Value Type: Array[String], Enum: ["Mode 1", "Mode 2", ….., "Mode N"]
Required: No
Example:
"MODES": [
"Mode 1",
"Mode 2"
]

이 Key는 진동 관련 테이블, 버킷팅(Mode shape) 결과, 또는 RS에 대한 절점 결과를 조회할 때 사용됩니다.

특정 모드를 지정하지 않거나 빈 배열로 요청하면, 사용 가능한 모든 모드의 데이터가 출력됩니다.

 

PARTS

Key: PARTS
Value Type: Array[String], Enum: ["Part I", "Part 1/4", "Part 2/4", "Part 3/4", "Part J"]
Required: No
Example:
"PARTS": [
"Part I",
"Part 1/4",
"Part 2/4",
"Part 3/4",
"Part J",
]

이 기능은 Beam 요소 결과와 관련된 테이블 데이터를 요청할 때 사용됩니다.

지정하지 않거나 빈 배열로 요청하면, 사용 가능한 모든 Part 데이터가 출력됩니다.

 

SECTION_POSITION

Key: SECTION_POSITION
Value Type: Array[String], Enum: ["Pos-1", "Pos-2", …. , "Pos-16", "Max", "Max", "All"]
Required: No
Example:
"SECTION_POSITION": [
"Pos-1",
"Pos-2",
"Max"
]

이 기능은 Beam 요소의 응력 결과와 관련된 테이블 데이터를 요청합니다.

지정하지 않거나 빈 배열로 요청하면, 사용 가능한 모든 Section Position 데이터가 출력됩니다.

테이블 유형에 따라 Section position을 나타내는 명칭이 다를 수 있으므로 주의해 주세요. (매뉴얼 또는 제품에서 확인)

 

AVERAGE_NODAL_RESULT

Key: AVERAGE_NODAL_RESULT
Value Type: Boolean
Required: No
Example:
"AVERAGE_NODAL_RESULT": true

이 기능은 Plate, Plane Stress, Plane Strain, Axisymmetric, Solid 요소 등 2차원 이상 요소의 결과 테이블을 조회할 때 사용됩니다. 기본값은 False입니다.

 

NODE_FLAG

Key: NODE_FLAG
Value Type: Object
Required: No
Keys within NODE_FLAG:
᛫ CENTER, Boolean
᛫ NODES, Boolean
Example:
"NODE_FLAG": {
"CENTER": false,
"NODES": true
}

이 기능은 Heat of Hydration 및 Plate, Plane Stress, Plane Strain, Axisymmetric, Solid 요소 등 2차원 이상 요소에 대한 결과 테이블을 조회할 때 사용됩니다. 기본값은 False입니다.

 

OPT_CS

Key: OPT_CS
Value Type: Boolean
Required: No
Example:
"OPT_CS": true

이 Key는 Construction Stage 결과 테이블을 조회할 때 사용됩니다.

기능을 이해하기 위해 제품 동작을 기준으로 살펴보겠습니다.

  1. 해석 후 Model View는 자동으로 “POST CS” 상태로 설정됩니다.

  2. 이 상태에서는 Post-construction stage의 결과를 확인할 수 있습니다.

  3. Construction stage 결과는 Load Combinations를 통해서도 확인할 수 있지만, 이는 마지막 단계의 최종 결과만을 의미합니다.

특정 Construction stage의 결과 또는 POST CS에서 활성화되지 않은 요소의 결과를 확인하려면, 다음과 같은 방식이 필요합니다.

  1. Model View를 임의의 construction stage로 설정합니다.

  2. Model View에서 어떤 construction stage를 선택하더라도, 원하는 stage의 결과를 얻을 수 있습니다.

따라서 POST CS와 임의의 construction stage를 전환하면서 모든 결과에 접근할 수 있습니다.

Key 기능 요약:

  1. 화면에 보이는 Model View와 무관하게, 내부 상태를 construction 또는 post-construction stage로 설정합니다.

  2. False일 때: 제품 내부 상태는 “POST CS”로 진입합니다.

  3. True일 때: 제품 내부 상태는 첫 번째 construction stage 상태로 전환됩니다.

  4. 이 전환은 내부 동작이며, 제품 화면의 외형에는 영향을 주지 않습니다.

사용 시 참고:

 • 기본값은 false입니다.

 • construction stage 결과를 조회하려면, 이 Key를 true로 명시해야 합니다.

이 방식은 각 construction stage에서의 구조 거동을 분석할 수 있게 해주며, 안전하고 효율적인 시공 계획 수립에 매우 중요합니다.

 

STAGE_STEP

Key: STAGE_STEP
Value Type: Array[String]
Required: No
Example:
"STAGE_STEP": [
"CS1:001(first)",
"CS1:002(last)"
]

이 기능은 OPT_CS가 true일 때 활성화되며, 접근할 construction stage name을 입력합니다. 지정하지 않거나 빈 배열로 요청하면, 사용 가능한 모든 Construction Stages 데이터가 출력됩니다.

construction stage의 지정 이름은 Construction Stage 설정에 따라 자동으로 부여됩니다.

Define Construction Stage - MIDAS Support

이 규칙을 살펴보겠습니다. (CIVIL 사용자라면 익숙할 수 있습니다.)

이름을 구성하는 데이터는 3가지입니다.

᛫ NAME
᛫ bSV_STEP
᛫ ADD_STEP

여러 케이스를 고려하여 여러 데이터셋을 생성할 때, 이 명명 규칙을 이해하면 도움이 됩니다.

“NAME”은 필수이며 고정값으로 두고, bSV_STEP과 ADD_STEP을 변경합니다.

  1. NAME만 있는 경우

  1. NAME과 vSV_STEP이 있는 경우

  1. NAME과 ADD_STEP이 있는 경우

  1. 모든 데이터가 있는 경우

정리하면, “NAME”과 “:”는 필수 구성 요소이며, 그 뒤에 숫자와 construction stage 문자열이 이어집니다. “(last)”는 항상 활성화됩니다. 숫자 앞에서 전체 개수는 ADD_STEP의 총 개수에 1을 더한 값으로 결정됩니다. duration day가 0이면 “001(last)”가 생성됩니다. ADD_STEP이 존재하면 ADD_STEP의 단계는 (user i)로 설정되고, 번호는 1+i로 지정됩니다.

 

DISP_OPT

Key: DISP_OPT
Value Type: String, Enum: ["Accumulative", "Current", "Real"]
Required: No
Example:
"DISP_OPT": "Real"

이 Key는 construction stage에서의 절점 변위 결과를 확인할 때 사용됩니다. 이 Key를 사용하는 테이블은 2개뿐입니다.

Displacements - Analysis Result Table - MIDAS Support

 

ITEM_TO_DISPLAY

Key: ITEM_TO_DISPLAY
Value Type: Array[String], Enum: depends on the TABLE_TYPE
Required: No
Example:
"ITEM_TO_DISPLAY": [
"Axial",
"Shear-y",
"Shear-z",
]

이 Key는 최대값(Max Value) 기반으로 View를 생성할 수 있는 테이블에서 사용됩니다. 접근 가능한 항목은 테이블 유형에 따라 다르므로, 사용 가능한 Key는 매뉴얼 또는 제품에서 확인해 주세요.

 

ADDITIONAL

Key: ADDITIONAL
Value Type: Object
Required: Yes
Keys within ADDITIONAL:
᛫ SET_TENDON_PARAMS, Object
᛫ TENDON_GROUP, String
᛫ STAGE, String
᛫ SET_STAGE, Object
᛫ STAGE, String
Example:
"ADDITIONAL": {
"SET_TENDON_PARAMS": {
"TENDON_GROUP": "TD01",
"STAGE": "CS16"
}
}
or
"ADDITIONAL": {
"SET_STAGE": {
"STAGE": "CS16"
}
}

이 Key는 텐던 관련 테이블(Arrangement, Loss Force/Stress, Element Properties at Each Stage)의 데이터 조회 설정을 제어합니다. 사용자가 결과에 접근하려면 요청에 반드시 이 Key를 포함해야 합니다.

 

PART

Key: PART
Value Type: Array[String], Enum: ["I", "J"]
Required: No
Example:
"PART": [
"I", "J"
]

이 Key는 Beam Section Properties at the Last Stage 테이블에 접근할 때만 사용됩니다. (PARTS Key와는 다른 개념이니 주의해 주세요.)

components를 지정하지 않거나 빈 배열로 요청하면, 사용 가능한 모든 part가 출력됩니다.

Beam Section Properties at Last Stage - Analysis Result Table - MIDAS Support

 

FIBER_CELL_MINMAX

Key: FIBER_CELL_MINMAX
Value Type: Boolean
Required: No
Example:
"FIBER_CELL_MINMAX": true

이 Key는 일본어 버전에서 Fiber Section의 Time History 결과에 접근할 때만 사용됩니다.

Fiber Section Maximum Strain of The Cell - TH Result Table - MIDAS Support

 

SECT_POSITION

Key: SECT_POSITION
Value Type: String
Required: No
Example:
"SECT_POSITION": “1to2”

이 Key는 일본어 버전에서 Fiber Section의 Time History 결과에 접근할 때만 사용됩니다.

Fiber Section Maximum Strain of The Cell - TH Result Table - MIDAS Support

Fiber Section Event Step - TH Result Table - MIDAS Support

Fiber Section Average Compression Strain - TH Result Table - MIDAS Support

 

OUTPUT_STEP

Key: OUTPUT_STEP
Value Type: String
Required: No
Example:
"OUTPUT_STEP": “1,3”

이 Key는 일본어 버전에서 Fiber Section의 Time History 결과에 접근할 때만 사용됩니다.

Fiber Section Average Compression Strain - TH Result Table - MIDAS Support

 

결론

위에서 살펴본 것처럼 POST/TABLE 기능은 제품의 사용자 경험을 최대한 반영하도록 설계되었습니다.

물론 사용 가능한 출력 케이스 목록을 가져오는 기능 등, 추가 편의 기능이 제공된다면 시스템 접근성이 더욱 향상될 것으로 기대됩니다. 이러한 편의 기능은 항상 개발 계획에 포함되어 있으며, 가능한 한 빠르게 제공할 수 있도록 노력하겠습니다.

0
컨텐츠가 도움이 되셨나요?