FreeCAD-Doc/localwiki/Manual-jp.html
2018-07-19 18:47:02 -05:00

6379 lines
605 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<html><head><title>Manual/jp</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link type='text/css' href='wiki.css' rel='stylesheet'></head><body><h1>Manual/jp</h1></div>
<div id="mw-content-text" lang="en" dir="ltr" class="mw-content-ltr"><div class="mw-parser-output"><p>これはFreeCADのマニュアルです。<a href="https://www.freecadweb.org/wiki/index.php?title=Main_Page/jp" title="Main Page/jp">FreeCADドキュメンテーションWiki</a>の要点が記載されています。このマニュアルは基本的には一つの大きなドキュメントとして印刷するために作成されています。オンラインで読む場合にはブラウジングしやすい<a href="https://www.freecadweb.org/wiki/index.php?title=Online_Help_Toc/jp" title="Online Help Toc/jp">オンラインヘルプ</a>版を直接使った方がいいかもしれません。
</p>
<div class="floatright"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Crystal_Clear_app_tutorials.png" class="image" title="150"><img alt="150" src="Crystal_Clear_app_tutorials.png" width="128" height="128" /></a></div>
<h2><span class="mw-headline" id="FreeCAD.E3.82.AA.E3.83.B3.E3.83.A9.E3.82.A4.E3.83.B3.E3.83.98.E3.83.AB.E3.83.97.E3.81.B8.E3.82.88.E3.81.86.E3.81.93.E3.81.9D">FreeCADオンラインヘルプへようこそ</span></h2>
<p>このドキュメントはオンラインで読むことができる公式FreeCADウィキドキュメント <a rel="nofollow" class="external free" href="https://www.freecadweb.org/wiki/index.php?title=Main_Page/jp">http://apps.sourceforge.net/mediawiki/free-cad/index.php?title=Main_Page/jp</a> の内容から自動で作成されたものです。ウィキは活発にメンテナンスされていますし、開発者とユーザーによって作られているFreeCADコミュニティーによって絶え間なく加筆されているのでこのドキュメントよりもオンライン版の方がより多く、より新しい情報が記載されている可能性があります。またオンライン版ではこのドキュメントの進行中の多言語翻訳を読むこともできます。とは言っても私たちはここで必要な情報全てが見つけられるようにしたいと考えています。このドキュメントであなたの疑問に対する回答を見つけることができなかった場合は<a rel="nofollow" class="external text" href="http://forum.freecadweb.org/index.php">FreeCADフォーラム</a>を見てください。答えがあるかもしれませんし、あるいは誰かが手助けしてくれるかもしれません。
</p>
<h3><span class="mw-headline" id=".E4.BD.BF.E7.94.A8.E6.96.B9.E6.B3.95">使用方法</span></h3>
<p>このドキュメントはイントロダクション、使用方法、スクリプト処理、開発という四つのセクションに分けられています。後半の三つはFreeCADのユーザーの三つの大きな分類に対応しています。たんにプログラムを使いたいだけのエンドユーザー、FreeCADのスクリプト処理機能に興味があってFreeCADの機能のカスタマイズを行いたいと思っているパワーユーザー、そして自分のアプリケーションの開発基盤としてFreeCADを考えている開発者です。もしあなたが今まで全くFreeCADに触れたことがないのであれば深く考えずにイントロダクションから読み始めることをお勧めします。
</p>
<h3><span class="mw-headline" id=".E6.94.AF.E6.8F.B4">支援</span></h3>
<p>あなたはプログラマーの書いたひどいヘルプを読んだ経験があるかもしれません。彼らにとってはプログラムの使い方は完璧に明らかです。何しろ作ったのは自分なのですから。つまり経験を積んだユーザーがドキュメントの作成や修正を手伝ってくれることが必要不可欠なのです。そう、あなたのことですやり方がわかりませんかまずUserセクションに記載された <a rel="nofollow" class="external free" href="http://apps.sourceforge.net/mediawiki/free-cad/index.php">http://apps.sourceforge.net/mediawiki/free-cad/index.php</a> にあるウィキに行ってください。ログインには<a rel="nofollow" class="external text" href="http://sourceforge.net/">Sourceforgeのアカウント</a>が必要です。ログインしたらフォーラムかIRCチャンネルで書き込み権限をくれるように依頼してくださいスパム防止のためにウィキには書き込み保護がかかっています。書き込み権限を手に入れたら編集ができるようになりますまた<a href="https://www.freecadweb.org/wiki/index.php?title=Help_FreeCAD/jp" title="Help FreeCAD/jp">Help_FreeCAD</a>ページも見てください。さらに多くのFreeCADを支援するための方法が記載されています。
</p>
<p><br />
</p>
<h1><span class="mw-headline" id=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB">はじめに</span></h1>
<div class="thumb tleft"><div class="thumbinner" style="width:202px;"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Freecad09.jpg" class="image"><img alt="" src="200px-Freecad09.jpg" width="200" height="120" class="thumbimage" srcset="/wiki/images/thumb/8/81/Freecad09.jpg/300px-Freecad09.jpg 1.5x, /wiki/images/thumb/8/81/Freecad09.jpg/400px-Freecad09.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Freecad09.jpg" class="internal" title="Enlarge"></a></div>FreeCADのインターフェース</div></div></div>
<p><b>FreeCAD</b> は汎用の3D<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/CAD"><b>CAD</b> </a>モデラーです。完全な<a rel="nofollow" class="external text" href="http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9">オープンソース</a>GPLLGPLライセンスで開発されています。FreeCADは<a rel="nofollow" class="external text" href="http://ja.wikipedia.org/wiki/%E6%A9%9F%E6%A2%B0%E5%B7%A5%E5%AD%A6">機械工学</a><a rel="nofollow" class="external text" href="http://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%83%80%E3%82%AF%E3%83%88%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3">製品設計</a>向けですが、それだけではなく建築やその他の専門工学などの幅広い用途にも適しています。
</p><p>FreeCADは<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Catia">CATIA</a><a rel="nofollow" class="external text" href="http://ja.wikipedia.org/wiki/SolidWorks">SolidWorks</a><a rel="nofollow" class="external text" href="http://ja.wikipedia.org/wiki/Solid_Edge">Solid Edge</a>と類似のツールを備えているため、同様に<a rel="nofollow" class="external text" href="http://ja.wikipedia.org/wiki/CAD"><b>MCAD</b> </a><a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Product_Lifecycle_Management"><b>PLM</b> </a><a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/CAx"><b>CAx</b> </a><a rel="nofollow" class="external text" href="http://ja.wikipedia.org/wiki/CAE"><b>CAE</b> </a>のカテゴリーに属します。 FreeCADは<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Parametric_feature_based_modeler">フィーチャーベースのパラメトリックモデラー</a>であり、システムのコアを改変することなく機能追加が簡単に行えるモジュラーソフトウェアアーキテクチャーを採用しています。
</p><p>多くの現代的な3D<a rel="nofollow" class="external text" href="http://ja.wikipedia.org/wiki/CAD">CAD</a>モデラーと同様に、FreeCADも3Dモデルから詳細設計を抽出して2Dの製品図面を作成する2Dコンポーネントを備えています。ただし<a rel="nofollow" class="external text" href="http://ja.wikipedia.org/wiki/AutoCAD">AutoCAD LT</a>のようなダイレクトな2Dの作図をFreeCADは対象としません。これはアニメーションや有機的な形状(<a rel="nofollow" class="external text" href="http://ja.wikipedia.org/wiki/Maya">Maya</a><a rel="nofollow" class="external text" href="http://ja.wikipedia.org/wiki/3ds_Max">3ds Max</a><a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/CINEMA_4D">Cinema 4D</a>のようなについても同様です。しかしながら、その広い適用能力のおかげでFreeCADは今よりもさらに多くの分野で使用できるようになることでしょう。
</p><p>FreeCADのもうひとつの主要な関心事は<a rel="nofollow" class="external text" href="http://ja.wikipedia.org/wiki/%E8%A8%88%E7%AE%97%E7%A7%91%E5%AD%A6">科学計算</a>分野で現存する全ての偉大なオープンソースライブラリをたっぷりと使用することです。その中には強力なCADカーネルである<a rel="nofollow" class="external text" href="http://OpenCascade.org">OpenCascade</a><a rel="nofollow" class="external text" href="http://ja.wikipedia.org/wiki/Open_Inventor">OpenInventor</a>実装の一つである<a rel="nofollow" class="external text" href="http://Coin3D.org">Coin3D</a>、世界的に有名なUIフレームワークである<a rel="nofollow" class="external text" href="http://www.qtsoftware.com/">Qt</a>、そして現存する最高のスクリプト言語の一つである<a rel="nofollow" class="external text" href="http://www.python.org">Python</a>が含まれます。またFreeCAD自身もライブラリとして他のプログラムから使用できます。
</p><p>また、FreeCADは完全な<a rel="nofollow" class="external text" href="http://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%82%B9%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0">クロスプラットフォーム</a>です。現在、Windows、Linux/Unix、Mac OSXシステムの全てのプラットフォーム上で完全に同じ様に動作します。
</p><p>FreeCADの機能についてもっと知りたければ<a href="https://www.freecadweb.org/wiki/index.php?title=Feature_list/jp" title="Feature list/jp">機能のリスト</a><a href="https://www.freecadweb.org/wiki/index.php?title=Getting_started/jp" title="Getting started/jp">最新のリリースノート</a><a href="https://www.freecadweb.org/wiki/index.php?title=Getting_started/jp" title="Getting started/jp">スタートガイド</a>を見てください。すぐに<a href="https://www.freecadweb.org/wiki/index.php?title=User_hub/jp" title="User hub/jp">ユーザーハブ</a>を見に行くのもいいでしょう!
</p><p><br />
</p>
<p><br />
</p>
<p>以下はFreeCADに実装されている多くの機能のリストです。ただし機能が多いため全てが記載されているわけではありません。もし将来的な計画について知りたいのであれば<a href="https://www.freecadweb.org/wiki/index.php?title=Development_roadmap/jp&amp;action=edit&amp;redlink=1" class="new" title="Development roadmap/jp (page does not exist)">開発ロードマップ</a>を見てください。機能を概観したいのであれば<a href="https://www.freecadweb.org/wiki/index.php?title=Screenshots/jp&amp;action=edit&amp;redlink=1" class="new" title="Screenshots/jp (page does not exist)">スクリーンショット</a>を見るとよいでしょう。
</p>
<h2><span class="mw-headline" id=".E3.83.AA.E3.83.AA.E3.83.BC.E3.82.B9.E3.83.8E.E3.83.BC.E3.83.88">リリースノート</span></h2>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=Release_notes_011/jp&amp;action=edit&amp;redlink=1" class="new" title="Release notes 011/jp (page does not exist)">リリース 0.11</a></li></ul>
<h2><span class="mw-headline" id=".E4.B8.80.E8.88.AC.E7.9A.84.E3.81.AA.E6.A9.9F.E8.83.BD">一般的な機能</span></h2>
<h3><span class="mw-headline" id=".E5.9F.BA.E6.9C.AC.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3">基本アプリケーション</span></h3>
<div class="floatright"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Freecad09-thumbnail.jpg" class="image"><img alt="Freecad09-thumbnail.jpg" src="Freecad09-thumbnail.jpg" width="300" height="180" /></a></div>
<ul><li><b>FreeCADはマルチプラットフォームです</b>。WIndows、Linux、Mac OSXで完全に同じように動作します。</li></ul>
<ul><li> <b>FreeCADは完全なGUIアプリケーションです</b>。FreeCADは完全なグラフィカルユーザーインターフェースを持っています。このグラフィカルユーザーインターフェースはよく知られる<a rel="nofollow" class="external text" href="http://www.qtsoftware.com/">Qt</a>フレームワークを基盤にしており、3Dビューワーは<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Open_Inventor">Open Inventor</a>を元に作成されています。これによって高速な3Dシーン描画が可能になり、シーンのグラフィック表現の取り扱いが非常に容易になっています。</li></ul>
<ul><li> <b>FreeCADはコマンドラインアプリケーションとしても動作します</b>。この場合にはメモリーの消費量を低くすることができます。コマンドラインモードでのFreeCADはインターフェイス無しで実行されますが、全てのジオメトリツールを使用することができます。これによって例えば他のアプリケーション用のデータを作成するためのサーバーとしてFreeCADを使用することが可能になります。</li></ul>
<ul><li> <b>FreeCADは<a href="https://www.freecadweb.org/wiki/index.php?title=Embedding_FreeCAD/jp" title="Embedding FreeCAD/jp">Pythonモジュール</a>としてインポートすることができます</b>。pythonスクリプトを実行できる他のアプリケーション内部、あるいはpythonコンソールへインポート可能です。コンソールモードの場合と同様、FreeCADのインターフェイス部分を使用することはできませんが、全てのジオメトリツールを使用することができます。</li></ul>
<ul><li> <b>機能/データタイプの遅延読み込みのためのプラグイン/モジュールフレームワーク</b>。FreeCADはコアアプリケーションと必要な場合にのみロードされるモジュールに分割されています。ほとんど全てのツールとジオメトリータイプはモジュールとして保持されています。モジュールはプラグインのように動作し、既にインストールされたFreeCADに対して追加したり削除したりすることが可能です。</li></ul>
<ul><li> <b>組み込みの<a href="https://www.freecadweb.org/wiki/index.php?title=Scripting/jp" class="mw-redirect" title="Scripting/jp">スクリプト</a>フレームワーク</b>: FreeCADには<a rel="nofollow" class="external text" href="http://www.python.org/">Python</a>インタープリターが組み込まれています。またアプリケーション、インターフェイス、ジオメトリー、3Dビューワー上のジオメトリー表現のほとんど全てを網羅したAPIを兼ね備えています。インタープリターは1つのコマンドから複雑なスクリプトまで実行でき、実質的には全モジュールを完全にPythonでプログラムすることさえ可能です。</li></ul>
<ul><li> <b>モジュール化されたMSIインストーラー</b>によってWindowsシステム上への柔軟なインストールが可能です。Ubuntuシステム用のパッケージも整備されています。</li></ul>
<h3><span class="mw-headline" id=".E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88.E6.A7.8B.E9.80.A0">ドキュメント構造</span></h3>
<ul><li> <b>アンドゥ/リドゥフレームワーク</b>: アンドゥスタックにアスセスすることで全ての操作をアンドゥ/リドゥ可能です。一度に複数のステップをアンドゥすることができます。</li></ul>
<ul><li> <b>トランザクションマネージメント</b>: アンドゥ/リドゥスタックは一つのアクションではなくドキュメントのトランザクションを保持します。これによって各ツールは何をアンドゥまたはリドゥするかを正確に定義することができます。</li></ul>
<ul><li> <b>パラメーター連想ドキュメントオブジェクト</b>: FreeCADドキュメント上のオブジェクトは全てパラメーターによって定義することが可能です。このパラメーターは動的に変更することが可能でいつでも再計算を行えます。オブジェクトの間の関連付けを保持することも可能なので一つのオブジェクトを変更するとそれに依存したオブジェクトも変更されます。</li></ul>
<ul><li> <b>ZIPベースの複合ドキュメント保存フォーマット</b>: FreeCADドキュメントは.<a href="https://www.freecadweb.org/wiki/index.php?title=Fcstd_file_format/jp" title="Fcstd file format/jp">fcstd</a>拡張子で保存できます。これにはジオメトリー、スクリプト、サムネイルアイコンといったさまざまな種類の情報を保存することができます。</li></ul>
<h3><span class="mw-headline" id=".E3.83.A6.E3.83.BC.E3.82.B6.E3.83.BC.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9">ユーザーインターフェイス</span></h3>
<ul><li> <b>完全にカスタマイズ/スクリプト化可能なグラフィカルユーザーインターフェース</b></li></ul>
<p><a rel="nofollow" class="external text" href="http://www.qtsoftware.com">Qt</a>ベースのFreeCADのインターフェイスに対してはPythonインタープリターを介した完全なアクセスが可能です。FreeCAD自体がワークベンチに提供する単純な機能だけではなく、Qtフレームワーク全体にアクセスできます。これによってウィジットとツールバーに対して作成、追加、ドッキング、削除といった任意のGUI操作を行うことができます。
</p>
<ul><li> <b>ワークベンチというコンセプト</b>: FreeCADのインターフェイスではツールは<a href="https://www.freecadweb.org/wiki/index.php?title=Workbenches/jp" title="Workbenches/jp">ワークベンチ</a>によってグループ分けされます。これによってある作業を行うために必要なツールだけを表示し、作業スペースを整頓された使いやすい状態に保ち、アプリケーションの読み込みを高速にすることができます。</li></ul>
<ul><li> <b>組み込みのPythonコンソール</b>には構文ハイライト機能、自動補完機能、クラスブラウザーが備わっています。Pythonコマンドは直接FreeCADに発行され、結果は直ちに返されます。これによってスクリプト作成者は動的に機能をテストすることができ、モジュールの中身を調べてFreeCADの内部構造を簡単に学ぶことができます。</li></ul>
<ul><li> <b>コンソール上でのユーザー操作のミラーリング</b>: ユーザーがFreeCADのインターフェイスを介して行った操作はPythonのコードによって実行できます。このPythonのコードはコンソール上に表示したり、マクロとして記録することができます。</li></ul>
<ul><li> <b>完全なマクロ記録と編集</b>: ユーザーがインターフェイスを操作するとPythonコマンドが発行され、必要な場合はそれを記録、編集して後で再現するために保存することができます。</li></ul>
<ul><li> <b>サムネイラー</b> (今のところLinuxシステムのみ): GnomeのNautilusを始めとしたほとんどのファイルマネージャーアプリケーションでFreeCAD ドキュメントのアイコン上にファイルの内容を表示します。</li></ul>
<h2><span class="mw-headline" id=".E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E5.9B.BA.E6.9C.89.E3.81.AE.E6.A9.9F.E8.83.BD">アプリケーション固有の機能</span></h2>
<p>FreeCADの機能はモジュールに分割されています。それぞれのモジュールは固有のデータタイプとアプリケーションを扱います:
</p>
<h3><span class="mw-headline" id=".E3.83.A1.E3.83.83.E3.82.B7.E3.83.A5"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Workbench_Mesh.png" class="image"><img alt="Workbench Mesh.png" src="Workbench_Mesh.png" width="32" height="32" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Mesh_Module/jp" class="mw-redirect" title="Mesh Module/jp">メッシュ</a></span></h3>
<div class="floatright"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Screenshot_mesh.jpg" class="image"><img alt="Screenshot mesh.jpg" src="300px-Screenshot_mesh.jpg" width="300" height="227" srcset="/wiki/images/thumb/d/d8/Screenshot_mesh.jpg/450px-Screenshot_mesh.jpg 1.5x, /wiki/images/thumb/d/d8/Screenshot_mesh.jpg/600px-Screenshot_mesh.jpg 2x" /></a></div>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=Mesh_Module/jp" class="mw-redirect" title="Mesh Module/jp">メッシュモジュール</a>は3Dメッシュを扱います。主にサードパーティが作成したメッシュジオメトリーをFreeCADにインポートし、修正し、変換してエクスポートすることを目的としています。ただしFreeCAD自体にもメッシュに留まらないより高度なジオメトリータイプが備わっています。</li></ul>
<ul><li> <b>プリミティブの作成</b>(直方体、球、円筒など)、<b>オフセット</b> (trivial or after Jung/Shin/Choi)、<b>ブーリアン演算</b> (加算, 切断、交差)</li></ul>
<ul><li> <b>インポート</b> 以下の形式をインポート可能: ASCII・バイナリの<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/STL_%28file_format%29">STL (Stereo lithography format)</a> (<b>*.stl, *.ast</b>)、<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Obj">OBJ format</a> (<b>*.obj</b>)、<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/NASTRAN">NASTRAN</a>を一部サポート (<b>*.nas</b>)、<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Open_Inventor">Open Inventor</a>メッシュ (<b>*.iv</b>)、FreeCADのネイティブメッシュカーネル (<b>*.bms</b>)</li></ul>
<ul><li> <b>エクスポート</b> 以下の形式をエクスポート可能: ASCII・バイナリの<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/STL_%28file_format%29">STL (Stereo lithography format)</a> (<b>*.stl, *.ast</b>)、<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Obj">OBJ format</a> (<b>*.obj</b>)、<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/NASTRAN">NASTRAN</a>を一部サポート (<b>*.nas, *.brl</b>)、<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/VRML">VRML</a>メッシュ (<b>*.wrl</b>)、FreeCADのネイティブメッシュカーネル (<b>*.bms</b>)、Pythonモジュールとしてのメッシュ (<b>*.py</b>)</li></ul>
<ul><li> <b>テストと修正</b>をメッシュに行うためのツール: ソリッドかどうかのテスト、非2次元多様体かどうかのテスト、自己交差しているかどうかのテスト、穴埋めと向きの統一。</li></ul>
<ul><li> <b>たくさんの <a href="https://www.freecadweb.org/wiki/index.php?title=Scripting/jp" title="Mesh Scripting/jp">PythonスクリプトAPI</a></b></li></ul>
<h3><span class="mw-headline" id="2D.E8.A3.BD.E5.9B.B3"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Workbench_Draft.png" class="image"><img alt="Workbench Draft.png" src="Workbench_Draft.png" width="32" height="32" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Module/jp" title="Draft Module/jp">2D製図</a></span></h3>
<ul><li> 3D空間内の任意の面上でのライン、ワイヤー、長方形、円弧、円などの<b>単純な平面ジオメトリー</b>のグラフィカルな作成</li></ul>
<ul><li> 文字や数字での<b>注釈</b></li></ul>
<ul><li> 3D空間内の任意の面上での移動、回転、拡大縮小、鏡像反転、オフセット、形状変換といったグラフィカルな<b>変更操作</b></li></ul>
<ul><li> <b>インポート</b><b>エクスポート</b> 以下の形式をサポート: AutodeskのDrawing Exchange Format (<b>*.dxf</b>)、Open Cad Format (<b>*.oca, *.gcad</b>)、SVG (<b>*.svg</b>)</li></ul>
<h3><span class="mw-headline" id="CAD"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Workbench_Part.png" class="image"><img alt="Workbench Part.png" src="Workbench_Part.png" width="32" height="32" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Module/jp" title="Part Module/jp">CAD</a></span></h3>
<div class="floatright"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_BooleanOperations.png" class="image" title="結合、交差、減算の例"><img alt="結合、交差、減算の例" src="300px-Part_BooleanOperations.png" width="300" height="231" srcset="/wiki/images/thumb/d/df/Part_BooleanOperations.png/450px-Part_BooleanOperations.png 1.5x, /wiki/images/thumb/d/df/Part_BooleanOperations.png/600px-Part_BooleanOperations.png 2x" /></a></div>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Module/jp" title="Part Module/jp">パートモジュール</a>はCADモデリングとCADデータ構造に関係した全てを扱います。CAD機能はとりわけ注力して開発が行われています<a href="https://www.freecadweb.org/wiki/index.php?title=Development_roadmap/jp&amp;action=edit&amp;redlink=1" class="new" title="Development roadmap/jp (page does not exist)">開発ロードマップ</a><a href="https://www.freecadweb.org/wiki/index.php?title=PartDesign_project/jp&amp;action=edit&amp;redlink=1" class="new" title="PartDesign project/jp (page does not exist)">パート設計プロジェクト</a><a href="https://www.freecadweb.org/wiki/index.php?title=Assembly_project/jp" title="Assembly project/jp">アセンブリプロジェクト</a>を参照してください)。 <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Module/jp" title="Part Module/jp">パートモジュール</a>は高レベルの<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Open_CASCADE">Open CASCADE</a>ジオメトリーを使用しています。</li></ul>
<ul><li> <b>パラメトリックなプリミティブ形状</b> 直方体、球、円筒、円錐、トーラスなど</li></ul>
<ul><li> <b>頂点、辺、ワイヤー</b>また<b></b>といった幾何形状部品 Pythonスクリプト経由</li></ul>
<ul><li> 直線、曲線の<b>押し出し</b><b>分割</b><b>フィレット</b>によるモデリング</li></ul>
<ul><li> <b><a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Constructive_solid_geometry">ブーリアン演算</a></b> <b>和集合</b><b>差集合</b><b>共通集合</b>など</li></ul>
<ul><li> <b>たくさんの<a href="https://www.freecadweb.org/wiki/index.php?title=Topological_data_scripting/jp" title="Topological data scripting/jp">PythonスクリプトAPI</a></b></li></ul>
<ul><li> <b>インポート</b><b>エクスポート</b> 以下の形式をサポート: <a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Standard_for_the_Exchange_of_Product_model_data">STEP</a> パーツとアセンブリ (<b>*.stp,*.step</b>)、<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/IGES">IGES</a>モジュール (<b>*.igs, *.iges</b>) とBRep (<b>*.brp</b>)、私たちが使っている<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Open_CASCADE">Open CASCADE</a> CADカーネルのネイティブフォーマット。</li></ul>
<h3><span class="mw-headline" id=".E3.83.AC.E3.82.A4.E3.83.88.E3.83.AC.E3.83.BC.E3.82.B7.E3.83.B3.E3.82.B0"><a href="https://www.freecadweb.org/wiki/index.php?title=Raytracing_Module/jp" title="Raytracing Module/jp">レイトレーシング</a></span></h3>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=Raytracing_Module/jp" title="Raytracing Module/jp">レイトレーシングモジュール</a>を使うとFreeCAD上のジオメトリーをエクスポートして高品質な画像作成するための<b>外部のレンダリングソフトウェア</b>で使うことができます。今のところサポートしているレンダリングエンジンは<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/POV-Ray">POV-Ray</a>だけです。現在のところこのモジュールはレンダーシートを作成し、POV-Rayファイルにエクスポートするためにジオメトリーをレンダーシートに追加することができます。</li></ul>
<h3><span class="mw-headline" id=".E5.9B.B3.E5.8C.96"><a href="https://www.freecadweb.org/wiki/index.php?title=Drawing_Module/jp" title="Drawing Module/jp">図化</a></span></h3>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=Drawing_Module/jp" title="Drawing Module/jp">図化モジュール</a>では3Dジオメトリーの投影図を<b>2D SVGドキュメント</b>としてエクスポートすることができます。このモジュールでは既存のSVGテンプレートを使った2Dシートとそのシートに対するジオメトリーの投影図を作成することができます。作成したシートはSVGファイルとして保存可能です。</li></ul>
<h3><span class="mw-headline" id="CAM"><a href="https://www.freecadweb.org/wiki/index.php?title=Cam_Module/jp&amp;action=edit&amp;redlink=1" class="new" title="Cam Module/jp (page does not exist)">CAM</a></span></h3>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=Cam_Module/jp&amp;action=edit&amp;redlink=1" class="new" title="Cam Module/jp (page does not exist)">CAMモジュール</a>はスライス加工など機械加工のために用意されています。このモジュールはまだ開発が始まったばかりで、今のところ<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Incremental_sheet_forming">インクリメンタルなシート成形</a>にもっとも力が注がれています。他にもいくつかの工具経路計画アルゴリズムがありますが今のところはエンドユーザーが使えるようにはなっていません。</li></ul>
<p><br />
</p>
<p><br />
</p>
<h1><span class="mw-headline" id=".E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">インストール</span></h1>
<h2><span class="mw-headline" id="Windows.E4.B8.8A.E3.81.A7.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">Windows上でのインストール</span></h2>
<p>Windows上でのFreeCADのインストールのもっとも簡単なやり方は下記のインストーラーをダウンロードすることです。<br />
<a href="https://www.freecadweb.org/wiki/index.php?title=File:Windows.png" class="image"><img alt="Windows.png" src="Windows.png" width="32" height="32" /></a> <a rel="nofollow" class="external text" href="https://github.com/FreeCAD/FreeCAD/releases/download/0.16/FreeCAD.0.16.6706.f86a4e4-WIN-x86-installer.exe">Windows</a> <small>32 bits </small>
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Windows.png" class="image"><img alt="Windows.png" src="Windows.png" width="32" height="32" /></a> <a rel="nofollow" class="external text" href="https://github.com/FreeCAD/FreeCAD/releases/download/0.16.6712/FreeCAD-0.16.6712_x64_setup.exe">Windows</a> <small>64 bits</small>
</p><p><br />
.msi (Microsoftインストーラー)ファイルをダウンロードし、それをダブルクリックするだけでインストール処理が開始します。
</p><p>以下には技術的なオプションのより詳しい情報が記載されています。よくわからなくても心配は無用ですほとんどのWindowsユーザーはインストール用.msiで行うこと以上のことは必要ありません。<b><a href="https://www.freecadweb.org/wiki/index.php?title=Getting_started/jp" title="Getting started/jp"> さあ始めましょう</a></b>
</p>
<h3><span class="mw-headline" id=".E3.82.B7.E3.83.B3.E3.83.97.E3.83.AB.E3.81.AAMicrosoft.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.A9.E3.83.BC.E3.81.A7.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">シンプルなMicrosoftインストーラーでのインストール</span></h3>
<p><b>Windows上でのFreeCADのインストール</b>のもっとも簡単なやり方は上記のインストーラーを使う方法です。このページでは追加のインストールオプションを使った<i>Microsoftインストーラー</i>の機能とその使い方を説明します。
</p><p>もし64ビット版や不安定開発版をダウンロードしたければ<a href="Download.html" title="Download">ダウンロードページ</a>を見てください。
</p>
<h3><span class="mw-headline" id=".E3.82.B3.E3.83.9E.E3.83.B3.E3.83.89.E3.83.A9.E3.82.A4.E3.83.B3.E3.81.A7.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">コマンドラインでのインストール</span></h3>
<p><i>msiexec.exe</i>コマンドラインユーティリティーを使用すると非対話的なインストールや管理者用インストールといった追加機能を使用することができます。
</p>
<h4><span class="mw-headline" id=".E9.9D.9E.E5.AF.BE.E8.A9.B1.E7.9A.84.E3.81.AA.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">非対話的なインストール</span></h4>
<p>以下のコマンドを使用するとインストールをプログラム的に開始させることが可能です。
</p>
<pre> msiexec /i FreeCAD&lt;version&gt;.msi
</pre>
<p>追加パラメーターは以下のようにコマンドラインの末尾で設定できます。
</p>
<pre> msiexec /i FreeCAD-2.5.msi TARGETDIR=r:\FreeCAD25
</pre>
<h4><span class="mw-headline" id=".E5.88.B6.E9.99.90.E4.BB.98.E3.81.8D.E3.83.A6.E3.83.BC.E3.82.B6.E3.83.BC.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9">制限付きユーザーインターフェイス</span></h4>
<p>/qオプションを使うことでインストーラーが表示するインターフェイスの量をコントロールできます。具体的には以下の通りです
</p>
<ul><li> /qn - インターフェイス無し</li>
<li> /qb - 簡易インターフェイス - 小さなプログレスダイアログだけです</li>
<li> /qb! - /qbと同じですがキャンセルボタンを非表示にします</li>
<li> /qr - 省略インターフェイス - 全てのダイアログを表示しますがユーザー操作は必要とされません(モーダルダイアログは全てスキップされます)</li>
<li> /qn+ - /qnと同じですが、最後に"Completed"ダイアログが表示されます</li>
<li> /qb+ - /qbと同じですが、最後に"Completed"ダイアログが表示されます</li></ul>
<h4><span class="mw-headline" id=".E3.82.BF.E3.83.BC.E3.82.B2.E3.83.83.E3.83.88.E3.83.87.E3.82.A3.E3.83.AC.E3.82.AF.E3.83.88.E3.83.AA">ターゲットディレクトリ</span></h4>
<p>TARGETDIRプロパティによってFreeCADインストール先のルートディレクトリを設定できます。例えば以下のようにすると異なるインストールドライブを指定できます。
</p>
<pre>TARGETDIR=R:\FreeCAD25
</pre>
<p>デフォルトのTARGETDIRは[WindowsVolume\Programm Files\]FreeCAD&lt;version&gt;です。
</p>
<h4><span class="mw-headline" id=".E5.85.A8.E3.81.A6.E3.81.AE.E3.83.A6.E3.83.BC.E3.82.B6.E3.83.BC.E3.81.AB.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">全てのユーザーにインストール</span></h4>
<pre> ALLUSERS=1
</pre>
<p>を追加すると全てのユーザーにインストールを行います。非対話的なインストールはデフォルトではカレントユーザーにのみパッケージをインストールします。また対話的なインストールはユーザーが必要な権限を持っている場合にデフォルトが"all users"のダイアログを表示します。
</p>
<h4><span class="mw-headline" id=".E6.A9.9F.E8.83.BD.E3.81.AE.E9.81.B8.E6.8A.9E">機能の選択</span></h4>
<p>複数のプロパティを使用してインストールされる機能、再インストールされる機能、削除される機能を選択することができます。FreeCADでの機能のセットは以下の通りです。
</p>
<ul><li> DefaultFeature - ソフトウェア一式とコアライブラリーをインストールします</li>
<li> Documentation - ドキュメントをインストールします</li>
<li> Source code - ソースコードをインストールします</li>
<li> ... ToDo</li></ul>
<p>さらにALLで全ての機能を指定できます。全ての機能はDefaultFeatureに依存するのでどれか一つでも機能を自動でインストールするとはDefaultFeatureでインストールされる機能もインストールされます。以下のプロパティを使うとインストールされる機能、削除される機能をコントロールできます。
</p>
<ul><li> ADDLOCAL - ローカルマシン上にインストールされる機能のリスト</li>
<li> REMOVE - 削除する機能のリスト</li>
<li> ADDDEFAULT - デフォルト設定に追加される機能のリストFreeCADの全機能の一部</li>
<li> REINSTALL - 再インストール/修復される機能のリスト</li>
<li> ADVERTISE - アド表示インストールが行われる機能のリスト</li></ul>
<p>さらにいくつかのプロパティが利用可能です。詳細についてはMSDNのドキュメントを見てください。
</p><p>これらのオプションに加えて
</p>
<pre> ADDLOCAL=Extensions
</pre>
<p>を追加した場合、インタープリター自体のインストールと拡張子の登録が行われ、他には何もインストールされません。
</p>
<h3><span class="mw-headline" id=".E3.82.A2.E3.83.B3.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">アンインストール</span></h3>
<pre> msiexec /x FreeCAD&lt;version&gt;.msi
</pre>
<p>とするとFreeCADをアンインストールできます。パッケージまたはプロダクトコードを代わりに指定すればアンインストール用のMSIファイルは必要ありません。プロダクトコードはFreeCADがスタートメニューにインストールするアンインストール用ショートカットのプロパティで確認できます。
</p>
<h3><span class="mw-headline" id=".E7.AE.A1.E7.90.86.E8.80.85.E7.94.A8.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">管理者用インストール</span></h3>
<pre> msiexec /a FreeCAD&lt;version&gt;.msi
</pre>
<p>とすると"管理者用"ネットワークインストールを開始できます。ファイルがターゲットディレクトリネットワークディレクトリである必要がありますに展開されますがローカルマシンに対してはそれ以外の変更は行われません。また別の小さなmsiファイルがターゲットディレクトリに生成され、クライアントはそれを使ってローカルへのインストールを行うことができます将来的なバージョンではいくつかの機能を完全にネットワークドライブ上に置くことができるようになる予定です
</p><p>今のところ、管理者用インストールにはユーザーインターフェイスが無いのでターゲットディレクトリはコマンドラインで渡す必要があります。
</p><p>管理者用インストールには特にアンインストール手順はありません - クライアントが使用しなくなった場合はターゲットディレクトリを削除するだけで問題ありません。
</p>
<h3><span class="mw-headline" id=".E3.82.A2.E3.83.89.E3.83.90.E3.82.BF.E3.82.A4.E3.82.BA.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">アドバタイズのインストール</span></h3>
<pre> msiexec /jm FreeCAD&lt;version&gt;.msi
</pre>
<p>とするとFreeCADをマシンに"アドバタイズ"することができます(/juでユーザーにアドバタイズできます。これを行うと実際にソフトウェアをインストールすることなくスタートメニューにアイコンを表示し、拡張子を登録することができます。機能の実際のインストールはその機能を初めて使用する時になって行われます。
</p><p>FreeCADインストーラーでは今のところスタートメニューでのアドバタイズのみサポートし、ショートカットでのアドバタイズはサポートしていません。
</p>
<h3><span class="mw-headline" id=".E3.83.9E.E3.82.B7.E3.83.B3.E3.82.B0.E3.83.AB.E3.83.BC.E3.83.97.E3.81.B8.E3.81.AE.E8.87.AA.E5.8B.95.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">マシングループへの自動インストール</span></h3>
<p>Windowsグループポリシーを使うとマシングループに自動でFreeCADをインストールすることが可能です。実行には以下のステップを行なってください。
</p>
<ol><li>ドメインのコントローラーにログオンします</li>
<li>全てのターゲットマシンからアクセスできる共有フォルダにMSIファイルをコピーします</li>
<li>MMCスナップインの"Active Directory ユーザーとコンピュータ"をを開きます</li>
<li>FreeCADをインストールするコンピューターグループに移動します</li>
<li>プロパティを開きます</li>
<li>グループポリシーを開きます</li>
<li>新しいポリシーを追加し、編集します</li>
<li>コンピュータの構成/ソフトウェアインストールで新規作成/パッケージを選択します</li>
<li>ネットワークパスからMSIファイルを選択します</li>
<li>オプションでコンピューターがポリシーの範囲を外れた場合にFreeCADがアンインストールされるようにすることができます</li></ol>
<p>グループポリシーが伝達されるまでには普通、多少の時間がかかります - 確実にパッケージを配置するには全てのマシンを再起動する必要があります。
</p>
<h3><span class="mw-headline" id="CrossoverOffice.E3.82.92.E4.BD.BF.E7.94.A8.E3.81.97.E3.81.9FLinux.E3.81.B8.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">CrossoverOfficeを使用したLinuxへのインストール</span></h3>
<p><i>CXOffice 5.0.1</i>を使うとWindows版のFreeCADをLinuxシステム上にインストールできます。CXOfficeのコマンドラインから<i>msiexec</i>を実行してください。インストールパッケージはドライブレター"Y:"にマップされた"software"ディレクトリに配置されます:
</p>
<pre>msiexec /i Y:\\software\\FreeCAD&lt;version&gt;.msi
</pre>
<p>FreeCADは実行されますがOpenGL表示が動作しないことが報告されています。これはGoogle <a href="http://en.wikipedia.org/wiki/SketchUp" class="extiw" title="wikipedia:SketchUp">SketchUp</a>など<a href="http://en.wikipedia.org/wiki/Wine_(software)" class="extiw" title="wikipedia:Wine (software)">Wine</a>上で動作するプログラム全般に言えることです。
</p>
<p><br />
</p>
<h2><span class="mw-headline" id="Linux.2FUnix.E4.B8.8A.E3.81.A7.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">Linux/Unix上でのインストール</span></h2>
<p>ほとんどの有名なLinuxシステム上でFreeCADのインストールが可能なことがコミュニティーによって確かめられています。またあなたのディストリビューションで使用できるパッケージマネージャーでも直接FreeCADを利用できるはずです。FreeCADチームは新しいリリースが作成されるタイミングでいくつかの"公式"パッケージと最先端機能のテスト用の実験的PPAリポジトリを提供しています。
</p><p>FreeCADのインストールが終るといよいよ<a href="https://www.freecadweb.org/wiki/index.php?title=Getting_started/jp" title="Getting started/jp">使い始めることができます</a>
</p>
<h2><span class="mw-headline" id="Ubuntu">Ubuntu</span></h2>
<p>FreeCADはVersion 9.04移行のUbuntuリポジトリから利用することができ、ソフトウェアセンターまたは以下のコマンドでインストールできます
</p>
<pre>sudo apt-get install freecad
</pre>
<p>またFreeCADコミュニティーはデイリービルドを行なっているPPAを提供しています。毎日、最新のソースコードから自動ビルドが行われ、このPPAが更新されています。従ってこれには最大でも一日遅れで最新機能が取り込まれますが同時にリグレッション機能上の不具合が含まれている可能性もあります。このPPAをあなたのソフトウェアソースリストに追加するには以下を行なってください
</p>
<pre>sudo add-apt-repository ppa:freecad-maintainers/freecad-daily
sudo apt-get update
sudo apt-get install freecad
</pre>
<p>FreeCADコミュニティーはこれ以外にももう一つPPAを提供しています。こちらはもっと長い間隔で手動更新されているのでより安全です
</p>
<pre>sudo add-apt-repository ppa:freecad-maintainers/freecad-dev
sudo apt-get update
sudo apt-get install freecad
</pre>
<p>詳細については<a href="/wiki/Download#Ubuntu_PPA_packages" title="Download">Download#Ubuntu_PPA_packages</a>ページを見てください。
</p>
<h2><span class="mw-headline" id="Debian.E3.80.81Mint.E3.80.81.E3.81.9D.E3.81.AE.E4.BB.96.E3.81.AEDebian.E3.83.99.E3.83.BC.E3.82.B9.E3.81.AE.E3.82.B7.E3.82.B9.E3.83.86.E3.83.A0">Debian、Mint、その他のDebianベースのシステム</span></h2>
<p>Debian Lenny以降ではDebianソフトウェアレポジトリーから直接FreeCADが利用可能です。Synapticまたは以下のコマンドでインストールできます
</p>
<pre>sudo apt-get install freecad
</pre>
<h2><span class="mw-headline" id="OpenSUSE">OpenSUSE</span></h2>
<p>以下のコマンドでFreeCADのインストールができます
</p>
<pre>zypper install FreeCAD
</pre>
<h2><span class="mw-headline" id="Gentoo">Gentoo</span></h2>
<p>以下のコマンドでFreeCADのビルド/インストールができます:
</p>
<pre>emerge freecad
</pre>
<h2><span class="mw-headline" id=".E3.81.9D.E3.81.AE.E4.BB.96">その他</span></h2>
<p>もしあなたのシステムでFreeCADが動くにもかかわらずこのページにドキュメントがない場合は<a rel="nofollow" class="external text" href="http://forum.freecadweb.org/viewforum.php?f=8">フォーラム</a>で私たちに教えてください!
</p><p>またこれ以外にも多くの非公式なFreeCADパッケージがネット上で利用可能です。例えばSlackwareやFedoraといったシステム用のものです。ネットを検索すればすぐに見つかるでしょう。
</p>
<h3><span class="mw-headline" id=".deb.E3.83.99.E3.83.BC.E3.82.B9.E3.81.AE.E3.82.B7.E3.82.B9.E3.83.86.E3.83.A0.E3.81.B8.E3.81.AE.E6.89.8B.E5.8B.95.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">.debベースのシステムへの手動インストール</span></h3>
<p>もし何らかの理由で上記の方法が使えない場合はいつでも<a href="Download.html" title="Download">ダウンロードページ</a>から.debパッケージをダウンロードすることができます。<br />
<a href="https://www.freecadweb.org/wiki/index.php?title=File:Linux.png" class="image"><img alt="Linux.png" src="Linux.png" width="32" height="32" /></a> <a rel="nofollow" class="external text" href="https://launchpad.net/~freecad-maintainers/+archive/freecad-stable">Ubuntu</a> <small>32/64bit</small>
<a href="https://www.freecadweb.org/wiki/index.php?title=File:AppImage-logo.png" class="image"><img alt="AppImage-logo.png" src="AppImage-logo.png" width="32" height="32" /></a> <a rel="nofollow" class="external text" href="https://github.com/FreeCAD/FreeCAD/releases/download/0.16.6712/FreeCAD-0.16.6712.glibc2.17-x86_64.AppImage">AppImage</a> <small>64bit</small>
</p><p><br />
まずあなたのシステムに対応した.debをダウンロードします。あなたのシステムに<a href="http://en.wikipedia.org/wiki/Gdebi" class="extiw" title="wikipedia:Gdebi">Gdebi</a>パッケージがインストールされている場合(通常はされています)、ファイルをダウンロードした場所に移動してファイルをダブルクリックします。必要な依存関係はシステムのパッケージマネージャーが自動で解決してくれます。
またターミナルからインストールすることもできます。ファイルをダウンロードした場所に移動して以下のように入力してください:
</p>
<pre>sudo dpkg -i Name_of_your_FreeCAD_package.deb
</pre>
<p>Name_of_your_FreeCAD_package.debはダウンロードしたファイルの名前に変えてください。
</p><p>FreeCADのインストールが済むとStart Menuの"Graphic"セクションにスタートアップアイコンが追加されます。
</p>
<h3><span class="mw-headline" id=".E3.81.9D.E3.81.AE.E4.BB.96.E3.81.AELinux.2FUnix.E3.82.B7.E3.82.B9.E3.83.86.E3.83.A0.E3.81.B8.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">その他のLinux/Unixシステムへのインストール</span></h3>
<p>残念なが今のところ他のLinux/Unix用の利用可能なコンパイル済みパッケージはありません。<a href="https://www.freecadweb.org/wiki/index.php?title=CompileOnUnix/jp" title="CompileOnUnix/jp">自分でFreeCADをコンパイル</a>する必要があります。
</p>
<h3><span class="mw-headline" id="Windows.E7.89.88.E3.81.AELinux.E3.81.B8.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">Windows版のLinuxへのインストール</span></h3>
<p><a href="https://www.freecadweb.org/wiki/index.php?title=Install_on_Windows/jp" title="Install on Windows/jp">Windows上でのインストール</a>ページを参照してください。
</p>
<p><br />
</p>
<h2><span class="mw-headline" id="Mac.E4.B8.8A.E3.81.A7.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">Mac上でのインストール</span></h2>
<p>インストーラーを使って1ステップでFreeCADをMac OS Xにインストールすることができます。<br />
<a href="https://www.freecadweb.org/wiki/index.php?title=File:Mac.png" class="image"><img alt="Mac.png" src="Mac.png" width="32" height="32" /></a> <a rel="nofollow" class="external text" href="https://github.com/FreeCAD/FreeCAD/releases/download/0.16.6712/FreeCAD_0.16-6712.da2d364-OSX-x86_64.dmg">Mac</a> <small>10.9 Mavericks 64-bit</small>
<br />
このページではFreeCADインストーラーの使い方と機能を説明しています。またアンインストール方法も記載されています。
インストールが終わると<a href="https://www.freecadweb.org/wiki/index.php?title=Getting_started/jp" title="Getting started/jp">使い始めることができます</a>
</p>
<h3><span class="mw-headline" id=".E7.B0.A1.E5.8D.98.E3.81.AA.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">簡単なインストール</span></h3>
<p>FreeCADインストーラーはディスクイメージファイルに収められたインストールパッケージ.mpkgとして提供されています。
</p><p>最新のインストーラーは<a href="Download.html" title="Download">ダウンロードページ</a>からダウンロードすることができます。ファイルをダウンロードしたらディスクイメージをマウントして<b>Install FreeCAD</b>パッケージを実行してください。
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Mac_installer_1.png" class="image"><img alt="Mac installer 1.png" src="Mac_installer_1.png" width="700" height="438" /></a>
</p><p>インストールされるパッケージのリストが記載された<b>Customize Installation</b>画面をインストーラーが表示します。もし既にこれらのパッケージのどれかがインストールされている場合はチェックボックスを使ってインストール選択を外すことができます。インストールされているかどうかわからない場合は全てのアイテムにチェックをいれたままにしておいてください。
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Mac_installer_2.png" class="image"><img alt="Mac installer 2.png" src="Mac_installer_2.png" width="700" height="520" /></a>
</p>
<h3><span class="mw-headline" id=".E3.82.A2.E3.83.B3.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB_2">アンインストール</span></h3>
<p>今のところFreeCADにはアンインストーラーがありません。FreeCADとインストールされた全てのコンポーネントを完全に取り除きたい場合は以下のファイルとフォルダをごみ箱にドラッグしてください。
</p>
<ul><li>/Applications内
<ul><li>FreeCAD</li></ul></li></ul>
<ul><li>/Library/Frameworks/内:
<ul><li>SoQt.framework</li>
<li>Inventor.framework</li></ul></li></ul>
<p>またターミナルから以下を実行してください:
</p>
<pre>sudo /Developer/Tools/uninstall-qt.py
sudo rm -R /usr/local/lib/OCC
sudo rm -R /usr/local/include/OCC
</pre>
<p>これで終わりです。FreeCADは最終的には自己完結型のアプリケーションバンドルとして利用できるようになる予定です。そうなればこれらの煩わしい作業も全てなくなるでしょう。
</p>
<p><br />
</p>
<h1><span class="mw-headline" id="FreeCAD.E3.82.92.E7.99.BA.E8.A6.8B">FreeCADを発見</span></h1>
<h2><span class="mw-headline" id=".E6.96.B0.E7.9D.80.E6.83.85.E5.A0.B1.EF.BB.BF">新着情報</span></h2>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=Release_notes_012/jp&amp;action=edit&amp;redlink=1" class="new" title="Release notes 012/jp (page does not exist)">バージョン0.12リリースノート</a> FreeCAD リリース 0.12 の新着情報をチェックしてください。</li></ul>
<h2><span class="mw-headline" id=".E5.BA.8F.E6.96.87">序文</span></h2>
<p>FreeCADは、CAD/CAE用のパラメトリックモデリングアプリケーションです。まだ開発の初期段階なので、すぐに作品の製作に使用できると期待しないように。でもFreeCADがどういったもので、またどういった機能が開発されているのか興味がある方は、是非ダウンロードして試してみてください。現時点では既にたくさんの機能が実装されています。しかしユーザーインターフェイスはまだ十分に開発されていません。したがって、もしあなたがPythonを少し知っていれば、比較的に簡単に複雑な形状の作成や修正にすぐに取りかかれますが、Pyhtonを知らなければ、FreeCADが提供する機能はまだほんの僅かであると感じるでしょう。でも待ってください、すぐに改善されますから。
</p><p>評価後のアイデアや意見は、是非<a rel="nofollow" class="external text" href="http://forum.freecadweb.org/index.php">FreeCADディスカッションフォーラム</a>で私たちと共有しましょう!
</p>
<h2><span class="mw-headline" id=".E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB_2">インストール</span></h2>
<p>まず初めにまだ済んでいなければですがFreeCADをダウンロードしてインストールしてください。<a href="Download.html" title="Download">ダウンロードページ</a>で現在のバージョンと更新を確認しましょう。インストールパッケージはWindows用.msiとUbuntuとDebian用.deb、openSUSErpmとMac OSX用を用意しています。 See the <a href="https://www.freecadweb.org/wiki/index.php?title=Installing/jp" title="Installing/jp">インストール</a> page for information about how to install FreeCAD.
</p>
<h2><span class="mw-headline" id="FreeCAD.E3.82.92.E8.A9.A6.E3.81.97.E3.81.A6.E3.81.BF.E3.82.8B">FreeCADを試してみる</span></h2>
<div class="thumb tnone"><div class="thumbinner" style="width:802px;"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Freecad09-empty.jpg" class="image"><img alt="" src="Freecad09-empty.jpg" width="800" height="481" class="thumbimage" /></a> <div class="thumbcaption">最初に起動するFreeCADインターフェイスです。<a href="https://www.freecadweb.org/wiki/index.php?title=Screenshots/jp&amp;action=edit&amp;redlink=1" class="new" title="Screenshots/jp (page does not exist)">他のスクリーンショット</a>も参照してください。</div></div></div>
<p>FreeCADは汎用の3Dモデリングアプリケーションです。機械工学と、専門的なエンジニアリングや建築などの関連分野に重点を置いています。FreeCADは、限られた特定のタスクを実行するためだけではなく、あらゆる種類の3Dアプリケーションを開発するためのプラットフォームとして考えられています。このため、FreeCADのインターフェイスは一連の <a href="https://www.freecadweb.org/wiki/index.php?title=Workbenches/jp" title="Workbenches/jp">ワークベンチ</a>に分けられています。ワークベンチでは特定のタスクやタスクグループに必要なツールのみを表示するようにインターフェイスの内容を変更することができます。
</p><p>つまりFreeCADのインターフェイスは、メニューバーや3Dビュー領域、及びシーンの内容やオブジェクトのプロパティを表示するための幾つかのサイドパネルを持つ、とてもシンプルな容れ物であると言えるでしょう。また、これらのパネルの全ての内容はワークベンチに応じて変更することができます。
</p><p>初めてFreeCAD起動すると"一般的な"ワークベンチ我々は”完全なワークベンチ”と呼びますがが表示されます。このワークベンチは、他のワークベンチから最も完成されたツールを集めたものです。FreeCADはかなり若くまだ専門的な作業には使用されていませんから、このワークベンチはFreeCADをより簡単に知るうえでとても役に立つでしょう。基本的には、ジオメトリを作成するために十分なツールは全てこのワークスペースにあります。
</p>
<h3><span class="mw-headline" id="3.E6.AC.A1.E5.85.83.E7.A9.BA.E9.96.93.E3.81.A7.E3.81.AE.E6.93.8D.E4.BD.9C">3次元空間での操作</span></h3>
<p>FreeCADは2つの異なる<a href="https://www.freecadweb.org/wiki/index.php?title=Mouse_Model/jp" title="Mouse Model/jp">操作モード</a>を持っており、ユーザー設定ダイアログまたは3Dビューでの右クリックで変更できます。これらのモードの詳細については<a href="https://www.freecadweb.org/wiki/index.php?title=Mouse_Model/jp" title="Mouse Model/jp">マウスモデル</a>のページを見てください。 デフォルトのモード("CAD操作モード")ではコマンドは以下の通りです。
</p>
<table border="1">
<tr>
<th align="center" width="25%">選択
</th>
<th align="center" width="25%">平行移動
</th>
<th align="center" width="25%">拡大縮小
</th>
<th align="center" width="25%">回転表示
</th></tr>
<tr align="center">
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Hand_cursor.png" class="image"><img alt="Hand cursor.png" src="Hand_cursor.png" width="24" height="24" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Pan_cursor.png" class="image"><img alt="Pan cursor.png" src="Pan_cursor.png" width="16" height="16" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Zoom_cursor.png" class="image"><img alt="Zoom cursor.png" src="Zoom_cursor.png" width="16" height="16" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Rotate_cursor.png" class="image"><img alt="Rotate cursor.png" src="Rotate_cursor.png" width="16" height="16" /></a>
</td></tr>
<tr align="center">
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Select-mouse.svg" class="image" title="to Select"><img alt="to Select" src="Select-mouse.svg" width="70" height="100" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Pan-mouse.svg" class="image" title="to Pan"><img alt="to Pan" src="Pan-mouse.svg" width="70" height="100" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Zoom-mouse.svg" class="image" title="to Zoom in or out"><img alt="to Zoom in or out" src="Zoom-mouse.svg" width="70" height="100" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Rotate-mouse.svg" class="image" title="to Rotate view"><img alt="to Rotate view" src="Rotate-mouse.svg" width="70" height="100" /></a>
</td></tr>
<tr valign="top">
<td>選択したいオブジェクトの上で左マウスボタンを押してください。Ctrlを押したまま操作すると複数のオブジェクトを選択できます。
</td>
<td>マウス中央ボタンを押して動かしてオブジェクトを平行移動させます。
</td>
<td>拡大縮小にはマウスホイールを使用してください。
</td>
<td>まず中央マウスボタンを押し、そのまま表示されているオブジェクトの任意の点で左ボタンをクリックして好きな方向にドラッグします。こうすると中心の周りを回転する球のように回転が行われます。ドラッグを止める前にボタンを離すとオブジェクトは<a href="https://www.freecadweb.org/wiki/index.php?title=Spinning/jp" title="Spinning/jp">回転</a>し続けます(有効になっている場合)。オブジェクト上の任意の点でマウスの中央ボタンをダブルクリックするとその点が回転、拡大縮小の原点に設定されます。
</td></tr></table>
<p><br />
またViewメニュー、Viewツールバー、数値のショートカット <span style="background: #DDDDDD; border: 1px solid #888888; padding: 0px 5px 1px 5px;">1</span> <span style="background: #DDDDDD; border: 1px solid #888888; padding: 0px 5px 1px 5px;">2</span>など...)からプリセットのビュー(トップビュー、フロントビューなど)が利用できます。
</p>
<h2><span class="mw-headline" id="2.E6.AC.A1.E5.85.83.E3.81.AE.E8.A3.BD.E5.9B.B3"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Workbench_Draft.png" class="image"><img alt="Workbench Draft.png" src="Workbench_Draft.png" width="32" height="32" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Module/jp" title="Draft Module/jp">2次元の製図</a></span></h2>
<div id="itsfree" style="text-align:center;color:black;background:#FDE0A8;margin:1em 7em;padding:0.5em 2em;border:2px solid #FF5706;"><br />This template is now obsolete and is directly include in the original page<br /><br /></div>
<p><strike>===作図オブジェクト===
</p><p>オブジェクトを作成するためのツールです。
</p>
<ul><li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Line.png" class="image"><img alt="Draft Line.png" src="Draft_Line.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Line/jp" title="Draft Line/jp">2点線分</a>: 2点からなる線分を描きます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Wire.png" class="image"><img alt="Draft Wire.png" src="Draft_Wire.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Wire/jp" title="Draft Wire/jp">ワイヤー(複数の点からなる線分)</a>: 複数点の線分で作られる線を描きます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Circle.png" class="image"><img alt="Draft Circle.png" src="Draft_Circle.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Circle/jp" title="Draft Circle/jp"></a>: 中心と半径から円を描きます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Arc.png" class="image"><img alt="Draft Arc.png" src="Draft_Arc.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Arc/jp" title="Draft Arc/jp">円弧</a>: 中心、半径、開始角度と終了角度から円弧を描きます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Rectangle.png" class="image"><img alt="Draft Rectangle.png" src="Draft_Rectangle.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Rectangle/jp" title="Draft Rectangle/jp">四角形</a>: 2つの対点から四角形を描きます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Polygon.png" class="image"><img alt="Draft Polygon.png" src="Draft_Polygon.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Polygon/jp" title="Draft Polygon/jp">多角形</a>: 中心と半径から正多角形を描きます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_BSpline.png" class="image"><img alt="Draft BSpline.png" src="Draft_BSpline.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_BSpline/jp" title="Draft BSpline/jp">B-スプライン</a>: 点列からB-スプラインを描きます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Text.png" class="image"><img alt="Draft Text.png" src="Draft_Text.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Text/jp" title="Draft Text/jp">テキスト</a>: 複数行のテキストの注釈を描きます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Dimension.png" class="image"><img alt="Draft Dimension.png" src="Draft_Dimension.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Dimension/jp" title="Draft Dimension/jp">寸法</a>: 寸法の注釈を描きます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Point.png" class="image"><img alt="Draft Point.png" src="32px-Draft_Point.png" width="32" height="32" srcset="/wiki/images/thumb/c/c5/Draft_Point.png/48px-Draft_Point.png 1.5x, /wiki/images/c/c5/Draft_Point.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Point/jp" title="Draft Point/jp"></a>: 点オブジェクトを挿入します</li></ul>
<h3><span class="mw-headline" id=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E5.A4.89.E6.9B.B4">オブジェクトの変更</span></h3>
<p>既存のオブジェクトを変更するためのツールです。これらのツールは選択したオブジェクトに対して動作します。もしオブジェクトを選択していない場合にはオブジェクトを選択するように促します。
</p>
<ul><li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Move.png" class="image"><img alt="Draft Move.png" src="Draft_Move.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Move/jp" title="Draft Move/jp">移動</a>: オブジェクト(複数可)をある位置から別の位置へ移動します</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Rotate.png" class="image"><img alt="Draft Rotate.png" src="Draft_Rotate.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Rotate/jp" title="Draft Rotate/jp">回転</a>: 開始角から終了角へのオブジェクト(複数可)を回転します</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Offset.png" class="image"><img alt="Draft Offset.png" src="Draft_Offset.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Offset/jp" title="Draft Offset/jp">オフセット</a>: オブジェクトの線分を一定の距離だけ移動します</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Upgrade.png" class="image"><img alt="Draft Upgrade.png" src="Draft_Upgrade.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Upgrade/jp" title="Draft Upgrade/jp">アップグレード</a>: オブジェクトを結合し、1階層上のオブジェクトにします</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Downgrade.png" class="image"><img alt="Draft Downgrade.png" src="Draft_Downgrade.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Downgrade/jp" title="Draft Downgrade/jp">ダウングレード</a>: オブジェクトを解体し、1階層下のオブジェクトにします</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Trimex.png" class="image"><img alt="Draft Trimex.png" src="Draft_Trimex.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Trimex/jp" title="Draft Trimex/jp">トリム/延長</a>: オブジェクトをトリムまたは延長します</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Scale.png" class="image"><img alt="Draft Scale.png" src="Draft_Scale.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Scale/jp" title="Draft Scale/jp">スケール</a>: 選択したオブジェクト(複数可)を基点を中心にスケールします</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Edit.png" class="image"><img alt="Draft Edit.png" src="Draft_Edit.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Edit/jp" title="Draft Edit/jp">編集</a>: 選択したオブジェクトを編集します</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_PutOnSheet.png" class="image"><img alt="Draft PutOnSheet.png" src="Draft_PutOnSheet.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Drawing/jp" title="Draft Drawing/jp">ドローイング</a>: 選択されたオブジェクトを<a href="https://www.freecadweb.org/wiki/index.php?title=Drawing_Module/jp" title="Drawing Module/jp">ドローイングシート</a>に書き込みます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Shape2DView.png" class="image"><img alt="Draft Shape2DView.png" src="Draft_Shape2DView.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Shape2DView/jp" title="Draft Shape2DView/jp">2Dビュー成形</a>: 別の3Dオブジェクトの平面化2Dビューであるような2Dオブジェクトを作成します</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_WireToBSpline.png" class="image"><img alt="Draft WireToBSpline.png" src="32px-Draft_WireToBSpline.png" width="32" height="32" srcset="/wiki/images/thumb/a/a4/Draft_WireToBSpline.png/48px-Draft_WireToBSpline.png 1.5x, /wiki/images/a/a4/Draft_WireToBSpline.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_WireToBSpline/jp" title="Draft WireToBSpline/jp">ワイヤーからB-スプラインへ</a>: ワイヤーからB-スプラインへの変換、またその逆変換を行います</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_AddPoint.png" class="image"><img alt="Draft AddPoint.png" src="32px-Draft_AddPoint.png" width="32" height="32" srcset="/wiki/images/thumb/9/9e/Draft_AddPoint.png/48px-Draft_AddPoint.png 1.5x, /wiki/images/9/9e/Draft_AddPoint.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_AddPoint/jp" title="Draft AddPoint/jp">点の追加</a>: ワイヤーまたはB-スプラインへ点を追加します</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_DelPoint.png" class="image"><img alt="Draft DelPoint.png" src="32px-Draft_DelPoint.png" width="32" height="32" srcset="/wiki/images/thumb/1/18/Draft_DelPoint.png/48px-Draft_DelPoint.png 1.5x, /wiki/images/1/18/Draft_DelPoint.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_DelPoint/jp" title="Draft DelPoint/jp">点の削除</a>: ワイヤーまたはB-スプラインから点を削除します</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Draft2Sketch.png" class="image"><img alt="Draft Draft2Sketch.png" src="32px-Draft_Draft2Sketch.png" width="32" height="32" srcset="/wiki/images/thumb/b/b2/Draft_Draft2Sketch.png/48px-Draft_Draft2Sketch.png 1.5x, /wiki/images/b/b2/Draft_Draft2Sketch.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Draft2Sketch/jp" title="Draft Draft2Sketch/jp">ドラフトからスケッチへ</a>: ドラフトオブジェクトからスケッチへの変換、またその逆変換を行います</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Array.png" class="image"><img alt="Draft Array.png" src="32px-Draft_Array.png" width="32" height="32" srcset="/wiki/images/thumb/c/c8/Draft_Array.png/48px-Draft_Array.png 1.5x, /wiki/images/c/c8/Draft_Array.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Array/jp" title="Draft Array/jp">配列</a>: 選択されたオブジェクトを円形または矩形に並べた配列を作成します</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Clone.png" class="image"><img alt="Draft Clone.png" src="32px-Draft_Clone.png" width="32" height="32" srcset="/wiki/images/thumb/3/39/Draft_Clone.png/48px-Draft_Clone.png 1.5x, /wiki/images/3/39/Draft_Clone.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Clone/jp" title="Draft Clone/jp">複製</a>: 選択されたオブジェクトを複製します</li></ul>
<h3><span class="mw-headline" id=".E3.83.A6.E3.83.BC.E3.83.86.E3.82.A3.E3.83.AA.E3.83.86.E3.82.A3.E3.83.BC.E3.83.84.E3.83.BC.E3.83.AB">ユーティリティーツール</span></h3>
<p>右クリックのコンテキストメニューから利用可能な追加ツールです。選択されているオブジェクトに依存して変わります。
</p>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_SelectPlane.png" class="image"><img alt="Draft SelectPlane.png" src="32px-Draft_SelectPlane.png" width="32" height="32" srcset="/wiki/images/thumb/a/aa/Draft_SelectPlane.png/48px-Draft_SelectPlane.png 1.5x, /wiki/images/a/aa/Draft_SelectPlane.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_SelectPlane/jp" title="Draft SelectPlane/jp">作業平面の設定</a>: 標準ビューまたは選択された面から作業平面を設定します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_FinishLine.png" class="image"><img alt="Draft FinishLine.png" src="32px-Draft_FinishLine.png" width="32" height="32" srcset="/wiki/images/thumb/c/c1/Draft_FinishLine.png/48px-Draft_FinishLine.png 1.5x, /wiki/images/c/c1/Draft_FinishLine.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_FinishLine/jp" title="Draft FinishLine/jp">ラインを終了</a>: ワイヤー、B-スプラインの描画をラインが閉じないで終了します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_CloseLine.png" class="image"><img alt="Draft CloseLine.png" src="32px-Draft_CloseLine.png" width="32" height="32" srcset="/wiki/images/thumb/d/dc/Draft_CloseLine.png/48px-Draft_CloseLine.png 1.5x, /wiki/images/d/dc/Draft_CloseLine.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_CloseLine/jp" title="Draft CloseLine/jp">ラインを閉じる</a>: ワイヤー、B-スプラインの描画をラインを閉じて終了します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_UndoLine.png" class="image"><img alt="Draft UndoLine.png" src="32px-Draft_UndoLine.png" width="32" height="32" srcset="/wiki/images/thumb/d/dd/Draft_UndoLine.png/48px-Draft_UndoLine.png 1.5x, /wiki/images/d/dd/Draft_UndoLine.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_UndoLine/jp" title="Draft UndoLine/jp">ラインをアンドゥ</a>: ラインの最後の区間をアンドゥします</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_ToggleConstructionMode.png" class="image"><img alt="Draft ToggleConstructionMode.png" src="32px-Draft_ToggleConstructionMode.png" width="32" height="32" srcset="/wiki/images/thumb/7/76/Draft_ToggleConstructionMode.png/48px-Draft_ToggleConstructionMode.png 1.5x, /wiki/images/7/76/Draft_ToggleConstructionMode.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_ToggleConstructionMode/jp" title="Draft ToggleConstructionMode/jp">作成モードの切り替え</a>: ドラフト作成モードのオン/オフを切り替えます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_ToggleContinueMode.png" class="image"><img alt="Draft ToggleContinueMode.png" src="Draft_ToggleContinueMode.png" width="32" height="32" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_ToggleContinueMode/jp" title="Draft ToggleContinueMode/jp">継続モードの切り替え</a>: ドラフト継続モードのオン/オフを切り替えます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_ApplyStyle.png" class="image"><img alt="Draft ApplyStyle.png" src="32px-Draft_ApplyStyle.png" width="32" height="32" srcset="/wiki/images/thumb/1/16/Draft_ApplyStyle.png/48px-Draft_ApplyStyle.png 1.5x, /wiki/images/1/16/Draft_ApplyStyle.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Apply/jp" title="Draft Apply/jp">スタイルを適用</a>: 選択されたオブジェクトに現在のスタイルと色を適用します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_ToggleDisplayMode.png" class="image"><img alt="Draft ToggleDisplayMode.png" src="32px-Draft_ToggleDisplayMode.png" width="32" height="32" srcset="/wiki/images/thumb/0/00/Draft_ToggleDisplayMode.png/48px-Draft_ToggleDisplayMode.png 1.5x, /wiki/images/0/00/Draft_ToggleDisplayMode.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_ToggleDisplayMode/jp" title="Draft ToggleDisplayMode/jp">表示モードの切り替え</a>: 選択されたオブジェクトの表示モードを"フラットライン"または"ワイヤーフレーム"に切り替えます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_AddToGroup.png" class="image"><img alt="Draft AddToGroup.png" src="32px-Draft_AddToGroup.png" width="32" height="32" srcset="/wiki/images/thumb/5/56/Draft_AddToGroup.png/48px-Draft_AddToGroup.png 1.5x, /wiki/images/5/56/Draft_AddToGroup.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_AddToGroup/jp" title="Draft AddToGroup/jp">グループに追加</a>: ただちに選択されたオブジェクトを既存のグループに追加します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_SelectGroup.png" class="image"><img alt="Draft SelectGroup.png" src="32px-Draft_SelectGroup.png" width="32" height="32" srcset="/wiki/images/thumb/d/d9/Draft_SelectGroup.png/48px-Draft_SelectGroup.png 1.5x, /wiki/images/d/d9/Draft_SelectGroup.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_SelectGroup/jp" title="Draft SelectGroup/jp">グループの中身を選択</a>: 選択されたグループの中身を選択します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_ToggleSnap.png" class="image"><img alt="Draft ToggleSnap.png" src="32px-Draft_ToggleSnap.png" width="32" height="32" srcset="/wiki/images/thumb/2/25/Draft_ToggleSnap.png/48px-Draft_ToggleSnap.png 1.5x, /wiki/images/2/25/Draft_ToggleSnap.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_ToggleSnap/jp" title="Draft ToggleSnap/jp">スナップの切り替え</a>: <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Snap/jp" title="Draft Snap/jp">オブジェクトのスナップ</a>のオン/オフを切り替えます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_ToggleGrid.png" class="image"><img alt="Draft ToggleGrid.png" src="32px-Draft_ToggleGrid.png" width="32" height="32" srcset="/wiki/images/thumb/f/fc/Draft_ToggleGrid.png/48px-Draft_ToggleGrid.png 1.5x, /wiki/images/f/fc/Draft_ToggleGrid.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_ToggleGrid/jp" title="Draft ToggleGrid/jp">グリッドの切り替え</a>: グリッドのオン/オフを切り替えます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_ShowSnapBar.png" class="image"><img alt="Draft ShowSnapBar.png" src="32px-Draft_ShowSnapBar.png" width="32" height="32" srcset="/wiki/images/thumb/c/c3/Draft_ShowSnapBar.png/48px-Draft_ShowSnapBar.png 1.5x, /wiki/images/c/c3/Draft_ShowSnapBar.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_ShowSnapBar/jp" title="Draft ShowSnapBar/jp">スナップバーを表示</a>: <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Snap/jp" title="Draft Snap/jp">スナップ</a>ツールバーの表示/非表示を切り替えます</li></ul>
<p></strike>
</p>
<h2><span class="mw-headline" id="3D.E3.83.91.E3.83.BC.E3.83.84.E3.81.AE.E4.BD.9C.E6.88.90"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Workbench_Part.png" class="image"><img alt="Workbench Part.png" src="Workbench_Part.png" width="32" height="32" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Module/jp" title="Part Module/jp">3Dパーツの作成</a></span></h2>
<h3><span class="mw-headline" id=".E3.83.97.E3.83.AA.E3.83.9F.E3.83.86.E3.82.A3.E3.83.96">プリミティブ</span></h3>
<p>プリミティブオブジェクトを作成するためのツールです。
</p>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Box.png" class="image"><img alt="Part Box.png" src="32px-Part_Box.png" width="32" height="32" srcset="/wiki/images/thumb/a/a5/Part_Box.png/48px-Part_Box.png 1.5x, /wiki/images/a/a5/Part_Box.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Box/jp" title="Part Box/jp">ボックス</a>: 寸法を指定してボックスを描きます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Cone.png" class="image"><img alt="Part Cone.png" src="32px-Part_Cone.png" width="32" height="32" srcset="/wiki/images/thumb/1/13/Part_Cone.png/48px-Part_Cone.png 1.5x, /wiki/images/1/13/Part_Cone.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Cone/jp" title="Part Cone/jp">円錐</a>: 寸法を指定して円錐を描きます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Cylinder.png" class="image"><img alt="Part Cylinder.png" src="32px-Part_Cylinder.png" width="32" height="32" srcset="/wiki/images/thumb/d/d4/Part_Cylinder.png/48px-Part_Cylinder.png 1.5x, /wiki/images/d/d4/Part_Cylinder.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Cylinder/jp" title="Part Cylinder/jp">円筒</a>: 寸法を指定して円筒を描きます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Sphere.png" class="image"><img alt="Part Sphere.png" src="32px-Part_Sphere.png" width="32" height="32" srcset="/wiki/images/thumb/4/4b/Part_Sphere.png/48px-Part_Sphere.png 1.5x, /wiki/images/4/4b/Part_Sphere.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Sphere/jp" title="Part Sphere/jp"></a>: 寸法を指定して球を描きます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Torus.png" class="image"><img alt="Part Torus.png" src="32px-Part_Torus.png" width="32" height="32" srcset="/wiki/images/thumb/8/8b/Part_Torus.png/48px-Part_Torus.png 1.5x, /wiki/images/8/8b/Part_Torus.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Torus/jp" title="Part Torus/jp">トーラス</a>: 寸法を指定してトーラス(円環)を描きます</li></ul>
<h3><span class="mw-headline" id=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E5.A4.89.E6.9B.B4_2">オブジェクトの変更</span></h3>
<p>既存のオブジェクトを変更するためのツールです。変更するオブジェクトを選択して使用します。
</p>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Booleans.png" class="image"><img alt="Part Booleans.png" src="32px-Part_Booleans.png" width="32" height="32" srcset="/wiki/images/thumb/8/89/Part_Booleans.png/48px-Part_Booleans.png 1.5x, /wiki/images/8/89/Part_Booleans.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Booleans/jp" title="Part Booleans/jp">ブーリアン</a>: オブジェクトのブーリアン演算を行います</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Fuse.png" class="image"><img alt="Part Fuse.png" src="32px-Part_Fuse.png" width="32" height="32" srcset="/wiki/images/thumb/c/c6/Part_Fuse.png/48px-Part_Fuse.png 1.5x, /wiki/images/c/c6/Part_Fuse.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Fuse/jp" title="Part Fuse/jp">結合</a>: 二つのオブジェクトを結合します(和集合)</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Common.png" class="image"><img alt="Part Common.png" src="32px-Part_Common.png" width="32" height="32" srcset="/wiki/images/thumb/9/9a/Part_Common.png/48px-Part_Common.png 1.5x, /wiki/images/9/9a/Part_Common.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Common/jp" title="Part Common/jp">共通部</a>: 二つのオブジェクトの共通部分を抽出します(共通集合)</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Cut.png" class="image"><img alt="Part Cut.png" src="32px-Part_Cut.png" width="32" height="32" srcset="/wiki/images/thumb/4/4a/Part_Cut.png/48px-Part_Cut.png 1.5x, /wiki/images/4/4a/Part_Cut.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Cut/jp" title="Part Cut/jp">切り取り</a>: オブジェクトを別のオブジェクトから切り取ります(減算)</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Extrude.png" class="image"><img alt="Part Extrude.png" src="32px-Part_Extrude.png" width="32" height="32" srcset="/wiki/images/thumb/d/df/Part_Extrude.png/48px-Part_Extrude.png 1.5x, /wiki/images/d/df/Part_Extrude.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Extrude/jp" title="Part Extrude/jp">押し出し</a>: オブジェクトの平面を押し出します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Fillet.png" class="image"><img alt="Part Fillet.png" src="32px-Part_Fillet.png" width="32" height="32" srcset="/wiki/images/thumb/4/4a/Part_Fillet.png/48px-Part_Fillet.png 1.5x, /wiki/images/4/4a/Part_Fillet.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Fillet/jp" title="Part Fillet/jp">フィレット</a>: オブジェクトのエッジをフィレット処理(丸め処理)します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Revolve.png" class="image"><img alt="Part Revolve.png" src="32px-Part_Revolve.png" width="32" height="32" srcset="/wiki/images/thumb/1/12/Part_Revolve.png/48px-Part_Revolve.png 1.5x, /wiki/images/1/12/Part_Revolve.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Revolve/jp" title="Part Revolve/jp">回転体</a>: 別のオブジェクトを軸周りに回転させてオブジェクトを作成します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Section.png" class="image"><img alt="Part Section.png" src="32px-Part_Section.png" width="32" height="32" srcset="/wiki/images/thumb/a/ab/Part_Section.png/48px-Part_Section.png 1.5x, /wiki/images/a/ab/Part_Section.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Section/jp" title="Part Section/jp">分割</a>: 分割面をオブジェクトに交差させることで切断面を作成します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Chamfer.png" class="image"><img alt="Part Chamfer.png" src="32px-Part_Chamfer.png" width="32" height="32" srcset="/wiki/images/thumb/8/87/Part_Chamfer.png/48px-Part_Chamfer.png 1.5x, /wiki/images/8/87/Part_Chamfer.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Chamfer/jp" title="Part Chamfer/jp">面取り</a>: オブジェクトのエッジを面取りします</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Mirror.png" class="image"><img alt="Part Mirror.png" src="32px-Part_Mirror.png" width="32" height="32" srcset="/wiki/images/thumb/9/93/Part_Mirror.png/48px-Part_Mirror.png 1.5x, /wiki/images/9/93/Part_Mirror.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Mirror/jp" title="Part Mirror/jp">ミラー</a>: 指定された鏡面に対して選択されたオブジェクトの鏡像を作成します</li></ul>
<p><br />
</p>
<h2><span class="mw-headline" id="2D.E5.9B.B3.E9.9D.A2.E3.81.B8.E3.81.AE.E3.82.A8.E3.82.AF.E3.82.B9.E3.83.9D.E3.83.BC.E3.83.88"><a href="https://www.freecadweb.org/wiki/index.php?title=Drawing_Module/jp" title="Drawing Module/jp">2D図面へのエクスポート</a></span></h2>
<div id="itsfree" style="text-align:center;color:black;background:#FDE0A8;margin:1em 7em;padding:0.5em 2em;border:2px solid #FF5706;"><br />This template is now obsolete and is directly include in the original page<br /><br /></div>
<p><strike>
2D図面を作成、設定、エキスポートするためのツールです。
</p>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Drawing_New.png" class="image"><img alt="Drawing New.png" src="32px-Drawing_New.png" width="32" height="32" srcset="/wiki/images/thumb/d/dc/Drawing_New.png/48px-Drawing_New.png 1.5x, /wiki/images/d/dc/Drawing_New.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Drawing_Open_SVG/jp" title="Drawing Open SVG/jp">スケーラブルベクターグラフィックを開く</a>: SVGファイルとして保存されている図面を開きます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Drawing_Landscape_A3.png" class="image"><img alt="Drawing Landscape A3.png" src="32px-Drawing_Landscape_A3.png" width="32" height="32" srcset="/wiki/images/thumb/2/27/Drawing_Landscape_A3.png/48px-Drawing_Landscape_A3.png 1.5x, /wiki/images/2/27/Drawing_Landscape_A3.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Drawing_Landscape_A3/jp" title="Drawing Landscape A3/jp">A3図面の新規作成</a>: FreeCADのデフォルトのA3テンプレートから新しい図面を作成します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Drawing_View.png" class="image"><img alt="Drawing View.png" src="32px-Drawing_View.png" width="32" height="32" srcset="/wiki/images/thumb/0/03/Drawing_View.png/48px-Drawing_View.png 1.5x, /wiki/images/0/03/Drawing_View.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Drawing_View/jp" title="Drawing View/jp">ビューの挿入</a>: アクティブな図面上に選択されたオブジェクトのビューを挿入します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Drawing_Save.png" class="image"><img alt="Drawing Save.png" src="32px-Drawing_Save.png" width="32" height="32" srcset="/wiki/images/4/43/Drawing_Save.png 1.5x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Drawing_Save/jp" title="Drawing Save/jp">図面の保存</a>: 現在の図面をSVGファイルとして保存します</li></ul>
<p></strike>
</p>
<h2><span class="mw-headline" id=".E5.A4.96.E9.83.A8.E3.83.AC.E3.83.B3.E3.83.80.E3.83.A9.E3.83.BC.E3.81.B8.E3.81.AE.E3.82.A8.E3.82.AF.E3.82.B9.E3.83.9D.E3.83.BC.E3.83.88"><a href="https://www.freecadweb.org/wiki/index.php?title=Raytracing_Module/jp" title="Raytracing Module/jp">外部レンダラーへのエクスポート</a></span></h2>
<p>作成した3D作品を外部のレンダラーにエクスポートするためのツールです。
</p>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Raytracing_New.png" class="image"><img alt="Raytracing New.png" src="32px-Raytracing_New.png" width="32" height="32" srcset="/wiki/images/thumb/5/59/Raytracing_New.png/48px-Raytracing_New.png 1.5x, /wiki/images/5/59/Raytracing_New.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Raytracing_New/jp&amp;action=edit&amp;redlink=1" class="new" title="Raytracing New/jp (page does not exist)">POV-Rayオブジェクトの新規作成</a>: ドキュメントに新しいPOV-Rayプロジェクトを挿入します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Raytracing_Export.png" class="image"><img alt="Raytracing Export.png" src="32px-Raytracing_Export.png" width="32" height="32" srcset="/wiki/images/thumb/0/00/Raytracing_Export.png/48px-Raytracing_Export.png 1.5x, /wiki/images/0/00/Raytracing_Export.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Raytracing_Export/jp&amp;action=edit&amp;redlink=1" class="new" title="Raytracing Export/jp (page does not exist)">ビューをPOV-Rayにエクスポート</a>: アクティブな3Dビューのカメラ位置と内容全てをPOV-Rayファイルに書き込みます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Raytracing_Camera.png" class="image"><img alt="Raytracing Camera.png" src="32px-Raytracing_Camera.png" width="32" height="32" srcset="/wiki/images/thumb/d/d0/Raytracing_Camera.png/48px-Raytracing_Camera.png 1.5x, /wiki/images/d/d0/Raytracing_Camera.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Raytracing_Camera/jp&amp;action=edit&amp;redlink=1" class="new" title="Raytracing Camera/jp (page does not exist)">カメラをPOV-Rayにエクスポート</a>: アクティブな3Dビューのカメラ位置をPOV-Rayフォーマットでファイルに書き込みます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Raytracing_Part.png" class="image"><img alt="Raytracing Part.png" src="32px-Raytracing_Part.png" width="32" height="32" srcset="/wiki/images/thumb/c/c7/Raytracing_Part.png/48px-Raytracing_Part.png 1.5x, /wiki/images/c/c7/Raytracing_Part.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Raytracing_Part/jp&amp;action=edit&amp;redlink=1" class="new" title="Raytracing Part/jp (page does not exist)">部品をPOV-Rayにエクスポート</a>: 選択された部品オブジェクトをPOV-Rayファイルとして書き込みます</li></ul>
<p><br />
</p>
<h2><span class="mw-headline" id=".E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88"><a href="https://www.freecadweb.org/wiki/index.php?title=Scripting/jp" class="mw-redirect" title="Scripting/jp">スクリプト</a></span></h2>
<p>最後はFreeCADの最も強力な機能の一つ、<a href="https://www.freecadweb.org/wiki/index.php?title=Scripting/jp" class="mw-redirect" title="Scripting/jp">スクリプト</a>環境です 。統合されたPythonコンソールからあるいは他の外部のPythonスクリプトからでも、FreeCADのほとんど全ての機能へアクセスできます。ジオメトリの作成や修正、3Dシーンでのオブジェクトの表示方法の変更、FreeCADインターフェースへのアクセスや変更が可能です。Pythonスクリプトはまた<a href="https://www.freecadweb.org/wiki/index.php?title=Macros/jp" title="Macros/jp">マクロ</a>としても使用され、カスタムコマンドを簡単に作成することができます。
</p>
<p><br />
</p>
<h1><span class="mw-headline" id="FreeCAD.E3.81.A7.E3.81.AE.E4.BD.9C.E6.A5.AD">FreeCADでの作業</span></h1>
<h2><span class="mw-headline" id="3.E6.AC.A1.E5.85.83.E7.A9.BA.E9.96.93.E3.81.A7.E3.81.AE.E6.93.8D.E4.BD.9C_2">3次元空間での操作</span></h2>
<p>FreeCAD の<b>マウスモデル</b>は3D空間を視覚的に移動し、表示されたオブジェクトを操作するために使用されるコマンドから構成されます。FreeCADには現在、3つの異なるマウス操作方法があります。デフォルトの操作スタイルは"CAD操作モード"と呼ばれています。これはとてもシンプルかつ実用的ですがFreeCADにはこの他にInventorとBlenderの操作方法にならった二つの別の操作スタイルがあります。
</p>
<h2><span class="mw-headline" id=".E6.93.8D.E4.BD.9C">操作</span></h2>
<p>オブジェクトの操作は全てのワークベンチで共通です。選択された各操作スタイルに従って下記のマウス操作でオブジェクトの位置と表示をコントロールすることが可能です。
</p><p>操作スタイルの変更には二つのやり方があります:
</p>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=Preferences_Editor/jp" title="Preferences Editor/jp">ユーザー環境設定</a>内のDisplayセクションの<i>3D View</i>タブで変更</li>
<li> 3Dビュー領域の何もない場所で右クリックし、コンテキストメニューで<i>Navigation style</i>を選択</li></ul>
<h3><span class="mw-headline" id="CAD.E6.93.8D.E4.BD.9C.E3.83.A2.E3.83.BC.E3.83.89.EF.BC.88.E3.83.87.E3.83.95.E3.82.A9.E3.83.AB.E3.83.88.EF.BC.89">CAD操作モードデフォルト</span></h3>
<p>デフォルトの操作スタイルでユーザーは簡単に表示をコントロールすることができます。また複数選択時以外はキーボードでのキー操作は必要ありません。
</p>
<table border="1">
<tr>
<th align="center" width="25%">選択
</th>
<th align="center" width="25%">平行移動
</th>
<th align="center" width="25%">拡大縮小
</th>
<th align="center" width="25%">回転表示
</th></tr>
<tr align="center">
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Hand_cursor.png" class="image"><img alt="Hand cursor.png" src="Hand_cursor.png" width="24" height="24" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Pan_cursor.png" class="image"><img alt="Pan cursor.png" src="Pan_cursor.png" width="16" height="16" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Zoom_cursor.png" class="image"><img alt="Zoom cursor.png" src="Zoom_cursor.png" width="16" height="16" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Rotate_cursor.png" class="image"><img alt="Rotate cursor.png" src="Rotate_cursor.png" width="16" height="16" /></a>
</td></tr>
<tr align="center">
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Select-mouse.svg" class="image" title="to Select"><img alt="to Select" src="Select-mouse.svg" width="70" height="100" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Pan-mouse.svg" class="image" title="to Pan"><img alt="to Pan" src="Pan-mouse.svg" width="70" height="100" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Zoom-mouse.svg" class="image" title="to Zoom in or out"><img alt="to Zoom in or out" src="Zoom-mouse.svg" width="70" height="100" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Rotate-mouse.svg" class="image" title="to Rotate view"><img alt="to Rotate view" src="Rotate-mouse.svg" width="70" height="100" /></a>
</td></tr>
<tr valign="top">
<td>選択したいオブジェクトの上で左マウスボタンを押してください。Ctrlを押したまま操作すると複数のオブジェクトを選択できます。
</td>
<td>マウス中央ボタンを押して動かしてオブジェクトを平行移動させます。
</td>
<td>拡大縮小にはマウスホイールを使用してください。
</td>
<td>まず中央マウスボタンを押し、そのまま表示されているオブジェクトの任意の点で左ボタンをクリックして好きな方向にドラッグします。こうすると中心の周りを回転する球のように回転が行われます。ドラッグを止める前にボタンを離すとオブジェクトは<a href="https://www.freecadweb.org/wiki/index.php?title=Spinning/jp" title="Spinning/jp">回転</a>し続けます(有効になっている場合)。オブジェクト上の任意の点でマウスの中央ボタンをダブルクリックするとその点が回転、拡大縮小の原点に設定されます。
</td></tr></table>
<p><br />
</p>
<h3><span class="mw-headline" id="Inventor.E6.93.8D.E4.BD.9C.E3.83.A2.E3.83.BC.E3.83.89">Inventor操作モード</span></h3>
<p>Inventor操作モードではマウスだけでの選択ができません。オブジェクトを選択するためには<span style="background: #DDDDDD; border: 1px solid #888888; padding: 0px 5px 1px 5px;">CTRL</span>キーを押しておく必要があります。
</p>
<table border="1">
<tr>
<th align="center" width="25%">選択
</th>
<th align="center" width="25%">平行移動
</th>
<th align="center" width="25%">拡大縮小
</th>
<th align="center" width="25%">回転表示
</th></tr>
<tr align="center">
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Hand_cursor.png" class="image"><img alt="Hand cursor.png" src="Hand_cursor.png" width="24" height="24" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Pan_cursor.png" class="image"><img alt="Pan cursor.png" src="Pan_cursor.png" width="16" height="16" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Zoom_cursor.png" class="image"><img alt="Zoom cursor.png" src="Zoom_cursor.png" width="16" height="16" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Rotate_cursor.png" class="image"><img alt="Rotate cursor.png" src="Rotate_cursor.png" width="16" height="16" /></a>
</td></tr>
<tr align="center">
<td><span style="background: #DDDDDD; border: 1px solid #888888; padding: 0px 5px 1px 5px;">ctrl</span> +<a href="https://www.freecadweb.org/wiki/index.php?title=File:Select-mouse.svg" class="image" title="to Select"><img alt="to Select" src="Select-mouse.svg" width="70" height="100" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Pan-mouse.svg" class="image" title="to Pan"><img alt="to Pan" src="Pan-mouse.svg" width="70" height="100" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Zoom-mouse.svg" class="image" title="to Zoom in or out"><img alt="to Zoom in or out" src="Zoom-mouse.svg" width="70" height="100" /></a> or <a href="https://www.freecadweb.org/wiki/index.php?title=File:Rotate-mouse.svg" class="image" title="to Zoom in or out"><img alt="to Zoom in or out" src="Rotate-mouse.svg" width="70" height="100" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Select-mouse.svg" class="image" title="to Rotate"><img alt="to Rotate" src="Select-mouse.svg" width="70" height="100" /></a>
</td></tr>
<tr valign="top">
<td>Ctrlを押したまま選択したいオブジェクトの上で左マウスボタンをクリックしてください
</td>
<td>左マウスボタンをクリックしてオブジェクトの周りを動かしてください
</td>
<td>拡大縮小にはマウスホイールを使うか、中央マウスボタンを押したまま左マウスボタンをクリックしてください。
</td>
<td>回転には左マウスボタンをクリックしてからドラッグしてください。
</td></tr></table>
<p><br />
</p>
<h3><span class="mw-headline" id="Blender.E6.93.8D.E4.BD.9C.E3.83.A2.E3.83.BC.E3.83.89">Blender操作モード</span></h3>
<p>Blender操作モードではマウスだけでの平行移動ができません。表示を平行移動するためには<span style="background: #DDDDDD; border: 1px solid #888888; padding: 0px 5px 1px 5px;">SHIFT</span>を押しておく必要があります。
</p>
<table border="1">
<tr>
<th align="center" width="25%">選択
</th>
<th align="center" width="25%">平行移動
</th>
<th align="center" width="25%">拡大縮小
</th>
<th align="center" width="25%">回転表示
</th></tr>
<tr align="center">
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Hand_cursor.png" class="image"><img alt="Hand cursor.png" src="Hand_cursor.png" width="24" height="24" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Pan_cursor.png" class="image"><img alt="Pan cursor.png" src="Pan_cursor.png" width="16" height="16" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Zoom_cursor.png" class="image"><img alt="Zoom cursor.png" src="Zoom_cursor.png" width="16" height="16" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Rotate_cursor.png" class="image"><img alt="Rotate cursor.png" src="Rotate_cursor.png" width="16" height="16" /></a>
</td></tr>
<tr align="center">
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Select-mouse.svg" class="image" title="to Select"><img alt="to Select" src="Select-mouse.svg" width="70" height="100" /></a>
</td>
<td><span style="background: #DDDDDD; border: 1px solid #888888; padding: 0px 5px 1px 5px;">shift</span>+<a href="https://www.freecadweb.org/wiki/index.php?title=File:Pan-mouse.svg" class="image" title="to Pan"><img alt="to Pan" src="Pan-mouse.svg" width="70" height="100" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Zoom-mouse.svg" class="image" title="to Zoom in or out"><img alt="to Zoom in or out" src="Zoom-mouse.svg" width="70" height="100" /></a>
</td>
<td><a href="https://www.freecadweb.org/wiki/index.php?title=File:Pan-mouse.svg" class="image" title="to Rotate"><img alt="to Rotate" src="Pan-mouse.svg" width="70" height="100" /></a>
</td></tr>
<tr valign="top">
<td>選択したいオブジェクトの上で左マウスボタンをクリックしてください。
</td>
<td>Shiftを押したまま中央マウスボタンをクリックしてオブジェクトの周りを動かしてください。
</td>
<td>拡大縮小にはマウスホイールを使ってください。
</td>
<td>中央マウスボタンをクリックしてドラッグしてください。
</td></tr></table>
<p><br />
</p>
<h2><span class="mw-headline" id=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E9.81.B8.E6.8A.9E">オブジェクトの選択</span></h2>
<p>左マウスボタンで3Dビュー上のオブジェクトをクリックするか、またはツリービュー上のオブジェクトを選択することでオブジェクトを選択することができます。また選択前のマウスが上に乗った段階でオブジェクトをハイライト表示して情報を表示する<a href="https://www.freecadweb.org/wiki/index.php?title=Preselection/jp&amp;action=edit&amp;redlink=1" class="new" title="Preselection/jp (page does not exist)">プリ選択</a>機能もあります。もしこの機能が不要だと感じたり、遅いマシン上で作業している場合はプリファレンスでプリ選択をオフにすることができます。
</p>
<h2><span class="mw-headline" id=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E6.93.8D.E4.BD.9C">オブジェクトの操作</span></h2>
<p>FreeCADはオブジェクトやその表示を変更するための<a href="https://www.freecadweb.org/wiki/index.php?title=Manipulator/jp&amp;action=edit&amp;redlink=1" class="new" title="Manipulator/jp (page does not exist)">操作</a>を提供します。簡単な例としては<a href="https://www.freecadweb.org/wiki/index.php?title=Clipping_plane/jp&amp;action=edit&amp;redlink=1" class="new" title="Clipping plane/jp (page does not exist)">平面のクリッピング</a> が挙げられ、これは<i>View→Clipping Plane</i>から開始できます。平面のクリッピングを開始するとわかりやすく七つの小さな直方体でできた取手がついたオブジェクトが表示されます。三つの座標軸の端点と、平面法線軸の中央にそれぞれ一つずつあります。それほどわかりやすくありませんがさらに四つの部品があります。平面それ自体と三軸の細い部分のオブジェクトです。
</p>
<dl><dt>拡大縮小</dt>
<dd> オブジェクトを拡大縮小するには軸の端点にある直方体の取手を左マウスボタンでクリックして前後に引っ張ります。オブジェクトに依存して取手は独立して動作したり、同調して動作したりします。</dd>
<dt>平面外への移動</dt>
<dd> オブジェクトを法線ベクトルに沿って平行移動するには軸中央の長い直方体を左マウスボタンでクリックして引っ張ります。平面のクリッピングでは法線ベクトルに沿った取手は一つだけ表示されます。</dd>
<dt>平面内の移動</dt>
<dd> クリッピング平面の中心を動かすには平面オブジェクトをクリックし、動かしたい方向に引っ張ります。</dd>
<dt>回転</dt>
<dd> 軸の細い部分をクリックし、回転方向に引っ張ります。</dd></dl>
<h2><span class="mw-headline" id=".E3.83.8F.E3.83.BC.E3.83.89.E3.82.A6.E3.82.A7.E3.82.A2.E3.81.AE.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88">ハードウェアのサポート</span></h2>
<p>FreeCADはいくつかの<a href="https://www.freecadweb.org/wiki/index.php?title=3D_input_devices/jp&amp;action=edit&amp;redlink=1" class="new" title="3D input devices/jp (page does not exist)">3D入力デバイス</a>をサポートしています。
</p>
<p><br />
</p>
<h2><span class="mw-headline" id="FreeCAD.E3.81.AE.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88">FreeCADのドキュメント</span></h2>
<div class="floatleft"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Screenshot_treeview.jpg" class="image"><img alt="Screenshot treeview.jpg" src="Screenshot_treeview.jpg" width="217" height="254" /></a></div>
<p>FreeCADドキュメントには作成したシーンの全てのオブジェクトが保持されます。そこには全てのワークベンチで作成したグループ、オブジェクトが含まれます。従ってワークベンチを切り替えた場合でも同じドキュメントで作業を続けることができます。作業物を保存するとドキュメントはディスクに保存されます。またFreeCADでは複数のドキュメントを同時に開いたり、同じドキュメントのビューを複数開くことが可能です。
</p><p>ドキュメント内ではオブジェクトをグループに移動することが可能です。またオブジェクトには固有の名前が付けられます。グループ、オブジェクト、オブジェクト名の管理は主にツリービューから管理します。もちろんFreeCADの他の全てと同様にPythonインタープリターから処理することも可能です。ツリービューではツリービューまたは各オブジェクトを右クリックすることでグループの作成、オブジェクトのグループへの移動、オブジェクト・グループの削除行うことができます。また名前をダブルクリックすることでオブジェクトの名前を変更できます。それ以外にも現在のワークベンチに応じてさまざまな操作が可能になっています。
</p><p>FreeCADドキュメント内部のオブジェクトには色々なタイプがあります。各ワークベンチではそのワークベンチ固有のタイプのオブジェクトを作成できます。例えば<a href="https://www.freecadweb.org/wiki/index.php?title=Mesh_Workbench/jp" title="Mesh Workbench/jp">メッシュワークベンチ</a>ではメッシュオブジェクトを、<a href="https://www.freecadweb.org/wiki/index.php?title=Part_Workbench/jp" class="mw-redirect" title="Part Workbench/jp">パートワークベンチ</a>ではパートオブジェクトを作成でき、また<a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Workbench/jp" class="mw-redirect" title="Draft Workbench/jp">製図ワークベンチ</a>でもパートオブジェクトを作成できる、といった具合になっています。
</p><p>もしFreeCADで一つでもドキュメントを開いている場合には常にただ一つのアクティブなドキュメントが存在することになります。3Dビューに表示され、現在作業を行なっているドキュメントがそれです。
</p>
<h2><span class="mw-headline" id=".E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.A8.E3.83.A6.E3.83.BC.E3.82.B6.E3.83.BC.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9">アプリケーションとユーザーインターフェイス</span></h2>
<p>FreeCADの他のほとんどのものと同様、ユーザーインターフェイス部分GUIは基本アプリケーション部分APPから独立しています。これはドキュメントについても当てはまることです。ドキュメントも二つの部分から構成されています。オブジェクトを保持すApplicationドキュメントと画面上でのオブジェクトの表示を保持するViewドキュメントです。
</p><p>オブジェクトが定義されている二つの空間を想像してください。オブジェクトの構造的なパラメーター立方体なのか円錐なのかそのサイズははApplicationドキュメントに保持され、グラフィック表現黒い線で描画されているのか青い面があるのかはViewドキュメントに保持されます。なぜそんな風になっているのかそれはFreeCADをグラフィックインターフェイス無しでも使えるようにするためです。例えば他のプログラムの内部では画面上に何も書かないでオブジェクトを操作できなくてはなりません。
</p><p>Viewドキュメント内部にはそれ以外にも3Dビューが保持されています。一つのドキュメントは複数のビューとして開くことができるので、当然、ドキュメントは同時に複数の視点から表示できなくてはならないことがわかります。あなたは作業物の上面図と正面図を同時に見たいと思ったことがあるのではないでしょうかその場合、同じドキュメントの二つのビューが作られ、それらは両方ともViewドキュメントに保存されます。新しいビューの作成と終了はViewメニューから、またはビューのタブを右クリックすることで可能です。
</p>
<h2><span class="mw-headline" id=".E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88.E5.87.A6.E7.90.86">スクリプト処理</span></h2>
<p>Pythonインタープリターからドキュメントの作成、アクセス、変更を簡単に行うことができます。以下に例をあげます。
</p>
<pre>FreeCAD.ActiveDocument
</pre>
<p>現在の(アクティブな)ドキュメントを返します
</p>
<pre>FreeCAD.ActiveDocument.Blob
</pre>
<p>ドキュメント内部の"Blob"という名前のオブジェクトにアクセスします
</p>
<pre>FreeCADGui.ActiveDocument
</pre>
<p>現在のドキュメントに関連付けられたViewドキュメントを返します
</p>
<pre>FreeCADGui.ActiveDocument.Blob
</pre>
<p>Blobオブジェクトのグラフィック表現ビュー部分にアクセスします
</p>
<pre>FreeCADGui.ActiveDocument.ActiveView
</pre>
<p>現在のビューを返します
</p>
<p><br />
</p>
<h2><span class="mw-headline" id=".E3.83.A6.E3.83.BC.E3.82.B6.E3.83.BC.E7.92.B0.E5.A2.83.E8.A8.AD.E5.AE.9A">ユーザー環境設定</span></h2>
<p>FreeCADのシステム設定はEditメニューのPreferencesにあります。
</p><p>FreeCADの機能は異なるモジュールに分割され、各モジュールは特定の<a href="https://www.freecadweb.org/wiki/index.php?title=Workbenches/jp" title="Workbenches/jp">ワークベンチ</a>の処理を担います。またFreeCADは遅延ロードと呼ばれるコンセプトを採用しています。つまりコンポーネントはそれが必要になった時点で読み込まれるのです。FreeCADのツールバーでワークベンチを選択するとそのワークベンチとそれに関係したコンポーネントがその瞬間に読み込まれることにあなたは気がついたのではないでしょうか。ワークベンチの環境設定もそこに含まれます。
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Screenshot_preferences01.jpg" class="image"><img alt="Screenshot preferences01.jpg" src="Screenshot_preferences01.jpg" width="400" height="502" /></a>
</p><p>全般的な環境設定
</p><p>ワークベンチの読み込みなしでFreeCADを起動している場合、最低限の環境設定ウィンドウが表示されます。追加モジュールを読み込むと環境設定ウィンドウに新しいセクションが表示され、各ワークベンチの詳細を設定することができるようになります。
</p><p>モジュールの読み込みをおこなっていない場合には二つの設定欄にアクセスできます。全般的なアプリケーション設定と表示設定です。
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Screenshot_preferences02.jpg" class="image"><img alt="Screenshot preferences02.jpg" src="Screenshot_preferences02.jpg" width="400" height="506" /></a>
</p><p>表示設定
</p><p>FreeCADは常に進化しているので画面表示が上記のスクリーンショットと異なる可能性があります。通常、設定は見れば分かるようになっているので必要なFreeCADの設定を行うのは難しくないはずです。
</p>
<p><br />
</p>
<h2><span class="mw-headline" id=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.81.AE.E3.82.AB.E3.82.B9.E3.82.BF.E3.83.9E.E3.82.A4.E3.82.BA">インターフェイスのカスタマイズ</span></h2>
<p>FreeCADのインターフェイスは現代的な<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Qt_(toolkit)">Qt</a>ツールキットを基盤としているため最先端の構成を備えています。ウィジット、メニュー、ツールバーやその他のツールは変更、移動、ワークベンチ間での共有が可能です。またキーボードショートカットを設定、変更したり、マクロを記録、再生したりすることもできます。カスタマイズ用ウィンドウはメニューの<b>Tools -&gt; Customize</b>で開くことができます。
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Screenshot-customize.jpg" class="image"><img alt="Screenshot-customize.jpg" src="Screenshot-customize.jpg" width="582" height="427" /></a>
</p><p><b>Commands</b>タブではカテゴリーごとに分類された利用可能な全てのFreeCADコマンドを見ることができます。
</p><p><b>Keyboard</b>では各FreeCADコマンドに関連付けられたキーボードショートカットを確認でき、必要な場合にはそれを変更したり任意のコマンドに新しいショートカットを割り当てることができます。もしあなたが特定のワークベンチを頻繁に使い、キーボードを使ってその操作をスピードアップしたいのであればぜひこの機能を利用してください。
</p><p><b>Toolbars</b>タブと<b>Toolbox bars</b>タブでは現在のツールバーを変更したり、あなた独自のカスタマイズしたツールバーを作成することができます。
</p><p><b>Macros</b>タブでは保存された<a href="https://www.freecadweb.org/wiki/index.php?title=Macros/jp" title="Macros/jp">マクロ</a>を管理することができます。
</p>
<p><br />
</p>
<h2><span class="mw-headline" id=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E3.83.97.E3.83.AD.E3.83.91.E3.83.86.E3.82.A3">オブジェクトのプロパティ</span></h2>
<p><b>プロパティ</b>とはFreeCADドキュメントあるいはドキュメント内のオブジェクトに付けられた数字やテキスト文字列といった情報のことです。
</p><p>プロパティはFreeCADで非常に重要な役割を果たしています。パラメトリックなオブジェクトを使って作業を始めた瞬間からそうなのです。パラメトリックなオブジェクトはそのプロパティのみによって定義されているのですから。
</p><p>FreeCADのカスタムされた<a href="https://www.freecadweb.org/wiki/index.php?title=Scripted_objects/jp" title="Scripted objects/jp">スクリプト化されたオブジェクト</a>は以下の型のプロパティを持つことができます。
</p>
<pre>Boolean
Float
FloatList
FloatConstraint
Angle
Distance
Integer
IntegerConstraint
Percent
Enumeration
IntegerList
String
StringList
Link
LinkList
Matrix
Vector
VectorList
Placement
PlacementLink
Color
ColorList
Material
Path
File
FileIncluded
PartShape
FilletContour
Circle
</pre>
<p><br />
</p>
<p><br />
</p>
<h1><span class="mw-headline" id=".E3.83.AF.E3.83.BC.E3.82.AF.E3.83.99.E3.83.B3.E3.83.81.E3.81.A7.E3.81.AE.E4.BD.9C.E6.A5.AD">ワークベンチでの作業</span></h1>
<p><a href="http://en.wikipedia.org/wiki/Revit" class="extiw" title="wikipedia:Revit">Revit</a><a href="http://en.wikipedia.org/wiki/CATIA" class="extiw" title="wikipedia:CATIA">Catia</a>といった多くの現代的なデザインのためのアプリケーションと同様、FreeCADは<a href="http://en.wikipedia.org/wiki/Workbench" class="extiw" title="wikipedia:Workbench">ワークベンチ</a>というコンセプトを基盤にしています。ワークベンチとは言うなれば特定の作業のために特別に編成されたツールのセットです。伝統的な家具工房では木材を扱う者のための作業台や金属部品を扱う者のための作業台があり、恐らくは全ての部品を一つに組み立てる者のための作業台もあったことでしょう。
</p><p>FreeCADでは同じ考え方を採用しています。関係する作業に従ってツールはワークベンチにグループ化されているのです。
</p><p>今のところ以下のワークベンチが利用可能になっています:
</p>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Workbench_PartDesign.png" class="image"><img alt="Workbench PartDesign.png" src="16px-Workbench_PartDesign.png" width="16" height="16" srcset="/wiki/images/thumb/8/89/Workbench_PartDesign.png/24px-Workbench_PartDesign.png 1.5x, /wiki/images/8/89/Workbench_PartDesign.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=PartDesign_Workbench/jp" title="PartDesign Workbench/jp">パートデザインワークベンチ</a> スケッチからの部品形状の作成用</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Workbench_Draft.png" class="image"><img alt="Workbench Draft.png" src="16px-Workbench_Draft.png" width="16" height="16" srcset="/wiki/images/thumb/1/16/Workbench_Draft.png/24px-Workbench_Draft.png 1.5x, Workbench_Draft.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Module/jp" title="Draft Module/jp">製図ワークベンチ</a> ベーシックな2D-CAD製図用</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Workbench_Mesh.png" class="image"><img alt="Workbench Mesh.png" src="16px-Workbench_Mesh.png" width="16" height="16" srcset="/wiki/images/thumb/c/c5/Workbench_Mesh.png/24px-Workbench_Mesh.png 1.5x, Workbench_Mesh.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Mesh_Workbench/jp" title="Mesh Workbench/jp">メッシュワークベンチ</a> 三角形メッシュでの作業用</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Workbench_Part.png" class="image"><img alt="Workbench Part.png" src="16px-Workbench_Part.png" width="16" height="16" srcset="/wiki/images/thumb/c/c7/Workbench_Part.png/24px-Workbench_Part.png 1.5x, Workbench_Part.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Workbench/jp" class="mw-redirect" title="Part Workbench/jp">パートワークベンチ</a> CAD部品での作業用</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Workbench_Image.png" class="image"><img alt="Workbench Image.png" src="16px-Workbench_Image.png" width="16" height="16" srcset="/wiki/images/thumb/e/e2/Workbench_Image.png/24px-Workbench_Image.png 1.5x, /wiki/images/e/e2/Workbench_Image.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Image_Workbench/jp" class="mw-redirect" title="Image Workbench/jp">画像ワークベンチ</a> ビットマップ画像での作業用</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Raytracing.png" class="image"><img alt="Raytracing.png" src="16px-Raytracing.png" width="16" height="16" srcset="/wiki/images/thumb/b/bb/Raytracing.png/24px-Raytracing.png 1.5x, /wiki/images/b/bb/Raytracing.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Raytracing_Workbench/jp" class="mw-redirect" title="Raytracing Workbench/jp">レイトレーシングワークベンチ</a> レイトレーシング(レンダリング)作業用</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Workbench_Drawing.png" class="image"><img alt="Workbench Drawing.png" src="16px-Workbench_Drawing.png" width="16" height="16" srcset="/wiki/images/thumb/8/85/Workbench_Drawing.png/24px-Workbench_Drawing.png 1.5x, /wiki/images/8/85/Workbench_Drawing.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Drawing_Module/jp" title="Drawing Module/jp">ドローイングワークベンチ</a> 3D作業物の2Dシート上への表示用</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Workbench_Robot.png" class="image"><img alt="Workbench Robot.png" src="16px-Workbench_Robot.png" width="16" height="16" srcset="/wiki/images/thumb/d/d4/Workbench_Robot.png/24px-Workbench_Robot.png 1.5x, /wiki/images/d/d4/Workbench_Robot.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Robot_Workbench/jp" title="Robot Workbench/jp">ロボットワークベンチ</a> ロボットの動作の研究用</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Workbench_Sketcher.png" class="image"><img alt="Workbench Sketcher.png" src="16px-Workbench_Sketcher.png" width="16" height="16" srcset="/wiki/images/thumb/e/e4/Workbench_Sketcher.png/24px-Workbench_Sketcher.png 1.5x, /wiki/images/e/e4/Workbench_Sketcher.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Sketcher_Workbench/jp" title="Sketcher Workbench/jp">スケッチャーワークベンチ</a> 幾何学的制約のあるスケッチでの作業用</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Arch.png" class="image"><img alt="Arch.png" src="16px-Arch.png" width="16" height="16" srcset="/wiki/images/thumb/3/32/Arch.png/24px-Arch.png 1.5x, /wiki/images/thumb/3/32/Arch.png/32px-Arch.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Arch_Workbench/jp" class="mw-redirect" title="Arch Workbench/jp">建築ワークベンチ</a> 建築物での作業用</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Workbench_OpenSCAD.png" class="image"><img alt="Workbench OpenSCAD.png" src="16px-Workbench_OpenSCAD.png" width="16" height="16" srcset="/wiki/images/thumb/b/b2/Workbench_OpenSCAD.png/24px-Workbench_OpenSCAD.png 1.5x, /wiki/images/thumb/b/b2/Workbench_OpenSCAD.png/32px-Workbench_OpenSCAD.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=OpenSCAD_Workbench/jp&amp;action=edit&amp;redlink=1" class="new" title="OpenSCAD Workbench/jp (page does not exist)">OpenSCADワークベンチ</a> OpenSCADとの相互運用とCSGモデルヒストリーの修正用</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Workbench_Assembly.png" class="image"><img alt="Workbench Assembly.png" src="16px-Workbench_Assembly.png" width="16" height="16" srcset="/wiki/images/thumb/d/d5/Workbench_Assembly.png/24px-Workbench_Assembly.png 1.5x, /wiki/images/thumb/d/d5/Workbench_Assembly.png/32px-Workbench_Assembly.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Assembly_project/jp" title="Assembly project/jp">アセンブリワークベンチ</a> 複数のシェイプ、ドキュメント、ファイル、関連物などでの作業用。</li></ul>
<p><br />
複数の新しいワークベンチが開発中です。お楽しみに!
</p><p>ワークベンチを切り替えるとインターフェイスが変わってそのツールが利用可能になります。ツールバー、コマンドバー、さらにはインターフェイスの他の部分も新しいワークベンチに切り替わりますが、シーンの内容は変わりません。例えば製図ワークベンチで2D形状を描画し、さらにパートワークベンチを使ってそこから作業を続けるといったことが可能です。
</p>
<p><br />
</p>
<h2><span class="mw-headline" id=".E3.83.A1.E3.83.83.E3.82.B7.E3.83.A5.E3.83.AF.E3.83.BC.E3.82.AF.E3.83.99.E3.83.B3.E3.83.81">メッシュワークベンチ</span></h2>
<p><b>メッシュワークベンチ</b>では<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Triangle_mesh">三角形メッシュ</a>を取り扱えます。メッシュは3Dオブジェクトの特別なタイプの一つで、エッジと角頂点とも呼ばれますによってつながった三角形によって構成されます。
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Mesh_example.jpg" class="image" title="An example of a mesh object"><img alt="An example of a mesh object" src="Mesh_example.jpg" width="640" height="400" /></a>
</p><p>メッシュオブジェクトの一例
</p><p><a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Sketchup">Sketchup</a><a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Blender_(software)">Blender</a><a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Maya_(software)">Maya</a><a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/3d_max">3d studio max</a>といった多くの3Dアプリケーションでは基本となる3Dオブジェクトのタイプとしてメッシュを使用しています。これはメッシュが頂点、エッジ、三角形面のみからなる非常にシンプルなオブジェクトで作成や変更、分割、伸縮をとても簡単に行うことができ、劣化なしで容易にアプリケーション間でのやり取りができるためです。また非常にシンプルなデータからできているので3Dアプリケーションは非常に大量のデータであっても普通は問題を起こすことなく扱うことができます。これらの理由からしばしばメッシュは映画やアニメーション、画像作成といったアプリケーションで取り扱う3Dオブジェクトの選択肢となります。
</p><p>しかしエンジニアリング分野ではメッシュには大きな欠点があります。点とラインと面だけでできているせいで非常に融通がききづらいのです。メッシュは面だけで形づくられ、体積情報がないのでソリッドとして振る舞うことができません。メッシュではある点がオブジェクトの内側にあるのか外側にあるのか自動で判定する方法がありません。つまり加算や減算に代表される全てのソリッドベースの操作はメッシュに対して行うことがかなり難しく、エラーが起きやすいのです。
</p><p>FreeCADはエンジニアリング用のアプリケーションですから体積、ソリッドとしての振る舞いを表す情報、さらにはカスタマイズしたパラメーターなどもっと多くの情報を持つことのできるより知的な3Dオブジェクトを使いたいと思うのは当然のことでしょう。メッシュモジュールははじめはテスト用ベッドとして使うために作成されました。しかしメッシュを読み込み、操作し、変換できるということがFreeCADにとって非常に重要な機能であることも確かです。作業の中でメッシュ形式の3Dデータを受け取るということは非常によくあることです。そういったデータを取り扱う必要がある場合、それをもっと知的なオブジェクトに変換することを妨げている形状エラーやその他の問題を解析し、最終的にもっと知的なオブジェクトに変換することで<a href="https://www.freecadweb.org/wiki/index.php?title=Part_Module/jp" title="Part Module/jp">パートモジュール</a>で取り扱うことができるようになります。
</p>
<h3><span class="mw-headline" id=".E3.83.A1.E3.83.83.E3.82.B7.E3.83.A5.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB.E3.81.AE.E4.BD.BF.E7.94.A8.E6.96.B9.E6.B3.95">メッシュモジュールの使用方法</span></h3>
<p>メッシュモジュールの現在のインターフェイスは非常にシンプルで全ての機能は<b>Mesh</b>メニューにまとめられています。メッシュに対して行うことのできる操作の中でももっとも重要なものは以下の通りです:
</p>
<ul><li> 複数のファイルフォーマットでのメッシュのインポート</li>
<li> 複数のファイルフォーマットでのメッシュのエクスポート</li>
<li> <a href="Part_Module.html" title="Part Module">パート</a>オブジェクトのメッシュへの変換</li>
<li> 曲率、面の解析とメッシュを問題なくソリッドに変換できるかどうかのチェック</li>
<li> メッシュ<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Surface_normal">法線</a>の反転</li>
<li> メッシュに開いた穴の穴埋め</li>
<li> メッシュ面の除去</li>
<li> メッシュの結合、減算、交差</li>
<li> 直方体、球、円錐、円筒といったメッシュプリミティブの作成</li>
<li> ラインに沿ったメッシュの切断</li></ul>
<p>今のところメッシュモジュールのインターフェイスにはいくつかの基本的な操作しかありません。しかし <a href="https://www.freecadweb.org/wiki/index.php?title=Scripting/jp" title="Mesh Scripting/jp">スクリプト</a>を使用すればさらに多くの処理をFreeCADのメッシュに対して行うこともできます。
</p>
<p><br />
</p>
<h2><span class="mw-headline" id=".E3.83.91.E3.83.BC.E3.83.88.E3.83.AF.E3.83.BC.E3.82.AF.E3.83.99.E3.83.B3.E3.83.81">パートワークベンチ</span></h2>
<p>FreeCADのCAD機能は<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Open_CASCADE">OpenCasCade</a>カーネルをその基礎としています。FreeCADはパートモジュールによってOpenCasCadeオブジェクトとその機能へのアクセス・利用を行なっています。OpenCascadeはプロフェッショナル用のCADカーネルでその機能は3D形状操作、3D形状オブジェクトに特化しています。<a href="https://www.freecadweb.org/wiki/index.php?title=Mesh_Module/jp" class="mw-redirect" title="Mesh Module/jp">メッシュモジュール</a> のオブジェクトと異なりパートオブジェクトはより複雑で、明確なブーリアン演算、変更履歴、パラメトリックな動作などのより高度な処理が可能です。
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_example.jpg" class="image"><img alt="Part example.jpg" src="Part_example.jpg" width="634" height="406" /></a>
</p><p>FreeCADでのパート形状の例
</p>
<h3><span class="mw-headline" id=".E3.83.84.E3.83.BC.E3.83.AB">ツール</span></h3>
<p>パートモジュールツールは全てパートモジュールを読み込んだ時点で表示される<b>Part</b>メニューにあります。
</p>
<h3><span class="mw-headline" id=".E3.83.97.E3.83.AA.E3.83.9F.E3.83.86.E3.82.A3.E3.83.96_2">プリミティブ</span></h3>
<p>プリミティブオブジェクトを作成するためのツールです。
</p>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Box.png" class="image"><img alt="Part Box.png" src="32px-Part_Box.png" width="32" height="32" srcset="/wiki/images/thumb/a/a5/Part_Box.png/48px-Part_Box.png 1.5x, /wiki/images/a/a5/Part_Box.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Box/jp" title="Part Box/jp">ボックス</a>: 寸法を指定してボックスを描きます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Cone.png" class="image"><img alt="Part Cone.png" src="32px-Part_Cone.png" width="32" height="32" srcset="/wiki/images/thumb/1/13/Part_Cone.png/48px-Part_Cone.png 1.5x, /wiki/images/1/13/Part_Cone.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Cone/jp" title="Part Cone/jp">円錐</a>: 寸法を指定して円錐を描きます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Cylinder.png" class="image"><img alt="Part Cylinder.png" src="32px-Part_Cylinder.png" width="32" height="32" srcset="/wiki/images/thumb/d/d4/Part_Cylinder.png/48px-Part_Cylinder.png 1.5x, /wiki/images/d/d4/Part_Cylinder.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Cylinder/jp" title="Part Cylinder/jp">円筒</a>: 寸法を指定して円筒を描きます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Sphere.png" class="image"><img alt="Part Sphere.png" src="32px-Part_Sphere.png" width="32" height="32" srcset="/wiki/images/thumb/4/4b/Part_Sphere.png/48px-Part_Sphere.png 1.5x, /wiki/images/4/4b/Part_Sphere.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Sphere/jp" title="Part Sphere/jp"></a>: 寸法を指定して球を描きます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Torus.png" class="image"><img alt="Part Torus.png" src="32px-Part_Torus.png" width="32" height="32" srcset="/wiki/images/thumb/8/8b/Part_Torus.png/48px-Part_Torus.png 1.5x, /wiki/images/8/8b/Part_Torus.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Torus/jp" title="Part Torus/jp">トーラス</a>: 寸法を指定してトーラス(円環)を描きます</li></ul>
<h3><span class="mw-headline" id=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E5.A4.89.E6.9B.B4_3">オブジェクトの変更</span></h3>
<p>既存のオブジェクトを変更するためのツールです。変更するオブジェクトを選択して使用します。
</p>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Booleans.png" class="image"><img alt="Part Booleans.png" src="32px-Part_Booleans.png" width="32" height="32" srcset="/wiki/images/thumb/8/89/Part_Booleans.png/48px-Part_Booleans.png 1.5x, /wiki/images/8/89/Part_Booleans.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Booleans/jp" title="Part Booleans/jp">ブーリアン</a>: オブジェクトのブーリアン演算を行います</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Fuse.png" class="image"><img alt="Part Fuse.png" src="32px-Part_Fuse.png" width="32" height="32" srcset="/wiki/images/thumb/c/c6/Part_Fuse.png/48px-Part_Fuse.png 1.5x, /wiki/images/c/c6/Part_Fuse.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Fuse/jp" title="Part Fuse/jp">結合</a>: 二つのオブジェクトを結合します(和集合)</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Common.png" class="image"><img alt="Part Common.png" src="32px-Part_Common.png" width="32" height="32" srcset="/wiki/images/thumb/9/9a/Part_Common.png/48px-Part_Common.png 1.5x, /wiki/images/9/9a/Part_Common.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Common/jp" title="Part Common/jp">共通部</a>: 二つのオブジェクトの共通部分を抽出します(共通集合)</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Cut.png" class="image"><img alt="Part Cut.png" src="32px-Part_Cut.png" width="32" height="32" srcset="/wiki/images/thumb/4/4a/Part_Cut.png/48px-Part_Cut.png 1.5x, /wiki/images/4/4a/Part_Cut.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Cut/jp" title="Part Cut/jp">切り取り</a>: オブジェクトを別のオブジェクトから切り取ります(減算)</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Extrude.png" class="image"><img alt="Part Extrude.png" src="32px-Part_Extrude.png" width="32" height="32" srcset="/wiki/images/thumb/d/df/Part_Extrude.png/48px-Part_Extrude.png 1.5x, /wiki/images/d/df/Part_Extrude.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Extrude/jp" title="Part Extrude/jp">押し出し</a>: オブジェクトの平面を押し出します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Fillet.png" class="image"><img alt="Part Fillet.png" src="32px-Part_Fillet.png" width="32" height="32" srcset="/wiki/images/thumb/4/4a/Part_Fillet.png/48px-Part_Fillet.png 1.5x, /wiki/images/4/4a/Part_Fillet.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Fillet/jp" title="Part Fillet/jp">フィレット</a>: オブジェクトのエッジをフィレット処理(丸め処理)します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Revolve.png" class="image"><img alt="Part Revolve.png" src="32px-Part_Revolve.png" width="32" height="32" srcset="/wiki/images/thumb/1/12/Part_Revolve.png/48px-Part_Revolve.png 1.5x, /wiki/images/1/12/Part_Revolve.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Revolve/jp" title="Part Revolve/jp">回転体</a>: 別のオブジェクトを軸周りに回転させてオブジェクトを作成します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Section.png" class="image"><img alt="Part Section.png" src="32px-Part_Section.png" width="32" height="32" srcset="/wiki/images/thumb/a/ab/Part_Section.png/48px-Part_Section.png 1.5x, /wiki/images/a/ab/Part_Section.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Section/jp" title="Part Section/jp">分割</a>: 分割面をオブジェクトに交差させることで切断面を作成します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Chamfer.png" class="image"><img alt="Part Chamfer.png" src="32px-Part_Chamfer.png" width="32" height="32" srcset="/wiki/images/thumb/8/87/Part_Chamfer.png/48px-Part_Chamfer.png 1.5x, /wiki/images/8/87/Part_Chamfer.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Chamfer/jp" title="Part Chamfer/jp">面取り</a>: オブジェクトのエッジを面取りします</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Mirror.png" class="image"><img alt="Part Mirror.png" src="32px-Part_Mirror.png" width="32" height="32" srcset="/wiki/images/thumb/9/93/Part_Mirror.png/48px-Part_Mirror.png 1.5x, /wiki/images/9/93/Part_Mirror.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Mirror/jp" title="Part Mirror/jp">ミラー</a>: 指定された鏡面に対して選択されたオブジェクトの鏡像を作成します</li></ul>
<p><br />
</p>
<h3><span class="mw-headline" id=".E3.83.96.E3.83.BC.E3.83.AA.E3.82.A2.E3.83.B3.E6.BC.94.E7.AE.97">ブーリアン演算</span></h3>
<div class="floatleft"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_BooleanOperations.png" class="image" title="An example of union (Fuse), intersection (Common) and difference (Cut)"><img alt="An example of union (Fuse), intersection (Common) and difference (Cut)" src="500px-Part_BooleanOperations.png" width="500" height="384" srcset="/wiki/images/thumb/d/df/Part_BooleanOperations.png/750px-Part_BooleanOperations.png 1.5x, /wiki/images/thumb/d/df/Part_BooleanOperations.png/1000px-Part_BooleanOperations.png 2x" /></a></div>
<div style="clear:both"></div>
<p><br />
結合(ヒューズ)、交差(共通部分)、差(カット)の一例
</p>
<h3><span class="mw-headline" id=".E6.A6.82.E5.BF.B5.E3.81.AE.E8.AA.AC.E6.98.8E">概念の説明</span></h3>
<p>OpenCasCadeにおける用語では幾何プリミティブと位相シェイプは明確に区別されます。幾何プリミティブとは点、ライン、円、平面、それにB-スプライン曲線や曲面などのより複雑なタイプのものです。シェイプは頂点、エッジ、ワイヤー、面、ソリッド、それに他のシェイプの合成物です。幾何プリミティブは3Dシーン上に直接表示されることはありませんがシェイプの形状を作成するためには重要な役割を果たします。例えばエッジははラインまたは円の一部から作成されます。
</p><p>つまり幾何プリミティブとは"形のない"構成単位であり、シェイプはその上に作られた実際の空間的な形状であると言えるでしょう。
</p><p>その完全なリストを入手したい場合は<a rel="nofollow" class="external text" href="http://www.opencascade.org/org/doc/">OCCドキュメント</a>(あるいは<a rel="nofollow" class="external text" href="http://opencascade.sourcearchive.com/documentation/6.3.0.dfsg.1-1/classes.html">sourcearchive.com</a>)を参照し、 <b>Geom_*</b>(幾何プリミティブの場合)と<b>TopoDS_*</b>シェイプの場合を検索してください。幾何オブジェクトとシェイプの違いについてより詳しい説明を読むことができます。残念なことに公式のOCCドキュメントはオンラインで利用することができずアーカイブをダウンロードしなければなりません、またそのほとんどがプログラマー向けのものでエンドユーザーに向けたものではないことに注意してください。ただしこれから始めるために必要な情報についてはここで十分確認することができるはずです。
</p><p>実のところ幾何オブジェクトは大きく二つに分けることができます。カーブとサーフェスです。カーブ(ライン、円・・・)からはエッジを直接的に作成でき、サーフェス(平面、円筒・・・)からはフェイスを作成できます。例えば幾何プリミティブのラインは無限の長さを持ちます。つまり基底ベクトルと方向ベクトルによって定義されているのです。しかしそのシェイプ表現は始点と終点によって長さを制限されなければなりません。同様に直方体 -- ソリッド -- は六つの制限つき平面によって作成されます。
</p><p>エッジやフェイスからはその対となる幾何プリミティブに戻ることもできます。
</p><p>このようにしてシェイプから非常に複雑なパーツを作成したり、逆に複雑なシェイプからそれを構成するサブシェイプを全て抜き出したりすることが可能になっているのです。
</p>
<h3><span class="mw-headline" id=".E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88.E5.87.A6.E7.90.86_2">スクリプト処理</span></h3>
<p>パートモジュールで使用されている主なデータ構造はOpenCascadeの<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Boundary_representation">BRep境界表現</a>データ型です。
現在ではパートモジュールのほとんど全ての機能とオブジェクト型がPythonスクリプトから利用可能になっています。これにはLineやCircleあるいはArcなどの幾何プリミティブとVertexes、Edges、Wires、Faces、SolidsそしてCompoundsなどTopoShapesの全てが含まれます。これらの各オブジェクトにはいくつかの異なる作成方法があり、またオブジェクトの一部、特にTopoShapesではブーリアン演算の和集合/差集合/共通集合といったより高度な操作が可能になっています。パートモジュールの機能の詳細については<a href="https://www.freecadweb.org/wiki/index.php?title=FreeCAD_Scripting_Basics/jp" title="FreeCAD Scripting Basics/jp">FreeCADスクリプト処理の基礎</a>ページを調べてください。
</p>
<h3><span class="mw-headline" id=".E4.BE.8B"></span></h3>
<p>ライン要素を作成するにはPythonコンソールを開き、以下のように入力します
</p>
<pre>import Part,PartGui
doc=App.newDocument()
l=Part.Line()
l.StartPoint=(0.0,0.0,0.0)
l.EndPoint=(1.0,1.0,1.0)
doc.addObject("Part::Feature","Line").Shape=l.toShape()
doc.recompute()
</pre>
<p>上記のPythonスクリプトの例をステップごとに見ていきましょう
</p>
<pre>import Part,PartGui
doc=App.newDocument()
</pre>
<p>パートモジュールを読み込み、新しいドキュメントを作成します。
</p>
<pre>l=Part.Line()
l.StartPoint=(0.0,0.0,0.0)
l.EndPoint=(1.0,1.0,1.0)
</pre>
<p>ラインは実際は線分なので始点と終点があります。
</p>
<pre>doc.addObject("Part::Feature","Line").Shape=l.toShape()
</pre>
<p>Partオブジェクト型をドキュメントに追加し、追加したオブジェクトの'Shape'プロパティに線分のシェイプ表現を代入します。ここで理解すべき重要な点は幾何プリミティブPart.Lineを使ってそこから位相シェイプを作成したtoShape()メソッドということです。ドキュメントに追加できるのはシェイプだけです。FreeCADでは幾何プリミティブはシェイプのための"作成用構造体"として使用されます。
</p>
<pre>doc.recompute()
</pre>
<p>ドキュメントを更新します。新しいパートオブジェクトの視覚的な表現を用意するための処理でもあります。
</p><p>LineはPart.Line(point1,point2)という風にその始点と終点をコンストラクタで直接指定して作成することもできますし、ここで行ったようにデフォルトのラインを作成してあとでそのプロパティを設定することもできるということを憶えておいてください。
</p><p>同じようにして円を作ることもできます:
</p>
<pre>import Part
doc = App.activeDocument()
c = Part.Circle()
c.Radius=10.0
f = doc.addObject("Part::Feature", "Circle")
f.Shape = c.toShape()
doc.recompute()
</pre>
<p>先ほどと同様、円(幾何プリミティブ)を使ってそのシェイプを作成しました。もちろんこの後、下記のような方法で作成した形状にアクセスすることができます:
</p>
<pre>s = f.Shape
e = s.Edges[0]
c = e.Curve
</pre>
<p>ここではオブジェクトfのシェイプを取得した後、そのエッジのリストを取得しています。今回の場合、エッジは一つしかありません。円一つからシェイプ全体を作成しているためです。従ってEdgesリストの最初のアイテムだけ取得し、その後でそのCurve曲線を取得しています。Edgeは全てCurveを持ちます。これはエッジの元になっている幾何プリミティブです。
</p><p>さらに詳しく知りたい場合は<a href="https://www.freecadweb.org/wiki/index.php?title=Topological_data_scripting/jp" title="Topological data scripting/jp">位相データのスクリプト処理</a>ページを見て下さい。
</p>
<p><br />
</p>
<h2><span class="mw-headline" id=".E3.83.89.E3.83.AD.E3.83.BC.E3.82.A4.E3.83.B3.E3.82.B0.E3.83.AF.E3.83.BC.E3.82.AF.E3.83.99.E3.83.B3.E3.83.81">ドローイングワークベンチ</span></h2>
<p>ドローイングモジュールを使うと3D作業物を紙の上に移すことができます。つまりモデルのビューを2Dウィンドウに表示し、図面にそのウィンドウを挿入するということです。例えば枠線、タイトル、ロゴマークが入ったシートに挿入し、最終的にそのシートを印刷することができます。ドローイングモジュールは現在も製作中で多かれ少なかれ技術面でのテスト段階にあります
</p>
<h3><span class="mw-headline" id="GUI.E3.83.84.E3.83.BC.E3.83.AB">GUIツール</span></h3>
<div id="itsfree" style="text-align:center;color:black;background:#FDE0A8;margin:1em 7em;padding:0.5em 2em;border:2px solid #FF5706;"><br />This template is now obsolete and is directly include in the original page<br /><br /></div>
<p><strike>
2D図面を作成、設定、エキスポートするためのツールです。
</p>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Drawing_New.png" class="image"><img alt="Drawing New.png" src="32px-Drawing_New.png" width="32" height="32" srcset="/wiki/images/thumb/d/dc/Drawing_New.png/48px-Drawing_New.png 1.5x, /wiki/images/d/dc/Drawing_New.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Drawing_Open_SVG/jp" title="Drawing Open SVG/jp">スケーラブルベクターグラフィックを開く</a>: SVGファイルとして保存されている図面を開きます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Drawing_Landscape_A3.png" class="image"><img alt="Drawing Landscape A3.png" src="32px-Drawing_Landscape_A3.png" width="32" height="32" srcset="/wiki/images/thumb/2/27/Drawing_Landscape_A3.png/48px-Drawing_Landscape_A3.png 1.5x, /wiki/images/2/27/Drawing_Landscape_A3.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Drawing_Landscape_A3/jp" title="Drawing Landscape A3/jp">A3図面の新規作成</a>: FreeCADのデフォルトのA3テンプレートから新しい図面を作成します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Drawing_View.png" class="image"><img alt="Drawing View.png" src="32px-Drawing_View.png" width="32" height="32" srcset="/wiki/images/thumb/0/03/Drawing_View.png/48px-Drawing_View.png 1.5x, /wiki/images/0/03/Drawing_View.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Drawing_View/jp" title="Drawing View/jp">ビューの挿入</a>: アクティブな図面上に選択されたオブジェクトのビューを挿入します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Drawing_Save.png" class="image"><img alt="Drawing Save.png" src="32px-Drawing_Save.png" width="32" height="32" srcset="/wiki/images/4/43/Drawing_Save.png 1.5x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Drawing_Save/jp" title="Drawing Save/jp">図面の保存</a>: 現在の図面をSVGファイルとして保存します</li></ul>
<p></strike>
</p><p><br />
<a href="https://www.freecadweb.org/wiki/index.php?title=File:Drawing_extraction.png" class="image"><img alt="Drawing extraction.png" src="800px-Drawing_extraction.png" width="800" height="428" srcset="/wiki/images/thumb/f/f4/Drawing_extraction.png/1200px-Drawing_extraction.png 1.5x, /wiki/images/f/f4/Drawing_extraction.png 2x" /></a>
</p><p>この画像を見るとドローイングモジュールの主要なコンセプトが見て取れます。ドキュメントには図面に引用したい形状オブジェクトSchenkelが入っています。さらに"Page"が作成されています。ページはテンプレートに基づいてインスタンス化されます。今回のケースでは"A3_Landscape"テンプレートです。テンプレートにはSVGドキュメントであなたが普段使っているページ枠、ロゴ、標準のプレゼンテーション資料規格を使うことができます。
</p><p>このページには複数のビューを挿入することができます。各ビューはページ上での位置X、Yプロパティ、拡大率スケールプロパティなどをはじめとした属性情報を持っています。ページ、ビュー、参照しているオブジェクトが変化するとそのたびにページが再生成され、ページの表示が更新されます。
</p>
<h3><span class="mw-headline" id=".E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88.E5.87.A6.E7.90.86_3">スクリプト処理</span></h3>
<p>今のところエンドユーザー用のGUIワークフローは非常に限定されたものしか用意されていません。APIはもっと充実しています。以下ではドローイングモジュールのスクリプト処理用APIをどう使うかの例を挙げていきます。
</p>
<h4><span class="mw-headline" id=".E7.B0.A1.E5.8D.98.E3.81.AA.E4.BE.8B">簡単な例</span></h4>
<p>まずはパートモジュールとドローイングモジュールが必要です。
</p>
<pre>import FreeCAD, Part, Drawing
</pre>
<p>小さなサンプルパーツを作成します。
</p>
<pre>Part.show(Part.makeBox(100,100,100).cut(Part.makeCylinder(80,100)).cut(Part.makeBox(90,40,100)).cut(Part.makeBox(20,85,100)))
</pre>
<p>投影させます。G0はシャープな輪郭線、G1は連続線を意味します。
</p>
<pre>Shape = App.ActiveDocument.Shape.Shape
[visibleG0,visibleG1,hiddenG0,hiddenG1] = Drawing.project(Shape)
print "visible edges:", len(visibleG0.Edges)
print "hidden edges:", len(hiddenG0.Edges)
</pre>
<p>全てZ平面に投影されます。
</p>
<pre>print "Bnd Box shape: X=",Shape.BoundBox.XLength," Y=",Shape.BoundBox.YLength," Z=",Shape.BoundBox.ZLength
print "Bnd Box project: X=",visibleG0.BoundBox.XLength," Y=",visibleG0.BoundBox.YLength," Z=",visibleG0.BoundBox.ZLength
</pre>
<p>異なる投影ベクトル。
</p>
<pre>[visibleG0,visibleG1,hiddenG0,hiddenG1] = Drawing.project(Shape,App.Vector(1,1,1))
</pre>
<p>SVGに投影。
</p>
<pre>resultSVG = Drawing.projectToSVG(Shape,App.Vector(1,1,1))
print resultSVG
</pre>
<h4><span class="mw-headline" id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.88.E3.83.AA.E3.83.83.E3.82.AF.E3.81.AA.E6.96.B9.E6.B3.95">パラメトリックな方法</span></h4>
<p>物体を作成します。
</p>
<pre># 直方体を三つ、円筒を一つ作成
App.ActiveDocument.addObject("Part::Box","Box")
App.ActiveDocument.Box.Length=100.00
App.ActiveDocument.Box.Width=100.00
App.ActiveDocument.Box.Height=100.00
App.ActiveDocument.addObject("Part::Box","Box1")
App.ActiveDocument.Box1.Length=90.00
App.ActiveDocument.Box1.Width=40.00
App.ActiveDocument.Box1.Height=100.00
App.ActiveDocument.addObject("Part::Box","Box2")
App.ActiveDocument.Box2.Length=20.00
App.ActiveDocument.Box2.Width=85.00
App.ActiveDocument.Box2.Height=100.00
App.ActiveDocument.addObject("Part::Cylinder","Cylinder")
App.ActiveDocument.Cylinder.Radius=80.00
App.ActiveDocument.Cylinder.Height=100.00
App.ActiveDocument.Cylinder.Angle=360.00
# 二つの直方体と円筒を結合
App.activeDocument().addObject("Part::Fuse","Fusion")
App.activeDocument().Fusion.Base = App.activeDocument().Cylinder
App.activeDocument().Fusion.Tool = App.activeDocument().Box1
App.activeDocument().addObject("Part::Fuse","Fusion1")
App.activeDocument().Fusion1.Base = App.activeDocument().Box2
App.activeDocument().Fusion1.Tool = App.activeDocument().Fusion
# 一つ目の直方体で結合した形状を切断
App.activeDocument().addObject("Part::Cut","Shape")
App.activeDocument().Shape.Base = App.activeDocument().Box
App.activeDocument().Shape.Tool = App.activeDocument().Fusion1
# 作業した形状を全て非表示にする
Gui.activeDocument().Box.Visibility=False
Gui.activeDocument().Box1.Visibility=False
Gui.activeDocument().Box2.Visibility=False
Gui.activeDocument().Cylinder.Visibility=False
Gui.activeDocument().Fusion.Visibility=False
Gui.activeDocument().Fusion1.Visibility=False
</pre>
<p>Pageオブジェクトを挿入し、テンプレートを代入
</p>
<pre>App.activeDocument().addObject('Drawing::FeaturePage','Page')
App.activeDocument().Page.Template = App.getResourceDir()+'Mod/Drawing/Templates/A3_Landscape.svg'
</pre>
<p>"Shape"オブジェクトのビューを作成。位置とサイズを定義してPageに代入
</p>
<pre>App.activeDocument().addObject('Drawing::FeatureViewPart','View')
App.activeDocument().View.Source = App.activeDocument().Shape
App.activeDocument().View.Direction = (0.0,0.0,1.0)
App.activeDocument().View.X = 10.0
App.activeDocument().View.Y = 10.0
App.activeDocument().Page.addObject(App.activeDocument().View)
</pre>
<p>同じオブジェクトに対して二つ目のビューを作成。ただし今回のビューは90度回転させます。
</p>
<pre>App.activeDocument().addObject('Drawing::FeatureViewPart','ViewRot')
App.activeDocument().ViewRot.Source = App.activeDocument().Shape
App.activeDocument().ViewRot.Direction = (0.0,0.0,1.0)
App.activeDocument().ViewRot.X = 290.0
App.activeDocument().ViewRot.Y = 30.0
App.activeDocument().ViewRot.Scale = 1.0
App.activeDocument().ViewRot.Rotation = 90.0
App.activeDocument().Page.addObject(App.activeDocument().ViewRot)
</pre>
<p>同じオブジェクトに対して三つ目のビューを作成。ただし等角図の方向を使用します。また隠れている線も表示させます。
</p>
<pre>App.activeDocument().addObject('Drawing::FeatureViewPart','ViewIso')
App.activeDocument().ViewIso.Source = App.activeDocument().Shape
App.activeDocument().ViewIso.Direction = (1.0,1.0,1.0)
App.activeDocument().ViewIso.X = 335.0
App.activeDocument().ViewIso.Y = 140.0
App.activeDocument().ViewIso.ShowHiddenLines = True
App.activeDocument().Page.addObject(App.activeDocument().ViewIso)
</pre>
<p>適当に何か変更して更新。更新処理によってビューとページが変化します。
</p>
<pre>App.activeDocument().View.X = 30.0
App.activeDocument().View.Y = 30.0
App.activeDocument().View.Scale = 1.5
App.activeDocument().recompute()
</pre>
<h4><span class="mw-headline" id=".E3.81.93.E3.81.BE.E3.81.94.E3.81.BE.E3.81.A8.E3.81.97.E3.81.9F.E7.89.A9.E3.81.B8.E3.81.AE.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9">こまごまとした物へのアクセス</span></h4>
<p>一つのビューからSVGの図を取得。
</p>
<pre>ViewSVG = App.activeDocument().View.ViewResult
print ViewSVG
</pre>
<p>結果ページ全体を取得(ドキュメントのテンポラリフォルダ内の読み取り専用ファイル)。
</p>
<pre>print "Resulting SVG document: ",App.activeDocument().Page.PageResult
file = open(App.activeDocument().Page.PageResult,"r")
print "Result page is ",len(file.readlines())," lines long"
</pre>
<p>重要:ファイルを解放!
</p>
<pre>del file
</pre>
<p>独自のコンテンツを使用してビューを挿入。
</p>
<pre>App.activeDocument().addObject('Drawing::FeatureView','ViewSelf')
App.activeDocument().ViewSelf.ViewResult = """&lt;g id="ViewSelf"
stroke="rgb(0, 0, 0)"
stroke-width="0.35"
stroke-linecap="butt"
stroke-linejoin="miter"
transform="translate(30,30)"
fill="#00cc00"
&gt;
&lt;ellipse cx="40" cy="40" rx="30" ry="15"/&gt;
&lt;/g&gt;
"""
App.activeDocument().Page.addObject(App.activeDocument().ViewSelf)
App.activeDocument().recompute()
del Shape,ViewSVG, resultSVG
</pre>
<p>以下のような結果になります:
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:DrawingScriptResult.jpg" class="image"><img alt="DrawingScriptResult.jpg" src="800px-DrawingScriptResult.jpg" width="800" height="481" srcset="/wiki/images/thumb/2/2e/DrawingScriptResult.jpg/1200px-DrawingScriptResult.jpg 1.5x, /wiki/images/2/2e/DrawingScriptResult.jpg 2x" /></a>
</p>
<h3><span class="mw-headline" id=".E3.83.86.E3.83.B3.E3.83.97.E3.83.AC.E3.83.BC.E3.83.88">テンプレート</span></h3>
<p>FreeCADには一通りのデフォルトテンプレートが付属していますが<a href="https://www.freecadweb.org/wiki/index.php?title=Drawing_templates/jp&amp;action=edit&amp;redlink=1" class="new" title="Drawing templates/jp (page does not exist)">ドローイングテンプレート</a>にはもっと多くのテンプレートがあります。
</p>
<p><br />
</p>
<h2><span class="mw-headline" id=".E3.83.AC.E3.82.A4.E3.83.88.E3.83.AC.E3.83.BC.E3.82.B7.E3.83.B3.E3.82.B0.E3.83.AF.E3.83.BC.E3.82.AF.E3.83.99.E3.83.B3.E3.83.81">レイトレーシングワークベンチ</span></h2>
<p>このモジュールはシーンの内容を外部の<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Rendering_(computer_graphics)">レンダラー</a>に送り出し、作業物のフォトリアリスティックな画像を生成することを目標にしています。レイトレーシングモジュールはまだまだ未完成な初期段階にあり、今のところはそう多くの機能はありません。現在はパートオブジェクトを<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/POV-Ray">POV-ray</a>ファイルとしてエクスポートするための基本的なツールのみ実装されています。エクスポートしたファイルはPOV-rayで読み込んでレンダリングすることができます。
</p>
<h3><span class="mw-headline" id="GUI.E3.83.84.E3.83.BC.E3.83.AB_2">GUIツール</span></h3>
<p>作成した3D作品を外部のレンダラーにエクスポートするためのツールです。
</p>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Raytracing_New.png" class="image"><img alt="Raytracing New.png" src="32px-Raytracing_New.png" width="32" height="32" srcset="/wiki/images/thumb/5/59/Raytracing_New.png/48px-Raytracing_New.png 1.5x, /wiki/images/5/59/Raytracing_New.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Raytracing_New/jp&amp;action=edit&amp;redlink=1" class="new" title="Raytracing New/jp (page does not exist)">POV-Rayオブジェクトの新規作成</a>: ドキュメントに新しいPOV-Rayプロジェクトを挿入します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Raytracing_Export.png" class="image"><img alt="Raytracing Export.png" src="32px-Raytracing_Export.png" width="32" height="32" srcset="/wiki/images/thumb/0/00/Raytracing_Export.png/48px-Raytracing_Export.png 1.5x, /wiki/images/0/00/Raytracing_Export.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Raytracing_Export/jp&amp;action=edit&amp;redlink=1" class="new" title="Raytracing Export/jp (page does not exist)">ビューをPOV-Rayにエクスポート</a>: アクティブな3Dビューのカメラ位置と内容全てをPOV-Rayファイルに書き込みます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Raytracing_Camera.png" class="image"><img alt="Raytracing Camera.png" src="32px-Raytracing_Camera.png" width="32" height="32" srcset="/wiki/images/thumb/d/d0/Raytracing_Camera.png/48px-Raytracing_Camera.png 1.5x, /wiki/images/d/d0/Raytracing_Camera.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Raytracing_Camera/jp&amp;action=edit&amp;redlink=1" class="new" title="Raytracing Camera/jp (page does not exist)">カメラをPOV-Rayにエクスポート</a>: アクティブな3Dビューのカメラ位置をPOV-Rayフォーマットでファイルに書き込みます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Raytracing_Part.png" class="image"><img alt="Raytracing Part.png" src="32px-Raytracing_Part.png" width="32" height="32" srcset="/wiki/images/thumb/c/c7/Raytracing_Part.png/48px-Raytracing_Part.png 1.5x, /wiki/images/c/c7/Raytracing_Part.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Raytracing_Part/jp&amp;action=edit&amp;redlink=1" class="new" title="Raytracing Part/jp (page does not exist)">部品をPOV-Rayにエクスポート</a>: 選択された部品オブジェクトをPOV-Rayファイルとして書き込みます</li></ul>
<p><br />
</p>
<h3><span class="mw-headline" id=".E3.83.93.E3.83.A5.E3.83.BC.E3.81.AE.E3.82.A8.E3.82.AF.E3.82.B9.E3.83.9D.E3.83.BC.E3.83.88">ビューのエクスポート</span></h3>
<p>もっとも簡単な方法は現在の3Dビューとその内容全てを<a rel="nofollow" class="external text" href="http://www.povray.org/">POV-ray</a>ファイルにエクスポートするというものです。まずCADデータを読み込むか作成するかし、適当な3D表示の位置に設定する必要があります。その後、Raytracingメニューから"Export View..."を選択します。
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:FreeCAD_Raytracing.jpg" class="image"><img alt="FreeCAD Raytracing.jpg" src="800px-FreeCAD_Raytracing.jpg" width="800" height="606" srcset="/wiki/images/8/80/FreeCAD_Raytracing.jpg 1.5x" /></a>
</p><p>結果*.povファイルの保存位置を尋ねられます。保存が終わると<a rel="nofollow" class="external text" href="http://www.povray.org/">POV-ray</a>でそれを開き、レンダリングすることができます。
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Povray.jpg" class="image"><img alt="Povray.jpg" src="Povray.jpg" width="805" height="825" /></a>
</p><p>普段、レンダラーで行うのと同じように大きくてきれいな画像を作成できます:
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Scharniergreifer_render.jpg" class="image"><img alt="Scharniergreifer render.jpg" src="800px-Scharniergreifer_render.jpg" width="800" height="640" srcset="/wiki/images/thumb/2/2e/Scharniergreifer_render.jpg/1200px-Scharniergreifer_render.jpg 1.5x, /wiki/images/2/2e/Scharniergreifer_render.jpg 2x" /></a>
</p>
<h3><span class="mw-headline" id=".E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88.E5.87.A6.E7.90.86_4">スクリプト処理</span></h3>
<p>モジュールの機能をPythonから使用する方法です
</p>
<pre>import Raytracing,RaytracingGui
OutFile = open('C:/Documents and Settings/jriegel/Desktop/test.pov','w')
OutFile.write(open(App.getResourceDir()+'Mod/Raytracing/Templates/ProjectStd.pov').read())
OutFile.write(RaytracingGui.povViewCamera())
OutFile.write(Raytracing.getPartAsPovray('Box',App.activeDocument().Box.Shape,0.800000,0.800000,0.800000))
OutFile.close()
del OutFile
</pre>
<h3><span class="mw-headline" id=".E3.83.AA.E3.83.B3.E3.82.AF">リンク</span></h3>
<p>POV-Rayについて
</p>
<ul><li> <a rel="nofollow" class="external free" href="http://www.spiritone.com/~english/cyclopedia/">http://www.spiritone.com/~english/cyclopedia/</a></li>
<li> <a rel="nofollow" class="external free" href="http://www.povray.org/">http://www.povray.org/</a></li>
<li> <a rel="nofollow" class="external free" href="http://en.wikipedia.org/wiki/POV-Ray">http://en.wikipedia.org/wiki/POV-Ray</a></li></ul>
<p><br />
</p>
<hr />
<p>現在、LuxRendererやYafarayといった複数のバックエンドをサポートするために新しくレンダラーワークベンチが開発中です。開発版を使用するための情報は<a href="Render_project.html" title="Render project">レンダラープロジェクト</a>で見ることができます。
</p><p>レンダラーモジュールの開発ステータスについては<a href="https://www.freecadweb.org/wiki/index.php?title=Raytracing_project/jp&amp;action=edit&amp;redlink=1" class="new" title="Raytracing project/jp (page does not exist)">レイトレーシングプロジェクト</a> を見てください。
</p><p>オープンソースのレンダラー(将来的に実装予定)
</p>
<ul><li> <a rel="nofollow" class="external free" href="http://www.yafaray.org/">http://www.yafaray.org/</a></li>
<li> <a rel="nofollow" class="external free" href="http://www.luxrender.net/">http://www.luxrender.net/</a></li></ul>
<p><br />
</p>
<h2><span class="mw-headline" id=".E7.94.BB.E5.83.8F.E3.83.AF.E3.83.BC.E3.82.AF.E3.83.99.E3.83.B3.E3.83.81">画像ワークベンチ</span></h2>
<p>画像モジュールは様々なタイプの<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Raster_graphics">ビットマップ画像</a>を扱うためのもので、FreeCADでそれらの画像を開くことを可能にします。現在のところ、このモジュールでは.bmp、.jpg、.pngそして.xpmの形式のファイルを分離表示されるビューワーウィンドウで開くことができます。またWebカメラからの画像をキャプチャーすることが可能なツールもあります。
</p>
<p><br />
</p>
<h2><span class="mw-headline" id=".E8.A3.BD.E5.9B.B3.E3.83.AF.E3.83.BC.E3.82.AF.E3.83.99.E3.83.B3.E3.83.81">製図ワークベンチ</span></h2>
<p>製図ワークベンチを使うと現在のドキュメントにシンプルな2Dオブジェクトを手軽に描くことができます。また描いた後でそれらを変更するためのツールもいくつか用意されています。ツールの一部は製図ワークベンチで作成したものだけでなく他のFreeCADオブジェクト全てに対して使用することができます。また完璧に動作するスナップシステムやオブジェクトと設定を管理するためのいくつかのユーティリティも提供されています。
</p><p><br />
</p>
<div id="itsfree" style="text-align:center;color:black;background:#FDE0A8;margin:1em 7em;padding:0.5em 2em;border:2px solid #FF5706;"><br />This template is now obsolete and is directly include in the original page<br /><br /></div>
<p><strike>===作図オブジェクト===
</p><p>オブジェクトを作成するためのツールです。
</p>
<ul><li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Line.png" class="image"><img alt="Draft Line.png" src="Draft_Line.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Line/jp" title="Draft Line/jp">2点線分</a>: 2点からなる線分を描きます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Wire.png" class="image"><img alt="Draft Wire.png" src="Draft_Wire.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Wire/jp" title="Draft Wire/jp">ワイヤー(複数の点からなる線分)</a>: 複数点の線分で作られる線を描きます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Circle.png" class="image"><img alt="Draft Circle.png" src="Draft_Circle.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Circle/jp" title="Draft Circle/jp"></a>: 中心と半径から円を描きます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Arc.png" class="image"><img alt="Draft Arc.png" src="Draft_Arc.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Arc/jp" title="Draft Arc/jp">円弧</a>: 中心、半径、開始角度と終了角度から円弧を描きます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Rectangle.png" class="image"><img alt="Draft Rectangle.png" src="Draft_Rectangle.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Rectangle/jp" title="Draft Rectangle/jp">四角形</a>: 2つの対点から四角形を描きます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Polygon.png" class="image"><img alt="Draft Polygon.png" src="Draft_Polygon.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Polygon/jp" title="Draft Polygon/jp">多角形</a>: 中心と半径から正多角形を描きます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_BSpline.png" class="image"><img alt="Draft BSpline.png" src="Draft_BSpline.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_BSpline/jp" title="Draft BSpline/jp">B-スプライン</a>: 点列からB-スプラインを描きます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Text.png" class="image"><img alt="Draft Text.png" src="Draft_Text.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Text/jp" title="Draft Text/jp">テキスト</a>: 複数行のテキストの注釈を描きます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Dimension.png" class="image"><img alt="Draft Dimension.png" src="Draft_Dimension.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Dimension/jp" title="Draft Dimension/jp">寸法</a>: 寸法の注釈を描きます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Point.png" class="image"><img alt="Draft Point.png" src="32px-Draft_Point.png" width="32" height="32" srcset="/wiki/images/thumb/c/c5/Draft_Point.png/48px-Draft_Point.png 1.5x, /wiki/images/c/c5/Draft_Point.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Point/jp" title="Draft Point/jp"></a>: 点オブジェクトを挿入します</li></ul>
<h3><span class="mw-headline" id=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E5.A4.89.E6.9B.B4_4">オブジェクトの変更</span></h3>
<p>既存のオブジェクトを変更するためのツールです。これらのツールは選択したオブジェクトに対して動作します。もしオブジェクトを選択していない場合にはオブジェクトを選択するように促します。
</p>
<ul><li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Move.png" class="image"><img alt="Draft Move.png" src="Draft_Move.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Move/jp" title="Draft Move/jp">移動</a>: オブジェクト(複数可)をある位置から別の位置へ移動します</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Rotate.png" class="image"><img alt="Draft Rotate.png" src="Draft_Rotate.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Rotate/jp" title="Draft Rotate/jp">回転</a>: 開始角から終了角へのオブジェクト(複数可)を回転します</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Offset.png" class="image"><img alt="Draft Offset.png" src="Draft_Offset.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Offset/jp" title="Draft Offset/jp">オフセット</a>: オブジェクトの線分を一定の距離だけ移動します</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Upgrade.png" class="image"><img alt="Draft Upgrade.png" src="Draft_Upgrade.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Upgrade/jp" title="Draft Upgrade/jp">アップグレード</a>: オブジェクトを結合し、1階層上のオブジェクトにします</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Downgrade.png" class="image"><img alt="Draft Downgrade.png" src="Draft_Downgrade.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Downgrade/jp" title="Draft Downgrade/jp">ダウングレード</a>: オブジェクトを解体し、1階層下のオブジェクトにします</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Trimex.png" class="image"><img alt="Draft Trimex.png" src="Draft_Trimex.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Trimex/jp" title="Draft Trimex/jp">トリム/延長</a>: オブジェクトをトリムまたは延長します</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Scale.png" class="image"><img alt="Draft Scale.png" src="Draft_Scale.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Scale/jp" title="Draft Scale/jp">スケール</a>: 選択したオブジェクト(複数可)を基点を中心にスケールします</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Edit.png" class="image"><img alt="Draft Edit.png" src="Draft_Edit.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Edit/jp" title="Draft Edit/jp">編集</a>: 選択したオブジェクトを編集します</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_PutOnSheet.png" class="image"><img alt="Draft PutOnSheet.png" src="Draft_PutOnSheet.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Drawing/jp" title="Draft Drawing/jp">ドローイング</a>: 選択されたオブジェクトを<a href="https://www.freecadweb.org/wiki/index.php?title=Drawing_Module/jp" title="Drawing Module/jp">ドローイングシート</a>に書き込みます</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Shape2DView.png" class="image"><img alt="Draft Shape2DView.png" src="Draft_Shape2DView.png" width="64" height="64" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Shape2DView/jp" title="Draft Shape2DView/jp">2Dビュー成形</a>: 別の3Dオブジェクトの平面化2Dビューであるような2Dオブジェクトを作成します</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_WireToBSpline.png" class="image"><img alt="Draft WireToBSpline.png" src="32px-Draft_WireToBSpline.png" width="32" height="32" srcset="/wiki/images/thumb/a/a4/Draft_WireToBSpline.png/48px-Draft_WireToBSpline.png 1.5x, /wiki/images/a/a4/Draft_WireToBSpline.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_WireToBSpline/jp" title="Draft WireToBSpline/jp">ワイヤーからB-スプラインへ</a>: ワイヤーからB-スプラインへの変換、またその逆変換を行います</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_AddPoint.png" class="image"><img alt="Draft AddPoint.png" src="32px-Draft_AddPoint.png" width="32" height="32" srcset="/wiki/images/thumb/9/9e/Draft_AddPoint.png/48px-Draft_AddPoint.png 1.5x, /wiki/images/9/9e/Draft_AddPoint.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_AddPoint/jp" title="Draft AddPoint/jp">点の追加</a>: ワイヤーまたはB-スプラインへ点を追加します</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_DelPoint.png" class="image"><img alt="Draft DelPoint.png" src="32px-Draft_DelPoint.png" width="32" height="32" srcset="/wiki/images/thumb/1/18/Draft_DelPoint.png/48px-Draft_DelPoint.png 1.5x, /wiki/images/1/18/Draft_DelPoint.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_DelPoint/jp" title="Draft DelPoint/jp">点の削除</a>: ワイヤーまたはB-スプラインから点を削除します</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Draft2Sketch.png" class="image"><img alt="Draft Draft2Sketch.png" src="32px-Draft_Draft2Sketch.png" width="32" height="32" srcset="/wiki/images/thumb/b/b2/Draft_Draft2Sketch.png/48px-Draft_Draft2Sketch.png 1.5x, /wiki/images/b/b2/Draft_Draft2Sketch.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Draft2Sketch/jp" title="Draft Draft2Sketch/jp">ドラフトからスケッチへ</a>: ドラフトオブジェクトからスケッチへの変換、またその逆変換を行います</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Array.png" class="image"><img alt="Draft Array.png" src="32px-Draft_Array.png" width="32" height="32" srcset="/wiki/images/thumb/c/c8/Draft_Array.png/48px-Draft_Array.png 1.5x, /wiki/images/c/c8/Draft_Array.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Array/jp" title="Draft Array/jp">配列</a>: 選択されたオブジェクトを円形または矩形に並べた配列を作成します</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_Clone.png" class="image"><img alt="Draft Clone.png" src="32px-Draft_Clone.png" width="32" height="32" srcset="/wiki/images/thumb/3/39/Draft_Clone.png/48px-Draft_Clone.png 1.5x, /wiki/images/3/39/Draft_Clone.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Clone/jp" title="Draft Clone/jp">複製</a>: 選択されたオブジェクトを複製します</li></ul>
<h3><span class="mw-headline" id=".E3.83.A6.E3.83.BC.E3.83.86.E3.82.A3.E3.83.AA.E3.83.86.E3.82.A3.E3.83.BC.E3.83.84.E3.83.BC.E3.83.AB_2">ユーティリティーツール</span></h3>
<p>右クリックのコンテキストメニューから利用可能な追加ツールです。選択されているオブジェクトに依存して変わります。
</p>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_SelectPlane.png" class="image"><img alt="Draft SelectPlane.png" src="32px-Draft_SelectPlane.png" width="32" height="32" srcset="/wiki/images/thumb/a/aa/Draft_SelectPlane.png/48px-Draft_SelectPlane.png 1.5x, /wiki/images/a/aa/Draft_SelectPlane.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_SelectPlane/jp" title="Draft SelectPlane/jp">作業平面の設定</a>: 標準ビューまたは選択された面から作業平面を設定します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_FinishLine.png" class="image"><img alt="Draft FinishLine.png" src="32px-Draft_FinishLine.png" width="32" height="32" srcset="/wiki/images/thumb/c/c1/Draft_FinishLine.png/48px-Draft_FinishLine.png 1.5x, /wiki/images/c/c1/Draft_FinishLine.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_FinishLine/jp" title="Draft FinishLine/jp">ラインを終了</a>: ワイヤー、B-スプラインの描画をラインが閉じないで終了します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_CloseLine.png" class="image"><img alt="Draft CloseLine.png" src="32px-Draft_CloseLine.png" width="32" height="32" srcset="/wiki/images/thumb/d/dc/Draft_CloseLine.png/48px-Draft_CloseLine.png 1.5x, /wiki/images/d/dc/Draft_CloseLine.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_CloseLine/jp" title="Draft CloseLine/jp">ラインを閉じる</a>: ワイヤー、B-スプラインの描画をラインを閉じて終了します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_UndoLine.png" class="image"><img alt="Draft UndoLine.png" src="32px-Draft_UndoLine.png" width="32" height="32" srcset="/wiki/images/thumb/d/dd/Draft_UndoLine.png/48px-Draft_UndoLine.png 1.5x, /wiki/images/d/dd/Draft_UndoLine.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_UndoLine/jp" title="Draft UndoLine/jp">ラインをアンドゥ</a>: ラインの最後の区間をアンドゥします</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_ToggleConstructionMode.png" class="image"><img alt="Draft ToggleConstructionMode.png" src="32px-Draft_ToggleConstructionMode.png" width="32" height="32" srcset="/wiki/images/thumb/7/76/Draft_ToggleConstructionMode.png/48px-Draft_ToggleConstructionMode.png 1.5x, /wiki/images/7/76/Draft_ToggleConstructionMode.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_ToggleConstructionMode/jp" title="Draft ToggleConstructionMode/jp">作成モードの切り替え</a>: ドラフト作成モードのオン/オフを切り替えます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_ToggleContinueMode.png" class="image"><img alt="Draft ToggleContinueMode.png" src="Draft_ToggleContinueMode.png" width="32" height="32" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_ToggleContinueMode/jp" title="Draft ToggleContinueMode/jp">継続モードの切り替え</a>: ドラフト継続モードのオン/オフを切り替えます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_ApplyStyle.png" class="image"><img alt="Draft ApplyStyle.png" src="32px-Draft_ApplyStyle.png" width="32" height="32" srcset="/wiki/images/thumb/1/16/Draft_ApplyStyle.png/48px-Draft_ApplyStyle.png 1.5x, /wiki/images/1/16/Draft_ApplyStyle.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Apply/jp" title="Draft Apply/jp">スタイルを適用</a>: 選択されたオブジェクトに現在のスタイルと色を適用します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_ToggleDisplayMode.png" class="image"><img alt="Draft ToggleDisplayMode.png" src="32px-Draft_ToggleDisplayMode.png" width="32" height="32" srcset="/wiki/images/thumb/0/00/Draft_ToggleDisplayMode.png/48px-Draft_ToggleDisplayMode.png 1.5x, /wiki/images/0/00/Draft_ToggleDisplayMode.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_ToggleDisplayMode/jp" title="Draft ToggleDisplayMode/jp">表示モードの切り替え</a>: 選択されたオブジェクトの表示モードを"フラットライン"または"ワイヤーフレーム"に切り替えます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_AddToGroup.png" class="image"><img alt="Draft AddToGroup.png" src="32px-Draft_AddToGroup.png" width="32" height="32" srcset="/wiki/images/thumb/5/56/Draft_AddToGroup.png/48px-Draft_AddToGroup.png 1.5x, /wiki/images/5/56/Draft_AddToGroup.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_AddToGroup/jp" title="Draft AddToGroup/jp">グループに追加</a>: ただちに選択されたオブジェクトを既存のグループに追加します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_SelectGroup.png" class="image"><img alt="Draft SelectGroup.png" src="32px-Draft_SelectGroup.png" width="32" height="32" srcset="/wiki/images/thumb/d/d9/Draft_SelectGroup.png/48px-Draft_SelectGroup.png 1.5x, /wiki/images/d/d9/Draft_SelectGroup.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_SelectGroup/jp" title="Draft SelectGroup/jp">グループの中身を選択</a>: 選択されたグループの中身を選択します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_ToggleSnap.png" class="image"><img alt="Draft ToggleSnap.png" src="32px-Draft_ToggleSnap.png" width="32" height="32" srcset="/wiki/images/thumb/2/25/Draft_ToggleSnap.png/48px-Draft_ToggleSnap.png 1.5x, /wiki/images/2/25/Draft_ToggleSnap.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_ToggleSnap/jp" title="Draft ToggleSnap/jp">スナップの切り替え</a>: <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Snap/jp" title="Draft Snap/jp">オブジェクトのスナップ</a>のオン/オフを切り替えます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_ToggleGrid.png" class="image"><img alt="Draft ToggleGrid.png" src="32px-Draft_ToggleGrid.png" width="32" height="32" srcset="/wiki/images/thumb/f/fc/Draft_ToggleGrid.png/48px-Draft_ToggleGrid.png 1.5x, /wiki/images/f/fc/Draft_ToggleGrid.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_ToggleGrid/jp" title="Draft ToggleGrid/jp">グリッドの切り替え</a>: グリッドのオン/オフを切り替えます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Draft_ShowSnapBar.png" class="image"><img alt="Draft ShowSnapBar.png" src="32px-Draft_ShowSnapBar.png" width="32" height="32" srcset="/wiki/images/thumb/c/c3/Draft_ShowSnapBar.png/48px-Draft_ShowSnapBar.png 1.5x, /wiki/images/c/c3/Draft_ShowSnapBar.png 2x" /></a> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_ShowSnapBar/jp" title="Draft ShowSnapBar/jp">スナップバーを表示</a>: <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Snap/jp" title="Draft Snap/jp">スナップ</a>ツールバーの表示/非表示を切り替えます</li></ul>
<p></strike>
</p>
<h3><span class="mw-headline" id=".E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E5.BD.A2.E5.BC.8F">ファイル形式</span></h3>
<p>製図モジュールによってFreeCADは以下のファイル形式をインポート、エクスポートできるようになっています。
</p>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_DXF/jp&amp;action=edit&amp;redlink=1" class="new" title="Draft DXF/jp (page does not exist)">Autodesk .DXF</a>: 2D-CADアプリケーションを使って作成された<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/AutoCAD_DXF">Drawing Exchange Format</a>ファイルのインポートとエクスポート</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_SVG/jp&amp;action=edit&amp;redlink=1" class="new" title="Draft SVG/jp (page does not exist)">SVG形状</a>: ベクター描画アプリケーションを使って作成された<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Scalable_Vector_Graphics">Scalable Vector Graphics</a>ファイルのインポートとエクスポート</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_OCA/jp&amp;action=edit&amp;redlink=1" class="new" title="Draft OCA/jp (page does not exist)">Open Cad format .OCA</a>: OCA/GCADファイルのインポートとエクスポート。将来的な可能性を秘めた新しい <a rel="nofollow" class="external text" href="http://groups.google.com/group/open_cad_format">オープンなCADファイル形式</a>です</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_DAT/jp&amp;action=edit&amp;redlink=1" class="new" title="Draft DAT/jp (page does not exist)">Airfoil Data Format .DAT</a>: <a rel="nofollow" class="external text" href="http://www.ae.illinois.edu/m-selig/ads/coord_database.html">翼型断面</a>の記述に使用されるDATファイルのインポート</li></ul>
<h3><span class="mw-headline" id=".E8.BF.BD.E5.8A.A0.E6.A9.9F.E8.83.BD">追加機能</span></h3>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Snap/jp" title="Draft Snap/jp">スナッピング</a>: 既存オブジェクトの特定位置に新しい点を配置できます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Constrain/jp" title="Draft Constrain/jp">拘束</a>: 既存の点に対して相対的な水平位置、垂直位置を指定して新しい点を配置できます</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Coordinates/jp" title="Draft Coordinates/jp">座標入力での作業</a>: 画面クリックの代わりに手動で座標を入力できます</li></ul>
<h3><span class="mw-headline" id=".E7.92.B0.E5.A2.83.E8.A8.AD.E5.AE.9A">環境設定</span></h3>
<ul><li> 製図モジュールには専用の<a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Preferences/jp" title="Draft Preferences/jp">環境設定</a>画面があります</li></ul>
<h3><span class="mw-headline" id=".E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88.E5.87.A6.E7.90.86_5">スクリプト処理</span></h3>
<p>製図モジュール機能には完全な<a href="https://www.freecadweb.org/wiki/index.php?title=Draft_API/jp" title="Draft API/jp">製図用API</a>があり、スクリプトやマクロからその機能を使用することができます
</p>
<h3><span class="mw-headline" id="Tutorials">Tutorials</span></h3>
<p><a href="https://www.freecadweb.org/wiki/index.php?title=Draft_tutorial/jp" title="Draft tutorial/jp">Draft tutorial</a>
</p>
<p><br />
</p>
<h1><span class="mw-headline" id=".E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88.E3.81.A8.E3.83.9E.E3.82.AF.E3.83.AD">スクリプトとマクロ</span></h1>
<h2><span class="mw-headline" id=".E3.83.9E.E3.82.AF.E3.83.AD.E3.81.A7.E3.81.AE.E4.BD.9C.E6.A5.AD">マクロでの作業</span></h2>
<p>マクロはFreeCADに複雑なアクションを作成するための便利な方法です。簡単にあなたが行う操作を記録したものを名前をつけて保存し、いつでも好きなときに再生することができます。マクロはpythonコマンドで記述されているので、それらを編集して非常に複雑なスクリプトを作成することができます。
</p>
<h3><span class="mw-headline" id=".E6.93.8D.E4.BD.9C.E6.96.B9.E6.B3.95">操作方法</span></h3>
<p>コンソール出力(メニュー Edit -&gt; Preferences -&gt; General -&gt; Macros -&gt; Show scripts commands in python consoleを有効にした場合は、FreeCADでは、ボタンを押すのなどのあなたが行うすべてのアクションがpythonコマンドを出力していることがわかります。 このコマンドはマクロに記録することができるものです。マクロを作成するための主なツールはマクロのツールバーです。<a href="https://www.freecadweb.org/wiki/index.php?title=File:Macros_toolbar.jpg" class="image"><img alt="Macros toolbar.jpg" src="Macros_toolbar.jpg" width="144" height="43" /></a>それには、4つのボタンがあります「記録」、「記録終了」、「編集」、「マクロの実行」です。
</p><p>それを使用することは非常に簡単です:「記録」ボタンを押すと、マクロに名前を付けるように求められます。その後、いくつかのアクションを実行します。作業が完了したら、「記録終了」ボタンをクリックして、あなたの行ったアクションが保存されます。ここで「編集」ボタンを押すとマクロダイアログを開くことができます。
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Macros.jpg" class="image"><img alt="Macros.jpg" src="Macros.jpg" width="381" height="408" /></a>
</p><p>マクロダイアログには、あなたのマクロを管理、編集、削除、新規作成ができます。マクロを編集する場合、コードに変更を加えることができるエディタウィンドウが開きます。
</p>
<h3><span class="mw-headline" id=".E4.BE.8B_2"></span></h3>
<p>「記録」ボタンを押して名前をつけてみましょう。"cylinder 10×10"にします。その後、<a href="https://www.freecadweb.org/wiki/index.php?title=Part_Workbench/jp" class="mw-redirect" title="Part Workbench/jp">パートワークベンチ</a>で、半径= 10、高さ= 10でシリンダを作成します。そして、「記録停止」ボタンを押してください。マクロ編集のダイアログでは、記録されているPythonのコードを見ることができ、必要に応じて変更を加えることができます。マクロを実行する簡単な方法は、マクロをエディタで開きツールバー上の「実行」ボタンを押します。
マクロは常にディスクに保存され、あなたが行ったすべての変更、または新しく作成したマクロはFreeCADを次回起動時も利用できるようになっています。
</p>
<h3><span class="mw-headline" id=".E3.82.AB.E3.82.B9.E3.82.BF.E3.83.9E.E3.82.A4.E3.82.BA">カスタマイズ</span></h3>
<p>もちろん、マクロを使用するたびに、エディタでマクロを開くのは実用的ではありません。 FreeCADは、マクロにキーボードショートカットを割り当てる、メニューのエントリに追加するなど、マクロを使用するためのはるかに優れた方法を提供します。マクロが作成されると、Tools -&gt; Customize メニューから設定を行うことができます
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Macros_config.jpg" class="image"><img alt="Macros config.jpg" src="Macros_config.jpg" width="400" height="276" /></a>
</p><p>この方法であなたのマクロをFreeCADの標準ツールのように使うことができます。これは、FreeCADのpythonスクリプトの力のおかげで、インターフェイスに独自のツールを簡単に追加することができます。Pythonスクリプティングについて詳細をお知りになりたい場合は<a href="Scripting.html" class="mw-redirect" title="Scripting">Scripting</a>ページを参照してください。
</p>
<h3><span class="mw-headline" id=".E8.A8.98.E9.8C.B2.E3.81.9B.E3.81.9A.E3.81.AB.E3.83.9E.E3.82.AF.E3.83.AD.E3.82.92.E4.BD.9C.E6.88.90.E3.81.99.E3.82.8B">記録せずにマクロを作成する</span></h3>
<p>また、直接GUI操作を記録せずに、マクロにpythonコードをコピー/ペーストすることができます。新しいマクロを作成・編集して、コードを貼り付けます。あなたのマクロはFreeCADの文書を保存するのと同じ方法で保存することができます。FreeCADを次回起動する時には、マクロは「Macro」メニューの"Installed Macros"項目の下に表示されます。
</p>
<h3><span class="mw-headline" id=".E3.83.9E.E3.82.AF.E3.83.AD.E3.83.AA.E3.83.9D.E3.82.B8.E3.83.88.E3.83.AA">マクロリポジトリ</span></h3>
<p><a href="Macros_recipes.html" title="Macros recipes">Macros recipes</a>ページには、あなたのFreeCADに追加できるいくつかの便利なマクロが紹介されています。
</p>
<p><br />
</p>
<h2><span class="mw-headline" id="python.E3.81.AE.E7.B4.B9.E4.BB.8B">pythonの紹介</span></h2>
<p>これは、Pythonをはじめる人のために作られた短いチュートリアルです。 <a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Python_%28programming_language%29">Python</a>はオープンソース、マルチプラットフォームの<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Programming_language">プログラミング言語</a>です。 Pythonは他の一般的なプログラミング言語と違い、あなたのようなはじめてのユーザーにとって非常に使いやすくするいくつかの機能を持っています。
</p><p><br />
</p>
<ul><li>人間が読みやすいように特別に設計されたので、それを学習し理解することは非常に容易であるされています。</li>
<li>C言語のようなコンパイル言語とは異なり、実行する前にコンパイルを必要とせずにコードを解釈します。あなたがそうしたい場合は、記述したコードはすぐに1行ずつ実行することができます。これは、ステップごとに実行されるので、簡単に学習でき、あなたのコード内のエラーを検出することが極めて容易になります。</li>
<li>スクリプト言語として他のプログラムに埋め込むことができます。 FreeCADは、埋め込まれたPythonインタプリタを持っているので、FreeCADの部品を操作する例えばジオメトリを作成することをFreeCADのPythonコードで書くことができます。これは非常に強力でプログラマが用意した"球体作成"のボタンをクリックするかわりに自由にかつ簡単に作成した独自のツールであなたが望む正確なジオメトリを作成することができます。</li>
<li>それは拡張可能であり、新しいPythonのモジュールをプラグインとして簡単にインストールし機能を拡張することができます。例えば、jpg画像の読み書き、Twitterとの通信、使用しているオペレーティングシステムによって実行されるタスクのスケジュール等のモジュールがあります。</li></ul>
<p>まずは、実際に使ってみましょう次は非常に簡単な紹介であることに注意してください。これは完全はチュートリアルではありません。しかし、私の希望は、後にFreeCADのメカニズムをより深く探求するための十分な基礎を得ることです。
</p>
<h2><span class="mw-headline" id=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.97.E3.83.AA.E3.82.BF">インタプリタ</span></h2>
<p>通常、コンピュータプログラムを書くとき、単にテキストエディタを使用するかほとんど場合は、特別なプログラミング環境のテキストエディタと周辺のツールを利用して
プログラムを書き、それをコンパイルして実行します。ほとんどの場合、記述中に誤りがあるとあなたのプログラムは動作しません。そして、何が悪かったのかを伝えるエラーメッセージが表示されます。あなたはテキストエディタに戻って、間違いを修正し、再度実行するということをプログラムが正常に動作するまで繰り返します。
</p><p>Pythonにおけるプロセスは、Pythonインタプリタの内部で透過的に実行できます。Pythonインタプリタは、Pythonウィンドウのコマンドプロンプトを使って簡単にPythonコードを入力することができます。お使いのコンピュータにPythonをインストールする場合は、WindowsもしくはMacの場合は<a rel="nofollow" class="external text" href="http://www.python.org">PythonのWebサイト</a>からダウンロードしてください。GNU/Linuxの場合はパッケージリポジトリからインストールしてくださいスタートメニューにPythonインタプリタが入ります。しかし、FreeCADは、ウィンドウ下部にPythonインタプリタが入っています。
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Screenshot_pythoninterpreter.jpg" class="image"><img alt="Screenshot pythoninterpreter.jpg" src="Screenshot_pythoninterpreter.jpg" width="614" height="228" /></a>
</p><p>表示されない場合は、View → Views → Python consoleをクリックしてください。
</p><p>インタプリタは、Pythonのバージョンを表示し、そしてコマンドプロンプトとなる&gt;&gt;&gt;のシンボルを表示します。ここへPythonコードを入力します。インタプリタでコードを書くことは簡単です1行は1命令です。あなたがEnterを押すと、入力したコードが実行されます。瞬時にコンパイルされます例えば、これを書いてください。
</p>
<pre>print "hello"
</pre>
<p><code>print</code> は言うまでもなく画面に何かを表示することを意味する特別なPythonのキーワードです。Enterキーを押すと、操作が実行され、"hello"というメッセージが表示されます。エラーにしたい場合は、次の例を書いてください:
</p>
<pre>print hello
</pre>
<p>Pythonは"hello"が何かを知らないということを教えてくれる。 「"」はその中身が文字列であることを指します。それはプログラミング用語において、ひとつのテキスト文字列fであることを示します。「"」がない場合、printコマンドは、helloがテキストの一部ではなく特別なPythonのキーワードだと思います。重要なことは、あなたがすぐにエラーになった通知を受けとれることです。上矢印を押して、FreeCADのインタプリタの場合はCtrl + 上矢印)、あなたが書いた最後のコマンドに戻って、それを修正することができます。
</p><p>Pythonインタプリタにもヘルプ機能があります。次の命令を試してください
</p>
<pre>help
</pre>
<p>または、例として、先ほどの「print hello」コマンドを使用して何が悪かったのかわからず"print"コマンドに関する具体的な情報が欲しい時は:
</p>
<pre>help("print")
</pre>
<p>あなたは、printコマンドが実行できるすべての完全な説明を得ることができます。
</p><p>今、私たちはインタプリタを使いこなせます。本気になって使いはじめましょう。
</p>
<h2><span class="mw-headline" id=".E5.A4.89.E6.95.B0">変数</span></h2>
<p>もちろん、"hello"を表示することが注目すべき点ではありません。より注目すべき点は、あなたが気づかなかったことをPythonが解釈して表示していることです。
これが変数の概念です。変数は単に名前をつけて値を格納しているのです。例えば次のように入力します。
</p>
<pre>a = "hello"
print a
</pre>
<p>何がおこったのか解説すると、"hello"という文字列をaという名前をつけて格納しました。この時点でaは未知の名前ではありませんprintコマンドなどで、どこでも使用することができます。スペースや句切り点を使用しないというような簡単なルールに守っていれば任意の名前を使用できます。この例は、非常によく使います。
</p>
<pre>hello = "my own version of hello"
print hello
</pre>
<p>見ましたかhelloはもう未定義の言葉ではありません。不運にもPythonで予約されているキーワードを選んだ場合はどうなりますか"print"という名前で文字列を格納したいとしましょう:
</p>
<pre>print = "hello"
</pre>
<p>Pythonは非常に知的であり、これが不可能であることを私たちに教えてくれます。いくつかの予約されたキーワードを持っており、変更することはできません。しかし、我々の独自の変数は、正確には変数と呼ばれており、いつでも変更することができます。たとえば、次のように
</p>
<pre>myVariable = "hello"
print myVariable
myVariable = "good bye"
print myVariable
</pre>
<p>myVariableの値を変更しました。また、変数をコピーすることができます
</p>
<pre>var1 = "hello"
var2 = var1
print var2
</pre>
<p>あなたの使う変数に適切な名前を付けることが重要であることに注意してください。なぜなら、長いプログラムを書こうとしたときに"a"という名前の変数が何のためにあるのか覚えられないと思います。しかし、あなたが例のようにmyWelcomeMessageという変数の名前を使用した場合、あなたはその変数を見たり使ったりするときに簡単に思い出すことができます。
</p>
<h2><span class="mw-headline" id=".E6.95.B0.E5.80.A4">数値</span></h2>
<p>もちろん、あなたがプログラムを作る上で文字列だけでなくすべての種類のデータ、特に数値を使うことを知っている必要があります。重要なことの一つにPythonでどのような種類のデータを使うことができるか知っておく必要があります。print helloの例題から printコマンドで"hello"という文字列を表示できることがわかりました。それは"を使用すると、printコマンドにおいてその後に続くのが文字列であることがわかりました。
</p><p>特別なPythonのキーワードを入力することにより、いつでも変数のデータ型が何なのか確認することができます:
</p>
<pre>myVar = "hello"
type(myVar)
</pre>
<p>これはmyVarの中身が'str'、つまりPython用語における文字列であることがわかります。また、他の基本的なデータ型には、整数型や浮動小数点数型などがあります:
</p>
<pre>firstNumber = 10
secondNumber = 20
print firstNumber + secondNumber
type(firstNumber)
</pre>
<p>これは、今までよりはるかに興味深いですが、それはないですか今、私たちは、すでに強力な電卓を持っていますそれが機能していることをよく見てください。Pythonは10と20が整数であることを認識しています。だからそれらは "int"型として格納されており、Pythonは整数として扱うことができます。この結果を見てください:
</p>
<pre>firstNumber = "10"
secondNumber = "20"
print firstNumber + secondNumber
</pre>
<p>見ましたかこれはPythonは2つの変数が数字ではなく単なる文字列として認識していることを意味しています。Pythonは、2つの文字列を合わせて一つにすることができますが、2つの合計を求めようとはしません。しかし、我々は、整数型のことも話題にしていました。浮動小数点型もあります。これらの違いは浮動小数点の数値は小数部を有することができ、整数の数値は、小数部を持っていないということです:
</p>
<pre>var1 = 13
var2 = 15.65
print "var1 is of type ", type(var1)
print "var2 is of type ", type(var2)
</pre>
<p>int型と浮動小数点型は問題なく一緒に混合することができます:
</p>
<pre>total = var1 + var2
print total
print type(total)
</pre>
<p>いいですか?もちろん合計は小数になります。 Pythonは自動的に結果が浮動小数点型であると判断しました。この例のように、いくつかのケースではPythonは自動的に何型かをを判断します。他のケースではそれはしていません。たとえば、次のように:
</p>
<pre>varA = "hello 123"
varB = 456
print varA + varB
</pre>
<p>これは、エラーになります。varAは文字列であり、varBのデータ型は整数型で、Pythonは何をすればいいのかわかりません。しかし、型の変換をPythonに強制することもできます:
</p>
<pre>varA = "hello"
varB = 123
print varA + str(varB)
</pre>
<p>これで、両方が文字列となり実行できます表示する時にvarBが"文字列"となっていますが、私たちはvarB自体を変更していないことに注意してください。varBを常に文字列にしたい場合は、次のようにします:
</p>
<pre>varB = str(varB)
</pre>
<p>また、場合によって整数型や浮動小数点型に変換するためにint()やfloat()を使用することができます:
</p>
<pre>varA = "123"
print int(varA)
print float(varA)
</pre>
<p><b>Pythonコマンドに関する注意</b>
</p><p>このセクションでprintコマンドをいくつかの方法で使用したことに気づいている必要があります。変数の値、合計、コンマで区切られたいくつかの事項、そしてtype()のようなPythonコマンドの結果を出力しています。これらの2つのコマンドを実行してみてはどうでしょうか:
</p>
<pre>type(varA)
print type(varA)
</pre>
<p>まったく同じ結果になります。それはインタプリタであり、すべてのものが画面上に自動的に表示されているからです。インタプリタの外で複雑なプログラムを書いて実行させようと思うと、自動的にすべてが画面上に表示されないので、printコマンドを使用する必要があります。しかし、今からここではそれは使わないでおきましょう。それよりはやいからです。だから簡単に書くことができます:
</p>
<pre>myVar = "hello friends"
myVar
</pre>
<p>そのPythonコマンドまたはキーワードのほとんどはtype()、int()、str()などのように括弧はコマンドとして動作することを伝えるために使用するとわかりました。唯一の例外は、実際は例外ではありませんがprintコマンドです。これは通常print("hello")のように動作します。しかし頻繁に使用されるのでPythonのプログラマは簡易版を作りました。
</p>
<h2><span class="mw-headline" id=".E3.83.AA.E3.82.B9.E3.83.88">リスト</span></h2>
<p>もう一つの興味深いデータ型がリストである。リストは、単にデータの配列です。""を使用して、テキスト文字列を定義するのと同じ方法で、[]を使用してリストを定義します。
</p>
<pre>myList = [1,2,3]
type(myList)
myOtherList = ["Bart", "Frank", "Bob"]
myMixedList = ["hello", 345, 34.567]
</pre>
<p>それが任意の型のデータで作成できることがわかります。変数も一緒にグループ化することができますので、リストは非常に便利です。その後、グループに対して様々な処理を行うことができます 次の例はグループ内のデータの数をカウントします:
</p>
<pre>len(myOtherList)
</pre>
<p>またはリストの中から1つのアイテムを取得します
</p>
<pre>myName = myOtherList[0]
myFriendsName = myOtherList[1]
</pre>
<p>あなたはlen()コマンドの結果からアイテムの合計数がわかり、0から始まるリストの"位置"がわかります。リスト内の最初のアイテムが常に0の位置にあるので、myOtherListで、"Bob"は2番目の位置になります。<a rel="nofollow" class="external text" href="http://diveintopython.org/native_data_types/lists.html">ここ</a>を読むことによってアイテムの並び替えや削除、追加など様々な操作をおこなうことができます。
</p><p>とても面白くて興味深い事:テキストの文字列は文字のリストに非常に似ています!これをやってみてください:
</p>
<pre>myvar = "hello"
len(myvar)
myvar[2]
</pre>
<p>通常、あなたがリストに対して実行できるすべての操作を文字列に対して行うことができます。実際にはリストも文字列も配列です。
</p><p>文字列、整数、浮動小数点数とリストの他には、<a rel="nofollow" class="external text" href="http://www.diveintopython.org/getting_to_know_python/dictionaries.html">辞書</a>にのっているような組み込みのデータ型だけではなく、<a rel="nofollow" class="external text" href="http://www.freenetpages.co.uk/hp/alan.gauld/tutclass.htm">クラス</a>を使用して独自のデータ型を作成することもできます。
</p>
<h2><span class="mw-headline" id=".E3.82.A4.E3.83.B3.E3.83.87.E3.83.B3.E3.83.88">インデント</span></h2>
<p>リストの一つのとても洗練された使用方法は、アイテムを参照して各要素で何らかの処理をすることです。例えばこれを見てください:
</p>
<pre>alldaltons = ["Joe", "William", "Jack", "Averell"]
for dalton in alldaltons:
print dalton + " Dalton"
</pre>
<p>リストを使って(再びプログラミング専門用語!)"for ... in ..."コマンドと各要素で何らかの処理を行いました。特殊な構文に注意してください。forコマンドは、:で完了するとこその次のコマンドを1ブロックのコマンドとします。コマンドラインに:を入力すると...コマンドプロンプトに変わります。これは:が行の終わりであることを示し次に入力される行が1ブロックであるとPythonは解釈します。
</p><p>Pythonはどのようにしてfor...in構文の中で実行する命令文がどれぐらいあるのかを判断するのでしょうかそのために、Pythonはインデントを使用しています。つまり、あなたの次の命令がすぐに実行されません。あなたは空白、連続した空白、またはタブ、連続したタブを使って記述します。他のプログラミング言語では、括弧で括るなどPythonとは違う方法を使っています。
あなたは<b>同じ</b>インデントを使用して次の命令を記述している限り、それらはfor-inのブロックの一部とみなされます。あなたは2つのスペースを使用して記述した後、次の行を4つにするとエラーが発生します。
作業が終わったら、インデントせずに別の行を書き込むか、または単にEnterを押せばfor-inのブロックから戻ってくることができます。
</p><p>インデントは幅の大きなインデントを例えば幅が大きいのでスペースの代わりにタブを使用する使う場合、大きなプログラムを書くときにどのような処理を実行しているかを明確にすることができるのでとてもクールです。for-in以外にもコードをインデントでブロックにする多くのコマンドがあります。
for-inコマンドは命令を繰り返し実行するようなものにも使用することができます。例えばrange()コマンドと組み合わせることができます。
</p><p><br />
</p>
<pre>serie = range(1,11)
total = 0
print "sum"
for number in serie:
print number
total = total + number
print "----"
print total
</pre>
<p>より複雑なもの:
</p>
<pre>alldaltons = ["Joe", "William", "Jack", "Averell"]
for n in range(4):
print alldaltons[n], " is Dalton number ", n
</pre>
<p>range()コマンドは、あなたが開始番号を指定しない場合0から始まる特性を持っており、最後の数は、指定した終了番号より1つ少なくなることに注意してください。それはもちろん、他のPythonコマンドでも同じです。例えば、次のように:
</p>
<pre>alldaltons = ["Joe", "William", "Jack", "Averell"]
total = len(alldaltons)
for n in range(total):
print alldaltons[n]
</pre>
<p>インデントされたブロックのもう一つの興味深い使用方法はifコマンドを使用することです。特定の条件が満たされる場合に限り、ブロックのコードを実行します。例えば:
</p>
<pre>alldaltons = ["Joe", "William", "Jack", "Averell"]
if "Joe" in alldaltons:
print "We found that Dalton!!!"
</pre>
<p>もちろん、これは常に最初のセンテンスを表示します。しかし、2行目を次のように書き換えると:
</p>
<pre>if "Lucky" in alldaltons:
</pre>
<p>何も表示されません。else:ステートメントを指定することができます。
</p>
<pre>alldaltons = ["Joe", "William", "Jack", "Averell"]
if "Lucky" in alldaltons:
print "We found that Dalton!!!"
else:
print "Such Dalton doesn't exist!"
</pre>
<h2><span class="mw-headline" id=".E9.96.A2.E6.95.B0">関数</span></h2>
<p><a rel="nofollow" class="external text" href="http://docs.python.org/reference/lexical_analysis.html#identifiers">標準のPythonコマンド</a>は、多くはありません。現在のバージョンのPythonには約30の標準コマンドがあり、すでにそれらのいくつかを知っています。しかし、独自のコマンドを考案できることを想像してみてください。さて、私たちは独自のコマンドを作ることができ、それは非常に簡単です。実際、多くの追加モジュールはあなたがコマンドを追加するだけでPythonに追加インストールされます。 Pythonでカスタムコマンドは関数と呼ばれ、このように構成されています。
</p>
<pre>def printsqm(myValue):
print str(myValue)+" square meters"
printsqm(45)
</pre>
<p>極めてシンプルです。def()コマンドは、新しい関数を定義しています。あなたはそれに名前を付け、括弧内には、我々は関数の中で使おうとしている引数を定義します。引数は、関数に渡されるデータです。例えば、len()コマンドを見てみましょう。len()を単独で記述する場合、Pythonは引数を必要と教えてくれます。つまり、あなたは、len()を使って何かをしたいですよねそして、例えば、あなたはlen(myList)と記述して、myListの長さを取得するとします。そしてmyListは、len()関数に渡す引数です。 len()関数は、渡された引数を使ってどのような処理を実行するのか定義されています。ここで行ったのと同じ処理です。
</p><p>"myValue"の名前は何でもかまいません、それは関数の内部でのみ使用されます。
あなたが変更できるのは名前だけですが、関数が要求するする引数の数にあわせて指定します。例えば、次の場合:
</p>
<pre>printsqm(45,34)
</pre>
<p><br />
エラーが発生します。この関数はただ1つの引数を受け取るようにプログラムされていますが、2つの引数、45および34を受け渡しました。その代わりにこのようなことができます:
</p>
<pre>def sum(val1,val2):
total = val1 + val2
return total
</pre>
<pre>sum(45,34)
myTotal = sum(45,34)
</pre>
<p>2つの引数を受け取り合計して、その値を返す関数を作りました。値を返すことは非常に便利です。なぜならmyTotal変数に格納するなど、関数の実行結果を使って何かを行うことができます。もちろん、インタプリタであり、すべてのものを表示されるので、次を実行してください:
</p>
<pre>sum(45,34)
</pre>
<p>画面に結果を表示したいと思っていても、関数の内部にまったく表示コマンドを組み込んでいないため、画面に何も表示されないでしょう。この部分についてはあなたが行う必要があるでしょう:
</p>
<pre>print sum(45,34)
</pre>
<p>何かが表示されています。機能の詳細をお読みください。<a rel="nofollow" class="external text" href="http://www.penzilla.net/tutorials/python/functions/">ここ</a>
</p>
<h2><span class="mw-headline" id=".E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB">モジュール</span></h2>
<p>今、Python使いこなすためには、最後に1つ必要なことがあります。それはどのようにファイルやモジュールを操作するかです。
</p><p>これまで、インタプリタで1行ずつPythonの命令を書いてきましたねもしいくつかの行をまとめて書くことができ、それらを一度にすべて実行できたらどうですかそれはもっと複雑なことをするためには手軽な手段です。さらに私たちの作ったものを保存することができます。まあ、それも非常に簡単です。単にテキストエディタWindowsのメモ帳などを開き、インタプリタでプログラムを記述するのと同様にPythonのプログラムをすべて書き、その後、.pyの拡張子でこのファイルをどこかに保存します。それだけです、あなたは完全なPythonプログラムを作ることができました。もちろん、メモ帳よりも便利なエディタがありますが、それはPythonプログラムは、テキストファイル以外の何者でもないことを示しているだけです。
</p><p>Pythonでプログラムを実行する方法は何百もあります。Windowsでは、単にファイルを右クリックしPythonでそれを開いて実行します。しかし、Pythonインタプリタから直接プログラムを実行することもできます。直接実行するには、Pythonインタプリタが実行しようとする.pyプログラムの保存場所を知っている必要があります。
</p><p>FreeCADでの最も簡単な方法は、FreeCADのbinフォルダまたはModフォルダのようにFreeCADのPythonインタプリタにデフォルトで設定されている場所にプログラムを配置することです。次のようなファイルを作成します:
</p>
<pre>
def sum(a,b):
return a + b
print "test.py succesfully loaded"
</pre>
<p>そして作成したファイルをFreeCADの/binディレクトリにtest.pyとして保存します。さて、FreeCADを起動しましょう、そしてインタプリタウィンドウへ次のように入力します。
</p>
<pre>import test
</pre>
<p>.pyの拡張子を除いたものです。これは単にインタプリタで1行ずつ書いて実行したかのように、ファイルの内容を実行します。sum関数が作成され、メッセージが出力されます。1つの大きな違いがありますimportコマンドは、ファイルに書かれたプログラムを実行するだけでなく今までのプログラム同様内部の関数を読み込むのでインタプリタで利用できるようになります。関数を含むファイルは、モジュールと呼ばれます。
</p><p>通常、インタプリタでsum()関数を記述し、実行するとき単に次のように入力します:
</p>
<pre>sum(14,45)
</pre>
<p>これは以前行ったとおりです。我々はsum()関数を含むモジュールをインポートすると、構文が少し異なっています。次のように入力します:
</p>
<pre>test.sum(14,45)
</pre>
<p>つまり、モジュールは"container"として読み込まれ、そのすべての関数は内部にあります。多くのモジュールをインポートし、すべての関数をうまく整理しておくことができるので、これは非常に有用です。したがって、基本的に、something.somethingElseのようにドットで区切ることによって、somethingElse関数がsomethingモジュールの内部にあることを意味しています。
</p><p>また、testの部分を記述せずにsum()関数のように、メインのインタプリタ空間に直接関数を読み込むことができます:
</p>
<pre>from test import *
sum(12,54)
</pre>
<p>基本的に、すべてのモジュールはそのように動作します。モジュールをインポートしてから、module.function(引数)のようにその関数を使用することができます。ほとんどすべてのモジュールが関数を定義し、新しいデータ型とクラスをインタプリタ、モジュール内でモジュールをインポートすることもできるのでPythonモジュールで使えるようになります。
</p><p>最後にもう一つ、非常に有用なものがあります。どのようなモジュールがありその内部にはどのような関数があってどのように使う(つまり必要とする引数の種類)かわかりますか?
Pythonがhelp()関数を持っていることをすでに知っています。次の操作をしてみましょう:
</p>
<pre>help()
modules
</pre>
<p>すべての利用可能なモジュールのリストが表示されます。対話式ヘルプから抜け出すには、qを入力し、それらのいずれかをインポートすることができます。dir()コマンドを使用してそのコンテンツを見ることができます。
</p>
<pre>import math
dir(math)
</pre>
<p>mathモジュールに含まれるすべての関数と同様、__doc__, __file__, __name__といった奇妙な名前が表示されます。__doc__ はドキュメントの文字列を表し、非常に便利です。既存のモジュールに含まれるすべての関数は使用方法に関する説明を__doc__に持っています。例えばmathモジュールにはsin関数含まれていることがわかります。それの使用方法が知りたいですか
</p>
<pre>print math.sin.__doc__
</pre>
<p>最後に少し使いやすい方法は:新しいモジュールをプログラミングするとき、時々プログラムのテストを行いたいです。一度、Pythonインタプリタでモジュールを小さく区切って新しいコードをテストするためにプログラムを記述します。
</p>
<pre>import myModule
myModule.myTestFunction()
</pre>
<p>しかし、myTestFunction()関数が正しく動作しませんかエディタに戻って修正します。そのとき、Pythonインタプリタを一度閉じて再度開くと簡単にモジュールを更新することができます。
</p>
<pre>reload(myModule)
</pre>
<h2><span class="mw-headline" id="FreeCAD.E3.81.A7.E3.81.AF.E3.81.98.E3.82.81.E3.82.8B">FreeCADではじめる</span></h2>
<p>Pythonのプログラムを作るためのアイデアが理解できた思います。そして、FreeCADがどのようなモジュールを提供しているか探し始めることができます。 FreeCADのPython関数は、すべてが異なるモジュールに整理されています。FreeCADを起動したときにそれらのいくつかはすでにロードインポートされます。だから、使うだけです。
</p>
<pre>dir()
</pre>
<p>ここを参照してください<a href="https://www.freecadweb.org/wiki/index.php?title=FreeCAD_Scripting_Basics/jp" title="FreeCAD Scripting Basics/jp">FreeCADの基本スクリプト</a>...
</p><p>もちろん、ここではPythonの世界のごく一部を見ました。ここでは言及しなかったことで、多くの重要な概念があります。ネット上には2つの非常に重要なPythonのリファレンスドキュメントがあります
</p>
<ul><li> <a rel="nofollow" class="external text" href="http://docs.python.org/reference/">Python公式リファレンス</a></li>
<li> <a rel="nofollow" class="external text" href="http://www.diveintopython.org/toc/index.html">Dive into Python</a> wikiブック</li></ul>
<p>これらをブックマークしてください!
</p>
<p><br />
</p>
<h2><span class="mw-headline" id="FreeCAD.E3.81.A7.E3.81.AEPython.E3.81.AB.E3.82.88.E3.82.8B.E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88.E5.87.A6.E7.90.86">FreeCADでのPythonによるスクリプト処理</span></h2>
<p>FreeCADはPythonスクリプトで完全に操作できるように一から作られています。FreeCADのほとんどの部分、インターフェースやシーンの内容、そしてDビューで表示される内容でさえも、内蔵のPythonインタプリタや自作のスクリプトからアクセスすることができます。このためFreeCADは現在利用できるエンジニアリング用アプリケーションの中でも、とことんカスタマイズ可能なアプリの一つでしょう。
</p><p>しかしいまのところ、Dオブジェクトを操作するための'ネィティブ'コマンドはほんの僅かしかありません。これは開発がいまだ初期段階であるということだけではなく、アプリケーションとしての特定の利用よりもCAD開発のためのプラットフォームを提供すること背景にある設計思想として優先しているからです。しかしFreeCADのpythonスクリプトは簡単なので、パワーユーザーやpythonプログラムを少しかじったことのあるユーザーが開発中の新しい機能を素早く調べる上で、大きな手助けとなるでしょう。Pythonは最も人気のあるインタプリタ言語の一つで、それは学ぶのが簡単であると言われているためでもあります。あなたもすぐに独自のFreeCAD'パワーユーザー'スクリプトを作成できる様になるでしょう。
</p><p>もしPythonに慣れていなければ、インターネット上でチュートリアルを検索することをお勧めします。まずはPythonの構造をざっと見ることです。Pythonはとても簡単に学ぶことのできる言語で、これは特にインタプリタで実行できることが大きいでしょう。単純なコマンドから完全なプログラムまで、一切コンパイルする必要がなく、その場で実行することができるのです。FreeCADは内蔵のpythonインタプリタを持っています。もし以下に示すような"Python console"という名前のウインドウが見つからなければ、View -&gt; Views -&gt; Python consoleからインタプリタを起動してください。
</p>
<h3><span class="mw-headline" id=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.97.E3.83.AA.E3.82.BF_2">インタプリタ</span></h3>
<p>インタプリタから、システムにインストールされている全てのPythonモジュールにアクセスすることができます。また内蔵のFreeCADモジュールや、後から追加インストールしたFreeCADモジュールへもアクセスが可能です。次のスクリーンショットはPythonインタプリタです。
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Screenshot_pythoninterpreter.jpg" class="image" title="FreeCADのPythonインタプリタ"><img alt="FreeCADのPythonインタプリタ" src="Screenshot_pythoninterpreter.jpg" width="614" height="228" /></a>
</p><p>インタプリタではPythonコードの実行と利用可能なクラスや関数の閲覧が可能です。またFreeCADはFreeCADの新世界を探索するためのとても便利なクラスブラウザを提供しています。既知のクラス名に続いてピリオドをタイプするとこれはそのクラスから何かを追加するという意味です、クラスブラウザウインドウが開き、利用可能なサブクラスとメソッドをナビゲートすることができます。ここで何かを選択すると関連するヘルプテキストがある場合ですが表示されます。
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Screenshot_classbrowser.jpg" class="image" title="FreeCADクラスブラウザ"><img alt="FreeCADクラスブラウザ" src="Screenshot_classbrowser.jpg" width="614" height="228" /></a>
</p><p>では<b>Gui.</b><b>App.</b> をタイプして何が起こるのか見てください。モジュールやクラスの内容を調べるもう一つのより一般的な方法は、print dir()コマンドを使うことです。たとえば、<b>print dir()</b> とタイプすると、現在FreeCADで読み込まれている全てのモジュールをリストします。<b>print dir(App)</b> はAppモジュールに含まれている全ての内容を表示します。
</p><p>インタプリタのもう一つの便利な機能は、コマンドの履歴を遡ることができ、前に入力したコードの行を取り出せることです。コマンドの履歴の移動は、Ctrl+上、またはCtrl+下です。
</p><p>インタプリタウインドウ内での右クリックで、全てのコマンド履歴のコピー(完全なスクリプトを作成する前に処理を試したい場合に便利です)や、ファイルの絶対パスの挿入などの複数のオプションが利用できます。
</p>
<h3><span class="mw-headline" id="python.E3.81.AE.E3.83.98.E3.83.AB.E3.83.97">pythonのヘルプ</span></h3>
<p>FreeCADのヘルプメニューには”Python help”という名前のついた項目があり、FreeCADで利用可能な全てのPythonモジュールについての、リアルタイムで生成された完全なドキュメントを持ったブラウザが開きます。これには、Python、FreeCAD内蔵モジュール、システムにインストール済みのモジュール、そしてFreeCADの追加モジュールのドキュメントが含まれます。利用できるドキュメントは、各モジュールの開発者が自分のコードにどれだけドキュメントを入れる努力をしているかによりますが、ほとんどの場合、pythonモジュールはかなりよくドキュメント化されていると定評があります。このドキュメントのシステムを利用するためには、FreeCADウインドウを開いたままにする必要があります。
</p>
<h2><span class="mw-headline" id=".E5.86.85.E8.94.B5.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB">内蔵モジュール</span></h2>
<p>FreeCADは、グラフィカルユーザーインターフェース抜きでも実行できるように設計されているため、ほとんど全ての機能が2つのグループに分けられています。Appと名づけられたコアとなる機能と、Guiと名づけられたGUIの機能です。このため、つの主要な内蔵モジュールはAppとGuiと呼ばれています。この2つのモジュールは内蔵インタプリタ外部のスクリプトからも、FreeCADとFreeCADGuiという名前でそれぞれアクセスできます。
</p>
<ul><li><b>Appモジュール</b> では、アプリケーション自身に関連する全ての内容が見つかります。ファイルやドキュメントのオープンとクローズのメソッドや、アクティブなドキュメントの設定、その内容のリスト化などです。</li></ul>
<ul><li><b>GUIモジュール</b> では、Guiの構成要素の管理とアクセスのためのツールが見つかります。ワークベンチとそのツールバーや、より興味深い、FreeCADの全内容のグラフィカル表現です。</li></ul>
<p>モジュールの内容を全てリストにするのはFreeCADの開発に伴いその内容も急増していくので少々非生産的な仕事です。しかし提供されているつの閲覧ツールクラスブラウザとpythonヘルプでいつでもモジュールの最新の完全なドキュメントを得られるはずです。
</p>
<h3><span class="mw-headline" id="App.E3.81.A8Gui.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88">AppとGuiオブジェクト</span></h3>
<p>先ほど述べたように、FreeCADの全ての機能はコアと表現に別れています。これには3Dオブジェクトも含まれています。Appモジュールを介してオブジェクトのプロパティ定義FreeCADで機能と呼ばれるものにアクセスすることができ、そしてGuiモジュールを介してそれらのスクリーン上での表現方法を変えることができます。たとえば立方体はそれを定義するプロパティである長さや幅、高さなどを持ち、これらはAppオブジェクトに格納されています。また表現のプロパティである、面の色や描画方法などは対応するGuiオブジェクトに格納されています。
</p><p>このようなやり方は、視覚的な部分をまったく気にすることなくアルゴリズムをその機能の定義部分でのみ動作するようにさせたり、ドキュメントの内容をリストやスプレッドシートや要素解析などのノングラフィカルなアプリケーションへ出力するなどの、幅広い利用を可能にしています。
</p><p><br />
ドキュメント内のどのAppオブジェクトも対応するGuiオブジェクトが存在します。ドキュメントそれ自体も実際にはAppとGuiオブジェクトを持っています。これはもちろんFreeCADを完全なインターフェイスで実行したときに有効になります。コマンドラインバージョンではGUIが存在しないのでAppオブジェクトのみが利用できます。オブジェクトのGui部分はAppオブジェクトが"再計算する"とマークされたときに再び生成されます例えばパラメータがひとつ変更された時、そのためGuiオブジェトに対して直接行った操作が消えてしまう可能性があることに注意してください。
</p><p>App部分にアクセスするためには、次のように入力します。
</p>
<pre>myObject = App.ActiveDocument.getObject"ObjectName"
</pre>
<p>ここで"ObjectName"はオブジェクトの名前です。また次のように入力することもできます。
</p>
<pre>myObject = App.ActiveDocument.ObjectName
</pre>
<p>同じオブジェクトのGUI部分へアクセスするには、次のように入力します。
</p>
<pre>myViewObject=Gui.ActiveDocument.getObject"ObjectName"
</pre>
<p>ここで"ObjectName"はオブジェクトの名前です。また次のように入力することもできます。
</p>
<pre>myViewObject = App.ActiveDocument.ObjectName.ViewObject
</pre>
<p>GUIを持っていない場合には例えばコマンドラインモード、最後の行はNoneが帰ってきます。
</p>
<h3><span class="mw-headline" id=".E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88">ドキュメントオブジェクト</span></h3>
<p>FreeCAD上であなたが行った全ての内容はドキュメントの中に存在しています。ドキュメントはジオメトリを持ち、ファイルに保存することができます。また複数のドキュメントを同時に開くこともできます。ドキュメントはジオメトリと同じくAppやGUIオブジェクトを内部に持っています。Appオブジェクトには実際のジオメトリ定義が含まれていますが、一方でGUIオブジェクトはドキュメントのさまざまなビューを含んでいます。あなたは複数のウインドウを開き、そのそれぞれで異なる倍率や視点でビューを表示することができます。これらのビューは全てドキュメントのGUIオブジェクトの一部です。
</p><p>現在開いているアクティブなドキュメントのApp部分にアクセスするには次のように入力します。
</p>
<pre>myDocument = App.ActiveDocument
</pre>
<p>新しいドキュメントを作成するには次のように入力します。
</p>
<pre>myDocument = App.newDocument"Document Name"
</pre>
<p>現在開いているアクティブなドキュメントのGui部分にアクセスするには次のように入力します。
</p>
<pre>myGuiDocument = Gui.ActiveDocument
</pre>
<p>現在のビューにアクセスするには次のように入力します。
</p>
<pre>myView = Gui.ActiveDocument.ActiveView
</pre>
<h2><span class="mw-headline" id=".E8.BF.BD.E5.8A.A0.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB.E3.81.AE.E4.BD.BF.E7.94.A8">追加モジュールの使用</span></h2>
<p>FreeCADモジュールとFreeCADGuiモジュールが果たす役割はFreeCADドキュメントでのオブジェクトの作成と管理だけです。これらのモジュールはジオメトリーの作成や変更といった処理は全く行いません。ジオメトリーの種類は複数にわたり、それらはそれぞれの特定のジオメトリー型の管理に特化した追加モジュールによって管理されるためです。例えば<a href="https://www.freecadweb.org/wiki/index.php?title=Part_Module/jp" title="Part Module/jp">パートモジュール</a> はOpenCascadeカーネルを使用してOpenCascadeが作成された目的であるところの<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Boundary_representation">B-rep</a>型ジオメトリーの作成と操作を行うことができます。<a href="https://www.freecadweb.org/wiki/index.php?title=Mesh_Module/jp" class="mw-redirect" title="Mesh Module/jp">メッシュモジュール</a>はメッシュオブジェクトの作成と変更を行うことができます。この様にFreeCADは幅広い種類のオブジェクト型を扱うことができ、それらを同じドキュメント内で同時に保持することができます。また今後も新しい型を簡単に追加していくことができるのです。
</p>
<h3><span class="mw-headline" id=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E4.BD.9C.E6.88.90">オブジェクトの作成</span></h3>
<p>各モジュールはそれぞれの方法でジオメトリーを取り扱いますが一つだけ全てのモジュールで行うことのできる処理があります。ドキュメント内でのオブジェクトの作成です。一方でFreeCADドキュメントの方でもモジュールによって提供される利用可能なオブジェクト型を認識することができます
</p>
<pre>FreeCAD.ActiveDocument.supportedTypes()
上記を行うと作成することのできる全てのオブジェクトがリストアップされます。例としてメッシュ(メッシュモジュールによって扱われます)とパート(パートモジュールによって扱われます)を作ってみましょう:
myMesh = FreeCAD.ActiveDocument.addObject("Mesh::Feature","myMeshName")
myPart = FreeCAD.ActiveDocument.addObject("Part::Feature","myPartName")
</pre>
<p>一つ目の引数はオブジェクトの型で、二つ目の引数はオブジェクトの名前です。作成した二つのオブジェクトはほとんど同じように見えます。ジオメトリーはまだ設定されておらず、dir(myMesh)やdir(myPart)で調べるとそのプロパティはほとんど同じです。一つだけ異なるのはmyMeshには"Mesh"プロパティがあり、"Part"には"Shape"プロパティがあることです。これがメッシュやパートのデータが保存される場所です。例として立方体パートを作成してmyPartオブジェクトに設定してみましょう
</p>
<pre>import Part
cube = Part.makeBox(2,2,2)
myPart.Shape = cube
</pre>
<p>試しにcubeをmyMeshのMeshプロパティに設定してみてください。は間違った型である、というエラーメッセージでエラーが返されるはずです。これらのプロパティは特定の型のみ設定できるように作られているからです。myMeshのMeshプロパティにはMeshモジュールで作成したインスタンスしか保存できないのです。またほとんどのモジュールにはドキュメントにそのジオメトリーを追加するためのシュートカットがあることを憶えておいてください。
</p>
<pre>import Part
cube = Part.makeBox(2,2,2)
Part.show(cube)
</pre>
<h3><span class="mw-headline" id=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E5.A4.89.E6.9B.B4_5">オブジェクトの変更</span></h3>
<p>オブジェクトの変更も同じように行います:
</p>
<pre>import Part
cube = Part.makeBox(2,2,2)
myPart.Shape = cube
</pre>
<p>それではもう少し形状を大きく変更しましょう:
</p>
<pre>biggercube = Part.makeBox(5,5,5)
myPart.Shape = biggercube
</pre>
<h3><span class="mw-headline" id=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E5.95.8F.E3.81.84.E5.90.88.E3.82.8F.E3.81.9B.E5.87.A6.E7.90.86">オブジェクトの問い合わせ処理</span></h3>
<p>以下のようにするといつでもオブジェクトの型を見ることができます:
</p>
<pre>myObj = FreeCAD.ActiveDocument.getObject("myObjectName")
print myObj.Type
</pre>
<p>またオブジェクトが基本オブジェクトPart FeatureやMesh Featureなどから継承されたものかどうか調べるには以下のようにします
</p>
<pre> print myObj.isDerivedFrom("Part::Feature")
</pre>
<p>さあ、これで本当にFreeCADで遊び始めることができます<a href="https://www.freecadweb.org/wiki/index.php?title=Part_Module/jp" title="Part Module/jp">パートモジュール</a>を使って何ができるかについては<a href="https://www.freecadweb.org/wiki/index.php?title=Topological_data_scripting/jp" title="Topological data scripting/jp">パートのスクリプト処理</a>ページを、 <a href="https://www.freecadweb.org/wiki/index.php?title=Mesh_Module/jp" class="mw-redirect" title="Mesh Module/jp">メッシュモジュール</a>を使った作業については<a href="https://www.freecadweb.org/wiki/index.php?title=Scripting/jp" title="Mesh Scripting/jp">メッシュのスクリプト処理</a>ページを読んでください。パートモジュールやメッシュモジュールはほぼ完成して幅広く使用されていますが、<a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Module/jp" title="Draft Module/jp">製図モジュール</a>などの他のモジュールにも便利な<a href="Draft_API.html" title="Draft API">スクリプト処理用</a>APIがあることを憶えておいてください。各モジュールの完全なリストとそこで利用可能なツールについては<a href="https://www.freecadweb.org/wiki/index.php?title=Category:API/jp" title="Category:API/jp">Category:API/jp</a>セクションを見てください。
</p>
<p><br />
</p>
<h3><span class="mw-headline" id=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB_2">はじめに</span></h3>
<p>まず、メッシュモジュールをインポートする必要があります:
</p>
<pre>import Mesh
</pre>
<p>これで、FreeCADのC++ Meshカーネルの関数を容易に使うことができるMeshモジュールとMeshクラスへのアクセス権限があります。
</p>
<h3><span class="mw-headline" id=".E4.BD.9C.E6.88.90.E3.81.A8.E8.AA.AD.E3.81.BF.E8.BE.BC.E3.81.BF">作成と読み込み</span></h3>
<p>空のメッシュオブジェクトを作成するには、標準のコンストラクタを使用します。
</p>
<pre>mesh = Mesh.Mesh()
</pre>
<p>また、ファイルからオブジェクトを作成することができます
</p>
<pre>mesh = Mesh.Mesh('D:/temp/Something.stl')
</pre>
<p>(互換性のあるファイルタイプのリストは'Meshes'で見ることができます。<a href="/wiki/Feature_list/jp#IO" title="Feature list/jp">ここ</a>
または頂点座標で記述された三角形の集合体から作成します。
</p>
<pre>planarMesh = [
# triangle 1
[-0.5000,-0.5000,0.0000],[0.5000,0.5000,0.0000],[-0.5000,0.5000,0.0000],
#triangle 2
[-0.5000,-0.5000,0.0000],[0.5000,-0.5000,0.0000],[0.5000,0.5000,0.0000],
]
planarMeshObject = Mesh.Mesh(planarMesh)
</pre>
<p>メッシュカーネルは、一致する点やエッジをソートすることによってトポロジー的に正しいデータ構造を作成する手助けをします。
</p><p>後でメッシュデータを表示してテストし、メッシュデータを調べることができます。
</p>
<h3><span class="mw-headline" id=".E3.83.A2.E3.83.87.E3.83.AA.E3.83.B3.E3.82.B0">モデリング</span></h3>
<p>PythonスクリプトのBuildRegularGeoms.pyを使用すると、正常なジオメトリを作成することができます。
</p>
<pre>import BuildRegularGeoms
</pre>
<p>このスクリプトは、球・楕円・円柱・ドーナツ形・円錐と同様にシンプルな回転体を定義するためのメソッドを提供します。そしてそれはまた、単純な立方体を作成するためのメソッドを持っています。
ドーナツ形状を作成するには、例えば以下のように行うことができます。
</p>
<pre>t = BuildRegularGeoms.Toroid(8.0, 2.0, 50) # list with several thousands triangles
m = Mesh.Mesh(t)
</pre>
<p>最初の2つのパラメータはドーナツ形の半径を定義し、3番目のパラメータは形状を構成する三角形状のサブサンプリング係数です。この値が高いほど、より滑らかになり、低いと粗くなります。
Meshクラスは、モデリングの目的で使用できるブール関数のセットを提供します。それは、和・積と2つのメッシュオブジェクトの差を提供します。
</p>
<pre>m1, m2 # are the input mesh objects
m3 = Mesh.Mesh(m1) # create a copy of m1
m3.unite(m2) # union of m1 and m2, the result is stored in m3
m4 = Mesh.Mesh(m1)
m4.intersect(m2) # intersection of m1 and m2
m5 = Mesh.Mesh(m1)
m5.difference(m2) # the difference of m1 and m2
m6 = Mesh.Mesh(m2)
m6.difference(m1) # the difference of m2 and m1, usually the result is different to m5
</pre>
<p>最後に、その完全な例は、球とシリンダの交点を計算します。
</p>
<pre>import Mesh, BuildRegularGeoms
sphere = Mesh.Mesh( BuildRegularGeoms.Sphere(5.0, 50) )
cylinder = Mesh.Mesh( BuildRegularGeoms.Cylinder(2.0, 10.0, True, 1.0, 50) )
diff = sphere
diff.difference(cylinder)
d = FreeCAD.newDocument()
d.addObject("Mesh::Feature","Diff_Sphere_Cylinder").Mesh=diff
d.recompute()
</pre>
<h3><span class="mw-headline" id=".E8.AA.BF.E6.9F.BB.E3.81.A8.E3.83.86.E3.82.B9.E3.83.88">調査とテスト</span></h3>
<h3><span class="mw-headline" id=".E7.8B.AC.E8.87.AA.E3.81.AE.E3.82.A2.E3.83.AB.E3.82.B4.E3.83.AA.E3.82.BA.E3.83.A0.E3.82.92.E6.9B.B8.E3.81.8F">独自のアルゴリズムを書く</span></h3>
<h3><span class="mw-headline" id=".E3.82.A8.E3.82.AF.E3.82.B9.E3.83.9D.E3.83.BC.E3.83.88">エクスポート</span></h3>
<p>Pythonのモジュールにメッシュを書くことができます
</p>
<pre>m.write("D:/Develop/Projekte/FreeCAD/FreeCAD_0.7/Mod/Mesh/SavedMesh.py")
import SavedMesh
m2 = Mesh.Mesh(SavedMesh.faces)
</pre>
<h3><span class="mw-headline" id="GUI.E9.96.A2.E9.80.A3">GUI関連</span></h3>
<h3><span class="mw-headline" id=".E9.9B.91.E8.A8.98">雑記</span></h3>
<p>メッシュ関連スクリプトの広範な(ハードな使い方)のソースは、メッシュモジュールのユニットテストスクリプトです。
このユニットテストでは文字通りすべてのメソッドが呼び出され、すべてのプロパティ/属性が微調整されています。
そして十分な情報がほしいときは、<a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Mesh/App/MeshTestsApp.py?view=markup">Unit Test module</a>を見てください。
</p>
<p><br />
</p>
<p>このページではpythonから<a href="https://www.freecadweb.org/wiki/index.php?title=Part_Module/jp" title="Part Module/jp">Part形状</a>を作成・変更する複数の方法について説明しています。もしpythonを初めて使うのであればこのページを読む前に<a href="https://www.freecadweb.org/wiki/index.php?title=Introduction_to_Python/jp" title="Introduction to Python/jp">pythonのスクリプト処理</a><a href="https://www.freecadweb.org/wiki/index.php?title=FreeCAD_Scripting_Basics/jp" title="FreeCAD Scripting Basics/jp">FreeCADでpythonのスクリプト処理がどの様に動作するのか</a>について読むことをお勧めします。
</p>
<h2><span class="mw-headline" id=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB_3">はじめに</span></h2>
<p>FreeCADのpythonインタプリタや外部のスクリプトから、直接、<a href="https://www.freecadweb.org/wiki/index.php?title=Part_Module/jp" title="Part Module/jp">Partモジュール</a>を操作する方法を説明します。まず <a href="https://www.freecadweb.org/wiki/index.php?title=Scripting/jp" class="mw-redirect" title="Scripting/jp">スクリプティング</a>を参照してください。FreeCADでのpythonスクリプトの方法についてより詳しい情報が必要な場合は <a href="https://www.freecadweb.org/wiki/index.php?title=FreeCAD_Scripting_Basics/jp" title="FreeCAD Scripting Basics/jp">FreeCADスクリプトの基本ページ</a>を参照してください。
</p>
<h3><span class="mw-headline" id=".E3.82.AF.E3.83.A9.E3.82.B9.E3.83.BB.E3.83.80.E3.82.A4.E3.82.A2.E3.82.B0.E3.83.A9.E3.83.A0">クラス・ダイアグラム</span></h3>
<p>これはPartモジュールの最も重要なクラスに関する<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Unified_Modeling_Language">UML (Unified Modeling Language)</a>の概要図です:
</p>
<div class="center"><div class="floatnone"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Part_Classes.jpg" class="image" title="Partモジュール内のPythonのクラス"><img alt="Partモジュール内のPythonのクラス" src="Part_Classes.jpg" width="744" height="520" /></a></div></div>
<h3><span class="mw-headline" id=".E3.82.B8.E3.82.AA.E3.83.A1.E3.83.88.E3.83.AA.E3.83.BC">ジオメトリー</span></h3>
<p>ジオメトリーオブジェクトは、トポロジーオブジェクトを構成するための基本要素です:
</p>
<ul><li><b>Geom</b> ジオメトリーオブジェクトの基底クラスです。</li>
<li><b>Line</b> 始点と終点で定義された3次元の直線です。</li>
<li><b>Circle</b> 中心と始点と終点で定義される円や円の断片です。</li>
<li><b>......</b> じきに増えるでしょう;-)</li></ul>
<h3><span class="mw-headline" id=".E3.83.88.E3.83.9D.E3.83.AD.E3.82.B8.E3.83.BC">トポロジー</span></h3>
<p>次の種類のトポロジーのデータが利用できます:
</p>
<ul><li><b>Compound</b> 任意の種類のトポロジーオブジェクトのグループです。</li>
<li><b>Compsolid</b> ソリッドの合成とは、フェイスで接続するソリッドの集合です。ワイヤとシェルの概念をソリッドへ拡張したものです。</li>
<li><b>Solidソリッド</b> シェルで区切られた空間です。3次元です。</li>
<li><b>Shellシェル</b> エッジで接続しているフェイスの集合です。シェルは開閉できます。</li>
<li><b>Faceフェイス</b> 2次元では平面の一部分、3次元では表面の一部分です。形状は輪郭線で律則されています切り取られています。2次元です。</li>
<li><b>Wireワイヤ</b> 頂点で接続するエッジの集合です。エッジの接続に応じて、輪郭線は開閉します。</li>
<li><b>Edgeエッジ</b> 制約された曲線に対応する位相要素です。エッジは一般的に頂点によって律則されます。1次元です。</li>
<li><b>Vertex頂点</b> 点に対応するトポロジーの要素です。0次元です。</li>
<li><b>Shapeシェイプ</b> 上記全ての一般的な総称です 。</li></ul>
<h3><span class="mw-headline" id=".E3.82.AF.E3.82.A4.E3.83.83.E3.82.AF.E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB.EF.BC.9A.E3.82.B7.E3.83.B3.E3.83.97.E3.83.AB.E3.81.AA.E3.83.88.E3.83.9D.E3.83.AD.E3.82.B8.E3.83.BC.E3.81.AE.E4.BD.9C.E6.88.90">クイックサンプル:シンプルなトポロジーの作成</span></h3>
<div class="floatright"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Wire.png" class="image" title="Wire"><img alt="Wire" src="Wire.png" width="260" height="137" /></a></div>
<p>単純なジオメトリーからトポロジーを構築して作成しましょう。
サンプルでは画像に示す四つの頂点と二つの円と二本のラインからできたパーツを使用します。
</p>
<h4><span class="mw-headline" id=".E3.82.B8.E3.82.AA.E3.83.A1.E3.83.88.E3.83.AA.E3.83.BC.E3.81.AE.E4.BD.9C.E6.88.90">ジオメトリーの作成</span></h4>
<p>まずこのワイヤーの特徴的なジオメトリーパーツを作成しなければなりません。
また頂点のジオメトリーパーツが<b>同じ</b>位置に置かれるように注意する必要があります。
さもないと後でジオメトリーパーツをつなげてトポロジーにすることができなくなってしまいます!
</p><p>さあ、まず点を作成します:
</p>
<pre>from FreeCAD import Base
V1 = Base.Vector(0,10,0)
V2 = Base.Vector(30,10,0)
V3 = Base.Vector(30,-10,0)
V4 = Base.Vector(0,-10,0)
</pre>
<h4><span class="mw-headline" id=".E5.86.86.E5.BC.A7">円弧</span></h4>
<div class="floatright"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Circel.png" class="image" title="Circle"><img alt="Circle" src="Circel.png" width="111" height="135" /></a></div>
<p>円弧を作成するために補助点を作成し、三つの点を通る円弧を作成します:
</p>
<pre>VC1 = Base.Vector(-10,0,0)
C1 = Part.Arc(V1,VC1,V4)
# 2番目の円弧
VC2 = Base.Vector(40,0,0)
C2 = Part.Arc(V2,VC2,V3)
</pre>
<h4><span class="mw-headline" id=".E3.83.A9.E3.82.A4.E3.83.B3">ライン</span></h4>
<div class="floatright"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Line.png" class="image" title="Line"><img alt="Line" src="Line.png" width="175" height="76" /></a></div>
<p>ラインはシンプルに点から作成できます:
</p>
<pre>L1 = Part.Line(V1,V2)
# and the second one
L2 = Part.Line(V4,V3)
</pre>
<h4><span class="mw-headline" id=".E4.B8.80.E3.81.A4.E3.81.AB.E3.81.BE.E3.81.A8.E3.82.81.E3.82.8B">一つにまとめる</span></h4>
<p>最後のステップとしてジオメトリーベースの要素をまとめ、トポロジカルな形状に固定します:
</p>
<pre>S1 = Part.Shape([C1,C2,L1,L2])
</pre>
<h4><span class="mw-headline" id=".E3.83.97.E3.83.AA.E3.82.BA.E3.83.A0.E3.81.AE.E4.BD.9C.E6.88.90">プリズムの作成</span></h4>
<p>さてワイヤーを一定の方向に押し出して実際の3D形状を作成します
</p>
<pre>W = Part.Wire(S1.Edges)
P = W.extrude(Base.Vector(0,0,10))
</pre>
<h4><span class="mw-headline" id=".E5.85.A8.E4.BD.93.E3.81.AE.E8.A1.A8.E7.A4.BA">全体の表示</span></h4>
<pre>Part.show(P)
</pre>
<h2><span class="mw-headline" id=".E5.9F.BA.E6.9C.AC.E7.9A.84.E3.81.AA.E5.BD.A2.E7.8A.B6.E3.81.AE.E4.BD.9C.E6.88.90">基本的な形状の作成</span></h2>
<p>Partモジュールの"make ...()"メソッドを使って、簡単に基本的なトポロジーオブジェクトを作成することができます。
</p>
<pre>b=Part.makeBox(100,100,100)
Part.show(b)
</pre>
<p>使用可能な他のmake...()メソッドです:
</p>
<ul><li> <b>makeBox(l,w,h)</b>: 寸法が(l,w,h)で位置pからd方向を指す箱を作ります。</li>
<li> <b>makeCircle(radius)</b>: 指定した半径の円を作ります。</li>
<li> <b>makeCone(radius1,radius2,height)</b>: 指定した半径と高さの円錐を作成します。</li>
<li> <b>makeCylinder(radius,height)</b>: 指定した半径と高さを持つ円柱を作成します。</li>
<li> <b>makeLine((x1,y1,z1),(x2,y2,z2))</b>: 二点間を結ぶ線を作成します。</li>
<li> <b>makePlane(length,width)</b>: 指定した幅と長さの平面を作成します。</li>
<li> <b>makePolygon(list)</b>: 点のリストからポリゴンを作成します。</li>
<li> <b>makeSphere(radius)</b>: 指定された半径の球を作成します。</li>
<li> <b>makeTorus(radius1,radius2)</b>: 指定した半径のトーラスを作ります。</li></ul>
<p>Partモジュールで利用可能な全てのメソッドのリストについては<a href="https://www.freecadweb.org/wiki/index.php?title=Part_API/jp" title="Part API/jp">Part API</a>のページを見てください。
</p>
<h4><span class="mw-headline" id=".E5.BF.85.E8.A6.81.E3.81.AA.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB.E3.81.AE.E3.82.A4.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.88">必要なモジュールのインポート</span></h4>
<p>まずPartモジュールをインポートする必要があります。インポートを行うとその中身をpythonで使用できるようになります。
またFreeCADモジュール内にあるBaseモジュールもインポートします
</p>
<pre>import Part
from FreeCAD import Base
</pre>
<h4><span class="mw-headline" id=".E9.A0.82.E7.82.B9.E3.82.92.E4.BD.9C.E3.82.8B.E3.81.AB.E3.81.AF.EF.BC.9F">頂点を作るには?</span></h4>
<p><a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Euclidean_vector">ベクトル</a>は形状を作成する際に最も重要な情報の一つです。通常はデカルト座標のx、y、z、3つの数字を含みますただし必ずしも常にそうであるわけではありません。次の様にするとベクトルが作成されます
</p>
<pre>myVector = Base.Vector(3,2,0)
</pre>
<p>座標 x=3、y=2、z=0にベクトルを作成しました。Partではいろいろな場所でベクトルが使われています。
Partの形状ではVertex頂点と呼ばれる別の点表現も使用されています。これは実際の所はベクトル用のコンテナ
以外の何物でもありません。頂点のベクトルには次のようにしてアクセスします:
</p>
<pre>myVertex = myShape.Vertexes[0]
print myVertex.Point
&gt; Vector (3, 2, 0)
</pre>
<h4><span class="mw-headline" id=".E3.82.A8.E3.83.83.E3.82.B8.E3.82.92.E4.BD.9C.E3.82.8B.E3.81.AB.E3.81.AF.EF.BC.9F">エッジを作るには?</span></h4>
<p>エッジとは2つの頂点からなる線に他なりません
</p>
<pre>edge = Part.makeLine((0,0,0), (10,0,0))
edge.Vertexes
&gt; [&lt;Vertex object at 01877430&gt;, &lt;Vertex object at 014888E0&gt;]
</pre>
<p>注意: 二つのベクトルを渡してエッジを作成することもできます:
</p>
<pre>vec1 = Base.Vector(0,0,0)
vec2 = Base.Vector(10,0,0)
line = Part.Line(vec1,vec2)
edge = line.toShape()
</pre>
<p>エッジの長さと中心は次のようにするとわかります:
</p>
<pre>edge.Length
&gt; 10.0
edge.CenterOfMass
&gt; Vector (5, 0, 0)
</pre>
<h4><span class="mw-headline" id=".E7.94.BB.E9.9D.A2.E4.B8.8A.E3.81.AB.E5.BD.A2.E7.8A.B6.E3.82.92.E9.85.8D.E7.BD.AE">画面上に形状を配置</span></h4>
<p>さて今までエッジオブジェクトを作成して来ましたが画面上には何も表示されません。
これは今まではたんにpythonのオブジェクトを操作してきただけだからです。
FreeCADの3Dシーンは表示するように指示された場合にだけ表示されます。
これを行うには次の簡単なメソッドを使用します:
</p>
<pre>Part.show(edge)
</pre>
<p>FreeCADドキュメント内にオブジェクトが作成され、そのオブジェクトによって私たちの"エッジ"形状が設定されます。
作成したものを画面に表示する場合には常にこれを使用します。
</p>
<h4><span class="mw-headline" id=".E3.83.AF.E3.82.A4.E3.83.A4.E3.82.92.E4.BD.9C.E3.82.8B.E3.81.AB.E3.81.AF.EF.BC.9F">ワイヤを作るには?</span></h4>
<p>ワイヤとは複数のエッジでエッジのリスト、またはワイヤのリストから作成することができます:
</p>
<pre>edge1 = Part.makeLine((0,0,0), (10,0,0))
edge2 = Part.makeLine((10,0,0), (10,10,0))
wire1 = Part.Wire([edge1,edge2])
edge3 = Part.makeLine((10,10,0), (0,10,0))
edge4 = Part.makeLine((0,10,0), (0,0,0))
wire2 = Part.Wire([edge3,edge4])
wire3 = Part.Wire([wire1,wire2])
wire3.Edges
&gt; [&lt;Edge object at 016695F8&gt;, &lt;Edge object at 0197AED8&gt;, &lt;Edge object at 01828B20&gt;, &lt;Edge object at 0190A788&gt;]
Part.show(wire3)
</pre>
<p>Part.show(wire3)はワイヤーを構成する4つの線を表示します。他にも有用な情報を簡単に取得することができます
</p>
<pre>wire3.Length
&gt; 40.0
wire3.CenterOfMass
&gt; Vector (5, 5, 0)
wire3.isClosed()
&gt; True
wire2.isClosed()
&gt; False
</pre>
<h4><span class="mw-headline" id=".E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.82.92.E4.BD.9C.E3.82.8B.E3.81.AB.E3.81.AF.EF.BC.9F">フェイスを作るには?</span></h4>
<p>正しいフェイスは閉じたワイヤのみから作成することができます。
この例では、wire3は閉じたワイヤですが、wire2上記参照は閉じていません。
</p>
<pre>face = Part.Face(wire3)
face.Area
&gt; 99.999999999999972
face.CenterOfMass
&gt; Vector (5, 5, 0)
face.Length
&gt; 40.0
face.isValid()
&gt; True
sface = Part.Face(wire2)
face.isValid()
&gt; False
</pre>
<p>フェイスは面積を持ちますが、ワイヤやエッジは面積を持ちません。
</p>
<h4><span class="mw-headline" id=".E5.86.86.E3.82.92.E4.BD.9C.E3.82.8B.E3.81.AB.E3.81.AF.EF.BC.9F">円を作るには?</span></h4>
<p>円はこのようにシンプルに作成することができます:
</p>
<pre>circle = Part.makeCircle(10)
circle.Curve
&gt; Circle (Radius&#160;: 10, Position&#160;: (0, 0, 0), Direction&#160;: (0, 0, 1))
</pre>
<p>位置と方向をもった円を作るにはこのように書きます。
</p>
<pre>ccircle = Part.makeCircle(10, Base.Vector(10,0,0), Base.Vector(1,0,0))
ccircle.Curve
&gt; Circle (Radius&#160;: 10, Position&#160;: (10, 0, 0), Direction&#160;: (1, 0, 0))
</pre>
<p>ccircleは、xの原点からの距離が10で、x軸を向くように作成されています。
makeCircleは、位置と法線として、タプルではなくBase.Vector()のみを受けとります。
また開始角と終了角を与えることによって、円の一部を作成することができます:
</p>
<pre>from math import pi
arc1 = Part.makeCircle(10, Base.Vector(0,0,0), Base.Vector(0,0,1), 0, 180)
arc2 = Part.makeCircle(10, Base.Vector(0,0,0), Base.Vector(0,0,1), 180, 360)
</pre>
<p>arc1とarc2の両方を合わせると円になります。
角度は度単位で指定する必要があります。ラジアンが必要な場合は次の様に変換することができます。
degrees = radians * 180/PI
またはpythonの数学モジュールを使用しますimport mathが必要です
</p>
<pre>degrees = math.degrees(radians)
</pre>
<h4><span class="mw-headline" id=".E7.82.B9.E3.81.AB.E9.80.9A.E3.82.8B.E5.BC.A7.E3.82.92.E4.BD.9C.E3.82.8B.E3.81.AB.E3.81.AF.EF.BC.9F">点に通る弧を作るには?</span></h4>
<p>残念ながらmakeArc関数はありませんが、三点を通る弧を作成するPart.Arc関数があります。
この関数は、基本的には、中間点を通って開始点と終了点を結ぶ弧を仮定しています。
Part.Arcは弧オブジェクトを作成します。弧オブジェクトからエッジオブジェクトを作成するには.toShape()を呼びます。
これはPart.makeLineの代わりにPart.Lineを使用した時と同じです。
</p>
<pre>arc = Part.Arc(Base.Vector(0,0,0),Base.Vector(0,5,0),Base.Vector(5,5,0))
arc
&gt; &lt;Arc object&gt;
arc_edge = arc.toShape()
</pre>
<p>注意Arcは点としてタプルではなくBase.Vector()のみを受け取ります。
arc_edgeはPart.show(arc_edge)によって表示することができます。
円弧として円の一部を使用することも可能です:
</p>
<pre>from math import pi
circle = Part.Circle(Base.Vector(0,0,0),Base.Vector(0,0,1),10)
arc = Part.Arc(c,0,pi)
</pre>
<p>円弧はラインと同じようにエッジです。従ってこの方法はワイヤーに対しても使用することができます。
</p>
<h4><span class="mw-headline" id=".E3.83.9D.E3.83.AA.E3.82.B4.E3.83.B3.E3.82.92.E4.BD.9C.E3.82.8B.E3.81.AB.E3.81.AF.EF.BC.9F">ポリゴンを作るには?</span></h4>
<p>ポリゴンは複数の真っ直ぐなエッジからできたワイヤーに他なりません。
makePolygon関数は点のリストを受け取り、その点を通る線を作成します
</p>
<pre>lshape_wire = Part.makePolygon([Base.Vector(0,5,0),Base.Vector(0,0,0),Base.Vector(5,0,0)])
</pre>
<h4><span class="mw-headline" id=".E5.B9.B3.E9.9D.A2.E3.82.92.E4.BD.9C.E3.82.8B.E3.81.AB.E3.81.AF.EF.BC.9F">平面を作るには?</span></h4>
<p>平面は平坦な表面です。作成するためのメソッドは<b>makePlane(length,width,[start_pnt,dir_normal])</b>です。
初期値はstart_pnt=Vector(0,0,0)とdir_normal=Vector(0,0,1)です。
dir_normal=Vector(0,0,1)はz軸に面した平面を作成します。
dir_normal=Vector(1,0,0)はx軸に面した平面を作成します。
</p>
<pre>plane = Part.makePlane(2,2)
plane
&gt;&lt;Face object at 028AF990&gt;
plane = Part.makePlane(2,2, Base.Vector(3,0,0), Base.Vector(0,1,0))
plane.BoundBox
&gt; BoundBox (3, 0, 0, 5, 0, 2)
</pre>
<p>BoundBoxは、その対角線が3,0,0から始まり5,0,2)で終わる平面を囲む直方体です。
このBoundBoxのy軸の厚さはゼロです。
makePlaneは、start_pntとdir_normalとしてタプルではなくBase.Vector()のみを受け取ります。
</p>
<h4><span class="mw-headline" id=".E6.A5.95.E5.86.86.E3.82.92.E4.BD.9C.E3.82.8B.E3.81.AB.E3.81.AF.EF.BC.9F">楕円を作るには?</span></h4>
<p>楕円の作成にはいくつかの方法があります:
</p>
<pre>Part.Ellipse()
</pre>
<p>中心が(0,0,0)で、大半径2と小半径1の楕円を作成します。
</p>
<pre>Part.Ellipse(Ellipse)
</pre>
<p>楕円のコピーを作成します。
</p>
<pre>Part.Ellipse(S1,S2,Center)
</pre>
<p>点Centerを中心とする楕円を作成します。
楕円平面は、Center、S1とS2で定義されています。
主軸はCenterとS1で定義されています。
長径はCenterとS1の間の距離です
短径はS2と主軸との距離です。
</p>
<pre>Part.Ellipse(Center,MajorRadius,MinorRadius)
</pre>
<p>長径MajorRadius、短径MinorRadiusの楕円を作成し、
Centerと法線(0,0,1)で定義された平面上に配置します。
</p>
<pre>eli = Part.Ellipse(Base.Vector(10,0,0),Base.Vector(0,5,0),Base.Vector(0,0,0))
Part.show(eli.toShape())
</pre>
<p>上記のコードでは、S1、S2、および中心を渡しています。
Arcと同様に、Ellipseも楕円オブジェクトを作りますが、エッジは作成しません。
このため、楕円を表示するためにはtoShape()を使い、エッジに変換する必要があります。
</p><p>注意Arcはタプルではなく、Base.Vector()のみを受け取ります。
</p>
<pre>eli = Part.Ellipse(Base.Vector(0,0,0),10,5)
Part.show(eli.toShape())
</pre>
<p>上記のEllipseのコンストラクタでは、中心座標、MajorRadius、MinorRadiusを渡しています。
</p>
<h4><span class="mw-headline" id=".E3.83.88.E3.83.BC.E3.83.A9.E3.82.B9.E3.82.92.E4.BD.9C.E3.82.8B.E3.81.AB.E3.81.AF.EF.BC.9F">トーラスを作るには?</span></h4>
<p><b>makeTorus(radius1,radius2,[pnt,dir,angle1,angle2,angle])</b>を使用します。
初期値は、pnt=Vector(0,0,0)、dir=Vector(0,0,1)、angle1=0、angle1=360、angle=360です。
トーラスは小さな円が、大きな円に沿ってスイープしているものと考えます。
radius1は大きい円の半径、radius2は小さい円の半径です。
pntはトーラスの中心、dirは法線方向です。
angle1とangle2は小さな円のラジアンの角度です。
最後のパラメータangleはトーラスの一部を作成するためのものです
</p>
<pre>torus = Part.makeTorus(10, 2)
</pre>
<p>上記のコードは、直径20半径10と厚さ4小さい円の半径2のトーラスを作成します。
</p>
<pre>tor=Part.makeTorus(10,5,Base.Vector(0,0,0),Base.Vector(0,0,1),0,180)
</pre>
<p>上記のコードはトーラスのスライスを作成します。
</p>
<pre>tor=Part.makeTorus(10,5,Base.Vector(0,0,0),Base.Vector(0,0,1),0,360,180)
</pre>
<p>上記のコードは半分のトーラスを作成します。このコードでは最後のパラメータが変更されただけで、あとの角度は初期値のままです。
角度へ180与えた結果、0から180、つまり半分のトーラスを作成します。
</p>
<h4><span class="mw-headline" id=".E3.83.9C.E3.83.83.E3.82.AF.E3.82.B9.E3.81.BE.E3.81.9F.E3.81.AF.E7.9B.B4.E6.96.B9.E4.BD.93.E3.82.92.E4.BD.9C.E3.82.8B.E3.81.AB.E3.81.AF.EF.BC.9F">ボックスまたは直方体を作るには?</span></h4>
<p><b>makeBox(length,width,height,[pnt,dir])</b>を使用します。
初期値はpnt=Vector(0,0,0)、dir=Vector(0,0,1)です。
</p>
<pre>box = Part.makeBox(10,10,10)
len(box.Vertexes)
&gt; 8
</pre>
<h4><span class="mw-headline" id=".E7.90.83.E3.82.92.E4.BD.9C.E3.82.8B.E3.81.AB.E3.81.AF.EF.BC.9F">球を作るには?</span></h4>
<p><b>makeSphere(radius,[pnt, dir, angle1,angle2,angle3])</b>を使用します。
初期値はpnt=Vector(0,0,0)、dir=Vector(0,0,1)、angle1=-90、angle2=90、angle3=360です。
angle1とangle2は、球の垂直方向の最小値と最大値です。
angle3は球の直径です。
</p>
<pre>sphere = Part.makeSphere(10)
hemisphere = Part.makeSphere(10,Base.Vector(0,0,0),Base.Vector(0,0,1),-90,90,180)
</pre>
<h4><span class="mw-headline" id=".E5.86.86.E6.9F.B1.E3.82.92.E4.BD.9C.E3.82.8B.E3.81.AB.E3.81.AF.EF.BC.9F">円柱を作るには?</span></h4>
<p><b>makeCylinder(radius,height,[pnt,dir,angle])</b>を使用します。
初期値は、pnt=Vector(0,0,0)、dir=Vector(0,0,1)、angle=360=ベクトルです。
</p>
<pre>cylinder = Part.makeCylinder(5,20)
partCylinder = Part.makeCylinder(5,20,Base.Vector(20,0,0),Base.Vector(0,0,1),180)
</pre>
<h4><span class="mw-headline" id=".E5.86.86.E9.8C.90.E3.82.92.E4.BD.9C.E3.82.8B.E3.81.AB.E3.81.AF.EF.BC.9F">円錐を作るには?</span></h4>
<p><b>makeCone(radius1,radius2,height,[pnt,dir,angle])</b>を使用します。
初期値は、pnt=Vector(0,0,0)、dir=Vector(0,0,1)、angle=360=ベクトルです。
</p>
<pre>cone = Part.makeCone(10,0,20)
semicone = Part.makeCone(10,0,20,Base.Vector(20,0,0),Base.Vector(0,0,1),180)
</pre>
<h2><span class="mw-headline" id=".E3.82.B7.E3.82.A7.E3.82.A4.E3.83.97.E3.81.AE.E5.A4.89.E6.9B.B4">シェイプの変更</span></h2>
<p>形状を変更するには複数の方法があります。移動や回転などの簡単な変換操作もありますが
他の形状との結合や減算などの複雑などのもっと複雑なものもあります。
</p>
<h3><span class="mw-headline" id=".E5.A4.89.E6.8F.9B.E6.93.8D.E4.BD.9C">変換操作</span></h3>
<h4><span class="mw-headline" id=".E3.82.B7.E3.82.A7.E3.82.A4.E3.83.97.E3.81.AE.E7.A7.BB.E5.8B.95">シェイプの移動</span></h4>
<p>移動は形状をある場所から別の場所に動かす操作です。
任意の形状(エッジ、フェイス、立方体など)を同じ方法で移動させることができます:
</p>
<pre>myShape = Part.makeBox(2,2,2)
myShape.translate(Base.Vector(2,0,0))
</pre>
<p>ここでは"myShape"を2単位分、X方向に移動させています。
</p>
<h4><span class="mw-headline" id=".E3.82.B7.E3.82.A7.E3.82.A4.E3.83.97.E3.81.AE.E5.9B.9E.E8.BB.A2">シェイプの回転</span></h4>
<p>形状を回転させるには回転中心、軸、回転角を指定する必要があります:
</p>
<pre>myShape.rotate(Vector(0,0,0),Vector(0,0,1),180)
</pre>
<p>上記のコードでは形状をZ軸の周りに180度回転させています。
</p>
<h4><span class="mw-headline" id=".E8.A1.8C.E5.88.97.E3.82.92.E4.BD.BF.E7.94.A8.E3.81.97.E3.81.9F.E4.B8.80.E8.88.AC.E7.9A.84.E3.81.AA.E5.A4.89.E6.8F.9B">行列を使用した一般的な変換</span></h4>
<p>行列は3D空間での変換操作を保持する際に非常に便利です。
一つの行列に対してオブジェクトに適用する移動、回転、拡大縮小の値を設定することができるのです。
例えば次のようにします:
</p>
<pre>myMat = Base.Matrix()
myMat.move(Base.Vector(2,0,0))
myMat.rotateZ(math.pi/2)
</pre>
<p>注意FreeCADの行列はラジアン単位で動作します。またほとんどのベクトルを引数に持つ行列操作は
3つの数値を引数に取ることもできます。従って以下の2行は同じ処理を行います
</p>
<pre>myMat.move(2,0,0)
myMat.move(Base.Vector(2,0,0))
</pre>
<p>行列が設定されるとそれを形状に対して適用できるようになります。FreeCADではそれを行うための
2つのメソッドが用意されています。transformShape()とtransformGeometry()です。違いは一つ目のメソッド
では行列の変形が行われないということです(下記の"シェイプの拡大縮小"を参照)。
変換は以下のようにして適用します:
</p>
<pre>myShape.trasformShape(myMat)
</pre>
<p>または
</p>
<pre>myShape.transformGeometry(myMat)
</pre>
<h4><span class="mw-headline" id=".E3.82.B7.E3.82.A7.E3.82.A4.E3.83.97.E3.81.AE.E6.8B.A1.E5.A4.A7.E7.B8.AE.E5.B0.8F">シェイプの拡大縮小</span></h4>
<p>形状の拡大縮小は危険な操作です。なぜなら移動や回転と異なり拡大縮小は非一様x、y、zで異なる値を使って
に形状の構造を変更することができるからです。例えば垂直方向よりも水平方向に大きな値を使って円を
変換すれば楕円になり、楕円は円とは数学的に全く異なった振る舞いをします。拡大縮小では
transformShape()を使うことはできず、transformGeometry()を使わなければなりません:
</p>
<pre>myMat = Base.Matrix()
myMat.scale(2,1,1)
myShape=myShape.transformGeometry(myMat)
</pre>
<h3><span class="mw-headline" id=".E3.83.96.E3.83.BC.E3.83.AA.E3.82.A2.E3.83.B3.E6.BC.94.E7.AE.97_2">ブーリアン演算</span></h3>
<h4><span class="mw-headline" id=".E3.81.82.E3.82.8B.E3.82.B7.E3.82.A7.E3.82.A4.E3.83.97.E3.82.92.E4.BB.96.E3.81.AE.E3.82.B7.E3.82.A7.E3.82.A4.E3.83.97.E3.81.8B.E3.82.89.E3.82.AB.E3.83.83.E3.83.88.E3.81.99.E3.82.8B.E3.81.AB.E3.81.AF.EF.BC.9F">あるシェイプを他のシェイプからカットするには?</span></h4>
<p>ある形状から別の形状を取り除くことをOCC/FreeCADでは"カット"と呼び、次のようにして行います:
</p>
<pre>cylinder = Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0))
sphere = Part.makeSphere(5,Base.Vector(5,0,0))
diff = cylinder.cut(sphere)
</pre>
<h4><span class="mw-headline" id="2.E3.81.A4.E3.81.AE.E3.82.B7.E3.82.A7.E3.82.A4.E3.83.97.E9.96.93.E3.81.AE.E7.A9.8D.E3.82.92.E5.BE.97.E3.82.8B.E3.81.AB.E3.81.AF.EF.BC.9F">2つのシェイプ間の積を得るには</span></h4>
<p>同じように2つの形状の交差は"コモン"と呼び、次のようにして行います:
</p>
<pre>cylinder1 = Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0))
cylinder2 = Part.makeCylinder(3,10,Base.Vector(5,0,-5),Base.Vector(0,0,1))
common = cylinder1.common(cylinder2)
</pre>
<h4><span class="mw-headline" id=".EF.BC.92.E3.81.A4.E3.81.AE.E3.82.B7.E3.82.A7.E3.82.A4.E3.83.97.E9.96.93.E3.81.AE.E5.92.8C.E3.82.92.E3.81.A8.E3.82.8B.E3.81.AB.E3.81.AF.EF.BC.9F">2つのシェイプ間の和をとるには?</span></h4>
<p>結合は"フューズ"と呼ばれ、同じようにして行うことができます:
</p>
<pre>cylinder1 = Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0))
cylinder2 = Part.makeCylinder(3,10,Base.Vector(5,0,-5),Base.Vector(0,0,1))
fuse = cylinder1.fuse(cylinder2)
</pre>
<h4><span class="mw-headline" id=".E3.82.BD.E3.83.AA.E3.83.83.E3.83.89.E3.82.92.E4.B8.8E.E3.81.88.E3.82.89.E3.82.8C.E3.81.9F.E3.82.B7.E3.82.A7.E3.82.A4.E3.83.97.E3.81.A7.E5.88.87.E6.96.AD.E3.81.99.E3.82.8B.E3.81.AB.E3.81.AF.EF.BC.9F">ソリッドを与えられたシェイプで切断するには?</span></h4>
<p>セクションはソリッド形状と平面形状の間での交差です。
エッジで構成された交差曲線を返します:
</p>
<pre>cylinder1 = Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0))
cylinder2 = Part.makeCylinder(3,10,Base.Vector(5,0,-5),Base.Vector(0,0,1))
section = cylinder1.section(cylinder2)
section.Wires
&gt; []
section.Edges
&gt; [&lt;Edge object at 0D87CFE8&gt;, &lt;Edge object at 019564F8&gt;, &lt;Edge object at 0D998458&gt;,
&lt;Edge object at 0D86DE18&gt;, &lt;Edge object at 0D9B8E80&gt;, &lt;Edge object at 012A3640&gt;,
&lt;Edge object at 0D8F4BB0&gt;]
</pre>
<h4><span class="mw-headline" id=".E6.8A.BC.E3.81.97.E5.87.BA.E3.81.97.E3.82.92.E8.A1.8C.E3.81.86.E3.81.AB.E3.81.AF.EF.BC.9F">押し出しを行うには?</span></h4>
<p>押し出しは平面形状を一定方向に"押し出す"ことでソリッドボディーを作成する操作です。
"押し出し"によって円が管になるのを想像してください:
</p>
<pre>circle = Part.makeCircle(10)
tube = circle.extrude(Base.Vector(0,0,2))
</pre>
<p>もし円が中空であれば中空の管が得られ、円が実際には円盤、
つまり面で埋まっていればソリッドな円柱が得られます。
</p>
<pre>wire = Part.Wire(circle)
disc = Part.makeFace(wire)
cylinder = disc.extrude(Base.Vector(0,0,2))
</pre>
<h2><span class="mw-headline" id=".E3.82.B7.E3.82.A7.E3.82.A4.E3.83.97.E3.82.92.E8.AA.BF.E6.9F.BB.E3.81.99.E3.82.8B">シェイプを調査する</span></h2>
<p>トポロジーのデータ構造は簡単に調べることができます:
</p>
<pre>import Part
b = Part.makeBox(100,100,100)
b.Wires
w = b.Wires[0]
w
w.Wires
w.Vertexes
Part.show(w)
w.Edges
e = w.Edges[0]
e.Vertexes
v = e.Vertexes[0]
v.Point
</pre>
<p>上記の内容をPythonインタープリタに入力することで、Partオブジェクトの構造をよく理解することができます。ここでmakeBox()コマンドはソリッド形状を作成します。このソリッドはすべてのPartソリッドと同様に複数のフェイスを含んでいます。フェイスは常にその境界となるエッジのリストであるワイヤーを持ちます。各フェイスは少なくとも1つの閉じたワイヤーを持ちますフェイスが穴の場合は複数のワイヤーを持ちます。ワイヤーでは各エッジを別々に調べることができ、またそのエッジでは各頂点を調べることができます。直線のエッジは当然2つの頂点のみを持っています。
</p>
<h3><span class="mw-headline" id=".E3.82.A8.E3.83.83.E3.82.B8.E3.82.92.E8.AA.BF.E6.9F.BB.E3.81.99.E3.82.8B">エッジを調査する</span></h3>
<p>エッジの場合、エッジは任意の曲線であるので、おそらく離散化したいと思うでしょう。FreeCADでは、エッジはその長さによってパラメータ化されています。つまりその長さでエッジ/曲線を操作できるということです:
</p>
<pre>import Part import Part
box = Part.makeBox(100,100,100)
anEdge = box.Edges[0]
print anEdge.Length
</pre>
<p>この長さを位置として使用して多くのエッジのプロパティにアクセスすることができます。つまりエッジ長が100mmであれば、エッジの開始位置は0で終了位置は100であるということです。
</p>
<pre>anEdge.tangentAt(0.0) # 初期の接線方向です
anEdge.valueAt(0.0) # エッジの開始点です
anEdge.valueAt(100.0) # エッジの終点です
anEdge.derivative1At(50.0) # 中点での曲線の一次導関数です
anEdge.derivative2At(50.0) # 中点での曲線の二次導関数です
anEdge.derivative3At(50.0) # 中点での曲線の三次導関数です
anEdge.centerOfCurvatureAt(50) # この位置の曲率中心です
anEdge.curvatureAt50.0# 曲率です
anEdge.normalAt(50) # この位置の法線です(定義されている場合)
</pre>
<h2><span class="mw-headline" id=".E9.81.B8.E6.8A.9E.E6.A9.9F.E8.83.BD.E3.82.92.E4.BD.BF.E3.81.86">選択機能を使う</span></h2>
<p>ここではユーザがビューア上で行う選択操作を使用する方法についてみていきます。
まず最初にボックスを作成しそれをビューアで表示します
</p>
<pre>import Part
Part.show(Part.makeBox(100,100,100))
Gui.SendMsgToActiveView("ViewFit")
</pre>
<p>フェイスかエッジを選択します。このスクリプトを使うと
全ての選択したオブジェクトとその子要素を反復することができます。
</p>
<pre>for o in Gui.Selection.getSelectionEx():
print o.ObjectName
for s in o.SubElementNames:
print "name: ",s
for s in o.SubObjects:
print "object: ",s
</pre>
<p>エッジを選択し、このスクリプトでその長さを計算します:
</p>
<pre>length = 0.0
for o in Gui.Selection.getSelectionEx():
for s in o.SubObjects:
length += s.Length
print "Length of the selected edges:" ,length
</pre>
<h3><span class="mw-headline" id="OCC.E3.83.9C.E3.83.88.E3.83.AB">OCCボトル</span></h3>
<p><a rel="nofollow" class="external text" href="http://www.opencascade.org/org/gettingstarted/appli/">OpenCasCadeをはじめよう</a>にはボトルの作成方法についての典型的な例があります。
これはFreeCADの教材としても最適です。実際に以下のページの例とOCCのページの内容とを同時に追うことによって、OCCの構造がどのようにFreeCADの中に実装されているか理解できるでしょう。
以下のスクリプトはFreeCADのインストールにも含まれていますMod/Partフォルダ内。pythonインタプリタから次のようにタイプすることで呼び出すことができます:
</p>
<pre>import Part
import MakeBottle
bottle = MakeBottle.makeBottle()
Part.show(bottle)
</pre>
<h4><span class="mw-headline" id=".E5.AE.8C.E5.85.A8.E3.81.AA.E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88">完全なスクリプト</span></h4>
<p>MakeBottleスクリプト一式です
</p>
<pre>import Part, FreeCAD, math
from FreeCAD import Base
def makeBottle(myWidth=50.0, myHeight=70.0, myThickness=30.0):
aPnt1=Base.Vector(-myWidth/2.,0,0)
aPnt2=Base.Vector(-myWidth/2.,-myThickness/4.,0)
aPnt3=Base.Vector(0,-myThickness/2.,0)
aPnt4=Base.Vector(myWidth/2.,-myThickness/4.,0)
aPnt5=Base.Vector(myWidth/2.,0,0)
aArcOfCircle = Part.Arc(aPnt2,aPnt3,aPnt4)
aSegment1=Part.Line(aPnt1,aPnt2)
aSegment2=Part.Line(aPnt4,aPnt5)
aEdge1=aSegment1.toShape()
aEdge2=aArcOfCircle.toShape()
aEdge3=aSegment2.toShape()
aWire=Part.Wire([aEdge1,aEdge2,aEdge3])
aTrsf=Base.Matrix()
aTrsf.rotateZ(math.pi) # z軸周りを回転
aMirroredWire=aWire.transformGeometry(aTrsf)
myWireProfile=Part.Wire([aWire,aMirroredWire])
myFaceProfile=Part.Face(myWireProfile)
aPrismVec=Base.Vector(0,0,myHeight)
myBody=myFaceProfile.extrude(aPrismVec)
myBody=myBody.makeFillet(myThickness/12.0,myBody.Edges)
neckLocation=Base.Vector(0,0,myHeight)
neckNormal=Base.Vector(0,0,1)
myNeckRadius = myThickness / 4.
myNeckHeight = myHeight / 10
myNeck = Part.makeCylinder(myNeckRadius,myNeckHeight,neckLocation,neckNormal)
myBody = myBody.fuse(myNeck)
faceToRemove = 0
zMax = -1.0
for xp in myBody.Faces:
try:
surf = xp.Surface
if type(surf) == Part.Plane:
z = surf.Position.z
if z &gt; zMax:
zMax = z
faceToRemove = xp
except:
continue
myBody = myBody.makeThickness([faceToRemove],-myThickness/50 , 1.e-3)
return myBody
</pre>
<h4><span class="mw-headline" id=".E8.A9.B3.E7.B4.B0.E3.81.AA.E8.AA.AC.E6.98.8E">詳細な説明</span></h4>
<pre>import Part, FreeCAD, math
from FreeCAD import Base
</pre>
<p>PartモジュールはもちろんですがFreeCAD.Baseモジュールも必要です。このモジュールにはベクトルや行列といったFreeCADの基本構造が含まれています。
</p>
<pre>def makeBottle(myWidth=50.0, myHeight=70.0, myThickness=30.0):
aPnt1=Base.Vector(-myWidth/2.,0,0)
aPnt2=Base.Vector(-myWidth/2.,-myThickness/4.,0)
aPnt3=Base.Vector(0,-myThickness/2.,0)
aPnt4=Base.Vector(myWidth/2.,-myThickness/4.,0)
aPnt5=Base.Vector(myWidth/2.,0,0)
</pre>
<p>ここではmakeBottle関数を定義します。この関数は、上記の例のように、引数無しでも呼ぶことができます。その場合には、幅、高さ、厚さの初期値が使用されます。次に基本的なプロファイルの構築に使用する点を定義します。
</p>
<pre> aArcOfCircle = Part.Arc(aPnt2,aPnt3,aPnt4)
aSegment1=Part.Line(aPnt1,aPnt2)
aSegment2=Part.Line(aPnt4,aPnt5)
</pre>
<p>ここでは実際のジオメトリを定義しています。円弧を一つ、点を三つ、そして二点で構成される線分を二つ作ります。
</p>
<pre> aEdge1=aSegment1.toShape()
aEdge2=aArcOfCircle.toShape()
aEdge3=aSegment2.toShape()
aWire=Part.Wire([aEdge1,aEdge2,aEdge3])
</pre>
<p>ジオメトリとシェイプの違いを覚えているでしょうかここでは、作成したジオメトリを使ってシェイプを作り上げています。3つのエッジ直線や曲線ですを作り、それらを使いワイヤーを一つ作成します。
</p>
<pre> aTrsf=Base.Matrix()
aTrsf.rotateZ(math.pi) # rotate around the z-axis
aMirroredWire=aWire.transformGeometry(aTrsf)
myWireProfile=Part.Wire([aWire,aMirroredWire])
</pre>
<p>ここまでで、まだプロファイルは半分しか出来上がっていません。同じ方法でプロファイル全体を作成するよりも、これまで作成したものをミラーして、2つの半分を一つにくっつけるほうが簡単です。それにはまず行列を作成します。行列は3次元空間のオブジェクトを変換するとても一般的な方法です。
行列を使えば、3Dオブジェクトの厄介な基本的な変換移動、回転、スケールが一つで済むのです。ここでは行列を作成し、それを反転します。作成したワイヤーにこの変換行列を適用してコピーを作ります。ここまで、2本のワイヤーができました。ワイヤーは、実際にはエッジのリストですので、これらのワイヤーから3つ目のワイヤーを作ることができます。
</p>
<pre> myFaceProfile=Part.Face(myWireProfile)
aPrismVec=Base.Vector(0,0,myHeight)
myBody=myFaceProfile.extrude(aPrismVec)
myBody=myBody.makeFillet(myThickness/12.0,myBody.Edges)
</pre>
<p>すでに閉じたワイヤーがあるので、これをフェイスに変換することができます。フェイスを作ってしまえば、それを押し出すことができるようになります。このようにしてソリッドができました。では、次にこのオブジェクトに素敵なフィレットを少し使ってみましょう。デザインには気を使うでしょ?
</p>
<pre> neckLocation=Base.Vector(0,0,myHeight)
neckNormal=Base.Vector(0,0,1)
myNeckRadius = myThickness / 4.
myNeckHeight = myHeight / 10
myNeck = Part.makeCylinder(myNeckRadius,myNeckHeight,neckLocation,neckNormal)
</pre>
<p>これでボトルの本体はできました。あとはボトルの首を作成する必要があります。そこで、円柱で新しいソリッドを作成します。
</p>
<pre> myBody = myBody.fuse(myNeck)
</pre>
<p>他のアプリではユニオンとも呼ばれることもあるフューズ操作はとても強力な機能です。この操作は結合処理において結合すべきものと削除すべきものを管理します。
</p>
<pre> return myBody
</pre>
<p>次にこの関数の結果としてPartソリッドを返します。このPartソリッドは、他のPartシェイプと同様に以下の方法でFreeCADドキュメント内のオブジェクトの属性になります。
</p>
<pre>myObject = FreeCAD.ActiveDocument.addObject("Part::Feature","myObject")
myObject.Shape = bottle
</pre>
<p>あるいはもっとシンプルな方法もあります:
</p>
<pre>Part.show(bottle)
</pre>
<h2><span class="mw-headline" id=".E8.AA.AD.E3.81.BF.E8.BE.BC.E3.81.BF.E3.81.A8.E4.BF.9D.E5.AD.98">読み込みと保存</span></h2>
<p>Partモジュールの作業内容を保存する方法はいくつかあります。もちろんFreeCADドキュメントを保存することもできますが、PartオブジェクトをBREPやIGS、STEPやSTLなどの共通CADフォーマットに直接保存することもできます。
</p><p>シェイプをファイルへ保存するのは簡単です。全てのシェイプオブジェクトで、exportBre()、pexportIges()、exportStl()、およびexportStep()メソッドが利用できます。ではやってみましょう:
</p>
<pre>import Part
s = Part.makeBox(0,0,0,10,10,10)
s.exportStep("test.stp")
</pre>
<p>ここではSTEPファイルへボックスを保存します。BREPやIGESやSTEPファイルを読み込むには、単純に反対の操作を行います
</p>
<pre>import Part
s = Part.Shape()
s.read"test.stp"
</pre>
<p>BREPやIGES、STEPファイルのインポートは、メニューの「File -&gt; Open」か「File -&gt; Import」からも直接行えます。エクスポートは「File -&gt; Export」で行えます。
</p>
<p><br />
</p>
<h2><span class="mw-headline" id="Part.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.82.92.E3.83.A1.E3.83.83.E3.82.B7.E3.83.A5.E3.81.AB.E5.A4.89.E6.8F.9B.E3.81.99.E3.82.8B">Partオブジェクトをメッシュに変換する</span></h2>
<p><a href="https://www.freecadweb.org/wiki/index.php?title=Part_Module/jp" title="Part Module/jp">Part形状</a>のような上位レベルのオブジェクトを <a href="https://www.freecadweb.org/wiki/index.php?title=Mesh_Module/jp" class="mw-redirect" title="Mesh Module/jp">メッシュ</a>のような単純なオブジェクトに変換するのは比較的簡単な処理です。Partオブジェクトの全ての面を三角形に変換して、結果の三角形モザイクをメッシュ構築に使用すればいいのです
</p>
<pre># ドキュメントには一つだけPartオブジェクトが入っているとしましょう
import Mesh
faces = []
shape = FreeCAD.ActiveDocument.ActiveObject.Shape
triangles = shape.tessellate(1) # この数値がモザイクの精度を表します
for tri in triangles[1]:
face = []
for i in range(3):
vindex = tri[i]
face.append(triangles[0][vindex])
faces.append(face)
m = Mesh.Mesh(faces)
Mesh.show(m)
</pre>
<p>ときたまOpenCascadeが出力する特定の面の三角形が非常にいびつな場合があります。もし面に長方形パラメータ空間があり、穴やトリム曲線が無ければ独自にメッシュを作成することもできます
</p>
<pre>import Mesh
def makeMeshFromFace(u,v,face):
(a,b,c,d)=face.ParameterRange
pts=[]
for j in range(v):
for i in range(u):
s=1.0/(u-1)*(i*b+(u-1-i)*a)
t=1.0/(v-1)*(j*d+(v-1-j)*c)
pts.append(face.valueAt(s,t))
mesh=Mesh.Mesh()
for j in range(v-1):
for i in range(u-1):
mesh.addFacet(pts[u*j+i],pts[u*j+i+1],pts[u*(j+1)+i])
mesh.addFacet(pts[u*(j+1)+i],pts[u*j+i+1],pts[u*(j+1)+i+1])
return mesh
</pre>
<h2><span class="mw-headline" id=".E3.83.A1.E3.83.83.E3.82.B7.E3.83.A5.E3.82.92Part.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AB.E5.A4.89.E6.8F.9B.E3.81.99.E3.82.8B">メッシュをPartオブジェクトに変換する</span></h2>
<p>メッシュからPartオブジェクトへの変換はCADでの作業でも非常に重要な操作です。他の人たちからメッシュ形式の3Dデータを受け取ったり、他のアプリケーションからメッシュ形式の3Dデータを出力するというのはよくあることだからです。自由形状や大きな描画シーンを表現する場合にはメッシュは非常に実用的です。とても軽量だからです。しかしCADでの用途を考えた場合、一般的には三角形ではなく曲線で作成された面やソリッドなど、もっと多くの情報を保持できるより上位のオブジェクトの方が好まれます。
</p><p>メッシュからこういったFreeCADの<a href="https://www.freecadweb.org/wiki/index.php?title=Part_Module/jp" title="Part Module/jp">パートモジュール</a>で扱われる様な 上位オブジェクトへの変換は簡単な処理ではありません。メッシュは数千もの三角形で構成されている場合もありますし例えば3Dスキャナーによって生成されている場合、面と同じだけの数のソリッドを持った場合には処理がとんでもなく重くなることも考えられます。従って多くの場合、変換時に最適化を施す必要があるのです。
</p><p>FreeCADでは現在、メッシュをPartオブジェクトに変換する二つのメソッドが用意されています。一つ目は単純なもので何の最適化も施さずに直接変換を行います
</p>
<pre>import Mesh,Part
mesh = Mesh.createTorus()
shape = Part.Shape()
shape.makeShapeFromMesh(mesh.Topology,0.05) # 二つ目の引数は縫い合わせの許容誤差です
solid = Part.makeSolid(shape)
Part.show(solid)
</pre>
<p>二つ目のメソッドではメッシュの二つのファセットが作る角度が特定の値を下回る場合にその二つを同一面とみなします。これによってより単純な形状が作成できるのです:
</p>
<pre># ドキュメントには一つだけMeshオブジェクトが入っているとしましょう
import Mesh,Part,MeshPart
faces = []
mesh = App.ActiveDocument.ActiveObject.Mesh
segments = mesh.getPlanes(0.00001) # ここではより厳しい許容誤差を使用します
for i in segments:
if len(i) &gt; 0:
# 線分は内部に穴を持つことができます
wires = MeshPart.wireFromSegment(mesh, i)
# 外部境界が最大のバウンディングボックスを持つものであると仮定します
if len(wires) &gt; 0:
ext=None
max_length=0
for i in wires:
if i.BoundBox.DiagonalLength &gt; max_length:
max_length = i.BoundBox.DiagonalLength
ext = i
wires.remove(ext)
# 内部のワイヤーが全てマークされ、向きが反転されなければなりません。さもなければPart.Faceが失敗します
for i in wires:
i.reverse()
# 外部のワイヤーがリストの先頭になっていることを確認してください
wires.insert(0, ext)
faces.append(Part.Face(wires))
shell=Part.Compound(faces)
Part.show(shell)
#solid = Part.Solid(Part.Shell(faces))
#Part.show(solid)
</pre>
<p><br />
</p>
<p>FreeCADは基本的には様々なライブラリのコラージュです。なかでも最も重要なものはジオメトリーの管理と構築のための<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Open_CASCADE">OpenCascade</a>、ジオメトリーを表示するための<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Coin3D">Coin3d</a>、そしてそれら全てを優れたグラフィカルユーザーインターフェースにまとめあげる<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Qt_(toolkit)">Qt</a>です。
</p><p>FreeCADの3Dビューに表示されるジオメトリーはCoin3Dライブラリによってレンダリングされています。Coin3Dは<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Open_Inventor">OpenInventor</a>規格の実装の一つです。OpenCascade自体にも同じ機能がありますがFreeCAD開発が始まった最初の段階でOpenCascadeに組み込まれたビューアーを使わず、より高性能なCoin3Dを使う、という決断がされました。このライブラリについて学ぶ早道は<a rel="nofollow" class="external text" href="http://www-evasion.imag.fr/Membres/Francois.Faure/doc/inventorMentor/sgi_html/">Open Inventor Mentor</a>を読むことです。
</p><p><a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Open_Inventor">OpenInventor</a>は実質的には3Dシーン記述言語です。OpenInventorで記述されたシーンはOpenGLによって画面にレンダリングされます。Coin3Dはこの部分の処理を行います。つまりプログラマーは複雑なOpenGLの呼び出しを扱うこと無く、正しいOpenInventorコードを入力するだけでいいのです。OpenInventorの大きな利点はとても広く知られ、またよくドキュメント化された規格であるということです。
</p><p>FreeCADが行う大きな仕事の一つはOpenCascadeのジオメトリー情報をOpenInventor言語に翻訳することです。
</p><p>OpenInventorでは3Dシーンを下記に示すような<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Scene_graph">シーングラフ</a>形式で記述します:
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Scenegraph.gif" class="image"><img alt="Scenegraph.gif" src="Scenegraph.gif" width="422" height="496" /></a>
<a rel="nofollow" class="external text" href="http://www-evasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/index.html">Inventor mentor</a>からの画像
</p><p>OpenInventorのシーングラフではジオメトリー、色、マテリアル、ライトなど3Dシーンに含まれるものが全て記述され、それらすべてのデータが扱いやすい明快な構造体に整理されます。全てのものをサブ構造体にグループ化することや、シーンの内容をかなり自由な形式で整理することも可能です。以下はOpenInventorファイルのサンプルです
</p>
<pre>#Inventor V2.0 ascii
Separator {
RotationXYZ {
axis Z
angle 0
}
Transform {
translation 0 0 0.5
}
Separator {
Material {
diffuseColor 0.05 0.05 0.05
}
Transform {
rotation 1 0 0 1.5708
scaleFactor 0.2 0.5 0.2
}
Cylinder {
}
}
}
</pre>
<p>見て分かる通り、構造体は非常にシンプルです。データをブロックにまとめるときにはセパレータを使います。ちょうどファイルをフォルダにまとめるのと似ています。各命令文は以降の命令文に影響を与えます。例えばサンプルのルートセパレータにある二つのアイテムは回転と移動ですが、この両方が次のアイテムであるセパレータに影響を与えます。そのセパレータ内ではマテリアルと別の変換が定義されています。従って円筒Cylinderは両方の命令文の影響を受けます。一つは直接適用され、もう一つは親セパレータに対して適用されます。
</p><p>他にもグループ、スイッチ、注釈などシーンを作成するための多くの要素タイプが存在します。色、テクスチャ、シェーディングモード、透過度を使って非常に複雑なマテリアルをオブジェクトに定義することが可能です。またライト、カメラ、あるいは動きさえ定義することができます。さらに複雑な振る舞いを定義するためにOpenInventorファイル内に短いスクリプトを埋め込むことさえ可能なのです。
</p><p>もしOpenInventorをもっと学びたいと思ったら最も有名なリファレンスである<a rel="nofollow" class="external text" href="http://www-evasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/index.html">Inventor mentor</a>を見てください。
</p><p>FreeCADでは通常はOpenInventorのシーングラフを直接操作する必要はありません。メッシュやパート形状などFreeCADドキュメント内のオブジェクトは全て自動的にOpenInventorコードに変換され、3Dビューに表示されるメインシーングラフに挿入されます。またあなたが変更を行ったり、ドキュメントにオブジェクトが追加/削除された際などシーングラフは途切れることなく更新され続けます。実際の所、全てのApp空間内のオブジェクトにはOpenInventorコード発行用のGui空間のオブジェクトに対応するビュープロバイダが備わっているのです。
</p><p>しかしシーングラフに直接アクセスできると非常に便利です。例えば一時的にオブジェクトの表示を変えたり、構築ジオメトリー、補助線、グラフィカルなヒント、あるいはマニピュレーターといったツールや画面上情報など実際にはFreeCADドキュメント内に存在しないオブジェクトをシーンに追加することができます。
</p><p>FreeCAD自体にもOpenInventorコードを確認したり変更するためのツールがいくつか備わっています。例えば以下のPythonコードを実行すると選択されているオブジェクトのOpenInventorでの表現を表示することができます。
</p>
<pre>obj = FreeCAD.ActiveDocument.ActiveObject
viewprovider = obj.ViewObject
print viewprovider.toString()
</pre>
<p>またFreeCADのシーングラフなどCoin3Dによって管理されている全てのものに完全にアクセスするためのPythonモジュールもあります。詳しくは<a href="https://www.freecadweb.org/wiki/index.php?title=Pivy/jp" title="Pivy/jp">Pivy</a>を読んでください。
</p>
<p><br />
</p>
<p><a rel="nofollow" class="external text" href="http://pivy.coin3d.org/">Pivy</a>はFreeCADで使われている3Dレンダリングライブラリである<a rel="nofollow" class="external text" href="http://www.coin3d.org">Coin3d</a>用のPythonのバインディングライブラリです。実行中のPythonインタプリタにインポートするとFreeCADの3DビューアーなどのCoin3d<a href="https://www.freecadweb.org/wiki/index.php?title=Scenegraph/jp" title="Scenegraph/jp">シーングラフ</a>と直に対話処理を行ったり、新しい3Dビューアーを作成することさえできます。Pivyは標準のFreeCADインストールに同梱されています。
</p><p>Coinライブラリはいくつかに分割されています。Coin自体はシーングラフの操作を担い、Windowsといった複数のGUIシステム用のパッケージがありますが私たちの場合はQt用になります。これらの分割されたモジュールもシステム上に存在する場合にはPivyから利用することができます。Coinモジュールは常駐していて自由に利用することができます。既にFreeCADによって行われているので3D表示をどのインターフェイスに紐付けするのか気にする必要はありません。私たちがやらなければならないのは以下のコマンドを実行することだけです
</p>
<pre>from pivy import coin
</pre>
<h2><span class="mw-headline" id=".E3.82.B7.E3.83.BC.E3.83.B3.E3.82.B0.E3.83.A9.E3.83.95.E3.81.B8.E3.81.AE.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9.E3.81.A8.E5.A4.89.E6.9B.B4">シーングラフへのアクセスと変更</span></h2>
<p>典型的なCoinシーンがどの様に構成されているかは<a href="https://www.freecadweb.org/wiki/index.php?title=Scenegraph/jp" title="Scenegraph/jp">シーングラフ</a>ページで見ました。FreeCADの3Dビューに表示されているものは全てCoinシーングラフであり、同じやり方で構成されています。ルートのードが一つあり、画面上のオブジェクトは全てその子ードです。
</p><p>FreeCADでは3Dビューシーングラフのルートードに簡単にアクセスすることができます
</p>
<pre>sg = FreeCADGui.ActiveDocument.ActiveView.getSceneGraph()
print sg
</pre>
<p>こうするとルートノードが返されます。
</p>
<pre>&lt;pivy.coin.SoSelection; proxy of &lt;Swig Object of type 'SoSelection *' at 0x360cb60&gt; &gt;
</pre>
<p>シーンの直下の子ノードを調べることもできます。
</p>
<pre>for node in sg.getChildren():
print node
</pre>
<p>SoSeparatorsやSoGroupsといったこれらードは自身の子ードを持ちます。利用可能なCoinオブジェクトの全リストは<a rel="nofollow" class="external text" href="http://doc.coin3d.org/Coin/classes.html">Coin公式ドキュメント</a>にあります。
</p><p>今度はシーングラフに何か追加してみましょう。すてきな赤い立方体を追加してみることにしましょう:
</p>
<pre>col = coin.SoBaseColor()
col.rgb=(1,0,0)
cub = coin.SoCube()
myCustomNode = coin.SoSeparator()
myCustomNode.addChild(col)
myCustomNode.addChild(cub)
sg.addChild(myCustomNode)
</pre>
<p>(すてきな)赤い立方体ができました。以下を試してみてください:
</p>
<pre>col.rgb=(1,1,0)
</pre>
<p>わかったでしょうか実行中であっても全てのものに対してアクセスと変更を行うことができるのです。再計算や再描画は必要ありません。Coinが全て面倒を見てくれます。物体のシーングラフへの追加、プロパティの変更、物体の非表示、一時的なオブジェクトの表示、何でもできます。もちろん3Dビューに関係したことだけですが。この表示はFreeCADがファイルを開いた時とオブジェクトが必要とした時に再計算されます。従って既存のFreeCADオブジェクトの外見を変更した場合、その変更はオブジェクトが再計算されるかファイルを再度開いた瞬間に失われます。
</p><p>スクリプトでシーングラフを操作する場合の鍵となるのは必要な際に追加したードの特定のプロパティにアクセスできるということなのです。例えば立方体を動かしたいとしましょう。自作のードにSoTranslationードを追加することになるでしょう。ちょうどこんな具合です
</p>
<pre>col = coin.SoBaseColor()
col.rgb=(1,0,0)
trans = coin.SoTranslation()
trans.translation.setValue([0,0,0])
cub = coin.SoCube()
myCustomNode = coin.SoSeparator()
myCustomNode.addChild(col)
mtCustomNode.addChild(trans)
myCustomNode.addChild(cub)
sg.addChild(myCustomNode)
</pre>
<p>OpenInventorのシーングラフではその順番が重要であるということを思い出してください。ードは以降のードに影響を与えます。color red、cube、color yellow、sphere とすれば赤い立方体と黄色い球が表示されます。もし今、既存の自作ノードに移動を追加すると移動は立方体の後になり、立方体に影響を与えません。上記のように作成時に挿入しておけば次のようにできます:
</p>
<pre>trans.translation.setValue([2,0,0])
</pre>
<p>こうすると立方体が2単位分、右に移動します。
最後に何かを取り除くには次のようにします:
</p>
<pre>sg.removeChild(myCustomNode)
</pre>
<h2><span class="mw-headline" id=".E3.82.B3.E3.83.BC.E3.83.AB.E3.83.90.E3.83.83.E3.82.AF.E6.A9.9F.E8.83.BD.E3.81.AE.E4.BD.BF.E7.94.A8">コールバック機能の使用</span></h2>
<p><a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Callback_%28computer_science%29">コールバック機能</a>とはCoinライブラリの様な現在使用しているライブラリがコールバック、つまり現在実行中のPythonオブジェクトから特定の関数を呼び出すことを可能にするシステムのことです。これは非常に便利です。これを使うとシーンで何か特定のイベントが起きた場合にCoinからあなたへ通知することができるのです。Coinでは色々なものを監視することができます。マウスの位置、マウスボタンのクリック、キーボードのキーが押されたかどうか、まだまだ他にもあります。
</p><p>FreeCADではそういったコールバックを簡単に使うための機能があります
</p>
<pre>class ButtonTest:
def __init__(self):
self.view = FreeCADGui.ActiveDocument.ActiveView
self.callback = self.view.addEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),self.getMouseClick)
def getMouseClick(self,event_cb):
event = event_cb.getEvent()
if event.getState() == SoMouseButtonEvent.DOWN:
print "Alert!!! A mouse button has been improperly clicked!!!"
self.view.removeEventCallbackSWIG(SoMouseButtonEvent.getClassTypeId(),self.callback)
ButtonTest()
</pre>
<p>コールバックが起きた時にもオブジェクトは実行され続けなければならないのでコールバックはオブジェクトで初期化されなけれればなりません。
利用可能なイベントとパラメータの<a href="/wiki/Code_snippets#Observing_mouse_events_in_the_3D_viewer_via_Python" title="Code snippets">全リスト</a>または<a rel="nofollow" class="external text" href="http://doc.coin3d.org/Coin/classes.html">Coin公式ドキュメント</a>を参照してください。
</p>
<h2><span class="mw-headline" id=".E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88">ドキュメント</span></h2>
<p>残念ながらPivy自体にはちゃんとしたドキュメントがまだありません。しかしPivyはCoinと正確に対応するのでC++スタイルをPythonスタイルに読み替えれば例えばSoFile::getClassTypeId()はPivyではSoFile.getClassId()となるでしょうCoinドキュメントをリファレンスとして安全に使用できます。
</p>
<p><br />
</p>
<p><a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/PyQt">PyQt</a>はPythonで<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Qt_(toolkit)">Qt</a>アプリケーションの作成、アクセス、変更を行うためのPythonモジュールです。これを使用すると例えば独自にQtプログラムを作成したり、FreeCADなど実行中のQtアプリケーションのインターフェイスへのアクセスや変更が可能になります。
</p><p>FreeCAD内部からPyQtモジュールを使用することでFreeCADのインターフェイスを完全に制御することができます。例えば以下のことを行うことができます。
</p>
<ul><li> 独自のパネル、ウィジット、ツールバーの追加</li>
<li> 既存のパネルへの要素の追加や非表示</li>
<li> 全ての要素の間のコネクションに対する変更、リダイレクト、追加</li></ul>
<p>PyQtには豊富な<a rel="nofollow" class="external text" href="http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/classes.html">APIドキュメント</a>があり、またネット上にはどの様にそれが動作するのか教えてくれるチュートリアルがたくさんあります。
</p><p>もしFreeCADインターフェイスをいじりたいのであれば一番最初にやるべきことはFreeCADのメインウィンドウの参照を作成することです
</p>
<pre>import sys
from PyQt4 import QtGui
app = QtGui.qApp
mw = app.activeWindow()
</pre>
<p>すると例えばインターフェイスの全てのウィジットをブラウジングすることなどができるようになります:
</p>
<pre>for child in mw.children():
print 'widget name = ', child.objectName(), ', widget type = ', child
</pre>
<p>Qtインターフェイスのウィジットは普通、"コンテナ"ウィジット内に入れ子状態になっています。つまりメインウィンドウの子ウィンドウ自体も他の子ウィンドウを収納できるのです。ウィジットのタイプによって行えることは様々です。何ができるのかについてはAPIドキュメントをチェックしてください。
</p><p>新しいウィジットの追加には例えばdockWidgetFreeCADのサイドパネルの一つに配置できますが便利です
</p>
<pre>myWidget = QtGui.QDockWidget()
mw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myWidget)
</pre>
<p>さらにいろいろなものをウィジットに直接追加できます:
</p>
<pre>myWidget.setObjectName("my Nice New Widget")
myWidget.resize(QtCore.QSize(300,100)) # ウィジットのサイズ設定
label = QtGui.QLabel("Hello World", myWidget) # ラベルを作成
label.setGeometry(QtCore.QRect(50,50,200,24)) # そのサイズを設定
label.setObjectName("myLabel") # 名前を設定することで名前を使って検索できるようにします
</pre>
<p>しかしよく好まれる方法は一度にウィジットの設定を全て行えるUIオブジェクトの作成です。この方法の大きな利点はQt Designerを使うことでこういったUIオブジェクトを<a href="https://www.freecadweb.org/wiki/index.php?title=Dialog_creation/jp" title="Dialog creation/jp">グラフィカルな方法</a>で作成できるということです。Qt Designerによって生成された標準的なオブジェクトは以下のようになります
</p>
<pre>class myWidget_Ui(object):
def setupUi(self, myWidget):
myWidget.setObjectName("my Nice New Widget")
myWidget.resize(QtCore.QSize(300,100).expandedTo(myWidget.minimumSizeHint())) # ウィジットのサイズを設定
self.label = QtGui.QLabel(myWidget) # ラベルを作成
self.label.setGeometry(QtCore.QRect(50,50,200,24)) # そのサイズを設定
self.label.setObjectName("label") # 名前を設定することで名前を使って検索できるようにします
def retranslateUi(self, draftToolbar): # ウィジットの翻訳を管理する組み込みのQt関数
myWidget.setWindowTitle(QtGui.QApplication.translate("myWidget", "My Widget", None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate("myWidget", "Welcome to my new widget!", None, QtGui.QApplication.UnicodeUTF8))
</pre>
<p>使用するには以下のようにして新しく作成したウィジットに適用するだけで構いません:
</p>
<pre>myNewFreeCADWidget = QtGui.QDockWidget() # 新しいウィジットを作成
myNewFreeCADWidget.ui = myWidget_Ui() # UIスクリプトをロード
myNewFreeCADWidget.ui.setupUi(myNewFreeCADWidget) # UIを設定
FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewFreeCADWidget) # メインウィンドウにウィジットを追加
</pre>
<p><br />
</p>
<p>FreeCADでは、標準オブジェクト型のだけではなくメッシュや部品のオブジェクトもすべてpythonスクリプトのオブジェクトとして構成できます。これらはPythonの特徴といえます。これらのオブジェクトは、他のFreeCADのオブジェクトとまったく同じように動作し自動的にファイルへ保存や読み込みが行われます。
知っておくべきひとつの特徴として、オブジェクトはpythonの<a rel="nofollow" class="external text" href="http://docs.python.org/release/2.5/lib/module-cPickle.html">cPickle</a>モジュールと一緒にFreeCADのFcStdファイルに保存されます。そのモジュールは文字列で表されたpythonオブジェクト保存されたファイルに追記できるように変更します。cPickleモジュールは、読み込まれると元のオブジェクトを再作成するために、その文字列を使用してオブジェクトを作成したソースコードへのアクセスを提供しています。このようなカスタムオブジェクトを保存して、オブジェクトを生成したPythonコードが存在していない他のマシン上でそれを開いた場合、オブジェクトが再作成されないということです。そのため、他の人にこのようなオブジェクトを配布する場合は、一緒に作成したPythonスクリプトを配布する必要があります。
Pythonの特長は、すべてのFreeCADの機能に当てはまります。これらはアプリケーションとGUIの部分に分類されます。アプリケーション部、ドキュメントオブジェクト、オブジェクトのジオメトリ定義、そのGUI部分、ViewProviderObject、どのように画面描画を行うか定義したオブジェクトです。プロパティはFreeCADで事前に定義されたプロパティの種類のいずれかでなければなりません。そしてプロパティを表示するウィンドウが生成され、ユーザーがそれらを変更することができます。この場合、FeaturePythonオブジェクトは完全なパラメータです。別のオブジェクトとそのViewObjectのプロパティを定義することができます。
</p>
<h2><span class="mw-headline" id=".E5.9F.BA.E6.9C.AC.E7.9A.84.E3.81.AA.E4.BE.8B">基本的な例</span></h2>
<p>このサイト<a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/TemplatePyMod/FeaturePython.py?view=markup">src/Mod/TemplatePyMod/FeaturePython.py</a>でサンプルのファイルといくつかの他のサンプルを一緒に見ることができます。
</p>
<pre>"Examples for a feature class and its view provider."
import FreeCAD, FreeCADGui
from pivy import coin
class Box:
def __init__(self, obj):
"<b>Add some custom properties to our box feature</b>"
obj.addProperty("App::PropertyLength","Length","Box","Length of the box").Length=1.0
obj.addProperty("App::PropertyLength","Width","Box","Width of the box").Width=1.0
obj.addProperty("App::PropertyLength","Height","Box", "Height of the box").Height=1.0
obj.Proxy = self
def onChanged(self, fp, prop):
"<b>Do something when a property has changed</b>"
FreeCAD.Console.PrintMessage("Change property: " + str(prop) + "\n")
def execute(self, fp):
"<b>Do something when doing a recomputation, this method is mandatory</b>"
FreeCAD.Console.PrintMessage("Recompute Python Box feature\n")
class ViewProviderBox:
def __init__(self, obj):
"<b>Set this object to the proxy object of the actual view provider</b>"
obj.addProperty("App::PropertyColor","Color","Box","Color of the box").Color=(1.0,0.0,0.0)
obj.Proxy = self
def attach(self, obj):
"<b>Setup the scene sub-graph of the view provider, this method is mandatory</b>"
self.shaded = coin.SoGroup()
self.wireframe = coin.SoGroup()
self.scale = coin.SoScale()
self.color = coin.SoBaseColor()
data=coin.SoCube()
self.shaded.addChild(self.scale)
self.shaded.addChild(self.color)
self.shaded.addChild(data)
obj.addDisplayMode(self.shaded,"Shaded");
style=coin.SoDrawStyle()
style.style = coin.SoDrawStyle.LINES
self.wireframe.addChild(style)
self.wireframe.addChild(self.scale)
self.wireframe.addChild(self.color)
self.wireframe.addChild(data)
obj.addDisplayMode(self.wireframe,"Wireframe");
self.onChanged(obj,"Color")
def updateData(self, fp, prop):
"<b>If a property of the handled feature has changed we have the chance to handle this here</b>"
# fp is the handled feature, prop is the name of the property that has changed
l = fp.getPropertyByName("Length")
w = fp.getPropertyByName("Width")
h = fp.getPropertyByName("Height")
self.scale.scaleFactor.setValue(l,w,h)
pass
def getDisplayModes(self,obj):
"<b>Return a list of display modes.</b>"
modes=[]
modes.append("Shaded")
modes.append("Wireframe")
return modes
def getDefaultDisplayMode(self):
"<b>Return the name of the default display mode. It must be defined in getDisplayModes.</b>"
return "Shaded"
def setDisplayMode(self,mode):
"<b>Map the display mode defined in attach with those defined in getDisplayModes.\</b>
<b>Since they have the same names nothing needs to be done. This method is optional</b>"
return mode
def onChanged(self, vp, prop):
"<b>Here we can do something when a single property got changed</b>"
FreeCAD.Console.PrintMessage("Change property: " + str(prop) + "\n")
if prop == "Color":
c = vp.getPropertyByName("Color")
self.color.rgb.setValue(c[0],c[1],c[2])
def getIcon(self):
"<b>Return the icon in XPM format which will appear in the tree view. This method is\</b>
<b>optional and if not defined a default icon is shown.</b>"
return """
/* XPM */
static const char * ViewProviderBox_xpm[] = {
"16 16 6 1",
" c None",
".c #141010",
"+c #615BD2",
"@c #C39D55",
"#c #000000",
"$c #57C355",
" ........",
" ......++..+..",
" .@@@@.++..++.",
" .@@@@.++..++.",
" .@@ .++++++.",
" ..@@ .++..++.",
"###@@@@ .++..++.",
"##$.@@$#.++++++.",
"#$#$.$$$........",
"#$$####### ",
"#$$#$$$$$# ",
"#$$#$$$$$# ",
"#$$#$$$$$# ",
" #$#$$$$$# ",
" ##$$$$$# ",
" ####### "};
"""
def __getstate__(self):
"<b>When saving the document this object gets stored using Python's cPickle module.\</b>
<b>Since we have some un-pickable here -- the Coin stuff -- we must define this method\</b>
<b>to return a tuple of all pickable objects or None.</b>"
return None
def __setstate__(self,state):
"<b>When restoring the pickled object from document we have the chance to set some internals here.\</b>
<b>Since no data were pickled nothing needs to be done here.</b>"
return None
def makeBox():
FreeCAD.newDocument()
a=FreeCAD.ActiveDocument.addObject("App::FeaturePython","Box")
Box(a)
ViewProviderBox(a.ViewObject)
</pre>
<h2><span class="mw-headline" id=".E5.88.A9.E7.94.A8.E5.8F.AF.E8.83.BD.E3.81.AA.E3.83.97.E3.83.AD.E3.83.91.E3.83.86.E3.82.A3">利用可能なプロパティ</span></h2>
<p>プロパティはFeaturePythonオブジェクトの基礎です。それらを介して、ユーザーが自分のオブジェクトをやり取りしたり変更することができます。ドキュメントで新しいFeaturePythonオブジェクト作成後にa=FreeCAD.ActiveDocument.addObject("App::FeaturePython","Box"))利用可能なプロパティの一覧を取得できます:
</p>
<pre>a.supportedProperties()
</pre>
<p>使用可能なプロパティを取得します:
</p>
<pre>App::PropertyBool
App::PropertyFloat
App::PropertyFloatList
App::PropertyFloatConstraint
App::PropertyAngle
App::PropertyDistance
App::PropertyInteger
App::PropertyIntegerConstraint
App::PropertyPercent
App::PropertyEnumeration
App::PropertyIntegerList
App::PropertyString
App::PropertyStringList
App::PropertyLink
App::PropertyLinkList
App::PropertyMatrix
App::PropertyVector
App::PropertyVectorList
App::PropertyPlacement
App::PropertyPlacementLink
App::PropertyColor
App::PropertyColorList
App::PropertyMaterial
App::PropertyPath
App::PropertyFile
App::PropertyFileIncluded
Part::PropertyPartShape
Part::PropertyFilletContour
Part::PropertyCircle
</pre>
<p>カスタムオブジェクトにプロパティを追加するときは、次の点に注意してください:
</p>
<ul><li>プロパティの説明の中で"&lt;"または "&gt;"の文字を使用しないでください(.fcstdファイル内のXMLの部分を壊してしまいます</li>
<li>プロパティは、.fcstdファイルにアルファベット順に格納されています。プロパティの中で形状を定義している場合、名前がアルファベット順で"Shape"の後に来るすべてのプロパティは、形状がロードされた後に読み込まれるため、おかしい動作を引き起こす可能性があります</li></ul>
<h2><span class="mw-headline" id=".E3.82.88.E3.82.8A.E8.A4.87.E9.9B.91.E3.81.AA.E4.BE.8B">より複雑な例</span></h2>
<p>この例では<a href="Part_Module.html" title="Part Module">Part Module</a>で八面体やpivyとコインを作成するために使用します。
最初はドキュメントオブジェクトそのものです。
</p>
<pre>import FreeCAD, FreeCADGui, Part
class Octahedron:
def __init__(self, obj):
"Add some custom properties to our box feature"
obj.addProperty("App::PropertyLength","Length","Octahedron","Length of the octahedron").Length=1.0
obj.addProperty("App::PropertyLength","Width","Octahedron","Width of the octahedron").Width=1.0
obj.addProperty("App::PropertyLength","Height","Octahedron", "Height of the octahedron").Height=1.0
obj.addProperty("Part::PropertyPartShape","Shape","Octahedron", "Shape of the octahedron")
obj.Proxy = self
def execute(self, fp):
# Define six vetices for the shape
v1 = FreeCAD.Vector(0,0,0)
v2 = FreeCAD.Vector(fp.Length,0,0)
v3 = FreeCAD.Vector(0,fp.Width,0)
v4 = FreeCAD.Vector(fp.Length,fp.Width,0)
v5 = FreeCAD.Vector(fp.Length/2,fp.Width/2,fp.Height/2)
v6 = FreeCAD.Vector(fp.Length/2,fp.Width/2,-fp.Height/2)
# Make the wires/faces
f1 = self.make_face(v1,v2,v5)
f2 = self.make_face(v2,v4,v5)
f3 = self.make_face(v4,v3,v5)
f4 = self.make_face(v3,v1,v5)
f5 = self.make_face(v2,v1,v6)
f6 = self.make_face(v4,v2,v6)
f7 = self.make_face(v3,v4,v6)
f8 = self.make_face(v1,v3,v6)
shell=Part.makeShell([f1,f2,f3,f4,f5,f6,f7,f8])
solid=Part.makeSolid(shell)
fp.Shape = solid
# helper mehod to create the faces
def make_face(self,v1,v2,v3):
wire = Part.makePolygon([v1,v2,v3,v1])
face = Part.Face(wire)
return face
</pre>
<p>ここで我々は、3Dシーン内のオブジェクトを表示するための対応するViewProviderObjectを使用します
</p>
<pre> class ViewProviderOctahedron:
def __init__(self, obj):
"Set this object to the proxy object of the actual view provider"
obj.addProperty("App::PropertyColor","Color","Octahedron","Color of the octahedron").Color=(1.0,0.0,0.0)
obj.Proxy = self
def attach(self, obj):
"Setup the scene sub-graph of the view provider, this method is mandatory"
self.shaded = coin.SoGroup()
self.wireframe = coin.SoGroup()
self.scale = coin.SoScale()
self.color = coin.SoBaseColor()
self.data=coin.SoCoordinate3()
self.face=coin.SoIndexedLineSet()
self.shaded.addChild(self.scale)
self.shaded.addChild(self.color)
self.shaded.addChild(self.data)
self.shaded.addChild(self.face)
obj.addDisplayMode(self.shaded,"Shaded");
style=coin.SoDrawStyle()
style.style = coin.SoDrawStyle.LINES
self.wireframe.addChild(style)
self.wireframe.addChild(self.scale)
self.wireframe.addChild(self.color)
self.wireframe.addChild(self.data)
self.wireframe.addChild(self.face)
obj.addDisplayMode(self.wireframe,"Wireframe");
self.onChanged(obj,"Color")
def updateData(self, fp, prop):
"If a property of the handled feature has changed we have the chance to handle this here"
# fp is the handled feature, prop is the name of the property that has changed
if prop == "Shape":
s = fp.getPropertyByName("Shape")
self.data.point.setNum(6)
cnt=0
for i in s.Vertexes:
self.data.point.set1Value(cnt,i.X,i.Y,i.Z)
cnt=cnt+1
self.face.coordIndex.set1Value(0,0)
self.face.coordIndex.set1Value(1,1)
self.face.coordIndex.set1Value(2,2)
self.face.coordIndex.set1Value(3,-1)
self.face.coordIndex.set1Value(4,1)
self.face.coordIndex.set1Value(5,3)
self.face.coordIndex.set1Value(6,2)
self.face.coordIndex.set1Value(7,-1)
self.face.coordIndex.set1Value(8,3)
self.face.coordIndex.set1Value(9,4)
self.face.coordIndex.set1Value(10,2)
self.face.coordIndex.set1Value(11,-1)
self.face.coordIndex.set1Value(12,4)
self.face.coordIndex.set1Value(13,0)
self.face.coordIndex.set1Value(14,2)
self.face.coordIndex.set1Value(15,-1)
self.face.coordIndex.set1Value(16,1)
self.face.coordIndex.set1Value(17,0)
self.face.coordIndex.set1Value(18,5)
self.face.coordIndex.set1Value(19,-1)
self.face.coordIndex.set1Value(20,3)
self.face.coordIndex.set1Value(21,1)
self.face.coordIndex.set1Value(22,5)
self.face.coordIndex.set1Value(23,-1)
self.face.coordIndex.set1Value(24,4)
self.face.coordIndex.set1Value(25,3)
self.face.coordIndex.set1Value(26,5)
self.face.coordIndex.set1Value(27,-1)
self.face.coordIndex.set1Value(28,0)
self.face.coordIndex.set1Value(29,4)
self.face.coordIndex.set1Value(30,5)
self.face.coordIndex.set1Value(31,-1)
def getDisplayModes(self,obj):
"Return a list of display modes."
modes=[]
modes.append("Shaded")
modes.append("Wireframe")
return modes
def getDefaultDisplayMode(self):
"Return the name of the default display mode. It must be defined in getDisplayModes."
return "Shaded"
def setDisplayMode(self,mode):
return mode
def onChanged(self, vp, prop):
"Here we can do something when a single property got changed"
FreeCAD.Console.PrintMessage("Change property: " + str(prop) + "\n")
if prop == "Color":
c = vp.getPropertyByName("Color")
self.color.rgb.setValue(c[0],c[1],c[2])
def getIcon(self):
return """
/* XPM */
static const char * ViewProviderBox_xpm[] = {
"16 16 6 1",
" c None",
". c #141010",
"+ c #615BD2",
"@ c #C39D55",
"# c #000000",
"$ c #57C355",
" ........",
" ......++..+..",
" .@@@@.++..++.",
" .@@@@.++..++.",
" .@@ .++++++.",
" ..@@ .++..++.",
"###@@@@ .++..++.",
"##$.@@$#.++++++.",
"#$#$.$$$........",
"#$$####### ",
"#$$#$$$$$# ",
"#$$#$$$$$# ",
"#$$#$$$$$# ",
" #$#$$$$$# ",
" ##$$$$$# ",
" ####### "};
"""
def __getstate__(self):
return None
def __setstate__(self,state):
return None
</pre>
<p>最後に呼び出す必要があるオブジェクトとViewオブジェクトを定義します。
</p>
<pre> FreeCAD.newDocument()
a=FreeCAD.ActiveDocument.addObject("App::FeaturePython","Octahedron")
Octahedron(a)
ViewProviderOctahedron(a.ViewObject)
</pre>
<h2><span class="mw-headline" id=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E9.81.B8.E6.8A.9E.E6.96.B9.E6.B3.95">オブジェクトの選択方法</span></h2>
<p>ビューポートでオブジェクトやそれの少なくとも一部をクリックすることによって選択したい場合は、SoFCSelectionード内のコインジオメトリを含める必要があります。オブジェクトに複雑な表現やウィジェット、注釈などがある場合は、SoFCSelectionにその一部を含めることができます。SoFCSelectionで常に選択/非選択なのかを検出するために、不要なスキャンで過負荷にしないためにFreeCADによってスキャンされている。例にself.faceを含めるようにどうなるのかです
</p>
<pre>selectionNode = coin.SoType.fromName("SoFCSelection").createInstance()
selectionNode.documentName.setValue(FreeCAD.ActiveDocument.Name)
selectionNode.objectName.setValue(obj.Object.Name) # here obj is the ViewObject, we need its associated App Object
selectionNode.subElementName.setValue("Face")
selectNode.addChild(self.face)
...
self.shaded.addChild(selectionNode)
self.wireframe.addChild(selectionNode)
</pre>
<p>単に、SoFCSelectionードを作成し、それにジオメトリードを追加し、その後、直接ジオメトリードを追加する代わりに、メインードに追加します。
</p>
<h2><span class="mw-headline" id=".E5.8D.98.E7.B4.94.E3.81.AA.E5.9B.B3.E5.BD.A2.E3.81.A7.E3.81.AE.E4.BD.9C.E6.A5.AD">単純な図形での作業</span></h2>
<p>パラメトリックオブジェクトが単に形状を出力するだけの場合は、ViewProviderObjectを使用する必要はありません。形状はFreeCADの標準的な形状表現を用いて表示されます
</p>
<pre>class Line:
def __init__(self, obj):
<b>"App two point properties" </b>
obj.addProperty("App::PropertyVector","p1","Line","Start point")
obj.addProperty("App::PropertyVector","p2","Line","End point").p2=FreeCAD.Vector(1,0,0)
obj.Proxy = self
def execute(self, fp):
<b>"Print a short message when doing a recomputation, this method is mandatory" </b>
fp.Shape = Part.makeLine(fp.p1,fp.p2)
a=FreeCAD.ActiveDocument.addObject("Part::FeaturePython","Line")
Line(a)
a.ViewObject.Proxy=0 # just set it to something different from None (this assignment is needed to run an internal notification)
FreeCAD.ActiveDocument.recompute()
</pre>
<p><br />
</p>
<p>他のプログラムやスタンドアローンのPythonコンソールにFreeCADをPythonモジュールとしてインポートするための機能は驚くほど充実しています。FreeCADのモジュールとコンポーネントの全てをまとめてインポートできるのです。FreeCADのGUIをPythonモジュールとしてインポートすることさえできます・・多少の制約はありますが。
</p>
<h3><span class="mw-headline" id="GUI.E3.81.AA.E3.81.97.E3.81.A7FreeCAD.E3.82.92.E4.BD.BF.E7.94.A8">GUIなしでFreeCADを使用</span></h3>
<p>まずはじめに思いつく直接的で簡単で便利な応用はFreeCADドキュメントをあなたのプログラムにインポートすることです。次の例ではFreeCADドキュメントのPartジオメトリーを<a rel="nofollow" class="external text" href="http://www.blender.org">blender</a>にインポートしています。スクリプトはこれで全てです。このシンプルさにあなたが感動してくれるといいのですが:
</p>
<pre>FREECADPATH = '/opt/FreeCAD/lib' # FreeCAD.soファイルまたはFreeCAD.dllファイルのパス
import Blender, sys
sys.path.append(FREECADPATH)
def import_fcstd(filename):
try:
import FreeCAD
except ValueError:
Blender.Draw.PupMenu('Error%t|FreeCAD library not found. Please check the FREECADPATH variable in the import script is correct')
else:
scene = Blender.Scene.GetCurrent()
import Part
doc = FreeCAD.open(filename)
objects = doc.Objects
for ob in objects:
if ob.Type[:4] == 'Part':
shape = ob.Shape
if shape.Faces:
mesh = Blender.Mesh.New()
rawdata = shape.tessellate(1)
for v in rawdata[0]:
mesh.verts.append((v.x,v.y,v.z))
for f in rawdata[1]:
mesh.faces.append.append(f)
scene.objects.new(mesh,ob.Name)
Blender.Redraw()
def main():
Blender.Window.FileSelector(import_fcstd, 'IMPORT FCSTD',
Blender.sys.makename(ext='.fcstd'))
# This lets you import the script without running it
if __name__=='__main__':
main()
</pre>
<p>まず重要なのはPythonがちゃんとFreeCADライブラリを見つけ出しているかの確認です。それが済めば私たちが使っているPartなどFreeCADモジュール全てを自動的に利用できるようになります。そこでまずPythonがモジュールを検索する位置を示すsys.path変数を取り、そこにFreeCADのlibのパスを追加しています。ここで行った変更は一時的なものでPythonインタプリタの終了時に消えます。これとは別にFreeCADライブラリをPythonの検索パスの一つにリンクさせることもできます。今回のスクリプトではパスを定数FREECADPATHに入れています。こうしておけば他のユーザーが自分のシステム用にスクリプトを調整するのが簡単になるでしょう。
</p><p>いったんライブラリのロードtry/except部分が行われれば、いよいよFreeCADを使って作業を行うことができます。やり方はFreeCAD独自の内部Pythonインタプリタの時と同じです。main()関数を使って渡されたFreeCADドキュメントを開き、そのオブジェクトのリストを作成しています。それから関心のあるPartジオメトリーだけを選び出すために各オブジェクトのTypeプロパティに "Part"が入っているかどうか確認し、それをモザイク構造tessellateに変換します。
</p><p>このモザイク構造から頂点のリストと頂点をインデックスとして定義された面のリストが作成されます。これで完璧です。何しろblenderがメッシュを定義するのと全く同じ方法なのですから。やっていることは馬鹿馬鹿しいほど単純です。ただ両方のリストの内容をblenderのmeshのvertsとfacesに追加するだけです。全て終わったら画面を再描画して終わりです
</p><p>もちろんこのスクリプトは非常に簡単なものなので(実を言うともっと応用的なものも<a rel="nofollow" class="external text" href="http://yorik.orgfree.com/scripts/import_freecad.py">作ってあります</a>、あなたはこれを拡張したくなるでしょう。例えばメッシュオブジェクトのインポート、面の無いPartジオメトリーのインポート、FreeCADで読める他のファイルフォーマットのインポートといったものが考えられます。またジオメトリーをFreeCADドキュメントとしてエクスポートしたいと思うかもしれません。同じようにしてできます。あるいはダイアログを使ってユーザーが何をインポートするか選べるようにしたいと思うかも。他にもあるでしょう。実際の所、これら全てに共通して言える利点はあなたが選んだプログラムの結果出力用にFreeCADに基礎となる作業をさせることができる、ということなのです。
</p>
<h3><span class="mw-headline" id="GUI.E3.81.82.E3.82.8A.E3.81.A7FreeCAD.E3.82.92.E4.BD.BF.E7.94.A8">GUIありでFreeCADを使用</span></h3>
<p>バージョン4.2からQtには興味深い機能が追加されました。Qt-GUI依存のプラグインを非Qtなホストアプリケーションに埋め込み、ホスト側のイベントループを共有できるようになったのです。
</p><p>特にFreeCADについて言えば、これは別のアプリケーション内から全体のユーザーインターフェイスごとFreeCADをインポートでき、ホストアプリケーションがFreeCADを完全に制御できるということを意味します。
</p><p>これを行うためのPythonコードは全部でたったのニ行です。
</p>
<pre>import FreeCADGui
FreeCADGui.showMainWindow()
</pre>
<p>もしホストアプリケーションがQtベースであればこの方法はQtがサポートされている全てのプラットフォームで動作します。ただしホスト側はFreeCADと同じバージョンのQtとリンクされている必要があります。さもないと予期しない実行時エラーが起きる可能性があります。
</p><p>非Qtなアプリケーションでも知っておく必要のある制約はごくわずかです。この方法は恐らく他のツールキットと一緒に使っても動作しません。
Windowsの場合、ホストアプリケーションはWin32を直接使用しているかwxWidgets、MFC、WinFormなど内部でWin32APIを使用しているツールキットを使用していなければなりません。X11下で動作するためにはホストアプリケーションは"glib"ライブラリをリンクしている必要があります。
</p><p>またコンソールアプリケーションではこの方法は使えないことに注意してください。なぜならイベントループ実行が存在しないからです。
</p>
<p><br />
</p>
<p>このページにはフォーラムでユーザーが作成したり議論した中から集めたFreeCAD用Pythonコードのサンプル、コード片、コードの一部を集めて載せています。あなたのスクリプトの参考にしてください・・・
</p>
<h3><span class="mw-headline" id=".E5.85.B8.E5.9E.8B.E7.9A.84.E3.81.AAInitGui.py.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB">典型的なInitGui.pyファイル</span></h3>
<p>全てのモジュールにはメインモジュールファイルに加えてメインGUIにモジュールを挿入するためのInitGui.pyファイルが含まれていなければなりません。これはその単純な例です。
</p>
<pre>class ScriptWorkbench (Workbench):
MenuText = "Scripts"
def Initialize(self):
import Scripts # Scripts.pyがあなたのモジュールとします
list = ["Script_Cmd"] # このリストにはScripts.pyで定義されているであろうコマンドの名前が代入されていなければなりません
self.appendToolbar("My Scripts",list)
Gui.addWorkbench(ScriptWorkbench())
</pre>
<h3><span class="mw-headline" id=".E5.85.B8.E5.9E.8B.E7.9A.84.E3.81.AA.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB">典型的なモジュールファイル</span></h3>
<p>モジュールが行う処理の全てが記載されているメインモジュールファイルの例です。前の例で呼び出されるScripts.pyファイルです。自作のコマンドの全てをここに記載します。
</p>
<pre>import FreeCAD, FreeCADGui
class ScriptCmd:
def Activated(self):
# ここにあなたのScriptCmdが行うことを書きます・・・
FreeCAD.Console.PrintMessage('Hello, World!')
def GetResources(self):
return {'Pixmap'&#160;: 'path_to_an_icon/myicon.png', 'MenuText': 'Short text', 'ToolTip': 'More detailed text'}
FreeCADGui.addCommand('Script_Cmd', ScriptCmd())
</pre>
<h3><span class="mw-headline" id=".E6.96.B0.E3.81.97.E3.81.84.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.82.BF.E3.82.A4.E3.83.97.E3.82.92.E3.82.A4.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.88">新しいファイルタイプをインポート</span></h3>
<p>FreeCADでは簡単に新しいファイルタイプ用のインポート処理を作成することができます。FreeCADはデータを開かれているドキュメントからインポートするか、たんに直接新しいファイルタイプを開くかを区別しません。やらなければならないのは新しいファイル拡張子を FreeCADのリストに追加し、そのファイルを読み込んで欲しいFreeCADオブジェクトを作成するコードを書くことだけです
</p><p>リストに新しいファイル拡張子を追加するためには以下の行をInitGui.pyに追加しなければなりません
</p>
<pre># .extファイルを開いて読み込むためのコードがあるファイルをImport_Ext.pyとします
FreeCAD.addImportType("Your new File Type (*.ext)","Import_Ext")
</pre>
<p>Import_Ext.pyファイルには以下のように書きます
</p>
<pre>def open(filename):
doc=App.newDocument()
# 読み込み、データの識別、対応するFreeCADオブジェクトの作成などfilenameを使って行う必要のある全てをここで行います
doc.recompute()
</pre>
<p>新しいファイルタイプへのドキュメントのエクスポートも以下の行を使用する以外は同様にして行います:
</p>
<pre>FreeCAD.addExportType("Your new File Type (*.ext)","Export_Ext")
</pre>
<h3><span class="mw-headline" id=".E3.83.A9.E3.82.A4.E3.83.B3.E3.81.AE.E8.BF.BD.E5.8A.A0">ラインの追加</span></h3>
<p>ラインは2点を持ちます
</p>
<pre>import Part,PartGui
doc=App.activeDocument()
# ライン要素をドキュメントに追加し、その点を設定
l=Part.Line()
l.StartPoint=(0.0,0.0,0.0)
l.EndPoint=(1.0,1.0,1.0)
doc.addObject("Part::Feature","Line").Shape=l.toShape()
doc.recompute()
</pre>
<h3><span class="mw-headline" id=".E3.83.9D.E3.83.AA.E3.82.B4.E3.83.B3.E3.81.AE.E8.BF.BD.E5.8A.A0">ポリゴンの追加</span></h3>
<p>ポリゴンはつながった線分の集合AutoCADでいうポリラインです。線分の集合が閉じている必要はありません。
</p>
<pre>import Part,PartGui
doc=App.activeDocument()
n=list()
# 3Dベクトルを作成し、座標を設定してリストに追加
v=App.Vector(0,0,0)
n.append(v)
v=App.Vector(10,0,0)
n.append(v)
#・・・全ての節点に対して繰り返します
# ポリゴンオブジェクトを作成し、その節点を設定
p=doc.addObject("Part::Polygon","Polygon")
p.Nodes=n
doc.recompute()
</pre>
<h3><span class="mw-headline" id=".E3.82.B0.E3.83.AB.E3.83.BC.E3.83.97.E3.81.AB.E5.AF.BE.E3.81.99.E3.82.8B.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E8.BF.BD.E5.8A.A0.E3.81.A8.E5.89.8A.E9.99.A4">グループに対するオブジェクトの追加と削除</span></h3>
<pre>doc=App.activeDocument()
grp=doc.addObject("App::DocumentObjectGroup", "Group")
lin=doc.addObject("Part::Feature", "Line")
grp.addObject(lin) # linオブジェクトをグループgrpに追加
grp.removeObject(lin) # linオブジェクトをグループgrpから削除
</pre>
<p>注意: グループにグループを追加することも可能です・・・
</p>
<h3><span class="mw-headline" id=".E3.83.A1.E3.83.83.E3.82.B7.E3.83.A5.E3.81.AE.E8.BF.BD.E5.8A.A0">メッシュの追加</span></h3>
<pre>import Mesh
doc=App.activeDocument()
# 新しい空のメッシュを作成
m = Mesh.Mesh()
# 12のファセットからボックスを作成
m.addFacet(0.0,0.0,0.0, 0.0,0.0,1.0, 0.0,1.0,1.0)
m.addFacet(0.0,0.0,0.0, 0.0,1.0,1.0, 0.0,1.0,0.0)
m.addFacet(0.0,0.0,0.0, 1.0,0.0,0.0, 1.0,0.0,1.0)
m.addFacet(0.0,0.0,0.0, 1.0,0.0,1.0, 0.0,0.0,1.0)
m.addFacet(0.0,0.0,0.0, 0.0,1.0,0.0, 1.0,1.0,0.0)
m.addFacet(0.0,0.0,0.0, 1.0,1.0,0.0, 1.0,0.0,0.0)
m.addFacet(0.0,1.0,0.0, 0.0,1.0,1.0, 1.0,1.0,1.0)
m.addFacet(0.0,1.0,0.0, 1.0,1.0,1.0, 1.0,1.0,0.0)
m.addFacet(0.0,1.0,1.0, 0.0,0.0,1.0, 1.0,0.0,1.0)
m.addFacet(0.0,1.0,1.0, 1.0,0.0,1.0, 1.0,1.0,1.0)
m.addFacet(1.0,1.0,0.0, 1.0,1.0,1.0, 1.0,0.0,1.0)
m.addFacet(1.0,1.0,0.0, 1.0,0.0,1.0, 1.0,0.0,0.0)
# エッジの長さを100倍にする
m.scale(100.0)
# アクティブなドキュメントにメッシュを追加
me=doc.addObject("Mesh::Feature","Cube")
me.Mesh=m
</pre>
<h3><span class="mw-headline" id=".E5.86.86.E5.BC.A7.E3.81.BE.E3.81.9F.E3.81.AF.E5.86.86.E3.81.AE.E8.BF.BD.E5.8A.A0">円弧または円の追加</span></h3>
<pre>import Part
doc = App.activeDocument()
c = Part.Circle()
c.Radius=10.0
f = doc.addObject("Part::Feature", "Circle") # 円フィーチャーを持つドキュメントを作成
f.Shape = c.toShape() # 円シェイプをシェイププロパティに代入
doc.recompute()
</pre>
<h3><span class="mw-headline" id=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E8.A1.A8.E7.8F.BE.E3.81.B8.E3.81.AE.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9.E3.81.A8.E5.A4.89.E6.9B.B4">オブジェクト表現へのアクセスと変更</span></h3>
<p>FreeCADドキュメント内の各オブジェクトは関連付けられたビュー表現オブジェクトを持ち、そのビュー表現オブジェクトはそのオブジェクトがどのように表示されるかを定義する色、ライン幅などの全てのプロパティを保持しています。
</p>
<pre>gad=Gui.activeDocument() # 対応するAppドキュメント内のフィーチャーと
# 対応する全てのビュー表現を保持した
# アクティブなドキュメントにアクセス
v=gad.getObject("Cube") # フィーチャー'Cube' のビュー表現にアクセス
v.ShapeColor # 色をコンソールに表示
v.ShapeColor=(1.0,1.0,1.0) # シェイプの色を白に設定
</pre>
<h3><span class="mw-headline" id="Python.E3.81.8B.E3.82.893D.E3.83.93.E3.83.A5.E3.83.BC.E3.82.A2.E3.83.BC.E3.81.AE.E3.83.9E.E3.82.A6.E3.82.B9.E3.82.A4.E3.83.99.E3.83.B3.E3.83.88.E3.82.92.E7.9B.A3.E8.A6.96">Pythonから3Dビューアーのマウスイベントを監視</span></h3>
<p>Inventorフレームワークでは 複数のコールバック用ードをビューアーへのシーングラフへ追加することができます。デフォルトではFreeCADはビューアーごとに一つのコールバック用ードがインストールされており、それを使うとグローバルまたはスタティックなC++関数を追加することができます。適切なPythonバインディングではこのテクニックをPythonコードから利用するためのメソッドが提供されています。
</p>
<pre>App.newDocument()
v=Gui.activeDocument().activeView()
# このクラスは全てのマウスボタンイベントを記録します。登録されたコールバック関数は'down'イベントと'up'イベントで
# 二回、ファイヤーします。これをハンドリングするためのブール値フラグが必要です。
class ViewObserver:
def logPosition(self, info):
down = (info["State"] == "DOWN")
pos = info["Position"]
if (down):
FreeCAD.Console.PrintMessage("Clicked on position: ("+str(pos[0])+", "+str(pos[1])+")\n")
o = ViewObserver()
c = v.addEventCallback("SoMouseButtonEvent",o.logPosition)
</pre>
<p>さあ、3Dビューアーの領域のどこかをピックして出力ウィンドウにメッセージが表示されるのを見てください。監視を終了するには次のようにします。
</p>
<pre>v.removeEventCallback("SoMouseButtonEvent",c)
</pre>
<p>次のイベント型がサポートされています。
</p>
<ul><li> SoEvent -- 全ての種類のイベント</li>
<li> SoButtonEvent -- 全てのマウスボタンイベントとキーイベント</li>
<li> SoLocation2Event -- 2D動作イベント通常はマウス動作</li>
<li> SoMotion3Event -- 3D動作イベント通常はスペースボール</li>
<li> SoKeyboardEvent -- キーダウンイベントとキーアップイベント</li>
<li> SoMouseButtonEvent -- マウスのボタンダウンイベントとボタンアップイベント</li>
<li> SoSpaceballButtonEvent -- スペースボールのボタンダウンイベントとボタンアップイベント</li></ul>
<p>addEventCallback()によって登録されるPython関数は辞書を要求します。検知されたイベントに従って辞書には様々なキーが保持されます。
</p><p>全てのイベントは次のキーを持ちます:
</p>
<ul><li> Type -- イベント型の名前、つまりSoMouseEvent、SoLocation2Event、・・・などです。</li>
<li> Time -- 文字列形式での現在時刻</li>
<li> Position -- マウス位置を表す二つの整数のタプル</li>
<li> ShiftDown -- ブール値。Shiftが押されている場合はtrue、それ以外の場合はfalse。</li>
<li> CtrlDown -- ブール値。Ctrlが押されている場合はtrue、それ以外の場合はfalse。</li>
<li> AltDown -- ブール値。Altが押されている場合はtrue、それ以外の場合はfalse。</li></ul>
<p>全てのボタンイベント、つまりキーボードイベント、マウスイベント、スペースボールイベントの場合:
</p>
<ul><li> State -- ボタンが離された場合は'UP'、押された場合は'DOWN'、それ以外の場合は'UNKNOWN'の文字列</li></ul>
<p>キーボードイベントの場合:
</p>
<ul><li> Key -- 押されたキーの文字</li></ul>
<p>マウスボタンイベントの場合:
</p>
<ul><li> Button -- 押されたボタン。BUTTON1、・・・、BUTTON5など。</li></ul>
<p>スペースボールイベントの場合:
</p>
<ul><li> Button -- 押されたボタン。BUTTON1、・・・、BUTTON7など。</li></ul>
<p>そして最後にモーションイベントの場合:
</p>
<ul><li> Translation -- 三つの浮動小数点数のタプル</li>
<li> Rotation -- 回転のクォータニオン、つまり四つの浮動小数点数のタプル</li></ul>
<h3><span class="mw-headline" id="Python.E3.81.A7.E3.81.AE.E3.82.B7.E3.83.BC.E3.83.B3.E3.82.B0.E3.83.A9.E3.83.95.E6.93.8D.E4.BD.9C">Pythonでのシーングラフ操作</span></h3>
<p>Coin用のPythonバインディングである'pivy'モジュールを使ってPythonでシーングラフを取得して変更することも可能です。
</p>
<pre>from pivy.coin import * # pivyモジュールをロード
view = Gui.ActiveDocument.ActiveView # アクティブなビューアーを取得
root = view.getSceneGraph() # ルートはSoSeparatorード
root.addChild(SoCube())
view.fitAll()
</pre>
<p>pivyのPythonAPIはSWIGというツールを使って作られています。FreeCADで使用する場合、自作ードをPythonで直接作成することはできません。
ただし、内部的な名称を使ってノードを作成することはできます。'SoFCSelection'型のインスタンスは次のようにして作成することが可能です:
</p>
<pre>type = SoType.fromName("SoFCSelection")
node = type.createInstance()
</pre>
<h3><span class="mw-headline" id=".E3.82.B7.E3.83.BC.E3.83.B3.E3.82.B0.E3.83.A9.E3.83.95.E3.81.AB.E5.AF.BE.E3.81.99.E3.82.8B.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E8.BF.BD.E5.8A.A0.E3.81.A8.E5.89.8A.E9.99.A4">シーングラフに対するオブジェクトの追加と削除</span></h3>
<p>シーングラフへの新しいードの追加は以下のようにして行うことができます。オブジェクトのジオメトリー、座標、マテリアルの情報の追加のためには常にSoSeparatorの追加が必要なことに注意してください。次の例では (0,0,0)から(10,0,0):に引かれた赤いラインを追加しています。
</p>
<pre>from pivy import coin
sg = Gui.ActiveDocument.ActiveView.getSceneGraph()
co = coin.SoCoordinate3()
pts = [[0,0,0],[10,0,0]]
co.point.setValues(0,len(pts),pts)
ma = coin.SoBaseColor()
ma.rgb = (1,0,0)
li = coin.SoLineSet()
li.numVertices.setValue(2)
no = coin.SoSeparator()
no.addChild(co)
no.addChild(ma)
no.addChild(li)
sg.addChild(no)
</pre>
<p>削除は次の様にします:
</p>
<pre>sg.removeChild(no)
</pre>
<h3><span class="mw-headline" id=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.81.B8.E3.81.AE.E8.87.AA.E4.BD.9C.E3.82.A6.E3.82.A3.E3.82.B8.E3.83.83.E3.83.88.E3.81.AE.E8.BF.BD.E5.8A.A0">インターフェイスへの自作ウィジットの追加</span></h3>
<p>Qtデザイナーを使って自作のウィジットを作成し、それをPythonスクリプトに変換し、PyQt4を使ってFreeCADインターフェイスへ読み込むことが可能です。
</p><p>UI PthonコンパイラQtデザイナーの.uiファイルをPythonコードに変換するツールを使って作成されたPythonコードは一般的に次の様になります簡単なものです。直接Pythonで書くこともできます
</p>
<pre>class myWidget_Ui(object):
def setupUi(self, myWidget):
myWidget.setObjectName("my Nice New Widget")
myWidget.resize(QtCore.QSize(QtCore.QRect(0,0,300,100).size()).expandedTo(myWidget.minimumSizeHint())) # ウィジットのサイズを設定
self.label = QtGui.QLabel(myWidget) # ラベルを作成
self.label.setGeometry(QtCore.QRect(50,50,200,24)) # サイズを設定
self.label.setObjectName("label") # 名前を設定。これによって名前での検索が可能になります。
def retranslateUi(self, draftToolbar): # ウィジットの翻訳を管理する組み込みのQt関数
myWidget.setWindowTitle(QtGui.QApplication.translate("myWidget", "My Widget", None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate("myWidget", "Welcome to my new widget!", None, QtGui.QApplication.UnicodeUTF8))
</pre>
<p>次に必要なことはFreeCADのQtウィンドウへの参照を作成し、そこに自作のウィジットを挿入して、このウィジットを作成したUIコードで"作り変える"ことだけです:
</p>
<pre> app = QtGui.qApp
FCmw = app.activeWindow() # アクティブなQtウィンドウ。その内部にいるのでFreeCADウィンドウです。
myNewFreeCADWidget = QtGui.QDockWidget() # 新しい dockwidget を作成
myNewFreeCADWidget.ui = myWidget_Ui() # UIスクリプトを読み込み
myNewFreeCADWidget.ui.setupUi(myNewFreeCADWidget) # UIをセットアップ
FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewFreeCADWidget) # メインウィンドウにウィジットを追加
</pre>
<h3><span class="mw-headline" id=".E3.82.B3.E3.83.B3.E3.83.9C.E3.83.93.E3.83.A5.E3.83.BC.E3.81.B8.E3.81.AE.E3.82.BF.E3.83.96.E3.81.AE.E8.BF.BD.E5.8A.A0">コンボビューへのタブの追加</span></h3>
<p>次のコードを使うとFreeCADのコンボビューの"Project"タブ、"Tasks"タブの隣にタブを追加することができます。またuiファイルを直接そのタブに読み込むためにuicモジュールを使用しています。
</p>
<pre>from PyQt4 import QtGui,QtCore
from PyQt4 import uic
#from PySide import QtGui,QtCore
def getMainWindow():
"returns the main window"
# QtGui.qApp.activeWindow()の使用は信頼性が高くありません。
# これはメインウィンドウではなく別のウィジット(例えばダイアログ)が
# アクティブな場合に間違ったウィジットが返されるためです
toplevel = QtGui.qApp.topLevelWidgets()
for i in toplevel:
if i.metaObject().className() == "Gui::MainWindow":
return i
raise Exception("No main window found")
def getComboView(mw):
dw=mw.findChildren(QtGui.QDockWidget)
for i in dw:
if str(i.objectName()) == "Combo View":
return i.findChild(QtGui.QTabWidget)
raise Exception("No tab widget found")
mw = getMainWindow()
tab = getComboView(getMainWindow())
tab2=QtGui.QDialog()
tab.addTab(tab2,"A Special Tab")
uic.loadUi("/myTaskPanelforTabs.ui",tab2)
tab2.show()
#tab.removeTab(2)
</pre>
<h3><span class="mw-headline" id=".E8.87.AA.E4.BD.9C.E3.82.A6.E3.82.A7.E3.83.96.E3.83.9A.E3.83.BC.E3.82.B8.E3.82.92.E9.96.8B.E3.81.8F">自作ウェブページを開く</span></h3>
<pre>import WebGui
WebGui.openBrowser("<a rel="nofollow" class="external free" href="http://www.example.com">http://www.example.com</a>")
</pre>
<h3><span class="mw-headline" id=".E9.96.8B.E3.81.84.E3.81.9F.E3.82.A6.E3.82.A7.E3.83.96.E3.83.9A.E3.83.BC.E3.82.B8.E3.81.AEHTML.E3.82.B3.E3.83.B3.E3.83.86.E3.83.B3.E3.83.84.E3.82.92.E5.8F.96.E5.BE.97">開いたウェブページのHTMLコンテンツを取得</span></h3>
<pre>from PyQt4 import QtGui,QtWebKit
a = QtGui.qApp
mw = a.activeWindow()
v = mw.findChild(QtWebKit.QWebFrame)
html = unicode(v.toHtml())
print html
</pre>
<p><br />
</p>
<p>このページでは高度な機能を簡単にPythonで構築する方法を説明しています。このエクササイズではラインを描画する新しいツールを作ることにします。このツールはFreeCADコマンドに関連付けすることが可能で、そのコマンドはメニューアイテムやツールバーボタンなどのインターフェイスの任意の要素から呼び出すことができます。
</p>
<h2><span class="mw-headline" id=".E3.83.A1.E3.82.A4.E3.83.B3.E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88">メインスクリプト</span></h2>
<p>まず必要な機能を全て持つスクリプトを書きましょう。それをファイルに保存してFreeCADでインポートすると書いたクラスと関数の全てをFreeCADで利用できるようになります。あなたのおこのみのテキストエディタを起動して次の様に入力してください
</p>
<pre>import FreeCADGui, Part
from pivy.coin import *
class line:
"this class will create a line after the user clicked 2 points on the screen"
def __init__(self):
self.view = FreeCADGui.ActiveDocument.ActiveView
self.stack = []
self.callback = self.view.addEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),self.getpoint)
def getpoint(self,event_cb):
event = event_cb.getEvent()
if event.getState() == SoMouseButtonEvent.DOWN:
pos = event.getPosition()
point = self.view.getPoint(pos[0],pos[1])
self.stack.append(point)
if len(self.stack) == 2:
l = Part.Line(self.stack[0],self.stack[1])
shape = l.toShape()
Part.show(shape)
self.view.removeEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),self.callback)
</pre>
<h2><span class="mw-headline" id=".E8.A9.B3.E3.81.97.E3.81.84.E8.AA.AC.E6.98.8E">詳しい説明</span></h2>
<pre>import Part, FreeCADGui
from pivy.coin import *
</pre>
<p>Pythonでは別のモジュールの関数を使いたい場合にはそれをインポートする必要があります。今回はラインを作るための<a href="https://www.freecadweb.org/wiki/index.php?title=Part_Module/jp" title="Part Module/jp">Partモジュール</a>の関数と3DビューにアクセスするためのGUIモジュールFreeCADGuiの関数が必要になります。またSoMouseButtonEventなどのCoinオブジェクト全てを直接使用するのでCoinライブラリの全機能も必要になります。
</p>
<pre>class line:
</pre>
<p>ここでメインクラスを定義しています。なぜ関数でなくクラスを使うのでしょうか?それは私たちのツールはユーザーが画面をクリックするの待つ間、"生きて"いなければならないからです。関数はその処理が終わると終了してしまいますがオブジェクト(クラスによってオブジェクトが定義されます)は破棄されるまで生き続けます。
</p>
<pre>"this class will create a line after the user clicked 2 points on the screen"
</pre>
<p>Pythonでは全てのクラス、関数に説明文を設定することができます。これはFreeCADでは特に便利です。クラスをインタプリタで呼ぶとその説明文がツールチップ表示されるからです。
</p>
<pre>def __init__(self):
</pre>
<p>Pythonのクラスはいつでも__init__を持つことができます。__init__はオブジェクトを作成するためにクラスが呼ばれた時に実行されます。従って私たちのラインツールが開始された時にやりたいことは全てここに書きます。
</p>
<pre>self.view = FreeCADGui.ActiveDocument.ActiveView
</pre>
<p>クラスの中では通常は変数名の前に<i>self.</i>と付けた方がいいでしょう。そうすることでクラスの内外の全関数がわかりやすくなります。ここではself.viewを使ってアクティブな3Dビューへのアクセスと操作を行います。
</p>
<pre>self.stack = []
</pre>
<p>ここではgetpoint関数によって送信される3D上の点を入れる空のリストを作成しています。
</p>
<pre>self.callback = self.view.addEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),self.getpoint)
</pre>
<p>重要な部分です。実際の<a rel="nofollow" class="external text" href="http://www.coin3d.org/">Coin3D</a>シーンだからです。FreeCADは特定のシーンイベントが起きるたびに関数を呼び出すためのCoinのコールバックの仕組みを使っています。今回は<a rel="nofollow" class="external text" href="http://doc.coin3d.org/Coin/group__events.html">SoMouseButtonイベント</a>用のコールバックを作成し、それをgetpoint関数と関連付けています。これによってマウスボタンが押されたり離されたりするたびにgetpoint関数が実行されます。
</p><p>またaddEventCallbackPivy()の代わりにaddEventCallback()を呼べばpivyを利用しなくとも済みます。ただしpivyはCoinシーンの任意の部分にアクセスする非常に効率的で自然な方法なので、できるだけ使った方がいいでしょう
</p>
<pre>def getpoint(self,event_cb):
</pre>
<p>次に3Dビューでマウスボタンが押されるたびに実行されるgetpoint関数を定義します。この関数はevent_cbと呼ばれる引数を受け取ります。このイベントコールバックから複数の情報が格納されているイベントオブジェクトにアクセスすることが可能ですモード情報は<a href="/wiki/Code_snippets/jp#Python.E3.81.8B.E3.82.893D.E3.83.93.E3.83.A5.E3.83.BC.E3.82.A2.E3.83.BC.E3.81.AE.E3.83.9E.E3.82.A6.E3.82.B9.E3.82.A4.E3.83.99.E3.83.B3.E3.83.88.E3.82.92.E7.9B.A3.E8.A6.96" title="Code snippets/jp">こちら</a>)。
</p>
<pre>if event.getState() == SoMouseButtonEvent.DOWN:
</pre>
<p>getpoint関数はマウスボタンが押されるか離される時に呼ばれます。しかし私たちは押された時にだけ3D上の点をピックしたいのですそうしないと互いに非常に近い二つの3D上の点を取得してしまうことになります。そこでそれをチェックしなければなりません。
</p>
<pre>pos = event.getPosition()
</pre>
<p>ここではマウスカーソルのスクリーン座標を取得しています。
</p>
<pre>point = self.view.getPoint(pos[0],pos[1])
</pre>
<p>この関数はマウスカーソル下の焦点面の上にある3D上の点が格納されたFreeCADのVector (x,y,z)を返します。カメラ視点で言うとカメラから伸びる光線とマウスカーソル位置を通過し焦点面にぶつかるところを想像してください。それが取得される3D上の点です。正射影表示の場合にはその光線は視線方向と平行になります。
</p>
<pre>self.stack.append(point)
</pre>
<p>新しい点をスタックに追加しています。
</p>
<pre>if len(self.stack) == 2:
</pre>
<p>必要なだけの点はありますか?もしあればラインを描画しましょう!
</p>
<pre>l = Part.Line(self.stack[0],self.stack[1])
</pre>
<p>ここではFreeCADのVectro二つからラインを作成する関数である<a href="https://www.freecadweb.org/wiki/index.php?title=Part_Module/jp" title="Part Module/jp">Partモジュール</a>のLine()関数を使用しています。Partモジュールの中で作ったり変更したりしたものは全てPartモジュールが保持します。ここまでで私たちはラインパートを作成しました。しかしまだアクティブなドキュメント上のオブジェクトに結び付けられていないので画面上には何も表示されません。
</p>
<pre>shape = l.toShape()
</pre>
<p>FreeCADドキュメントはPartモジュールから作成されたシェイプだけを受け取ることができます。シェイプはPartモジュールの最も一般的な型です。従って私たちはドキュメントに追加する前にラインをシェイプに変換しなければなりません。
</p>
<pre>Part.show(shape)
</pre>
<p>Partモジュールには非常に便利なshow()関数があり、それを使ってドキュメントに新しいオブジェクトを作ってそこにシェイプを結びつけることができます。あるいはまずドキュメントに新しいオブジェクトを作った後、手作業でシェイプを結びつけることもできます。
</p>
<pre>self.view.removeEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),self.callback)
</pre>
<p>ラインを使った作業が終わったので貴重なCPUサイクルを消費してしまうコールバックのための仕組みを取り除きましょう。
</p>
<h2><span class="mw-headline" id=".E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88.E3.81.AE.E3.83.86.E3.82.B9.E3.83.88.E3.81.A8.E4.BD.BF.E7.94.A8">スクリプトのテストと使用</span></h2>
<p>さて、それではスクリプトをFreeCADのPythonインタプリタが見える場所に保存しましょう。モジュールインポート時にインタプリタは次の場所を検索しますPythonのインストールパス、FreeCADのbinディレクトリ、FreeCADモジュールディレクトリの全て。最もいい方法はFreeCADの<a href="https://www.freecadweb.org/wiki/index.php?title=Installing_more_workbenches/jp&amp;action=edit&amp;redlink=1" class="new" title="Installing more workbenches/jp (page does not exist)">Modディレクトリ</a>の一つに新しいディレクトリを作成してそこにスクリプトを保存するというものです。例えば"MyScripts"ディレクトリをを作成してスクリプトを"exercise.py"として保存してみましょう。
</p><p>これで準備万端です。FreeCADを起動して新しいドキュメントを作りPythonインタプリタで次のコマンドを実行しましょう
</p>
<pre>import exercise
</pre>
<p>エラーメッセージが表示されなければ私たちの練習用スクリプトがロードされているはずです。次の様にしてその内容を調べて見ることができます:
</p>
<pre>dir(exercise)
</pre>
<p>dir()コマンドは組み込みのPythonコマンドでモジュールの内容をリスト表示することができます。私たちのline()クラスが待機しているのが確認できるはずです。それではテストしてみましょう:
</p>
<pre>exercise.line()
</pre>
<p>さらに3Dビューを二回クリックしてみると・・・ビンゴ。ラインが表示されますもう一度行うには再度exercise.line()と入力します。何度でも繰り返せます・・・すごいと思いませんか?
</p>
<h2><span class="mw-headline" id="FreeCAD.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.81.A7.E3.81.AE.E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88.E3.81.AE.E7.99.BB.E9.8C.B2">FreeCADインターフェイスでのスクリプトの登録</span></h2>
<p>さて私たちの新しいラインツールをもっとクールにするためにはインターフェイス上にボタンを付けるべきです。そうすれば毎回、キー入力を行う必要がなくなります。最も簡単な方法は新しく作ったMyScriptsディレクトリをちゃんとしたFreeCADワークベンチに作り変えるというものです。簡単にできます。必要なのは<b>InitGui.py</b>というファイルをMyScriptsディレクトリの中に置くことだけです。InitGui.pyには新しいワークベンチを作り、そこに私たちの新しいツールを追加しろ、という命令を書きます。それから私たちの練習用コードをほんの少しだけ書き換えてline() ツールが公式なFreeCADコマンドとして認識されるようにする必要もあります。それではInitGui.pyファイルの作成からはじめましょう。次のコードをInitGui.pyファイルに書き込んでください
</p>
<pre>class MyWorkbench (Workbench):
MenuText = "MyScripts"
def Initialize(self):
import exercise
commandslist = ["line"]
self.appendToolbar("My Scripts",commandslist)
Gui.addWorkbench(MyWorkbench())
</pre>
<p>もうあなたも上記のスクリプトが理解できるのではないかと思います。MyWorkbenchという名前の新しいクラスを作成してそこにタイトルMenuTextを指定し、ワークベンチがFreeCADに読み込まれた時に実行されるInitialize()関数を定義しています。またその関数の中で私たちの練習用ファイルの内容を読み込み、内部で見つけたFreeCADコマンドをコマンドリストに追加します。それが終わったら"My Scripts"という名前のツールバーを作成し、コマンドリストをそこに代入するのです。もちろん今のところはツールは一つだけなので、コマンドリストに入っている要素は一つだけです。ワークベンチの用意が整ったらそれをメインインターフェイスに追加します。
</p><p>ただしまだ動作を行うことはできません。FreeCADコマンドを動作されるためには特定のやり方でフォーマットする必要があるからです。つまり私たちのline()ツールを少しだけ変更する必要があるのです。新しいexercise.pyは次のようになります
</p>
<pre>import FreeCADGui, Part
from pivy.coin import *
class line:
"this class will create a line after the user clicked 2 points on the screen"
def Activated(self):
self.view = FreeCADGui.ActiveDocument.ActiveView
self.stack = []
self.callback = self.view.addEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),self.getpoint)
def getpoint(self,event_cb):
event = event_cb.getEvent()
if event.getState() == SoMouseButtonEvent.DOWN:
pos = event.getPosition()
point = self.view.getPoint(pos[0],pos[1])
self.stack.append(point)
if len(self.stack) == 2:
l = Part.Line(self.stack[0],self.stack[1])
shape = l.toShape()
Part.show(shape)
self.view.removeEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),self.callback)
def GetResources(self):
return {'Pixmap'&#160;: 'path_to_an_icon/line_icon.png', 'MenuText': 'Line', 'ToolTip': 'Creates a line by clicking 2 points on the screen'}
FreeCADGui.addCommand('line', line())
</pre>
<p>ここでは__init__()関数をActivated()関数に変更しています。FreeCADコマンドが実行されるときには自動でActivated()関数が実行されるためです。またGetResources()を追加しています。この関数はFreeCADにどこにツールのアイコンがあるのかとその名前、そして私たちのツールのツールチップを通知します。アイコンには任意のサイズのjpg、png、svgの画像が使用できますが最終的な外観に近い16x16、24x24、32x32といったサイズを使用するのが最も好ましいです。
最後にaddCommand()メソッドを使ってline()クラスを公式なFreeCADコマンドとして追加しています。
</p><p>これで終わりです。FreeCADを再起動すれば真新しいラインツールのついたすてきな新しいワークベンチが使えます
</p>
<h2><span class="mw-headline" id=".E3.82.82.E3.81.A3.E3.81.A8.E7.9F.A5.E3.82.8A.E3.81.9F.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F">もっと知りたいですか?</span></h2>
<p>このエクササイズが気にいったらこの小さなツールを改良してみましょう。できることはたくさんあります。例えば次のようなものがあります:
</p>
<ul><li> ユーザーフィードバックの追加今まで作ってきたのはとても原始的なツールです。ユーザーは恐らく使う時に少し迷うでしょう。ユーザーに次にどうしたら良いかを教えるフィードバックを何か追加してみましょう。例えばFreeCADのコンソールにメッセージを表示することができます。FreeCAD.Consoleモジュールを見てください。</li>
<li> 手入力で3D上の点の座標を入力できるようにする。Pythonのinput()関数を参考にしてみてください。</li>
<li> 2点以上の点を追加できるようにする。</li>
<li> 他のイベントも追加してみる:今のところはマウスボタンイベントだけしかチェックしていませんがマウスが移動した時にも何か行なってみてはどうでしょう?例えば現在の座標を表示したりできるでしょう。</li>
<li> 作成したオブジェクトに名前を付けてみる</li></ul>
<p>疑問やアイデアがあれば遠慮せずに<a rel="nofollow" class="external text" href="http://forum.freecadweb.org/">forum</a>に書き込んでください!
</p>
<p><br />
</p>
<p>このページではQtのインナーフェイスデザイン用の公式ツールである<a rel="nofollow" class="external text" href="http://doc.trolltech.com/4.3/designer-manual.html">QtDesigner</a>を使って簡単なQtダイアログを作成し、それをPythonコードに変換してFreeCAD内部で使用する方法について説明します。この例ではPythonスクリプトの編集と実行の仕方、ディレクトリの移動などのターミナルウィンドウでの簡単な操作については既に知っているものとして説明を行います。また当然のことながらpyqtをインストールしてなければなりません。
</p>
<h2><span class="mw-headline" id=".E3.83.80.E3.82.A4.E3.82.A2.E3.83.AD.E3.82.B0.E3.81.AE.E3.83.87.E3.82.B6.E3.82.A4.E3.83.B3">ダイアログのデザイン</span></h2>
<p>CADアプリケーションでは優れたUIユーザーインターフェイスのデザインは非常に重要です。ユーザーが行う操作のほとんど全てがダイアログボックスの文章を読んだり、ボタンを押したり、アイコンを選択したりといったインターフェイスを通じたものになります。従って自分が何をしたいのか、ユーザーにどのような操作をさせたいのか、処理の流れがどのようになるのかを慎重に考えることがとても重要になってきます。
</p><p>インターフェイスをデザインする際に知っておく必要のある概念がいくつかあります:
</p>
<ul><li> <a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Modal_window">モーダル/モーダレスなダイアログ</a> モーダルダイアログは画面の前面に表示されメインウィンドウの操作をできなくした上でユーザーにダイアログを操作するように要求します。一方、モーダレスダイアログはメインウィンドウの操作を妨げることはしません。どちらが良いかは時と場合によります。</li>
<li> 何が必須であり何がオプションであるかを認識する:何をしなければならないユーザーが間違いなくわかるようにします。全てのものに適切な説明が書かれたラベルを付ける、ツールチップを使用するなどの方法があります。</li>
<li> コマンドとパラメータの分離通常、これはボタンとテキスト入力フィールドを使って行われます。ボタンをクリックすると処理が行われ、テキストフィールド内部の値を変更すると何かしらのパラメータが変更されるということをユーザーは理解しています。現在ではユーザーは通常、ボタンが何か、入力フィールドが何かといったことを熟知しているのです。私たちが使用するインターフェイスツールキットであるQtは最先端のツールキットです。どうやればわかりやすいものを作れるか悩む必要はほとんどありません。既にそれ自体がわかりやすい様になっているのです。</li></ul>
<p>さてこれからやることについては十分な定義が終わりました。いよいよQtDesignerを開きます。次の様な非常に簡単なダイアログをデザインしてみましょう
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Qttestdialog.jpg" class="image"><img alt="Qttestdialog.jpg" src="Qttestdialog.jpg" width="210" height="216" /></a>
</p><p>出来上がったらFreeCADできれいな長方形の平面を作成するためにこのダイアログを使うことにします。きれいな長方形の平面を作るのにはこれは不便だということにあなたは気がつくでしょうが、後でもっと複雑なことを行えるように変更することは簡単です。QtDesignerを開くと次のような表示になります
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Qtdesigner-screenshot.jpg" class="image"><img alt="Qtdesigner-screenshot.jpg" src="Qtdesigner-screenshot.jpg" width="800" height="486" /></a>
</p><p>使い方は非常に簡単です。左側のバーにはウィジット上にドラッグして置ける要素があります。右側には選択されている要素の編集可能なプロパティ全てが表示されているプロパティパネルがあります。それではまず新しいウィジットを作成することから始めてみましょう。デフォルトのOK/キャンセルボタンはいらないので"Dialog without buttons"を選択します。次に<b>Label</b>ウィジットを3つドラッグしてきます。一つはタイトル、一つは "Height"、一つは"Width"と書くために使います。ラベルはウィジット上に表示されるシンプルなテキストでユーザーに情報を与えるために使います。ラベルを選択すると右側にフォントスタイル、高さなどいくつかの変更可能なプロパティが表示されます。
</p><p>次にユーザーが入力することが可能なテキストフィールドである<b>LineEdits</b>を2つ追加します。一つは高さ用、もう一つは幅用です。ここでもプロパティを編集することができます。例えばデフォルト値を設定してみてはどうでしょうそれぞれ1.00としてみましょう。こうすればユーザーがダイアログを見た確認した時には既に両方の値が設定されていて、ユーザーがその値に満足していれば直接ボタンを押すことができるので貴重な時間を節約できます。さらにユーザーが2つのフィールドに入力した後に押す必要がある<b>PushButton</b>を追加します。
</p><p>ここでは非常に簡単なコントロールを選んでいますがQtにもっと多くのオプションがあり、LineEditの代わりにSpinboxeを使ったりすることなどもできます。何が利用可能か見てみてください。きっと他のアイデアが思い浮かぶはずです。
</p><p>QtDesignerで行うことはこれで全てです。ただし、最後に全ての要素の名前をわかりやすいものに変更しておきましょう。そうすればスクリプトで区別がつきやすくなります
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:Qtpropeditor.jpg" class="image"><img alt="Qtpropeditor.jpg" src="Qtpropeditor.jpg" width="348" height="321" /></a>
</p>
<h2><span class="mw-headline" id=".E3.83.80.E3.82.A4.E3.82.A2.E3.83.AD.E3.82.B0.E3.81.AEPython.E3.82.B3.E3.83.BC.E3.83.89.E3.81.B8.E3.81.AE.E5.A4.89.E6.8F.9B">ダイアログのPythonコードへの変換</span></h2>
<p>さあ、私たちのウィジットをどこかに保存しましょう。ウィジットは.uiファイルとして保存され、pyuicを使うと簡単にPythonスクリプトに変換できます。Windowsではpyuicはpyqtにバンドルされています確認してください。Linuxではパッケージマネージャで個別にインストールする必要があるはずですDebianベースのパッケージの場合、pyqt4-dev-toolsパッケージに含まれています。変換のためにはまずターミナルウィンドウWindowsの場合はコマンドプロンプトウィンドウを開き、.uiファイルを保存した場所に移動して次のコマンドを実行します
</p>
<pre>pyuic mywidget.ui &gt; mywidget.py
</pre>
<p>一部のシステムではプログラム名がpyuicではなくpyuic4の場合があります。このコマンドによって.uiファイルがPythonスクリプトに変換されます。mywidget.pyファイルを開いて見てみるとその内容が簡単に理解できるものであることがわかります
</p>
<pre>from PyQt4 import QtCore, QtGui
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(187, 178)
self.title = QtGui.QLabel(Dialog)
self.title.setGeometry(QtCore.QRect(10, 10, 271, 16))
self.title.setObjectName("title")
self.label_width = QtGui.QLabel(Dialog)
...
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
self.title.setText(QtGui.QApplication.translate("Dialog", "Plane-O-Matic", None, QtGui.QApplication.UnicodeUTF8))
...
</pre>
<p>見てわかるようにとても簡単な構造です。Ui_Dialogという名前のクラスが作成され、その中にウィジットのインターフェイス要素が保存されています。クラスは二つのメソッドを持っています。一つはウィジットをセットアップするためのもので、もう一つはその内容を翻訳するためのものです。翻訳用のものはインターフェイス要素を翻訳するために用意された一般的なQtの仕組みの一部です。セットアップ用のメソッドは私たちがQtDesignerで定義したウィジットを1つずつ作成し、先に私たちが決めたオプションを設定していきます。それからインターフェイス全体が翻訳され、最後にスロットが接続されますこれについては後で説明します
</p><p>これで新しいウィジットを作成し、そのインターフェイスを作成するためにこのクラスを使用することができます。もう既にウィジットを動かしてみることができます。FreeCADが検索する場所FreeCADのbinディレクトリまたはModサブディレクトリのどれかにmywidget.pyファイルを置き、FreeCADのPythonインタプリタで次のコマンドを実行すればいいのです
</p>
<pre>from PyQt4 import QtGui
import mywidget
d = QtGui.QWidget()
d.ui = mywidget.Ui_Dialog()
d.ui.setupUi(d)
d.show()
するとダイアログが表示されますPythonインタプリタがまだ動作していることに注意してください。私たちはモーダレスダイアログを使っているのです。ダイアログを閉じるには次のコマンドを使ってくださいもちろんダイアログの閉じるアイコンをクリックしても閉じられます
d.hide()
</pre>
<h2><span class="mw-headline" id=".E3.83.80.E3.82.A4.E3.82.A2.E3.83.AD.E3.82.B0.E3.81.A7.E5.87.A6.E7.90.86.E3.82.92.E8.A1.8C.E3.81.88.E3.82.8B.E3.82.88.E3.81.86.E3.81.AB.E3.81.99.E3.82.8B">ダイアログで処理を行えるようにする</span></h2>
<p>さてダイアログの表示と非表示はできるようになりました。最後の仕上げを行いましょう処理を行えるようにするのですQtDesignerを少しいじっていればすぐに"signals and slots"と呼ばれる機能があることに気がつくでしょう。基本的な動作は次のようになります。ウィジット上の要素Qtでの用語で言うとこれらの要素自体もウィジットなのですはシグナルを送信できます。シグナルはウィジットの型によって異なります。例えばボタンは押された時と離された時にシグナルを送れます。このシグナルはスロットにつなげることができます。スロットとしては他のウィジットの特別な機能例えばダイアログには"閉じる"スロットがあり、閉じるボタンからのシグナルを接続することができます)や自作関数を使うことができます。<a rel="nofollow" class="external text" href="http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/classes.html">PyQtリファレンスドキュメント</a>には全てのQtウィジット、それを使ってできること、どんなシグナルを送信できるかなどがリストアップされています。
</p><p>ここで行うことは高さと幅に基いて平面を作成する新しい関数を作成すること、その関数と"Create!"ボタンを押した際に発信されるシグナルとを接続することです。まずFreeCADモジュールをインポートすることから始めましょう。次の行をQtCoreとQtGuiをインポート済みのスクリプトの先頭に書き込むことで可能です
</p>
<pre>import FreeCAD, Part
</pre>
<p>次にUi_Dialogクラスに新しい関数を追加しましょう
</p>
<pre>def createPlane(self):
try:
# まず有効な値が入力されているかをチェック
w = float(self.width.text())
h = float(self.height.text())
except ValueError:
print "Error! Width and Height values must be valid numbers!"
else:
# 4つの点から面を作成
p1 = FreeCAD.Vector(0,0,0)
p2 = FreeCAD.Vector(w,0,0)
p3 = FreeCAD.Vector(w,h,0)
p4 = FreeCAD.Vector(0,h,0)
pointslist = [p1,p2,p3,p4,p1]
mywire = Part.makePolygon(pointslist)
myface = Part.Face(mywire)
Part.show(myface)
self.hide()
</pre>
<p>さらにボタンと関数を接続するようにQtに指定する必要があります。次の行をQtCore.QMetaObject.connectSlotsByName(Dialog)の直前に挿入することで可能です:
</p>
<pre>QtCore.QObject.connect(self.create,QtCore.SIGNAL("pressed()"),self.createPlane)
</pre>
<p>見てわかるようにこれによって私たちが作成したオブジェクト("Create!"ボタンのpressed()シグナルが私たちが定義したcreatePlaneという名前のスロットに接続されます。これで終わりです最後に呼び出しを簡単に行うためにダイアログを作成するための小さな関数を追加しましょう。Ui_Dialogクラスの外に次のコードを追加します
</p>
<pre>class plane():
d = QtGui.QWidget()
d.ui = Ui_Dialog()
d.ui.setupUi(d)
d.show()
</pre>
<p>それが終わったらFreeCADから次のコマンドを実行するだけです
</p>
<pre>import mywidget
mywidget.plane()
</pre>
<p>これで終わりです。もうあなたは自分のウィジットをFreeCADのインターフェイスに追加したり、ウィジット上の他の要素を使ってもっと高度な自作ツールを作るといったあらゆることに挑戦できるのです。
</p>
<h2><span class="mw-headline" id=".E5.85.A8.E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88">全スクリプト</span></h2>
<p>参考のために全スクリプトを記載しておきます:
</p>
<pre># -*- coding: utf-8 -*-
# フォームの実装は読み込んだ'mywidget.ui'ファイルから生成
#
# Created: Mon Jun 1 19:09:10 2009
# by: PyQt4 UI code generator 4.4.4
#
# 警告!このファイルで行った全ての変更が失われます!
from PyQt4 import QtCore, QtGui
import FreeCAD, Part
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(187, 178)
self.title = QtGui.QLabel(Dialog)
self.title.setGeometry(QtCore.QRect(10, 10, 271, 16))
self.title.setObjectName("title")
self.label_width = QtGui.QLabel(Dialog)
self.label_width.setGeometry(QtCore.QRect(10, 50, 57, 16))
self.label_width.setObjectName("label_width")
self.label_height = QtGui.QLabel(Dialog)
self.label_height.setGeometry(QtCore.QRect(10, 90, 57, 16))
self.label_height.setObjectName("label_height")
self.width = QtGui.QLineEdit(Dialog)
self.width.setGeometry(QtCore.QRect(60, 40, 111, 26))
self.width.setObjectName("width")
self.height = QtGui.QLineEdit(Dialog)
self.height.setGeometry(QtCore.QRect(60, 80, 111, 26))
self.height.setObjectName("height")
self.create = QtGui.QPushButton(Dialog)
self.create.setGeometry(QtCore.QRect(50, 140, 83, 26))
self.create.setObjectName("create")
self.retranslateUi(Dialog)
QtCore.QObject.connect(self.create,QtCore.SIGNAL("pressed()"),self.createPlane)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
self.title.setText(QtGui.QApplication.translate("Dialog", "Plane-O-Matic", None, QtGui.QApplication.UnicodeUTF8))
self.label_width.setText(QtGui.QApplication.translate("Dialog", "Width", None, QtGui.QApplication.UnicodeUTF8))
self.label_height.setText(QtGui.QApplication.translate("Dialog", "Height", None, QtGui.QApplication.UnicodeUTF8))
self.create.setText(QtGui.QApplication.translate("Dialog", "Create!", None, QtGui.QApplication.UnicodeUTF8))
def createPlane(self):
try:
# まず有効な値が入力されているかをチェック
w = float(self.width.text())
h = float(self.height.text())
except ValueError:
print "Error! Width and Height values must be valid numbers!"
else:
# 4つの点から面を作成
p1 = FreeCAD.Vector(0,0,0)
p2 = FreeCAD.Vector(w,0,0)
p3 = FreeCAD.Vector(w,h,0)
p4 = FreeCAD.Vector(0,h,0)
pointslist = [p1,p2,p3,p4,p1]
mywire = Part.makePolygon(pointslist)
myface = Part.Face(mywire)
Part.show(myface)
class plane():
d = QtGui.QWidget()
d.ui = Ui_Dialog()
d.ui.setupUi(d)
d.show()
</pre>
<p><br />
</p>
<p><br />
</p>
<h1><span class="mw-headline" id="FreeCAD.E7.94.A8.E3.81.AE.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E9.96.8B.E7.99.BA">FreeCAD用のアプリケーションの開発</span></h1>
<h3><span class="mw-headline" id=".E7.AE.A1.E7.90.86.E4.BA.BA.E3.81.AE.E5.A3.B0.E6.98.8E.E6.96.87">管理人の声明文</span></h3>
<p>オープンソースのための「正しい」ライセンスについての議論がインターネットのかなりのバンド幅をを占めてきたことは承知していますが、ここでもFreeCADがそのひとつを採用すべきである理由について、私の意見を述べます。
</p><p>私はこのプロジェクトのために<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/LGPL">LGPL</a>を選びました。LGPLの短所と長所は分かっていますので、その理由を説明したいと思います。
</p><p>FreeCADはライブラリとアプリケーションの混合物なのでGPLでは少々強すぎます。GPLだと、FreeCADの基盤ライブラリとのリンクを妨げてしまうため、FreeCADの商用モジュールが作成できなくなります。何故商用モジュールなのだろうと思われるかもしれません。これはLinuxが良い例です。もしGNU CライブラリがGPLで、非GPLのアプリケーションにリンクできなかったとしたら、Linuxはこれほど成功したでしょうか私はLinuxの自由さが大好きです、けれども同時にNVIDIAの最高の3Dグラフィックドライバを使用できるようにして欲しいとも思っています。NVIDIAがドライバのコードの公開を望まない理由もよく分かりますし納得しています。私たちは企業のために働いており、報酬や少なくとも糧が必要なのです。だから私にとって、オープンソースとクローズドソースソフトウェアとの共存は、LGPLの規則に従っている限りは、悪いことではありません。私は、誰かがFreeCADのためのCATIAのインポート・エクスポートプロセッサを書き、それを無料や有料で配布するのを見たいのです。彼が望む以上の公開を強制したくはありません。それは彼のためにもFreeCADのためにも良いことにはならないでしょう。
</p><p>とはいえ、この決定はFreeCADのコアシステムにのみ行われるものです。アプリケーションモジュールの作者は、自分自身でそのライセンスを決定できます。
</p>
<h3><span class="mw-headline" id=".E4.BD.BF.E7.94.A8.E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9">使用ライセンス</span></h3>
<p>FreeCADは以下のライセンスに従って公開されています
</p>
<dl><dt><a href="http://en.wikipedia.org/wiki/LGPL" class="extiw" title="wikipedia:LGPL">Lesser General Public Licence (LGPL2+)</a></dt>
<dd>コアライブラリのライセンスです。src/App、src/Gui、sui/Baseに含まれる.hと.cppと記載されたファイル、src/Modに含まれるほとんどのモジュール、実行プログラムのためのsrc/main内の.hと.cppと記載されたファイルが該当します。またアイコンと画像もLGPLです。</dd></dl>
<dl><dt><a href="http://en.wikipedia.org/wiki/Open_Publication_License" class="extiw" title="wikipedia:Open Publication License">Open Publication License</a></dt>
<dd><a rel="nofollow" class="external free" href="http://free-cad.sourceforge.net/">http://free-cad.sourceforge.net/</a> 上の、作成者の特別な表記がないドキュメントのライセンスです。</dd></dl>
<p>FreeCADが使用しているライセンスの詳細については<a rel="nofollow" class="external text" href="http://free-cad.git.sourceforge.net/git/gitweb.cgi?p=free-cad/free-cad;a=blob;f=package/debian/copyright;h=a97cf019d020edba596f2d0f614c9b09ce546b0f;hb=HEAD">Debian著作権ファイル</a>を参照してください。
</p>
<h3><span class="mw-headline" id=".E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E4.B8.8A.E3.81.AE.E5.89.AF.E4.BD.9C.E7.94.A8">ライセンス上の副作用</span></h3>
<p>バージョン0.13までのところ、そのソース自体にはLGPL2+ライセンスが適用されるもののFreeCADはGPL2+ライセンスで配布されています。これはCoin3DGPL2とPyQtGPLをリンクしているためです。しかし0.14からは完全にGPLライセンスから自由になれる予定です。PyQtはPySideに置き換えられる予定であり、Coin3DはBSDライセンスで再ライセンスされました。ライセンス上の残る問題は<a rel="nofollow" class="external text" href="http://www.opencascade.org/getocc/license/">OCTPL (Open CASCADE Technology Public License)</a>だけです。いくつかの違いはありますがこれはほとんどLGPLと同じライセンスです。創始者のRoman Lyginが彼の<a rel="nofollow" class="external text" href="http://opencascade.blogspot.de/2008/12/license-to-kill-license-to-use.html">ブログ</a>でこのライセンスについて詳しく述べています。独自に作成されたOCTPLライセンスはFreeCADに対してさまざまな副作用を引き起こしており、これについては<a rel="nofollow" class="external text" href="http://www.opencascade.org/org/forum/thread_15859/?forum=3">OpenCasCadeフォーラム</a>などさまざまなフォーラムやメーリングリストで幅広い議論が行われています。その中でも最も大きな問題に関しての記事をいくつか紹介しておきます。
</p>
<h4><span class="mw-headline" id="GPL2.2FGPL3.2FOCTLP.E3.81.AF.E9.9D.9E.E4.BA.92.E6.8F.9B">GPL2/GPL3/OCTLPは非互換</span></h4>
<p>私たちが最初に問題に気がついたのは<a rel="nofollow" class="external text" href="http://www.fsf.org/">FSF</a>の最重要プロジェクト<a rel="nofollow" class="external text" href="https://groups.google.com/forum/#!topic/polignu/XRergtwsm80">ディスカッションリスト</a>によってです。それは私たちが調査していたGPL3でライセンスされているライブラリについてのものでした。当時はGPL2のみのCoin3Dをリンクしていたのでそのライブラリを採用することはできませんでした。またOCTPLも<a rel="nofollow" class="external text" href="http://www.opencascade.org/occt/faq/">GPL非互換</a>であると考えられています。このLibreGraphicsWorldの記事<a rel="nofollow" class="external text" href="http://libregraphicsworld.org/blog/entry/libredwg-drama-the-end-or-the-new-beginning">"LibreDWG drama: the end or the new beginning?"</a>ではLibreDWGプロジェクトがFreeCADやLibreCADで受け入れられなかった事の顛末を紹介しています。
</p>
<h4><span class="mw-headline" id="Debian">Debian</span></h4>
<p>OCTPLの非互換性については<a rel="nofollow" class="external text" href="http://lists.debian.org/debian-legal/2009/10/msg00000.html">Debianの法問題リストで議論され</a>、それが<a rel="nofollow" class="external text" href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=617613">FreeCADパッケージについてのバグレポート</a>を招きました。これはDebianテスト版からメインディストリビューションへの移行を妨げるものignore-tagです。しかしGPLコードとライブラリから解放されたFreeCADは受け入れられるはずであることも付け加えておきましょう。再ライセンスされたCoin3D V4とPyQtの置き換えによって0.14のリリースではGPLフリーに到達することでしょう。
</p>
<h4><span class="mw-headline" id="Fedora.2FRedHat.E3.81.A7.E3.81.AE.E4.B8.8D.E8.87.AA.E7.94.B1">Fedora/RedHatでの不自由</span></h4>
<p>FedoraプロジェクトではOpenCasCadeは"不自由(非フリー)"のリストに入れられています。つまり基本的にはFedora、RedHatに取り入れられることはありません。またこれはOCCがそのライセンスを変えるまではFreeCADがFedora、RedHatに取り入れられることはないということです。このライセンスに対する評定をリンクしておきます
</p>
<ul><li> <a rel="nofollow" class="external text" href="http://lists.fedoraproject.org/pipermail/legal/2011-September/001713.html">Fedora法問題リストでの議論</a></li>
<li> <a rel="nofollow" class="external text" href="https://bugzilla.redhat.com/show_bug.cgi?id=458974#c10">RedHatバグトラッカーでライセンスレビューのエントリ </a></li></ul>
<p>私の理解では主な障害は有償サポートを行いたいと思った場合にOCCライセンスが非差別的なサポート料金を要求しているということです。これは
"フリー"であることやオープンソースとは関係なく、RedHatのビジネスモデルでの問題なのです
</p>
<h3><span class="mw-headline" id=".E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.AE.E5.BD.B1.E9.9F.BF">ライセンスの影響</span></h3>
<h4><span class="mw-headline" id=".E5.80.8B.E4.BA.BA.E3.83.A6.E3.83.BC.E3.82.B6.E3.83.BC">個人ユーザー</span></h4>
<p>個人ユーザーは無料でFreeCADを使用できます。基本的にはしたいことが何でもできるはずです....
</p>
<h4><span class="mw-headline" id=".E8.81.B7.E6.A5.AD.E7.9A.84.E3.83.A6.E3.83.BC.E3.82.B6.E3.83.BC">職業的ユーザー</span></h4>
<p>個人的、職業的を問わずどのような仕事のためでも自由にFreeCADを使うことができます。アプリケーションは好きなようにカスタマイズ可能です。オープン、クローズドを問わず、FreeCADの拡張ソースを作成することができます。作成者は常にそのデータの主人であり、FreeCADの更新や使用方法の変更を強要されることはありません。FreeCADの使用によって、いかなる種類の契約や義務を負うことはありません。
</p>
<h4><span class="mw-headline" id=".E3.82.AA.E3.83.BC.E3.83.97.E3.83.B3.E3.82.BD.E3.83.BC.E3.82.B9.E3.81.AE.E9.96.8B.E7.99.BA.E8.80.85">オープンソースの開発者</span></h4>
<p>特別な目的のための独自拡張モジュールの土台としてFreeCADを使用することができます。開発者は、独占的なソフトウェアに対する自分の成果の使用許可を、GPLとLGPLから選択することができます。
</p>
<h4><span class="mw-headline" id=".E5.95.86.E7.94.A8.E9.96.8B.E7.99.BA.E8.80.85">商用開発者</span></h4>
<p>商用開発者は、特別な目的のための独自拡張モジュールの土台としてFreeCADを使用することができ、そのモジュールのオープンソース化を強要されることはありません。開発者はLGPLを使用するすべてのモジュールを使用することができます。また自分の独占的なソフトウェアと一緒にFreeCADを配布することが許されます。一方通行ではないかぎり、開発者は原作者達からのサポートを得られるでしょう。
</p>
<p><br />
</p>
<h2><span class="mw-headline" id=".E3.83.90.E3.82.B0.E3.82.92.E5.A0.B1.E5.91.8A.E3.81.99.E3.82.8B">バグを報告する</span></h2>
<p>近年、sourceforgeプラットフォームにより、プロジェクトのバグトラッカーアプリケーション<a rel="nofollow" class="external text" href="http://www.mantisbt.org/">mantis bug tracker</a> が作られ、FreeCADは、古いビルトインのバグトラッカーの代わりに、現在このバグトラッカーを使っています。私たちのバグトラッカーのアドレスは、次のとおりです。:
</p><p><a rel="nofollow" class="external free" href="http://www.freecadweb.org/tracker/main_page.php">http://www.freecadweb.org/tracker/main_page.php</a>
</p><p>もし、バグを発見したかもと思ったら、そこにバグを報告することは歓迎されます。しかし、バグを報告する前に、以下の項目をチェックしてください。:
</p>
<ul><li> あなたの見つけたバグが本当にバグかどうか、つまり動くべき機能が動かないことを確認してください。</li></ul>
<p> あなたがわからない場合は、ためらわずに <a rel="nofollow" class="external text" href="http://forum.freecadweb.org/">フォーラム</a> にこの問題を説明し、何をすればよいか訪ねてください。
</p>
<ul><li> 投稿する前に、<a href="FAQ.html" title="FAQ">frequently asked questions</a> を読み、<a rel="nofollow" class="external text" href="http://forum.freecadweb.org/">フォーラム</a> 内を検索し、バグトラッカーを検索して、同じバグがまだ投稿されてないことを確認してください。</li>
<li> できるだけ詳しく、問題や再現方法について説明してください。バグを確認できない場合、修正できなことがあります。</li>
<li> あなたが使用しているオペレーティングシステムが32bitか64bitか、 あなたが使っているFreeCADのバージョンについての情報を付け加えてください。</li>
<li> バグ毎に個別のレポートを投稿してください。</li>
<li> FreeCADをinux上で利用し、バグが原因でクラッシュした場合は、デバッグトレースを実行することもできます。端末からgdb freecadを実行gdbパッケージがインストールされていることを仮定し、gdbの中でrunを実行します。 FreeCADは実行されます。クラッシュが発生したら、btと入力するとバックトレースを取得できます。投稿するバグレポートの中にバックトレースを含めてください。</li></ul>
<h2><span class="mw-headline" id=".E6.A9.9F.E8.83.BD.E8.BF.BD.E5.8A.A0.E8.A6.81.E6.9C.9B">機能追加要望</span></h2>
<p>実装されていない機能をFreeCADで使いたいと思ったら、それはバグではなく、機能追加要望です。これは同じトラッカーバグではなく機能要望として申請するに投稿できますが、あなたの機能追加要望が実現される保証が無いことを心に留めておいてください。
</p>
<h2><span class="mw-headline" id=".E3.83.91.E3.83.83.E3.83.81.E3.81.AE.E6.8A.95.E7.A8.BF.E3.80.80">パッチの投稿 </span></h2>
<p>バグフィックスを作成した、FreeCADで公共利用できる拡張機能を作成した場合には、Subversionのdiffツールを使ってパッチを作成し、同じトラッカーにバグフィックスとして投稿してください。
</p>
<h2><span class="mw-headline" id=".22.E5.8F.A4.E3.81.84.22sourceforge.E3.81.AE.E3.83.88.E3.83.A9.E3.83.83.E3.82.AB.E3.83.BC.28.E5.BB.83.E6.AD.A2.29">"古い"sourceforgeのトラッカー(廃止)</span></h2>
<p>注意バグを報告するために、新しいMantisバグトラッカーを利用してください。この方法は現在廃止予定です。
</p>
<h3><span class="mw-headline" id=".E3.81.A9.E3.81.93.E3.81.A7.E8.A6.8B.E3.81.A4.E3.81.91.E3.82.8B.E3.81.8B.EF.BC.9F">どこで見つけるか?</span></h3>
<p>FreeCADには独自の <a rel="nofollow" class="external text" href="https://sourceforge.net/tracker/?group_id=49159">トラッカー要約ページ</a> があります。そこではトラッカーの個々のセクションの概要を見ることができます。
</p>
<h3><span class="mw-headline" id=".E3.81.84.E3.81.A4.E4.BD.BF.E7.94.A8.E3.81.99.E3.82.8B.E3.81.8B.EF.BC.9F">いつ使用するか?</span></h3>
<div class="thumb tright"><div class="thumbinner" style="width:302px;"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Bugtracker_Screenshot_annotated.png" class="image"><img alt="" src="300px-Bugtracker_Screenshot_annotated.png" width="300" height="248" class="thumbimage" srcset="/wiki/images/thumb/2/22/Bugtracker_Screenshot_annotated.png/450px-Bugtracker_Screenshot_annotated.png 1.5x, /wiki/images/thumb/2/22/Bugtracker_Screenshot_annotated.png/600px-Bugtracker_Screenshot_annotated.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Bugtracker_Screenshot_annotated.png" class="internal" title="Enlarge"></a></div>The FreeCAD Bug Tracker</div></div></div>
<h3><span class="mw-headline" id=".E3.83.90.E3.82.B0">バグ</span></h3>
<p>もしバグを発見したかもしれないと思う場合は、トラッカーの <a rel="nofollow" class="external text" href="http://sourceforge.net/tracker/?atid=455298&amp;group_id=49159&amp;func=browse">Bugs Section</a> に行き、statusをanyにして、これまでに申請されたバグを確認してください。キーワード検索を利用すると、似ている問題のバグトラッカーのエントリを見つけることができます。もし、あなたの問題が過去の項目になかったときは、同じページに新たな項目として投稿すべきです。
</p>
<h3><span class="mw-headline" id=".E6.A9.9F.E8.83.BD.E8.BF.BD.E5.8A.A0.E8.A6.81.E6.B1.82">機能追加要求</span></h3>
<p>あなたがFreeCADを世界で一番のCADソフトウェアにするために絶対に必要と思う機能がないことに気づいたら、<a rel="nofollow" class="external text" href="http://sourceforge.net/tracker/?atid=455301&amp;group_id=49159&amp;func=browse">Feature Request</a> 機能追加要望のセクションが役に立つかもしれません。
</p>
<h3><span class="mw-headline" id=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E8.A6.81.E6.B1.82">サポート要求</span></h3>
<p>あなたがFreeCADをコンパイルするのにどうすることもできず、 <a href="https://www.freecadweb.org/wiki/index.php?title=CompileOnWindows/jp" title="CompileOnWindows/jp">Compile On Windows</a><a href="https://www.freecadweb.org/wiki/index.php?title=CompileOnUnix/jp" title="CompileOnUnix/jp">Compile On Unix</a> にヒントとなるものが書かれていない場合や、他の新しい環境への移植を試す場合や、FreeCADの新しいモジュールや拡張機能を作る場合に、補助が必要な場合は、<a rel="nofollow" class="external text" href="http://sourceforge.net/tracker/?atid=455299&amp;group_id=49159&amp;func=browse">Support Requests</a> セクションがあなたの行くべき場所になります。
</p>
<h3><span class="mw-headline" id=".E6.96.B0.E3.81.97.E3.81.84.E3.83.91.E3.83.83.E3.83.81">新しいパッチ</span></h3>
<p>バグの修正や、拡張機能、一般公開できるFreeCADの何らかを作成したときは、Subversioを使ってパッチを作成し、 <a rel="nofollow" class="external text" href="https://sourceforge.net/tracker/?group_id=49159&amp;atid=455300">patches section</a> セクションにファイルを投稿してください。
</p>
<p><br />
</p>
<p>この記事では、Windows上でFreeCADをコンパイルする方法を順番にで説明しています。
</p>
<h3><span class="mw-headline" id=".E5.89.8D.E6.8F.90.E6.9D.A1.E4.BB.B6">前提条件</span></h3>
<p>必要なのは、主にコンパイラです。Windows上で我々は最新のサービスパックを適用したMS VisualStudio 8コンパイラまたはVC++ Expressを使用しています。CygwinやMinGWのgccを使用するのはたぶん可能ですが、今までのところ試されたり移植されたりしていません。我々はVC8 Express Editionを使用するように移植しました。あなたは例えばWindows.hを得るために、Windows Platform SDKをダウンロードする必要があります。また、あなたは正常にFreeCADをコンパイルするために、すべての<a href="https://www.freecadweb.org/wiki/index.php?title=Third_Party_Libraries/jp" title="Third Party Libraries/jp">サードパーティ製のライブラリ</a>が必要です。
</p><p>あなたがMSのコンパイラーを使用する場合、Windows上でFreeCADを構築するために必要なすべてのLIBSを提供するFreeCAD LibPackをダウンロードするでしょう。
</p><p>その他の前提条件は、(および有用なプログラム)は以下のとおりです。:
</p>
<ul><li> cMake</li>
<li> TortoiseGit</li>
<li> Python 2.6</li>
<li> WiX (Windows installer XML v3.0) - msiインストーラを作りたい場合</li></ul>
<p> システムパスに、以下のプログラムへのパスを加えることも必要です。:
</p>
<ul><li> Libpack</li>
<li> git (TortoiseGitではなく、git.exe)</li>
<li> python</li></ul>
<h3><span class="mw-headline" id="cMake.E3.82.92.E7.94.A8.E3.81.84.E3.81.9F.E3.83.93.E3.83.AB.E3.83.89">cMakeを用いたビルド</span></h3>
<p> まず、 <a rel="nofollow" class="external text" href="http://www.cmake.org/cmake/resources/software.html">cMakeをダウンロード</a>してビルドマシンにインストールします。
</p>
<h4><span class="mw-headline" id="cMake.E3.81.B8.E3.81.AE.E5.88.87.E3.82.8A.E6.9B.BF.E3.81.88">cMakeへの切り替え</span></h4>
<p>バージョン0.9から、様々なコンパイラのためのbuild/makeファイルを生成するのに cMakeを利用します。我々は、.vcproj ファイルをもう提供しません。もし、以前のバージョンのFreeCAD(バージョン0.8以前)をビルドしたい場合、この記事の後ろにある"以前のバージョンのビルド"を参照して下さい。
</p><p>我々は30を超えるビルド対象や様々なコンパイラへの対応のためのプロジェクトファイルを維持するのが苦痛になってきたので切り替えました。cMakeを使うことで、我々はまだ主として使うコンパイラはMS VC9 Expressですが、Code::Blocks、Qt CreaterやEclipse CDT等の代替IDEを使用できる可能性がでてきました。
将来的には商標権のあるコンパイラソフトウェアを利用せずに、Windows上でビルドすることを計画しています。
</p>
<h4><span class="mw-headline" id=".E3.83.93.E3.83.AB.E3.83.89.E3.83.97.E3.83.AD.E3.82.BB.E3.82.B9.E3.81.AE.E8.A8.AD.E5.AE.9A">ビルドプロセスの設定</span></h4>
<p>CMakeのでFreeCADを構築するための最初のステップは、環境を構成することです。これには基本的に以下のつの方法があります。:
</p>
<ul><li> LibPackを利用する</li>
<li> 必要なライブラリをすべてインストールして、cMakeにそれらを見つけてもらう。</li></ul>
<p>前者の方法では、あなたはLibPackのパスをcMakeで設定するだけでよく、残りの部分は自動的に実行され、以下のような画面が表示されます。:
<a href="https://www.freecadweb.org/wiki/index.php?title=File:CMake_Screen.png" class="image"><img alt="CMake Screen.png" src="CMake_Screen.png" width="666" height="497" /></a>
</p><p>LibPackのパスが 変数 <b>FREECAD_LIBPACK_DIR</b> に設定されていることを確認してください。すべてのincludeとパスが設定されいることから始めます。あなたはただ <b>Generate</b> ボタンを押す必要があり、プロジェクトファイルが生成されます。
</p><p>もし <b>FREECAD_LIBPACK_USE</b> オプションをoffにした場合、設定はあなたのシステム内から全ての必要なライブラリを探します。多かれ少なかれ、うまくいくかどうかはライブラリに依存します。そのため、幾つかのパスは手動で定義する必要がしばしばあります。cMakeは、見つからないものや、指定すべきものをあなたに指摘します。
</p>
<h4><span class="mw-headline" id=".E3.83.93.E3.83.AB.E3.83.89.E5.87.A6.E7.90.86.E3.81.AE.E3.82.AA.E3.83.97.E3.82.B7.E3.83.A7.E3.83.B3">ビルド処理のオプション</span></h4>
<p>cmakeのビルドシステムは、ビルドプロセス上で多くの柔軟性を私たちに提供します。 これは、我々はいくつかの機能またはモジュールをオフに切り替えることができるということです。これはLinuxのカーネルビルドに似ています。ビルドプロセスを決定するために、多くのスイッチがあります。
</p><p>以下はスイッチの説明です。我々はビルドの柔軟性をより向上させたいので、これらは将来的には大きく変更する可能性が高いです。
</p>
<table class="wikitable" style="text-align:left">
<caption> Link table
</caption>
<tr>
<th> 変数名 </th>
<th> 説明 </th>
<th> 標準値
</th></tr>
<tr>
<td> FREECAD_LIBPACK_USE </td>
<td> FreeCAD LibPack の使用の切替え </td>
<td> Win32 では on, それ以外では off
</td></tr>
<tr>
<td> FREECAD_LIBPACK_DIR </td>
<td> LibPack のディレクトリ </td>
<td> FreeCAD SOURCE dir
</td></tr>
<tr>
<td> FREECAD_BUILD_GUI </td>
<td> GUI関連のモジュール全てのビルド </td>
<td> ON
</td></tr>
<tr>
<td> FREECAD_BUILD_CAM </td>
<td> CAM モジュールのビルド 実験的! </td>
<td> OFF
</td></tr>
<tr>
<td> FREECAD_BUILD_INSTALLER </td>
<td> Windowsインストーラ用のプロジェクトファイルの作成 </td>
<td> OFF
</td></tr>
<tr>
<td> FREECAD_BUILD_DOXYGEN_DOCU </td>
<td> ソースコードドキュメントのプロジェクトファイル作成 </td>
<td> OFF
</td></tr>
<tr>
<td> FREECAD_MAINTAINERS_BUILD </td>
<td> リリースビルドするときだけにonにする必要あり </td>
<td> OFF
</td></tr></table>
<p><br />
</p>
<h4><span class="mw-headline" id="cMake_.E3.81.A8_Visual_Studio_2008.E3.82.92.E4.BD.BF.E3.81.86.E6.96.B9.E6.B3.95">cMake と Visual Studio 2008を使う方法</span></h4>
<p>まずCMakeのGUIを起動し、ソースフォルダを選択しインストール先のフォルダを追加し、 "設定"をクリックしてください。CMakeはジェネレータを選択するように求められます - FreeCADのお勧めは "Visual Studio 9 2008"です。
</p><p>"次へ"ボタンをクリックした後、LibPackを見つけることができないため、CMakeはエラーを出力します。 "FREECAD_LIBPACK_DIR"変数にどこにLibpackフォルダがあるかを手動で選択する必要があります。その後、もう一度 "設定"をクリックする必要があります。configureが行われた後、 "Generate"をクリックしてください。cMakeの作業を終了後、それを閉じることができます。
</p><p>Visual Studioを使用する前に、我々は最初に構築する際に、一度だけこれを行う必要があるシステムパスにlibpackを追加する必要があります。あなたは "Panel&gt;&gt;System&gt;&gt;Advanced System Settings"をたどる必要があります。"System properties"ダイアログで、 "Advanced"タブの下に"Environment Variables"ボタンがあります。それをクリックしてください。それをクリックした後、パスにlibpackを追加します。他のパス変数とは";"で区別します。
</p><p>次にVisual Studio 2008 を起動する必要があります。Visual C++ Express2008でも同様に動作します。ビルドの前に、binフォルダを libpack¥bin フォルダから、(cMakeで生成された)binフォルダにコピーするのは良い手順です。
</p><p>この後、"File &gt;&gt; Open &gt;&gt; Project/Solution"をたどってください。cMakeのビルドで生成されたファイルから、FreeCAD_Trunk.slnを開く必要があります。それを開いたら、ツールバーにある3つのポップアップメニューがあるでしょう。それらの一つは"Debug"になっています。これを"Release"に切り替えます。"Build &gt;&gt; Build Solution"を実行します (もしくは F7キーを押します) 。このプロセスにはかなりの時間がかかります。
</p><p>それが終了したら、"Debug &gt;&gt; Start without Debugging"を実行します。ポップアップウィンドウに、exeファイルを選択するように求められます。 "Executable File Name" の下にあるポップアップメニューをクリックし、"Browse"を選択します。ソースファイルがあるbinフォルダに移動し、FreeCAD.exeを選択します。
</p><p>作業完了です!
</p>
<h4><span class="mw-headline" id=".E3.82.B3.E3.83.9E.E3.83.B3.E3.83.89.E3.83.A9.E3.82.A4.E3.83.B3.E3.83.93.E3.83.AB.E3.83.89">コマンドラインビルド</span></h4>
<p>ここではコマンドラインからFreeCADを構築する例を示します。:
</p>
<pre>rem @echo off
rem Build script, uses vcbuild to completetly build FreeCAD
rem update trunc
d:
cd "D:\_Projekte\FreeCAD\FreeCAD_0.9"
"C:\Program Files (x86)\Subversion\bin\svn.exe" update
rem set the aprobiated Variables here or outside in the system
set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
set INCLUDE=
set LIB=
rem Register VS Build programms
call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
rem Set Standard include paths
set INCLUDE=%INCLUDE%;%FrameworkSDKDir%\include
set INCLUDE=%INCLUDE%;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include
rem Set lib Pathes
set LIB=%LIB%;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib
set LIB=%LIB%;%PROGRAMFILES%\Microsoft Visual Studio\VC98\Lib
rem Start the Visuall Studio build process
"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" "D:\_Projekte\FreeCAD FreeCAD_0.9_build\FreeCAD_trunk.sln" /useenv
</pre>
<h3><span class="mw-headline" id=".E4.BB.A5.E5.89.8D.E3.81.AE.E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E3.81.AE.E3.83.93.E3.83.AB.E3.83.89">以前のバージョンのビルド</span></h3>
<h4><span class="mw-headline" id="LibPack.E3.81.AE.E4.BD.BF.E7.94.A8">LibPackの使用</span></h4>
<p>FreeCADのコンパイルを簡単にするために、我々はすべての必要なライブラリのコレクションを提供しています。それは、<a href="Third_Party_Libraries.html" title="Third Party Libraries">LibPack</a>と呼ばれています。あなたはそれをSourceForgeの <a rel="nofollow" class="external text" href="http://sourceforge.net/project/showfiles.php?group_id=49159">ダウンロードページ</a> で見つけることができます。
</p><p>あなたは、以下の環境変数を設定する必要があります。:
</p>
<dl><dd><b>FREECADLIB</b> = "D:\Wherever\LIBPACK"</dd></dl>
<dl><dd><b>QTDIR</b> = "%FREECADLIB%"</dd></dl>
<p>FREECADLIB\ bin"および"FREECADLIB\ dll"の場所を、システムPATH変数に追加します。Windowsは再帰的に環境変数を置き換えないので、"FREECADLIB"をパス名で付け替える必要があることに留意してください。
</p>
<h5><span class="mw-headline" id="Visual_Studio.E3.81.A7.E3.81.AE.E3.83.87.E3.82.A3.E3.83.AC.E3.82.AF.E3.83.88.E3.83.AA.E3.82.BB.E3.83.83.E3.83.88.E3.82.A2.E3.83.83.E3.83.97">Visual Studioでのディレクトリセットアップ</span></h5>
<p>Visual Studioの幾つかのサーチパスをセットする必要があります。
これらを変更するには、<i>Tools→Options→Directory とメニューをたどります。</i>
</p>
<h6><span class="mw-headline" id="Includes">Includes</span></h6>
<p>以下のサーチパスをincludeパスのサーチリストに追加します。
</p>
<ul><li>&#160;%FREECADLIB%\include</li>
<li>&#160;%FREECADLIB%\include\Python</li>
<li>&#160;%FREECADLIB%\include\boost</li>
<li>&#160;%FREECADLIB%\include\xercesc</li>
<li>&#160;%FREECADLIB%\include\OpenCascade</li>
<li>&#160;%FREECADLIB%\include\OpenCV</li>
<li>&#160;%FREECADLIB%\include\Coin</li>
<li>&#160;%FREECADLIB%\include\SoQt</li>
<li>&#160;%FREECADLIB%\include\QT</li>
<li>&#160;%FREECADLIB%\include\QT\Qt3Support</li>
<li>&#160;%FREECADLIB%\include\QT\QtCore</li>
<li>&#160;%FREECADLIB%\include\QT\QtGui</li>
<li>&#160;%FREECADLIB%\include\QT\QtNetwork</li>
<li>&#160;%FREECADLIB%\include\QT\QtOpenGL</li>
<li>&#160;%FREECADLIB%\include\QT\QtSvg</li>
<li>&#160;%FREECADLIB%\include\QT\QtUiTools</li>
<li>&#160;%FREECADLIB%\include\QT\QtXml</li>
<li>&#160;%FREECADLIB%\include\Gts</li>
<li>&#160;%FREECADLIB%\include\zlib</li></ul>
<h6><span class="mw-headline" id="Libs">Libs</span></h6>
<p>以下のサーチパスをlibパスのサーチリストに追加します。
</p>
<ul><li>&#160;%FREECADLIB%\lib</li></ul>
<h6><span class="mw-headline" id="Executables">Executables</span></h6>
<p>以下のサーチパスをexecutableパスのサーチリストに追加します。
</p>
<ul><li>&#160;%FREECADLIB%\bin</li>
<li> TortoiseSVN バイナリをインストールしたディレクトリ、 普段は "C:\Programm Files\TortoiseSVN\bin", これは <i>SubWVRev.exe</i> が Subversionからバージョン番号を抽出する分散ビルドの時に必要です 。</li></ul>
<h5><span class="mw-headline" id="Python.E3.81.AE.E5.BF.85.E8.A6.81.E6.80.A7">Pythonの必要性</span></h5>
<p>コンパイル時にいくつかのPythonスクリプトが実行されます。そのため、PythonインタプリタはOS上で動作しなければいけません。それを確認するには、コマンドボックスを使用します。Pythonのライブラリが正しくインストールされていない場合は、"python.exeを見つけることができません"といったエラーメッセージが表示されます。あなたはLibPackを使用する場合もbinディレクトリでpython.exeを使用することができます。
</p>
<h5><span class="mw-headline" id="VC8.E3.81.A7.E3.81.AE.E6.B3.A8.E6.84.8F.E4.BA.8B.E9.A0.85">VC8での注意事項</span></h5>
<p>VC6とVC8ではバージョンが異なるため、VC8でプロジェクトをビルドする場合、WildMagicライブラリのリンク情報を変更する必要があります。両方のバージョンは"LIBPACK/DLL"で提供されています。AppMeshのプロジェクトのプロパティで、wm.dllのライブラリ名をVC8バージョンに変更します。DebugとReleaseの構成で、それを変えることを忘れないでください。
</p>
<h4><span class="mw-headline" id=".E3.82.B3.E3.83.B3.E3.83.91.E3.82.A4.E3.83.AB">コンパイル</span></h4>
<p>すべての前提条件に適合させたあとは、コンパイルはVC内でマウスクリックするだけでできると思います。
</p>
<h4><span class="mw-headline" id=".E3.82.B3.E3.83.B3.E3.83.91.E3.82.A4.E3.83.AB.E5.BE.8C">コンパイル後</span></h4>
<p>すべての前提条件に適合した後、コンパイルは - うまくいけば - VCではでマウスクリックのみで実行できます。:
</p>
<ul><li> <i>python.exe</i> and <i>python_d.exe</i> from <i>LIBPACK/bin</i></li>
<li> <i>python25.dll</i> and <i>python25_d.dll</i> from <i>LIBPACK/bin</i></li>
<li> <i>python25.zip</i> from <i>LIBPACK/bin</i></li>
<li> make a copy of <i>Python25.zip</i> and rename it to <i>Python25_d.zip</i></li>
<li> <i>QtCore4.dll</i> from <i>LIBPACK/bin</i></li>
<li> <i>QtGui4.dll</i> from <i>LIBPACK/bin</i></li>
<li> <i>boost_signals-vc80-mt-1_34_1.dll</i> from <i>LIBPACK/bin</i></li>
<li> <i>boost_program_options-vc80-mt-1_34_1.dll</i> from <i>LIBPACK/bin</i></li>
<li> <i>xerces-c_2_8.dll</i> from <i>LIBPACK/bin</i></li>
<li> <i>zlib1.dll</i> from <i>LIBPACK/bin</i></li>
<li> <i>coin2.dll</i> from <i>LIBPACK/bin</i></li>
<li> <i>soqt1.dll</i> from <i>LIBPACK/bin</i></li>
<li> <i>QtOpenGL4.dll</i> from <i>LIBPACK/bin</i></li>
<li> <i>QtNetwork4.dll</i> from <i>LIBPACK/bin</i></li>
<li> <i>QtSvg4.dll</i> from <i>LIBPACK/bin</i></li>
<li> <i>QtXml4.dll</i> from <i>LIBPACK/bin</i></li></ul>
<p>バージョン2.5よりも古いPythonを使用した<a href="Third_Party_Libraries.html" title="Third Party Libraries">LibPack</a>を使っている場合、さらに2つのファイルをコピーする必要があります。:
</p>
<ul><li> <i>zlib.pyd</i> and <i>zlib_d.pyd</i> from <i>LIBPACK/bin/lib</i>. This is needed by python to open the zipped python library.</li>
<li> <i>_sre.pyd</i> and <i>_sre_d.pyd</i> from <i>LIBPACK/bin/lib</i>. This is needed by python for the built in help system.</li></ul>
<p>Pythonエラーで実行できない場合は、zlib*.pyd ファイルの一つが不足しています。
</p>
<h4><span class="mw-headline" id=".E3.81.9D.E3.81.AE.E4.BB.96.E3.81.AE.E3.82.82.E3.81.AE">その他のもの</span></h4>
<p>ソースコードのドキュメントを構築する場合は、 <a rel="nofollow" class="external text" href="http://www.stack.nl/~dimitri/doxygen/">DoxyGen</a>が必要です。
</p><p>インストーラパッケージを作成するには <a rel="nofollow" class="external text" href="http://wix.sourceforge.net/">WIX</a>が必要です。
</p><p><br />
コンパイル時にいくつかのPythonスクリプトが実行されます。そのため、Pythonインタプリタが適切に動作する必要があります。
</p><p>詳細は ソース内の"README.Linux"にも記載があります。
</p><p>まずはじめに、Qt Designer用のFreeCADのすべてのカスタムヴィジェットを提供するQtプラグインを構築すべきです。ソースファイルは以下にあります。
</p>
<pre>//src/Tools/plugins/widget//.
</pre>
<p>これまでのところ我々は、makefileを提供していません。しかし、以下を実行すると、
</p>
<pre>qmake plugin.pro
</pre>
<p>makefileが作成されます。これを実行後、makeを実行するとライブラリが作成されます。
</p>
<pre>//libFreeCAD_widgets.so//.
</pre>
<p>このライブラリをQt Designerに認識させるために、以下の場所にファイルをコピーする必要があります。
</p>
<pre>//$QTDIR/plugin/designer//.
</pre>
<p><br />
</p>
<p>最近のLinuxディストリビューションでは、すべての依存パッケージがパッケージマネージャで提供されるので、FreeCADのビルドは簡単です。基本的には以下のステップです。
</p>
<pre>1) FreeCADのソースコードを取得
2) 依存関係を取得 (FreeCADが依存するパッケージ)
3) "cmake . &amp;&amp; make"でのコンパイル
</pre>
<p>以下は、全体のプロセスと、あなたが遭遇するかもしれない特異性についての詳細説明です。
もしあなたが、以下のテキストで何らかの間違いや古い記述を見つけたとき(Linuxディストリビューションはしばしば変化するので)や、記述されていないディストリビューションを使用する場合は、テキストの修正にご協力ください。
</p>
<h2><span class="mw-headline" id=".E3.82.BD.E3.83.BC.E3.82.B9.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E5.8F.96.E5.BE.97">ソースファイルの取得</span></h2>
<p>FreeCADをコンパイルする前に、ソースコードを入手します。入手するにはつの方法があります。
</p>
<h3><span class="mw-headline" id="Git">Git</span></h3>
<p>ソースコードを入手する一番早く良い方法は、リードオンリーのgitリポジトリを複製することです。(<a rel="nofollow" class="external text" href="http://git-scm.com/">git</a> パッケージをインストールしておく必要があります)
</p><p><br />
</p>
<pre>git clone <a rel="nofollow" class="external free" href="git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad">git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad</a> freecad
</pre>
<p>上記を実行すると、"freecad"という新しいディレクトリに、最新バージョンFreeCADのソースコードのコピーを置きます。
初めて free-cad.git.sourceforge.netに接続を試みると、sourceforgeのSSH鍵の認証を尋ねるメッセージを受け取ります。
これは、通常、受け入れても安全です。はっきりしないときは、sourceforge ウェブサイトのSSH鍵をチェックすることができます。
</p>
<h3><span class="mw-headline" id="Gihub">Gihub</span></h3>
<p>Gihub上のFreeCADレポジトリは、常に最新版です。
<a rel="nofollow" class="external text" href="https://github.com/FreeCAD/FreeCAD_sf_master">github.com/FreeCAD/FreeCAD_sf_master</a>
</p>
<h3><span class="mw-headline" id=".E3.82.BD.E3.83.BC.E3.82.B9.E3.83.91.E3.83.83.E3.82.B1.E3.83.BC.E3.82.B8">ソースパッケージ</span></h3>
<p>別の方法として、ソースパッケージのダウンロードもできますが、それらはかなり古い可能性があるので、gitやsubversionで最新版のソースを入手するのが無難です。
ディストリビューションによって、ソースパッケージの入手方法はいくつかあります。
</p>
<pre>Official FreeCAD source packages (distribution-independent): <a rel="nofollow" class="external free" href="https://sourceforge.net/projects/free-cad/files/FreeCAD%20Source/">https://sourceforge.net/projects/free-cad/files/FreeCAD%20Source/</a>
Debian: <a rel="nofollow" class="external free" href="http://packages.debian.org/source/sid/freecad">http://packages.debian.org/source/sid/freecad</a>
Ubuntu: <a rel="nofollow" class="external free" href="http://packages.ubuntu.com/source/precise/freecad">http://packages.ubuntu.com/source/precise/freecad</a>
</pre>
<h2><span class="mw-headline" id=".E4.BE.9D.E5.AD.98.E3.83.91.E3.83.83.E3.82.B1.E3.83.BC.E3.82.B8.E3.81.AE.E5.8F.96.E5.BE.97">依存パッケージの取得</span></h2>
<p>LinuxでFreeCADをコンパイルするには、最初に<a href="https://www.freecadweb.org/wiki/index.php?title=Third_Party_Libraries/jp" title="Third Party Libraries/jp">サードパーティライブラリ</a>に記載されているすべてのライブラリをインストールする必要があります。
一般的に、最近のディストリビューションでは、いくつかのパッケージをインストールするだけの問題です
</p>
<h3><span class="mw-headline" id="Debian_and_Ubuntu">Debian and Ubuntu</span></h3>
<p>Debianベースのシステム(Debian, Ubuntu, Mint等)では、必要な全ての依存パッケージをインストールすることは簡単です。
ライブラリのほとんどは、apt-getまたはSynapticパッケージマネージャを介して利用できます。
インストールするために必要な全てのパッケージを、以下に記載します。
あなたが使用しているディストリビューションの最新バージョンを使用しない場合は、以下のパッケージのいくつかは、リポジトリから欠落している可能性があることに注意してください。
その場合、以下の <a href="#.E5.8F.A4.E3.81.8F.E3.81.A6.E4.B8.80.E8.88.AC.E7.9A.84.E3.81.A7.E3.81.AA.E3.81.84.E3.83.87.E3.82.A3.E3.82.B9.E3.83.88.E3.83.AA.E3.83.93.E3.83.A5.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3">#古くて一般的でないディストリビューション</a> セクションを参照してください。
</p>
<pre>build-essential
cmake
python
libtool
libcoin60-dev
libsoqt4-dev
libxerces-c-dev
libboost-dev
libboost-filesystem-dev
libboost-regex-dev
libboost-program-options-dev
libboost-signals-dev
libboost-thread-dev
libqt4-dev
libqt4-opengl-dev
qt4-dev-tools
python-dev
こちらか:
libopencascade-dev (official opencascade version)
または:
liboce*-dev (opencascade community edition)
oce-draw
gfortran
libeigen3-dev
libqtwebkit-dev
libode-dev
swig
libzipios++-dev
</pre>
<p>オプションで、以下の追加パッケージをインストールすることができます。
</p>
<pre>libsimage-dev (追加のイメージファイルフォーマットをサポートするCoinを作成するために必要)
checkinstall (システムのパッケージマネージャにインストールしたファイルを登録するために必要。あとで簡単にアンインストールできます。)
python-pivy (2D製図モジュールに必要)
python-qt4 (2D製図モジュールに必要)
doxygen and libcoin60-doc (ソースコードのドキュメントを生成する場合)
libspnav-dev (Space NavigatorやSpace Pilot等の3Dconnexion製デバイスのサポート)
</pre>
<h3><span class="mw-headline" id="Fedora">Fedora</span></h3>
<p>以下のパッケージが必要です。
</p>
<pre>cmake
doxygen
swig
gcc-gfortran
gettext
dos2unix
desktop-file-utils
libXmu-devel
freeimage-devel
mesa-libGLU-devel
OCE-devel
python python-devel
boost-devel
tbb-devel
eigen3-devel
qt-devel
qt-webkit-devel
ode-devel
xerces-c
xerces-c-devel
opencv-devel
smesh-devel
coin2-devel
soqt-devel
</pre>
<p>以下はオプションです。
</p>
<pre>libspnav-devel (Space NavigatorやSpace Pilot等の3Dconnexion製デバイスのサポート)
pivy ( <a rel="nofollow" class="external free" href="https://bugzilla.redhat.com/show_bug.cgi?id=458975">https://bugzilla.redhat.com/show_bug.cgi?id=458975</a> Pivyは必須ではありませんが、ドラフトモジュールに必要 )
</pre>
<p>Fedoraでは公式のレポジトリではcoin2しか提供していないので、coin3でFreeCADをビルドすることはさらに面倒です。
しかし、どうしてもという場合は、 <a rel="nofollow" class="external free" href="http://www.zultron.com/rpm-repo/">http://www.zultron.com/rpm-repo/</a> からcoin3-readyのパッケージをインストールすれば、
全てのcoin3/soqt/pivyパッケージを再構築をせずにすみます。
</p>
<h3><span class="mw-headline" id="Gentoo_2">Gentoo</span></h3>
<p>FreeCADのビルドには、以下のパッケージが必要です。
</p>
<pre>dev-cpp/eigen
dev-games/ode
dev-libs/boost
dev-libs/xerces-c
dev-python/pivy
dev-python/PyQt4
media-libs/coin
media-libs/SoQt
sci-libs/opencascade-6.5
sys-libs/zlib
virtual/fortran
x11-libs/qt-gui
x11-libs/qt-opengl
x11-libs/qt-svg
x11-libs/qt-webkit
x11-libs/qt-xmlpatterns
dev-lang/swig-2.0.4-r1
app-admin/eselect-python-20091230
dev-lang/python-2.7.2-r3
dev-util/cmake-2.8.4
sys-apps/findutils-4.4.0
</pre>
<p>最新のopencascadeが利用できないので、opencascadeをコンパイルしたくなるかもしれませんが、その場合は以下の追加ライブラリが必要です
</p>
<pre>media-libs/ftgl
virtual/opengl
x11-libs/libXmu
dev-lang/tcl-8.5.9
dev-lang/tk-8.5.9-r1
dev-tcltk/itcl-3.4_beta1
dev-tcltk/itk-3.4_pre20090417
dev-tcltk/tix-8.4.3
x11-libs/gl2ps
sys-devel/automake-1.11
sys-devel/autoconf-2.68
sys-devel/libtool
dev-java/java-config-2.1.11-r3
</pre>
<h3><span class="mw-headline" id="OpenSUSE_2">OpenSUSE</span></h3>
<p>以下のパッケージが必要です。
</p>
<pre>gcc
cmake
OpenCASCADE-devel
libXerces-c-devel
python-devel
libqt4-devel
python-qt4
Coin-devel
SoQt-devel
boost-devel
libode-devel
libQtWebKit-devel
libeigen3-devel
gcc-fortran
</pre>
<p>FreeCAD 0.13が不安定なので、Eigen3とswigライブラリを追加する必要があります。それらは標準のレポジトリにはありません。それらは以下からクリックインストールできます。
</p><p><br />
</p>
<pre>Eigen3: <a rel="nofollow" class="external free" href="http://software.opensuse.org/search?q=eigen3&amp;baseproject=openSUSE%3A12.1&amp;lang=en&amp;exclude_debug=true">http://software.opensuse.org/search?q=eigen3&amp;baseproject=openSUSE%3A12.1&amp;lang=en&amp;exclude_debug=true</a>
swig: <a rel="nofollow" class="external free" href="http://software.opensuse.org/search?q=swig&amp;baseproject=openSUSE%3A12.1&amp;lang=en&amp;exclude_debug=true">http://software.opensuse.org/search?q=swig&amp;baseproject=openSUSE%3A12.1&amp;lang=en&amp;exclude_debug=true</a>
</pre>
<p>Factory EducationのEigen3ライブラリは、しばしば問題を起こしていたので、KDE 4.8 Extraレポジトリのものを使ってください。
</p>
<h3><span class="mw-headline" id=".E5.8F.A4.E3.81.8F.E3.81.A6.E4.B8.80.E8.88.AC.E7.9A.84.E3.81.A7.E3.81.AA.E3.81.84.E3.83.87.E3.82.A3.E3.82.B9.E3.83.88.E3.83.AA.E3.83.93.E3.83.A5.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3">古くて一般的でないディストリビューション</span></h3>
<p>他のディストリビューションでは、ユーザーからのフィードバックがほとんど無いので、必要なパッケージを見つけることが難しくなる場合があります。
まず、<a href="https://www.freecadweb.org/wiki/index.php?title=Third_Party_Libraries/jp" title="Third Party Libraries/jp">サードパーティライブラリ</a>に記載されている必要なライブラリを用意することを試してください。
そのうちのいくつかはお使いのディストリビューションで若干異なるパッケージ名name、libname、name-dev、name-devel、等..)になっているかもしれないことに注意してください。
</p><p><a href="http://en.wikipedia.org/wiki/GNU_Compiler_Collection" class="extiw" title="wikipedia:GNU Compiler Collection">GNU gcc コンパイラ</a> バージョン 3.0.0以上も必要です。
FreeCADは完全にC++で記述されているので、g++も必要です。
コンパイル中には、いくつかのPythonスクリプトも実行されます。
そのため、Pythonインタプリタが正しく機能する必要があります。
ビルドプロセスでのリンカの問題を避けるため、環境変数"LD_LIBRARY_PATH"、もしくは、"ld.so.conf"ファイルに、ライブラリへのパスを追加するのも良いでしょう。
これは、最近のディストリビューションでは一般的なことです。
</p><p>詳細は、ソースファイル内の"README.Linux"にも書かれています。
</p><p>以下には、あなたのディストリビューションのリポジトリで見つけることができないかもしれない、いくつかのライブラリについての追加ヘルプです。
</p>
<h4><span class="mw-headline" id="Eigen_3">Eigen 3</span></h4>
<p>Eigen3ライブラリは現在、Schecherモジュールを必要とします。 このライブラリは、Ubuntu 11.10のリポジトリ以降でのみ使用できます。 前のUbuntuのリリースでは、<a rel="nofollow" class="external text" href="http://packages.ubuntu.com/oneiric/libeigen3-dev">ここから</a> ダウンロードして手動でインストールするか、インストールする前に以下に示す方法のいずれかを使って、 <a rel="nofollow" class="external text" href="https://launchpad.net/~freecad-maintainers/+archive/freecad-daily">FreeCAD Daily Builds PPA</a> をソフトウェアのソースに加えてください。
</p>
<h4><span class="mw-headline" id="OpenCASCADE.E3.80.80.E3.82.B3.E3.83.9F.E3.83.A5.E3.83.8B.E3.83.86.E3.82.A3.E7.89.88_.28OCE.29">OpenCASCADE コミュニティ版 (OCE)</span></h4>
<p>OpenCasCade には最近分離した <a rel="nofollow" class="external text" href="http://github.com/tpaviot/oce">コミュニティ版</a> があり、これはビルドがはるかに簡単になっています。ご使用のシステムにかかわらず、FreeCADは"公式版"あるいはコミュニティ版のどちらかを利用することができます。OCEのウェブサイトにはビルド手順の詳細があります。
</p>
<h4><span class="mw-headline" id="OpenCASCADE_.E5.85.AC.E5.BC.8F.E7.89.88">OpenCASCADE 公式版</span></h4>
<p>前文ではOpenCasCadeコミュニティ版はビルドが簡単であると紹介しましたが、公式版も動きます。
</p><p>全てのLinuxディストリビューションはリポジトリ内に公式版のOpenCasCadeパッケージを持っていません。
もし使えるリポジトリがあるなら、自分自身でリポジトリを確認する必要があります。
少なくともDebian LennyとUbuntu Intrepidには、公式の.debパッケージが用意されています。
古いDebianやUbuntuのリリース用に非公式パッケージを<a rel="nofollow" class="external text" href="http://lyre.mit.edu/~powell/opencascade">ここから</a>入手することができます。あなた自身のプライベートなdebパッケージをビルドするには、次の手順に従います。
</p>
<pre>wget <a rel="nofollow" class="external free" href="http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.0.orig.tar.gz">http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.0.orig.tar.gz</a>
wget <a rel="nofollow" class="external free" href="http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.0-7.dsc">http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.0-7.dsc</a>
wget <a rel="nofollow" class="external free" href="http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.0-7.diff.gz">http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.0-7.diff.gz</a>
</pre>
<pre>dpkg-source -x opencascade_6.2.0-7.dsc
</pre>
<pre># OCC build-deps をインストール
sudo apt-get install build-essential devscripts debhelper autoconf
automake libtool bison libx11-dev tcl8.4-dev tk8.4-dev libgl1-mesa-dev
libglu1-mesa-dev java-gcj-compat-dev libxmu-dev
</pre>
<pre># Opencascade パッケージのビルド. 数時間以上かかる
# 8GB以上のディスク空き容量
cd opencascade-6.2.0&#160;; debuild
</pre>
<pre># 生成されたdebライブラリをインストール
sudo dpkg -i libopencascade6.2-0_6.2.0-7_i386.deb
libopencascade6.2-dev_6.2.0-7_i386.deb
</pre>
<p>もう一つの方法として、<a rel="nofollow" class="external text" href="http://www.opencascade.org">opencascade.org</a>から最新バージョンをダウンロードしてコンパイルすることもできます。
普通にパッケージをインストールします。インストーラはSun公式のJava ランタイム(パッケージ名sun-java6-jre)のプログラムであり、UbuntuにバンドルされているオープンソースのJava(gij)でないことに注意してください。
必要に応じてそれをインストールします。
</p>
<pre>sudo apt-get remove gij
sudo apt-get install sun-java6-jre
</pre>
<p>あなたがブラウザのプラグイン等の他のものでgijのJavaを使用している場合は注意してください、それらは動かなくなるでしょう。インストーラが動作しない場合は、以下を試してみてください。
</p>
<pre>java -cp path_to_file_setup.jar &lt;-Dtemp.dir=path_to_tmp_directory&gt; run
</pre>
<p>パッケージがインストールされたら、opencascade dir内の "ROS"ディレクトリに移動し、以下を実行します。
</p>
<pre>./configure --with-tcl=/usr/lib/tcl8.4 --with-tk=/usr/lib/tk8.4
</pre>
<p>ビルドすることができます。 ROSフォルダに戻って操作を行います。:
</p>
<pre>make
</pre>
<p>これは長い時間、数時間かかります。
</p><p>それが終わったら、インストールを実行します。
</p>
<pre>sudo make install
</pre>
<p>ライブラリファイルは、/usr/local/lib にコピーされます。このフォルダは他のプログラムが自動的に見つけることができるので、このフォルダにコピーするのが良いです。別の方法としては、以下のようにします。これは"make install"と同じですが、後から簡単にアンインストールできるようにパッケージ管理システムに登録します。
</p>
<pre>sudo checkinstall
</pre>
<p>巨大な一時コンパイルファイルを以下のコマンドで今すぐクリーンアップしましょう。
</p>
<pre>make clean
</pre>
<p>可能性のあるエラー 1OCC バージョン 6.2を使っている場合、コンパイラがmakeを実行し始めると同時にに止まります。
もしこの現象が生じたら、"configure"スクリプトで、CXXFLAGS="$CXXFLAGS "の文を見つけて、CXXFLAGS="$CXXFLAGS -ffriend-injection -fpermissive"に修正します。それからconfigureをやり直してください。
</p><p>可能性のあるエラー 2::おそらく、幾つかのモジュール(WOKSH, WOKLibs, TKWOKTcl, TKViewerTest and TKDraw)は、tcl/tkのヘッダファイルが見つからないとエラーを出すでしょう。この場合、オプションがconfigureスクリプトに提供されていないので、手動でこれらのモジュールの各々のMakefileを編集する必要があります。adm/makeや不良モジュールのフォルダに行きます。Makefileを修正して、CSF_TclLibs_INCLUDES = -I/usr/include と CSF_TclTkLibs_INCLUDES = -I/usr/include を設定し、/tck8.4 と /tk8.4を次のように追加します。: SCF_TclLibs_INCLUDES = -I/usr/include/tcl8.4 , SCF_TclTkLibs_INCLUDES = -I/usr/include/tk8.4
</p>
<h4><span class="mw-headline" id="SoQt">SoQt</span></h4>
<p>最新のディストリビューションの場合、SoQtライブラリはQt4に対してコンパイルする必要があります。しかし、この記事の執筆時点で利用可能なSoQt4はDebian用のみであり、すべてのUbuntuにはパッケージがありません。バッケージをビルドするには、次の手順を実行します。:
</p>
<pre>wget <a rel="nofollow" class="external free" href="http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.1.orig.tar.gz">http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.1.orig.tar.gz</a>
wget <a rel="nofollow" class="external free" href="http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.1-6.dsc">http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.1-6.dsc</a>
wget <a rel="nofollow" class="external free" href="http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.1-6.diff.gz">http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.1-6.diff.gz</a>
dpkg-source -x soqt_1.4.1-6.dsc
sudo apt-get install doxygen devscripts fakeroot debhelper libqt3-mt-dev qt3-dev-tools libqt4-opengl-dev
cd soqt-1.4.1
debuild
sudo dpkg -i libsoqt4-20_1.4.1-6_i386.deb libsoqt4-dev_1.4.1-6_i386.deb libsoqt-dev-common_1.4.1-6_i386.deb
</pre>
<p>64bitのシステムの場合、i386の記述をamd64に変えてください。
</p>
<h4><span class="mw-headline" id="Pivy">Pivy</span></h4>
<p>PivyはFreeCADのビルドや実行に必要ないですが、2D製図モジュールを動かすのに必要とされています。
もしこのモジュールを使う予定が無いのであれば、Pivyは必要ありません。執筆時点では、Pivyは非常に新しいものであり、
あなたのお使いのディストリビューションのリポジトリに無い可能性があります。もし、ディストリビューションのパッケージリポジトリにPivyを見つけることができない場合には、FreeCADのダウンロードページから Debian / Ubuntuのパッケージを入手することができます。
</p><p><a rel="nofollow" class="external free" href="http://sourceforge.net/projects/free-cad/files/FreeCAD%20Linux/">http://sourceforge.net/projects/free-cad/files/FreeCAD%20Linux/</a>
</p><p>または、自分自身でPivyをコンパイルします:
</p><p><a href="/wiki/Extra_python_modules#Pivy" title="Extra python modules">Pivyコンパイル手順</a>
</p>
<h2><span class="mw-headline" id="FreeCAD_.E3.81.AE.E3.82.B3.E3.83.B3.E3.83.91.E3.82.A4.E3.83.AB">FreeCAD のコンパイル</span></h2>
<h3><span class="mw-headline" id="cMake_.E3.82.92.E4.BD.BF.E3.81.86">cMake を使う</span></h3>
<p>CMakeは異なる対象システムLinux、また、Windows、MacOSX、等間で共通であるという大きな利点がある新しいビルドシステムです。FreeCADは現在、メインのビルドシステムとしてCMakeを使用しています。CMakeを使用してのコンパイルは、通常は非常に簡単であり、次の2つのステップで実行されます。最初のステップでは、cMakeは、すべての必要なプログラムやライブラリが、お使いのシステム上に存在しているかをチェックし、その後のコンパイルに必要なすべてのことを設定します。以下に詳述するように、いくつか選択する必要がある部分がありますが、FreeCADでは適切な標準値が付与されます。次のステップでは、FreeCADの実行形式を生成するコンパイルです。
</p><p>FreeCADは大きなアプリケーションなので、コンパイルには少し時間がかかります(速いマシンでは10分、遅いマシンでは30分
</p>
<h4><span class="mw-headline" id="In-source_.E3.83.93.E3.83.AB.E3.83.89">In-source ビルド</span></h4>
<p>FreeCADは、In-sourceでビルドされます、これはコンパイルで得られた全てのファイルはソースファイルと同じフォルダにあるという意味です。これはFreeCADだけに注目していて、フォルダを削除するだけで簡単に削除できるようにしたいならば良い方法です。しかし、しばしばコンパイルをする場合は、アウトオブソースビルドをおすすめします、これには、より多くの利点があります。以下のコマンドでfreecadをコンパイルします。
</p>
<pre>cd freecad (freecadのソースのをコピーしたフォルダ)
cmake .
make
</pre>
<p>あなたのFreeCADの実行形式は "bin" フォルダにあり、それを以下のコマンドで起動できます。
</p>
<pre>./bin/FreeCAD
</pre>
<h4><span class="mw-headline" id="Out-of-source_.E3.83.93.E3.83.AB.E3.83.89">Out-of-source ビルド</span></h4>
<p>もしあなたがFreeCADの速い進化について行きたいなら、別のフォルダでビルドするのがずっと便利です。あなたがソースコードをアップデートするたびごとに、cMakeは、どのファイルが変更され、必要なものだけが再コンパイルされるということを賢く区別します。Out-of-sourceのビルドは、Gitシステムを利用していると、あなたはビルドシステムを壊すこと無く、他のブランチを簡単に試すことができるため、特に便利です。out-of-sourceでビルドするには、単純に、あなたのfreecadソースフォルダやbuildディレクトリとは異なるビルドフォルダを作成し、cMakeにソースフォルダを示します。
</p>
<pre>mkdir freecad-build
cd freecad-build
cmake ../freecad (or whatever the path is to your FreeCAD source folder)
make
</pre>
<p>FreeCADの実行形式は、"bin"ディレクトリ(freecad-buildディレクトリ内)にあります。
</p>
<h4><span class="mw-headline" id=".E8.A8.AD.E5.AE.9A.E3.82.AA.E3.83.97.E3.82.B7.E3.83.A7.E3.83.B3">設定オプション</span></h4>
<p>試験的または未完成のモジュールを使いたい場合は、それらをビルドする必要があります。これを行うには、設定段階で適切なオプションをセットする必要があります。コマンドラインで、-D &lt;var&gt;:&lt;type&gt;=&lt;value&gt;オプションをcMakeに渡すか、利用できるGUIフロントエンドDebianでは、packages cmake-qt-gui や、cmake-curses-gui等のどれかを使うことで実行できます。
</p><p>例として、アッセンブリモジュールのビルドをコマンドラインで設定するために、以下を実行します。
</p>
<pre>cmake -D FREECAD_BUILD_ASSEMBLY:BOOL=ON <i>path-to-freecad-root</i>
</pre>
<p>利用できるオプションは、FreeCADのルートディレクトリの CmakeLists.txtファイルに書かれています。
</p>
<h3><span class="mw-headline" id="autotools_.E3.82.92.E4.BD.BF.E3.81.86">autotools を使う</span></h3>
<p>FreeCADはcMakeを推奨しているので、Autotoolsからは離れている途中にありますが、現時点ではまだFreeCADを構築することが可能です。automakeとlibtoolがシステムにインストールされている必要があるため、Debian / Ubuntuでインストールするには以下を実行します。
</p>
<pre>aptitude install automake libtool
</pre>
<p>この設定は、gitやsubversionでソースファイルを持っている場合は、configureスクリプト等を作成するために、以下のコマンドを一番最初のステップで実行する必要があります。
</p>
<pre>./autogen.sh
</pre>
<p>ビルドプロセスのために、configureスクリプトが提供されています。 ビルドのための全ての設定を行うには、以下を実行します。
</p>
<pre>./configure
</pre>
<p>もしあなたが設定した全てのオプションの概要を確認するには、次のように入力します。
</p>
<pre>./configure --help
</pre>
<p>通常、あなたのライブラリが本当に珍しいディレクトリにインストールされていない限り、あなたはどのオプションも設定する必要はありません 。設定が完了したら、FreeCADのコンパイルは簡単です。
</p>
<pre>make
</pre>
<p>もし何らかのエラーがソースからのビルド中に発生したら、このページとREADME.Linux ファイルをダブルチェクしてください。そしてSourceForgeにある <a href="Tracker.html" title="Tracker">Bug Tracker</a> に行ってください。状態は"Any"とし、過去のコンパイル問題の投稿を見るために"Brouse"ボタンをクリックしてください。FreeCADが正常にビルドされた後は、以下を実行します。
</p>
<pre>make install
</pre>
<p>あなたのマシンにFrreeCADをインストールします。デフォルトのインストールディレクトリは以下のとおりです。
</p>
<pre>~/FreeCAD
</pre>
<p>あなたのホームフォルダにあるFreeCADフォルダにインストールします。この場合はroot権限は必要ありません。make installの代わりに、以下を実行します。
</p>
<pre>checkinstall
</pre>
<p>この方法で、FreeCADはあなたのパッケージマネジメントシステムを使ってインストールされます。そうすると、あとで簡単にアンインストールできます。しかし全てのFreeCADのインストールはシングルディレクトリにインストールされるため、FreeCADディレクトリを削除することも、アンインストールの有効な手段です。
</p>
<h4><span class="mw-headline" id="Qt_designer_.E3.83.97.E3.83.A9.E3.82.B0.E3.82.A4.E3.83.B3">Qt designer プラグイン</span></h4>
<p>もしFreeCADのためのQtの機能を開発したいなら、FreeCADのカスタムウィジェットを提供しているQt Designerプラグインが必要です。以下のディレクトリに移動します。
</p>
<pre>freecad/src/Tools/plugins/widget
</pre>
<p>これまで、makefileを提供していませんでした。--しかし以下を実行すれば作られます。
</p>
<pre>qmake plugin.pro
</pre>
<p>これを実行した後で以下を実行すると、libFreeCAD_widgets.soライブラリが作成されます。
</p>
<pre>make
</pre>
<p>このライブラリをQt Designerに認識させるために、このファイルを $QTDIR/plugin/designer にコピーします。
</p>
<h4><span class="mw-headline" id="Doxygen">Doxygen</span></h4>
<p>ソースコードに飛び込むのを大変なことだと感じている場合は、Doxygenが生成するFreeCADの <a href="https://www.freecadweb.org/wiki/index.php?title=Source_documentation/jp" title="Source documentation/jp">ソースドキュメント</a> を構築し参照することができます。
</p>
<h3><span class="mw-headline" id="debian_package_.E3.81.AE.E4.BD.9C.E6.88.90">debian package の作成</span></h3>
<p>もしDebian packageをソースファイルからビルドする場合、まずはじめに以下のパッケージをインストールする必要があります。
</p>
<pre>dh-make
devscripts
lintian (optional, used for checking if packages are standard-compliant)
</pre>
<p>パッケージをビルドするにはコンソールを開き、FreeCADのディレクトリに行き、以下を実行します。
</p>
<pre>debuild
</pre>
<p>パッケージがビルドされたら、パッケージにエラーが含まれているかどうかをチェックするためにlintian使用することができます。
</p>
<pre>lintian your-fresh-new-freecad-package.deb (replace by the name of the package you just created)
</pre>
<h2><span class="mw-headline" id=".E3.83.88.E3.83.A9.E3.83.96.E3.83.AB.E3.82.B7.E3.83.A5.E3.83.BC.E3.83.86.E3.82.A3.E3.83.B3.E3.82.B0">トラブルシューティング</span></h2>
<h3><span class="mw-headline" id="64bit_.E3.82.B7.E3.82.B9.E3.83.86.E3.83.A0.E3.81.A7.E3.81.AE.E6.B3.A8.E6.84.8F">64bit システムでの注意</span></h3>
<p>64ビット用FreeCADを構築するとき、OpenCASCADE 64ビットパッケージには既知の問題があります。正常に動作するFreeCADを取得するために、あなたは ./configure スクリプトを、追加の定義として"_OCC64"を指定して実行する必要があるかもしれません。
</p>
<pre>./configure CXXFLAGS="-D_OCC64"
</pre>
<p>すでにビルドされたOpenCASCADEパッケージを使用している場合は、この定義が組み込まれているので、Debianベースのシステムの場合は、この回避策は必要ありません。上記の説明と同じ方法でFreeCADをコンパイルする必要があります。
</p>
<h3><span class="mw-headline" id="Automake_.E3.83.9E.E3.82.AF.E3.83.AD">Automake マクロ</span></h3>
<p>FreeCADの configureスクリプトは、automakeのマクロ(bnv_have_qt.m4, coin.m4, soqt.m4)を利用していますが、それらはたまにインストールされていないことがあります。もし必要なら(configure時にエラーになった場合、googleでそれらを探せば、簡単に見つけられるでしょう。それらは簡単なスクリプトで、/usr/share/aclocal フォルダに配置する必要があります。
</p>
<h3><span class="mw-headline" id="Fedora_13">Fedora 13</span></h3>
<p>Fedora13でコンパイルとインストールをするには、いくつかのヒントやトリックが必要です。
</p>
<ul><li> 必要なパッケージ群をインストールします。ほとんどのはFedora 13のリポジトリから入手可能です。</li>
<li> xercesのダウンロードおよびビルド</li>
<li> OpenCascadeをダウンロードしてビルドします。XMUを指すようにする必要があります: ./configure --with-xmu-include=/usr/include/X11/Xmu --with-xmu-library=/usr/lib</li>
<li> Pivyをダウンロードしてビルドします。 pivy/interfaces/soqt.iから、存在しない"SoQtSpaceball.h"の2つの参照を削除する必要があります。ビルドとインストールが実行できるように、これらの2行をコメントアウトしてください。</li>
<li> Freecadを設定(configure)します. いくつかの項目を指定する必要があります。: ./configure --with-qt4-include=/usr/include --with-qt4-bin=/usr/lib/qt4/bin --with-occ-lib=/usr/local/lib --with-occ-include=/usr/local/inc --with-xercesc-lib=/usr/local/lib</li>
<li> makeします。 - soqt の ldflags が "-LNONE" に設定されていて、そのため libtool でエラーが出たためにビルドが中断する問題に直面しました。</li></ul>
<p>この問題を回避するために、/usr/local/Cons2/conf/soqt-default.cfg を修正したら、ldflagsが "-LNONE" でなく "" となりました。これにより、成功しました!
</p>
<ul><li> make install を実行します。</li></ul>
<h3><span class="mw-headline" id="Ubuntu_Lucid">Ubuntu Lucid</span></h3>
<p>Ubuntu Lucidでは、qtwebkit-devはqt4-devに含まれているので、qtwebkit-devは必要ありません。
</p>
<h2><span class="mw-headline" id="Automatic_.E3.83.93.E3.83.AB.E3.83.89.E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88">Automatic ビルドスクリプト</span></h2>
<p>ここでは、FreeCADを完全ビルドに必要なものすべてを紹介します。
1スクリプトでのアプローチでは、ディストリビューションをインストールした直後の状態では動作します。
このコマンドは、rootのパスワード(パッケージのインストールのために)と外部のリポジトリサーバ、もしくはhttpsのsubversionリポジトリのfingerprintを尋ねてきます。
これらのスクリプトは32bitもしくは64bit上で動かすべきです。
それらのスクリプトはバージョンごとに書かれていますが、より新しいバージョンに対しても、
必要ならば、ちょっとした変更をすれば動くと思います。
</p><p>あなたが好むディストリビューション用のスクリプトを持っていたら、是非送ってください!
我々はこの記事にそれを組み込みます。
</p><p>このスクリプトは、 <a rel="nofollow" class="external text" href="https://launchpad.net/~freecad-maintainers/+archive/freecad-daily">FreeCAD Daily Builds PPA</a> リポジトリに追加されることから始まっていて、
Eigen3ライブラリ(libeigen3-dev)のインストールに進むことができます。もしこのライブラリがすでにインストールされている場合は、スクリプトの最初の行を削除してください。
</p>
<h3><span class="mw-headline" id="Ubuntu_10.04_LTS_-_Lucid_Lynx_.2F_Ubuntu_10.10_Maverick_Meerkat_.2F_Ubuntu_11.04_Natty_Narwhal">Ubuntu 10.04 LTS - Lucid Lynx / Ubuntu 10.10 Maverick Meerkat / Ubuntu 11.04 Natty Narwhal</span></h3>
<pre>sudo add-apt-repository ppa:freecad-maintainers/freecad-daily &amp;&amp; sudo apt-get update
sudo apt-get install build-essential python libcoin60-dev libsoqt4-dev \
libxerces-c2-dev libboost-dev libboost-date-time-dev libboost-filesystem-dev \
libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev \
libboost-serialization-dev libboost-signals-dev libboost-regex-dev libboost-thread-dev \
libqt4-dev qt4-dev-tools python2.7-dev libopencascade-dev libsoqt4-dev \
libode-dev subversion cmake libeigen2-dev libsimage-dev python-qt4 \
libtool autotools-dev automake bison flex gfortran libeigen3-dev libqtwebkit-dev git
</pre>
<pre># source 最新版のチェックアウト
git clone <a rel="nofollow" class="external free" href="git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad">git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad</a> freecad
</pre>
<pre># source ディレクトリに移動
cd freecad
</pre>
<pre># 設定のビルド
cmake .
</pre>
<pre># FreeCADのビルド
make
</pre>
<pre># FreeCADのテスト
cd bin
./FreeCAD -t 0
</pre>
<pre># FreeCADの実行
./FreeCAD
</pre>
<pre># 最新版へのアップデート
</pre>
<pre># source ディレクトリに移動
cd freecad
</pre>
<pre># sourceをアップデート
git pull
</pre>
<pre># 設定のビルド
cmake .
</pre>
<pre># FreeCADのビルド
make
</pre>
<h3><span class="mw-headline" id="OpenSUSE_12.2">OpenSUSE 12.2</span></h3>
<p>このリリースで FreeCAD 0.13をコンパイルするには、外部リポジトリは必要ありません。
しかしながら、python3-devとの互換性が無く、python3-devを削除する必要があります。
FreeCADはOpenSUSE 12.2と同様に、GITからコンパイルできます。
</p>
<pre># 開発に必要なパッケージのインストール
sudo zypper install gcc cmake OpenCASCADE-devel libXerces-c-devel \
python-devel libqt4-devel python-qt4 Coin-devel SoQt-devel boost-devel \
libode-devel libQtWebKit-devel libeigen3-devel gcc-fortran git swig
</pre>
<pre># 新しいディレクトリの作成と、そのディレクトリへの移動
mkdir FreeCAD-Compiled
cd FreeCAD-Compiled
</pre>
<pre># sourceの取得
git clone <a rel="nofollow" class="external free" href="git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad">git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad</a>
</pre>
<pre># これから free-cad という場所にサブフォルダを持つことになります。そのフォルダはsourceを含んでいます。
</pre>
<pre># コンパイル用のフォルダを作成して、そこに移動します。
mkdir FreeCAD-Build1
cd FreeCAD-Build1
</pre>
<pre># 設定のビルド
cmake ../free-cad
</pre>
<pre># FreeCADのビルド
make
</pre>
<pre># FreeCADのテスト
cd bin
./FreeCAD -t 0
</pre>
<p>gitを使っているので、次回コンパイルしたい場合は、全てをクローンする必要はなく、gitから pullして、もう一度コンパイルするだけでよいです。
</p>
<pre># 以前に作成したfree-cadディレクトリに移動
cd free-cad
</pre>
<pre># pull
git pull
</pre>
<pre># 一つ上のディレクトリに戻る
cd ..
</pre>
<pre># ここで前から最後のいくつかの手順を繰り返します。
</pre>
<pre># コンパイル用に他のディレクトリを作成し、そのディレクトリに移動
mkdir FreeCAD-Build2
cd FreeCAD-Build2
</pre>
<pre># 設定のビルド
cmake ../free-cad
</pre>
<pre># FreeCADのビルド
make
</pre>
<pre># FreeCADのテスト
cd bin
./FreeCAD -t 0
</pre>
<h3><span class="mw-headline" id="OpenSUSE_12.1">OpenSUSE 12.1</span></h3>
<p>FreeCAD 0.13が不安定なので、Eigen3とswigライブラリを追加する必要があります、これは、標準のリポジトリにはないようです。それらは以下から1クリックでインストールできます。
</p><p>Eigen3:
<a rel="nofollow" class="external free" href="http://software.opensuse.org/search?q=eigen3&amp;baseproject=openSUSE%3A12.1&amp;lang=en&amp;exclude_debug=true">http://software.opensuse.org/search?q=eigen3&amp;baseproject=openSUSE%3A12.1&amp;lang=en&amp;exclude_debug=true</a>
</p><p>swig:
<a rel="nofollow" class="external free" href="http://software.opensuse.org/search?q=swig&amp;baseproject=openSUSE%3A12.1&amp;lang=en&amp;exclude_debug=true">http://software.opensuse.org/search?q=swig&amp;baseproject=openSUSE%3A12.1&amp;lang=en&amp;exclude_debug=true</a>
</p><p><br />
</p>
<pre># 開発に必要なパッケージのインストール
sudo zypper install gcc cmake OpenCASCADE-devel libXerces-c-devel \
python-devel libqt4-devel python-qt4 Coin-devel SoQt-devel boost-devel \
libode-devel libQtWebKit-devel libeigen3-devel gcc-fortran git
</pre>
<pre># 新しいディレクトリの作成と、そのディレクトリへの移動
mkdir FreeCAD-Compiled
cd FreeCAD-Compiled
</pre>
<pre># sourceの取得
git clone <a rel="nofollow" class="external free" href="git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad">git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad</a>
</pre>
<pre># これから free-cad という場所にサブフォルダを持つことになります。そのフォルダはsourceを含んでいます。
</pre>
<pre># コンパイル用にディレクトリを作成し、そのディレクトリに移動
mkdir FreeCAD-Build1
cd FreeCAD-Build1
</pre>
<pre># 設定のビルド
cmake ../free-cad
</pre>
<pre># FreeCADのビルド
make
</pre>
<pre># FreeCADのテスト
cd bin
./FreeCAD -t 0
</pre>
<p>gitを使っているので、次回コンパイルしたい場合は、全てをクローンする必要はなく、gitから pullして、もう一度コンパイルするだけでよいです。
</p><p><br />
</p>
<pre># 以前に作成したfree-cadディレクトリに移動
cd free-cad
</pre>
<pre># pull
git pull
</pre>
<pre># 一つ上のディレクトリに戻る
cd ..
</pre>
<pre># ここで前から最後のいくつかの手順を繰り返します。
</pre>
<pre># コンパイル用に他のディレクトリを作成し、そのディレクトリに移動
mkdir FreeCAD-Build2
cd FreeCAD-Build2
</pre>
<pre># 設定のビルド
cmake ../free-cad
</pre>
<pre># FreeCADのビルド
make
</pre>
<pre># FreeCADのテスト
cd bin
./FreeCAD -t 0
</pre>
<h3><span class="mw-headline" id="OpenSuse_11.2">OpenSuse 11.2</span></h3>
<p>This script is <b>not working</b> at the moment because:
このスクリプトは以下の理由により、現在 "動きません"
</p>
<ul><li> libXerces-c-devel が消えているようです…</li></ul>
<pre># 開発に必要なパッケージのインストール
sudo zypper install gcc cmake subversion OpenCASCADE-devel \
libXerces-c-devel python-devel libqt4-devel python-qt4 \
Coin-devel SoQt-devel boost-devel libode-devel libQtWebKit-devel \
libeigen2-devel gcc-fortran
</pre>
<pre># sourceの取得
git clone <a rel="nofollow" class="external free" href="git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad">git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad</a> freecad
</pre>
<pre># sourceディレクトリに移動
cd freecad
</pre>
<pre># 設定のビルド
cmake .
</pre>
<pre># FreeCADのビルド
nice make
</pre>
<pre># FreeCADのテスト
cd bin
./FreeCAD -t 0
</pre>
<h3><span class="mw-headline" id="OpenSuse_11.1">OpenSuse 11.1</span></h3>
<pre># リポジトリの追加 (OpenCascade用)
sudo zypper -p <a rel="nofollow" class="external free" href="http://packman.unixheads.com/suse/11.1/">http://packman.unixheads.com/suse/11.1/</a>
</pre>
<pre># 開発に必要なパッケージのインストール
sudo zypper install gcc cmake subversion OpenCASCADE-devel \
libXerces-c-devel python-devel libqt4-devel python-qt4 \
Coin-devel SoQt-devel boost-devel libode-devel libQtWebKit-devel \
libeigen2-devel
</pre>
<pre># sourceの取得
git clone <a rel="nofollow" class="external free" href="git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad">git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad</a> freecad
</pre>
<pre># sourceディレクトリに移動
cd freecad
</pre>
<pre># 設定のビルド
cmake .
</pre>
<pre># FreeCADのビルド
nice make
</pre>
<pre># FreeCADのテスト
cd bin
./FreeCAD -t 0
</pre>
<h3><span class="mw-headline" id="Debian_Squeeze">Debian Squeeze</span></h3>
<pre># 必要なツールとライブラリの取得
sudo apt-get install build-essential python libcoin60-dev libsoqt4-dev \
libxerces-c2-dev libboost-dev libboost-date-time-dev libboost-filesystem-dev \
libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev \
libboost-serialization-dev libboost-signals-dev libboost-regex-dev \
libqt4-dev qt4-dev-tools python2.5-dev \
libsimage-dev libopencascade-dev \
libsoqt4-dev libode-dev subversion cmake libeigen2-dev python-pivy \
libtool autotools-dev automake gfortran
</pre>
<pre># 最新sourceのcheckout
git clone <a rel="nofollow" class="external free" href="git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad">git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad</a> freecad
</pre>
<pre># sourceディレクトリに移動
cd freecad
</pre>
<pre># 設定のビルド
cmake .
</pre>
<pre># FreeCADのビルド
make
</pre>
<pre># FreeCADのテスト
cd bin
./FreeCAD -t 0
</pre>
<h2><span class="mw-headline" id=".E3.82.BD.E3.83.BC.E3.82.B9.E3.82.B3.E3.83.BC.E3.83.89.E3.81.AE.E3.82.A2.E3.83.83.E3.83.97.E3.83.87.E3.83.BC.E3.83.88">ソースコードのアップデート</span></h2>
<p>FreeCADの開発は毎日行われ、バグフィックスや新機能が追加されています。cmakeシステムが賢くソースコードのアップデートして、変更部分のみをコンパイルすることができるため、以後のコンパイルがとても高速です。gitやsubversionのソースコードのアップデートはとても簡単です。
</p>
<pre>cd freecad (もしくはソースコードを最初にクローンした場所)
git pull (gitを使っている場合)
</pre>
<p>適切なビルド用ディレクトリに移動し、cmakeを再度実行します(FreeCADに関しては、cmakeは、ヘルプメニューのバージョンナンバーのデータをアップデートをするので、。しかしながら、cmake実行後はソースコードへのパスを設定する必要はなく、空白(スペース)と.(ドット)だけで良いです。
</p>
<pre>cd ../freecad-build (もしくはビルドディレクトリが置かれている場所)
</pre>
<pre>cmake .
</pre>
<pre>make
</pre>
<p><br />
</p>
<p>Mac OS X は BSD(UNIX)ベースなので、Mac上でのFreeCADのコンパイルは<a href="CompileOnUnix.html" title="CompileOnUnix">CompileOnUnix</a>と大きく違いませんが、すべての機能を適切に動かすには、Mac特有の重要な点がいくつかあります。
この説明内容は、Lion(10.7)でテストしていますが、(Snow) Leopardが動くIntel Macでも同様に"動くはず"です。
</p>
<h3><span class="mw-headline" id="FreeCAD_sources_.E3.81.AE.E3.83.80.E3.82.A6.E3.83.B3.E3.83.AD.E3.83.BC.E3.83.89">FreeCAD sources のダウンロード</span></h3>
<p>FreeCADのsourceの最新リビジョンをSourceforge subversion リポジトリからチェックアウトします。
</p>
<pre>svn co <a rel="nofollow" class="external free" href="http://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk">http://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk</a> free-cad
</pre>
<h3><span class="mw-headline" id=".E4.BE.9D.E5.AD.98.E3.83.91.E3.83.83.E3.82.B1.E3.83.BC.E3.82.B8.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">依存パッケージのインストール</span></h3>
<p>Mac OS X 10.7上では、以下の依存パッケージがバンドルされていないので、FreeCADのビルドの前にインストールする必要があります。
</p>
<ul><li>sip</li>
<li>fortran</li>
<li>xerces-c</li>
<li>boost</li>
<li>eigen</li>
<li>ftgl</li>
<li>coin3d</li>
<li>OpenCASCADE</li>
<li>Qt</li>
<li>pyqt</li>
<li>soqt</li></ul>
<p><br />
</p>
<h4><span class="mw-headline" id=".E9.81.B8.E6.8A.9E.E8.82.A2_1:_Homebrew">選択肢 1: Homebrew</span></h4>
<p>"注意"&#160;: このセクションは、現在修正中です!フォーラムで最新の投稿を確認してください。
</p>
<dl><dd><a rel="nofollow" class="external free" href="https://forum.freecadweb.org/viewtopic.php?f=4&amp;t=2064&amp;p=15405">https://forum.freecadweb.org/viewtopic.php?f=4&amp;t=2064&amp;p=15405</a></dd></dl>
<p>Homebrewパッケージマネージャをダウンロードし、インストールします。:
</p>
<dl><dd><a rel="nofollow" class="external free" href="http://mxcl.github.com/homebrew/">http://mxcl.github.com/homebrew/</a></dd></dl>
<p>FreeCADのほとんどの依存パッケージをコンパイルし、インストールします。:
</p>
<pre>brew install sip gfortran xerces-c boost eigen coin qt pyqt soqt ftgl
</pre>
<p><a href="/wiki/CompileOnMac/jp#OpenCASCADE.E3.81.AE.E6.A7.8B.E7.AF.89" title="CompileOnMac/jp">CompileOnMac/jp#OpenCASCADEの構築</a>を確認します。
</p>
<h4><span class="mw-headline" id=".E9.81.B8.E6.8A.9E.E8.82.A2_2:_MacPorts.2FFink">選択肢 2: MacPorts/Fink</span></h4>
<p><b>注意:このセクションは更新する必要があります。</b>
</p><p>(まだMacPortsをインストールしていない場合は) MacPortsをインストールします。
MacPortsは、1つのコマンドで一般的なオープンソースのアプリケーションをダウンロード、コンパイル、インストールできます。UNIX/Linuxの世界では、PKCSRCやAPTに似ているアプリケーションです。インストールするには、MacPortsサイトからディスクイメージをダウンロードして、指示に従ってください。:
</p>
<dl><dd><a rel="nofollow" class="external free" href="http://www.macports.org/install.php">http://www.macports.org/install.php</a></dd></dl>
<p>MacPortsをインストールした直後かどうかにかかわらず、MacPortsが最新かどうかを確認したくなるでしょう。以下を実行します。:
</p>
<pre>sudo port selfupdate
</pre>
<p>そうすると、MacPortsがインストールされ、最新版になり、FreeCADが必要とするパッケージのインストールをはじめることができます。:
</p>
<ul><li>xercesc</li>
<li>boost</li>
<li>py-sip</li>
<li>ftlg</li>
<li>f2c</li>
<li>eigen3</li>
<li>py-pyqt4</li></ul>
<p>以下のコマンドで、上記のライブラリをコンパイル/インストールできます。もしMacPortsがエラーを出力したら、それらを一つずつ試すことになるでしょう。
</p>
<pre>sudo port install xercesc boost ftgl f2c eigen3 py-sip py-pyqt4
</pre>
<p>py-sipやpy-pyqt4のようなpythonパッケージは各MacPortsのPythonのバージョンに対応したパッケージが1つずつあるため、複数のパッケージがあることに注意が必要です。
</p><p>boostは大きなパッケージです。また、py-pyqt4にはqt4-macが必要でこれも大きなパッケージです。
長いビルドの間に、何が起こっているかを確認するために、port -v instsall を実行したくなるでしょう。
</p><p>QT4はQtウェブサイトからMac用のバイナリインストーラも利用可能です。
この方法がFreeCADのコンパイルにどのようにうまくいくかは、よくわかりません。
</p><p><br />
<b>Fortran コンパイラのインストール</b>
</p><p>FOATRANコンパイラも必要です。Appleで分岐したOSX上のgccはFORTRANが付属していません。
</p><p>GFortranのコンパイラはここにあり、うまく動作するでしょう:
</p><p><a rel="nofollow" class="external free" href="http://gcc.gnu.org/wiki/GFortranBinaries#MacOS">http://gcc.gnu.org/wiki/GFortranBinaries#MacOS</a>
</p><p>もしfinkを使っているならば、他の方法としては、次のコマンドを利用することです。(Shaneyfelt 2100.Nov.14)
</p>
<pre> sudo fink selfupdate
sudo fink install gcc46
</pre>
<p><i>これは、appleのgccコンパイラコレクションと名前の衝突を避けるために、別のgccコンパイラコレクションをgcc-4という名前でインストールします。</i>
</p><p>MacPortsのgcc4xパッケージもFORTRANコンパイラを含んでいるので、これでも動作するはずです:
</p>
<pre>sudo port install gcc46
</pre>
<p><br />
他の候補となるMacPortsパッケージはg95です。これは有効なFORTRAN90コンパイラと思われ、FreeCADのcmakeコンフィグレーションテストを通るはずですが、実際の構築ではgcc固有のオプションを尋ねられると思われます。そのため、gcc4xを使うのが簡単です。
</p><p><b>Eigen3のインストール</b>
</p><p>最新版のeigen3ライブラリを以下からダウンロードし、解凍します:
</p><p><a rel="nofollow" class="external free" href="https://www.freecadweb.org/wiki/index.php?title=Main_Page">http://eigen.tuxfamily.org/index.php?title=Main_Page</a>
</p><p>これらはソルバー機能のために必要です。解凍すると、'Eigen'という名前のフォルダが以下に作成されます。
</p><p><b>/usr/local/include/eigen3/</b>
</p>
<h3><span class="mw-headline" id="OpenCASCADE.E3.81.AE.E6.A7.8B.E7.AF.89">OpenCASCADEの構築</span></h3>
<p>現在、OS X上でのOpenCASCADEの構築で最も簡単な方法は、コミュニティ版(oce)を使うことです。ソースコードをダウンロードするか、以下のGitレポジトリからチェックアウトしてください:
</p>
<dl><dd><a rel="nofollow" class="external free" href="https://github.com/tpaviot/oce">https://github.com/tpaviot/oce</a></dd></dl>
<p>それから、端末で以下を実行します:
</p>
<pre>mkdir build
cd build
cmake ..
cd ..
make
make install/strip
</pre>
<h3><span class="mw-headline" id="FreeCAD.app.E3.83.86.E3.83.B3.E3.83.97.E3.83.AC.E3.83.BC.E3.83.88.E3.81.AE.E3.83.80.E3.82.A6.E3.83.B3.E3.83.AD.E3.83.BC.E3.83.89.E3.81.A8.27.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB.27">FreeCAD.appテンプレートのダウンロードと'インストール'</span></h3>
<p>次のアーカイブはFreeCAD用のアプリケーションバンドルのテンプレートを含んでいます。これは必ずしも必要ではありませんが、デフォルトのインストール構成よりも便利にFreeCADを操作できます。バンドルの推奨インストール場所は/Applicationsフォルダですが、あなたはどこにでもそれを置くことができるはずです - FreeCADがさらに修正されずにコンパイルとインストールされた後では、バンドルが移動できないことを覚えておいてください。次のステップでコンフィグレーションを使用して、make installを実行すると、このバンドルにインストールされます。
</p>
<dl><dd><a rel="nofollow" class="external free" href="http://dl.getdropbox.com/u/103808/FreeCAD/FreeCAD_bundle_template_20091128.tar.gz">http://dl.getdropbox.com/u/103808/FreeCAD/FreeCAD_bundle_template_20091128.tar.gz</a></dd></dl>
<h3><span class="mw-headline" id=".E3.82.B3.E3.83.B3.E3.83.91.E3.82.A4.E3.83.AB_2">コンパイル</span></h3>
<p>FreeCADルートフォルダ内から、以下のコマンドでFreeCADのコンフィグレーション、コンパイル、インストールします。もし、FreeCAD.appバンドルを /Application以外のどこかに置く(もしくはバンドルを使わない)場合は、'PREFIX'引数を適宜変更してください。
</p>
<pre>./autogen.sh
PREFIX=/Applications/FreeCAD.app/Contents
</pre>
<p>If you installed dependencies using Option 1 (Homebrew):
選択肢1(Homebrew)を利用して依存関係パッケージをインストールした場合:
</p><p><i>注意</i>: このコンフィグレーションコマンドは検証しておらず、エラーを含んでいるかもしれません!
</p>
<pre>./configure --with-xercesc-lib=/usr/local/lib --with-xercesc-include=/usr/local/include \
--with-boost-lib=/usr/local/lib --with-boost-include=/usr/local/include \
--with-qt4-dir=/usr/local--with-qt4-lib=/usr/local/lib --with-qt4-include=/usr/local/include \
--with-qt4-framework=/usr/local/lib --with-qt4-bin=/usr/local/bin --with-occ-lib=/usr/local/lib \
--with-occ-include=/usr/local/include/oce --with-coin=/usr/local/lib --with-soqt=/usr/local/lib \
--prefix=/Applications/FreeCAD.app/Contents --bindir=/Applications/FreeCAD.app/Contents/MacOS \
--libdir=/Applications/FreeCAD.app/Contents/Frameworks/FreeCAD \
--includedir=/Applications/FreeCAD.app/Contents/Resources/include \
--datarootdir=/Applications/FreeCAD.app/Contents/Resources/share --enable-debug=no \
--with-python-include=/System/Library/Frameworks/Python.framework/Versions/2.5/Headers
</pre>
<p>もしくは、選択肢2(MacPorts/Fink)を利用して依存関係パッケージをインストールした場合:
</p>
<pre>./configure --with-xercesc-lib=/opt/local/lib --with-xercesc-include=/opt/local/include \
--with-boost-lib=/opt/local/lib --with-boost-include=/opt/local/include \
--with-qt4-dir=/usr/local/Trolltech/Qt-4.8.0 --with-qt4-lib=/usr/local/Trolltech/Qt-4.8.0/lib \
--with-qt4-include=/usr/local/Trolltech/Qt-4.8.0/include --with-qt4-framework=/Library/Frameworks \
--with-qt4-bin=/usr/local/Trolltech/Qt-4.8.0/bin --with-occ-lib=/usr/local/lib \
--with-occ-include=/usr/local/include/oce --with-coin=/Library/Frameworks \
--with-soqt=/Library/Frameworks --prefix=/Applications/FreeCAD.app/Contents \
--bindir=/Applications/FreeCAD.app/Contents/MacOS --libdir=/Applications/FreeCAD.app/Contents/Frameworks/FreeCAD \
--includedir=/Applications/FreeCAD.app/Contents/Resources/include \
--datarootdir=/Applications/FreeCAD.app/Contents/Resources/share --enable-debug=no \
--with-python-include=/System/Library/Frameworks/Python.framework/Versions/2.5/Headers
</pre>
<p>その後、以下を実行します:
</p>
<pre>make
make install
</pre>
<p>あなたのマシンの処理能力に応じて、makeのステップにはしばらく時間がかかります。
</p>
<h3><span class="mw-headline" id=".E5.AE.9F.E8.A1.8C">実行</span></h3>
<p>全てが上手く入ったら、.appバンドルをダブルクリックするとFreeCADが起動するはずです。もし何か問題が生じたら、以下に詳細を投稿してください
<a rel="nofollow" class="external text" href="http://forum.freecadweb.org/viewforum.php?f=4">help forum</a>.
</p>
<h3><span class="mw-headline" id="PyQt4">PyQt4</span></h3>
<p>一部のユーザは、FreeCADの起動時に "No Module named PyQt4" というメッセージに直面すると報告しています。以下はそれを修正する回避策です:
</p>
<pre>cd /Library/Python/2.6/site-packages
sudo ln -s /contrib/lib/python2.6/site-packages/PyQt4 .
sudo ln -s /contrib/lib/python2.6/site-packages/sip* .
cd /volatile/FreeCAD-r5443-ser/bin/pivy
cp _coin.dylib _coin.so
cd /volatile/FreeCAD-r5443-ser/lib
for i in *.dylib; do j=`basename $i .dylib`; cp $i $j.so; done
</pre>
<h3><span class="mw-headline" id="Pivy_2">Pivy</span></h3>
<p>FreeCADのコンポーネントの一部は、Pivyが無いと動きません。 部分的な構築の説明として、<a href="/wiki/Extra_python_modules#Pivy" title="Extra python modules">ここ</a>を見てください。
</p>
<p><br />
</p>
<h3><span class="mw-headline" id=".E6.A6.82.E8.A6.81">概要</span></h3>
<p>これらはFreeCADプロジェクト内で変更されていないライブラリです。それらは基本的にはダイナミックリンクライブラリ*.so または *.dllとしてそのまま使用されています。必要な変更またはラッパークラスが必要なときには、存在する場合、ラッパーのコードまたは変更したライブラリのコードはFreeCADの基本パッケージに移動する必要があります。
使用するライブラリは:
</p><p><a href="#LibPack">LibPack</a>を使用する代わりに、自分ですべてのものをダウンロードおよびインストールすることを検討してください。
</p>
<h3><span class="mw-headline" id=".E3.83.AA.E3.83.B3.E3.82.AF_2">リンク</span></h3>
<table class="wikitable" style="text-align:left">
<caption> リンク表
</caption>
<tr>
<th> ライブラリ名 </th>
<th> 必要なバージョン </th>
<th> 取得するためのリンク
</th></tr>
<tr>
<td> Python </td>
<td> &gt;= 2.5.x </td>
<td> <a rel="nofollow" class="external free" href="http://www.python.org/">http://www.python.org/</a>
</td></tr>
<tr>
<td> OpenCasCade </td>
<td> &gt;= 5.2 </td>
<td> <a rel="nofollow" class="external free" href="http://www.opencascade.org">http://www.opencascade.org</a>
</td></tr>
<tr>
<td> Qt </td>
<td> &gt;= 4.1.x </td>
<td> <a rel="nofollow" class="external free" href="http://www.qtsoftware.com">http://www.qtsoftware.com</a>
</td></tr>
<tr>
<td> Coin3D </td>
<td> &gt;= 2.x </td>
<td> <a rel="nofollow" class="external free" href="http://www.coin3d.org">http://www.coin3d.org</a>
</td></tr>
<tr>
<td> ODE </td>
<td> &gt;= 0.10.x </td>
<td> <a rel="nofollow" class="external free" href="http://www.ode.org">http://www.ode.org</a>
</td></tr>
<tr>
<td> SoQt </td>
<td> &gt;= 1.2 </td>
<td> <a rel="nofollow" class="external free" href="http://www.coin3d.org">http://www.coin3d.org</a>
</td></tr>
<tr>
<td> Xerces-C++ </td>
<td> &gt;= 2.7.x &lt; 3.0 </td>
<td> <a rel="nofollow" class="external free" href="http://xml.apache.org/xerces-c/">http://xml.apache.org/xerces-c/</a>
</td></tr>
<tr>
<td> GTS </td>
<td> &gt;= 0.7.x </td>
<td> <a rel="nofollow" class="external free" href="http://gts.sourceforge.net/">http://gts.sourceforge.net/</a>
</td></tr>
<tr>
<td> Zlib </td>
<td> &gt;= 1.x.x </td>
<td> <a rel="nofollow" class="external free" href="http://www.zlib.net/">http://www.zlib.net/</a>
</td></tr>
<tr>
<td> Boost </td>
<td> &gt;= 1.33.x </td>
<td> <a rel="nofollow" class="external free" href="http://www.boost.org/">http://www.boost.org/</a>
</td></tr>
<tr>
<td> Eigen3 </td>
<td> &gt;= 3.0.1 </td>
<td> <a rel="nofollow" class="external free" href="https://www.freecadweb.org/wiki/index.php?title=Main_Page">http://eigen.tuxfamily.org/index.php?title=Main_Page</a>
</td></tr></table>
<h3><span class="mw-headline" id=".E8.A9.B3.E7.B4.B0">詳細</span></h3>
<h4><span class="mw-headline" id="Python">Python</span></h4>
<p><b>バージョン:</b> 2.5 以上
</p><p><b>ライセンス:</b> Python 2.5 ライセンス
</p><p>Pythonについては、<a rel="nofollow" class="external free" href="http://www.python.org/">http://www.python.org/</a> のソースコードまたはバイナリを利用する、もしくはhttp://www.activestate.com/ のActiveState Pythonを利用することができますが、ActiveStateからデバッグライブラリを取得するのは少し難しいです。
</p>
<h5><span class="mw-headline" id=".E8.AA.AC.E6.98.8E">説明</span></h5>
<p>Pythonは、主要スクリプト言語であり、アプリケーション全体で使用されます。
例えば:
</p>
<ul><li> 以下のテスト用のテストスクリプトの実装:
<ul><li> メモリリーク</li>
<li> 変更後の機能の存在の確保</li>
<li> ビルドチェックの配置</li>
<li> 適用テスト</li></ul></li>
<li> マクロとマクロの記録</li>
<li> 標準パッケージのアプリケーションロジックの実装</li>
<li> ワークベンチ全体のの実装</li>
<li> パッケージの動的ロード</li>
<li> 設計ルールの実装(知識工学)</li>
<li> ワークグループやPDMのような見栄えの良いインターネットの要素</li>
<li> などなど ...</li></ul>
<p>特にPythonの動的なパッケージの読み込みは、実際の作業に必要なランタイムの追加機能をワークベンチにロードするために使用されます。なぜPythonなのかは、www.python.orgをよく見てください。いくつかの理由があります:これまで私は様々な以下に示すスクリプト言語を使用してきました。:
</p>
<ul><li> Perl</li>
<li> Tcl/Tk</li>
<li> VB</li>
<li> Java</li></ul>
<p>PythonはPerlやTclよりも◯◯で、コードはPerlやVBよりも煩雑ではありません。Javaはそもそもスクリプト言語ではありませんし、組み込むことが困難です(もしくはできません。Pythonは良くドキュメント化されており、組み込みや拡張が簡単です。Pythonはしっかりテストされており、オープンソースコミュニティの強力なサポートがあります。
</p>
<h5><span class="mw-headline" id=".E8.B3.9B.E8.BE.9E">賛辞</span></h5>
<p>Guido van Rossum氏と多くの人がPythonの成功をもたらしました!
</p>
<h4><span class="mw-headline" id="OpenCasCade">OpenCasCade</span></h4>
<p><b>バージョン:</b> 5.2 以上
</p><p><b>ライセンス:</b> OCTPL
</p><p>OCCは、フル機能を備えたCADカーネルです。もともと、それはフランスの Matia Datavision氏がStrimスタイラーとユークリッド量子アプリケーション用に開発し、後にオープンソース化されました。それは本当に巨大なライブラリで、オープンソースプロジェクトでは実装が困難、もしくは不可能と思われるいくつかのパッケージを提供されたことで、フリーのCADアプリケーションを可能にした初めてのライブラリです。:
</p>
<ul><li> 完全STEP準拠のジオメトリカーネル</li>
<li>トポロジデータモデルと、それらを操作ために必要なすべての機能(切り取り、結合、押し出し、などなど...</li>
<li> STEP、IGES、VRML等の標準インポート/エクスポートプロセッサ</li>
<li> 選択をサポートしている3Dと2Dのビューア</li>
<li> ドキュメントの外部リンクの保存と復元、設計履歴(パラメトリックモデリング)の再計算をサポートしたドキュメントやプロジェクトデータ構造と、拡張パッケージとして動的に新しいデータ型をロードする機能</li></ul>
<p>OpenCasCadeの詳細は、OpenCasCadeページまたはhttp://www.opencascade.orgを見てください。
</p>
<h4><span class="mw-headline" id="Qt">Qt</span></h4>
<p><b>バージョン:</b> 4.1.x 以上
</p><p><b>ライセンス:</b> GPL v2.0/v3.0 もしくは 商用 (バージョン 4.5からはLGPL v2.1)
</p><p>Qtのについて多くのことを伝える必要がないと思います。それは、オープンソースプロジェクトの中で最も頻繁に使用されるGUIツールキットの一つです。Qtを使用する最も重要な理由は、Qt Designerと全体のダイアログボックスをXMLリソースとしてロードし、特殊なウィジェットを組み込む実現性です。CAXのアプリケーションでは、ユーザーとの対話やダイアログボックスがコードの大部分を占めていて、新しい機能を持つFreeCADを簡単に拡張するために、優れたダイアログデザイナーがとても重要です。さらに詳しい情報や、とても良いオンラインドキュメントは、<a rel="nofollow" class="external free" href="http://www.qtsoftware.comで見つけることができます。">http://www.qtsoftware.comで見つけることができます。</a>
</p>
<h4><span class="mw-headline" id="Coin3D">Coin3D</span></h4>
<p><b>バージョン:</b> 2.0 以上
</p><p><b>ライセンス:</b> GPL v2.0 もしくは商用
</p><p>Coinは、C + +アプリケーションプログラミングインターフェースを備えた高レベル3Dグラフィックスライブラリです。Coinは、科学的·工学的な視覚化アプリケーションのほとんどすべての種類に適したリアルタイムグラフィックスをレンダリングするためにシーングラフデータ構造を使用しています。
</p><p>Coinは、さまざまなプラットフォーム任意のUNIX / Linux/ * BSDのプラットフォーム、すべてのMicrosoft Windowsオペレーティングシステム、およびMac OS Xに移植可能です
</p><p>Coinは業界標準の瞬時レンダリングライブラリOpenGL上に構築されており、高い水準のプリミティブの抽象化が追加されており、3Dインタラクティビティを提供し、プログラマの利便性と生産性を向上し、アプリケーションプログラマに対して手間がかかっている多くの高速描画用の最適化機能をわかりやすく提供しています。
</p><p>CoinはSGI Open InventorのAPIに基づいています。それに精通していない人にとって、Open Inventorは科学的·工学的コミュニティにおける3Dビジュアライゼーションとビジュアルシミュレーションソフトウェアのデファクトスタンダードのグラフィックスライブラリになって久しいです。Coinは世界中の大規模なエンジニアリングアプリケーションの数千の主要なビルディングブロックとして貢献していることから、その成熟度は10年以上の期間にわたって価値が証明されました。
</p><p>OpenCasCadeビューワAISおよびGraphics3Dは、大規模なエンジニアリングレンダリングに大きな限界と性能のボトルネックがあるので、我々はFreeCADでは3DビューワとしてOpenInventorを使用します。テクスチャやボリュームレンダリングなどは、まだサポートされていません。
</p><p>バージョン2.0のCoinは、異なるライセンスモデルを採用しているため。それはもはやLGPLではありません。彼らはオープンソースに対してGPLを、クローズドソースに対して商用ライセンスを使用しています。このことは、あなたがFreeCADに基づいた製品拡張モジュールを販売する場合は、Coinのライセンスを購入する必要があるということです
</p>
<h4><span class="mw-headline" id="ODE_.28Open_dynamic_engine.29">ODE (Open dynamic engine)</span></h4>
<p><b>バージョン:</b> 0.10.0 or higher
</p><p><b>ライセンス:</b> LGPL v2.1以降 または BSD
</p><p>ODEは剛体力学をシミュレートするためのオープンソースの高性能なライブラリです。ODEは十分な機能があり、安定で成熟しており、プラットフォーム非依存で、C/C++ APIを簡単に使えます。ODEは先進的なジョイント型と統合した摩擦を含む衝突検出があります。 ODEは車両や仮想現実環境内のオブジェクト、仮想生物のシミュレートに有用です。それは現在、多くのコンピュータゲーム、3Dオーサリングツールとシミュレーションツールで使用されています。
</p>
<h5><span class="mw-headline" id=".E8.AC.9D.E8.BE.9E">謝辞</span></h5>
<p>ラッセル·スミス氏は、ODEの主著者です。
</p>
<h4><span class="mw-headline" id="SoQt_2">SoQt</span></h4>
<p><b>バージョン:</b> 1.2.0 以上
</p><p><b>ライセンス:</b> GPL v2.0 または 商用
</p><p>SoQtはQt GUIツールキットを繋ぐ発明です。残念ながら、それはLGPLではないので、私たちはFreeCADの基本コードから取り外し、ライブラリとしてリンクする必要があります。それはCoinのような同様のライセンスモデルを採用しています。そして、あなたは、Qtのバージョンを使用してコンパイルする必要があります。
</p>
<h4><span class="mw-headline" id="Xerces-C.2B.2B">Xerces-C++</span></h4>
<p><b>バージョン:</b> 2.7.0 以上
</p><p><b>ライセンス</b> Apache Software License Version 2.0
</p><p>Xerces-C++は、C++の移植可能なサブセットとして書かれた検証用XMLパーサです。Xerces-C++を使うと、あなたのアプリケーションにXMLの読み書き機能を追加することが簡単になります。共有ライブラリは、XML文書を解析、生成、操作、検証するために提供されています。
</p><p>Xerces-C++はXML 1.0の提案と、多くの関連規格(以下を参照)に忠実です。
</p><p>パーサは高性能、モジュール性、スケーラビリティを提供します。ソースコード、サンプル、APIドキュメントは、パーサとともに提供されます。移植性のために、テンプレートの利用の最小化、RTTIの不使用、#ifdefsの利用を最小化するように配慮されています。
</p><p>パーサはFreeCADの中のパラメータを保存および復元するために使用されます。
</p>
<h4><span class="mw-headline" id="GTS">GTS</span></h4>
<p><b>バージョン:</b> 0.7.x
</p><p><b>ライセンス:</b> LGPL v2.0 以降
</p><p>GTSは、GNU Triangulated Surface Libraryの略です。これは、三角形の結合で構成される次元の面を取り扱うために便利な機能のセットを提供することを目的としたオープンソースフリーソフトウェアライブラリです。ソースコードはフリーソフトウェアLGPLライセンスの下で無料で利用可能です。
</p><p>実際のところ、FreeCADのをコンパイルするのに必要ではありません。あなたはFCConfig.hの中でproprocessorスイッチで使用するかどうかの切り替えができます。
</p>
<h4><span class="mw-headline" id="Zlib">Zlib</span></h4>
<p><b>バージョン:</b> 1.x.x
</p><p><b>ライセンス:</b> zlib License
zlibは自由で、汎用で、合法的に邪魔されない--これは、どの特許も侵害していない-- 実質的にどんなハードウェアやOSでも利用できるロスレスのデータ圧縮ライブラリです。
zlibのデータフォーマットはプラットフォーム間で互換性があります。 Unixのcompress(1)やGIFイメージフォーマット等のLZW圧縮法とは異なり、zlibで使用されている圧縮方法は、基本的にデータを膨らますことはありません。(LZWはひどい場合は倍や倍のファイルサイズになります。zlibのメモリ使用量は、入力データとは独立しており、圧縮時に必要に応じて減らすことができます。
</p>
<h4><span class="mw-headline" id="Boost">Boost</span></h4>
<p><b>バージョン:</b> 1.33.x
</p><p><b>ライセンス:</b> Boost Software License - Version 1.0
</p><p>Boost C++ライブラリは、同業者の評論の対象になるような、C++の機能を拡張したオープンソースのライブラリの機能の集まりです。ライブラリは、Boostがオープンとクローズ両方のソースのプロジェクトで使用できるように、Boost Software Licenseの下でライセンスされています。Boostの創設者の多くは、C + +の標準化委員会の上にいて、いくつかのBoostライブラリは、C++0xの技術研究報告1に組み込むために受理されています。
</p><p>ライブラリは、C++ユーザとアプリケーションドメインの広い範囲を対象としています。それらはSmartPtrような汎用ライブラリから、ファイルシステムのようなOSの抽象化、主に、MPLのような他のライブラリの開発と高度なC++ユーザーを目的としたライブラリを範囲としています。
</p><p>効率性と柔軟性を確保するために、Boostはテンプレートを多用します。 BoostはC++言語でのジェネリックプログラミングやメタプログラミングに広範な仕事や研究の源となっています。
</p><p><a rel="nofollow" class="external free" href="http://www.boost.org/">http://www.boost.org/</a> for details. を見てください。
</p>
<h3><span class="mw-headline" id="LibPack">LibPack</span></h3>
<p>LibPackは上記のすべてのライブラリを一緒に梱包した便利なパッケージです。現在、Windowsプラットフォームでは<a href="Download.html" title="Download">ダウンロード</a>ページから利用可能ですあなたがLinuxで作業していれば、LibPackを必要としません。代わりにお使いのLinuxディストリビューションのパッケージリポジトリを利用するべきです。
</p>
<h4><span class="mw-headline" id="FreeCADLibs7.x_Changelog">FreeCADLibs7.x Changelog</span></h4>
<ul><li> QT 4.5.x と Coin 3.1.x を使用</li>
<li> Robot追加のためのEigenテンプレート</li>
<li> 実験的なSMESH</li></ul>
<p><br />
</p>
<p><br />
</p>
<h2><span class="mw-headline" id=".E3.83.88.E3.83.83.E3.83.97.E3.83.9A.E3.83.BC.E3.82.B8">トップページ</span></h2>
<p>すべての厳格なソフトウェア開発のためには、ツールが必要です。以下は、FreeCADの開発に使用するツールのリストです。
</p>
<h3><span class="mw-headline" id=".E3.83.97.E3.83.A9.E3.83.83.E3.83.88.E3.83.95.E3.82.A9.E3.83.BC.E3.83.A0.E9.9D.9E.E4.BE.9D.E5.AD.98.E3.81.AE.E3.83.84.E3.83.BC.E3.83.AB">プラットフォーム非依存のツール</span></h3>
<h4><span class="mw-headline" id="Qt-Toolkit">Qt-Toolkit</span></h4>
<p>Qtツールキットは、芸術、プラットフォーム非依存のユーザーインターフェイスデザインツールです。それは<a href="Third_Party_Libraries.html" title="Third Party Libraries">LibPack</a>のFreeCADの中に含まれていますが、<a rel="nofollow" class="external text" href="http://www.trolltech.com">www.trolltech.com</a>でもダウンロードすることができます。
</p>
<h4><span class="mw-headline" id="InkScape">InkScape</span></h4>
<p>偉大なベクトル描画のプログラムです。 SVG標準のAdhersは、アイコンと画像を描画するために使用されています。 <a rel="nofollow" class="external text" href="http://www.inkscape.org">www.inkscape.org</a>でそれを入手してください。
</p>
<h4><span class="mw-headline" id="Doxygen_2">Doxygen</span></h4>
<p>cppファイルと.hからソースドキュメントとを生成するために、非常に良好で、安定したツールです。
</p>
<h4><span class="mw-headline" id="The_Gimp">The Gimp</span></h4>
<p>GNU画像処理プログラムについて言うことはあまりありません。さらに、QTのプログラムでアイコンを取り扱うのに便利な.xpmファイルを扱うことができます。 基本的に、XPMはプログラムにコンパイルすることができるCのコードです。
</p><p>ここからGIMPを取得できます: <a rel="nofollow" class="external text" href="http://www.gimp.org/">www.gimp.org</a>
</p>
<h3><span class="mw-headline" id="Windows.E3.81.AE.E3.83.84.E3.83.BC.E3.83.AB">Windowsのツール</span></h3>
<h4><span class="mw-headline" id="Visual_Studio_8_Express">Visual Studio 8 Express</span></h4>
<p>VC8はVisualStudio6(IMOの大きなステップバック)から、一歩も前進していないC++開発環境ですが、Windows上で無料の開発ツールです。ネイティブのWin32アプリケーションのために、PlatformSDKをMSからダウンロードする必要があります。
</p><p>なので、エクスプレス版は、見つけるのは難しいです。しかし、<a rel="nofollow" class="external autonumber" href="http://msdn.microsoft.com/vstudio/express/visualc/default.aspxこのリンク">[1]</a>を試してみてください
</p>
<h4><span class="mw-headline" id="CamStudio">CamStudio</span></h4>
<p>CAMSourceはスクリーンキャストをWebキャストを記録するためのオープンソースのツールです。それらを記録することによって、チュートリアルを作成するその非常に優れたツールです。ドキュメントを書くことに退屈しません。
</p><p>詳細は[camstudio.org <a rel="nofollow" class="external free" href="http://camstudio.org/">http://camstudio.org/</a>]を見てください
</p>
<h4><span class="mw-headline" id="Tortoise_SVN">Tortoise SVN</span></h4>
<p>これは非常に優れたツールです。これはSubversionsf.net上の私たちのバージョン管理システムを使用して、本当に喜んでいます。あなたはエクスプローラの集積化を行うことができ、簡単にリビジョンを管理し、diffで確認し、衝突を解決して、ブランチを作るなど…ができます。コミットダイアログ自体が芸術作品です。それはあなたの変更されたファイルの概要を与え、あなたがコミットまたはしないでそれらを置くことができます。それは簡単に論理ユニットへの変更をバンドルし、それらに明確なコミットメッセージを与えることになります。
</p><p>あなたは<a rel="nofollow" class="external text" href="http://tortoisesvn.tigris.org/">tortoisesvn.tigris.org</a>でToroiseSVNを見つけることができます。
</p>
<h4><span class="mw-headline" id="StarUML">StarUML</span></h4>
<p>フル機能を備えたオープンソースUMLのプログラムです。それは C + +のソースコードのリバースエンジニアリングを含む大きな機能をたくさん持っています…
</p><p>Downloadはこちらから: <a rel="nofollow" class="external text" href="http://staruml.sourceforge.net/en/">staruml.sourceforge.net</a>
</p><p><br />
</p>
<h3><span class="mw-headline" id="Linux.E3.81.AE.E3.83.84.E3.83.BC.E3.83.AB">Linuxのツール</span></h3>
<p>TODO
</p>
<p><br />
</p>
<p>このページには、FreeCADの最も重要な設定機能を起動するためのさまざまな方法を示しています。
</p>
<h2><span class="mw-headline" id=".E3.82.B3.E3.83.9E.E3.83.B3.E3.83.89.E3.83.A9.E3.82.A4.E3.83.B3.E3.81.8B.E3.82.89FreeCAD.E3.82.92.E8.B5.B7.E5.8B.95">コマンドラインからFreeCADを起動</span></h2>
<p>FreeCADは、そのデスクトップアイコンをダブルクリックするか、スタートメニューから選ぶことで起動することができますが、コマンドラインから直接起動することもできます。そうすることで、デフォルトの起動オプションを変更することができます。
</p>
<h3><span class="mw-headline" id=".E3.82.B3.E3.83.9E.E3.83.B3.E3.83.89.E3.83.A9.E3.82.A4.E3.83.B3.E3.82.AA.E3.83.97.E3.82.B7.E3.83.A7.E3.83.B3">コマンドラインオプション</span></h3>
<p>コマンドラインオプションは、頻繁に変更の対象となっています。そのため、次のように入力して、現在のオプションを確認することをお勧めします:
</p>
<pre>FreeCAD --help
</pre>
<p>コマンドの出力から、使用可能なパラメータを確認できます:
</p>
<pre>使用方法:
FreeCAD [options] File1 File2 .....
Allowed options:
Generic options:
-v [ --version ] print version string
-h [ --help ] print help message
-c [ --console ] start in console mode
Configuration:
-l [ --write-log ] arg write a log file
-t [ --run-test ] arg test level
-M [ --module-path ] arg additional module paths
-P [ --python-path ] arg additional python paths
--response-file arg can be specified with '@name', too
</pre>
<h3><span class="mw-headline" id="response.E3.81.A8config.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB">responseとconfigファイル</span></h3>
<p>FreeCADは、configファイルからこれらのオプションのいくつかを読み込むことができます。このファイルには、binのパスに配置し、FreeCAD.cfgという名前を付ける必要があります。コマンドラインで指定したオプションは、設定ファイルの設定よりも優先されることに注意してください
</p><p>一部のオペレーティング·システムでは、コマンドラインの長さが非常に短いという制限があります。これらの制限を回避する一般的な方法は、応答ファイルを使用することです。応答ファイルには、単にコマンドラインと同じ構文を使用するconfigファイルです。コマンドラインで使用するresponseファイルの名前を指定した場合は、コマンドラインに加えて、このファイルがロードされ、解釈されます
</p>
<pre>FreeCAD @ResponseFile.txt
</pre>
<p>もしくは:
</p>
<pre>FreeCAD --response-file=ResponseFile.txt
</pre>
<h3><span class="mw-headline" id=".E9.9A.A0.E3.81.97.E3.82.AA.E3.83.97.E3.82.B7.E3.83.A7.E3.83.B3">隠しオプション</span></h3>
<p>ユーザには開示していないオプションがいくつかあります。これらのオプションは、例えばWindowsシステムで解釈されるX-Windowパラメータです。
</p>
<ul><li> -display display, Xディスプレイのセット (デフォルトは $DISPLAY).</li>
<li> -geometry geometry, 表示している最初のウィンドウのクライアントの形状 .</li>
<li> -fn または -font font, アプリケーションフォントの定義。それらのフォントはXlogical font descriptionを使って特定されます。</li>
<li> -bg または -background color, デフォルトのバックグラウンドの色と、アプリケーションパレット(光と影が計算される).</li>
<li> -fg または -foreground color, デフォルトのフォアグラウンドカラーの設定</li>
<li> -btn または -button color, デフォルトのボタン色の設定</li>
<li> -name name, アプリケーション名の設定</li>
<li> -title title, アプリケーションタイトルの設定</li>
<li> -visual TrueColor, 8-bitディスプレイでTrueColor画面をアプリケーションを強制的に使わせる。</li>
<li> -ncols count, アプリケーションはQApplication:: ManyColor色指定を使用している場合は、8ビットのディスプレイ上の色のキューブに割り当てられた色の数を制限します。カウントが216である場合、6x6x6カラーキューブつまり6つの赤、緑、青のレベルに使用され、その他の値については、2x3x1キューブにほぼ比例したキューブが使用されます。</li>
<li> -cmap, 8ビットディスプレイ上のプライベートカラーマップをアプリケーションにインストールして適用する。</li></ul>
<p><br />
</p>
<h2><span class="mw-headline" id=".E3.83.A6.E3.83.BC.E3.82.B6.E3.83.BC.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.82.92.E6.8C.81.E3.81.9F.E3.81.AA.E3.81.84FreeCAD.E3.82.92.E7.A8.BC.E5.83.8D">ユーザーインターフェイスを持たないFreeCADを稼働</span></h2>
<p>FreeCADは通常、GUIモードで起動しますが、コマンドラインから
</p><p>FreeCAD -c
</p><p>を入力して、コンソールモードで起動することもできます。コンソールモードでは、ユーザーインターフェイスが表示されません、そして、Pythonインタプリタのプロンプトが表示されます。そのpythonのプロンプトから、FreeCADGuiモジュールを除くFreeCADのすべてのモジュールやプラグインにアクセスでき、FreeCAD内部で実行されるPythonインタプリタと同様の機能を使用できます。 FreeCADGuiに依存するモジュールについても使用できない場合がありますので注意してください。
</p><p><br />
</p>
<h2><span class="mw-headline" id="Python.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB.E3.81.A8.E3.81.97.E3.81.A6FreeCAD.E3.82.92.E5.AE.9F.E8.A1.8C">PythonモジュールとしてFreeCADを実行</span></h2>
<p>FreeCADはPythonを使う他のアプリケーションの内部、または、外部のPython shellから、Pythonモジュールとして利用することができます。このため、主となるPythonアプリケーションにFreeCADのLIBSがある場所を知らせる必要があります。その最善の方法は、一時的にsys.path変数にFreeCADのlibパスを追加することです。以下に示すコードを任意のpythonシェルで入力すると、FreeCADをインポートし、FreeCADをコンソールモードと同じ方法で実行できるようになります。
</p><p><code>
import sys
sys.path.append("path/to/FreeCAD/lib") # FreeCADのlibパスにしたがって変更してください
import FreeCAD
</code>
</p><p>一度FreeCADをロードすれば、あなたが想像できるいかなる方法を用いて、ホストアプリケーションと情報をやり取りできるようにするのは、あなた次第です
</p>
<h2><span class="mw-headline" id=".E8.A8.AD.E5.AE.9A.E3.81.AE.E3.82.BB.E3.83.83.E3.83.88">設定のセット</span></h2>
<p>毎回のFreeCADの立ち上げ時に、その環境とコマンドラインパラメータを調べます。これは、実行時の情報の本質を保持している<i> '構成設定'</i>を構築します。この情報は、後でユーザーデータファイルまたはログファイルを保存する場所を決定するために使用されます。それは、異常終了を分析するためにもとても重要です。そのため、それはログファイルに保存されます。
</p>
<h3><span class="mw-headline" id=".E3.83.A6.E3.83.BC.E3.82.B6.E9.96.A2.E9.80.A3.E6.83.85.E5.A0.B1">ユーザ関連情報</span></h3>
<table border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;">
<caption> User config entries
</caption>
<tr>
<th> 設定変数名 </th>
<th> 概要 </th>
<th> MSでの例 </th>
<th> Posix (Linux)での例
</th></tr>
<tr>
<td> UserAppData </td>
<td> ユーザに紐付いたアプリケーションデータを保存するパス </td>
<td> C:\Documents and Settings\username\Application Data\FreeCAD </td>
<td>/home/username/.FreeCAD
</td></tr>
<tr>
<td> UserParameter </td>
<td> ユーザに紐付いたアプリケーションデータを保存するファイル </td>
<td> C:\Documents and Settings\username\Application Data\FreeCAD\user.cfg </td>
<td>/home/username/.FreeCAD/user.cfg
</td></tr>
<tr>
<td> SystemParameter </td>
<td> アプリケーションに紐付いたデータを保存するファイル </td>
<td> C:\Documents and Settings\username\Application Data\FreeCAD\system.cfg </td>
<td>/home/username/.FreeCAD/system.cfg
</td></tr>
<tr>
<td> UserHomePath </td>
<td> カレントユーザのホームディレクトリのパス </td>
<td> C:\Documents and Settings\username\My Documents </td>
<td>/home/username
</td></tr></table>
<h3><span class="mw-headline" id=".E3.82.B3.E3.83.9E.E3.83.B3.E3.83.89.E3.83.A9.E3.82.A4.E3.83.B3.E5.BC.95.E6.95.B0">コマンドライン引数</span></h3>
<table border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;">
<caption> User config entries
</caption>
<tr>
<th> 設定変数名 </th>
<th> 概要 </th>
<th>
</th></tr>
<tr>
<td> LoggingFile </td>
<td> ログを出力する場合は 1 </td>
<td> 1
</td></tr>
<tr>
<td> LoggingFileName </td>
<td> ログ出力するファイル名 </td>
<td> C:\Documents and Settings\username\Application Data\FreeCAD\FreeCAD.log
</td></tr>
<tr>
<td> RunMode </td>
<td> これはメインループがどのように機能するかを示します。 <i> '"Script"'</i>指定されたスクリプトが呼び出された後、終了されることを意味します。 <i> '"CMD"<b>は、コマンドラインインタプリタを実行します。 </b></i><b> '"Interenal"</b>は、内部のスクリプトを実行します。 <i> '"GUI"<b>は、GUIイベントループに入ります。 </b></i><b> '"Module"</b>は、Pythonモジュールをロードします。 </td>
<td> "Cmd"
</td></tr>
<tr>
<td> FileName </td>
<td> 内容は実行モードに依存します </td>
<td>
</td></tr>
<tr>
<td> ScriptFileName </td>
<td> 内容は実行モードに依存します。 </td>
<td>
</td></tr>
<tr>
<td> Verbose </td>
<td> FreeCADの冗長レベル </td>
<td> "" or "strict"
</td></tr>
<tr>
<td> OpenFileCount </td>
<td>コマンドライン引数として開くことができるファイル数 </td>
<td> "12"
</td></tr>
<tr>
<td> AdditionalModulePaths</td>
<td>CMDラインで指定された追加モジュールのパス </td>
<td> "extraModules/"
</td></tr></table>
<h3><span class="mw-headline" id=".E3.82.B7.E3.82.B9.E3.83.86.E3.83.A0.E9.96.A2.E9.80.A3">システム関連</span></h3>
<table border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;">
<caption> User config entries
</caption>
<tr>
<th> 設定変数名 </th>
<th> 概要 </th>
<th> MSでの例 </th>
<th> Posix (Linux)での例
</th></tr>
<tr>
<td> AppHomePath </td>
<td> FreeCADがインストールされているディレクトリ </td>
<td> c:/Progam Files/FreeCAD_0.7</td>
<td> /user/local/FreeCAD_0.7
</td></tr>
<tr>
<td> PythonSearchPath </td>
<td> 検索モジュールのPythonパスのリストを保持しています。これは、起動時にある、実行中に変更することができます </td>
<td> </td>
<td>
</td></tr></table>
<p>いくつかのライブラリは、システム環境変数を呼び出す必要があります。時々、FreeCADのインストールに問題があることがありますが、いくつかの環境変数が存在しないか、または誤って設定されていることが原因です。そのため、いくつかの重要な変数は、Configに複製され、ログファイルに保存されます。
</p><p><b>Python に関連した環境変数:</b>
</p>
<ul><li> PYTHONPATH</li>
<li> PYTHONHOME</li>
<li> TCL_LIBRARY</li>
<li> TCLLIBPATH</li></ul>
<p><b>OpenCascade に関連した環境変数:</b>
</p>
<ul><li> CSF_MDTVFontDirectory</li>
<li> CSF_MDTVTexturesDirectory</li>
<li> CSF_UnitsDefinition</li>
<li> CSF_UnitsLexicon</li>
<li> CSF_StandardDefaults</li>
<li> CSF_PluginDefaults</li>
<li> CSF_LANGUAGE</li>
<li> CSF_SHMessage</li>
<li> CSF_XCAFDefaults</li>
<li> CSF_GraphicShr</li>
<li> CSF_IGESDefaults</li>
<li> CSF_STEPDefaults</li></ul>
<p><b>システムに関連した環境変数:</b>
</p>
<ul><li> PATH</li></ul>
<h3><span class="mw-headline" id=".E3.83.93.E3.83.AB.E3.83.89.E3.81.AB.E9.96.A2.E9.80.A3.E3.81.97.E3.81.9F.E6.83.85.E5.A0.B1">ビルドに関連した情報</span></h3>
<p>下記の表は、ビルドバージョンに関する利用可能な情報を示しています。それのほとんどは、Subversionリポジトリからのものです。以下のものは、正確にバージョンを再構築するために必要です
</p>
<table border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;">
<caption> User config entries
</caption>
<tr>
<th> 環境変数名 </th>
<th> 概要 </th>
<th>
</th></tr>
<tr>
<td> BuildVersionMajor </td>
<td> ビルドのメジャーバージョン番号。src/Build/Version.h 内で定義されています。 </td>
<td> 0
</td></tr>
<tr>
<td> BuildVersionMinor </td>
<td> ビルドのマイナーバージョン番号。src/Build/Version.h 内で定義されています。 </td>
<td> 7
</td></tr>
<tr>
<td> BuildRevision </td>
<td> ビルド時のSVNリポジトリのソースリビジョン番号。SVNが作成します </td>
<td> 356
</td></tr>
<tr>
<td> BuildRevisionRange </td>
<td> 変更の範囲 </td>
<td> 123-356
</td></tr>
<tr>
<td> BuildRepositoryURL </td>
<td> リポジトリのURL </td>
<td> <a rel="nofollow" class="external free" href="https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk/src">https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk/src</a>
</td></tr>
<tr>
<td> BuildRevisionDate </td>
<td> 上記リビジョンの日付 </td>
<td> 2007/02/03 22:21:18
</td></tr>
<tr>
<td> BuildScrClean </td>
<td> チェックアウト時からソースが変更されていることを意味しています </td>
<td>Src modified
</td></tr>
<tr>
<td> BuildScrMixed </td>
<td> </td>
<td> Src not mixed
</td></tr></table>
<h3><span class="mw-headline" id=".E3.83.96.E3.83.A9.E3.83.B3.E3.83.89.E9.96.A2.E9.80.A3">ブランド関連</span></h3>
<p>これらの構成エントリはFreeCADのブランディング機構に関連しています。詳細は<a href="https://www.freecadweb.org/wiki/index.php?title=Branding/jp" title="Branding/jp">ブランディング</a>を参照してください。
</p>
<table border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;">
<caption> User config entries
</caption>
<tr>
<th> 設定変数名 </th>
<th> 概要 </th>
<th>
</th></tr>
<tr>
<td> ExeName </td>
<td> ビルドの実行可能ファイルの名前。 FreeCADの異なるmain.cppのが使用されている場合、利用することができます。 </td>
<td> FreeCAD.exe
</td></tr>
<tr>
<td> ExeVersion </td>
<td> スタートアップ時に全てのバージョンを見せる </td>
<td> V0.7
</td></tr>
<tr>
<td> AppIcon </td>
<td> アプリケーションにMainWindowで示している実行に使用されるアイコン </td>
<td> "FCIcon"
</td></tr>
<tr>
<td> ConsoleBanner </td>
<td> コンソールモードでプロンプトが表示するバナー </td>
<td>
</td></tr>
<tr>
<td> SplashPicture </td>
<td> スプラッシュスクリーンに使用されるアイコンの名前 </td>
<td> "FreeCADSplasher"
</td></tr>
<tr>
<td> SplashAlignment </td>
<td> スプラッシュウィンドウのテキスト配置 </td>
<td>Left"
</td></tr>
<tr>
<td> SplashTextColor </td>
<td> スプラッシャーのテキストの色 </td>
<td> "#000000"
</td></tr>
<tr>
<td> StartWorkbench </td>
<td> スタートアップ後に自動的に実行するワークベンチの名前 </td>
<td> "Part design"
</td></tr>
<tr>
<td> HiddenDockWindow </td>
<td> そのうち無効になる(セミコロンで区切られた)ドックウィンドウのリスト </td>
<td> "Property editor"
</td></tr></table>
<p><br />
</p>
<p><b>FreeCAD build tool</b> または <b>fcbt</b> は、以下の場所にあるpythonスクリプトです。
</p>
<pre>trunc/src/Tools/fcbt.py
</pre>
<p>このスクリプトは、FreeCADのビルド時、配布時、拡張時の煩雑なタスクを単純化するのに使われます。
</p>
<h2><span class="mw-headline" id=".E4.BD.BF.E7.94.A8.E6.96.B9.E6.B3.95_2">使用方法</span></h2>
<p><a href="http://en.wikipedia.org/wiki/Python_(programming_language)" class="extiw" title="wikipedia:Python (programming language)">Python</a>を正常にインストールすると、"fcbt"を以下のコマンドで呼び出すことができます。
</p>
<pre>python fbct.py
</pre>
<p>あなたが使いたいタスクのメニューを表示します。:
</p>
<pre>FreeCAD Build Tool
Usage:
fcbt &lt;command name&gt; [command parameter]
possible commands are:
- DistSrc (DS) Build a source Distr. of the current source tree
- DistBin (DB) Build a binary Distr. of the current source tree
- DistSetup (DI) Build a Setup Distr. of the current source tree
- DistSetup (DUI) Build a User Setup Distr. of the current source tree
- DistAll (DA) Run all three above modules
- NextBuildNumber (NBN) Increase the Build Number of this Version
- CreateModule (CM) Insert a new FreeCAD Module in the module directory
For help on the modules type:
fcbt &lt;command name&gt;&#160;?
</pre>
<p>プロンプト入力時に、呼び出すコマンドの省略形を入力します。例えば、 <a href="Module_Creation.html" title="Module Creation">モジュール作成</a>は、"CM"を入力します。
</p>
<h3><span class="mw-headline" id="DistSrc">DistSrc</span></h3>
<p>"DS"コマンドは、現在のソースツリーの <b>ソース配布パッケージを作成します</b>
</p>
<h3><span class="mw-headline" id="DistBin">DistBin</span></h3>
<p>"DB"コマンドは、 現在のソースツリーの <b>バイナリ配布パッケージを作成します</b>
</p>
<h3><span class="mw-headline" id="DistSetup">DistSetup</span></h3>
<p>"DI"コマンドは、 現在のソースツリーの <b>セットアップ配布パッケージを作成します</b>
</p>
<h3><span class="mw-headline" id="DistSetup_2">DistSetup</span></h3>
<p>"DUI"コマンドは、 現在のソースツリーの <b>ユーザセットアップ配布パッケージを作成します</b>
</p>
<h3><span class="mw-headline" id="DistAll">DistAll</span></h3>
<p>"DA"コマンドは、 "DS", "DB" と "DI" を順番に実行します。
</p>
<h3><span class="mw-headline" id="NextBuildNumber">NextBuildNumber</span></h3>
<p>"NBN" コマンドは、 新しいバージョンのFreeCADを作成するために、 <b>ビルドナンバーを増やします</b>
</p>
<h3><span class="mw-headline" id="CreateModule">CreateModule</span></h3>
<p>"CM"コマンドは <a href="Module_Creation.html" title="Module Creation">新しいアプリケーションモジュールを作成します</a>
</p>
<p><br />
</p>
<p>FreeCADでの新しいモジュールとワークベンチの追加はとても簡単です。ここで言うモジュールとはFreeCADの任意の拡張機能のことで、ワークベンチとはいくつかのツールバーとメニューをまとめた特別なGUI設定のことです。通常は独自のワークベンチを備えた新しいモジュールを作ります。
</p><p>モジュールはC++またはPythonまたはそれらを混ぜたものでプログラムされます。ただしモジュールの初期化ファイルは必ずPythonでなければなりません。初期化ファイルでの新しいモジュールの設定は簡単で、手作業でも行えますしFreeCADのビルドツールでも行えます。
</p>
<h2><span class="mw-headline" id="FreeCAD.E3.83.93.E3.83.AB.E3.83.89.E3.83.84.E3.83.BC.E3.83.AB">FreeCADビルドツール</span></h2>
<p>FreeCADでの<b>新しいアプリケーションモジュールの作成</b>は非常に単純です。FreeCADの開発ツリーの中には<i><a href="https://www.freecadweb.org/wiki/index.php?title=FreeCAD_Build_Tool/jp" title="FreeCAD Build Tool/jp">FreeCADビルドツール</a></i> (fcbt)が存在し、これがあなたにとって最も重要なものになります。
</p>
<pre>trunk/src/Tools/fcbt.py
</pre>
<p>の下にある<a href="http://en.wikipedia.org/wiki/Python_(programming_language)" class="extiw" title="wikipedia:Python (programming language)">Python</a>スクリプトがそれです。Pythonインタプリタが正しくインストールされていればこのスクリプトを次のコマンドラインで実行できます。
</p>
<pre>python fcbt.py
</pre>
<p>すると次の様なメニューが表示されます:
</p>
<pre>FreeCAD Build Tool
Usage:
fcbt &lt;command name&gt; [command parameter]
possible commands are:
- DistSrc (DS) Build a source Distr. of the current source tree
- DistBin (DB) Build a binary Distr. of the current source tree
- DistSetup (DI) Build a Setup Distr. of the current source tree
- DistSetup (DUI) Build a User Setup Distr. of the current source tree
- DistAll (DA) Run all three above modules
- BuildDoc (BD) Create the documentation (source docs)
- NextBuildNumber (NBN) Increase the Build Number of this Version
- CreateModule (CM) Insert a new FreeCAD Module in the module directory
For help on the modules type:
fcbt &lt;command name&gt;&#160;?
</pre>
<p>コマンドプロンプトに<i>CM</i>と入力するとモジュールの作成が開始します:
</p>
<pre>Insert command: <i>CM</i>
</pre>
<p>次にあなたの新しいモジュールの名前を指定するように促されます:
</p>
<pre>Please enter a name for your application: <i>TestMod</i>
</pre>
<p><i>エンター</i>を押すとfcbtはあなたのモジュールが必要とする全てのファイルを次の新しいフォルダにコピーします
</p>
<pre>trunk/src/Mod/TestMod/
</pre>
<p>次にファイル全てに対してあなたの新しいモジュールの名前での変更が行われます。それが終われば後はあなたのワークスペースWindowsまたはmakefileのターゲットUNIXに"appTestMod"と"appTestModGui"の二つの新しいプロジェクトを追加するだけです。これで終わりです!
</p>
<h2><span class="mw-headline" id=".E6.96.B0.E3.81.97.E3.81.84.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB.E3.82.92.E6.89.8B.E4.BD.9C.E6.A5.AD.E3.81.A7.E8.A8.AD.E5.AE.9A.E3.81.99.E3.82.8B">新しいモジュールを手作業で設定する</span></h2>
<p>新しいモジュールを作るためには二つの作業が必要です:
</p>
<ul><li> FreeCADのModフォルダインストールパス/FreeCAD/Modまたはユーザーパス/.FreeCAD/Modのどちらかに新しい<b>フォルダ</b>を作成。名前は好きなものを使用できます。</li>
<li> そのフォルダの中に<b>InitGui.py</b>ファイルを置きます。このファイルはFreeCAD起動時に自動で実行されます例えば中にprint("hello world")と書いてみてください)。</li></ul>
<p>さらに<b>Init.py</b>ファイルを置くこともできます。InitGui.pyファイルがFreeCADをGUIモードで実行した時にしか読み込まれないのに対してInit.pyファイルは常に読み込まれます。ただしワークベンチを作成しようとする場合にはInitGui.pyを置きましょう。言うまでもなくワークベンチはGUIでしか使用されないからです。
</p>
<h2><span class="mw-headline" id=".E6.96.B0.E3.81.97.E3.81.84.E3.83.AF.E3.83.BC.E3.82.AF.E3.83.99.E3.83.B3.E3.83.81.E3.81.AE.E4.BD.9C.E6.88.90">新しいワークベンチの作成</span></h2>
<p>InitGui.pyファイルの中でまず行いたいのはワークベンチを定義することです。以下にあなたが使うことのできる最小のコードを記載しておきます
</p>
<pre>class MyWorkbench ( Workbench ):
"My workbench object"
Icon = """
/* XPM */
static const char *test_icon[]={
"16 16 2 1",
"a c #000000",
". c None",
"................",
"................",
"..############..",
"..############..",
"..############..",
"......####......",
"......####......",
"......####......",
"......####......",
"......####......",
"......####......",
"......####......",
"......####......",
"......####......",
"................",
"................"};
"""
MenuText = "My Workbench"
ToolTip = "This is my extraordinary workbench"
def GetClassName(self):
return "Gui::PythonWorkbench"
def Initialize(self):
import myModule1, myModule2
self.appendToolbar("My Tools", ["MyCommand1","MyCommand2"])
self.appendMenu("My Tools", ["MyCommand1","MyCommand2"])
Log ("Loading MyModule... done\n")
def Activated(self):
# 必要な場合はここで処理を行う...
Msg ("MyWorkbench.Activated()\n")
def Deactivated(self):
# 必要な場合はここで処理を行う...
Msg ("MyWorkbench.Deactivated()\n")
FreeCADGui.addWorkbench(MyWorkbench)
</pre>
<p>ワークベンチには次の属性が全て定義されている必要があります:
</p>
<ul><li> Icon。XPM画像ですGIMPを始めとしたほとんどのソフトウェアで画像をテキストファイルであるXPM形式に変換できます。変換した内容をここにペーストしてください</li>
<li> MenuText。ワークベンチリストに表示されるワークベンチ名です。</li>
<li> Tooltip。マウスオーバーした際に表示されます。</li>
<li> Initialize()。FreeCAD起動の際に実行され、ここでワークベンチが使用する全てのメニューとツールバーが作成されなければなりません。モジュールをC++で作成する場合はこのInitGui.pyファイルの中ではなくC++モジュールの中でメニューとツールバーを定義することもできます。大事なのはモジュールがアクティブ化された時ではなく、今、メニューとツールバーを作成することなのです。</li>
<li> Activated()。ユーザーがあなたのワークベンチに切り替えた際に実行されます。</li>
<li> Deactivated()。ユーザーがあなたのワークベンチから他のワークベンチに切り替えるか、FreeCADを終了した際に実行されます。</li></ul>
<h2><span class="mw-headline" id="Python.E3.81.A7.E3.81.AEFreeCAD.E3.82.B3.E3.83.9E.E3.83.B3.E3.83.89.E3.81.AE.E4.BD.9C.E6.88.90">PythonでのFreeCADコマンドの作成</span></h2>
<p>通常、自作ツールFreeCADではコマンドと呼ばれますは全て他のモジュールに定義してツールバーやメニューが作成される前にそのモジュールをインポートするようにします。以下にあなたがコマンドの定義で使うことのできる最小のコードを記載しておきます
</p>
<pre>import FreeCAD,FreeCADGui
class MyTool:
"My tool object"
def GetResources(self):
return {"MenuText": "My Command",
"Accel": "Ctrl+M",
"ToolTip": "My extraordinary command",
"Pixmap" &#160;: """
/* XPM */
static const char *test_icon[]={
"16 16 2 1",
"a c #000000",
". c None",
"................",
"................",
"..############..",
"..############..",
"..############..",
"......####......",
"......####......",
"......####......",
"......####......",
"......####......",
"......####......",
"......####......",
"......####......",
"......####......",
"................",
"................"};
"""}
def IsActive(self):
if FreeCAD.ActiveDocument == None:
return False
else:
return True
def Activated(self):
# ここで何か処理する...
FreeCADGui.addCommand('MyCommand1',MyTool())
</pre>
<ul><li> GetResources()メソッドはツールの視覚属性が入った辞書を返さなければなりません。Accelでショートカットキーが定義されますがこれは必須ではありません。</li>
<li> IsActive()メソッドはメニューやツールバー内でコマンドがアクティブか、グレーアウトしているかを定義します。</li>
<li> Activated()メソッドはツールバーボタン、メニューまたはスクリプトによってコマンドが呼ばれた際に実行されます。</li></ul>
<h2><span class="mw-headline" id="C.2B.2B.E3.81.A7.E3.81.AEFreeCAD.E3.82.B3.E3.83.9E.E3.83.B3.E3.83.89.E3.81.AE.E4.BD.9C.E6.88.90">C++でのFreeCADコマンドの作成</span></h2>
<p>ドキュメント作成予定
</p><p><br />
</p>
<p><br />
</p>
<h2><span class="mw-headline" id=".E3.81.BE.E3.81.9A.E3.83.86.E3.82.B9.E3.83.88.E3.81.97.E3.81.A6.E3.81.8F.E3.81.A0.E3.81.95.E3.81.84">まずテストしてください</span></h2>
<p>テストフレームワークを使用してデバッグの面倒から解放される前に標準テストが正しく動作するかを調べてください。もし動作しなければ恐らくインストールが正しく行われていません。
</p>
<h2><span class="mw-headline" id=".E3.82.B3.E3.83.9E.E3.83.B3.E3.83.89.E3.83.A9.E3.82.A4.E3.83.B3">コマンドライン</span></h2>
<p>FreeCADの<i>デバッグ</i>はいくつかの内部メカニズムによってサポートされています。コマンドライン版のFreeCADでは以下のデバッグサポート用オプションが使えます
</p>
<dl><dt>-v</dt>
<dd> "v"オプションを使うとFreeCADはより詳細な出力を行う様になります。</dd>
<dt>-l</dt>
<dd> "l"オプションを使うとFreeCADはログファイルに追加情報を書き込む様になります。</dd></dl>
<p><br />
</p>
<h2><span class="mw-headline" id=".E3.82.A4.E3.83.B3.E3.83.88.E3.83.AD.E3.83.80.E3.82.AF.E3.82.B7.E3.83.A7.E3.83.B3">イントロダクション</span></h2>
<p>FreeCADには豊富なテストフレームワークが付属しています。これらのテスト環境はテストモジュール内に置かれた複数のPythonスクリプトを基盤としてます。
</p>
<p><br />
</p>
<p>この記事ではFreeCADの<b>ブランディング</b>について説明しています。ブランディングとはFreeCADをベースとしてあなた独自のアプリケーションを作成することを意味します。あなただけの実行ファイルやスプラッシュスクリーンを作ることもできますし、完全に作り直したプログラムの作成さえ可能です。FreeCADは柔軟なアーキテクチャをしており、特定の目的のためのあなたのプログラムの基盤として簡単に使用することができます。
</p>
<h3><span class="mw-headline" id=".E6.A6.82.E8.A6.81_2">概要</span></h3>
<p>ブランディングのほとんどは<b>MainCmd.cpp</b>または<b>MainGui.cpp</b>で行われます。これらのプロジェクトはFreeCADの実行ファイルを生成します。あなた独自のブランドを作るにはMainプロジェクトまたはMainGuiプロジェクトをコピーしてFooApp.exeといった独自の名前の実行ファイルにするだけです。
新しい外観のための最も重要な設定はmain()関数内で行うことができます。以下にブランディング制御のためのコードを記載しておきます:
</p><p><code>
</p>
<pre>int main( int argc, char ** argv )
{
// Name and Version of the Application
App::Application::Config()["ExeName"] = "FooApp.exe";
App::Application::Config()["ExeVersion"] = "0.7";
// set the banner (for loging and console)
App::Application::Config()["ConsoleBanner"] = sBanner;
App::Application::Config()["AppIcon"] = "FCIcon";
App::Application::Config()["SplashPicture"] = "FooAppSplasher";
App::Application::Config()["StartWorkbench"] = "Part design";
App::Application::Config()["HiddenDockWindow"] = "Property editor";
App::Application::Config()["SplashAlignment" ] = "Bottom|Left";
App::Application::Config()["SplashTextColor" ] = "#000000"; // black
// Inits the Application
App::Application::Config()["RunMode"] = "Gui";
App::Application::init(argc,argv);
Gui::BitmapFactory().addXPM("FooAppSplasher", ( const char** ) splash_screen);
Gui::Application::initApplication();
Gui::Application::runApplication();
App::Application::destruct();
return 0;
}
</pre>
<p></code>
最初のConfigでプログラムの名前を定義しています。これはコンパイラ設定やリネームによって変更できる実行ファイルの名前ではなく、Windowsでのタスクバーや、Unix系でのプログラムリストに表示される名前です。
</p><p>次の行ではFooAppアプリケーションの設定を定義しています。Configの記述方法と内容については<a href="https://www.freecadweb.org/wiki/index.php?title=Start_up_and_Configuration/jp" title="Start up and Configuration/jp">起動と設定</a>.を見てください。
</p>
<h3><span class="mw-headline" id=".E7.94.BB.E5.83.8F">画像</span></h3>
<p>全ての画像リソースはコンパイルでFreeCADに組み込まれます。これによって読み込み時の遅延時間が減り、インストールもコンパクトになるのです。画像はCの構文を使用した基本的にはテキスト形式のXPM形式でインクルードされます。原理的にはこの画像をテキストエディタで描くことも可能ですが、実際はあなたの好きな画像編集プログラムを使って画像を作成し後でXPM形式に変換したほうが楽でしょう。
</p><p>GNUの画像編集プログラムである<a rel="nofollow" class="external text" href="http://gimp.org/">Gimp</a>ではXPMファイルの保存が可能です。
</p><p>変換にはFreeCADに付属している<i><a href="https://www.freecadweb.org/wiki/index.php?title=ImageConv/jp" title="ImageConv/jp">ImageConv</a></i>ツールを使うことができます。このツールは以下にあります。
</p>
<pre>/trunk/src/Tools/ImageTools/ImageConv
</pre>
<p>これを使えば画像を変換するだけではなく画像が登録される<i>BmpFactoryIcons.cpp</i>ファイルを自動で更新することもできます。典型的な使用方法は以下の例のようなシンプルなものです:
</p>
<pre>ImageConv -i InputImage.png -o OutputImage.xpm
</pre>
<p>この例ではファイル<i>InputImage.png</i>をXPM形式に変換し、その結果をファイル<i>OutputImage.xpm</i>に書き込んでいます。
</p><p>main()内の
</p>
<pre>Gui::BitmapFactory().addXPM("FooAppSplasher", ( const char** ) splash_screen);
</pre>
<p>の行でFreeCADのBitmapFactory内の画像をインクルードしています。
</p>
<h4><span class="mw-headline" id=".E3.82.A2.E3.82.A4.E3.82.B3.E3.83.B3">アイコン</span></h4>
<p>ウィンドウタイトルなどに表示されるメインアプリケーションアイコン<i>FCIcon</i>
</p>
<pre>/trunk/src/Gui/Icons/images.cpp
</pre>
<p>内の以下の行以降で定義されています。
</p>
<pre>static const char *FCIcon[]={
</pre>
<p>これをあなたの好みのアイコンと置き換え、FreeCADを再コンパイルすればあなた独自のブランド作成のための手順は終わりです。このファイルの中には他にもたくさんのアイコンがあり、あなたの好みに応じて変更可能です。
</p><p>新しいアイコンを追加する必要がある場合は
</p>
<pre>/trunk/src/Gui/Icons/BmpFactoryIcons.cpp
</pre>
<p>の中に定義してください、そうすればFreeCADからのアクセスが可能になります。
</p>
<h4><span class="mw-headline" id=".E8.83.8C.E6.99.AF.E7.94.BB.E5.83.8F">背景画像</span></h4>
<p>ドキュメントがないウィンドウが開かれた際には背景画像が表示されます。スプラッシュ画面と同様、これは<i>developers.h</i>内の以下から始まる部分で定義されています:
</p>
<pre>static const char* const background[]={
</pre>
<p>背景には低コントラストな画像を選ぶべきです。さもないとユーザーを苛立たせてしまうでしょう。
</p>
<p><br />
</p>
<p><b>ローカライゼーション</b>とは、複数の言語のユーザーインタフェースをソフトウェアに与える一般的なプロセスです。FreeCADでは、<i>編集→設定→アプリケーション</i>を編集するで、ユーザーインターフェイスの言語を設定することができます。FreeCADは、<a href="http://en.wikipedia.org/wiki/Qt_(toolkit)" class="extiw" title="wikipedia:Qt (toolkit)">Qt</a>を使用して複数の言語のサポートを可能にしています。Unix / Linuxシステム上では、FreeCADはシステムの現在の地域設定を使用するよう初期設定されています。
</p>
<h2><span class="mw-headline" id="FreeCAD.E7.BF.BB.E8.A8.B3.E3.81.AE.E6.94.AF.E6.8F.B4">FreeCAD翻訳の支援</span></h2>
<p>プログラマ以外の人々がFreeCADのためにできる最も重要な事の一つが、プログラムの翻訳を助けることです。オンライン共同翻訳システム<a rel="nofollow" class="external text" href="http://crowdin.net">Crowdin</a>の採用により、翻訳作業は以前よりとても簡単になりました。
</p>
<h3><span class="mw-headline" id=".E7.BF.BB.E8.A8.B3.E3.81.AE.E3.82.84.E3.82.8A.E6.96.B9">翻訳のやり方</span></h3>
<ul><li> <a rel="nofollow" class="external text" href="http://crowdin.net/project/freecad">Crowdin上のFreeCAD翻訳プロジェクト・ページ</a>へ行ってください</li>
<li> 新しいプロファイルを作成するか、Gmailのアドレスのようなサードパーティのアカウントを使用してログインしてください</li>
<li> 作業したい言語をクリックしてください</li>
<li> ファイルを選択し、ファイルの横にある「翻訳開始ボタン」をクリックします。例えば、<i>FreeCAD.ts</i>はFreeCADのメインGUIのテキスト文字列を持ちます</li>
<li> 既存の翻訳へ投票や、独自の訳を作成することができます。</li></ul>
<pre><b></b> あなたがFreeCADの翻訳に活発に参加しており、次のリリースの開始準備を事前に知って翻訳のレビューを行いたい場合には、以下に登録してください。 <a rel="nofollow" class="external free" href="http://www.freecadweb.org/tracker/view.php?id=137">http://www.freecadweb.org/tracker/view.php?id=137</a>
</pre>
<h3><span class="mw-headline" id="Qt-Linguist.E3.81.AB.E3.82.88.E3.82.8B.E7.BF.BB.E8.A8.B3.EF.BC.88.E6.98.94.E3.81.AE.E6.96.B9.E6.B3.95.EF.BC.89">Qt-Linguistによる翻訳昔の方法</span></h3>
<p>以下の情報は今後使用される必要がなく、おそらく廃れていくでしょう。この情報は、プログラマがその動作をよく理解する手助けになる可能性があるため残されています。
</p>
<ul><li> 以下に示すFreeCADのすべての言語フォルダを開きます。</li>
<li> あなたの言語コードを示す.tsファイルがあるかどうか確認してください例えば"fr"はフランス、"de"はドイツ語です)</li>
<li> ファイルがあれば、そのファイルはダウンロードできます(ファイルをクリックでダウンロード)。翻訳の修正、検討、改善が可能です。</li>
<li> ファイルが存在しない場合、言語コードなしの.tsファイルをダウンロードしてくださいあるいは他の.tsファイルでも同じです</li>
<li> そのファイル名をあなたの言語コードに変更してください。</li>
<li> Qt-Linguistプログラムでそのファイルを開いてください。</li>
<li> 翻訳を開始しますQt Linguistは大変使いやすいプログラムです</li>
<li> 翻訳がすべて終わったらファイルを保存してください。</li>
<li> <a rel="nofollow" class="external text" href="http://www.freecadweb.org/tracker/main_page.php">ファイルを我々に送ってください。</a>他のユーザへも役立てられるように、そのファイルをfreecadソースコードに含めます。</li></ul>
<h4><span class="mw-headline" id=".E5.88.A9.E7.94.A8.E5.8F.AF.E8.83.BD.E3.81.AA.E7.BF.BB.E8.A8.B3.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB">利用可能な翻訳ファイル</span></h4>
<ul><li> <a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Gui/Language/">FreeCAD main GUI</a></li>
<li> <a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Complete/Gui/Resources/translations/">Complete Workbench</a></li>
<li> <a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Drawing/Gui/Resources/translations/">Drawing Workbench</a></li>
<li> <a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Draft/Languages/">Draft Workbench</a></li>
<li> <a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/ReverseEngineering/Gui/Resources/translations/">Reverse Engineering Workbench</a></li>
<li> <a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Fem/Gui/Resources/translations/">FEM Workbench</a></li>
<li> <a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Robot/Gui/Resources/translations/">Robot Workbench</a></li>
<li> <a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Image/Gui/Resources/translations/">Image Workbench</a></li>
<li> <a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Sketcher/Gui/Resources/translations/">Sketcher Workbench</a></li>
<li> <a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Mesh/Gui/Resources/translations/">Mesh Workbench</a></li>
<li> <a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Test/Gui/Resources/translations/">Test Workbench</a></li>
<li> <a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Points/Gui/Resources/translations/">Points Workbench</a></li>
<li> <a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Raytracing/Gui/Resources/translations/">Raytracing Workbench</a></li>
<li> <a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Part/Gui/Resources/translations/">Part Workbench</a></li>
<li> <a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/PartDesign/Gui/Resources/translations/">PartDesign Workbench</a></li>
<li> <a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Assembly/Gui/Resources/translations/">Assembly Workbench</a></li>
<li> <a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/MeshPart/Gui/Resources/translations/">MeshPart Workbench</a></li></ul>
<h2><span class="mw-headline" id=".E7.8B.AC.E8.87.AA.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB.2F.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E7.BF.BB.E8.A8.B3.E3.81.AE.E6.BA.96.E5.82.99">独自モジュール/アプリケーションの翻訳の準備</span></h2>
<h3><span class="mw-headline" id=".E5.BF.85.E8.A6.81.E3.81.AA.E3.82.82.E3.81.AE">必要なもの</span></h3>
<p>独自のアプリケーションモジュールをローカライズするにはQtの助けが必要になります。これらは<a rel="nofollow" class="external text" href="http://www.trolltech.com/products/qt/downloads">Trolltech-ウェブサイト</a>からダウンロードすることができますし、また、<a href="Third_Party_Libraries.html" title="Third Party Libraries">LibPack</a>にも含まれています:
</p>
<dl><dt>qmake</dt>
<dd> プロジェクトファイルを生成します</dd>
<dt>lupdate</dt>
<dd> ソースコードを調べてプロジェクトからオリジナルテキストを抽出したり更新したりします</dd>
<dt>Qt-Linguist</dt>
<dd> Qt-Linguistは非常に使いやすく、一般的な文章の慣用表現集のような便利な機能を持ち、あなたの翻訳を手助けします</dd></dl>
<h3><span class="mw-headline" id=".E3.83.97.E3.83.AD.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E3.82.BB.E3.83.83.E3.83.88.E3.82.A2.E3.83.83.E3.83.97">プロジェクトのセットアップ</span></h3>
<p>プロジェクトのローカライゼーションを始めるために、モジュールのGUI部分に移動し以下のコマンドを実行してください:
</p>
<pre>qmake -project
</pre>
<p>このコマンドはあなたのプロジェクトのディレクトリにあるテキスト文字列を含んでいるファイルを調べ、次の例のようなプロジェクトファイルを作成します:
</p>
<pre>######################################################################
# Automatically generated by qmake (1.06c) Do 2. Nov 14:44:21 2006
######################################################################
TEMPLATE = app
DEPENDPATH += .\Icons
INCLUDEPATH += .
# Input
HEADERS += ViewProvider.h Workbench.h
SOURCES += AppMyModGui.cpp \
Command.cpp \
ViewProvider.cpp \
Workbench.cpp
TRANSLATIONS += MyMod_de.ts
</pre>
<p>手動でファイルを追加することができます。<tt>TRANSLATIONS</tt>セクションには言語ごとに翻訳されたファイルのリストがあります。上記の例では<i>MyMod_de.ts</i> はドイツ語に翻訳されたファイルです。
</p><p>次に<tt>lupdate</tt>を実行し、GUIに含まれる文字列リテラルを抽出する必要があります。ソースコードの変更後にlupdateを実行しても翻訳ファイルから文字列を削除することは決してないため、常に安全です。lupdateは新しい文字列を追加するだけです。
</p><p>次にVisualStudioのプロジェクトへ<tt>.ts</tt>-filesを追加する必要があります。次のカスタムビルドメソッドを指定してください:
</p>
<pre>python ..\..\..\Tools\qembed.py "$(InputDir)\$(InputName).ts"
"$(InputDir)\$(InputName).h" "$(InputName)"
</pre>
<p>注意:1行のコマンドラインで入力してください。ここではレイアウトのために改行しているだけです。
</p><p>上記の例のように<tt>.ts</tt>-fileをコンパイルすることによって、ヘッダーファイル <i>MyMod_de.h</i>が作成されます。このファイルをインクルードする最適な場所は<i>App&lt;Modul&gt;Gui.cpp</i>です。今回の例では<i>AppMyModGui.cpp</i>になります。このファイルに次の行を追加してあなたの翻訳をアプリケーション内で公開しましょう。
</p>
<pre>new Gui::LanguageProducer("Deutsch", &lt;Modul&gt;_de_h_data, &lt;Modul&gt;_de_h_len);
</pre>
<h3><span class="mw-headline" id="python.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E7.BF.BB.E8.A8.B3.E8.A8.AD.E5.AE.9A">pythonファイルの翻訳設定</span></h3>
<p>pyファイルのローカライゼーションを簡単にするために複数のpファイルにも対応できる"pylupdate4"ツールが利用できます。-ts オプションをつけることで複数の.tsファイルの作成や更新が可能です。例えばフランス語のための.tsファイルを作成するには、コマンドラインに次のように入力するだけです:
</p>
<pre>pylupdate4 *.py -ts YourModule_fr.ts
</pre>
<p>pylupdateツールは、pyファイルからtranslate()かtr()関数をスキャンし、YourModule_fr.tsファイルを作ります。このファイルはQLinguistによる翻訳が可能であり、QLinguistまたは次のコマンドでYourModule_fr.qmが作成されます:
</p>
<pre>lrelease YourModule_fr.ts
</pre>
<p>pylupdate4ツールはtranslate()関数をあまり精度よく認識しないことに注意してください。この関数は詳細な書式を必要とします例としてドラフトモジュールファイルを参照してください。ファイル内では以下のようにして翻訳システムを組み入れることが可能ですQApplicationのロード後、Qtウィジェットの作成前に行います:
</p>
<pre>translator = QtCore.QTranslator()
translator.load("YourModule_"+languages[ln])
QtGui.QApplication.installTranslator(translator)
</pre>
<p>必要に応じて、以下の内容のXMLファイルDraft.qrcを作成することができます
</p>
<pre>&lt;RCC&gt;
&lt;qresource prefix="/translations" &gt;
&lt;file&gt;Draft_fr.qm&lt;/file&gt;
&lt;/qresource&gt;
&lt;/RCC&gt;
</pre>
<p>pyrcc4 Draft.qrc -o qrc_Draft.py を実行すると、全てのリソースを含む大きなPythonファイルを作成します。またこの方法で複数のアイコンファイルを1つのリソースファイルに入れることも可能です。
</p>
<h2><span class="mw-headline" id="wiki.E3.82.92.E7.BF.BB.E8.A8.B3.E3.81.99.E3.82.8B">wikiを翻訳する</span></h2>
<p>このwikiは多数のコンテンツを提供しています。最新の興味深い内容は<a href="Online_Help_Toc.html" title="Online Help Toc">マニュアル</a>に集められています。
</p><p>まず最初のステップは<b>あなたの言語でのマニュアルの翻訳がすでに始まっているかどうかを確認することです</b>"マニュアル"の下の左側のサイドバーを見てみください)。
</p><p>開始されていなければ<a rel="nofollow" class="external text" href="http://forum.freecadweb.org/">フォーラム</a>に行き、新しい翻訳を始めたいと発言してください。我々はあなたが取り組みたい言語のための基本的な設定を作成します。
</p><p>次に<a href="/wiki/FAQ#How_can_I_get_edit_permission_on_the_wiki.3F" title="FAQ">wikiの編集の許可を得なければなりません</a>
</p><p>もしあなたの言語の翻訳が既に開始されている場合、まだ翻訳されていないページを見つけてください(リストに赤色で表示されています)。手順は単純です:<b>赤いページに行き、対応する英語ページの内容をコピーして貼り付けます、そして翻訳を開始します</b>
</p><p>もとの英語ページのすべてのタグとテンプレートを入れるのを忘れないでください。いくつかのテンプレートは、あなたの言葉の相当するテンプレートを持っているでしょう例えば、Docnav/frはフランス語版のDocnavテンプレートです。ほとんどの全てのリンクに対して<b>スラッシュとあなたの言語コード</b>を使わなければならないでしょう。やり方は翻訳済みの他のページを参考にしてください。
</p><p>また[[Category:Developer Documentation/fr]]のようにカテゴリーにスラッシュとあなたの言語コードを追加してください。
</p><p>ページの翻訳を終えたら、<b>元の英語ページにあなたの翻訳へのリンクを加えなければなりません</b>。これによって読者は {{languages}}テンプレートからそのページの翻訳版が利用できることがわかります。他の翻訳者のやり方を見て同じようにしましょう。
</p>
<ul><li> 元の英語ページではあなたの言語をアルファベット順に従って追加してください: {{languages | {{es|Localisation/es}} {{fr|Localisation/fr}} {{jp|Localisation/jp}} {{se|Localisation/se}} }} </li>
<li> あなたが翻訳しているページではあなたの言語のlanguage テンプレートを使用してまず英語を配置してから残りの言語をアルファベット順に従って追加してください: {{languages/fr | {{en|Localisation}} {{es|Localisation/es}} {{jp|Localisation/jp}} {{se|Localisation/se}} }} </li></ul>
<p>もし自信がない場合、フォーラムに行き、正しいかどうかのチェックを依頼してください。
</p><p>マニュアルページでよく使用される3つのテンプレートがあります。これらつのテンプレートはローカライズバージョンを持っています。
</p>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=Template:Docnav" title="Template:Docnav">Template:Docnav</a>&#160;:ページの下にあるナビゲーションバーです。「前のページ」や「後のページ」を示します</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=Template:Languages" title="Template:Languages">Template:Languages</a>&#160;:このテンプレートは元のページに配置し、読者にそのページの翻訳版が存在することを示します。翻訳版のページには英語ページへのリンクを張らなければなりません。</li>
<li><a href="https://www.freecadweb.org/wiki/index.php?title=Template:En" title="Template:En">Template:en</a> 各言語ごとに用意されたアイコンの一つです。languagesテンプレート内に配置します。</li></ul>
<h3><span class="mw-headline" id=".E3.83.9A.E3.83.BC.E3.82.B8.E3.81.AE.E5.91.BD.E5.90.8D.E8.A6.8F.E5.89.87">ページの命名規則</span></h3>
<p>MediaWikiエンジンのSourceforge実装の制限のために、あなたのページの名前を、元の英語ページの名前にスラッシュとあなたの言語コードを追加した名前にする必要があるので注意してください。例えばAbout FreeCADの翻訳されたページは、スペイン語ならAbout FreeCAD/es、ポーランド語ならAbout FreeCAD/plといった具合になります。この理由は単純に翻訳者が去った場合にwikiの管理者が(すべての言語を話せるわけではないので)それらのページが何であるかを知るためです。またメンテナンスを容易にしてページが失われるのを避けるためでもあります。
</p><p>Docnavテンプレートのリンク先のページ名をあなたの言語で表示したい場合、<b>リダイレクトページ</b>を使用します。これは基本的には実際のページへのショートカットリンクです。以下はAbout FreeCADのフランス語のページの例です。
</p>
<ul><li>About FreeCAD/frは実際のページです</li>
<li>ページÀ propos de FreeCADでは次のコードを持ちます</li></ul>
<pre>#REDIRECT [[About FreeCAD/fr]]
</pre>
<ul><li>About FreeCAD/frのページではDocnavのコードは次のようになります</li></ul>
<pre>{{docnav/fr|Bienvenue sur l'aide en ligne|Fonctionnalités}}
</pre>
<p>ページ"Bienvenue sur l'aide en ligne"はOnline Help Startpage/frにリダイレクトし、ページ"Fonctionnalites"はFeature list/frへリダイレクトします.
</p><p>不明な点があれば遠慮しないで<a rel="nofollow" class="external text" href="http://forum.freecadweb.org/">フォーラム</a>で聞きましょう 。
</p>
<p><br />
</p>
<p>あなたのシステムのPythonインストール設定に新しいモジュールを追加することでFreeCAD内部のPythonモジュールを簡単に拡張することができます。これらのモジュールはFreeCADによって自動的に検知され使用されます。
</p><p>Pythonモジュールは全てFreeCADの内部から使用できますが中でも以下で紹介するいくつかのものは特に重要です。なぜならこれらを使うとPythonプログラムからFreeCADの中核機能に対して完全なアクセスを行うことが可能だからです。これらのモジュールの使用例は<a href="https://www.freecadweb.org/wiki/index.php?title=Code_snippets/jp" title="Code snippets/jp">コードスニペット</a>ページにあります。
</p><p><b>注意</b>:
</p>
<ul><li> 以下のモジュールの内、Pivyは既にFreeCADインストールパッケージに完全に統合されています。またWindows用インストールパッケージではPyQt4も統合されています。</li>
<li> PyQt4はバージョン0.13以降、次第にサポートされなくなっていく予定です。これは完全に同じ機能持つものの、よりFreeCADと互換性の高いライセンスLGPLを持つ<a rel="nofollow" class="external text" href="http://qt-project.org/wiki/PySide">PySide</a>に移行するためです。</li></ul>
<h2><span class="mw-headline" id="PyQt4_2">PyQt4</span></h2>
<p>ホームページ: <a rel="nofollow" class="external free" href="http://www.riverbankcomputing.co.uk/pyqt">http://www.riverbankcomputing.co.uk/pyqt</a>
</p><p>PyQtバージョン4はプログラムが<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Qt_(toolkit)">Qt</a>インターフェイスに対してアクセスしたり、それらを作成、変更できるようにするためのPythonバインディングライブラリです。FreeCADのインターフェイスはQtで作られているので、あなたのシステムにPyQt4をインストールすることでFreeCAD内部のPythonプログラムからインターフェイス全てにアクセスしたり、パーツの変更や新しいウィジットの作成、インターフェイスのパーツから情報を集めるなどの処理を行えるようになります。
</p><p>PyQtは<a rel="nofollow" class="external text" href="http://trolltech.com/products/qt">Qt</a>で使われているものと同じマルチライセンスシステムの下でリリースされています。つまり商用ライセンス版とフリーなGPL版がアルのです。もし商用のクローズドなソースのプログラムで使用したいと思ったら商用ライセンスを購入する必要があります。一方、GPL版では自由にインストールして使用することだけができます。
</p>
<h3><span class="mw-headline" id=".E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB_3">インストール</span></h3>
<p>言うまでもないでしょうがPyQt4をインストールする前にインストール済みの正常動作するPython環境が必要です。
</p><p><b>Linux</b>
</p><p>最も簡単なPyQt4のインストール方法はあなたの使っているディストリビューションのパッケージマネージャーを使用する方法です。Debian/Ubuntuシステムではパッケージ名は一般的には<i>python-qt4</i>です。またRPMベースのシステムでは<i>pyqt4</i>となっています。必要な依存関係QtとSIPは自動的に解決されます。
</p><p><b>Windows</b>
</p><p>プログラムを<a rel="nofollow" class="external text" href="http://www.riverbankcomputing.co.uk/pyqt/download.php">ここ</a>からダウンロードできます。pyqt4をインストールする前にQtライブラリとSIPライブラリをインストールしておく必要があります要ドキュメント化
</p>
<h3><span class="mw-headline" id=".E4.BD.BF.E7.94.A8.E6.96.B9.E6.B3.95_3">使用方法</span></h3>
<p>インストールが終わったらFreeCADにPythonコンソールで以下のコマンドを入力して全て動作しているかどうかチェックします
</p>
<pre>import PyQt4
</pre>
<p>FreeCADインターフェイスにアクセスするには以下のように入力します
</p>
<pre>from PyQt4 import QtCore,QtGui
app = QtGui.qApp
FreeCADWindow = app.activeWindow()
</pre>
<p>以上を行うとdir()コマンドを使ってインターフェイスを探索できるようになります。自作のウィジットなど新しい要素を追加するには以下の様なコマンドを使います:
</p>
<pre>FreeCADWindow.addDockWidget(QtCore.Qt.RghtDockWidgetArea,my_custom_widget)
</pre>
<h3><span class="mw-headline" id=".E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88_2">ドキュメント</span></h3>
<p>以下にQtDesigneやPythonを使ったインターフェイスの作成方法を含むもっと詳しいpyQt4のチュートリアルがあります
</p><p><a rel="nofollow" class="external free" href="http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/classes.html">http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/classes.html</a> - 公式PyQt4 APIリファレンス
</p><p><a rel="nofollow" class="external free" href="http://www.rkblog.rk.edu.pl/w/p/introduction-pyqt4/">http://www.rkblog.rk.edu.pl/w/p/introduction-pyqt4/</a> - 簡単なイントロダクション
</p><p><a rel="nofollow" class="external free" href="http://www.zetcode.com/tutorials/pyqt4/">http://www.zetcode.com/tutorials/pyqt4/</a> - 非常に詳細なチュートリアル
</p>
<h2><span class="mw-headline" id="Pivy_3">Pivy</span></h2>
<p>ホームページ: <a rel="nofollow" class="external free" href="http://pivy.coin3d.org/">http://pivy.coin3d.org/</a>
</p><p>PivyはPython用の<a rel="nofollow" class="external text" href="http://www.coin3d.org">Coin</a>バインディングライブラリで、Coinプロジェクトによって公式にサポートされています。Coin自体はOpenGLで3Dアプリケーションを作成するためのツールキットです。FreeCADはこのツールキットを使って画面上に3Dシーンを描画しています。あなたのシステムにPivyをインストールするとPythonプログラムからFreeCADのシーングラフにアクセスして画面上に新しいオブジェクトを描画したり、描画操作用の幅広いCoinツールを利用できるようになります。Coinはシーン記述言語であるOpenInventorに基づいています。PivyはFreeCADの2D製図モジュールまた全てのモジュールで使用されているのでそれらのモジュールのツールを使いたい場合には必ず必要になります。
</p><p>FreeCADではオブジェクトを画面上に表現するためにしかCoinを使っておらず、それらはオブジェクトの定義とは分離しているということは知っておくべき重要な点でしょう。つまりPivyを使って既存のオブジェクトを変更したり、正常なFreeCADオブジェクトを作成することはできないのです。ただし一時的なものであれば、座標軸、グリッド、マニピュレータ、補助ジオメトリーなどあらゆるものを画面に描画することができます。
</p><p>PivyはCoinと同様、GPLライセンスの下でリリースされています。
</p>
<h3><span class="mw-headline" id=".E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB_4">インストール</span></h3>
<h4><span class="mw-headline" id=".E5.BF.85.E8.A6.81.E6.9D.A1.E4.BB.B6">必要条件</span></h4>
<p>Pivyをコンパイルする前にはCoinとSoQtをインストールしておいた方がいいと思います。
</p><p>Mac上でのビルドでは<a rel="nofollow" class="external text" href="http://www.coin3d.org/lib/plonesoftwarecenter_view">Coin3バイナリパッケージ</a>をインストールするだけで十分でした。ただしMacPortsからCoinをインストールしようとすると問題となるかもしれません。大量のXWindowパッケージの追加を行わなければならず、スクリプトのエラーによる完全なクラッシュもありました。
</p><p>FedoraではRPMにCoin3がありました。
</p><p>SoQtの<a rel="nofollow" class="external text" href="http://www.coin3d.org/lib/soqt/releases/1.5.0">ソース</a>からのコンパイルはMacでもLinuxでも問題ありませんでした。
</p>
<h4><span class="mw-headline" id="Debian_.26_Ubuntu">Debian &amp; Ubuntu</span></h4>
<p>DebianSqueezeとUbuntuLucidを使って始める場合は公式レポジトリからPivyを直接利用することができるのでたいして面倒ではないでしょう。他にも<a href="Download.html" title="Download">ダウンロード</a>ページから利用できる私たちがDebianとUbuntuKarmic用に作成したパッケージをダウンロードするか、あるいは自分自身でビルドするという方法をとることもできます。
</p><p>最も簡単なPivyのコンパイル方法はPivyのDebianソースパッケージから取ってきてdebuildを使ってパッケージを作成するやり方です。これはPivyの公式サイトのものと同じソースコードですがDebianの人たちによっていくつかのバグ修正が追加されています。UbuntuKarmic上でも正常にコンパイルできます <a rel="nofollow" class="external free" href="http://packages.debian.org/squeeze/python-pivy">http://packages.debian.org/squeeze/python-pivy</a> から.orig.gzファイルと.diff.gzファイルをダウンロードして両方を展開したら.diff をソースに適用します。展開したPivyのソースフォルダに移動し、以下のようにして.diffパッチを適用します
</p>
<pre>patch -p1 &lt; ../pivy_0.5.0~svn765-2.diff
</pre>
<p>その後で次のコマンドをを実行するとPivyが公式なインストールパッケージに適切にビルドされます。
</p>
<pre>debuild
</pre>
<p>それが終わったらgdebiを使ってそのパッケージをインストールすれば終わりです。
</p>
<h4><span class="mw-headline" id=".E3.81.9D.E3.81.AE.E3.81.BB.E3.81.8B.E3.81.AELinux.E3.83.87.E3.82.A3.E3.82.B9.E3.83.88.E3.83.AA.E3.83.93.E3.83.A5.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3">そのほかのLinuxディストリビューション</span></h4>
<p>まず以下のコマンドを使って最新のソースを<a rel="nofollow" class="external text" href="http://pivy.coin3d.org/mercurial/">プロジェクトのリポジトリ</a>:から入手します。
</p>
<pre>hg clone <a rel="nofollow" class="external free" href="http://hg.sim.no/Pivy/default">http://hg.sim.no/Pivy/default</a> Pivy
</pre>
<p>2012年3月現在、最新のバージョンはPivy-0.5です。
</p><p>次にPythonバインディング用のC++コードを生成するためのSWIGというツールが必要になります。Pivy-0.5はSWIG 1.3.31、1.3.33、1.3.35、1.3.40でのみテスト済みであると説明されています。従ってそれら古いバージョンのどれかのソースのtarballを<a rel="nofollow" class="external free" href="http://www.swig.org">http://www.swig.org</a>からダウンロードします。ダウンロードしたら展開してroot権限で次のコマンドを実行します
</p>
<pre>./configure
make
make install checkinstallを使っている場合はそれでも構いません
</pre>
<p>ビルドは数秒で終わります。
</p><p>あるいはもっと新しいSWIGを使ってビルドを試みてもいいでしょう。2012年3月現在、標準のリポジトリバージョンは2.0.4です。PivyはMac OSでのSWIG 2.0.4を使ったコンパイルでちょっとした問題がありますが下記を参照、Fedora Core 15では正常にビルドできるようです。
</p><p>ビルドが終わったらPivyソースの位置に移動し、次のコマンドを実行します
</p>
<pre>python setup.py build
</pre>
<p>これによってソースファイルが作成されます。ビルドでは大量の警告が出る場合がありますが恐らくエラーはでないでしょう。
</p><p>恐らく今は修正されていますが 'char*'を'const char*'に変換できない、というコンパイルエラーが起きる場合があります。これを修正するためには該当する行に'const'を書き込む必要があります。修正ヶ所は6行あります。
</p><p>それが終わったら次のコマンドをroot権限で実行してインストールを行います
</p>
<pre>python setup.py install またはcheckinstall python setup.py install
</pre>
<p>これで終わりです。Pivyがインストールされました。
</p>
<h4><span class="mw-headline" id="Mac_OS">Mac OS</span></h4>
<p>以下の手順説明は完全ではないかもしれません。2012年3月現在、OS10.7でほぼ動作しました。レポジトリはMacPortsのものを使用しましたが他のものでもうまくいくはずです。
</p><p>Linuxと同様に最新のソースコードを以下のコマンドで入手します
</p>
<pre>hg clone <a rel="nofollow" class="external free" href="http://hg.sim.no/Pivy/default">http://hg.sim.no/Pivy/default</a> Pivy
</pre>
<p>もしあなたの環境にhgがなければ以下のコマンドを実行することでMacPortsから入手できます
</p>
<pre>port install mercurial
</pre>
<p>その後は上記と同様、SWIGが必要になります。以下のコマンドで入手できるはずです
</p>
<pre>port install swig
</pre>
<p>私の環境では以下のコマンドも必要でした:
</p>
<pre>port install swig-python
</pre>
<p>2012年3月現在、MacPortsのSWIGはバージョン2.0.4です。上記のLinuxの項目で書いたように可能であればもっと古いバージョンをダウンロードした方が良いでしょう。SWIG2.0.4にはPivyのビルドが止まるバグがあるようです。以下の要約の最初のメッセージを参照して下さい
<a rel="nofollow" class="external free" href="https://sourceforge.net/mailarchive/message.php?msg_id=28114815">https://sourceforge.net/mailarchive/message.php?msg_id=28114815</a>
</p><p>これはソース内の二ヶ所を編集してarg4、arg5の代わりに修飾参照*arg4、*arg5を追加することで修正できます。これで以下のコマンドを使ってPivyをビルドできるはずです
</p>
<pre>python setup.py build
sudo python setup.py install
</pre>
<h4><span class="mw-headline" id="Windows">Windows</span></h4>
<p>VisualStudio2005以降を使用するものとします。ツールメニューの'Visual Studio 2005 Command prompt'を使ってコマンドプロンプトを開きます。
もしPythonインタプリタをまだシステムパスに登録していない場合は以下のようにしてください
</p>
<pre>set PATH=path_to_python_2.5;%PATH%
</pre>
<p>Pivyを動作させるためにはプロジェクトのリポジトリから最新のソースを入手します
</p>
<pre>svn co <a rel="nofollow" class="external free" href="https://svn.coin3d.org/repos/Pivy/trunk">https://svn.coin3d.org/repos/Pivy/trunk</a> Pivy
</pre>
<p>次にPythonバインディング用のC++コードを生成するためのSWIGというツールが必要になります。最新バージョンではなくSWIGのバージョン1.3.25を使うことをお勧めします。今のところPivyは1.3.25を使った場合にしか正しく動作しないためです。<a rel="nofollow" class="external free" href="http://www.swig.org">http://www.swig.org</a>から1.3.25のバイナリをダウンロードしてください。ダウンロードしたら展開して以下のようにしてコマンドラインからシステムパスに追加します:
</p>
<pre>set PATH=path_to_swig_1.3.25;%PATH%
</pre>
<p>またCOINDIRを適切なパスに設定します
</p>
<pre>set COINDIR=path_to_coin
</pre>
<p>Windows上ではPivyの設定ファイルはデフォルトのSoQtではなくSoWinとなっているはずです。SoQtを使ってビルドする適切な方法を見つけられなかったので私はsetup.pyを直接変更しました。
200行目の 'sowin'の部分を取り除くだけです:('gui._sowin', 'sowin-config', 'pivy.gui.' (丸括弧閉じは削除しないように)
</p><p>それが終わったらソースの位置に移動して以下のコマンドを実行します:
</p>
<pre>python setup.py build
</pre>
<p>これによってソースファイルが作成されます。いくつかのヘッダファイルが見つからないというコンパイルエラーが起きるかもしれません。その場合にはINCLUDE変数を以下のように調整してください
</p>
<pre>set INCLUDE=%INCLUDE%;path_to_coin_include_dir
</pre>
<p>もしSoQtのヘッダがCoinのヘッダと同じ場所にない場合は以下も行います
</p>
<pre>set INCLUDE=%INCLUDE%;path_to_soqt_include_dir
</pre>
<p>最後にQtのヘッダを追加します
</p>
<pre>set INCLUDE=%INCLUDE%;path_to_qt4\include\Qt
</pre>
<p>あなたがVisualStudioのExpressエディションを使っている場合、Pythonのkeyerror例外が起きるかもしれます。
その場合はPythonインストール位置にあるmsvccompiler.pyに若干の変更を加える必要があります。
</p><p>122行目に移動し以下の行を
</p>
<pre>vsbase = r"Software\Microsoft\VisualStudio\%0.1f"&#160;% version
</pre>
<p>次の行で置き換えます。
</p>
<pre>vsbase = r"Software\Microsoft\VCExpress\%0.1f"&#160;% version
</pre>
<p>それが終わったらもう一度試してみてください。
次に示すようなエラーが再度起きた場合は
</p>
<pre>error: Python was built with Visual Studio 2003;...
</pre>
<p>128行目の以下の行を
</p>
<pre>self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv1.1")
</pre>
<p>次の行で置き換えます。
</p>
<pre>self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv2.0")
</pre>
<p>再度、試します。また次に示す様なエラーが起きる場合は
</p>
<pre>error: Python was built with Visual Studio version 8.0, and extensions need to be built with the same version of the compiler, but it isn't installed.
</pre>
<p>以下のコマンドで環境変数のDISTUTILS_USE_SDKとMSSDKを調べてみてください。
</p>
<pre>echo&#160;%DISTUTILS_USE_SDK%
echo&#160;%MSSDK%
</pre>
<p>もしまだ設定されていないようであれば以下のコマンドの様にして1などを設定してください。
</p>
<pre>set DISTUTILS_USE_SDK=1
set MSSDK=1
</pre>
<p>また'char*'を'const char*'に変換できない、というコンパイルエラーが起きる場合があります。これを修正するためには該当する行に'const'を書き込む必要があります。修正ヶ所は6行あります。
ビルドが終わったら生成されたPivyディレクトリをFreeCADのPythonインタプリタが見つけられる場所にコピーしてください。
</p>
<h3><span class="mw-headline" id=".E4.BD.BF.E7.94.A8.E6.96.B9.E6.B3.95_4">使用方法</span></h3>
<p>PivyでFreeCADのシーングラフにアクセスするには次のようにします
</p>
<pre>from pivy import coin
App.newDocument() # ドキュメントとビューを開きます
view = Gui.ActiveDocument.ActiveView
FCSceneGraph = view.getSceneGraph() # Coinシーングラフのメイン"コンテナ"であるSoSeparatorを保持したPivyのPythonオブジェクトを返します
FCSceneGraph.addChild(coin.SoCube()) # シーンにボックスを追加します
</pre>
<p>これでdir()コマンドを使ってFCSceneGraphを調べることができるようになります。
</p>
<h3><span class="mw-headline" id=".E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88_3">ドキュメント</span></h3>
<p>残念なことにPivyについて書かれたものはネット上にはまだほとんどありません。ただしCoinドキュメントが利用できることにあなたは気がついたかもしれません。PivyはConiの関数、ード、メソッドを純粋にPythonに移植したものだからです。名前とプロパティは全て同じままで、気をつける必要があるのはCとPythonの文法の違いだけです。
</p><p><a rel="nofollow" class="external free" href="http://doc.coin3d.org/Coin/classes.html">http://doc.coin3d.org/Coin/classes.html</a> - Coin3DのAPIリファレンス
</p><p><a rel="nofollow" class="external free" href="http://www-evasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/index.html">http://www-evasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/index.html</a> - The Inventor Mentor - Inventorのシーン記述言語の"バイブル"です
</p><p>またFreeCADのMod/DraftフォルダにあるDraft.pyファイルを参照してもいいでしょう。これはPivyを豊富に使っているからです。
</p>
<h2><span class="mw-headline" id="pyCollada">pyCollada</span></h2>
<p><a rel="nofollow" class="external text" href="http://pycollada.github.com">pyCollada</a>はプログラムで<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/COLLADA">Collada (*.DAE)</a>ファイルの読み書きを行うことができるようにするためのPythonライブラリです。pyColladaがあなたのシステムにインストールされている場合にはFreeCAD<span style="font-size:x-small;"><a href="Release_notes_0.13.html" class="mw-redirect" title="Release notes 0.13">available in version 0.13</a></span>
はそれを検出してColladaファイル形式のインポートとエクスポートを行うハンドルの追加を行います。
</p>
<h3><span class="mw-headline" id=".E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB_5">インストール</span></h3>
<p>pyColladaは今のところLinuxディストリビューションのレポジトリでは利用できないことが多いですが、Pythonファイルだけで作成されていてコンパイルを必要としないのでインストールは簡単です。やり方は二通りあります。pyColladaの公式Gitレポジトリから直接インストールするか、easy_installツールを使うかのどちらかです。
</p>
<h4><span class="mw-headline" id="Linux">Linux</span></h4>
<p>どちらの場合でも以下のパッケージがあなたのシステムにインストールされている必要があります:
</p>
<pre>python-lxml
python-numpy
python-dateutil
</pre>
<h5><span class="mw-headline" id="Git.E3.83.AC.E3.83.9D.E3.82.B8.E3.83.88.E3.83.AA.E3.81.8B.E3.82.89.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">Gitレポジトリからのインストール</span></h5>
<pre>git clone <a rel="nofollow" class="external free" href="git://github.com/pycollada/pycollada.git">git://github.com/pycollada/pycollada.git</a> pycollada
cd pycollada
sudo python setup.py install
</pre>
<h5><span class="mw-headline" id="easy_install.E3.82.92.E4.BD.BF.E3.81.A3.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">easy_installを使ったインストール</span></h5>
<p>Pythonは既に完全にインストールされているものとし、その場合、easy_installユーティリティが既に存在しているはずです。
</p>
<pre>easy_install pycollada
</pre>
<p>pyColladaが正しくインストールされたかどうか確認するためにはPythonコンソールで以下のコマンドを入力します
</p>
<pre>import collada
</pre>
<p>何も返らなければエラーメッセージがでなければ全てOKです。
</p>
<h4><span class="mw-headline" id="Windows_2">Windows</span></h4>
<p>ドキュメント作成予定
</p>
<h2><span class="mw-headline" id="IfcOpenShell">IfcOpenShell</span></h2>
<p>IFCOpenShellは現在開発中のライブラリで<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Industry_Foundation_Classes">Industry foundation Classes (*.IFC)</a>のインポートいずれはエクスポートもを行えるようにするもので。IFCはSTEP形式の拡張で<a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Building_information_modeling">BIM</a>ワークフローでの標準形式になる予定です。あなたのシステムにIFCOpenShellが正しくインストールされている場合にはFreeCADの<a href="https://www.freecadweb.org/wiki/index.php?title=Arch_Module/jp" title="Arch Module/jp">建築モジュール</a> がそれを検出してIFCファイルのインポートに使用します。IFCOpenShellはFreeCAD同様、OpenCasCadeを基盤にしていてインポートの精度が非常に高く、高品質なソリッドジオメトリを生成します。
</p><p>ホームページ: <a rel="nofollow" class="external free" href="http://www.ifcopenshell.org">http://www.ifcopenshell.org</a>
</p>
<h3><span class="mw-headline" id=".E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB_6">インストール</span></h3>
<p>IFCOpenShellは非常に新しいものなので恐らく自分でコンパイルする必要があります。
</p>
<h4><span class="mw-headline" id="Linux_2">Linux</span></h4>
<p>IFCOpenShellをコンパイルするためにはシステムにいくつかの開発用パッケージをインストールする必要があります
</p>
<pre>liboce-*-dev
python-dev
swig
</pre>
<p>ただしこれらは全てFreeCADでも必要な物なので、もしあなたがFreeCADをコンパイルできる状態なら他にIfcOpenShellをコンパイルするのに必要な物はありません。
</p><p>以下から最新のソースコードを入手してください:
</p>
<pre>svn co <a rel="nofollow" class="external free" href="https://ifcopenshell.svn.sourceforge.net/svnroot/ifcopenshell">https://ifcopenshell.svn.sourceforge.net/svnroot/ifcopenshell</a> ifcopenshell
</pre>
<p>ビルド処理は非常に簡単です:
</p>
<pre>mkdir ifcopenshell-build
cd ifcopenshell-build
cmake ../ifcopenshell/cmake
</pre>
<p>あるいは、あなたがOpenCasCadeの代わりにoceを使っている場合は以下の様になります
</p>
<pre>cmake -DOCC_INCLUDE_DIR=/usr/include/oce ../ifcopenshell/cmake
</pre>
<p>IfcOpenShellは元々はBlender用に作成されたのでデフォルトではpython3を使用します。FreeCAD内部で使用する場合にはFreeCADで使用されているものと同じバージョンのPythonに対してコンパイルを行う必要があります。従って以下のようにして追加のCMakeパラメータでPythonのバージョンを指定する必要があるでしょうPythonのバージョンを調整するのです
</p>
<pre>cmake -DOCC_INCLUDE_DIR=/usr/include/oce -DPYTHON_INCLUDE_DIR=/usr/include/python2.7 -DPYTHON_LIBRARY=/usr/lib/python2.7.so ../ifcopenshell/cmake
</pre>
<p>その後で以下を実行します:
</p>
<pre>make
sudo make install
</pre>
<p>IfcOpenShellが正しくインストールされたかどうか確認するためにはPythonコンソールで以下のコマンドを入力します
</p>
<pre>import IfcImport
</pre>
<p>何も返らなければエラーメッセージがでなければ全てOKです。
</p>
<h4><span class="mw-headline" id="Windows_3">Windows</span></h4>
<p><i>IfcOpenShellのREADMEファイルからの転載です</i>
</p><p>win/ folderにあるVisual Studioの.slnファイルを使用することをお勧めします。Windowsユーザー用ビルド済みバージョンのOpenCASCADEはウェブサイト <a rel="nofollow" class="external free" href="http://opencascade.org">http://opencascade.org</a> から利用可能です。このバージョンをダウンロードしてインストールした後でOpenCASCADEのヘッダとライブラリのパスをMS Visual Studio C++に設定してください。
</p><p>IfcPythonラッパーをビルドするためにはSWIGが必要になります。 <a rel="nofollow" class="external free" href="http://www.swig.org/download.html">http://www.swig.org/download.html</a> から最新版のswigwinをダウンロードしてください。.zipファイルを展開したら、その展開したフォルダをPATH環境変数に追加してください。またPythonがインストールされている必要があります。そのインクルードとライブラリパスをVisualStudioに設定してください。
</p>
<p><br />
</p>
<h1><span class="mw-headline" id=".E3.82.AF.E3.83.AC.E3.82.B8.E3.83.83.E3.83.88">クレジット</span></h1>
<p>長期にわたってFreeCADへの貢献を続けてくれている人々と企業の一覧です。サードパーティー製ライブラリーのクレジットについては<a href="https://www.freecadweb.org/wiki/index.php?title=Third_Party_Libraries/jp" title="Third Party Libraries/jp">サードパーティー製ライブラリー</a>のページを見てください。
</p>
<h3><span class="mw-headline" id=".E9.96.8B.E7.99.BA">開発</span></h3>
<h4><span class="mw-headline" id=".E3.83.97.E3.83.AD.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.83.9E.E3.83.8D.E3.83.BC.E3.82.B8.E3.83.A3.E3.83.BC">プロジェクトマネージャー</span></h4>
<p>FreeCADプロジェクトの開発者リーダー
</p>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=User:Jriegel" title="User:Jriegel">Jürgen Riegel</a></li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=User:Wmayer" title="User:Wmayer">Werner Mayer</a></li></ul>
<h4><span class="mw-headline" id=".E3.83.A1.E3.82.A4.E3.83.B3.E9.96.8B.E7.99.BA.E8.80.85">メイン開発者</span></h4>
<p>普段からFreeCADのコード上で作業してくれている人々
</p>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=User:Yorikvanhavre" class="mw-redirect" title="User:Yorikvanhavre">Yorik van Havre</a></li>
<li> Logari81</li>
<li> Mrlukeparry</li></ul>
<h4><span class="mw-headline" id=".E3.81.9D.E3.81.AE.E4.BB.96.E3.81.AE.E3.83.97.E3.83.AD.E3.82.B0.E3.83.A9.E3.83.9E.E3.83.BC">その他のプログラマー</span></h4>
<p>FreeCADプロジェクトにコードを提供してくれた人々
</p>
<ul><li> Graeme van der Vlugt</li>
<li> Berthold Grupp</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=User:Xorx" title="User:Xorx">Georg Wiora</a></li>
<li> Martin Burbaum</li>
<li> Jacques-Antoine Gaudin</li>
<li> Ken Cline</li>
<li> Dmitry Chigrin</li>
<li> Migius - Remigiusz Fiedler (DXFパーサー)</li></ul>
<h3><span class="mw-headline" id=".E4.BC.81.E6.A5.AD">企業</span></h3>
<p>コードや開発者を提供してくれている企業
</p>
<ul><li> Imetric 3D</li></ul>
<h3><span class="mw-headline" id=".E3.82.B3.E3.83.9F.E3.83.A5.E3.83.8B.E3.83.86.E3.82.A3.E3.83.BC">コミュニティー</span></h3>
<p>FreeCADプロジェクトを手助けするために多大な努力を払ってくれているコミュニティーの人々
</p>
<ul><li> <a href="https://www.freecadweb.org/wiki/index.php?title=User:Normandc" title="User:Normandc">Normandc</a></li>
<li> Kwahoo</li>
<li> <a href="https://www.freecadweb.org/wiki/index.php?title=User:Emagdalena" title="User:Emagdalena">Eduardo Magdalena</a></li></ul>
</div>
</div><div class="printfooter">
Online version: "<a dir="ltr" href="https://www.freecadweb.org/wiki/index.php?title=Manual/jp&amp;oldid=91909">http://www.freecadweb.org/wiki/index.php?title=Manual/jp&amp;oldid=91909</a>"</div>
<div id="catlinks" class="catlinks" data-mw="interface"></div><div class="visualClear"></div>
</div>
</div>
<div id="mw-navigation">
<h2>Navigation menu</h2>
</body></html>