PythonベースのAPI

アルテアがMotionSolve用のPythonインターフェースを提供している5つの主な理由は次のとおりです:
  • MotionSolveの習得と使用が容易
  • 設計変数という形で記述されたモデルを構築可能。一部またはすべての設計変数を再定義するだけで、新しいモデルバリエーションを生成できます。このような記述は、設計を検証して最適化するのに適しています。
  • MotionSolveを希望通りにカスタマイズ可能
  • 設計感度解析と設計最適化を実行
  • MotionSolveの使用を楽しむことが可能

Pythonを使用する理由

  • Pythonは簡単に習得して使用できます。Pythonのシンタックスは非常にシンプルです。Pythonは英語と非常によく似ています。Pythonは、シンプルさと一貫性を兼ね備えているために、プログラミング言語として幅広く普及しています。
  • Pythonは数値計算に適しているため、科学界で多用されています。Pythonが登場してから20年以上経過しているため、誰でも使用できる多くのユーティリティとライブラリが提供されています。これらのうち代表的なものは、https://pypi.python.orgから入手できます。
  • Pythonは無料で利用できます。Pythonについて学習するための多くのWebサイトや参考資料が一般公開されています。
  • Pythonは堅牢であり、比較的エラーが少ないことが実証されています。Pythonは、複雑な問題の解析にも対応できます。
  • Pythonは柔軟性を備えています。Pythonは、迅速な開発とプロトタイプ作成に非常に適しています。

よりシンプルかつ強力なMotionSolve

MotionSolveインターフェースは、属性とメソッドを備えた一連のクラスとして表示されます。各属性は1つの“プロパティ”に関連付けられています。プロパティは、属性の初期化と検証を可能にするタイプ定義です。

XMLの手法では、XMLファイル内のMotionSolveモデルの“ステートメント”または“コマンド”を実行します。この手法における対応する操作は、オブジェクトをインスタンス化して、変更し、これらにメソッドを適用することです。オブジェクトのクラスには、事前定義型や組み込み型のものもありますが、その他はユーザーが定義できます。

この手法では、MotionSolveモデルはコンパクトであり、人間が読むことができます。標準のPythonシンタックスがMotionSolveのオブジェクトと拡張機能に使用されています。新しいシンタックスや言語を学習する必要はありません。Pythonのシンタックスは非常にシンプルで、英語と似ています。

MotionSolve Pythonインターフェースでは、MotionSolveのステートメントとコマンド用に同じ言語が提供されます。実際には、これらの間の区別はなくなります。一部の操作はソルバーの実行前に実行されて、他の操作はソルバーの実行中に実行されるというだけです。MotionSolveでは、実行時にモデル属性のサブセットのみを変更できます。このインターフェースはこの制限を認識しているため、許可されている操作のみを実行可能にします。

Pythonインターフェースはモデルの幅広いチェックも実行し、モデルが適切であることを確認してから、解析の実行を許可します。不適切なモデルや不正なモデルには可能な限り早くフラグを立て、ユーザーがエラーの根本原因を知って、それらのエラーを簡単に修正できるようにします。

オブジェクトIDを利用してエンティティを相互参照するXML形式とは異なり、Pythonインターフェースではオブジェクトを直接的に相互参照できます。この方が自然です。これまでのようにIDを管理する必要はなくなります。IDは必要に応じて内部で生成されます。IDは現在でもサポートされているため、希望に応じてIDを引き続き使用することもできます。

最後に、MotionSolveから発行されるメッセージが改善されて理解しやすくなり、これらのメッセージはユーザーが作成したオブジェクトと常に関連付けられています。このことが特に重要になるのは、より高度なオブジェクトや複合オブジェクトを作成して使用する場合です。このようなオブジェクトをインスタンス化すると、レベルの低いオブジェクトが多数作成されます。このため、メッセージを適切に処理することは非常に重要になります。

ここでは、MotionSolve-Pythonインターフェースを紹介するためのいくつかの簡単な例を示します。このドキュメントの例では:
  • “>>>”はPythonで使用される接頭辞です。
  • “>>>”の後ろの太字テキストはユーザーが入力します。
  • ソフトウェア側の応答はハイライト表示されたテキストとして示されます。

例:Pythonを起動して、MotionSolve Pythonインターフェースのライブラリをインポートする

C:\Users\rajivr\Desktop\lugre> python 
Python 2.7 (r27:82500, Apr 5 2012, 14:38:31) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from msolve import *
>>> import math
>>>

例:モデルを構築する際に、モデリング要素を作成する



図 1. モデルの単位の定義

例:2点の中間に位置するマーカーを定義する(このマーカーのz軸は2つ目の点を指している)

A = Point (20,30,44) # 20, 30, 44 
B = Point (40,200,0) # 40, 200, 0
qploc = (A+B)/2
M = Marker (body=p3, qp=qploc, zp=B, label="Coupler-link cm")

例:属性値にアクセスする

ドット演算子(.)を使用してクラス属性値を“取得”(アクセス)します。これらの値は、他のPython式で使用できます。以下に例を示します。
>>> kmmsN.mass 
'KILOGRAM'
>>> kmmsN.force
'NEWTON'
>>> A.x
20.0
>>> B.z
0.0
>>> M.body
p3
>>> M.qp
Point (30.0, 115.0, 22.0)
>>> M.zp.x
40.0
>>> M.label
'Coupler-link cm'

例:属性値を変更する

>>> kmmsN.mass 
'KILOGRAM'
>>> kmmsN.mass = "MEGAGRAM"
>>> kmmsN.mass
'MEGAGRAM'