Translations:Python scripting tutorial/9/ja

FreeCADの調査
さてまずは新しい空のドキュメントを作成しましょう：

doc = FreeCAD.newDocument

このコマンドをPythonコンソールに入力すると"FreeCAD."と入力した直後に行の残りをすばやく自動補完できるようにウィンドウがポップアップします. さらには自動補完リストの各エントリーにはそれが何を行うものかの説明のツールチップさえ備わっているのです. これを使えば利用可能な関数を簡単に調べることができます. "newDocument"を選択する前に他の利用可能なオプションも見ておいてください.



さて新しいドキュメントが作成されました. これはツールバーの"新しいドキュメント"ボタンを押した場合と同じです. 実際はFreeCADのボタンのほとんどは一、二行のPythonコードを実行しているだけに過ぎません. Edit -> Preferences -> General -> Macroにある"show script commands in python console"オプションを設定するとよくわかります. こうするとボタンを押した時に実行されるPythonコードが全てコンソールに表示されます. Pythonで操作を再現する方法を学ぶのにとても便利です.

さあ、ドキュメントに戻りましょう. ドキュメントを使って何ができるのかを確認してみましょう.

doc.

利用可能なオプションを調べてください. 通常、大文字から始まる名前は値が保持されている属性で、小文字から始まる名前は"処理を行うための"関数（メソッドとも呼ばれます）です. アンダースコアで始まる名前は通常はモジュールの内部動作のためのもので、気にする必要はありません. それではドキュメントに新しいオブジェクトを追加するためのメソッドの一つを使って見ましょう.

box = doc.addObject("Part::Box","myBox")

何も起きません. なぜでしょう？これはFreeCADが大きな展望に立って作られているからです. いつの日かそれぞれ独立した数百もの複雑なオブジェクトをFreeCADで操作できる時が来るでしょう. どこかを少し変更するだけで大きな影響が現れ、ドキュメント全体を再計算しなければならなくなるかもしれません. それには長い時間がかかることでしょう・・・こういった事情からほとんどのコマンドではシーンが自動的に更新されることはありません. 手動で更新を行う必要があるのです：

doc.recompute

見えましたか？作成したボックスが表示されました！FreeCADのオブジェクト追加ボタンの多くは実のところ2つの処理を行います. オブジェクトの追加と再計算です. もし上で説明した"show script commands in python console"オプションを有効にしていれば今度はGUIのボタンで球を追加してみてください. 二行のPythonコードが順番に実行されるのが見て取れるでしょう.

"Part::Box"は何かですって？どうすれば他の種類のオブジェクトを追加できるかですって？これを使うとわかります：

doc.supportedTypes

さて、作成したボックスの中身を調べてみましょう：

box.

すぐにとても興味をそそられるものがいくつか見つかるでしょう. 例えばこれです：

box.Height

これを使うとボックスの現在の高さを表示できます. 変更してみましょう：

box.Height = 5

マウスでボックスを選択するとプロパティパネルの"Data"タブに"Height"プロパティが表示されているのがわかるでしょう. ここ（と後で説明する"View"タブ）に表示されるFreeCADオブジェクトのプロパティは全てPythonによって直接アクセスすることができます. アクセスは先ほど"Height"プロパティでやったように名前で行います. ボックスの別の寸法も変更してみてください.

ベクトルと配置
ベクトルは3Dアプリケーションにおいて非常に基礎的な概念です. ベクトルとは3つの数字（x、y、z）のリストで、3D空間ないでの点や位置を表します. ベクトルを使うと加算、減算、投影やその他にも色々なことを行うことができます. FreeCADでは次のようにしてベクトルを使用します：

myvec = FreeCAD.Vector(2,0,0) myvec myvec.x myvec.y othervec = FreeCAD.Vector(0,3,0) sumvec = myvec.add(othervec)

FreeCADオブジェクトに共通する機能の一つが配置です. 各オブジェクトはPlacement属性を持ち、そこにはオブジェクトの位置（Base）と方向（Rotation）が保持されています. 操作は簡単です. 一例として私たちのオブジェクトを動かしてみましょう.

box.Placement. box.Placement.Base box.Placement.Base = sumvec otherpla = FreeCAD.Placement box.Placement = otherpla

さて、さらに進む前にいくつかの重要な概念を理解しておく必要があります.

AppとGui
FreeCADは最初、ユーザーインターフェイス無しのコマンドラインアプリケーションとして動作するように作成されていました. その結果、ほとんど全ての物が"幾何"コンポーネントと"表示"コンポーネントに分割されています. コマンドラインモードで動作させている際には幾何部分は存在しますが表示部分は無効化されるています. こうした理由からFreeCADのほとんどのオブジェクトは二つの部分、つまりObjectとViewObjectから構成されています.

このコンセプトの説明のために私たちの立方体を見てください. 寸法や位置など立方体の幾何プロパティはObjectの中に保持されています. 一方、色や線の太さなどの表示プロパティはViewObjecの中に保持されています. そしてそれがプロパティウィンドウの"Data"タブと"View"タブに対応しているのです. オブジェクトのViewObjecには次のようにしてアクセスすることができます：

vo = box.ViewObject

これで"View"タブのプロパティを変更することもできるようになりました：

vo.Transparency = 80 vo.hide vo.show

FreeCADが起動するとすぐにPythonコンソールは2つの基本モジュールをロードします. FreeCADとFreeCADGuiです（これらにも短縮名のAppとGuiによってアクセスることが可能です）. この二つにはドキュメントとそのオブジェクトを操作するための一般的な機能が保持されています. このコンセプトの説明のためにFreeCADとFreeCADGuiの両方にActiveDocument属性があることを確認してください. これが現在、開かれているドキュメントです. FreeCAD.ActiveDocumentとFreeCADGui.ActiveDocumentは同じオブジェクトではありません. FreeCADドキュメントを￥の二つのコンポーネントであり、異なる属性とメソッドが保持されています. 例えばFreeCADGui.ActiveDocument にはActiveViewがありますが、これは現在開かれている3Dビューです.