lithop 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/Cargo.lock +1 -1
- data/README.md +14 -11
- data/RELEASING.md +3 -3
- data/docs/README.md +4 -3
- data/docs/artifacts.md +27 -15
- data/docs/bambu-studio.md +12 -10
- data/docs/calibration.md +4 -4
- data/docs/color-model.md +20 -18
- data/docs/command.md +28 -12
- data/docs/config.md +42 -30
- data/docs/getting-started.md +12 -6
- data/docs/local-ui.md +12 -9
- data/docs/tiling.md +18 -19
- data/docs/troubleshooting.md +3 -3
- data/ext/lithop_native/Cargo.toml +1 -1
- data/lib/lithop/calibration/target.rb +5 -5
- data/lib/lithop/cli/image_adjustment_options.rb +33 -0
- data/lib/lithop/cli/image_options.rb +5 -18
- data/lib/lithop/cli/options.rb +4 -4
- data/lib/lithop/export/color_metadata.rb +46 -23
- data/lib/lithop/export/generation.rb +8 -10
- data/lib/lithop/export/planning.rb +82 -45
- data/lib/lithop/export/print_readme.rb +20 -4
- data/lib/lithop/formats/three_mf/bambu_metadata.rb +11 -8
- data/lib/lithop/formats/three_mf/model_writer.rb +2 -5
- data/lib/lithop/image/pipeline.rb +40 -26
- data/lib/lithop/image/svg_loader.rb +11 -2
- data/lib/lithop/layer_structure.rb +0 -9
- data/lib/lithop/model/filament_profile.rb +3 -3
- data/lib/lithop/model/material_display_map.rb +2 -1
- data/lib/lithop/model/z_region_model.rb +44 -0
- data/lib/lithop/settings.rb +147 -15
- data/lib/lithop/settings_file.rb +1 -0
- data/lib/lithop/version.rb +1 -1
- data/lib/lithop/web/app.rb +9 -5
- data/lib/lithop/web/public/app.css +48 -37
- data/lib/lithop/web/public/app.js +149 -47
- data/lib/lithop/web/settings_form.rb +8 -5
- data/lib/lithop/web/views/index.erb +129 -75
- data/lib/lithop.rb +2 -1
- data/sig/lithop.rbs +16 -0
- metadata +3 -2
- data/lib/lithop/model/layer_region_model.rb +0 -24
data/docs/config.md
CHANGED
|
@@ -33,8 +33,11 @@
|
|
|
33
33
|
"brightness": 0.0,
|
|
34
34
|
"contrast": 0.0,
|
|
35
35
|
"saturation": 0.0,
|
|
36
|
-
"
|
|
37
|
-
"
|
|
36
|
+
"suppress_pale_colors": false,
|
|
37
|
+
"yellow_mix_color": "cyan",
|
|
38
|
+
"yellow_mix_percent": 0.0,
|
|
39
|
+
"minimum_thickness": 0.74,
|
|
40
|
+
"maximum_thickness": 1.94,
|
|
38
41
|
"pixel_size": 0.5,
|
|
39
42
|
"color_pixel_size": null,
|
|
40
43
|
"grid_columns": null,
|
|
@@ -46,16 +49,16 @@
|
|
|
46
49
|
"separate_z_parts": false,
|
|
47
50
|
"color_region_parts": 3,
|
|
48
51
|
"first_layer_height": 0.1,
|
|
49
|
-
"layer_height": 0.
|
|
50
|
-
"base_white_layers":
|
|
51
|
-
"top_layer_height": 0.
|
|
52
|
-
"top_white_start":
|
|
53
|
-
"minimum_top_white_layers":
|
|
54
|
-
"exact_maximum_thickness":
|
|
52
|
+
"layer_height": 0.08,
|
|
53
|
+
"base_white_layers": 1,
|
|
54
|
+
"top_layer_height": 0.08,
|
|
55
|
+
"top_white_start": null,
|
|
56
|
+
"minimum_top_white_layers": 1,
|
|
57
|
+
"exact_maximum_thickness": false,
|
|
55
58
|
"nozzle_diameter": 0.2,
|
|
56
59
|
"color_model": "cmy",
|
|
57
60
|
"color_layer_count": 7,
|
|
58
|
-
"pigment_order": ["
|
|
61
|
+
"pigment_order": ["yellow", "magenta", "cyan"],
|
|
59
62
|
"bambu_project": true
|
|
60
63
|
}
|
|
61
64
|
```
|
|
@@ -96,8 +99,11 @@ lithop image.png --config presets/fine.json
|
|
|
96
99
|
| `brightness` | `--brightness PERCENT` | `0.0` | sRGB明るさ補正。`-100`〜`100` |
|
|
97
100
|
| `contrast` | `--contrast PERCENT` | `0.0` | sRGBコントラスト補正。`-100`〜`100` |
|
|
98
101
|
| `saturation` | `--saturation PERCENT` | `0.0` | sRGB彩度補正。`-100`〜`100` |
|
|
99
|
-
| `
|
|
100
|
-
| `
|
|
102
|
+
| `suppress_pale_colors` | `--suppress-pale-colors` / `--no-suppress-pale-colors` | `false` | ごく薄い色をWhiteへ落とす |
|
|
103
|
+
| `yellow_mix_color` | `--yellow-mix-color COLOR` | `cyan` | Yellowへ混ぜる`cyan`または`magenta` |
|
|
104
|
+
| `yellow_mix_percent` | `--yellow-mix-percent PERCENT` | `0.0` | Yellow被覆量から選択色へ置き換える割合。`0`〜`100` |
|
|
105
|
+
| `minimum_thickness` | `--min-thickness MM` | `0.74` | 要求最小厚さmm。上部White 1層を含む |
|
|
106
|
+
| `maximum_thickness` | `--max-thickness MM` | `1.94` | 要求最大厚さmm。ローカルUIでは0.01 mm刻み |
|
|
101
107
|
| `pixel_size` | `--pixel-size MM` | `0.22` | XYセル寸法mm |
|
|
102
108
|
| `color_pixel_size` | `--color-pixel-size MM` | `null` | `pixel_size`以上のCMYW色セル寸法。`null`は同じ寸法 |
|
|
103
109
|
| `grid_columns` | なし | `637` | fit格子の列数。寸法または`pixel_size`指定時は未指定扱い |
|
|
@@ -106,19 +112,19 @@ lithop image.png --config presets/fine.json
|
|
|
106
112
|
| `tile_layout` | `--tile-layout MODE` | `auto` | `auto`、`columns`、`rows`、`grid` |
|
|
107
113
|
| `tile_rows` | `--tile-rows COUNT` | `null` | `grid`配置の行数 |
|
|
108
114
|
| `tile_columns` | `--tile-columns COUNT` | `null` | `grid`配置の列数 |
|
|
109
|
-
| `separate_z_parts` | `--separate-z-parts` | `false` |
|
|
110
|
-
| `color_region_parts` | `--color-region-parts COUNT` | `3` | Z
|
|
111
|
-
| `first_layer_height` | `--first-layer-height MM` | `0.1` | 下地White
|
|
112
|
-
| `layer_height` | `--layer-height MM` | `0.
|
|
113
|
-
| `base_white_layers` | なし | `
|
|
114
|
-
| `top_layer_height` | なし | `0.
|
|
115
|
-
| `top_white_start` | なし | `
|
|
116
|
-
| `minimum_top_white_layers` | なし | `
|
|
117
|
-
| `exact_maximum_thickness` | なし | `
|
|
115
|
+
| `separate_z_parts` | `--separate-z-parts` | `false` | CMYWモデルを連続Zプレートへ分割し、強度に応じたBase Whiteを追加する |
|
|
116
|
+
| `color_region_parts` | `--color-region-parts COUNT` | `3` | Zプレート数。3分割時のZプレート3はWhite合計4層、最小0.34 mm |
|
|
117
|
+
| `first_layer_height` | `--first-layer-height MM` | `0.1` | 下地White第1層の層高mm |
|
|
118
|
+
| `layer_height` | `--layer-height MM` | `0.08` | CMYW色領域の積層ピッチmm |
|
|
119
|
+
| `base_white_layers` | なし | `1` | 色領域より下のWhite層数 |
|
|
120
|
+
| `top_layer_height` | なし | `0.08` | 上部Whiteのスライス層高 |
|
|
121
|
+
| `top_white_start` | なし | `null` | 上部Whiteの開始Z。`null`は色領域直後 |
|
|
122
|
+
| `minimum_top_white_layers` | なし | `1` | 上部Whiteに必要な最小層数 |
|
|
123
|
+
| `exact_maximum_thickness` | なし | `false` | 最大厚みを正確に残すか。既定は印刷境界へ切り下げる |
|
|
118
124
|
| `nozzle_diameter` | `--nozzle-diameter MM` | `0.2` | `0.2`または`0.4` |
|
|
119
125
|
| `color_model` | `--color-model MODEL` | `cmy` | 現在はCMYのみ |
|
|
120
|
-
| `color_layer_count` | `--color-layer-count COUNT` | `7` | 色領域の4層、5層、7
|
|
121
|
-
| `pigment_order` | `--pigment-order LIST` | `["
|
|
126
|
+
| `color_layer_count` | `--color-layer-count COUNT` | `7` | 色領域の4層、5層、7層、8層。Z分割時は8層へ固定する |
|
|
127
|
+
| `pigment_order` | `--pigment-order LIST` | `["yellow", "magenta", "cyan"]` | バックライト側からの順序。6通りのCMY順列 |
|
|
122
128
|
| `bambu_project` | なし | `true` | 単一プレートのBambuプロジェクト情報を追加するか |
|
|
123
129
|
| `maximum_input_pixels` | なし | `20000000` | ラスター入力、またはSVGの描画面の総画素数上限 |
|
|
124
130
|
| `maximum_triangles` | なし | `5000000` | 推定STLと実際のCMYW 3MFの三角形数上限 |
|
|
@@ -127,7 +133,7 @@ lithop image.png --config presets/fine.json
|
|
|
127
133
|
|
|
128
134
|
## 標準構造
|
|
129
135
|
|
|
130
|
-
`standard`は、外周なしの構造を使います。幅140 mm、高さ104 mm、637 × 473の均等fit格子、White下地
|
|
136
|
+
`standard`は、外周なしの構造を使います。幅140 mm、高さ104 mm、637 × 473の均等fit格子、White下地1層0.10 mm、0.08 mmの色領域7層、色領域直後から0.08 mmでスライスする連続高のWhite上面、最大Z 1.94 mm、0.2 mmノズル、単一`lithophane`プレートを設定します。最薄部の上部Whiteを1層に抑えた実効厚さは0.74–1.94 mmです。White上面は、材料表示色とチャート配合では指定された明暗値、それ以外の入力色ではRec.601輝度から求めます。Black、写真フレーム、導光板は出力しません。
|
|
131
137
|
|
|
132
138
|
```sh
|
|
133
139
|
lithop path/to/image.jpeg
|
|
@@ -143,6 +149,10 @@ SVGでは、通常の厚さ格子と`color_pixel_size`を指定した色格子
|
|
|
143
149
|
|
|
144
150
|
`brightness`、`contrast`、`saturation`はJPEG、PNG、SVGをsRGBへ正規化した後、格子へサンプリングする前にこの順で適用します。単位は百分率で、`0`は無補正です。明るさはRGB値へ加算し、コントラストは50%グレーを中心に、彩度はRec.601輝度を中心に調整します。`-100`はそれぞれ黒方向、コントラストなし、無彩色となり、`100`は既定量の2倍です。範囲外の値はクリップされます。同じ補正済み画像をWhite厚さとCMYW色選択で共有します。
|
|
145
151
|
|
|
152
|
+
`suppress_pale_colors`は既定で`false`です。`true`または`--suppress-pale-colors`を指定すると、平均CMY濃度が4%以下のごく薄い色差を、色相によらずWhiteとして扱います。無効でも、7層の量子化でWhiteの方が近い色はWhiteレシピになります。特定画像の淡色調整には`brightness`、`contrast`、`saturation`を使用します。
|
|
153
|
+
|
|
154
|
+
`yellow_mix_percent`はYellowの光透過を材料と光源に合わせて補正する任意設定で、既定の`0`では変更しません。`yellow_mix_color`で`cyan`または`magenta`を選び、各セルのYellow被覆量のうち指定割合をその色へ置き換えてから最寄りのCMYWレシピを選びます。たとえばCyan 20%ではY100の目標がC20/Y80になります。色領域が7層なら実際の配分は1層単位(約14.3%刻み)へ量子化されるため、20%はCyan 1層、Yellow 6層になります。White厚さは変更しません。
|
|
155
|
+
|
|
146
156
|
`color_pixel_size`を指定すると、White厚さは`pixel_size`の格子で保ったまま、各色セル内の厚さセルが同じCMYWレシピを使います。色セルはモデル原点から独立して区切り、端には部分セルを残します。未指定時は従来どおり厚さと色が同じ格子です。
|
|
147
157
|
|
|
148
158
|
タイル配置の選択、座標、Z分割のプレート構成、併用時の成果物は[3MFタイル分割とZ分割](tiling.md)を参照してください。
|
|
@@ -173,7 +183,9 @@ lithop images/page.png --project-dir output/book
|
|
|
173
183
|
- `grid_columns`と`grid_rows`が同時に指定されていない、または正の整数ではない
|
|
174
184
|
- `tile_count`が1以上の整数ではない、配置名が不明、`grid`の行数 × 列数が総数と一致しない
|
|
175
185
|
- 行数または列数がXYセル数を超え、幅または高さが0セルになるタイルがある
|
|
176
|
-
- `separate_z_parts`が真偽値ではない、または`color_region_parts`が1
|
|
186
|
+
- `separate_z_parts`が真偽値ではない、または`color_region_parts`が1〜3の整数ではない
|
|
187
|
+
- `suppress_pale_colors`が真偽値ではない
|
|
188
|
+
- `yellow_mix_color`が`cyan`または`magenta`ではない、または`yellow_mix_percent`が0〜100の有限値ではない
|
|
177
189
|
- Z分離時に上部Whiteの最小厚さが0になる
|
|
178
190
|
- `color_pixel_size`が`null`でも`pixel_size`以上の正の有限値でもない
|
|
179
191
|
- `image_fit`が`cover`または`contain`ではない
|
|
@@ -182,7 +194,7 @@ lithop images/page.png --project-dir output/book
|
|
|
182
194
|
- 要求最小厚さが要求最大厚さを超える
|
|
183
195
|
- ノズル径が0.2または0.4ではない
|
|
184
196
|
- 色モデルが`cmy`ではない
|
|
185
|
-
- 色領域が4層、5層、7層のいずれでもない
|
|
197
|
+
- 色領域が4層、5層、7層、8層のいずれでもない
|
|
186
198
|
- 顔料順にCyan、Magenta、Yellowが各1回含まれない
|
|
187
199
|
- 余白が負、非数、または左右・上下の合計が画像領域を残さない
|
|
188
200
|
- 要求厚さ内に印刷可能なレイヤー境界がない
|
|
@@ -195,21 +207,21 @@ lithop images/page.png --project-dir output/book
|
|
|
195
207
|
要求厚さは、第1層と通常レイヤーで構成できるZ境界へ丸めます。実効最小厚さは要求値以上の最初の境界、実効最大厚さは要求値以下の最後の境界です。
|
|
196
208
|
|
|
197
209
|
```text
|
|
198
|
-
requested:
|
|
199
|
-
effective:
|
|
210
|
+
requested: 0.74–1.94 mm
|
|
211
|
+
effective: 0.74–1.94 mm
|
|
200
212
|
```
|
|
201
213
|
|
|
202
|
-
|
|
214
|
+
非分割の標準構造では、0.0〜0.1 mmをWhite下地、0.1〜0.66 mmを7層の色領域、0.66 mm以上を0.08 mm刻みのTop Whiteとして扱います。Z分割では色領域を8層へ固定し、0.1〜0.74 mmを色領域、0.74 mm以上をTop Whiteとして扱います。既定の最大厚み1.94 mmは印刷可能な境界と一致します。
|
|
203
215
|
|
|
204
216
|
## 積層構造の比較
|
|
205
217
|
|
|
206
|
-
`color_layer_count`と`pigment_order
|
|
218
|
+
`color_layer_count`と`pigment_order`は、非分割の標準7層・YMC順と、比較用の4層・5層・8層や別順序を再現する設定です。`pigment_order`はCMY、CYM、MCY、MYC、YCM、YMCから選べます。Z分割時の`color_layer_count`は8層へ固定されます。Whiteは顔料列の後ろに固定されます。
|
|
207
219
|
|
|
208
220
|
## 校正片に使う設定
|
|
209
221
|
|
|
210
222
|
`lithop calibrate`は、厚さ、ノズル、レイヤー高さ、色モデル、色領域の層数、顔料順、三角形数上限を設定から読みます。固定レイアウトで入力画像を使わないため、`width`、`height`、`margin_*`、画像配置、明るさ・コントラスト・彩度、`pixel_size`、`color_pixel_size`、`maximum_input_pixels`は使いません。
|
|
211
223
|
|
|
212
|
-
現在の校正片は7
|
|
224
|
+
現在の校正片は7層と選択した`pigment_order`、White厚みを8段階取れる範囲を要求します。通常生成で使う`--calibration-profile`は入力設定キーではなくCLIオプションです。詳しくは[色校正](calibration.md)を参照してください。
|
|
213
225
|
|
|
214
226
|
## 出力される settings.json
|
|
215
227
|
|
data/docs/getting-started.md
CHANGED
|
@@ -10,20 +10,20 @@ Lithopは、画像からカラーLithophane(リトファン)の3MFとWhite
|
|
|
10
10
|
- JPEG、PNG、SVG(librsvg)、ICCプロファイルを扱えるlibvips
|
|
11
11
|
- 印刷する場合はBambu Studio、AMS対応プリンタ、必要なCMYWフィラメント
|
|
12
12
|
|
|
13
|
-
標準構造は0.2 mmノズル、White下地
|
|
13
|
+
標準構造は0.2 mmノズル、White下地1層0.10 mm、0.08 mmのCMYW色領域7層、0.08 mmの連続高White上面を使います。Lithopはスライスや印刷開始を行いません。
|
|
14
14
|
|
|
15
15
|
## インストール
|
|
16
16
|
|
|
17
|
-
0.
|
|
17
|
+
0.4.0を使う場合は、libvips、Rust、バージョンを指定したLithopをインストールします。
|
|
18
18
|
|
|
19
19
|
```sh
|
|
20
20
|
brew install vips rust
|
|
21
|
-
gem install lithop -v 0.
|
|
21
|
+
gem install lithop -v 0.4.0
|
|
22
22
|
lithop --version
|
|
23
23
|
lithop doctor
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
`lithop --version`が`0.
|
|
26
|
+
`lithop --version`が`0.4.0`を表示することを確認します。
|
|
27
27
|
`lithop doctor`では`backend`が`rust`、`extension_version`がLithopと同じバージョンであることを確認します。
|
|
28
28
|
|
|
29
29
|
ソースチェックアウトから実行する場合は、代わりに次を実行します。
|
|
@@ -65,6 +65,12 @@ bundle exec lithop path/to/image.jpeg
|
|
|
65
65
|
|
|
66
66
|
CLIで指定した値は`config/settings.json`より優先されます。ノズル径は生成記録に保存されますが、形状やレイヤー高さを自動変更しないため、Bambu Studioにも同じ条件を設定してください。
|
|
67
67
|
|
|
68
|
+
Yellowの透過が強い材料・光源では、Yellow被覆量の一部をCyanまたはMagentaへ置き換えられます。初期値は0%で無効です。まずカラーチャートで少量から比較してください。
|
|
69
|
+
|
|
70
|
+
```sh
|
|
71
|
+
bundle exec lithop examples/cmy-color-chart.svg --yellow-mix-color cyan --yellow-mix-percent 20
|
|
72
|
+
```
|
|
73
|
+
|
|
68
74
|
## 入力画像の扱い
|
|
69
75
|
|
|
70
76
|
対応形式はJPEG、PNG、非圧縮SVGです。LithopはEXIF Orientationを適用し、透過部分をWhiteへ合成し、埋め込みICCプロファイルを使ってsRGBへ変換します。SVGは96 DPIを基準に、厚さ格子と色格子を満たす解像度へメモリ内で描画します。PNGの中間ファイルは作りません。SVGファイルの上限は15,000,000バイト(15 MB)です。既定では指定した縦横比へ中央クロップします。構図は`--crop-position-x`、`--crop-position-y`、`--crop-scale`で調整でき、`--image-fit contain`では画像全体をWhite領域内へ収められます。
|
|
@@ -75,7 +81,7 @@ SVGは正の`width`・`height`(単位なし、`px`、`mm`、`in`)または`v
|
|
|
75
81
|
|
|
76
82
|
上部Whiteの高さは、材料表示色と同梱カラーチャートの配合色では図中の明暗値を使い、それ以外の入力色ではRec.601輝度を使います。このため、カラーチャートではYellowを含む全色列の同じ明暗行が同じWhite高さになります。
|
|
77
83
|
|
|
78
|
-
|
|
84
|
+
CLIは入力画像をその場で読み取り、変更、アップロード、削除を行わず、完了済みの`build/<job_id>/`へコピーしません。ローカルUIはプレビューと別プロセスでの変換に必要な間だけ`build/.previews/`と`build/.web/`へ一時保存し、処理後に回収します。詳しくは[ローカルブラウザUI](local-ui.md#一時ファイルとローカル性)を参照してください。
|
|
79
85
|
|
|
80
86
|
## 結果を確認する
|
|
81
87
|
|
|
@@ -90,7 +96,7 @@ SVGは正の`width`・`height`(単位なし、`px`、`mm`、`in`)または`v
|
|
|
90
96
|
|
|
91
97
|
確認後、`lithop.3mf`をBambu Studioへモデルとして読み込みます。材料部品を個別に移動、整列、拡大縮小、結合しないでください。
|
|
92
98
|
|
|
93
|
-
タイル分割またはZ分割を使う場合は、[3MFタイル分割とZ分割](tiling.md)に従って各3MF、組み立て位置、Bambu Studioのプレートを確認してください。
|
|
99
|
+
タイル分割またはZ分割を使う場合は、[3MFタイル分割とZ分割](tiling.md)に従って各3MF、組み立て位置、Bambu Studioのプレートを確認してください。Z分割では色領域が8層、各プレートの第1層が0.10 mm、それ以降が0.08 mm積層ピッチとなり、3分割のZプレート3にはCMYを含みません。Zプレート3はBase White 3層とTop White 1層以上で、最薄部をWhite合計4層・0.34 mmにします。
|
|
94
100
|
|
|
95
101
|
## 生成物を削除する
|
|
96
102
|
|
data/docs/local-ui.md
CHANGED
|
@@ -26,7 +26,7 @@ lithop ui --port 4667 --project-dir /path/to/project
|
|
|
26
26
|
|
|
27
27
|
## 画面を移動する
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
上部の主メニューで「作成」「ジョブ」「プリセット」を切り替えます。「作成」は画像・変換設定と入力プレビュー、「ジョブ」は履歴・進捗・生成結果、「プリセット」は名前付き設定と下書きの管理を表示します。主メニューは画面幅にかかわらず表示され、狭い画面では横方向に収まる簡潔な表示になります。
|
|
30
30
|
|
|
31
31
|
画面を切り替えても、選択中の画像、編集値、設定区分の開閉、プレビューの倍率・位置、履歴の検索条件と選択状態を保持します。ブラウザの戻る・進むにも対応し、URLの`view`は表示画面、`job`は閲覧ジョブを表します。再読み込み後は画面とジョブを復元しますが、ブラウザの制約により入力画像は再選択が必要です。
|
|
32
32
|
|
|
@@ -38,17 +38,18 @@ JPEG、PNG、SVGを1ファイル選択します。画面では次の設定を変
|
|
|
38
38
|
|
|
39
39
|
- 完成幅・高さ、XYセル、任意の色セル
|
|
40
40
|
- `cover`/`contain`、横・縦位置、クロップ倍率
|
|
41
|
-
-
|
|
41
|
+
- 明るさ、コントラスト、彩度、淡色のWhite化
|
|
42
|
+
- 色の積層順、Yellowへ混ぜる色と割合、ノズル径
|
|
42
43
|
- 最小・最大厚み、上下左右のWhite余白
|
|
43
|
-
- XYタイル数と配置、Z
|
|
44
|
+
- XYタイル数と配置、Z方向の別プレート化、色領域の分割数。Z分割の要約には8層、Base White層数、最小プレート厚を表示する。3分割時のZプレート3はBase White 3層とTop White 1層以上で最小0.34 mm
|
|
44
45
|
|
|
45
|
-
|
|
46
|
+
画像はファイル選択欄へのドラッグ&ドロップにも対応します。「変換を開始」と現在の準備状態は画像選択欄の直下にあり、詳細を開くと完成寸法、セル、画像調整、Yellow補正、分割方法を確認できます。設定は「基本設定」「画像配置」「画像調整」「Yellow補正」「分割」「詳細設定」に分かれます。「基本設定」には色の積層順を含み、「Yellow補正」にはYellowへ混ぜる色とYellow混色率をまとめ、初期状態では閉じています。幅と高さの交換、縦横比の固定、区分ごとの初期値への復元も利用できます。画像配置と画像調整はスライダーと数値入力が同期します。grid以外の行列数と、Z分割を使用しない場合の色領域分割数は送信されません。
|
|
46
47
|
|
|
47
|
-
|
|
48
|
+
画像の準備中に開始した場合は最新画像の検証を待って1回だけ送信します。入力エラー時は該当する設定区分を開きます。変換後に設定や画像を変更すると変更項目数を示し、「表示中の変換ジョブ」には編集値と異なる設定名を表示します。編集中の入力と履歴から開いたジョブは別に管理されるため、新しい画像を選んでも過去ジョブの「補正後入力」は置き換わりません。
|
|
48
49
|
|
|
49
50
|
初期値は選択したプロジェクトの`config/settings.json`と組み込み既定値から読みます。画面で確定した値はCLIと同じ`Settings`で検証され、White高さとCMYWレシピを作る共通の変換エンジンへ渡されます。
|
|
50
51
|
|
|
51
|
-
|
|
52
|
+
「プリセット」画面では、左の保存設定ペインで名前付きプリセットまたは下書きを選び、右の管理ペインで現在の変換設定を保存・名前変更・削除できます。プリセットは作成への適用ができ、過去ジョブの「作成に適用」も同じ操作で現在値との差分を確認してから反映します。適用後は「作成」を表示し、現在選択している画像は置き換えません。画面移動は上部の主メニューへ統一しています。保存対象は画面で編集できる変換設定だけで、画像、一時入力ID、ジョブID、成果物パスは含みません。UI再起動後も設定は`config/ui-settings.json`から復元できますが、画像は再選択が必要です。このバージョン付きUI専用ファイルはGit追跡対象外で、`config/settings.json`を上書きしません。保存値は読込時にも共通`Settings`で検証し、未知の項目や非対応形式は理由を表示して適用しません。
|
|
52
53
|
|
|
53
54
|
JPEG/PNGは選択直後に簡易表示し、その後、共通画像処理で確定した入力プレビューへ置き換えます。SVGはサーバー側で既存の安全性検証を通してからPNGへラスター化するため、未検証のSVGをブラウザへ直接読み込みません。確定した入力プレビューにはEXIF回転、ICCからsRGBへの変換、透過部分のWhite合成、完成寸法と余白、`cover`/`contain`、クロップ、明るさ・コントラスト・彩度が反映されます。設定変更は約250 ms単位で反映し、古い処理結果は新しい表示を上書きしません。
|
|
54
55
|
|
|
@@ -56,11 +57,11 @@ JPEG/PNGは選択直後に簡易表示し、その後、共通画像処理で
|
|
|
56
57
|
|
|
57
58
|
「大きく表示」では入力を画面内の専用表示で確認できます。「大きく比較」では補正後入力と生成結果を同じ倍率・位置で並べます。専用表示はドラッグに加えて矢印キーで移動し、`+`/`-`で拡大・縮小、`0`で全体表示へ戻せます。Escまたは「閉じる」で元の操作箇所へ戻ります。
|
|
58
59
|
|
|
59
|
-
15インチ級ノートの基準画角を1440 × 900 CSS pxとします。幅
|
|
60
|
+
15インチ級ノートの基準画角を1440 × 900 CSS pxとします。幅900pxを超える場合は「作成」の設定と入力プレビュー、「ジョブ」の履歴と詳細をそれぞれ左右に並べます。入力プレビューと履歴の追従位置は、折り返しを含む上部ヘッダーの実際の高さから決めます。幅900px以下では縦配置へ切り替え、ジョブ詳細の「一覧へ戻る」で履歴へ復帰します。物理インチはブラウザから一意に判定できないため、切り替えにはCSSピクセル幅を使います。
|
|
60
61
|
|
|
61
62
|
## 変換の進捗と中止
|
|
62
63
|
|
|
63
|
-
|
|
64
|
+
「変換を開始」を押すとページを再読み込みせずジョブ画面へ切り替え、選択画像、編集値、スクロール位置を保持したまま、PumaのUIプロセスとは別のRubyプロセスで変換します。開始後に設定を編集すると、実行した設定から変わったことを画面に表示します。画面は`build/.jobs/<job_id>.json`を読み、工程、進捗率、完了・失敗・中止を更新します。JavaScriptを利用できない場合は通常のフォーム送信へフォールバックします。
|
|
64
65
|
|
|
65
66
|
変換ジョブには最終更新時刻と実行中の経過時間を表示します。一時的に状態を取得できない場合は、変換失敗と区別して通信エラーを示し、自動再接続と「状態を再取得」を利用できます。再取得では変換開始や停止要求を重複送信しません。失敗・停止後も編集内容を保持し、画像の再選択、設定の確認、対象ジョブのローカルログ表示へ移動できます。
|
|
66
67
|
|
|
@@ -68,6 +69,8 @@ JPEG/PNGは選択直後に簡易表示し、その後、共通画像処理で
|
|
|
68
69
|
|
|
69
70
|
成果物ディレクトリを原子的に公開する直前が停止と完了の境界です。公開前の停止は`cancelled`となり未完成データを回収します。公開後に停止要求が届いた場合は成果物を保持して`completed`とします。子プロセスが異常終了した場合も、UIが終了を確認して状態と一時データを再照合します。
|
|
70
71
|
|
|
72
|
+
### 一時ファイルとローカル性
|
|
73
|
+
|
|
71
74
|
選択後の画像はランダムIDの`build/.previews/`へ一時保存し、画像交換、画面離脱、変換開始時に回収します。異常終了で残ったものは24時間経過後のUI起動時に回収します。変換開始後は`build/.web/`へコピーし、子プロセスの終了後に回収します。完了済みの`build/<job_id>/`には入力画像をコピーしません。
|
|
72
75
|
|
|
73
76
|
## 成果物を確認する
|
|
@@ -111,4 +114,4 @@ npx playwright install chromium webkit
|
|
|
111
114
|
npm run test:browser
|
|
112
115
|
```
|
|
113
116
|
|
|
114
|
-
ChromiumとWebKit
|
|
117
|
+
ChromiumとWebKitで、画像選択直下の開始操作、プレビュー準備中を含むジョブ作成、設定保持、設定区分メニュー、プリセットの2ペイン操作、タイル境界、Z分割項目、成果物切り替え、Bambu Studioへ渡す3MFの選択、拡大専用表示、同期した比較、全体図からのタイル選択、通信切断からの復帰、設定再利用、2ジョブ比較、履歴検索、ZIP取得、複数削除、停止、主メニュー、画面間の状態保持、戻る・進む、共通ヘッダーの停止、ジョブ詳細のキーボード操作を確認します。1440 × 900、1024 × 768、600 × 800、390 × 844と200%表示相当のCSS表示領域では、横方向のはみ出しとペイン配置も検査します。試験では起動処理を差し替え、Bambu Studioを実際には起動しません。失敗時のスクリーンショット、動画、トレースは`tmp/playwright-results/`へ保存します。受入ブラウザは実機Chromeとし、WebKitはブラウザエンジン間の回帰検証に使用します。
|
data/docs/tiling.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 3MFタイル分割とZ分割
|
|
2
2
|
|
|
3
|
-
Lithopは、1枚では印刷できない大きさのリトファンを、指定枚数のCMYW 3MFへXY
|
|
3
|
+
Lithopは、1枚では印刷できない大きさのリトファンを、指定枚数のCMYW 3MFへXY方向に分割できます。XY分割後も、完成時の幅・高さ、White厚み、CMYWレシピ、画像の向きは変わりません。必要なら各タイルを連続プレートへZ方向に分けられます。分割プレートには強度を確保するBase Whiteをそれぞれ追加し、第1層を0.10 mm、以降を0.08 mm積層ピッチに統一します。3分割時のZプレート3はBase White 3層とTop White 1層のWhite合計4層となり、最小厚みは0.34 mmです。
|
|
4
4
|
|
|
5
5
|
このページでは、タイルの数と配置、出力座標、Bambu Studioで確認する対象を定義します。材料、積層構造、Z境界は[CMYWの色モデルと積層構造](color-model.md)、入力値の全一覧は[生成オプションと設定ファイル](config.md)を参照してください。
|
|
6
6
|
|
|
@@ -10,10 +10,10 @@ Lithopは、1枚では印刷できない大きさのリトファンを、指定
|
|
|
10
10
|
| --- | --- | --- |
|
|
11
11
|
| 通常の1枚出力 | 既定値 | `lithop.3mf`を1つ。Bambu Studioでは1プレート |
|
|
12
12
|
| XY方向の分割 | `tile_count: 2`以上 | `tiles/tile_rNN_cNN.3mf`を指定枚数。各ファイルは1プレート |
|
|
13
|
-
| Z方向の分割 | `separate_z_parts: true` | 各3MF
|
|
14
|
-
| XYとZの併用 | 両方を指定 |
|
|
13
|
+
| Z方向の分割 | `separate_z_parts: true` | 各3MFの完成モデルを連続Z範囲へ分割。標準設定では3プレート |
|
|
14
|
+
| XYとZの併用 | 両方を指定 | タイルごとに同じZプレート構成を持つ3MF |
|
|
15
15
|
|
|
16
|
-
`cmyk_white.stl`、`preview.png`、`transmission.png`、`thickness.png`、材料マスクは、常に分割前の完成全体を表します。XY分割時だけカラー3MFは`tiles/`へ出力され、ルートに`lithop.3mf`は作りません。各3MFに対応する`tiles/tile_rNN_cNN-preview.png`も生成し、ローカルUIの変換ジョブでは全タイルを同時に確認できます。
|
|
16
|
+
`cmyk_white.stl`、`preview.png`、`transmission.png`、`thickness.png`、材料マスクは、常に分割前の完成全体を表します。Z分割したカラー3MFでは元モデルのBase White 1層を除外し、各プレート専用のBase Whiteへ置き換えます。3分割時はZプレート1・2が1層、Zプレート3が3層です。XY分割時だけカラー3MFは`tiles/`へ出力され、ルートに`lithop.3mf`は作りません。各3MFに対応する`tiles/tile_rNN_cNN-preview.png`も生成し、ローカルUIの変換ジョブでは全タイルを同時に確認できます。
|
|
17
17
|
|
|
18
18
|
## XY方向のタイル分割
|
|
19
19
|
|
|
@@ -74,7 +74,7 @@ JSON設定ファイルでは次のように指定します。
|
|
|
74
74
|
|
|
75
75
|
複数のタイルを1つの完成物として配置する場合は、各3MFの材料部品を動かさず、対応する`offset_mm`を使ってタイル全体を配置します。`tile-layout.svg`と`manifest.json`は、その配置を復元するための正本です。
|
|
76
76
|
|
|
77
|
-
## Z
|
|
77
|
+
## Z方向のプレート分割
|
|
78
78
|
|
|
79
79
|
`--separate-z-parts`を指定すると、各3MFのZ方向を複数のBambu Studioプレートへ分けます。
|
|
80
80
|
|
|
@@ -82,24 +82,23 @@ JSON設定ファイルでは次のように指定します。
|
|
|
82
82
|
lithop image.svg --separate-z-parts
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
|
|
85
|
+
`--color-region-parts`はZプレート数を1〜3で指定します。Z分割では色領域を8層・0.64 mmへ変更します。3を指定した場合は元モデルのBase White 1層を除外し、0.32 mmの均等な元Z範囲を各プレートへ割り当てます。CMYとTop Whiteの積層ピッチは0.08 mmです。8層のCMY領域はZプレート1・2に収まり、Zプレート2の上端Z=0.74 mmで終了します。Zプレート1・2のBase Whiteは1層・0.10 mmです。Zプレート3はCMYを含まないため、Base Whiteを3層・0.26 mmとし、最薄部をTop White 1層と合わせてWhite合計4層・0.34 mmにします。3枚を組み立てた最薄部は1.18 mm、最大厚みは2.30 mmです。
|
|
86
86
|
|
|
87
|
-
| プレート | 元のZ範囲 | 内容 |
|
|
88
|
-
| --- | --- | --- |
|
|
89
|
-
| `
|
|
90
|
-
| `
|
|
91
|
-
| `
|
|
92
|
-
| `Top White` | 0.9 mm–可変上面 | 色領域より上のWhite |
|
|
87
|
+
| プレート | 元のZ範囲 | 印刷時の厚み | 内容 |
|
|
88
|
+
| --- | --- | ---: | --- |
|
|
89
|
+
| `Z plate 1` | 0.10–0.42 mm | 0.42 mm | Base White第1層0.10 mm + CMYW色領域0.32 mm |
|
|
90
|
+
| `Z plate 2` | 0.42–0.74 mm | 0.42 mm | Base White第1層0.10 mm + CMYW色領域0.32 mm |
|
|
91
|
+
| `Z plate 3` | 0.74–1.06 mm(最大1.94 mm) | 0.34–1.46 mm | Base White 3層0.26 mm + Top White 0.08–1.20 mm(CMYなし) |
|
|
93
92
|
|
|
94
|
-
|
|
93
|
+
Base Whiteの元のZ範囲0.0–0.1 mmは、Z分割3MFへそのまま出力しません。Zプレート1・2へ専用のBase White 1層・0.10 mm、Zプレート3へ3層・0.26 mmを追加し、その上へ8層の色領域とTop Whiteを連続するZ範囲として1回だけ配置します。3枚を元の順番で重ねた厚みは`1.18–2.30 mm`です。可変厚みはTop Whiteだけへ加えます。未使用の顔料部品は省略されますが、Extruder番号はCyan=1、Magenta=2、Yellow=3、White=4のままです。
|
|
95
94
|
|
|
96
|
-
`color_region_parts`は1
|
|
95
|
+
`color_region_parts`は1〜3を指定でき、指定数どおりに出力します。生成ジョブの`manifest.json`には`requested_parts`、`resolved_parts`、`minimum_source_plate_thickness`、`minimum_plate_thickness`、`adjusted_minimum_total_thickness`、Base Whiteの層数と厚み、各プレートの元のZ境界、最大印刷厚み、最小印刷厚み、積層順を記録します。
|
|
97
96
|
|
|
98
|
-
分離したZ部品を印刷後に組み立てる場合は、`
|
|
97
|
+
分離したZ部品を印刷後に組み立てる場合は、`Z plate 1`から順に、マニフェストの積層順どおりに同じXY位置で重ねます。各プレート内の部品を移動、整列、拡大縮小、結合してはいけません。
|
|
99
98
|
|
|
100
99
|
## XY分割とZ分割を併用する
|
|
101
100
|
|
|
102
|
-
次の例は、完成全体を横2
|
|
101
|
+
次の例は、完成全体を横2枚へ分け、各タイルを標準設定の3プレートにします。
|
|
103
102
|
|
|
104
103
|
```sh
|
|
105
104
|
lithop image.svg --tile-count 2 --tile-layout columns --separate-z-parts
|
|
@@ -112,9 +111,9 @@ build/<job_id>/
|
|
|
112
111
|
├── cmyk_white.stl
|
|
113
112
|
├── tile-layout.svg
|
|
114
113
|
├── tiles/
|
|
115
|
-
│ ├── tile_r01_c01.3mf #
|
|
114
|
+
│ ├── tile_r01_c01.3mf # Z plate 1–3
|
|
116
115
|
│ ├── tile_r01_c01-preview.png
|
|
117
|
-
│ ├── tile_r01_c02.3mf #
|
|
116
|
+
│ ├── tile_r01_c02.3mf # Z plate 1–3
|
|
118
117
|
│ └── tile_r01_c02-preview.png
|
|
119
118
|
├── manifest.json
|
|
120
119
|
├── settings.json
|
|
@@ -128,7 +127,7 @@ build/<job_id>/
|
|
|
128
127
|
1. `preview.png`、`thickness.png`、4枚の材料マスクで、分割前の色・厚みが意図どおりか確認する。
|
|
129
128
|
2. XY分割時は`tile-layout.svg`と`manifest.json`で、枚数、ID、完成全体での位置、タイル寸法を確認する。
|
|
130
129
|
3. 各タイル3MFをBambu Studioで開き、Cyan=1、Magenta=2、Yellow=3、White=4の材料割り当てを確認する。
|
|
131
|
-
4. Z
|
|
130
|
+
4. Z分割時は生成された全`Z plate`を確認し、`manifest.json`の解決後プレート数、最小厚み、Z境界、積層順に合わせる。
|
|
132
131
|
5. すべてのレイヤーを確認してからスライスする。Lithopはスライス、造形可否の判定、印刷開始を行わない。
|
|
133
132
|
|
|
134
133
|
分割した実機での継ぎ目の位置ずれ、色差、光漏れはまだ評価対象です。小さい入力と少数タイルで、Bambu Studioのレイヤープレビューを確認してから完成寸法へ進めてください。
|
data/docs/troubleshooting.md
CHANGED
|
@@ -29,7 +29,7 @@ bundle exec lithop --version
|
|
|
29
29
|
|
|
30
30
|
**対処:** macOSでは`brew install rust`を実行し、`rustc --version`と`cargo --version`を確認してからLithopを再インストールします。ソースチェックアウトでは`bundle install`に続けて`bundle exec rake compile`を実行します。`lithop doctor`で`backend: rust`と拡張バージョンを確認できます。Ruby版との比較用に`LITHOP_DISABLE_NATIVE=1`を指定できますが、インストール時の拡張ビルドを省略する設定ではありません。
|
|
31
31
|
|
|
32
|
-
現在のCI対象はmacOSとRuby 4.0で、実測環境はApple siliconです。他のOS、CPU、Ruby ABI向けのビルド済みgemは配布せず、0.
|
|
32
|
+
現在のCI対象はmacOSとRuby 4.0で、実測環境はApple siliconです。他のOS、CPU、Ruby ABI向けのビルド済みgemは配布せず、0.4.0は利用環境でRust拡張をビルドするソースgemとして扱います。
|
|
33
33
|
|
|
34
34
|
## 入力画像を読めない
|
|
35
35
|
|
|
@@ -67,9 +67,9 @@ bundle exec lithop --version
|
|
|
67
67
|
|
|
68
68
|
**最初の確認:** 色領域の層数、第1層、通常レイヤー、要求最小・最大厚さを確認します。
|
|
69
69
|
|
|
70
|
-
**原因候補:** 選択した層構造に、下地White、色領域、`top_white_start`までのWhite領域、設定された最小上部White層を収容できません。メッセージ中の最小値は現在の設定から計算されます。標準設定の`minimum_top_white_layers`は`
|
|
70
|
+
**原因候補:** 選択した層構造に、下地White、色領域、`top_white_start`までのWhite領域、設定された最小上部White層を収容できません。メッセージ中の最小値は現在の設定から計算されます。標準設定の`minimum_top_white_layers`は`1`です。
|
|
71
71
|
|
|
72
|
-
**対処:** `--min-thickness`または`--max-thickness`を必要最小厚さ以上にします。標準の7層構造では
|
|
72
|
+
**対処:** `--min-thickness`または`--max-thickness`を必要最小厚さ以上にします。標準の7層構造では0.74 mmです。
|
|
73
73
|
|
|
74
74
|
**関連:** [レイヤー境界と実効厚さ](config.md#レイヤー境界と実効厚さ)
|
|
75
75
|
|
|
@@ -7,12 +7,12 @@ module Lithop
|
|
|
7
7
|
private
|
|
8
8
|
|
|
9
9
|
def validate_structure!
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
end
|
|
10
|
+
return validate_white_levels! if @settings.color_layer_count == 7
|
|
11
|
+
|
|
12
|
+
raise ConfigurationError, "calibration target requires seven color layers"
|
|
13
|
+
end
|
|
15
14
|
|
|
15
|
+
def validate_white_levels!
|
|
16
16
|
levels = @settings.layer_structure.normal_layer_count(@settings.effective_maximum_thickness) -
|
|
17
17
|
@settings.layer_structure.normal_layer_count(@settings.effective_minimum_thickness) + 1
|
|
18
18
|
return if levels >= Target::WHITE_STAGE_COUNT
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Lithop
|
|
4
|
+
# Adds sRGB, pale-color, and Yellow transmission adjustments.
|
|
5
|
+
module CLIImageAdjustmentOptions
|
|
6
|
+
module_function
|
|
7
|
+
|
|
8
|
+
def add(parser, options)
|
|
9
|
+
parser.on("--brightness PERCENT", Float, "Brightness: -100..100 (default: 0)") do |value|
|
|
10
|
+
options[:brightness] = value
|
|
11
|
+
end
|
|
12
|
+
parser.on("--contrast PERCENT", Float, "Contrast: -100..100 (default: 0)") do |value|
|
|
13
|
+
options[:contrast] = value
|
|
14
|
+
end
|
|
15
|
+
parser.on("--saturation PERCENT", Float, "Saturation: -100..100 (default: 0)") do |value|
|
|
16
|
+
options[:saturation] = value
|
|
17
|
+
end
|
|
18
|
+
parser.on("--suppress-pale-colors", "Convert very pale colors to White") do
|
|
19
|
+
options[:suppress_pale_colors] = true
|
|
20
|
+
end
|
|
21
|
+
parser.on("--no-suppress-pale-colors", "Keep very pale colors as CMY candidates (default)") do
|
|
22
|
+
options[:suppress_pale_colors] = false
|
|
23
|
+
end
|
|
24
|
+
parser.on("--yellow-mix-color COLOR", "Pigment mixed into Yellow: cyan/magenta (default: cyan)") do |value|
|
|
25
|
+
options[:yellow_mix_color] = value.downcase
|
|
26
|
+
end
|
|
27
|
+
parser.on(
|
|
28
|
+
"--yellow-mix-percent PERCENT", Float,
|
|
29
|
+
"Yellow coverage replaced by mix pigment: 0..100 (default: 0)"
|
|
30
|
+
) { |value| options[:yellow_mix_percent] = value }
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -10,7 +10,7 @@ module Lithop
|
|
|
10
10
|
add_tiles(parser, options)
|
|
11
11
|
add_margins(parser, options)
|
|
12
12
|
add_placement(parser, options)
|
|
13
|
-
|
|
13
|
+
CLIImageAdjustmentOptions.add(parser, options)
|
|
14
14
|
add_thickness(parser, options)
|
|
15
15
|
add_sampling(parser, options)
|
|
16
16
|
end
|
|
@@ -39,10 +39,10 @@ module Lithop
|
|
|
39
39
|
parser.on("--tile-columns COUNT", Integer, "Tile columns for grid layout") do |value|
|
|
40
40
|
options[:tile_columns] = value
|
|
41
41
|
end
|
|
42
|
-
parser.on("--separate-z-parts", "
|
|
42
|
+
parser.on("--separate-z-parts", "Slice the complete model into contiguous Z plates") do
|
|
43
43
|
options[:separate_z_parts] = true
|
|
44
44
|
end
|
|
45
|
-
parser.on("--color-region-parts COUNT", Integer, "
|
|
45
|
+
parser.on("--color-region-parts COUNT", Integer, "Z plate count (1-3); thinnest plate is 0.34 mm") do |value|
|
|
46
46
|
options[:color_region_parts] = value
|
|
47
47
|
end
|
|
48
48
|
end
|
|
@@ -72,24 +72,11 @@ module Lithop
|
|
|
72
72
|
end
|
|
73
73
|
private_class_method :add_placement
|
|
74
74
|
|
|
75
|
-
def add_adjustments(parser, options)
|
|
76
|
-
parser.on("--brightness PERCENT", Float, "Brightness: -100..100 (default: 0)") do |value|
|
|
77
|
-
options[:brightness] = value
|
|
78
|
-
end
|
|
79
|
-
parser.on("--contrast PERCENT", Float, "Contrast: -100..100 (default: 0)") do |value|
|
|
80
|
-
options[:contrast] = value
|
|
81
|
-
end
|
|
82
|
-
parser.on("--saturation PERCENT", Float, "Saturation: -100..100 (default: 0)") do |value|
|
|
83
|
-
options[:saturation] = value
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
private_class_method :add_adjustments
|
|
87
|
-
|
|
88
75
|
def add_thickness(parser, options)
|
|
89
|
-
parser.on("--min-thickness MM", Float, "Requested minimum model thickness (default:
|
|
76
|
+
parser.on("--min-thickness MM", Float, "Requested minimum model thickness (default: 0.74)") do |value|
|
|
90
77
|
options[:minimum_thickness] = value
|
|
91
78
|
end
|
|
92
|
-
parser.on("--max-thickness MM", Float, "Requested maximum model thickness (default:
|
|
79
|
+
parser.on("--max-thickness MM", Float, "Requested maximum model thickness (default: 1.94)") do |value|
|
|
93
80
|
options[:maximum_thickness] = value
|
|
94
81
|
end
|
|
95
82
|
end
|
data/lib/lithop/cli/options.rb
CHANGED
|
@@ -36,10 +36,10 @@ module Lithop
|
|
|
36
36
|
def calibration(options, out)
|
|
37
37
|
OptionParser.new do |parser|
|
|
38
38
|
parser.banner = "Usage: lithop calibrate [options]"
|
|
39
|
-
parser.on("--min-thickness MM", Float, "Requested minimum thickness (default:
|
|
39
|
+
parser.on("--min-thickness MM", Float, "Requested minimum thickness (default: 0.74)") do |value|
|
|
40
40
|
options[:minimum_thickness] = value
|
|
41
41
|
end
|
|
42
|
-
parser.on("--max-thickness MM", Float, "Requested maximum thickness (default:
|
|
42
|
+
parser.on("--max-thickness MM", Float, "Requested maximum thickness (default: 1.94)") do |value|
|
|
43
43
|
options[:maximum_thickness] = value
|
|
44
44
|
end
|
|
45
45
|
add_print_settings(parser, options)
|
|
@@ -74,10 +74,10 @@ module Lithop
|
|
|
74
74
|
parser.on("--color-model MODEL", "Color model (default: cmy)") do |value|
|
|
75
75
|
options[:color_model] = value.downcase
|
|
76
76
|
end
|
|
77
|
-
parser.on("--color-layer-count COUNT", Integer, "CMY/W color layers: 4/5/7 (default: 7)") do |value|
|
|
77
|
+
parser.on("--color-layer-count COUNT", Integer, "CMY/W color layers: 4/5/7/8 (default: 7; Z split: 8)") do |value|
|
|
78
78
|
options[:color_layer_count] = value
|
|
79
79
|
end
|
|
80
|
-
parser.on("--pigment-order LIST", "Pigment order, e.g.
|
|
80
|
+
parser.on("--pigment-order LIST", "Pigment order, e.g. yellow,magenta,cyan (default: YMC)") do |value|
|
|
81
81
|
options[:pigment_order] = value
|
|
82
82
|
end
|
|
83
83
|
end
|