Translations:Python scripting tutorial/10/ja

このコマンドを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

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