形状測定変数は、形状の長さや角度、面積などを取得する機能です。
測定結果は形状の確認の他、最適化時の制約条件に使用できます。
測定のタイプによって指定が必要なパラメータ、測定可能なエンティティの種類が異なります。
このスクリプトでは、指定した形状測定変数について、測定タイプと設定パラメータを取得し表示します。
前提条件
- スタディが1つ以上作成されていること
このスクリプト例では、プロジェクトツリー上でアクティブなスタディに対して実行している - 形状測定変数が作成済みであり、その名前が既知であること
スクリプトにおける設定内容
- 指定した名前の形状測定変数を取得
見つからない場合はメッセージを表示し終了 - 名前と測定のタイプを取得し表示
- 該当するタイプの場合に中心頂点ID, 指定点の座標を表示
- 測定対象のエンティティの種類とIDを表示
# Copyright (c) 2026 JSOL CORPORATION
#
# 本スクリプトはMITライセンスのもとで公開しています。
# ライセンス全文は以下を参照してください。
# https://www.jmag-international.com/jp/scriptlibrary/jmag_script_library_mit/
import tkinter as tk
from tkinter import messagebox
def getMeasurementVariableSetting(designTable, measurementVariableName):
"""指定した名前の形状測定変数のパラメーターを表示する"""
numMv = designTable.NumMeasurementVariables()
flagValid = False
for IdxMv in range(numMv):
measurementVariable = designTable.GetMeasurementVariable(IdxMv)
if measurementVariable.GetName() == measurementVariableName:
flagValid = True
break
if not flagValid:
messagebox.showerror("Error", f"The measurement variable '{measurementVariableName}' does not exist.")
return
# 名前を指定して取得することも可能
# measurementVariable = designTable.GetMeasurementVariable(measurementVariableName)
# 指定点を持つタイプ
# EntityAndPointShortest : エンティティと指定点との最短距離
# EntityAndPointPerpendicular : エンティティと指定点との垂直距離
# TwoPointsAndCenterAngle : 2点と指定中心点の確度
HAS_SPECIFIED_POINT_TYPES = ["EntityAndPointShortest", "EntityAndPointPerpendicular", "TwoPointsAndCenterAngle"]
# 中心点を持つタイプ
# ThreePointAngle : 3点の角度
HAS_CENTERD_POINT_TYPES = ["ThreePointAngle"]
measurementVariableNameRetrieved = measurementVariable.GetName()
measurementVariableType = measurementVariable.GetType()
print(f"Name: {measurementVariableNameRetrieved}")
print(f"Type: {measurementVariableType}")
if measurementVariableType in HAS_SPECIFIED_POINT_TYPES:
point = measurementVariable.GetPoint()
print(f"\tX: {point.GetX()}")
print(f"\tY: {point.GetY()}")
print(f"\tZ: {point.GetZ()}")
elif measurementVariableType in HAS_CENTERD_POINT_TYPES:
selectedCenter = measurementVariable.GetCenter()
if selectedCenter.NumVertices() == 1:
print(f"Center point vertex ID: {selectedCenter.VertexID(0)}")
else:
print(f"Center point vertex: None")
if measurementVariable.NumParts() <= 0:
print("Selected entities: None")
else:
print("Selected entities ID:")
selection = measurementVariable.GetSelection()
NumVtc = selection.NumVertices()
NumEdg = selection.NumEdges()
NumFc = selection.NumFaces()
NumPrt = selection.NumParts()
for IdxVtc in range(NumVtc):
Id = selection.VertexID(IdxVtc)
print(f"\tVertex: {Id}")
for IdxEdg in range(NumEdg):
Id = selection.EdgeID(IdxEdg)
print(f"\tEdge: {Id}")
for IdxFc in range(NumFc):
Id = selection.FaceID(IdxFc)
print(f"\tFace: {Id}")
for IdxPrt in range(NumPrt):
Id = selection.PartID(IdxPrt)
print(f"\tPart: {Id}")
print("")
mvName = u"PointArc"
app = designer.GetApplication()
study = app.GetCurrentStudy()
dt = study.GetDesignTable()
getMeasurementVariableSetting(dt, mvName)


