メインコンテンツまでスキップ

Python スクリプトの制約

Python スクリプト方式のエクステンション、およびスクリプトエディタで Python を使用する際の制約です。

外部モジュールの動作保証

Python の標準モジュール、および外部モジュール(pip 等でインストールしたパッケージ)の動作は保証対象外です。

利用できない名前空間

以下の名前空間に属する型、およびそれらの型を引数とする API は Python では利用できません。

  • NextDesign.Core.EditingCapabilities
  • NextDesign.Desktop.CustomUI
  • NextDesign.Desktop.DocumentGenerator
  • NextDesign.Extension

利用できない非同期メソッド

非同期を定義できる Python のバージョンに互換していないため、以下の非同期メソッドは利用できません。

  • IAsyncValidateContext.ValidateAsync()

注意が必要なオーバーロードメソッド

引数の数と型の指定する順序が同じで、かつ引数の IEnumerable 型の列挙子の型が異なるオーバーロードメソッドは、列挙子の型を誤認するため、そのままでは利用できません。

対象メソッド:

  • IModel.IsIn(IEnumerable<string> classNames, bool fuzzy = true)
  • IModel.AsIn(IEnumerable<string> classNames, bool fuzzy = true)
  • IWorkspace.LoadModelUnits(IProject project, IEnumerable<string> unitFilePaths)

回避策:

引数名を明示的に指定し、デフォルト引数も明示的に指定してください。

# NG: 列挙子の型を誤認する
result = model.IsIn(["クラス名A", "クラス名B"], True)

# OK: 引数名を明示的に指定する
result = model.IsIn(classNames=["クラス名A", "クラス名B"], fuzzy=True)