pacxio 0.0.1__tar.gz
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.
- pacxio-0.0.1/.gitignore +29 -0
- pacxio-0.0.1/LICENSE +21 -0
- pacxio-0.0.1/PKG-INFO +108 -0
- pacxio-0.0.1/README.md +89 -0
- pacxio-0.0.1/conventions/paint.yaml +58 -0
- pacxio-0.0.1/profiles/default.yaml +157 -0
- pacxio-0.0.1/profiles/materials.yaml +28 -0
- pacxio-0.0.1/profiles/render-materials.json +121 -0
- pacxio-0.0.1/pyproject.toml +81 -0
- pacxio-0.0.1/skill/packaging-prepress/SKILL.md +81 -0
- pacxio-0.0.1/skill/packaging-prepress/agents/openai.yaml +8 -0
- pacxio-0.0.1/skill/packaging-prepress/references/box-styles.md +210 -0
- pacxio-0.0.1/skill/packaging-prepress/references/commands.md +73 -0
- pacxio-0.0.1/skill/packaging-prepress/references/concept.md +222 -0
- pacxio-0.0.1/skill/packaging-prepress/references/content.md +95 -0
- pacxio-0.0.1/skill/packaging-prepress/references/delivery.md +25 -0
- pacxio-0.0.1/skill/packaging-prepress/references/design.md +54 -0
- pacxio-0.0.1/skill/packaging-prepress/references/factory-profile.md +39 -0
- pacxio-0.0.1/skill/packaging-prepress/references/finishes.md +76 -0
- pacxio-0.0.1/skill/packaging-prepress/references/fonts.md +121 -0
- pacxio-0.0.1/skill/packaging-prepress/references/layout-draft.md +116 -0
- pacxio-0.0.1/skill/packaging-prepress/references/mockup.md +109 -0
- pacxio-0.0.1/skill/packaging-prepress/references/prepress-rules.md +67 -0
- pacxio-0.0.1/skill/packaging-prepress/references/requirements.md +65 -0
- pacxio-0.0.1/skill/packaging-prepress/references/resume.md +51 -0
- pacxio-0.0.1/skill/packaging-prepress/references/structures.md +133 -0
- pacxio-0.0.1/skill/packaging-prepress/references/studio.md +114 -0
- pacxio-0.0.1/skill/packaging-prepress/references/troubleshooting.md +90 -0
- pacxio-0.0.1/skill/packaging-prepress/references/vector.md +174 -0
- pacxio-0.0.1/skill/packaging-prepress/references/visual-prompts.md +73 -0
- pacxio-0.0.1/skill/packaging-prepress/scripts/check_env.py +222 -0
- pacxio-0.0.1/skill/packaging-prepress/scripts/fetch_fonts.py +1 -0
- pacxio-0.0.1/src/pacxio/__init__.py +3 -0
- pacxio-0.0.1/src/pacxio/__main__.py +6 -0
- pacxio-0.0.1/src/pacxio/api.py +2349 -0
- pacxio-0.0.1/src/pacxio/attachments.py +286 -0
- pacxio-0.0.1/src/pacxio/brief.py +366 -0
- pacxio-0.0.1/src/pacxio/cli.py +4062 -0
- pacxio-0.0.1/src/pacxio/cloud/__init__.py +4 -0
- pacxio-0.0.1/src/pacxio/cloud/auth.py +225 -0
- pacxio-0.0.1/src/pacxio/cloud/boundary.py +42 -0
- pacxio-0.0.1/src/pacxio/cloud/client.py +177 -0
- pacxio-0.0.1/src/pacxio/cloud/config.py +80 -0
- pacxio-0.0.1/src/pacxio/cloud/route.py +249 -0
- pacxio-0.0.1/src/pacxio/cloud/sync.py +119 -0
- pacxio-0.0.1/src/pacxio/concept/__init__.py +1 -0
- pacxio-0.0.1/src/pacxio/concept/palette.py +109 -0
- pacxio-0.0.1/src/pacxio/concept/prompts.py +1122 -0
- pacxio-0.0.1/src/pacxio/concept/rectify.py +437 -0
- pacxio-0.0.1/src/pacxio/concept/service.py +1215 -0
- pacxio-0.0.1/src/pacxio/dielines.py +339 -0
- pacxio-0.0.1/src/pacxio/engine/__init__.py +4 -0
- pacxio-0.0.1/src/pacxio/engine/assembly.py +82 -0
- pacxio-0.0.1/src/pacxio/engine/box.py +66 -0
- pacxio-0.0.1/src/pacxio/engine/calibrated.py +296 -0
- pacxio-0.0.1/src/pacxio/engine/catalog.py +428 -0
- pacxio-0.0.1/src/pacxio/engine/catalog_en.yaml +642 -0
- pacxio-0.0.1/src/pacxio/engine/combos.py +88 -0
- pacxio-0.0.1/src/pacxio/engine/ecma.py +235 -0
- pacxio-0.0.1/src/pacxio/engine/editable.py +819 -0
- pacxio-0.0.1/src/pacxio/engine/editable_terms.py +159 -0
- pacxio-0.0.1/src/pacxio/engine/fefco.py +1717 -0
- pacxio-0.0.1/src/pacxio/engine/function_check.py +641 -0
- pacxio-0.0.1/src/pacxio/engine/i18n.py +150 -0
- pacxio-0.0.1/src/pacxio/engine/net.py +363 -0
- pacxio-0.0.1/src/pacxio/engine/practical.py +100 -0
- pacxio-0.0.1/src/pacxio/engine/preview.py +350 -0
- pacxio-0.0.1/src/pacxio/engine/recipe.py +699 -0
- pacxio-0.0.1/src/pacxio/engine/rounding.py +337 -0
- pacxio-0.0.1/src/pacxio/engine/set_style.py +192 -0
- pacxio-0.0.1/src/pacxio/engine/sets.py +252 -0
- pacxio-0.0.1/src/pacxio/engine/sheet.py +399 -0
- pacxio-0.0.1/src/pacxio/engine/side_tuck.py +217 -0
- pacxio-0.0.1/src/pacxio/engine/slotted.py +2520 -0
- pacxio-0.0.1/src/pacxio/engine/slotted_lock.py +304 -0
- pacxio-0.0.1/src/pacxio/engine/solid.py +119 -0
- pacxio-0.0.1/src/pacxio/engine/style.py +613 -0
- pacxio-0.0.1/src/pacxio/engine/targets.py +207 -0
- pacxio-0.0.1/src/pacxio/engine/tray.py +1495 -0
- pacxio-0.0.1/src/pacxio/engine/tray_bevel.py +254 -0
- pacxio-0.0.1/src/pacxio/engine/tray_display.py +213 -0
- pacxio-0.0.1/src/pacxio/engine/tray_foot.py +80 -0
- pacxio-0.0.1/src/pacxio/engine/tray_full_ear.py +36 -0
- pacxio-0.0.1/src/pacxio/engine/tray_kit.py +328 -0
- pacxio-0.0.1/src/pacxio/engine/tray_lids.py +125 -0
- pacxio-0.0.1/src/pacxio/engine/tray_pair_inner.py +54 -0
- pacxio-0.0.1/src/pacxio/engine/tray_rims.py +1002 -0
- pacxio-0.0.1/src/pacxio/engine/tray_roll.py +231 -0
- pacxio-0.0.1/src/pacxio/engine/tray_stack.py +123 -0
- pacxio-0.0.1/src/pacxio/engine/tray_strip.py +184 -0
- pacxio-0.0.1/src/pacxio/engine/tray_wrap.py +68 -0
- pacxio-0.0.1/src/pacxio/export/__init__.py +13 -0
- pacxio-0.0.1/src/pacxio/export/canvas.py +104 -0
- pacxio-0.0.1/src/pacxio/export/cf2.py +111 -0
- pacxio-0.0.1/src/pacxio/export/dxf.py +130 -0
- pacxio-0.0.1/src/pacxio/export/pdf.py +328 -0
- pacxio-0.0.1/src/pacxio/export/pdfx.py +139 -0
- pacxio-0.0.1/src/pacxio/export/svg.py +105 -0
- pacxio-0.0.1/src/pacxio/fontfiles.py +78 -0
- pacxio-0.0.1/src/pacxio/fonts.py +301 -0
- pacxio-0.0.1/src/pacxio/geometry/__init__.py +51 -0
- pacxio-0.0.1/src/pacxio/geometry/arcfit.py +159 -0
- pacxio-0.0.1/src/pacxio/geometry/bridge.py +92 -0
- pacxio-0.0.1/src/pacxio/geometry/primitives.py +638 -0
- pacxio-0.0.1/src/pacxio/inventory.py +460 -0
- pacxio-0.0.1/src/pacxio/jobfiles.py +54 -0
- pacxio-0.0.1/src/pacxio/layout/__init__.py +0 -0
- pacxio-0.0.1/src/pacxio/layout/errors.py +16 -0
- pacxio-0.0.1/src/pacxio/layout/panels.py +100 -0
- pacxio-0.0.1/src/pacxio/layout/spaces.py +161 -0
- pacxio-0.0.1/src/pacxio/layout/zones.py +133 -0
- pacxio-0.0.1/src/pacxio/locales/zh/api.yaml +153 -0
- pacxio-0.0.1/src/pacxio/locales/zh/cli.yaml +631 -0
- pacxio-0.0.1/src/pacxio/locales/zh/cloud.yaml +53 -0
- pacxio-0.0.1/src/pacxio/locales/zh/concept.yaml +181 -0
- pacxio-0.0.1/src/pacxio/locales/zh/conventions.yaml +18 -0
- pacxio-0.0.1/src/pacxio/locales/zh/documents.yaml +294 -0
- pacxio-0.0.1/src/pacxio/locales/zh/engine.yaml +465 -0
- pacxio-0.0.1/src/pacxio/locales/zh/layout.yaml +68 -0
- pacxio-0.0.1/src/pacxio/locales/zh/mcp.yaml +143 -0
- pacxio-0.0.1/src/pacxio/locales/zh/mockup.yaml +67 -0
- pacxio-0.0.1/src/pacxio/locales/zh/names.json +220 -0
- pacxio-0.0.1/src/pacxio/locales/zh/params.yaml +140 -0
- pacxio-0.0.1/src/pacxio/locales/zh/spec.yaml +236 -0
- pacxio-0.0.1/src/pacxio/locales/zh/structures.yaml +73 -0
- pacxio-0.0.1/src/pacxio/locales/zh/studio.yaml +204 -0
- pacxio-0.0.1/src/pacxio/locales/zh/studio_ui.json +290 -0
- pacxio-0.0.1/src/pacxio/locales/zh/styles.yaml +476 -0
- pacxio-0.0.1/src/pacxio/locales/zh/support.yaml +139 -0
- pacxio-0.0.1/src/pacxio/locales/zh/workflow.yaml +216 -0
- pacxio-0.0.1/src/pacxio/mcp_cli.py +287 -0
- pacxio-0.0.1/src/pacxio/mcp_install.py +329 -0
- pacxio-0.0.1/src/pacxio/mcp_server.py +513 -0
- pacxio-0.0.1/src/pacxio/messages.py +154 -0
- pacxio-0.0.1/src/pacxio/mockup/approval.py +214 -0
- pacxio-0.0.1/src/pacxio/mockup/art.py +360 -0
- pacxio-0.0.1/src/pacxio/mockup/container.py +534 -0
- pacxio-0.0.1/src/pacxio/mockup/content.py +296 -0
- pacxio-0.0.1/src/pacxio/mockup/flat.py +709 -0
- pacxio-0.0.1/src/pacxio/mockup/fold.py +430 -0
- pacxio-0.0.1/src/pacxio/mockup/foldcheck.py +165 -0
- pacxio-0.0.1/src/pacxio/mockup/folded_view.py +80 -0
- pacxio-0.0.1/src/pacxio/mockup/folding.py +725 -0
- pacxio-0.0.1/src/pacxio/mockup/foldscene.py +269 -0
- pacxio-0.0.1/src/pacxio/mockup/materials.py +224 -0
- pacxio-0.0.1/src/pacxio/mockup/pouch.py +260 -0
- pacxio-0.0.1/src/pacxio/mockup/pouch_fill.py +520 -0
- pacxio-0.0.1/src/pacxio/mockup/raster.py +175 -0
- pacxio-0.0.1/src/pacxio/mockup/regular.py +159 -0
- pacxio-0.0.1/src/pacxio/mockup/render.py +285 -0
- pacxio-0.0.1/src/pacxio/mockup/scene.py +361 -0
- pacxio-0.0.1/src/pacxio/mockup/scene3d.py +114 -0
- pacxio-0.0.1/src/pacxio/mockup/service.py +634 -0
- pacxio-0.0.1/src/pacxio/mockup/sheet.py +309 -0
- pacxio-0.0.1/src/pacxio/model/__init__.py +18 -0
- pacxio-0.0.1/src/pacxio/model/common.py +85 -0
- pacxio-0.0.1/src/pacxio/model/content.py +221 -0
- pacxio-0.0.1/src/pacxio/model/conventions.py +107 -0
- pacxio-0.0.1/src/pacxio/model/dieline.py +228 -0
- pacxio-0.0.1/src/pacxio/model/job.py +815 -0
- pacxio-0.0.1/src/pacxio/model/profile.py +311 -0
- pacxio-0.0.1/src/pacxio/model/report.py +59 -0
- pacxio-0.0.1/src/pacxio/notes.py +605 -0
- pacxio-0.0.1/src/pacxio/plugin_setup.py +317 -0
- pacxio-0.0.1/src/pacxio/preflight/__init__.py +3 -0
- pacxio-0.0.1/src/pacxio/preflight/rules.py +153 -0
- pacxio-0.0.1/src/pacxio/studio/__init__.py +4 -0
- pacxio-0.0.1/src/pacxio/studio/control.py +181 -0
- pacxio-0.0.1/src/pacxio/studio/next.py +164 -0
- pacxio-0.0.1/src/pacxio/studio/server.py +736 -0
- pacxio-0.0.1/src/pacxio/studio/state.py +1185 -0
- pacxio-0.0.1/src/pacxio/studio/static/app.js +2610 -0
- pacxio-0.0.1/src/pacxio/studio/static/i18n.js +39 -0
- pacxio-0.0.1/src/pacxio/studio/static/index.html +128 -0
- pacxio-0.0.1/src/pacxio/studio/static/style.css +754 -0
- pacxio-0.0.1/src/pacxio/studio/static/viewer3d.js +810 -0
- pacxio-0.0.1/src/pacxio/styles/__init__.py +105 -0
- pacxio-0.0.1/src/pacxio/styles/base.py +70 -0
- pacxio-0.0.1/src/pacxio/styles/calibration.py +362 -0
- pacxio-0.0.1/src/pacxio/styles/carton.py +398 -0
- pacxio-0.0.1/src/pacxio/styles/compensation.py +17 -0
- pacxio-0.0.1/src/pacxio/styles/components/__init__.py +6 -0
- pacxio-0.0.1/src/pacxio/styles/components/assembly.py +22 -0
- pacxio-0.0.1/src/pacxio/styles/components/base.py +82 -0
- pacxio-0.0.1/src/pacxio/styles/components/carton.py +357 -0
- pacxio-0.0.1/src/pacxio/styles/components/folds.py +88 -0
- pacxio-0.0.1/src/pacxio/styles/components/glue_end.py +61 -0
- pacxio-0.0.1/src/pacxio/styles/components/holes.py +94 -0
- pacxio-0.0.1/src/pacxio/styles/components/lockbottom.py +367 -0
- pacxio-0.0.1/src/pacxio/styles/components/sleeve.py +96 -0
- pacxio-0.0.1/src/pacxio/styles/components/svg_contour.py +143 -0
- pacxio-0.0.1/src/pacxio/styles/components/svg_curves.py +243 -0
- pacxio-0.0.1/src/pacxio/styles/components/tube4.py +90 -0
- pacxio-0.0.1/src/pacxio/styles/components/tuck.py +133 -0
- pacxio-0.0.1/src/pacxio/styles/corrugated.py +126 -0
- pacxio-0.0.1/src/pacxio/styles/counter_display.py +342 -0
- pacxio-0.0.1/src/pacxio/styles/crashlock.py +434 -0
- pacxio-0.0.1/src/pacxio/styles/divider.py +178 -0
- pacxio-0.0.1/src/pacxio/styles/drawer.py +309 -0
- pacxio-0.0.1/src/pacxio/styles/fefco_0201.py +415 -0
- pacxio-0.0.1/src/pacxio/styles/fefco_0427.py +641 -0
- pacxio-0.0.1/src/pacxio/styles/flat.py +173 -0
- pacxio-0.0.1/src/pacxio/styles/gable.py +482 -0
- pacxio-0.0.1/src/pacxio/styles/hanger.py +158 -0
- pacxio-0.0.1/src/pacxio/styles/insert_card.py +165 -0
- pacxio-0.0.1/src/pacxio/styles/label.py +394 -0
- pacxio-0.0.1/src/pacxio/styles/lockbottom.py +358 -0
- pacxio-0.0.1/src/pacxio/styles/mailer_closures.py +645 -0
- pacxio-0.0.1/src/pacxio/styles/mailer_tuck.py +453 -0
- pacxio-0.0.1/src/pacxio/styles/pouch.py +1289 -0
- pacxio-0.0.1/src/pacxio/styles/presets.py +69 -0
- pacxio-0.0.1/src/pacxio/styles/regular_tray.py +438 -0
- pacxio-0.0.1/src/pacxio/styles/rte.py +612 -0
- pacxio-0.0.1/src/pacxio/styles/seal_end.py +181 -0
- pacxio-0.0.1/src/pacxio/styles/sleeve.py +156 -0
- pacxio-0.0.1/src/pacxio/styles/slotted_variants.py +116 -0
- pacxio-0.0.1/src/pacxio/styles/ste.py +21 -0
- pacxio-0.0.1/src/pacxio/styles/tray.py +467 -0
- pacxio-0.0.1/src/pacxio/styles/tray_lid.py +267 -0
- pacxio-0.0.1/src/pacxio/textstyles.py +104 -0
- pacxio-0.0.1/src/pacxio/visual/__init__.py +0 -0
- pacxio-0.0.1/src/pacxio/visual/assets.py +247 -0
- pacxio-0.0.1/src/pacxio/visual/meta.py +132 -0
- pacxio-0.0.1/src/pacxio/visual/prompts.py +186 -0
- pacxio-0.0.1/src/pacxio/visual/providers/__init__.py +15 -0
- pacxio-0.0.1/src/pacxio/visual/providers/base.py +37 -0
- pacxio-0.0.1/src/pacxio/visual/providers/file_import.py +30 -0
- pacxio-0.0.1/src/pacxio/visual/providers/openai_api.py +114 -0
- pacxio-0.0.1/src/pacxio/windows.py +394 -0
- pacxio-0.0.1/src/pacxio/zoom.py +98 -0
- pacxio-0.0.1/tests/__init__.py +0 -0
- pacxio-0.0.1/tests/conftest.py +42 -0
- pacxio-0.0.1/tests/golden/autolock_100x100x120.svg +39 -0
- pacxio-0.0.1/tests/golden/autolock_150x60x80.svg +39 -0
- pacxio-0.0.1/tests/golden/autolock_80x50x180.svg +39 -0
- pacxio-0.0.1/tests/golden/b1/carton_gable_autolock.svg +45 -0
- pacxio-0.0.1/tests/golden/b1/carton_gable_seal.svg +41 -0
- pacxio-0.0.1/tests/golden/b1/carton_gable_tuck.svg +43 -0
- pacxio-0.0.1/tests/golden/b1/carton_gable_tuck_same.svg +43 -0
- pacxio-0.0.1/tests/golden/b1/carton_hanger_seal.svg +38 -0
- pacxio-0.0.1/tests/golden/b1/carton_seal_autolock.svg +37 -0
- pacxio-0.0.1/tests/golden/b1/carton_seal_snaplock.svg +33 -0
- pacxio-0.0.1/tests/golden/b1/carton_seal_tuck.svg +35 -0
- pacxio-0.0.1/tests/golden/b1/carton_seal_tuck_same.svg +35 -0
- pacxio-0.0.1/tests/golden/b1/carton_tuck_seal.svg +35 -0
- pacxio-0.0.1/tests/golden/b1/counter_display_0.svg +43 -0
- pacxio-0.0.1/tests/golden/b1/counter_display_1.svg +43 -0
- pacxio-0.0.1/tests/golden/b1/counter_display_2.svg +41 -0
- pacxio-0.0.1/tests/golden/b1/crashlock_rsc_0.svg +37 -0
- pacxio-0.0.1/tests/golden/b1/crashlock_rsc_1.svg +37 -0
- pacxio-0.0.1/tests/golden/b1/crashlock_rsc_2.svg +37 -0
- pacxio-0.0.1/tests/golden/b1/gable_0.svg +41 -0
- pacxio-0.0.1/tests/golden/b1/gable_1.svg +41 -0
- pacxio-0.0.1/tests/golden/b1/gable_2.svg +41 -0
- pacxio-0.0.1/tests/golden/c1/autolock_hanger_0.svg +42 -0
- pacxio-0.0.1/tests/golden/c1/autolock_hanger_1.svg +42 -0
- pacxio-0.0.1/tests/golden/c1/autolock_hanger_2.svg +42 -0
- pacxio-0.0.1/tests/golden/c1/card_0.svg +9 -0
- pacxio-0.0.1/tests/golden/c1/card_1.svg +9 -0
- pacxio-0.0.1/tests/golden/c1/card_2.svg +9 -0
- pacxio-0.0.1/tests/golden/c1/fefco_0200_0.svg +25 -0
- pacxio-0.0.1/tests/golden/c1/fefco_0200_1.svg +25 -0
- pacxio-0.0.1/tests/golden/c1/fefco_0200_2.svg +25 -0
- pacxio-0.0.1/tests/golden/c1/fefco_0202_0.svg +33 -0
- pacxio-0.0.1/tests/golden/c1/fefco_0202_1.svg +33 -0
- pacxio-0.0.1/tests/golden/c1/fefco_0202_2.svg +33 -0
- pacxio-0.0.1/tests/golden/c1/fefco_0203_0.svg +33 -0
- pacxio-0.0.1/tests/golden/c1/fefco_0203_1.svg +33 -0
- pacxio-0.0.1/tests/golden/c1/fefco_0203_2.svg +33 -0
- pacxio-0.0.1/tests/golden/c1/header_card_0.svg +13 -0
- pacxio-0.0.1/tests/golden/c1/header_card_1.svg +13 -0
- pacxio-0.0.1/tests/golden/c1/header_card_2.svg +13 -0
- pacxio-0.0.1/tests/golden/c1/rte_hanger_0.svg +40 -0
- pacxio-0.0.1/tests/golden/c1/rte_hanger_1.svg +40 -0
- pacxio-0.0.1/tests/golden/c1/rte_hanger_2.svg +40 -0
- pacxio-0.0.1/tests/golden/c1/seal_end_0.svg +33 -0
- pacxio-0.0.1/tests/golden/c1/seal_end_1.svg +33 -0
- pacxio-0.0.1/tests/golden/c1/seal_end_2.svg +33 -0
- pacxio-0.0.1/tests/golden/c1/snaplock_hanger_0.svg +38 -0
- pacxio-0.0.1/tests/golden/c1/snaplock_hanger_1.svg +38 -0
- pacxio-0.0.1/tests/golden/c1/snaplock_hanger_2.svg +38 -0
- pacxio-0.0.1/tests/golden/c1/ste_hanger_0.svg +40 -0
- pacxio-0.0.1/tests/golden/c1/ste_hanger_1.svg +40 -0
- pacxio-0.0.1/tests/golden/c1/ste_hanger_2.svg +40 -0
- pacxio-0.0.1/tests/golden/c2/belly_band_0_main.svg +17 -0
- pacxio-0.0.1/tests/golden/c2/belly_band_1_main.svg +17 -0
- pacxio-0.0.1/tests/golden/c2/belly_band_2_main.svg +17 -0
- pacxio-0.0.1/tests/golden/c2/divider_0_x.svg +9 -0
- pacxio-0.0.1/tests/golden/c2/divider_0_y.svg +9 -0
- pacxio-0.0.1/tests/golden/c2/divider_1_x.svg +9 -0
- pacxio-0.0.1/tests/golden/c2/divider_1_y.svg +9 -0
- pacxio-0.0.1/tests/golden/c2/divider_2_x.svg +9 -0
- pacxio-0.0.1/tests/golden/c2/divider_2_y.svg +9 -0
- pacxio-0.0.1/tests/golden/c2/hinged_lid_0_main.svg +33 -0
- pacxio-0.0.1/tests/golden/c2/hinged_lid_1_main.svg +33 -0
- pacxio-0.0.1/tests/golden/c2/hinged_lid_2_main.svg +33 -0
- pacxio-0.0.1/tests/golden/c2/insert_card_0_main.svg +13 -0
- pacxio-0.0.1/tests/golden/c2/insert_card_1_main.svg +19 -0
- pacxio-0.0.1/tests/golden/c2/insert_card_2_main.svg +19 -0
- pacxio-0.0.1/tests/golden/c2/sleeve_0_main.svg +17 -0
- pacxio-0.0.1/tests/golden/c2/sleeve_1_main.svg +17 -0
- pacxio-0.0.1/tests/golden/c2/sleeve_2_main.svg +17 -0
- pacxio-0.0.1/tests/golden/c2/tray_glued_0_main.svg +25 -0
- pacxio-0.0.1/tests/golden/c2/tray_glued_1_main.svg +25 -0
- pacxio-0.0.1/tests/golden/c2/tray_glued_2_main.svg +25 -0
- pacxio-0.0.1/tests/golden/c2/tray_lock_0_main.svg +37 -0
- pacxio-0.0.1/tests/golden/c2/tray_lock_1_main.svg +37 -0
- pacxio-0.0.1/tests/golden/c2/tray_lock_2_main.svg +37 -0
- pacxio-0.0.1/tests/golden/c3/mailer_front_lock_0.svg +51 -0
- pacxio-0.0.1/tests/golden/c3/mailer_front_lock_1.svg +55 -0
- pacxio-0.0.1/tests/golden/c3/mailer_front_lock_2.svg +55 -0
- pacxio-0.0.1/tests/golden/c3/mailer_tear_seal_0.svg +49 -0
- pacxio-0.0.1/tests/golden/c3/mailer_tear_seal_1.svg +53 -0
- pacxio-0.0.1/tests/golden/c3/mailer_tear_seal_2.svg +53 -0
- pacxio-0.0.1/tests/golden/c3/mailer_tuck_0.svg +45 -0
- pacxio-0.0.1/tests/golden/c3/mailer_tuck_1.svg +49 -0
- pacxio-0.0.1/tests/golden/c3/mailer_tuck_2.svg +49 -0
- pacxio-0.0.1/tests/golden/c4/cone_cup.svg +9 -0
- pacxio-0.0.1/tests/golden/c4/cone_partial.svg +9 -0
- pacxio-0.0.1/tests/golden/c4/panel_circle.svg +9 -0
- pacxio-0.0.1/tests/golden/c4/panel_ellipse.svg +9 -0
- pacxio-0.0.1/tests/golden/c4/panel_round_rect.svg +9 -0
- pacxio-0.0.1/tests/golden/c4/wrap.svg +9 -0
- pacxio-0.0.1/tests/golden/c5/backseal.svg +13 -0
- pacxio-0.0.1/tests/golden/c5/backseal_gusset.svg +17 -0
- pacxio-0.0.1/tests/golden/c5/flat_bottom.svg +18 -0
- pacxio-0.0.1/tests/golden/c5/flat_bottom_valve.svg +18 -0
- pacxio-0.0.1/tests/golden/c5/sachet.svg +11 -0
- pacxio-0.0.1/tests/golden/c5/sachet_euro.svg +13 -0
- pacxio-0.0.1/tests/golden/c5/standup.svg +11 -0
- pacxio-0.0.1/tests/golden/c5/standup_hang.svg +13 -0
- pacxio-0.0.1/tests/golden/drawer_100x70x20_sbs_350_sleeve.svg +17 -0
- pacxio-0.0.1/tests/golden/drawer_100x70x20_sbs_350_tray.svg +41 -0
- pacxio-0.0.1/tests/golden/drawer_100x70x20_sbs_400_sleeve.svg +17 -0
- pacxio-0.0.1/tests/golden/drawer_100x70x20_sbs_400_tray.svg +41 -0
- pacxio-0.0.1/tests/golden/drawer_150x100x40_sbs_350_sleeve.svg +17 -0
- pacxio-0.0.1/tests/golden/drawer_150x100x40_sbs_350_tray.svg +41 -0
- pacxio-0.0.1/tests/golden/drawer_150x100x40_sbs_400_sleeve.svg +17 -0
- pacxio-0.0.1/tests/golden/drawer_150x100x40_sbs_400_tray.svg +41 -0
- pacxio-0.0.1/tests/golden/drawer_200x200x60_sbs_350_sleeve.svg +17 -0
- pacxio-0.0.1/tests/golden/drawer_200x200x60_sbs_350_tray.svg +41 -0
- pacxio-0.0.1/tests/golden/drawer_200x200x60_sbs_400_sleeve.svg +17 -0
- pacxio-0.0.1/tests/golden/drawer_200x200x60_sbs_400_tray.svg +41 -0
- pacxio-0.0.1/tests/golden/drawer_80x160x30_sbs_350_sleeve.svg +17 -0
- pacxio-0.0.1/tests/golden/drawer_80x160x30_sbs_350_tray.svg +41 -0
- pacxio-0.0.1/tests/golden/drawer_80x160x30_sbs_400_sleeve.svg +17 -0
- pacxio-0.0.1/tests/golden/drawer_80x160x30_sbs_400_tray.svg +41 -0
- pacxio-0.0.1/tests/golden/fefco_0201_250x250x250_flute_b.svg +33 -0
- pacxio-0.0.1/tests/golden/fefco_0201_250x250x250_flute_c.svg +33 -0
- pacxio-0.0.1/tests/golden/fefco_0201_300x200x200_flute_b.svg +33 -0
- pacxio-0.0.1/tests/golden/fefco_0201_300x200x200_flute_c.svg +33 -0
- pacxio-0.0.1/tests/golden/fefco_0201_400x300x250_flute_b.svg +33 -0
- pacxio-0.0.1/tests/golden/fefco_0201_400x300x250_flute_c.svg +33 -0
- pacxio-0.0.1/tests/golden/fefco_0201_600x400x400_flute_b.svg +33 -0
- pacxio-0.0.1/tests/golden/fefco_0201_600x400x400_flute_bc.svg +33 -0
- pacxio-0.0.1/tests/golden/fefco_0201_600x400x400_flute_c.svg +33 -0
- pacxio-0.0.1/tests/golden/fefco_0427_150x100x40_flute_b.svg +49 -0
- pacxio-0.0.1/tests/golden/fefco_0427_150x100x40_flute_e.svg +49 -0
- pacxio-0.0.1/tests/golden/fefco_0427_220x160x60_flute_b.svg +53 -0
- pacxio-0.0.1/tests/golden/fefco_0427_220x160x60_flute_e.svg +53 -0
- pacxio-0.0.1/tests/golden/fefco_0427_300x250x100_flute_b.svg +53 -0
- pacxio-0.0.1/tests/golden/fefco_0427_300x250x100_flute_e.svg +53 -0
- pacxio-0.0.1/tests/golden/rte_120x30x45.svg +37 -0
- pacxio-0.0.1/tests/golden/rte_60x40x100.svg +37 -0
- pacxio-0.0.1/tests/golden/rte_80x50x180.svg +37 -0
- pacxio-0.0.1/tests/golden/rte_80x50x180_window.svg +39 -0
- pacxio-0.0.1/tests/golden/snaplock_120x60x45.svg +35 -0
- pacxio-0.0.1/tests/golden/snaplock_60x40x100.svg +35 -0
- pacxio-0.0.1/tests/golden/snaplock_80x50x180.svg +35 -0
- pacxio-0.0.1/tests/golden/ste_120x30x45.svg +37 -0
- pacxio-0.0.1/tests/golden/ste_60x40x100.svg +37 -0
- pacxio-0.0.1/tests/golden/ste_80x50x180.svg +37 -0
- pacxio-0.0.1/tests/golden/tray_lid_120x120x50_flute_e_base.svg +41 -0
- pacxio-0.0.1/tests/golden/tray_lid_120x120x50_flute_e_lid.svg +41 -0
- pacxio-0.0.1/tests/golden/tray_lid_120x120x50_sbs_350_base.svg +41 -0
- pacxio-0.0.1/tests/golden/tray_lid_120x120x50_sbs_350_lid.svg +41 -0
- pacxio-0.0.1/tests/golden/tray_lid_200x150x60_flute_e_base.svg +41 -0
- pacxio-0.0.1/tests/golden/tray_lid_200x150x60_flute_e_lid.svg +41 -0
- pacxio-0.0.1/tests/golden/tray_lid_200x150x60_sbs_350_base.svg +41 -0
- pacxio-0.0.1/tests/golden/tray_lid_200x150x60_sbs_350_lid.svg +41 -0
- pacxio-0.0.1/tests/golden/tray_lid_200x150x60_sbs_400_base.svg +41 -0
- pacxio-0.0.1/tests/golden/tray_lid_200x150x60_sbs_400_lid.svg +41 -0
- pacxio-0.0.1/tests/golden/tray_lid_300x200x100_flute_b_base.svg +41 -0
- pacxio-0.0.1/tests/golden/tray_lid_300x200x100_flute_b_lid.svg +41 -0
- pacxio-0.0.1/tests/golden/tray_lid_300x200x100_flute_e_base.svg +41 -0
- pacxio-0.0.1/tests/golden/tray_lid_300x200x100_flute_e_lid.svg +41 -0
- pacxio-0.0.1/tests/golden/tray_lid_300x200x100_flute_e_lid_h30_base.svg +41 -0
- pacxio-0.0.1/tests/golden/tray_lid_300x200x100_flute_e_lid_h30_lid.svg +41 -0
- pacxio-0.0.1/tests/golden/tray_lid_300x200x100_sbs_350_base.svg +41 -0
- pacxio-0.0.1/tests/golden/tray_lid_300x200x100_sbs_350_lid.svg +41 -0
- pacxio-0.0.1/tests/golden/tray_lid_300x200x100_sbs_350_lid_h30_base.svg +41 -0
- pacxio-0.0.1/tests/golden/tray_lid_300x200x100_sbs_350_lid_h30_lid.svg +41 -0
- pacxio-0.0.1/tests/separation/__init__.py +0 -0
- pacxio-0.0.1/tests/unit/__init__.py +0 -0
- pacxio-0.0.1/tests/unit/conftest.py +86 -0
- pacxio-0.0.1/tests/unit/flatkit.py +26 -0
- pacxio-0.0.1/tests/unit/fontkit.py +101 -0
- pacxio-0.0.1/tests/unit/test_c2_structures.py +266 -0
- pacxio-0.0.1/tests/unit/test_calibration.py +132 -0
- pacxio-0.0.1/tests/unit/test_carton.py +178 -0
- pacxio-0.0.1/tests/unit/test_cli.py +104 -0
- pacxio-0.0.1/tests/unit/test_cli_m2.py +186 -0
- pacxio-0.0.1/tests/unit/test_cloud.py +321 -0
- pacxio-0.0.1/tests/unit/test_components.py +99 -0
- pacxio-0.0.1/tests/unit/test_concept.py +404 -0
- pacxio-0.0.1/tests/unit/test_corner_finish.py +128 -0
- pacxio-0.0.1/tests/unit/test_counter_display.py +144 -0
- pacxio-0.0.1/tests/unit/test_crashlock_rsc.py +119 -0
- pacxio-0.0.1/tests/unit/test_dtc_mailer.py +243 -0
- pacxio-0.0.1/tests/unit/test_editable.py +208 -0
- pacxio-0.0.1/tests/unit/test_engine.py +202 -0
- pacxio-0.0.1/tests/unit/test_engine_boundary.py +58 -0
- pacxio-0.0.1/tests/unit/test_engine_carton.py +119 -0
- pacxio-0.0.1/tests/unit/test_engine_catalog.py +109 -0
- pacxio-0.0.1/tests/unit/test_engine_display_box.py +139 -0
- pacxio-0.0.1/tests/unit/test_engine_fefco.py +285 -0
- pacxio-0.0.1/tests/unit/test_engine_fefco_step3.py +169 -0
- pacxio-0.0.1/tests/unit/test_engine_fefco_step4.py +115 -0
- pacxio-0.0.1/tests/unit/test_engine_pipeline.py +95 -0
- pacxio-0.0.1/tests/unit/test_engine_tray.py +1124 -0
- pacxio-0.0.1/tests/unit/test_flat_art_reuse.py +59 -0
- pacxio-0.0.1/tests/unit/test_foldcheck.py +74 -0
- pacxio-0.0.1/tests/unit/test_folding.py +207 -0
- pacxio-0.0.1/tests/unit/test_function_check.py +185 -0
- pacxio-0.0.1/tests/unit/test_gable.py +141 -0
- pacxio-0.0.1/tests/unit/test_geometry.py +125 -0
- pacxio-0.0.1/tests/unit/test_golden.py +138 -0
- pacxio-0.0.1/tests/unit/test_inner_tuck_mailer.py +258 -0
- pacxio-0.0.1/tests/unit/test_mailer_closures.py +292 -0
- pacxio-0.0.1/tests/unit/test_mailer_fixes.py +204 -0
- pacxio-0.0.1/tests/unit/test_mcp_server.py +237 -0
- pacxio-0.0.1/tests/unit/test_messages.py +221 -0
- pacxio-0.0.1/tests/unit/test_multipart.py +273 -0
- pacxio-0.0.1/tests/unit/test_notes.py +372 -0
- pacxio-0.0.1/tests/unit/test_open_boundary.py +149 -0
- pacxio-0.0.1/tests/unit/test_packaging.py +97 -0
- pacxio-0.0.1/tests/unit/test_plugin_setup.py +125 -0
- pacxio-0.0.1/tests/unit/test_preflight.py +81 -0
- pacxio-0.0.1/tests/unit/test_raster.py +119 -0
- pacxio-0.0.1/tests/unit/test_rte.py +314 -0
- pacxio-0.0.1/tests/unit/test_skill.py +315 -0
- pacxio-0.0.1/tests/unit/test_structure.py +287 -0
- pacxio-0.0.1/tests/unit/test_structure_draft.py +161 -0
- pacxio-0.0.1/tests/unit/test_studio_confirm.py +262 -0
- pacxio-0.0.1/tests/unit/test_studio_structure.py +170 -0
- pacxio-0.0.1/tests/unit/test_zones.py +121 -0
- pacxio-0.0.1/tests/unit/test_zoom.py +134 -0
- pacxio-0.0.1/tools/engine_compare.py +132 -0
- pacxio-0.0.1/tools/engine_targets.py +208 -0
- pacxio-0.0.1/tools/fetch_fonts.py +188 -0
- pacxio-0.0.1/tools/structure_baseline.py +192 -0
- pacxio-0.0.1/uv.lock +1543 -0
pacxio-0.0.1/.gitignore
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
.venv/
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.pyc
|
|
4
|
+
.pytest_cache/
|
|
5
|
+
.mypy_cache/
|
|
6
|
+
.ruff_cache/
|
|
7
|
+
out/
|
|
8
|
+
jobs/
|
|
9
|
+
fonts/
|
|
10
|
+
*.icc
|
|
11
|
+
*.icm
|
|
12
|
+
|
|
13
|
+
# 客户需求文档与素材(和 jobs/ 一样,不进仓库)
|
|
14
|
+
briefs/
|
|
15
|
+
# agent 的临时脚本和本地笔记
|
|
16
|
+
tmp/
|
|
17
|
+
.learnings/
|
|
18
|
+
# 系统与打包产物
|
|
19
|
+
.DS_Store
|
|
20
|
+
*.egg-info/
|
|
21
|
+
dist/
|
|
22
|
+
build/
|
|
23
|
+
|
|
24
|
+
# 本机浏览器验证截图与会话
|
|
25
|
+
.playwright-cli/
|
|
26
|
+
output/playwright/
|
|
27
|
+
|
|
28
|
+
# 本机 MCP 登记(pacxio mcp install 写的,里面是本机 Python 路径)
|
|
29
|
+
.mcp.json
|
pacxio-0.0.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 The pacxio authors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
pacxio-0.0.1/PKG-INFO
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: pacxio
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: Packaging prepress for coding agents: dielines, 3D, print-ready factory files
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Requires-Python: >=3.11
|
|
8
|
+
Requires-Dist: ezdxf>=1.3
|
|
9
|
+
Requires-Dist: fonttools>=4.50
|
|
10
|
+
Requires-Dist: numpy>=1.26
|
|
11
|
+
Requires-Dist: pikepdf>=9.0
|
|
12
|
+
Requires-Dist: pillow>=10.0
|
|
13
|
+
Requires-Dist: pydantic>=2.6
|
|
14
|
+
Requires-Dist: pyyaml>=6.0
|
|
15
|
+
Requires-Dist: reportlab>=4.0
|
|
16
|
+
Requires-Dist: shapely>=2.1
|
|
17
|
+
Requires-Dist: typer>=0.12
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
|
|
20
|
+
# pacxio
|
|
21
|
+
|
|
22
|
+
Packaging prepress for coding agents. Describe a box, and pacxio turns box dimensions and brand artwork into the files a packaging factory accepts:
|
|
23
|
+
|
|
24
|
+
- the dieline: DXF, CF2 and PDF;
|
|
25
|
+
- a CMYK print PDF;
|
|
26
|
+
- named spot-color plates for foil, spot UV and embossing;
|
|
27
|
+
- a spec sheet;
|
|
28
|
+
- a preflight report.
|
|
29
|
+
|
|
30
|
+
pacxio runs inside Claude Code or Codex as a plugin (a workflow Skill plus MCP tools), and as a plain command-line tool.
|
|
31
|
+
|
|
32
|
+
## What runs where
|
|
33
|
+
|
|
34
|
+
| On your machine (this repository, MIT) | On the pacxio server (sign-in required) |
|
|
35
|
+
|---|---|
|
|
36
|
+
| Structure library: FEFCO and public ECMA codes, plus hand-built carton, mailer, label and pouch entries | Composing artwork onto the dieline (`render`, `art`, `restore`, `visual trace`) |
|
|
37
|
+
| Dieline geometry, editable parameters, DXF / CF2 / dieline PDF | Print PDF, spot-color separations, preflight |
|
|
38
|
+
| Folding 3D preview and the local workbench (127.0.0.1 only) | The factory delivery pack (`export`) |
|
|
39
|
+
| Jobs, content lists, concept-image records, notes | |
|
|
40
|
+
|
|
41
|
+
The open client sends server-side commands to the pacxio server automatically. Every command prints the same JSON either way. The first such command starts a browser sign-in (`pacxio login`). Your vector artwork stays on the server; previews, reports and the delivery pack come back to your job folder.
|
|
42
|
+
|
|
43
|
+
## Install
|
|
44
|
+
|
|
45
|
+
You need [uv](https://docs.astral.sh/uv/).
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
uv tool install pacxio
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pacxio setup --agent claude-code --yes
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Use `--agent codex` for Codex. Leave out `--agent` to install into every agent found on the machine. Setup also downloads the open-source Source Han Sans fonts if they are missing. Restart the agent afterwards, open a project folder, and describe the box you want.
|
|
56
|
+
|
|
57
|
+
## Command line
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
pacxio structures suggest --use ecommerce --no-tape --material corrugated --json
|
|
61
|
+
pacxio structures preview 0427 --L 233 --W 161 --H 66.5 --out preview/
|
|
62
|
+
pacxio job init jobs/demo --fefco 0427 --L 233 --W 161 --H 66.5 --material flute_e
|
|
63
|
+
pacxio studio start jobs/demo --open
|
|
64
|
+
pacxio next jobs/demo
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
- `structures suggest` picks candidate structures from the library for what the box has to do.
|
|
68
|
+
- `structures preview` draws a dieline and a 3D view without making a job.
|
|
69
|
+
- `studio start` opens the local workbench in your browser.
|
|
70
|
+
- `next` tells you which step comes next and which command runs it.
|
|
71
|
+
|
|
72
|
+
Every command takes `--json` and prints `{ok, command, job, artifacts, data, errors, warnings}`. Each error carries a `fix`. Exit codes: `0` success, `1` an error was found, `2` bad arguments, `3` something is missing from the environment.
|
|
73
|
+
|
|
74
|
+
Messages are in English. Set `PACXIO_LANG=zh` for Chinese.
|
|
75
|
+
|
|
76
|
+
## Rules the engine enforces
|
|
77
|
+
|
|
78
|
+
- **Text in print files is typeset by the engine and outlined.** AI-generated images in print files must not contain text.
|
|
79
|
+
- **Concept images are for direction only.** The engine refuses to place a concept image in a print file. The final artwork is rebuilt from the confirmed flat.
|
|
80
|
+
- **The user confirms; the agent does not.** `approve` on the dieline confirmation image is the only gate before export.
|
|
81
|
+
- **A preflight error means no factory files.** `export` refuses until every error is fixed.
|
|
82
|
+
- **Dielines use lines and arcs only.** No Béziers, so DXF R12 and CF2 stay exact.
|
|
83
|
+
- **Cut and crease lines are named spot colors set to overprint.** They are never drawn in Registration.
|
|
84
|
+
- **Values marked as initial are not verified.** Structures that are not calibrated against a factory dieline say so. Make a physical proof before a production run.
|
|
85
|
+
|
|
86
|
+
## Development
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
uv sync
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
uv run pytest
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
uv run ruff check . && uv run mypy
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
uv run pacxio env check
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Separation tests are skipped when Ghostscript is not installed. Fonts and ICC profiles are not part of this repository.
|
|
105
|
+
|
|
106
|
+
## License
|
|
107
|
+
|
|
108
|
+
MIT. See [LICENSE](LICENSE).
|
pacxio-0.0.1/README.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# pacxio
|
|
2
|
+
|
|
3
|
+
Packaging prepress for coding agents. Describe a box, and pacxio turns box dimensions and brand artwork into the files a packaging factory accepts:
|
|
4
|
+
|
|
5
|
+
- the dieline: DXF, CF2 and PDF;
|
|
6
|
+
- a CMYK print PDF;
|
|
7
|
+
- named spot-color plates for foil, spot UV and embossing;
|
|
8
|
+
- a spec sheet;
|
|
9
|
+
- a preflight report.
|
|
10
|
+
|
|
11
|
+
pacxio runs inside Claude Code or Codex as a plugin (a workflow Skill plus MCP tools), and as a plain command-line tool.
|
|
12
|
+
|
|
13
|
+
## What runs where
|
|
14
|
+
|
|
15
|
+
| On your machine (this repository, MIT) | On the pacxio server (sign-in required) |
|
|
16
|
+
|---|---|
|
|
17
|
+
| Structure library: FEFCO and public ECMA codes, plus hand-built carton, mailer, label and pouch entries | Composing artwork onto the dieline (`render`, `art`, `restore`, `visual trace`) |
|
|
18
|
+
| Dieline geometry, editable parameters, DXF / CF2 / dieline PDF | Print PDF, spot-color separations, preflight |
|
|
19
|
+
| Folding 3D preview and the local workbench (127.0.0.1 only) | The factory delivery pack (`export`) |
|
|
20
|
+
| Jobs, content lists, concept-image records, notes | |
|
|
21
|
+
|
|
22
|
+
The open client sends server-side commands to the pacxio server automatically. Every command prints the same JSON either way. The first such command starts a browser sign-in (`pacxio login`). Your vector artwork stays on the server; previews, reports and the delivery pack come back to your job folder.
|
|
23
|
+
|
|
24
|
+
## Install
|
|
25
|
+
|
|
26
|
+
You need [uv](https://docs.astral.sh/uv/).
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
uv tool install pacxio
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
pacxio setup --agent claude-code --yes
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Use `--agent codex` for Codex. Leave out `--agent` to install into every agent found on the machine. Setup also downloads the open-source Source Han Sans fonts if they are missing. Restart the agent afterwards, open a project folder, and describe the box you want.
|
|
37
|
+
|
|
38
|
+
## Command line
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
pacxio structures suggest --use ecommerce --no-tape --material corrugated --json
|
|
42
|
+
pacxio structures preview 0427 --L 233 --W 161 --H 66.5 --out preview/
|
|
43
|
+
pacxio job init jobs/demo --fefco 0427 --L 233 --W 161 --H 66.5 --material flute_e
|
|
44
|
+
pacxio studio start jobs/demo --open
|
|
45
|
+
pacxio next jobs/demo
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
- `structures suggest` picks candidate structures from the library for what the box has to do.
|
|
49
|
+
- `structures preview` draws a dieline and a 3D view without making a job.
|
|
50
|
+
- `studio start` opens the local workbench in your browser.
|
|
51
|
+
- `next` tells you which step comes next and which command runs it.
|
|
52
|
+
|
|
53
|
+
Every command takes `--json` and prints `{ok, command, job, artifacts, data, errors, warnings}`. Each error carries a `fix`. Exit codes: `0` success, `1` an error was found, `2` bad arguments, `3` something is missing from the environment.
|
|
54
|
+
|
|
55
|
+
Messages are in English. Set `PACXIO_LANG=zh` for Chinese.
|
|
56
|
+
|
|
57
|
+
## Rules the engine enforces
|
|
58
|
+
|
|
59
|
+
- **Text in print files is typeset by the engine and outlined.** AI-generated images in print files must not contain text.
|
|
60
|
+
- **Concept images are for direction only.** The engine refuses to place a concept image in a print file. The final artwork is rebuilt from the confirmed flat.
|
|
61
|
+
- **The user confirms; the agent does not.** `approve` on the dieline confirmation image is the only gate before export.
|
|
62
|
+
- **A preflight error means no factory files.** `export` refuses until every error is fixed.
|
|
63
|
+
- **Dielines use lines and arcs only.** No Béziers, so DXF R12 and CF2 stay exact.
|
|
64
|
+
- **Cut and crease lines are named spot colors set to overprint.** They are never drawn in Registration.
|
|
65
|
+
- **Values marked as initial are not verified.** Structures that are not calibrated against a factory dieline say so. Make a physical proof before a production run.
|
|
66
|
+
|
|
67
|
+
## Development
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
uv sync
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
uv run pytest
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
uv run ruff check . && uv run mypy
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
uv run pacxio env check
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Separation tests are skipped when Ghostscript is not installed. Fonts and ICC profiles are not part of this repository.
|
|
86
|
+
|
|
87
|
+
## License
|
|
88
|
+
|
|
89
|
+
MIT. See [LICENSE](LICENSE).
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# 常规参考表:"Home improvement · Paint"(docs/FLOW_V2.md 2.2)
|
|
2
|
+
#
|
|
3
|
+
# 用途:出概念图时写进提示词,告诉 AI "这类包装一般这么排"——只是提示,AI 可以按设计需要变通;
|
|
4
|
+
# 看图后 agent 用它核对:哪些信息放得不寻常、有没有漏掉通常必有的东西。
|
|
5
|
+
# 全部是【初值】:来自通常做法,未经品牌方、印厂或法规顾问确认。法规相关的只做提醒,由用户确认。
|
|
6
|
+
|
|
7
|
+
id: paint
|
|
8
|
+
name_zh: "Home improvement · Paint"
|
|
9
|
+
description: "Folding cartons and shipping cases for wall paint, wood finishes and primers"
|
|
10
|
+
verified: false
|
|
11
|
+
|
|
12
|
+
# 各类信息通常放在哪些面(front 正面 / back 背面 / side 侧面 / top 顶面 / bottom 底面),排在前面的更常见
|
|
13
|
+
faces:
|
|
14
|
+
brand: [front, back, top, side]
|
|
15
|
+
logo: [front, back, top, side]
|
|
16
|
+
product_name: [front, back]
|
|
17
|
+
variant: [front] # 内墙 / 外墙、木器、底漆面漆;颜色、光泽
|
|
18
|
+
spec: [front, side] # 容量(1L、5L)
|
|
19
|
+
net_content: [front]
|
|
20
|
+
slogan: [front, side]
|
|
21
|
+
selling_point: [front, back, side]
|
|
22
|
+
icon: [front, side]
|
|
23
|
+
description: [back, side]
|
|
24
|
+
usage: [back, side] # 施工步骤
|
|
25
|
+
technical: [back, side] # 涂布率、表干 / 实干、重涂间隔、VOC
|
|
26
|
+
ingredients: [side]
|
|
27
|
+
caution: [side, back] # 安全警示、急救
|
|
28
|
+
storage: [side]
|
|
29
|
+
standard: [side]
|
|
30
|
+
manufacturer: [side]
|
|
31
|
+
contact: [side]
|
|
32
|
+
origin: [side]
|
|
33
|
+
barcode: [side]
|
|
34
|
+
certification: [side, front]
|
|
35
|
+
batch: [bottom, side]
|
|
36
|
+
|
|
37
|
+
# 常见版式(提示词里给 AI 参考;也用于看图后说明这个方向属于哪一种)
|
|
38
|
+
layouts:
|
|
39
|
+
- id: same_front_back
|
|
40
|
+
name_zh: "Matching front and back"
|
|
41
|
+
front: "Key visual, brand, product name, category / colour and sheen, volume, main selling points"
|
|
42
|
+
back: "Same as the front"
|
|
43
|
+
sides: "Use one side for application instructions and technical data. Use the other for precautions, applicable standards, manufacturer, barcode and country of origin. Vertical branding is also common."
|
|
44
|
+
common_for: "Shipping cases, cartons for large paint containers, and products displayed with either face outward"
|
|
45
|
+
- id: split
|
|
46
|
+
name_zh: "Different roles for front and back"
|
|
47
|
+
front: "Key visual, brand, product name, category / colour and sheen, volume, main selling points"
|
|
48
|
+
back: "Brand story or product introduction, application steps and technical data"
|
|
49
|
+
sides: "Precautions, applicable standards, manufacturer, barcode and country of origin. Use the other side for the brand or tagline."
|
|
50
|
+
common_for: "Small retail cartons and gift boxes"
|
|
51
|
+
|
|
52
|
+
# 提醒(不是规定):看图核对时逐条提示用户,由用户按现行标准与法规确认
|
|
53
|
+
reminders:
|
|
54
|
+
- "For paint packaging, check the applicable marking standard in the target market (for example, GB/T 9750 in China). Verify requirements for product name and model, applicable standards, net contents, production date or batch, manufacturer name and address, storage and safety information."
|
|
55
|
+
- "Check whether the target market requires packaging disclosures about hazardous substance limits for architectural coatings and wood finishes."
|
|
56
|
+
- "Net contents usually appear on the principal display panel. Check the target market’s requirements for placement and character height."
|
|
57
|
+
- "Leave sufficient quiet zones around the barcode, use a white or light background, and keep it clear of folds."
|
|
58
|
+
- "Batch codes and production dates are usually added after printing. Reserve blank space for them in the artwork."
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
id: default
|
|
2
|
+
name: Default
|
|
3
|
+
verified: true # 2026-10-24 用户:实物打样验证通过,配置档数值经工厂确认(规格补 21)
|
|
4
|
+
units: mm
|
|
5
|
+
|
|
6
|
+
bleed_mm: 3 # 出血
|
|
7
|
+
safe_margin_mm: 3 # 文字/Logo 距切线与折线
|
|
8
|
+
glue_flap:
|
|
9
|
+
ink: bleed_only # none | bleed_only | full
|
|
10
|
+
bleed_into_mm: 2 # 图文可伸入糊口的距离
|
|
11
|
+
tac_limit_pct: 300 # 总墨量上限,铜版纸胶印常见 300–320%
|
|
12
|
+
flexo: # 柔印(开槽箱水印):job 的 print.method = flexo 时代替上面的数值
|
|
13
|
+
tac_limit_pct: 240 # 水印直接印在瓦楞纸板上,吃墨多、干得慢,总墨量比胶印低
|
|
14
|
+
min_text_pt: 8 # 水印网线粗、易糊版,小字要大一些
|
|
15
|
+
min_print_line_mm: 0.3 # 图形里最细的线(开槽箱测试 R-09,补 47,要工厂确认,不在 2026-10-24 确认的范围里)
|
|
16
|
+
min_print_reverse_mm: 0.5 # 最窄的反白(没墨的细缝、小白点),比正线更容易糊
|
|
17
|
+
min_text_pt: 6 # 最小字号(pt),小于它给 T05 提醒;法规对净含量等另有字高要求
|
|
18
|
+
icc:
|
|
19
|
+
path: null # 工厂给了自己的 ICC 时填:嵌入生产文件、声明 PDF/X-4
|
|
20
|
+
name: null
|
|
21
|
+
auto: # 没填 path 时按纸张自动选本机已有的标准 ICC(docs/COLOR_V1.md):
|
|
22
|
+
coated: [JapanColor2001Coated.icc, CoatedFOGRA39.icc] # 只用来把照片转成印刷色,
|
|
23
|
+
uncoated: [JapanColor2001Uncoated.icc, UncoatedFOGRA29.icc] # 不嵌入、不声明 PDF/X-4
|
|
24
|
+
search_dirs: # 装了 Adobe 软件就有;ICC 文件不进代码仓库(CLAUDE.md)
|
|
25
|
+
- /Library/Application Support/Adobe/Color/Profiles/Recommended
|
|
26
|
+
- /Library/Application Support/Adobe/Color/Profiles
|
|
27
|
+
- /Library/ColorSync/Profiles
|
|
28
|
+
- ~/Library/ColorSync/Profiles
|
|
29
|
+
- C:/Program Files (x86)/Common Files/Adobe/Color/Profiles/Recommended
|
|
30
|
+
- C:/Windows/System32/spool/drivers/color
|
|
31
|
+
finish_rules:
|
|
32
|
+
foil: { min_line_mm: 0.2, min_gap_mm: 0.3 }
|
|
33
|
+
spot_uv: { min_line_mm: 0.3, min_gap_mm: 0.5 }
|
|
34
|
+
spot_uv_digital: { min_line_mm: 0.1, min_gap_mm: 0.2 } # 数码 UV(喷墨):用户确认工厂能做时,工艺加 --process digital 才用(2026-10-30 用户定,补 41;不在工厂确认的范围里)
|
|
35
|
+
emboss: { min_line_mm: 0.5, min_gap_mm: 1.0 } # 击凸、压凹共用
|
|
36
|
+
white: { min_line_mm: 0.3, min_gap_mm: 0.5 } # 白墨
|
|
37
|
+
crease_clearance_mm: 2
|
|
38
|
+
registration_tolerance_mm: 0.1 # 工艺超出对应的印刷图形多少就提醒没对齐(F04,补 20 新加,不在工厂确认的范围里)【初值】
|
|
39
|
+
attachment: # 配件(金属标,docs/ATTACHMENTS.md;补 40 新加,不在工厂确认的范围里)
|
|
40
|
+
fold_clearance_mm: 3 # 标的外形离折线 / 刀线至少多远(A01)【初值】
|
|
41
|
+
labels: # 不干胶标签(C4,docs/C4_CARRIER_FRAMEWORK.md;不在工厂确认的范围里,全部【初值】)
|
|
42
|
+
bleed_mm: 2 # 标签出血
|
|
43
|
+
safe_margin_mm: 2 # 文字、条码离模切外形至少多远
|
|
44
|
+
wrap_overlap_mm: 6 # 环标默认搭接
|
|
45
|
+
wrap_tolerance_mm: 1 # 环标长度和瓶周长 + 搭接差多少就报(L02)
|
|
46
|
+
panel_max_arc: 0.45 # 前 / 背标最宽占瓶周长的比例
|
|
47
|
+
min_corner_r_mm: 1 # 模切外形最小圆弧半径(L05)
|
|
48
|
+
min_concave_r_mm: 2 # 内凹圆弧最小半径(太小模切会撕,L05)
|
|
49
|
+
arc_fit_tol_mm: 0.05 # 椭圆 / 异形外形用双圆弧逼近的最大误差(守 D4)
|
|
50
|
+
barcode_max_arc_deg: 30 # 条码横跨的圆心角超过这个就提醒(L04;GS1 资料待查)
|
|
51
|
+
roll: # 卷标交付参数:规格书里写"请标签厂确认"
|
|
52
|
+
unwind: 1 # 出标方向(标准 8 个方位)
|
|
53
|
+
core_mm: 76 # 卷芯内径
|
|
54
|
+
max_roll_od_mm: 300 # 卷外径上限
|
|
55
|
+
gap_mm: 3 # 标签间距
|
|
56
|
+
across: 1 # 排数
|
|
57
|
+
liner_margin_mm: 1.5 # 底纸两边留边
|
|
58
|
+
pouches: # 软包装(C5,docs/C5_POUCHES.md;参照 Pacdora 参数化模板,不在工厂确认的范围里,全部【初值】)
|
|
59
|
+
bleed_mm: 3
|
|
60
|
+
safe_margin_mm: 3 # 文字离封边内沿至少多远
|
|
61
|
+
seal_small_mm: 5 # 封边宽:袋宽 ≤ seal_break_w 时 5,否则 7
|
|
62
|
+
seal_large_mm: 7
|
|
63
|
+
seal_break_w: 90
|
|
64
|
+
gusset_k: 0.3 # 自立袋底褶深 G = 0.3·W − 10
|
|
65
|
+
gusset_b: -10
|
|
66
|
+
zipper_top_mm: 13 # 拉链带离顶 13–25
|
|
67
|
+
zipper_w_mm: 12
|
|
68
|
+
tear_from_top_mm: 9 # 撕口离顶
|
|
69
|
+
tear_size_mm: 3
|
|
70
|
+
fin_seal_mm: 9 # 背封袋中缝封
|
|
71
|
+
end_seal_mm: 12 # 背封袋上下封
|
|
72
|
+
tolerance_mm: 1.5 # 制袋尺寸公差(规格书写"请制袋厂确认")
|
|
73
|
+
flat_depth_k: 0.4 # 平底袋不给底深时 = 0.4 × 正面宽
|
|
74
|
+
flat_top_seal_mm: 10 # 平底袋顶封
|
|
75
|
+
flat_bottom_seal_mm: 6 # 平底袋底片四边封、袋身下沿
|
|
76
|
+
flat_fin_mm: 10 # 平底袋背中缝每边(Pacdora 10)
|
|
77
|
+
flat_bottom_gap_mm: 10 # 平底袋的底单独一片,排在右边、和袋身之间空 10
|
|
78
|
+
corner_seal_mm: 3 # 平底袋四条竖角封(跨折线)
|
|
79
|
+
valve_d_mm: 22 # 单向排气阀直径
|
|
80
|
+
valve_gap_mm: 10 # 排气阀离拉链带 / 顶封
|
|
81
|
+
spout_d_mm: 10 # 吸嘴口径(常见 8.6 / 10 / 16 / 22)
|
|
82
|
+
spout_base_k: 2.6 # 吸嘴船形底座宽 = 2.6 × 口径
|
|
83
|
+
spout_base_h_mm: 12
|
|
84
|
+
spout_corner_mm: 28 # 斜角吸嘴的切角直角边
|
|
85
|
+
handle_w_k: 0.4 # 手提孔宽 = 0.4 × 袋宽,最多 90
|
|
86
|
+
handle_max_w_mm: 90
|
|
87
|
+
handle_h_mm: 20
|
|
88
|
+
handle_top_mm: 15 # 手提孔上沿离顶
|
|
89
|
+
handle_margin_mm: 8 # 孔四周的手提封
|
|
90
|
+
window_min_mm: 15 # 透明窗最小边
|
|
91
|
+
shape_tol_mm: 0.05 # 异形外形转圆弧误差
|
|
92
|
+
roll: # 卷膜交付(自动包装机制袋;请印刷厂、包装机厂确认)
|
|
93
|
+
unwind: 1 # 出卷方向(标准 8 个方位)
|
|
94
|
+
core_mm: 76
|
|
95
|
+
max_roll_od_mm: 400
|
|
96
|
+
max_splices: 2 # 每卷接头上限,接头处做标记
|
|
97
|
+
eye_w_mm: 10 # 光标(电眼色标)横向宽
|
|
98
|
+
eye_h_mm: 5 # 光标沿走膜方向长
|
|
99
|
+
eye_edge_mm: 2 # 光标离膜边 / 中缝封
|
|
100
|
+
eye_lane_mm: 3 # 光标两边留空的电眼通道
|
|
101
|
+
eye_cmyk: [0, 0, 0, 100]
|
|
102
|
+
lane_min_lum: 0.6 # 通道里亮度低于 0.6(0 黑 – 1 白)算深,电眼会误读(PO07)
|
|
103
|
+
fill_default: 0.7 # 装满效果图的鼓起量(job.json 的 pouch.fill 可改)
|
|
104
|
+
puff_k: 0.25 # 每面最大鼓起 = 鼓起量 × 0.25 × 内容区短边
|
|
105
|
+
base_k: 0.9 # 自立袋底 / 侧风琴撑开的半深 = 鼓起量 × 0.9 × 褶深
|
|
106
|
+
stretch_warn: 0.08 # PO05:装满后膜要变形超过 8% 的地方
|
|
107
|
+
small_text_pt: 8 # PO05:小于 8 pt 算小字
|
|
108
|
+
window: # 开窗(docs/M4_WINDOW.md)
|
|
109
|
+
min_size_mm: 10 # 窗口最小边长
|
|
110
|
+
min_corner_r_mm: 1 # 最小圆角(尖角容易撕裂)
|
|
111
|
+
default_corner_r_mm: 3 # 圆角矩形窗不给 --r 时的圆角
|
|
112
|
+
edge_clearance_mm: 6 # 窗口离压线 / 外轮廓 / 糊口落胶位置至少多远(贴窗是工厂的后续工序,不在这里管)
|
|
113
|
+
min_web_mm: 8 # 两个窗口之间至少留多宽的纸
|
|
114
|
+
max_area_ratio: 0.6 # 窗口占面积的比例超过这个就提醒(盒子变软)
|
|
115
|
+
|
|
116
|
+
spot_names: # PDF 专色名
|
|
117
|
+
cut: Dieline_Cut
|
|
118
|
+
crease: Dieline_Crease
|
|
119
|
+
perf: Dieline_Perf
|
|
120
|
+
partial_cut: Dieline_Score
|
|
121
|
+
reverse_crease: Dieline_ReverseCrease
|
|
122
|
+
foil_gold: Foil_Gold
|
|
123
|
+
foil_silver: Foil_Silver
|
|
124
|
+
foil_copper: Foil_Copper # 铜金 / 玫瑰金一类的箔(2026-10-29 天地盖测试 F-01)
|
|
125
|
+
spot_uv: Spot_UV
|
|
126
|
+
emboss: Emboss
|
|
127
|
+
deboss: Deboss
|
|
128
|
+
white: White_Ink
|
|
129
|
+
glue_area: Glue_Area # 糊胶区标注(信息层,不印;补 17 起生产文件里也有这一层)
|
|
130
|
+
keep_clear: Keep_Clear # 封口 / 拉链 / 撕口 / 搭接区标注(软袋、标签;信息层,不印;C5)
|
|
131
|
+
annotation: Info_Annotation # 生产文件的"标注"层(各面尺寸、图例、文件信息;只在出血外,不印)
|
|
132
|
+
attachment: Attach_Position # 配件(金属标)的贴标位置:外形线 + 中心十字,信息层,不印(补 40 新加,不在工厂确认的范围里)
|
|
133
|
+
|
|
134
|
+
dxf:
|
|
135
|
+
version: R12
|
|
136
|
+
layers: # ACI 颜色号:1 红 3 绿 5 蓝 6 洋红 2 黄
|
|
137
|
+
cut: { name: CUT, aci: 1 }
|
|
138
|
+
crease: { name: CREASE, aci: 3 }
|
|
139
|
+
perf: { name: PERF, aci: 5 }
|
|
140
|
+
partial_cut: { name: SCORE, aci: 6 }
|
|
141
|
+
reverse_crease: { name: RCREASE, aci: 2 }
|
|
142
|
+
glue_area: { name: GLUE, aci: 4 } # 糊胶区标注图层(不是刀线;常规标法)
|
|
143
|
+
keep_clear: { name: SEAL, aci: 6 } # 封口 / 拉链 / 撕口区标注图层(软袋、标签;不是刀线)
|
|
144
|
+
attachment: { name: ATTACH, aci: 30 } # 配件贴标位置(不是刀线;补 40)
|
|
145
|
+
|
|
146
|
+
cf2:
|
|
147
|
+
units: mm
|
|
148
|
+
linetypes: { cut: 1, crease: 2, perf: 3, partial_cut: 4, reverse_crease: 5 } # 参照 CFF2 线型表;反压线按常规单独编号,刀模厂按需映射【初值】
|
|
149
|
+
|
|
150
|
+
compensation: # 见规格 8.5
|
|
151
|
+
folding_carton: { k_panel: 1.0, k_height: 1.0, k_lid: 1.0 }
|
|
152
|
+
corrugated: { k_panel: 1.0, k_height: 1.0, k_lid: 1.0, k_flap: 0.5 } # k_lid:飞机盒的盖(v0.2)
|
|
153
|
+
|
|
154
|
+
deliverables: [production_pdf, spec_sheet, dxf] # 交付包(发给工厂):分层的生产文件、规格书、刀模 DXF(补 17)
|
|
155
|
+
archive: [confirm_png, preflight_report, preview_png, dieline_pdf, cf2, finish_pdfs] # 存档(<交付包>_archive/,工厂另要时再给)
|
|
156
|
+
file_preferences:
|
|
157
|
+
editable_source: layered_pdf # 有工厂要求 ai / cdr 时在这里标注
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# 材料预设。厚度【初值】,以工厂实测为准(规格第 7 节)。
|
|
2
|
+
sbs_300: { name: SBS 300 g/m², type: folding_carton, caliper_mm: 0.42, flute: null, surface: coated }
|
|
3
|
+
sbs_350: { name: SBS 350 g/m², type: folding_carton, caliper_mm: 0.48, flute: null, surface: coated }
|
|
4
|
+
sbs_400: { name: SBS 400 g/m², type: folding_carton, caliper_mm: 0.55, flute: null, surface: coated }
|
|
5
|
+
gd_350: { name: White-lined greyback 350 g/m², type: folding_carton, caliper_mm: 0.48, flute: null, surface: coated }
|
|
6
|
+
kraft_350: { name: Kraft board 350 g/m², type: folding_carton, caliper_mm: 0.50, flute: null, surface: uncoated }
|
|
7
|
+
flute_e: { name: E-flute corrugated, type: corrugated, caliper_mm: 1.5, flute: E }
|
|
8
|
+
flute_b: { name: B-flute corrugated, type: corrugated, caliper_mm: 3.0, flute: B }
|
|
9
|
+
flute_c: { name: C-flute corrugated, type: corrugated, caliper_mm: 4.0, flute: C }
|
|
10
|
+
flute_bc: { name: BC double-wall corrugated, type: corrugated, caliper_mm: 6.5, flute: BC }
|
|
11
|
+
# 不干胶标签(C4):厚度是面材(不含底纸),只用于 3D 离瓶面的距离;film 是膜材种类(透明 / 镀铝要白墨打底)
|
|
12
|
+
label_coated: { name: Coated paper label stock, type: label_stock, caliper_mm: 0.08, flute: null, surface: coated }
|
|
13
|
+
label_kraft: { name: Kraft paper label stock, type: label_stock, caliper_mm: 0.09, flute: null, surface: uncoated }
|
|
14
|
+
label_textured: { name: Textured paper label stock (wine label), type: label_stock, caliper_mm: 0.12, flute: null, surface: uncoated }
|
|
15
|
+
label_pp_white: { name: White PP label stock, type: label_stock, caliper_mm: 0.06, flute: null, surface: coated, film: white }
|
|
16
|
+
label_pp_clear: { name: Clear PP label stock, type: label_stock, caliper_mm: 0.05, flute: null, surface: coated, film: clear }
|
|
17
|
+
label_pe_white: { name: White PE label stock (squeeze bottles), type: label_stock, caliper_mm: 0.08, flute: null, surface: coated, film: white }
|
|
18
|
+
label_metallized: { name: Silver metallized label stock, type: label_stock, caliper_mm: 0.06, flute: null, surface: coated, film: metallized }
|
|
19
|
+
# 软包装复合膜(C5):厚度是总厚(只用于 3D),film 决定要不要白墨(透明 / 镀铝);复合结构以制袋厂为准【初值】
|
|
20
|
+
pouch_pet_pe_clear: { name: Clear PET/PE laminate, type: film_laminate, caliper_mm: 0.10, flute: null, surface: coated, film: clear }
|
|
21
|
+
pouch_pet_vmpet_pe: { name: Metallized PET/VMPET/PE laminate, type: film_laminate, caliper_mm: 0.11, flute: null, surface: coated, film: metallized }
|
|
22
|
+
pouch_pet_al_pe: { name: PET/AL/PE foil laminate, type: film_laminate, caliper_mm: 0.12, flute: null, surface: coated, film: metallized }
|
|
23
|
+
pouch_matte_white: { name: Matte BOPP/white PE laminate, type: film_laminate, caliper_mm: 0.10, flute: null, surface: coated, film: white }
|
|
24
|
+
pouch_kraft_pe: { name: Kraft/PE laminate, type: film_laminate, caliper_mm: 0.13, flute: null, surface: uncoated, film: kraft }
|
|
25
|
+
pouch_pet_al_rcpp: { name: PET/AL/RCPP retort laminate (121 °C; ready meals and meat), type: film_laminate, caliper_mm: 0.12, flute: null, surface: coated, film: metallized }
|
|
26
|
+
pouch_ny_pe_clear: { name: Clear NY/PE laminate (freezer and vacuum), type: film_laminate, caliper_mm: 0.09, flute: null, surface: coated, film: clear }
|
|
27
|
+
pouch_mono_pe_white: { name: White mono-material PE/PE (recyclable), type: film_laminate, caliper_mm: 0.11, flute: null, surface: coated, film: white }
|
|
28
|
+
pouch_kraft_pla: { name: Kraft/PLA laminate (biodegradable), type: film_laminate, caliper_mm: 0.13, flute: null, surface: uncoated, film: kraft }
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "5",
|
|
3
|
+
"note": "仅供视觉示意的材质预设;不是工厂实测或制造公差。roughness/metallic/clearcoat 为 0–255。relief_* 是击凸 / 压凹在屏幕上的显示参数,不是模具深度:relief_edge_mm 是沿轮廓一圈斜坡的宽度(里外各一半),relief_height_mm 是平顶高出纸面多少,relief_cavity 是凹处压暗的强度(0–1)。 attachment 是配件(金属标):field 是底面(喷砂哑光,粗糙度高)、relief 是凸起图案(抛光),height 是标面在高度图里的值(128 平、255 最高),edge_mm 是外缘斜坡宽。 static_reflection 是静态效果图的影棚(只看,不随视角换灯):左前方一块竖长柔光灯板(方向 strip_az_deg / strip_el_deg,0 正前、负值往左;距盒子中心 strip_distance、宽 strip_width、高 strip_height,都是盒子对角线的倍数)加浅色地面(往下看 floor_fade_deg 度提亮到最大);灯板软边 edge + edge_per_rough × 粗糙度(对角线倍数);粗糙度 ≥ rough_none 不反光、≤ rough_full 最强;strip_strength / floor_strength 是灯板、地面反光往白色混的最大比例。",
|
|
4
|
+
"fold": {
|
|
5
|
+
"crease_radius_caliper": 1.0
|
|
6
|
+
},
|
|
7
|
+
"paper": [
|
|
8
|
+
173,
|
|
9
|
+
0,
|
|
10
|
+
0
|
|
11
|
+
],
|
|
12
|
+
"matte_lamination": [
|
|
13
|
+
150,
|
|
14
|
+
0,
|
|
15
|
+
90
|
|
16
|
+
],
|
|
17
|
+
"gloss_lamination": [
|
|
18
|
+
48,
|
|
19
|
+
0,
|
|
20
|
+
240
|
|
21
|
+
],
|
|
22
|
+
"matte_varnish": [
|
|
23
|
+
140,
|
|
24
|
+
0,
|
|
25
|
+
60
|
|
26
|
+
],
|
|
27
|
+
"gloss_varnish": [
|
|
28
|
+
65,
|
|
29
|
+
0,
|
|
30
|
+
210
|
|
31
|
+
],
|
|
32
|
+
"foil_gold": {
|
|
33
|
+
"base": [
|
|
34
|
+
217,
|
|
35
|
+
174,
|
|
36
|
+
73
|
|
37
|
+
],
|
|
38
|
+
"material": [
|
|
39
|
+
59,
|
|
40
|
+
255,
|
|
41
|
+
0
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
"foil_silver": {
|
|
45
|
+
"base": [
|
|
46
|
+
218,
|
|
47
|
+
222,
|
|
48
|
+
230
|
|
49
|
+
],
|
|
50
|
+
"material": [
|
|
51
|
+
51,
|
|
52
|
+
255,
|
|
53
|
+
0
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
"foil_copper": {
|
|
57
|
+
"base": [
|
|
58
|
+
196,
|
|
59
|
+
122,
|
|
60
|
+
84
|
|
61
|
+
],
|
|
62
|
+
"material": [
|
|
63
|
+
59,
|
|
64
|
+
255,
|
|
65
|
+
0
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
"foil_holo": {
|
|
69
|
+
"base": [
|
|
70
|
+
200,
|
|
71
|
+
206,
|
|
72
|
+
215
|
|
73
|
+
],
|
|
74
|
+
"material": [
|
|
75
|
+
64,
|
|
76
|
+
255,
|
|
77
|
+
0
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
"spot_uv": [
|
|
81
|
+
30,
|
|
82
|
+
0,
|
|
83
|
+
255
|
|
84
|
+
],
|
|
85
|
+
"white": [
|
|
86
|
+
250,
|
|
87
|
+
250,
|
|
88
|
+
250
|
|
89
|
+
],
|
|
90
|
+
"relief_height_mm": 0.3,
|
|
91
|
+
"relief_edge_mm": 0.5,
|
|
92
|
+
"relief_cavity": 0.2,
|
|
93
|
+
"attachment": {
|
|
94
|
+
"field": [
|
|
95
|
+
110,
|
|
96
|
+
255,
|
|
97
|
+
0
|
|
98
|
+
],
|
|
99
|
+
"relief": [
|
|
100
|
+
50,
|
|
101
|
+
255,
|
|
102
|
+
0
|
|
103
|
+
],
|
|
104
|
+
"height": 200,
|
|
105
|
+
"edge_mm": 1.0
|
|
106
|
+
},
|
|
107
|
+
"static_reflection": {
|
|
108
|
+
"strip_az_deg": -33,
|
|
109
|
+
"strip_el_deg": -8,
|
|
110
|
+
"strip_distance": 1.2,
|
|
111
|
+
"strip_width": 0.18,
|
|
112
|
+
"strip_height": 2.6,
|
|
113
|
+
"edge": 0.05,
|
|
114
|
+
"edge_per_rough": 0.5,
|
|
115
|
+
"floor_fade_deg": 30,
|
|
116
|
+
"strip_strength": 0.24,
|
|
117
|
+
"floor_strength": 0.04,
|
|
118
|
+
"rough_none": 160,
|
|
119
|
+
"rough_full": 30
|
|
120
|
+
}
|
|
121
|
+
}
|