引数とオプション
stl_doctor.py のすべての引数とオプション、デフォルト値と検証ルール。
書式
stl_doctor.py [-h] [--out-dir OUT_DIR] [--report REPORT]
[--weld-tolerance WELD_TOLERANCE] [--max-faces MAX_FACES]
[--max-pairs MAX_PAIRS] [--overwrite]
{check,repair} files [files ...]位置引数
| 引数 | 意味 |
|---|---|
mode | check または repair。check は監査のみを行います。repair は監査したうえで、対応範囲の作業が必要な場合に修復済みのコピーを書き出します。 |
files | 1 つ以上の STL パス、クォートしたグロブ、またはディレクトリ。ディレクトリはサブディレクトリを辿らずに走査され、拡張子が .stl(大文字小文字を区別しない)のファイルが対象になります。解決後のパスが重複するものは 1 回だけ処理されます。 |
何にもマッチしないグロブや、STL ファイルを含まないディレクトリは、どのファイルも処理する前にエラーになります。
オプション
| オプション | デフォルト | 意味 |
|---|---|---|
-h, --help | ヘルプを表示して終了します。 | |
--out-dir OUT_DIR | repaired | 修復済みファイルの出力先ディレクトリ。各出力は <input stem>-fixed.stl(入力ファイル名から拡張子を除いた部分に -fixed.stl を付けたもの)という名前になります。 |
--report REPORT | stl-report.json | バッチ JSON レポートのパス。末尾は .json でなければならず、入力ファイルのいずれとも一致してはいけません。 |
--weld-tolerance WELD_TOLERANCE | 0.0 | メッシュに既存の短いエッジを潰す処理を明示的に有効にします。単位は STL の座標単位です。0 は近似的な溶接を行わないことを意味します。repair モード専用です。 |
--max-faces MAX_FACES | 20000 | 厳密な交差スキャンは、面数がこの値を超えるメッシュを拒否します。 |
--max-pairs MAX_PAIRS | 2000000 | 厳密な交差スキャンは、候補となる三角形ペアの数がこの値を超えると停止します。 |
--overwrite | オフ | 既存の、無関係な通常ファイルであるレポートや出力の置き換えを許可します。入力 STL や同じ実行の出力は、リンク経由であっても決して置き換えません。 |
検証ルール
--weld-toleranceは有限かつ非負でなければなりません。--max-facesと--max-pairsは 1 以上でなければなりません。checkと一緒に--weld-toleranceを指定すると拒否されます。これは repair 用のオプションです。レポートのパスは末尾が
.jsonで、どの入力とも異なり、--overwriteを指定しない限り既に存在していてはいけません。出力パス(
<out-)が入力と一致する場合や、2 つの入力のベース名が同じ場合は、処理を始める前に実行が拒否されます。dir>/ <stem>- fixed. stl 出力ファイルは、
--overwriteを指定しない限り既に存在していてはいけません(この確認は修復が必要なファイルに対してのみ行われます)。大文字と小文字だけが異なるベース名の入力は、重複と同じく拒否されます。macOS の標準ボリュームでは出力名が同じファイルになるためです。
エイリアスからの保護
入力はパスだけでなくファイルの同一性で保護されます。シンボリックリンクやハードリンクは同じファイルの別名であり、CLI はリンク越しに書き込みません。
レポートのパスがシンボリックリンクである場合、または入力や既存の出力へのハードリンクである場合は、何も書き込む前に終了コード 2 で実行を中止します。
出力のパスがシンボリックリンクである場合、または入力や同じ実行の別の出力へのハードリンクである場合は、そのファイルを
errorとして記録します(終了コード 2)。他のファイルの処理は続きます。--overwriteを指定すると、無関係な通常ファイルは新しいファイルをリネームで重ねる形で置き換えられ、パーミッションは保たれます。指定しない場合、新しい名前は排他的に作成されます。書き込みのたびに保存したバイト列を読み戻します。修復した出力と入力のハッシュは、レポートを書く前と後にもう一度確認します。変化したファイルは
errorとして報告し、レポートを書いた後に変化が見つかった場合はレポートを書き直します。
Note
--max-faces や --max-pairs に達した場合、クリーンなスキャンとして報告されることは決してありません。そのファイルはエラーとして記録され、実行は終了コード 2 で終わります。出力と終了コードを参照してください。
溶接許容値
デフォルトの 0 では、頂点は一切マージされません。正の値を指定すると、メッシュに既に存在し、長さが許容値以下のエッジが潰されます。接続されていない近接した壁同士をマージすることは決してありません。メンバーが許容値より大きく移動してしまうクラスタはスキップされます。正の許容値が指定され、かつ高さが 1e-5 未満の三角形がメッシュにある場合、そのファイルは作業が必要なものとして扱われます。適用された許容値、マージ数、最大変位はレポートの repair_details に記録されます。