Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6c044ae087 | ||
|
|
82ff014287 | ||
|
|
3f36a86f39 | ||
|
|
748d86d89f | ||
|
|
95a168a376 | ||
|
|
f69eccd32a | ||
|
|
c1baacf8a0 | ||
|
|
7708ca568d | ||
|
|
505a712f86 | ||
|
|
e4b0828644 | ||
|
|
ec21c84738 | ||
|
|
ce7d4815e6 | ||
|
|
6d8a13c33b | ||
|
|
4d4e52722f | ||
|
|
406ef0dd03 | ||
|
|
206a7461ea | ||
|
|
78a22fca93 | ||
|
|
db33aaa4dc | ||
|
|
cd959d5d87 | ||
|
|
064eee8b84 | ||
|
|
250fed8808 | ||
|
|
0c2e26fa3d | ||
|
|
e328b60992 | ||
|
|
afa9252b59 | ||
|
|
56ebde968a | ||
|
|
840d44b611 | ||
|
|
34696f5651 | ||
|
|
c300fa1e8d | ||
|
|
cd30b196b2 | ||
|
|
b67269ccc4 |
@@ -1,15 +1,10 @@
|
||||
# clang-tidy configuration, enforced by the clang-tidy CI job on the lines a pull
|
||||
# request changes (scripts/clang_tidy_diff.py). Two things are reported.
|
||||
# Missing includes: a file should include the header for every symbol it uses, not
|
||||
# rely on the precompiled header or another header's includes. Run with --fix to
|
||||
# add them.
|
||||
# Using-directives and using-declarations in the global namespace of a header:
|
||||
# they reach every file that includes the header, and a using-declaration also
|
||||
# makes the header look like the one to include for that name. Qualify the name
|
||||
# in the header, and put the using in the source files that want it.
|
||||
# request changes (scripts/clang_tidy_diff.py). Only missing includes are reported
|
||||
# for now: a file should include the header for every symbol it uses, not rely on
|
||||
# the precompiled header or another header's includes. Run with --fix to add them.
|
||||
# Every check listed here gates pull requests, so enable a new one only once the
|
||||
# code it flags on touched lines is reasonable to fix in passing.
|
||||
Checks: '-*,misc-include-cleaner,google-global-names-in-headers'
|
||||
Checks: '-*,misc-include-cleaner'
|
||||
WarningsAsErrors: '*'
|
||||
CheckOptions:
|
||||
# Missing includes only. Builds without the precompiled header break on these.
|
||||
|
||||
@@ -262,9 +262,9 @@ and a band is not a "gesture" in the `CadLevel::Gesture` sense because nothing h
|
||||
|---|---|---|---|---|---|
|
||||
| `Move` | — | `update_hover` / `update_solid_hover` (**non-consuming**, returns false) | — | passthrough | hover only asks for a repaint, `:10022-10025` |
|
||||
| `LeftDown` | orbit may begin | latch press, **return false** | — | consume-or-orbit is the canvas's call | `:10058-10063`; consuming here killed orbit once already |
|
||||
| `LeftDrag` > 8 px | — | start + drive band, **consume** | — | no longer orbits in this canvas | middle-drag orbits, right-drag pans (`:10013-10016`) |
|
||||
| `LeftDrag` > 8 px | — | start + drive band, **consume**, when Shift is held or the left button has no camera action | — | otherwise the left button's drag action (Preferences > Control) | the band is Prepare's Shift+left-drag rectangle selection |
|
||||
| `LeftUp` | — | commit pick **or** resolve band | — | — | `:10035-10041` |
|
||||
| `MiddleDrag` / `RightDrag` | — | must not see it | — | orbit / pan | camera gestures never reach the FSM |
|
||||
| `MiddleDrag` / `RightDrag` | — | must not see it | — | the button's drag action (Preferences > Control) | camera gestures never reach the FSM; a right press reaches the tool only once its release shows it was a click |
|
||||
| `RightClick` | — | — | offer menu | — | `snaporca-xmh6` open: a right-click that only clears the sketch selection eats the offer |
|
||||
| `Esc` | — | — | `escape()` ladder | — | one route whatever holds focus (`:4228-4231`) |
|
||||
| `Del` / `Backspace` | — | `delete_selected_or_last_sketch_entity()` | char hook | — | `:4260` |
|
||||
|
||||
@@ -135,7 +135,7 @@ contract between them is stated in code rather than spread across handlers.
|
||||
| --- | --- | --- |
|
||||
| `Transient` | a value field or a popup menu | closes it; the tool stays armed |
|
||||
| `Gesture` | an uncommitted delta — an entity being drawn, a body being dragged | reverts it; committed work is untouched |
|
||||
| `Tool` | a feature card, an armed sketch tool, a constrain session | exits it; drawn entities survive |
|
||||
| `Tool` | a feature card, Sketch waiting for its plane, an armed sketch tool, a constrain session | exits it; drawn entities survive |
|
||||
| `Idle` | nothing transient | clears the selection, a Feature tree or Bodies row included; leaves a sketch session only if it is empty |
|
||||
|
||||
`cad_escape_level()` is a `constexpr` free function over a POD of four booleans rather than a
|
||||
@@ -149,26 +149,66 @@ explicit selection, the sketch ribbon's Cancel, which asks first, or `Ctrl+Z`. A
|
||||
*session* is deliberately not a `Tool` level; it is the environment the `Idle` level lives in,
|
||||
which makes the destructive path unrepresentable rather than merely unlikely.
|
||||
|
||||
A body Move is the one `Gesture` that outlives the press: its gizmo stays up between drags until
|
||||
Confirm keeps the placement or `Esc` or Cancel puts the body back. Until then the selection is
|
||||
held — a click off the gizmo only steers the camera — and undo is refused, since the placement
|
||||
is not in the history. Anything that starts another edit (a feature card, a sketch, placing
|
||||
imported art or text, another body's Move, a rebuild) keeps the placement, as switching gizmos
|
||||
keeps a move in Prepare. The panel ends the Move in one place (`DesignPanel::end_body_move`), so
|
||||
the gizmo, the Move / Rotate card and the ✓/✗ cannot outlive one another.
|
||||
|
||||
Right-click is read at button-up against one budget, 3 px of drift, applied to the whole press
|
||||
rather than to its end points: a press that wandered past the budget at any moment is
|
||||
navigation, even if it comes back to where it started, which is what stops a slow, careful
|
||||
orbit from ending in a menu. There is no time budget — a gesture that means something different
|
||||
when it is slow is exactly what the interaction charter rules out. The raycast uses the press
|
||||
position, not the release. An armed sketch tool that already consumed the right
|
||||
button (to terminate a chain, say) declines to also open a menu, through a read-and-clear flag.
|
||||
Past either budget the event is navigation, and navigation does not transition the state
|
||||
machine.
|
||||
position, not the release. The sketch tool sees a right press only once the release has shown it
|
||||
was a click: the press itself goes to the camera, which may pan or orbit with that button, and the
|
||||
canvas replays it to the tool on a stationary release. A tool that uses the click (to terminate a
|
||||
chain, say) keeps the menu closed. Past either budget the event is navigation, and navigation
|
||||
does not transition the state machine.
|
||||
|
||||
Navigation itself is Prepare's: the camera reads the drag actions set in Preferences > Control
|
||||
for each button. The left button is shared with picking, so a whole body is swept with a
|
||||
rectangle on plain left-drag only while no camera action is assigned to it, and with
|
||||
Shift+left-drag otherwise — Prepare's own rectangle selection.
|
||||
for each button, and in the Touchpad camera style a move with Alt held orbits and one with Shift
|
||||
held pans, whatever tool is armed. The left button is shared with picking and drawing, so a tool
|
||||
handle or a press that draws takes it first, as a gizmo does in Prepare; a whole body is swept
|
||||
with a rectangle on plain left-drag only while no camera action is assigned to the left button,
|
||||
and with Shift+left-drag otherwise — Prepare's own rectangle selection.
|
||||
|
||||
Entering a sketch changes three things at once so the mode is legible: a banner above the
|
||||
Entering a sketch changes two things at once so the mode is legible: a banner above the
|
||||
canvas (a sibling of the canvas, not a child over it — on GTK a child window over a
|
||||
`wxGLCanvas` is a native window and does not reliably stack over GL), the printer bed muted so
|
||||
a plate grid is never read as a sketch grid, and `N` to look normal to the plane. Code that
|
||||
changes any of the three belongs with a change to this section.
|
||||
`wxGLCanvas` is a native window and does not reliably stack over GL), and `N` to look normal to
|
||||
the plane. The printer bed stays: there is no sketch grid, so the plate grid is the only ground
|
||||
reference a sketch has. Code that changes either belongs with a change to this section.
|
||||
|
||||
Sketch mode is never entered without a plane under it, so the banner, the sketch keys and the
|
||||
sketch offer always have a session to act on. Sketch on a picked flat face or reference plane opens
|
||||
the session on it at once. With nothing picked it stays in Feature mode and waits for one — an
|
||||
armed `Tool`, left with `Esc` or ✗, and ended by anything that starts another edit — and the
|
||||
reference plane or flat face clicked next opens the session. A picked plane is a selection like a
|
||||
face: the sketch on it uses it up, and `Esc` or a click on nothing lets go of it, so a plane that
|
||||
can no longer be seen never decides where the next sketch goes.
|
||||
|
||||
The reference planes — XY, XZ and YZ through the modeling origin, with their half-axes — are
|
||||
drawn on demand, because three translucent squares over every model are noise once they are not
|
||||
the thing being picked. Sketch brings them up while it waits for a plane, which is exactly when
|
||||
they are picked, and the session the pick opens takes them away; a live session draws none. The
|
||||
Feature tree's Origin row keeps them up outside a sketch. Its state is a view preference in
|
||||
AppConfig rather than part of the recipe, so it costs the project format nothing. The Plane tool
|
||||
keeps its own rule: the planes and the datums as Offset bases, and nothing for the other methods,
|
||||
where a click on a plane would rewrite the datum's references. The `P` and `A` keys are a
|
||||
separate, unpickable view helper and do not follow the Origin row.
|
||||
|
||||
The Bed row, under the Origin row, is the printer bed's switch in the same way: it draws or hides
|
||||
the bed and its plate grid in every mode. It is a view preference in AppConfig too, and the bed is
|
||||
shown until it is turned off.
|
||||
|
||||
The two rows are view switches, not history, and the tree says so: they sit unframed on the Feature
|
||||
tree's card, above the features' own framed list, and stay put while the features scroll. A click
|
||||
never selects either row, since a selected Origin or Bed would have nothing to edit, move or
|
||||
delete; the eye and the right-click menu are the only targets, and a row's label dims while its
|
||||
thing is hidden, as a hidden body's does. Because the block never takes the focus, `Ctrl+Shift+O`
|
||||
and `Ctrl+Shift+B` flip the Origin and the Bed from the keyboard.
|
||||
|
||||
## Rendering the bodies
|
||||
|
||||
@@ -189,6 +229,15 @@ degenerate edges are left out (`GeometryEngine::display_edges`), and the polylin
|
||||
once per shape, keyed by its `TShape`, because a recompute that leaves a body unchanged is the
|
||||
common case.
|
||||
|
||||
While a feature card is open, its preview ghost is the whole model the candidate would produce,
|
||||
drawn translucent over the bodies, so every face the feature leaves alone is in both at the same
|
||||
depth. The ghost is drawn with a depth bias that pushes it back (`GLVolume::depth_bias`), so on a shared face
|
||||
the body always wins instead of the two copies z-fighting, and the ghost shows only where the
|
||||
result reaches past the bodies. Material a feature removes lies inside the old solid and would not
|
||||
show at all, so the tools whose result mostly coincides with the body — Fillet/Chamfer, Draft,
|
||||
Hole and the Mate hover — hide the bodies once the preview is valid and draw the result alone,
|
||||
opaque.
|
||||
|
||||
## Showing what is selected
|
||||
|
||||
A selection is drawn on the faces it names, never as a tint over the body: a translucent
|
||||
@@ -214,7 +263,17 @@ replay costs up to a recompute, so the panel finds the faces once per row and to
|
||||
generation, off the UI thread, and only while no feature card is open. One selection is live at
|
||||
a time: a viewport pick clears the feature row and a feature row clears the viewport pick, as the
|
||||
Feature tree and Bodies list do between themselves. `Esc`, a click on empty space and an
|
||||
empty rubber band all let go of it, whichever list or pick made it.
|
||||
empty rubber band all let go of it, whichever list or pick made it — except while a body Move is
|
||||
open, which holds the selection until it ends (see the interaction contract).
|
||||
|
||||
Zoom to selection, on a Feature tree or Bodies row and in its right-click menu, frames one thing
|
||||
along the current view direction, as the canvas's Fit button frames the selection. On a body it
|
||||
frames the body whole, hidden or not, from its display mesh: the viewport never selects a hidden
|
||||
body, so the selection cannot stand in for it. On a sketch it frames the sketch's own geometry,
|
||||
drawn, consumed or suppressed; on any other feature, the faces the feature made, found as the row
|
||||
highlight finds them and from the same cache. From the offer it frames whatever the selection is,
|
||||
a body again included. A feature that is not a sketch and makes no faces, such as a datum plane
|
||||
or a suppressed Extrude, has no Zoom to selection.
|
||||
|
||||
## Following the app
|
||||
|
||||
@@ -231,9 +290,21 @@ The tab is a page of Orca's main window and answers to the same settings as Prep
|
||||
- **Sidebar icons.** Every clickable icon in the sidebar shows a hover chip. The card-header and
|
||||
constraint-row buttons are Orca's self-painted `Button`, because a native button cannot take a
|
||||
hover background on macOS. The Feature tree and Bodies lists are a custom-drawn
|
||||
`DesignRowList` rather than a `wxTreeCtrl`, so each row carries its own actions — Edit,
|
||||
Show/hide and Delete on a feature, Move, Show/hide and Delete on a body — and the eye shows
|
||||
whether that row is hidden.
|
||||
`DesignRowList` rather than a `wxTreeCtrl`, so each row carries its own actions — Zoom to
|
||||
selection, Edit, Show/hide and Delete on a feature, Zoom to selection, Move, Show/hide and
|
||||
Delete on a body, and only Show/hide on the Origin and Bed rows, a separate non-selectable list
|
||||
above the features — and the eye shows whether that row is hidden. A feature with nothing to
|
||||
frame keeps a blank cell where Zoom to selection would be, so every icon stays in its column.
|
||||
- **Plates.** This is the one thing the tab does not follow. The canvas has a bed of its own at
|
||||
the printer bed's home position, whichever plate Prepare has current, and a new document's
|
||||
modeling origin is that bed's centre. A bed that followed the current plate would slide out
|
||||
from under a design: the origin is fixed once per document, baked into every sketch plane and
|
||||
saved in the recipe, while the current plate can change between visits. Commit to Plate does
|
||||
not need it either, since the committed object is placed on an empty spot of the current
|
||||
plate. What the canvas does read from the plate is moved onto its bed: the exclude areas, the
|
||||
plate box the camera orbits about when nothing is picked (`GLCanvas3D::_current_plate_box`),
|
||||
and the first view, which starts from Prepare's camera turned to the tab's iso view: the CAD
|
||||
isometric from the front-right corner that Home returns to, not Prepare's front-left one.
|
||||
- **Viewport text.** The status line and the active tool's values are drawn by the canvas in
|
||||
its ImGui pass, so they go with the canvas: a top-level window over GL does not follow its
|
||||
frame and was left floating over other applications.
|
||||
@@ -256,12 +327,12 @@ permanent row index, verbs that do not apply shown disabled **in place with thei
|
||||
rather than removed. The invariant is that a verb's row index is identical in every selection
|
||||
where it appears and that adding a verb never moves an existing one — the hand learns the
|
||||
position, so the menu is never re-sorted, compacted or adaptively ordered. Above the families
|
||||
sits one *flat* row, holding Rename and Color — what a selection is opened for most: its verbs are
|
||||
items of their own at the top of the menu rather than a family's submenu. It is appended after
|
||||
the eight, so it moved no existing index, and it reads the same from the viewport and from a row
|
||||
of the Bodies list.
|
||||
sits one *flat* row, holding Rename, Color and Zoom to selection — what a selection is opened for
|
||||
most: its verbs are items of their own at the top of the menu rather than a family's submenu. It
|
||||
is appended after the eight, so it moved no existing index, and it reads the same from the
|
||||
viewport and from a row of the Bodies list.
|
||||
|
||||
An invariant across 92 verbs and 20 selection kinds does not survive by review, so the map
|
||||
An invariant across 93 verbs and 20 selection kinds does not survive by review, so the map
|
||||
exists once, as data: `scripts/CAD/tool_atlas.json` carries every verb with its row, key, icon,
|
||||
accepted selections, preconditions and refusal string, and `scripts/CAD/gen_offer_table.py`
|
||||
emits `src/slic3r/GUI/CAD/DesignOffer.hpp` from it. The header is checked in and never
|
||||
|
||||
@@ -36,8 +36,13 @@ override is not available in these profiles. The source's `EXCLUDE_E_START` and
|
||||
`EXCLUDE_E_END` internal markers become comments rather than printer commands.
|
||||
|
||||
Pressure-advance restoration and automatic pressure-advance emission use the
|
||||
selected filament preset's settings. These profiles do not impose machine-owned
|
||||
filament overrides. Dock-fan control retains the source's material and layer
|
||||
selected filament preset's settings. The INDX filament presets include
|
||||
`fdm_filament_template_indx`, whose start G-code sets the filament's pressure
|
||||
advance with `M572` and then starts the firmware's automatic calibration with
|
||||
`M573 R`, the commands PrusaSlicer emits after a tool change; the station purge
|
||||
disables pressure advance before it. The template also carries Prusa's
|
||||
multi-tool ramming and a 10 mm³ minimal purge. These profiles do not impose
|
||||
machine-owned filament overrides. Dock-fan control retains the source's material and layer
|
||||
conditions; shutdown parks the tool and turns off the used heaters and dock fan.
|
||||
|
||||
## Configuration boundaries
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#949494" stroke-width="0.85" stroke-linecap="round" stroke-linejoin="round"><path d="M2 9 14 9 22 15 10 15Z"/><path d="M2 9V11L10 17H22V15M10 15V17"/><path d="M6 9 14 15M10 9 18 15M6 12H18"/></svg>
|
||||
|
After Width: | Height: | Size: 301 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#949494" stroke-width="0.85" stroke-linecap="round" stroke-linejoin="round"><path d="M3.15 19.57V4.43A1.28 1.28 0 0 1 4.43 3.15H17.05L20.85 6.95V19.57A1.28 1.28 0 0 1 19.57 20.85H4.43A1.28 1.28 0 0 1 3.15 19.57ZM8.2 3.15V5.68A1.28 1.28 0 0 0 9.48 6.95H14.52A1.28 1.28 0 0 0 15.8 5.68V3.15M17.05 20.85V15.8A1.28 1.28 0 0 0 15.8 14.53H8.2A1.28 1.28 0 0 0 6.95 15.8V20.85"/></svg>
|
||||
|
After Width: | Height: | Size: 481 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M8.08,10.74 8.08,5.4M8.08,10.74 15.55,4.87M17.15,10.2 15.55,4.87M4.88,8.6 8.62,20.87M17.15,10.2 20.89,16.07M8.08,10.74 12.78,15.54 17.15,10.2M17.15,19.8 12.78,15.54 8.62,20.87M4.88,8.6 8.08,10.74 17.15,10.2 19.82,7M8.08,10.74 8.62,20.87M17.15,10.2 17.15,19.8" fill="none" stroke="#949494" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><polygon points="4.88,8.6 8.08,5.4 15.55,4.87 19.82,7 20.89,16.07 17.15,19.8 8.62,20.87 4.35,17.14" fill="none" stroke="#949494" stroke-width="0.85" stroke-linejoin="round"/><polygon points="2.84,4.68 7.32,4.68 7.32,2.84 11.29,5.86 7.32,8.88 7.32,7.04 2.84,7.04" style="fill:#009688;stroke:#009688;stroke-width:0.4;stroke-linejoin:round"/></svg>
|
||||
|
After Width: | Height: | Size: 794 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#949494" stroke-width="0.85" stroke-linecap="round" stroke-linejoin="round"><rect x="3.15" y="3.15" width="17.7" height="17.7" rx="1.28"/><path d="M7.6 12H16.4M12 7.6V16.4"/></svg>
|
||||
|
After Width: | Height: | Size: 284 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#949494" stroke-width="0.85" stroke-linecap="round" stroke-linejoin="round"><path d="M5.88 3.88H17.16M3.88 5.88V17.16M19.16 5.88V12.38M5.88 19.16H12.38M9.85 7.85H13.2M7.85 9.85V13.2M14.92 9.85A7.35 7.35 0 0 1 9.85 14.92"/><path d="M2.83 2.83h2.1v2.1h-2.1zM18.11 2.83h2.1v2.1h-2.1zM2.83 18.11h2.1v2.1h-2.1zM6.8 6.8h2.1v2.1h-2.1zM14.15 6.8h2.1v2.1h-2.1zM6.8 14.15h2.1v2.1h-2.1z" fill="#949494" stroke="none"/><polygon points="16.01,13.19 18.3,13.19 18.3,16.01 21.12,16.01 21.12,18.3 18.3,18.3 18.3,21.12 16.01,21.12 16.01,18.3 13.19,18.3 13.19,16.01 16.01,16.01" style="fill:#009688;stroke:#009688;stroke-width:0.4;stroke-linejoin:round"/></svg>
|
||||
|
After Width: | Height: | Size: 747 B |
@@ -1 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M3.0 9.0 L16.0 9.0 L16.0 21.0 L3.0 21.0 ZM3.0 9.0 L7.0 5.0 L20.0 5.0 L16.0 9.0M20.0 5.0 L20.0 17.0 L16.0 21.0" fill="none" stroke="#949494" stroke-width="0.85" stroke-linecap="round" stroke-linejoin="round"/><path d="M6.168410256410256 13.423897435897436V13.868410256410256Q5.908923076923077 13.744307692307691 5.678769230769231 13.683384615384615Q5.448615384615385 13.622461538461538 5.23425641025641 13.622461538461538Q4.861948717948718 13.622461538461538 4.66 13.766871794871793Q4.458051282051283 13.91128205128205 4.458051282051283 14.177538461538461Q4.458051282051283 14.400923076923076 4.592307692307693 14.514871794871794Q4.726564102564103 14.628820512820512 5.101128205128205 14.69876923076923L5.3764102564102565 14.755179487179486Q5.886358974358975 14.852205128205128 6.128923076923078 15.09702564102564Q6.37148717948718 15.341846153846152 6.37148717948718 15.75251282051282Q6.37148717948718 16.242153846153844 6.043179487179488 16.49487179487179Q5.7148717948717955 16.747589743589742 5.080820512820513 16.747589743589742Q4.841641025641026 16.747589743589742 4.572000000000001 16.693435897435897Q4.302358974358975 16.639282051282052 4.013538461538462 16.53323076923077V16.063897435897434Q4.291076923076924 16.219589743589744 4.557333333333334 16.2985641025641Q4.823589743589745 16.37753846153846 5.080820512820513 16.37753846153846Q5.471179487179487 16.37753846153846 5.683282051282052 16.224102564102562Q5.895384615384616 16.070666666666664 5.895384615384616 15.786358974358974Q5.895384615384616 15.538153846153845 5.743076923076924 15.398256410256408Q5.590769230769231 15.258358974358973 5.243282051282051 15.188410256410256L4.965743589743591 15.134256410256409Q4.455794871794872 15.032717948717949 4.227897435897436 14.816102564102565Q4.000000000000001 14.599487179487179 4.000000000000001 14.213641025641024Q4.000000000000001 13.766871794871793 4.314769230769231 13.509641025641024Q4.629538461538462 13.252410256410256 5.182358974358975 13.252410256410256Q5.419282051282051 13.252410256410256 5.665230769230769 13.29528205128205Q5.911179487179488 13.338153846153846 6.168410256410256 13.423897435897436ZM6.615179487179487 13.313333333333333H9.46502564102564V13.696923076923076H8.269128205128204V16.682153846153845H7.811076923076923V13.696923076923076H6.615179487179487ZM9.905025641025642 13.313333333333333H12.035076923076925V13.696923076923076H10.360820512820514V14.69425641025641H11.965128205128206V15.077846153846153H10.360820512820514V16.2985641025641H12.075692307692309V16.682153846153845H9.905025641025642ZM13.280615384615384 13.687897435897435V14.953743589743588H13.85374358974359Q14.171897435897435 14.953743589743588 14.345641025641026 14.78902564102564Q14.519384615384615 14.624307692307692 14.519384615384615 14.319692307692307Q14.519384615384615 14.017333333333333 14.345641025641026 13.852615384615383Q14.171897435897435 13.687897435897435 13.85374358974359 13.687897435897435ZM12.824820512820512 13.313333333333333H13.85374358974359Q14.420102564102564 13.313333333333333 14.710051282051282 13.569435897435897Q15.0 13.82553846153846 15.0 14.319692307692307Q15.0 14.818358974358974 14.710051282051282 15.073333333333332Q14.420102564102564 15.32830769230769 13.85374358974359 15.32830769230769H13.280615384615384V16.682153846153845H12.824820512820512Z" fill="#949494" stroke="none"/></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 1.5 23 23"><path d="M3.0 9.0 L16.0 9.0 L16.0 21.0 L3.0 21.0 ZM3.0 9.0 L7.0 5.0 L20.0 5.0 L16.0 9.0M20.0 5.0 L20.0 17.0 L16.0 21.0" fill="none" stroke="#949494" stroke-width="0.85" stroke-linecap="round" stroke-linejoin="round"/><path d="M6.168410256410256 13.423897435897436V13.868410256410256Q5.908923076923077 13.744307692307691 5.678769230769231 13.683384615384615Q5.448615384615385 13.622461538461538 5.23425641025641 13.622461538461538Q4.861948717948718 13.622461538461538 4.66 13.766871794871793Q4.458051282051283 13.91128205128205 4.458051282051283 14.177538461538461Q4.458051282051283 14.400923076923076 4.592307692307693 14.514871794871794Q4.726564102564103 14.628820512820512 5.101128205128205 14.69876923076923L5.3764102564102565 14.755179487179486Q5.886358974358975 14.852205128205128 6.128923076923078 15.09702564102564Q6.37148717948718 15.341846153846152 6.37148717948718 15.75251282051282Q6.37148717948718 16.242153846153844 6.043179487179488 16.49487179487179Q5.7148717948717955 16.747589743589742 5.080820512820513 16.747589743589742Q4.841641025641026 16.747589743589742 4.572000000000001 16.693435897435897Q4.302358974358975 16.639282051282052 4.013538461538462 16.53323076923077V16.063897435897434Q4.291076923076924 16.219589743589744 4.557333333333334 16.2985641025641Q4.823589743589745 16.37753846153846 5.080820512820513 16.37753846153846Q5.471179487179487 16.37753846153846 5.683282051282052 16.224102564102562Q5.895384615384616 16.070666666666664 5.895384615384616 15.786358974358974Q5.895384615384616 15.538153846153845 5.743076923076924 15.398256410256408Q5.590769230769231 15.258358974358973 5.243282051282051 15.188410256410256L4.965743589743591 15.134256410256409Q4.455794871794872 15.032717948717949 4.227897435897436 14.816102564102565Q4.000000000000001 14.599487179487179 4.000000000000001 14.213641025641024Q4.000000000000001 13.766871794871793 4.314769230769231 13.509641025641024Q4.629538461538462 13.252410256410256 5.182358974358975 13.252410256410256Q5.419282051282051 13.252410256410256 5.665230769230769 13.29528205128205Q5.911179487179488 13.338153846153846 6.168410256410256 13.423897435897436ZM6.615179487179487 13.313333333333333H9.46502564102564V13.696923076923076H8.269128205128204V16.682153846153845H7.811076923076923V13.696923076923076H6.615179487179487ZM9.905025641025642 13.313333333333333H12.035076923076925V13.696923076923076H10.360820512820514V14.69425641025641H11.965128205128206V15.077846153846153H10.360820512820514V16.2985641025641H12.075692307692309V16.682153846153845H9.905025641025642ZM13.280615384615384 13.687897435897435V14.953743589743588H13.85374358974359Q14.171897435897435 14.953743589743588 14.345641025641026 14.78902564102564Q14.519384615384615 14.624307692307692 14.519384615384615 14.319692307692307Q14.519384615384615 14.017333333333333 14.345641025641026 13.852615384615383Q14.171897435897435 13.687897435897435 13.85374358974359 13.687897435897435ZM12.824820512820512 13.313333333333333H13.85374358974359Q14.420102564102564 13.313333333333333 14.710051282051282 13.569435897435897Q15.0 13.82553846153846 15.0 14.319692307692307Q15.0 14.818358974358974 14.710051282051282 15.073333333333332Q14.420102564102564 15.32830769230769 13.85374358974359 15.32830769230769H13.280615384615384V16.682153846153845H12.824820512820512Z" fill="#949494" stroke="none"/><polygon points="2.72,5.99 7.02,5.99 7.02,4.22 10.82,7.12 7.02,10.01 7.02,8.25 2.72,8.25" style="fill:#009688;stroke:#009688;stroke-width:0.38;stroke-linejoin:round"/></svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.5 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#949494" stroke-width="0.85" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="7"/><path d="M6 10a4 4 0 0 1 4-4M15 15 21.5 21.5"/></svg>
|
||||
|
After Width: | Height: | Size: 264 B |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Prusa",
|
||||
"version": "02.04.00.15",
|
||||
"version": "02.04.00.16",
|
||||
"force_update": "0",
|
||||
"description": "Prusa configurations",
|
||||
"machine_model_list": [
|
||||
@@ -1573,48 +1573,32 @@
|
||||
],
|
||||
"filament_list": [
|
||||
{
|
||||
"name": "Generic ASA @Prusa CORE One",
|
||||
"sub_path": "filament/Generic ASA @Prusa CORE One.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic PLA Silk @Prusa CORE One",
|
||||
"sub_path": "filament/Generic PLA Silk @Prusa CORE One.json"
|
||||
"name": "Generic PC @Prusa",
|
||||
"sub_path": "filament/Generic PC @Prusa.json"
|
||||
},
|
||||
{
|
||||
"name": "fdm_filament_common",
|
||||
"sub_path": "filament/fdm_filament_common.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic ASA @Prusa CORE One 0.6",
|
||||
"sub_path": "filament/Generic ASA @Prusa CORE One 0.6.json"
|
||||
"name": "fdm_filament_template_indx",
|
||||
"sub_path": "filament/fdm_filament_template_indx.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic ASA @Prusa CORE One 0.8",
|
||||
"sub_path": "filament/Generic ASA @Prusa CORE One 0.8.json"
|
||||
"name": "fdm_filament_template_nextruder_pet",
|
||||
"sub_path": "filament/fdm_filament_template_nextruder_pet.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic ASA @Prusa CORE One HF 0.4",
|
||||
"sub_path": "filament/Generic ASA @Prusa CORE One HF 0.4.json"
|
||||
"name": "fdm_filament_template_nextruder_pet_hf",
|
||||
"sub_path": "filament/fdm_filament_template_nextruder_pet_hf.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic ASA @Prusa CORE One HF 0.5",
|
||||
"sub_path": "filament/Generic ASA @Prusa CORE One HF 0.5.json"
|
||||
"name": "fdm_filament_template_nextruder_pla",
|
||||
"sub_path": "filament/fdm_filament_template_nextruder_pla.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic ASA @Prusa CORE One HF 0.6",
|
||||
"sub_path": "filament/Generic ASA @Prusa CORE One HF 0.6.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic ASA @Prusa CORE One HF 0.8",
|
||||
"sub_path": "filament/Generic ASA @Prusa CORE One HF 0.8.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic PLA Silk @Prusa CORE One 0.6",
|
||||
"sub_path": "filament/Generic PLA Silk @Prusa CORE One 0.6.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic PLA Silk @Prusa CORE One 0.8",
|
||||
"sub_path": "filament/Generic PLA Silk @Prusa CORE One 0.8.json"
|
||||
"name": "fdm_filament_template_nextruder_pla_hf",
|
||||
"sub_path": "filament/fdm_filament_template_nextruder_pla_hf.json"
|
||||
},
|
||||
{
|
||||
"name": "fdm_filament_abs",
|
||||
@@ -1664,6 +1648,22 @@
|
||||
"name": "fdm_filament_tpu",
|
||||
"sub_path": "filament/fdm_filament_tpu.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic PLA Silk @Prusa CORE One INDX",
|
||||
"sub_path": "filament/Generic PLA Silk @Prusa CORE One INDX.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic ASA @Prusa CORE One",
|
||||
"sub_path": "filament/Generic ASA @Prusa CORE One.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic PC @Prusa MK4 MMU3",
|
||||
"sub_path": "filament/Generic PC @Prusa MK4 MMU3.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic PLA Silk @Prusa CORE One",
|
||||
"sub_path": "filament/Generic PLA Silk @Prusa CORE One.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic ABS @Prusa MK3.5",
|
||||
"sub_path": "filament/Generic ABS @Prusa MK3.5.json"
|
||||
@@ -2160,6 +2160,38 @@
|
||||
"name": "Generic TPU HF @Prusa MK3.5",
|
||||
"sub_path": "filament/Generic TPU HF @Prusa MK3.5.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic ASA @Prusa CORE One 0.6",
|
||||
"sub_path": "filament/Generic ASA @Prusa CORE One 0.6.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic ASA @Prusa CORE One 0.8",
|
||||
"sub_path": "filament/Generic ASA @Prusa CORE One 0.8.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic ASA @Prusa CORE One HF 0.4",
|
||||
"sub_path": "filament/Generic ASA @Prusa CORE One HF 0.4.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic ASA @Prusa CORE One HF 0.5",
|
||||
"sub_path": "filament/Generic ASA @Prusa CORE One HF 0.5.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic ASA @Prusa CORE One HF 0.6",
|
||||
"sub_path": "filament/Generic ASA @Prusa CORE One HF 0.6.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic ASA @Prusa CORE One HF 0.8",
|
||||
"sub_path": "filament/Generic ASA @Prusa CORE One HF 0.8.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic PLA Silk @Prusa CORE One 0.6",
|
||||
"sub_path": "filament/Generic PLA Silk @Prusa CORE One 0.6.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic PLA Silk @Prusa CORE One 0.8",
|
||||
"sub_path": "filament/Generic PLA Silk @Prusa CORE One 0.8.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic ABS @Prusa MK4S HF0.4",
|
||||
"sub_path": "filament/Generic ABS @Prusa MK4S HF0.4.json"
|
||||
@@ -2212,6 +2244,10 @@
|
||||
"name": "Generic ABS HF @Prusa MINIIS 0.8",
|
||||
"sub_path": "filament/Generic ABS HF @Prusa MINIIS 0.8.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic ASA @Prusa MK4 MMU3",
|
||||
"sub_path": "filament/Generic ASA @Prusa MK4 MMU3.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic ASA @Prusa MK4S 0.6",
|
||||
"sub_path": "filament/Generic ASA @Prusa MK4S 0.6.json"
|
||||
@@ -2260,6 +2296,10 @@
|
||||
"name": "Prusament ASA @CORE One HF 0.8",
|
||||
"sub_path": "filament/Prusament ASA @CORE One HF 0.8.json"
|
||||
},
|
||||
{
|
||||
"name": "Prusament ASA @MK4 MMU3",
|
||||
"sub_path": "filament/Prusament ASA @MK4 MMU3.json"
|
||||
},
|
||||
{
|
||||
"name": "Prusament ASA @MK4S 0.6",
|
||||
"sub_path": "filament/Prusament ASA @MK4S 0.6.json"
|
||||
@@ -2392,6 +2432,10 @@
|
||||
"name": "Prusament PC Blend @CORE One HF 0.8",
|
||||
"sub_path": "filament/Prusament PC Blend @CORE One HF 0.8.json"
|
||||
},
|
||||
{
|
||||
"name": "Prusament PC Blend @MK4 MMU3",
|
||||
"sub_path": "filament/Prusament PC Blend @MK4 MMU3.json"
|
||||
},
|
||||
{
|
||||
"name": "Prusament PC Blend @MK4S 0.6",
|
||||
"sub_path": "filament/Prusament PC Blend @MK4S 0.6.json"
|
||||
@@ -2532,6 +2576,10 @@
|
||||
"name": "Prusament PETG @CORE One HF 0.8",
|
||||
"sub_path": "filament/Prusament PETG @CORE One HF 0.8.json"
|
||||
},
|
||||
{
|
||||
"name": "Prusament PETG @MK4 MMU3",
|
||||
"sub_path": "filament/Prusament PETG @MK4 MMU3.json"
|
||||
},
|
||||
{
|
||||
"name": "Prusament PETG @MK4S 0.6",
|
||||
"sub_path": "filament/Prusament PETG @MK4S 0.6.json"
|
||||
@@ -2668,6 +2716,10 @@
|
||||
"name": "Prusament PLA @CORE One HF 0.8",
|
||||
"sub_path": "filament/Prusament PLA @CORE One HF 0.8.json"
|
||||
},
|
||||
{
|
||||
"name": "Prusament PLA @MK4 MMU3",
|
||||
"sub_path": "filament/Prusament PLA @MK4 MMU3.json"
|
||||
},
|
||||
{
|
||||
"name": "Prusament PLA @MK4S 0.6",
|
||||
"sub_path": "filament/Prusament PLA @MK4S 0.6.json"
|
||||
@@ -2704,6 +2756,10 @@
|
||||
"name": "Prusament rPLA @CORE One 0.8",
|
||||
"sub_path": "filament/Prusament rPLA @CORE One 0.8.json"
|
||||
},
|
||||
{
|
||||
"name": "Prusament rPLA @MK4 MMU3",
|
||||
"sub_path": "filament/Prusament rPLA @MK4 MMU3.json"
|
||||
},
|
||||
{
|
||||
"name": "Prusament rPLA @MK4S 0.6",
|
||||
"sub_path": "filament/Prusament rPLA @MK4S 0.6.json"
|
||||
@@ -2856,6 +2912,10 @@
|
||||
"name": "Generic ABS @Prusa CORE One HF 0.8",
|
||||
"sub_path": "filament/Generic ABS @Prusa CORE One HF 0.8.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic ABS @Prusa MK4 MMU3",
|
||||
"sub_path": "filament/Generic ABS @Prusa MK4 MMU3.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic ASA @Prusa MK4S HF0.5",
|
||||
"sub_path": "filament/Generic ASA @Prusa MK4S HF0.5.json"
|
||||
@@ -2904,6 +2964,10 @@
|
||||
"name": "Generic PETG @Prusa CORE One HF 0.8",
|
||||
"sub_path": "filament/Generic PETG @Prusa CORE One HF 0.8.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic PETG @Prusa MK4 MMU3",
|
||||
"sub_path": "filament/Generic PETG @Prusa MK4 MMU3.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic PLA @Prusa MK4S HF0.5",
|
||||
"sub_path": "filament/Generic PLA @Prusa MK4S HF0.5.json"
|
||||
@@ -2948,6 +3012,10 @@
|
||||
"name": "Generic PLA @Prusa CORE One HF 0.8",
|
||||
"sub_path": "filament/Generic PLA @Prusa CORE One HF 0.8.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic PLA @Prusa MK4 MMU3",
|
||||
"sub_path": "filament/Generic PLA @Prusa MK4 MMU3.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic TPU @Prusa CORE One 0.6",
|
||||
"sub_path": "filament/Generic TPU @Prusa CORE One 0.6.json"
|
||||
@@ -2955,14 +3023,6 @@
|
||||
{
|
||||
"name": "Generic TPU @Prusa CORE One 0.8",
|
||||
"sub_path": "filament/Generic TPU @Prusa CORE One 0.8.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic PC @Prusa",
|
||||
"sub_path": "filament/Generic PC @Prusa.json"
|
||||
},
|
||||
{
|
||||
"name": "Generic PLA Silk @Prusa CORE One INDX",
|
||||
"sub_path": "filament/Generic PLA Silk @Prusa CORE One INDX.json"
|
||||
}
|
||||
],
|
||||
"machine_list": [
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "ASYz8yASE82tQDII",
|
||||
"filament_id": "OFY9muEs",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.4 nozzle"
|
||||
],
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "mzZCm8XDmAR23YR6",
|
||||
"filament_id": "OFY9muEs",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.5 nozzle"
|
||||
],
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "gJhX2KBpk4wfXIj0",
|
||||
"filament_id": "OFY9muEs",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.6 nozzle"
|
||||
],
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
"from": "system",
|
||||
"setting_id": "JEatvybG9xIkrPk3",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_indx"
|
||||
],
|
||||
"filament_cost": [
|
||||
"34.65"
|
||||
],
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
"from": "system",
|
||||
"setting_id": "0k31oXq1pLQsHvrj",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet"
|
||||
],
|
||||
"chamber_temperature": [
|
||||
"40"
|
||||
],
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Generic ABS @Prusa MK4 MMU3",
|
||||
"inherits": "Generic ABS @Prusa MK4",
|
||||
"from": "system",
|
||||
"setting_id": "uFmixo2FX1yxNsDB",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa MK4 MMU3 0.4 nozzle",
|
||||
"Prusa MK4 MMU3 0.6 nozzle",
|
||||
"Prusa MK4 MMU3 HF0.4 nozzle"
|
||||
],
|
||||
"filament_minimal_purge_on_wipe_tower": [
|
||||
"35"
|
||||
]
|
||||
}
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "eKDfiVRE59itoppm",
|
||||
"filament_id": "OFLPAxz3",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.4 nozzle"
|
||||
],
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "ZjHf5Vvtf4ESNnWb",
|
||||
"filament_id": "OFLPAxz3",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.5 nozzle"
|
||||
],
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "aRDgUgQJWdNDJx5c",
|
||||
"filament_id": "OFLPAxz3",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.6 nozzle"
|
||||
],
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
"from": "system",
|
||||
"setting_id": "Q7fgojkHRZI0floy",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet"
|
||||
],
|
||||
"chamber_temperature": [
|
||||
"40"
|
||||
],
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Generic ASA @Prusa MK4 MMU3",
|
||||
"inherits": "Generic ASA @Prusa MK4",
|
||||
"from": "system",
|
||||
"setting_id": "iq9bFkpmAOJ4ae4g",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa MK4 MMU3 0.4 nozzle",
|
||||
"Prusa MK4 MMU3 0.6 nozzle",
|
||||
"Prusa MK4 MMU3 HF0.4 nozzle"
|
||||
],
|
||||
"filament_minimal_purge_on_wipe_tower": [
|
||||
"35"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Generic PC @Prusa MK4 MMU3",
|
||||
"inherits": "Generic PC @Prusa",
|
||||
"from": "system",
|
||||
"setting_id": "qMawlK9QPI7DcF8I",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa MK4 MMU3 0.4 nozzle",
|
||||
"Prusa MK4 MMU3 0.6 nozzle",
|
||||
"Prusa MK4 MMU3 HF0.4 nozzle"
|
||||
]
|
||||
}
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "7oUyjvRHLH4bJyX0",
|
||||
"filament_id": "OFYPdQJh",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.4 nozzle"
|
||||
],
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "6HiIOGURZWwman1l",
|
||||
"filament_id": "OFYPdQJh",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.5 nozzle"
|
||||
],
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "KKiug7A9NOQPe1m7",
|
||||
"filament_id": "OFYPdQJh",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.6 nozzle"
|
||||
],
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
"from": "system",
|
||||
"setting_id": "HbevqxqvYHuvRc3v",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_indx"
|
||||
],
|
||||
"filament_cost": [
|
||||
"27.82"
|
||||
],
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
"from": "system",
|
||||
"setting_id": "W71PW5bpf7CV16D4",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet"
|
||||
],
|
||||
"chamber_temperature": [
|
||||
"35"
|
||||
],
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Generic PETG @Prusa MK4 MMU3",
|
||||
"inherits": "Generic PETG @Prusa MK4",
|
||||
"from": "system",
|
||||
"setting_id": "lBiZBFpSXZNIp5XG",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa MK4 MMU3 0.4 nozzle",
|
||||
"Prusa MK4 MMU3 0.6 nozzle",
|
||||
"Prusa MK4 MMU3 HF0.4 nozzle"
|
||||
],
|
||||
"filament_minimal_purge_on_wipe_tower": [
|
||||
"35"
|
||||
]
|
||||
}
|
||||
@@ -8,12 +8,16 @@
|
||||
"filament_id": "OFDSrzZ8",
|
||||
"instantiation": "true",
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One 0.6 nozzle"
|
||||
"Prusa CORE One 0.6 nozzle",
|
||||
"Prusa CORE One MMU3 0.6 nozzle"
|
||||
],
|
||||
"nozzle_temperature": [
|
||||
"210"
|
||||
],
|
||||
"slow_down_layer_time": [
|
||||
"15"
|
||||
],
|
||||
"filament_cooling_final_speed": [
|
||||
"1.5"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "vniEPaoyABoAfLFa",
|
||||
"filament_id": "OFDSrzZ8",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pla_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.4 nozzle",
|
||||
"Prusa CORE One L HF 0.4 nozzle"
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "NPEs4gtBlKWupYZX",
|
||||
"filament_id": "OFDSrzZ8",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pla_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.5 nozzle"
|
||||
],
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "SnfULjrWGCiA7ljq",
|
||||
"filament_id": "OFDSrzZ8",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pla_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.6 nozzle"
|
||||
],
|
||||
@@ -24,5 +27,8 @@
|
||||
],
|
||||
"slow_down_min_speed": [
|
||||
"15"
|
||||
],
|
||||
"filament_cooling_final_speed": [
|
||||
"1.5"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
"from": "system",
|
||||
"setting_id": "4qjcaIf1vk3K1x4Z",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_indx"
|
||||
],
|
||||
"filament_cost": [
|
||||
"25.4"
|
||||
],
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
"from": "system",
|
||||
"setting_id": "r2i4c7DsYXYIMVCX",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pla"
|
||||
],
|
||||
"chamber_temperature": [
|
||||
"20"
|
||||
],
|
||||
@@ -17,8 +20,7 @@
|
||||
"Prusa CORE One L 0.4 nozzle",
|
||||
"Prusa CORE One MMU3 0.4 nozzle",
|
||||
"Prusa CORE One MMU3 0.25 nozzle",
|
||||
"Prusa CORE One MMU3 0.3 nozzle",
|
||||
"Prusa CORE One MMU3 0.6 nozzle"
|
||||
"Prusa CORE One MMU3 0.3 nozzle"
|
||||
],
|
||||
"fan_cooling_layer_time": [
|
||||
"40"
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Generic PLA @Prusa MK4 MMU3",
|
||||
"inherits": "Generic PLA @Prusa MK4",
|
||||
"from": "system",
|
||||
"setting_id": "kZvIh84niJ487FsY",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pla"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa MK4 MMU3 0.4 nozzle",
|
||||
"Prusa MK4 MMU3 0.6 nozzle",
|
||||
"Prusa MK4 MMU3 HF0.4 nozzle"
|
||||
]
|
||||
}
|
||||
@@ -29,5 +29,8 @@
|
||||
],
|
||||
"slow_down_layer_time": [
|
||||
"15"
|
||||
],
|
||||
"filament_cooling_final_speed": [
|
||||
"1.5"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
"from": "system",
|
||||
"setting_id": "eKla6su22rYaL9iz",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_indx"
|
||||
],
|
||||
"filament_flow_ratio": [
|
||||
"1",
|
||||
"1",
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
"from": "system",
|
||||
"setting_id": "F9lNHyhZwZi7aD74",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pla"
|
||||
],
|
||||
"chamber_temperature": [
|
||||
"20"
|
||||
],
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
"setting_id": "tXktQXr79am1s5UL",
|
||||
"filament_id": "OFmFwUWM",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.4 nozzle"
|
||||
],
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
"setting_id": "YbyojtjXvEtI4Tt3",
|
||||
"filament_id": "OFmFwUWM",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.5 nozzle"
|
||||
],
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
"setting_id": "35H9TLr1p2Jy767g",
|
||||
"filament_id": "OFmFwUWM",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.6 nozzle"
|
||||
],
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "UUTjJ4Y8St3c87jD",
|
||||
"filament_id": "OFmFwUWM",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet"
|
||||
],
|
||||
"chamber_temperature": [
|
||||
"40"
|
||||
],
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Prusament ASA @MK4 MMU3",
|
||||
"inherits": "Prusament ASA @MK4",
|
||||
"from": "system",
|
||||
"setting_id": "IRJ2dtBgjCMfmpOH",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa MK4 MMU3 0.4 nozzle",
|
||||
"Prusa MK4 MMU3 0.6 nozzle",
|
||||
"Prusa MK4 MMU3 HF0.4 nozzle"
|
||||
],
|
||||
"filament_minimal_purge_on_wipe_tower": [
|
||||
"35"
|
||||
]
|
||||
}
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "sNGgucQjiFXwuFkq",
|
||||
"filament_id": "OF4MZtnE",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet"
|
||||
],
|
||||
"chamber_temperature": [
|
||||
"40"
|
||||
],
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
"setting_id": "pEsP537TBR5kozQB",
|
||||
"filament_id": "OFvDbkFq",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.4 nozzle"
|
||||
],
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
"setting_id": "3IfLi1ZVCKKbEBUW",
|
||||
"filament_id": "OFvDbkFq",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.5 nozzle"
|
||||
],
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
"setting_id": "Q8qWw2G7l2UvxGut",
|
||||
"filament_id": "OFvDbkFq",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.6 nozzle"
|
||||
],
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "x1SkWhSSkVVIPwCF",
|
||||
"filament_id": "OFvDbkFq",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet"
|
||||
],
|
||||
"chamber_temperature": [
|
||||
"40"
|
||||
],
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Prusament PC Blend @MK4 MMU3",
|
||||
"inherits": "Prusament PC Blend @MK4",
|
||||
"from": "system",
|
||||
"setting_id": "gmNuCspHHxgP6zH8",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa MK4 MMU3 0.4 nozzle",
|
||||
"Prusa MK4 MMU3 0.6 nozzle",
|
||||
"Prusa MK4 MMU3 HF0.4 nozzle"
|
||||
]
|
||||
}
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "B8Cm9l8i9osp5J2q",
|
||||
"filament_id": "OFdO6vpt",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet"
|
||||
],
|
||||
"chamber_temperature": [
|
||||
"40"
|
||||
],
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
"setting_id": "lwT1VxW5OkY36kUX",
|
||||
"filament_id": "OFkR8E2c",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.4 nozzle"
|
||||
],
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
"setting_id": "XAgW7fElXxhaKaBT",
|
||||
"filament_id": "OFkR8E2c",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.5 nozzle"
|
||||
],
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
"setting_id": "6aTGEZj2EmpTR1mu",
|
||||
"filament_id": "OFkR8E2c",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.6 nozzle"
|
||||
],
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "LSvba9ds3XTwDMCG",
|
||||
"filament_id": "OFkR8E2c",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet"
|
||||
],
|
||||
"chamber_temperature": [
|
||||
"35"
|
||||
],
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Prusament PETG @MK4 MMU3",
|
||||
"inherits": "Prusament PETG @MK4",
|
||||
"from": "system",
|
||||
"setting_id": "7DQ6YEKyQKYDTKtE",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pet"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa MK4 MMU3 0.4 nozzle",
|
||||
"Prusa MK4 MMU3 0.6 nozzle",
|
||||
"Prusa MK4 MMU3 HF0.4 nozzle"
|
||||
],
|
||||
"filament_minimal_purge_on_wipe_tower": [
|
||||
"35"
|
||||
]
|
||||
}
|
||||
@@ -6,6 +6,9 @@
|
||||
"setting_id": "2viuOmBvXuQm2FwV",
|
||||
"filament_id": "OFkR8E2c",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_indx"
|
||||
],
|
||||
"filament_flow_ratio": [
|
||||
"1"
|
||||
],
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
"setting_id": "mf4Muog4IcsgkYoA",
|
||||
"filament_id": "OFnO4wnf",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pla_hf"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One HF 0.4 nozzle",
|
||||
"Prusa CORE One L HF 0.4 nozzle"
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "PuujUMjNKLZvZNAH",
|
||||
"filament_id": "OFnO4wnf",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pla"
|
||||
],
|
||||
"chamber_temperature": [
|
||||
"20"
|
||||
],
|
||||
@@ -104,5 +107,11 @@
|
||||
],
|
||||
"slow_down_min_speed": [
|
||||
"20"
|
||||
],
|
||||
"filament_unloading_speed": [
|
||||
"100"
|
||||
],
|
||||
"filament_unloading_speed_start": [
|
||||
"100"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Prusament PLA @MK4 MMU3",
|
||||
"inherits": "Prusament PLA @MK4",
|
||||
"from": "system",
|
||||
"setting_id": "MsDcN4npnmLRXOjm",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pla"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa MK4 MMU3 0.4 nozzle",
|
||||
"Prusa MK4 MMU3 0.6 nozzle",
|
||||
"Prusa MK4 MMU3 HF0.4 nozzle"
|
||||
],
|
||||
"filament_unloading_speed": [
|
||||
"100"
|
||||
],
|
||||
"filament_unloading_speed_start": [
|
||||
"100"
|
||||
]
|
||||
}
|
||||
@@ -6,6 +6,9 @@
|
||||
"setting_id": "B2UB9QUbbjpn12Ka",
|
||||
"filament_id": "OFnO4wnf",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_indx"
|
||||
],
|
||||
"filament_flow_ratio": [
|
||||
"1"
|
||||
],
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "085dGkrnPhatF07x",
|
||||
"filament_id": "OFh7mvPO",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pla"
|
||||
],
|
||||
"chamber_temperature": [
|
||||
"20"
|
||||
],
|
||||
@@ -105,5 +108,11 @@
|
||||
],
|
||||
"slow_down_min_speed": [
|
||||
"20"
|
||||
],
|
||||
"filament_unloading_speed": [
|
||||
"60"
|
||||
],
|
||||
"filament_unloading_speed_start": [
|
||||
"60"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -8,12 +8,16 @@
|
||||
"instantiation": "true",
|
||||
"compatible_printers": [
|
||||
"Prusa CORE One 0.6 nozzle",
|
||||
"Prusa CORE One HF 0.6 nozzle"
|
||||
"Prusa CORE One HF 0.6 nozzle",
|
||||
"Prusa CORE One MMU3 0.6 nozzle"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"14"
|
||||
],
|
||||
"slow_down_layer_time": [
|
||||
"15"
|
||||
],
|
||||
"filament_cooling_final_speed": [
|
||||
"1.5"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
"setting_id": "Bw6H4vFnq7YExyLd",
|
||||
"filament_id": "OFWRITFw",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pla"
|
||||
],
|
||||
"chamber_temperature": [
|
||||
"20"
|
||||
],
|
||||
@@ -22,8 +25,7 @@
|
||||
"Prusa CORE One HF 0.5 nozzle",
|
||||
"Prusa CORE One MMU3 0.4 nozzle",
|
||||
"Prusa CORE One MMU3 0.25 nozzle",
|
||||
"Prusa CORE One MMU3 0.3 nozzle",
|
||||
"Prusa CORE One MMU3 0.6 nozzle"
|
||||
"Prusa CORE One MMU3 0.3 nozzle"
|
||||
],
|
||||
"fan_cooling_layer_time": [
|
||||
"40"
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Prusament rPLA @MK4 MMU3",
|
||||
"inherits": "Prusament rPLA @MK4",
|
||||
"from": "system",
|
||||
"setting_id": "wKhvyGpgjmW6glLj",
|
||||
"instantiation": "true",
|
||||
"include": [
|
||||
"fdm_filament_template_nextruder_pla"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Prusa MK4 MMU3 0.4 nozzle",
|
||||
"Prusa MK4 MMU3 0.6 nozzle",
|
||||
"Prusa MK4 MMU3 HF0.4 nozzle"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "fdm_filament_template_indx",
|
||||
"from": "system",
|
||||
"instantiation": "false",
|
||||
"filament_multitool_ramming": [
|
||||
"1"
|
||||
],
|
||||
"filament_multitool_ramming_flow": [
|
||||
"30"
|
||||
],
|
||||
"filament_multitool_ramming_volume": [
|
||||
"18"
|
||||
],
|
||||
"filament_minimal_purge_on_wipe_tower": [
|
||||
"10"
|
||||
],
|
||||
"filament_start_gcode": [
|
||||
"M572 S{pressure_advance[filament_extruder_id]} ; Pressure advance\nM573 R"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "fdm_filament_template_nextruder_pet",
|
||||
"from": "system",
|
||||
"instantiation": "false",
|
||||
"filament_ramming_parameters": [
|
||||
"250 100 42.4194 42.4194 42.4194 42.4194 42.4194| 0.05 42.4387 0.45 42.4387 0.95 42.4387 1.45 42.4387 1.95 42.4387 2.45 42.4387 2.95 42.4387 3.45 42.4387 3.95 42.4387 4.45 42.4387 4.95 42.4387"
|
||||
],
|
||||
"filament_loading_speed": [
|
||||
"10"
|
||||
],
|
||||
"filament_loading_speed_start": [
|
||||
"50"
|
||||
],
|
||||
"filament_unloading_speed": [
|
||||
"60"
|
||||
],
|
||||
"filament_unloading_speed_start": [
|
||||
"60"
|
||||
],
|
||||
"filament_cooling_moves": [
|
||||
"3"
|
||||
],
|
||||
"filament_cooling_initial_speed": [
|
||||
"5"
|
||||
],
|
||||
"filament_cooling_final_speed": [
|
||||
"2.5"
|
||||
],
|
||||
"filament_stamping_distance": [
|
||||
"45"
|
||||
],
|
||||
"filament_stamping_loading_speed": [
|
||||
"26.5"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "fdm_filament_template_nextruder_pet_hf",
|
||||
"from": "system",
|
||||
"instantiation": "false",
|
||||
"filament_ramming_parameters": [
|
||||
"250 100 42.4194 42.4194| 0.05 42.4387 0.45 42.4387 0.95 42.4387 1.45 42.4387 1.95 42.4387 2.45 42.4387 2.95 42.4387 3.45 42.4387 3.95 42.4387 4.45 42.4387 4.95 42.4387"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "fdm_filament_template_nextruder_pla",
|
||||
"from": "system",
|
||||
"instantiation": "false",
|
||||
"filament_ramming_parameters": [
|
||||
"250 100 40.1613 40.3548 40.4516 40.3548 40.2581| 0.05 40.1483 0.45 40.3419 0.95 40.3419 1.45 40.3419 1.95 40.3419 2.45 40.3419 2.95 40.3419 3.45 40.3419 3.95 40.3419 4.45 40.3419 4.95 40.3419"
|
||||
],
|
||||
"filament_loading_speed": [
|
||||
"10"
|
||||
],
|
||||
"filament_loading_speed_start": [
|
||||
"50"
|
||||
],
|
||||
"filament_unloading_speed": [
|
||||
"40"
|
||||
],
|
||||
"filament_unloading_speed_start": [
|
||||
"30"
|
||||
],
|
||||
"filament_cooling_moves": [
|
||||
"2"
|
||||
],
|
||||
"filament_cooling_initial_speed": [
|
||||
"10"
|
||||
],
|
||||
"filament_cooling_final_speed": [
|
||||
"3.5"
|
||||
],
|
||||
"filament_stamping_distance": [
|
||||
"45"
|
||||
],
|
||||
"filament_stamping_loading_speed": [
|
||||
"29"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "fdm_filament_template_nextruder_pla_hf",
|
||||
"from": "system",
|
||||
"instantiation": "false",
|
||||
"filament_ramming_parameters": [
|
||||
"250 100 39.871 39.871| 0.05 39.9547 0.45 39.9547 0.95 39.9547 1.45 39.9547 1.95 39.9547 2.45 39.9547 2.95 39.9547 3.45 39.9547 3.95 39.9547 4.45 39.9547 4.95 39.9547"
|
||||
]
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
"name": "Prusa CORE One MMU3",
|
||||
"bed_model": "coreone_bed.stl",
|
||||
"bed_texture": "coreone.svg",
|
||||
"default_materials": "Generic ABS @Prusa CORE One;Generic ASA @Prusa CORE One;Generic PETG @Prusa CORE One;Generic PLA @Prusa CORE One;Generic PLA Silk @Prusa CORE One;Generic TPU @Prusa CORE One",
|
||||
"default_materials": "Generic ABS @Prusa CORE One;Generic ASA @Prusa CORE One;Generic PETG @Prusa CORE One;Generic PLA @Prusa CORE One;Generic PLA Silk @Prusa CORE One;Generic TPU @Prusa CORE One;Generic PLA @Prusa CORE One 0.6",
|
||||
"family": "Prusa",
|
||||
"hotend_model": "",
|
||||
"machine_tech": "FFF",
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
],
|
||||
"printer_model": "Prusa MK4 MMU3",
|
||||
"default_filament_profile": [
|
||||
"Generic PLA @System"
|
||||
"Generic PLA @Prusa MK4 MMU3"
|
||||
],
|
||||
"default_print_profile": "0.20mm SPEED @MK4 MMU3 0.4",
|
||||
"printer_notes": "Don't remove the following keywords! These keywords are used in the \"compatible printer\" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_MODEL_MK4IS\nPRINTER_MODEL_MK4MMU3\nPG"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
"printer_model": "Prusa MK4 MMU3",
|
||||
"printer_variant": "0.6",
|
||||
"default_filament_profile": [
|
||||
"Generic PLA @System"
|
||||
"Generic PLA @Prusa MK4 MMU3"
|
||||
],
|
||||
"default_print_profile": "0.25mm SPEED @MK4 MMU3 0.6",
|
||||
"printer_notes": "Don't remove the following keywords! These keywords are used in the \"compatible printer\" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_MODEL_MK4IS\nPRINTER_MODEL_MK4MMU3\nPG"
|
||||
|
||||
@@ -8,5 +8,5 @@
|
||||
"bed_model": "mk4_bed.stl",
|
||||
"bed_texture": "mk4is.svg",
|
||||
"hotend_model": "",
|
||||
"default_materials": "Generic PLA @System;Generic PETG @System;Generic ABS @System"
|
||||
"default_materials": "Generic PLA @Prusa MK4 MMU3;Generic PETG @Prusa MK4 MMU3;Generic ABS @Prusa MK4 MMU3"
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
],
|
||||
"printer_model": "Prusa MK4 MMU3 HF",
|
||||
"default_filament_profile": [
|
||||
"Generic PLA @System"
|
||||
"Generic PLA @Prusa MK4 MMU3"
|
||||
],
|
||||
"default_print_profile": "0.20mm SPEED @MK4 MMU3 HF0.4",
|
||||
"printer_notes": "Don't remove the following keywords! These keywords are used in the \"compatible printer\" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_MODEL_MK4IS\nPRINTER_MODEL_MK4MMU3\nPG\nHF_NOZZLE"
|
||||
|
||||
@@ -8,5 +8,5 @@
|
||||
"bed_model": "mk4_bed.stl",
|
||||
"bed_texture": "mk4is.svg",
|
||||
"hotend_model": "",
|
||||
"default_materials": "Generic PLA @System;Generic PETG @System;Generic ABS @System"
|
||||
"default_materials": "Generic PLA @Prusa MK4 MMU3;Generic PETG @Prusa MK4 MMU3;Generic ABS @Prusa MK4 MMU3"
|
||||
}
|
||||
|
||||
@@ -147,6 +147,7 @@ def seed_datadir(datadir):
|
||||
# ~90% case expects. A ladder whose result depends on the developer's own preferences is not
|
||||
# a gate.
|
||||
app["auto_close_sketch_loops"] = True
|
||||
app["design_show_bed"] = True
|
||||
# SILENCE THE NETWORK PLUGIN PROMPT. Without this, GUI_App::post_init() re-raises "Bambu
|
||||
# Network Plug-in Required" from an IDLE event — after any modal sweep this driver does at
|
||||
# startup — and ShowModal() then runs a nested event loop. The app is alive, its window is
|
||||
@@ -480,10 +481,14 @@ def type_into_open_field(value, mark):
|
||||
def enter_sketch(timeout=180):
|
||||
"""Open a real sketch on a real plane, and PROVE it with the socket before drawing anything.
|
||||
|
||||
THE SEQUENCE MATTERS AND IT IS NOT OBVIOUS. Shift+S enters sketch MODE and pops the plane
|
||||
offer; the offer must be dismissed; and the plane itself is chosen by clicking it in the
|
||||
viewport BEFORE Shift+S. check-gui-sketching.py has always done all four steps. This ladder
|
||||
did two of them — Design tab, then Shift+S — and went straight to the tool letters.
|
||||
THE SEQUENCE MATTERS AND IT IS NOT OBVIOUS. The reference planes are hidden until Shift+S,
|
||||
with nothing picked, brings them up to choose from, so the plane is clicked AFTER it. That
|
||||
click opens the session on the plane and pops the tool offer, and a click outside a popup
|
||||
menu only closes it, so the spot is clicked twice, apart: the second click closes the offer,
|
||||
and inside the session it is empty canvas. No Escape — with no offer up, Escape in an empty
|
||||
sketch leaves it. Then a tool letter arms the tool. check-gui-sketching.py does the same
|
||||
steps. This ladder once did two of them — Design tab, then Shift+S — and went straight to
|
||||
the tool letters.
|
||||
|
||||
That intermediate state is the trap. `is_sketching` reads 1, every tool key is accepted and
|
||||
traced, and not one click draws anything, because there is no plane under them. The ladder
|
||||
@@ -499,10 +504,10 @@ def enter_sketch(timeout=180):
|
||||
click(132, 53) # Design tab
|
||||
time.sleep(2.0)
|
||||
dismiss_modals()
|
||||
click(*PLANE_PX) # pick the plane IN THE VIEWPORT — before Shift+S
|
||||
key("shift+s", 1.0)
|
||||
key("Escape", 0.5) # entering sketch mode pops the offer; dismiss it
|
||||
key("p", 0.6) # any sketch tool starts the session on that plane
|
||||
key("shift+s", 1.0) # nothing picked: the reference planes come up
|
||||
click(*PLANE_PX, pause=0.8) # picks the plane IN THE VIEWPORT: session open, offer up...
|
||||
click(*PLANE_PX) # ...and this closes the offer
|
||||
key("p", 0.6) # arms Point in the session
|
||||
if try_call("sketch_describe") is not None:
|
||||
# NO Escape here. Every rung already opens with one to drop whatever tool the last
|
||||
# one left armed, and Escape in the Design tab walks a LIFO: first press drops the
|
||||
@@ -511,14 +516,15 @@ def enter_sketch(timeout=180):
|
||||
# reported all eleven checks failed with "nothing opened" — the tools were arming
|
||||
# into an empty Feature-mode document.
|
||||
return
|
||||
die("no sketch opened after plane click + Shift+S within "
|
||||
die("no sketch opened after Shift+S + plane click within "
|
||||
f"{timeout}s — sketch_describe never answered on {A.sock} (trace {TRACE})")
|
||||
|
||||
|
||||
# tool key, the clicks that draw it, and one distinct value per queued field. The values are
|
||||
# deliberately nothing like the as-drawn size, so a committed prefill cannot coincide with them.
|
||||
# Where the plane label sits in the viewport before a sketch is open. Same constant the gesture
|
||||
# ladder uses; it is a label on the 3D view, not a widget, so it moves only if the camera does.
|
||||
# Where the plane label sits in the viewport once Shift+S has brought the planes up. Same
|
||||
# constant the gesture ladder uses; it is a label on the 3D view, not a widget, so it moves only
|
||||
# if the camera does.
|
||||
PLANE_PX = (913, 359)
|
||||
|
||||
# Every coordinate below stays inside 1000..1400 x 500..760 — the box check-gui-sketching.py's
|
||||
|
||||
@@ -229,7 +229,20 @@ CHROME_DY = int(os.environ.get("ORCA_CAD_CHROME_DY", "26"))
|
||||
|
||||
DESIGN_TAB = (128, 29 + CHROME_DY)
|
||||
|
||||
# Feature-tree rows, measured on the rig at 1920x1080: first row centre, then 23 px apart.
|
||||
# The ribbon's document group lost its Bed checkbox and label when the bed toggle moved to the
|
||||
# Feature tree, and every group to its right moved left by their width: wxLEFT 6 + the 18 px
|
||||
# CheckBox + wxLEFT 4 + the "Bed" label (~24 px) + wxRIGHT 4, about 56 px. The x of
|
||||
# CONSTRUCTION_CHECKBOX, CON_BTN and CON_BTN_SKETCH below is the one measured before that, plus
|
||||
# this. DERIVED, NOT MEASURED: re-measure on the rig and fold it in. CONFIRM_BTN sits after the
|
||||
# ribbon's stretch spacer and did not move.
|
||||
RIBBON_DX = -56
|
||||
|
||||
# Feature-tree rows, measured on the rig at 1920x1080: the list's first row is centred at y=215,
|
||||
# then 23 px apart. The first two rows are the Origin and the Bed, unframed on the card above the
|
||||
# features' own framed list, so the first FEATURE row sits two rows and TREE_GAP further down;
|
||||
# reset_document and the reopening double-click both need a feature. TREE_GAP is the list's
|
||||
# 12 px top margin plus its 1 px frame, derived rather than measured -- re-measure on the rig, like
|
||||
# RIBBON_DX.
|
||||
# x=300, not the label: a second click ON the label opens the inline rename, and Delete then
|
||||
# edits the text instead of removing the feature.
|
||||
#
|
||||
@@ -237,7 +250,8 @@ DESIGN_TAB = (128, 29 + CHROME_DY)
|
||||
# unshifted click lands 26 px BELOW the first row -- just past its 23 px height -- so the row is
|
||||
# never selected, Delete does nothing, and reset_document spends 40 rounds on it before dying
|
||||
# with "could not empty the feature tree". That names the feature tree, which is not the fault.
|
||||
TREE_ROW0 = (300, 215 + CHROME_DY)
|
||||
TREE_GAP = 12 + 1
|
||||
TREE_ROW0 = (300, 215 + 2 * 23 + TREE_GAP + CHROME_DY)
|
||||
|
||||
|
||||
def go_design():
|
||||
@@ -266,18 +280,21 @@ def reset_document():
|
||||
def enter_sketch(tool_key, plane_px=(913, 359)):
|
||||
"""Enter a sketch the way the design law says: pick the plane in the viewport, then the tool.
|
||||
|
||||
Shift+S enters sketch MODE and pops the offer; Escape dismisses it; the tool letter then
|
||||
starts the session on the plane the click selected. All four steps are real input — nothing
|
||||
here goes through the socket.
|
||||
leave_sketch()'s Escapes let go of every pick, so Shift+S finds nothing to sketch on and only
|
||||
brings the reference planes up; the click on one opens the session on it and pops the tool
|
||||
offer. A click outside a popup menu only closes it, so the same spot is clicked again, apart:
|
||||
inside the session it is empty canvas, so it selects nothing if the offer is slow to appear.
|
||||
No Escape: with no offer up, Escape in an empty sketch leaves it. The tool letter then arms
|
||||
the tool. All of it is real input — nothing here goes through the socket.
|
||||
"""
|
||||
leave_sketch()
|
||||
click(*plane_px)
|
||||
key("shift+s", 0.8)
|
||||
key("Escape", 0.4) # entering sketch mode pops the offer; dismiss it
|
||||
click(*plane_px, pause=0.8) # picks the plane: the session opens and the offer pops...
|
||||
click(*plane_px) # ...and this closes the offer
|
||||
key("p", 0.6)
|
||||
if try_call("sketch_describe") is None:
|
||||
shot("/shots/gl-enter-failed.png")
|
||||
die("no sketch opened after plane click + Shift+S (see /shots/gl-enter-failed.png)")
|
||||
die("no sketch opened after Shift+S + plane click (see /shots/gl-enter-failed.png)")
|
||||
calibrate_here() # THIS sketch's own camera map, on THIS sketch's own plane
|
||||
key(tool_key, 0.6)
|
||||
|
||||
@@ -737,7 +754,7 @@ def corner_pair(ents):
|
||||
die("no adjacent pair in what should be a rectangle")
|
||||
|
||||
|
||||
CONSTRUCTION_CHECKBOX = (419, 75 + CHROME_DY)
|
||||
CONSTRUCTION_CHECKBOX = (419 + RIBBON_DX, 75 + CHROME_DY)
|
||||
|
||||
|
||||
def draw_line(x0, y0, x1, y1, length, angle):
|
||||
@@ -866,7 +883,7 @@ def rung_extend():
|
||||
# because the ladder only ever clicks "perpendicular" (3) and "equal" (5), both of which sit
|
||||
# before the first insertion. The next rung to use "tangent" would have clicked "collinear".
|
||||
CON_BTN_Y = 76 + CHROME_DY
|
||||
CON_BTN = {n: (449 + 42 * i, CON_BTN_Y) for i, n in enumerate(
|
||||
CON_BTN = {n: (449 + RIBBON_DX + 42 * i, CON_BTN_Y) for i, n in enumerate(
|
||||
["horizontal", "vertical", "parallel", "perpendicular", "coincident", "equal",
|
||||
"equal_radius", "collinear", "concentric", "tangent", "midpoint", "symmetric",
|
||||
"sym_v", "sym_h", "angle", "radius", "diameter", "fix", "dist_x", "dist_y"])}
|
||||
@@ -880,7 +897,7 @@ CON_BTN = {n: (449 + 42 * i, CON_BTN_Y) for i, n in enumerate(
|
||||
# which already carries CHROME_DY), but the X start depends on how wide the sketch toolbar to the
|
||||
# left of this group renders, and this fork keeps mainline's top row. Re-measure before trusting
|
||||
# D11 here: screenshot in sketch mode and detect the icon columns, do not derive it by offset.
|
||||
CON_BTN_SKETCH = {n: (677 + 42 * i, CON_BTN_Y) for i, n in enumerate(
|
||||
CON_BTN_SKETCH = {n: (677 + RIBBON_DX + 42 * i, CON_BTN_Y) for i, n in enumerate(
|
||||
["horizontal", "vertical", "parallel", "perpendicular", "coincident", "equal",
|
||||
"equal_radius", "collinear", "concentric", "tangent", "midpoint", "symmetric",
|
||||
"sym_v", "sym_h", "angle", "radius", "diameter", "fix", "dist_x", "dist_y"])}
|
||||
|
||||
@@ -229,11 +229,11 @@
|
||||
"none"
|
||||
],
|
||||
"needs": {},
|
||||
"refusal": "Click a face or a reference plane in the viewport, then a sketch tool",
|
||||
"refusal": "Select a flat face or a reference plane to sketch on",
|
||||
"gui": true,
|
||||
"action": "key:S+S",
|
||||
"icon": "design_sketch",
|
||||
"hint": "Click a face or a reference plane, then pick a drawing tool"
|
||||
"hint": "Sketch on the selected flat face or plane, or click one next"
|
||||
},
|
||||
{
|
||||
"id": "extrude",
|
||||
@@ -1113,6 +1113,32 @@
|
||||
"icon": "color_palette",
|
||||
"hint": "Set the selected body's display color"
|
||||
},
|
||||
{
|
||||
"id": "zoom_to",
|
||||
"name": "Zoom to selection",
|
||||
"slot": "top",
|
||||
"key": null,
|
||||
"feature": null,
|
||||
"mcp": null,
|
||||
"mode": "model",
|
||||
"accepts": [
|
||||
"body_solid",
|
||||
"body_sheet",
|
||||
"face_planar",
|
||||
"face_cyl",
|
||||
"face_other",
|
||||
"edge_str",
|
||||
"edge_circ",
|
||||
"vertex",
|
||||
"sk_loop"
|
||||
],
|
||||
"needs": {},
|
||||
"refusal": null,
|
||||
"gui": true,
|
||||
"action": "btn:zoom_to",
|
||||
"icon": "design_zoom",
|
||||
"hint": "Frame the selection in the view, keeping the view direction"
|
||||
},
|
||||
{
|
||||
"id": "delete",
|
||||
"name": "Delete",
|
||||
|
||||
@@ -311,12 +311,11 @@ def main():
|
||||
for path in fixed:
|
||||
print(f" {path}")
|
||||
if failed and fixed:
|
||||
print(f"\nclang-tidy still fails on {len(failed)} file(s); the findings above are what --fix could not fix.")
|
||||
print(f"\nclang-tidy still fails on {len(failed)} file(s); the findings above are what --fix could not add.")
|
||||
return 1
|
||||
if failed:
|
||||
print(f"\nclang-tidy failed on {len(failed)} file(s). Add the includes it names, or apply its "
|
||||
"suggestions locally with scripts/run_clang_tidy.sh --fix (scripts\\run_clang_tidy.ps1 -Fix on Windows). "
|
||||
"Other findings need a manual fix.")
|
||||
"suggestions locally with scripts/run_clang_tidy.sh --fix (scripts\\run_clang_tidy.ps1 -Fix on Windows).")
|
||||
return 1
|
||||
print("clang-tidy passed.")
|
||||
return 0
|
||||
|
||||
@@ -370,6 +370,10 @@ void AppConfig::set_defaults()
|
||||
// restores the conventional CAD representation for users who expect it (x0kd).
|
||||
if (get("design_connector_face_glyph").empty())
|
||||
set_bool("design_connector_face_glyph", true);
|
||||
|
||||
// Design tab: draw the printer bed and its plate grid (the Feature tree's Bed row).
|
||||
if (get("design_show_bed").empty())
|
||||
set_bool("design_show_bed", true);
|
||||
#endif
|
||||
|
||||
//#ifdef SUPPORT_SHOW_HINTS
|
||||
|
||||
@@ -466,8 +466,6 @@ void SkeletalTrapezoidation::constructFromPolygons(const Polygons& polys)
|
||||
edge.from->incident_edge = &edge;
|
||||
}
|
||||
|
||||
using NodeSet = SkeletalTrapezoidation::NodeSet;
|
||||
|
||||
void SkeletalTrapezoidation::separatePointyQuadEndNodes()
|
||||
{
|
||||
NodeSet visited_nodes;
|
||||
|
||||
@@ -93,7 +93,6 @@ using namespace libnest2d;
|
||||
using Item = _Item<ExPolygon>;
|
||||
using Box = _Box<Point>;
|
||||
using Circle = _Circle<Point>;
|
||||
using Segment = _Segment<Point>;
|
||||
using MultiPolygon = ExPolygons;
|
||||
|
||||
// Summon the spatial indexing facilities from boost
|
||||
|
||||
@@ -2851,7 +2851,6 @@ bool is_patch_inside_of_model(const SurfacePatch &patch,
|
||||
/// <returns>shape point index</returns>
|
||||
uint32_t get_shape_point_index(const CutAOI &cut, const CutMesh &model);
|
||||
|
||||
using PatchNumber = CutMesh::Property_map<FI, size_t>;
|
||||
/// <summary>
|
||||
/// Separate triangles singned with number n
|
||||
/// </summary>
|
||||
|
||||
@@ -32,8 +32,6 @@
|
||||
|
||||
// #define DEBUG_FUZZY
|
||||
|
||||
using namespace Slic3r;
|
||||
|
||||
namespace Slic3r::Feature::FuzzySkin {
|
||||
|
||||
// Produces a random value between 0 and 1. Thread-safe.
|
||||
|
||||
@@ -122,8 +122,6 @@ Polylines get_polylines(const ScalarField& sf, const double tolerance = SCALED_E
|
||||
|
||||
namespace Slic3r {
|
||||
|
||||
using namespace std;
|
||||
|
||||
void FillTpmsFK::_fill_surface_single(const FillParams& params,
|
||||
unsigned int thickness_layers,
|
||||
const std::pair<float, Point>& direction,
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
#include <boost/property_tree/xml_parser.hpp>
|
||||
#include <vector>
|
||||
#include <utility>
|
||||
namespace pt = boost::property_tree;
|
||||
|
||||
#include <boost/filesystem/operations.hpp>
|
||||
#include <boost/algorithm/string.hpp>
|
||||
|
||||
@@ -1135,7 +1135,6 @@ void SeamPlacer::gather_seam_candidates(const PrintObject *po, const SeamPlacerI
|
||||
|
||||
void SeamPlacer::calculate_candidates_visibility(const PrintObject *po,
|
||||
const SeamPlacerImpl::GlobalModelInfo &global_model_info) {
|
||||
using namespace SeamPlacerImpl;
|
||||
|
||||
std::vector<PrintObjectSeamData::LayerSeams> &layers = m_seam_per_object[po].layers;
|
||||
tbb::parallel_for(tbb::blocked_range<size_t>(0, layers.size()),
|
||||
|
||||
@@ -1482,7 +1482,6 @@ static FilamentGroupContext build_filament_group_context(
|
||||
FilamentMapMode mode,
|
||||
const std::unordered_map<int, int>& nozzle_status)
|
||||
{
|
||||
using namespace MultiNozzleUtils;
|
||||
using namespace FilamentGroupUtils;
|
||||
|
||||
FilamentGroupContext context;
|
||||
@@ -1691,7 +1690,6 @@ static std::vector<int> apply_master_extruder_preference(const FilamentGroupCont
|
||||
// multi-nozzle (H2C/A2L) resolves to a nozzle-granular result.
|
||||
MultiNozzleUtils::LayeredNozzleGroupResult ToolOrdering::get_recommended_filament_maps(const std::vector<std::vector<unsigned int>>& layer_filaments, const Print* print, const FilamentMapMode mode, const std::vector<std::set<int>>& physical_unprintables, const std::vector<std::set<int>>& geometric_unprintables, const std::map<int, std::set<NozzleVolumeType>>& unprintable_volumes, const std::unordered_map<int, int>& nozzle_status)
|
||||
{
|
||||
using namespace FilamentGroupUtils;
|
||||
using namespace MultiNozzleUtils;
|
||||
|
||||
if (!print || layer_filaments.empty())
|
||||
|
||||
@@ -230,7 +230,6 @@ std::vector<Bridge> get_grouped_bridges(
|
||||
{
|
||||
result.reserve(bridge_expansions.size());
|
||||
uint32_t group_id = 0;
|
||||
using std::move_iterator;
|
||||
for (ExPolygon& expolygon : bridge_expolygons)
|
||||
result.push_back({ std::move(expolygon), group_id ++, bridge_expansions.end() });
|
||||
}
|
||||
@@ -432,7 +431,6 @@ Surfaces expand_bridges_detect_orientations(
|
||||
const float closing_radius
|
||||
)
|
||||
{
|
||||
using namespace Slic3r::Algorithm;
|
||||
|
||||
double thickness;
|
||||
ExPolygons bridge_expolygons = fill_surfaces_extract_expolygons(surfaces, {stBottomBridge}, thickness);
|
||||
|
||||
@@ -660,7 +660,6 @@ bool empty(const CGALMesh &mesh)
|
||||
|
||||
bool repair(TriangleMesh& mesh, RepairedMeshErrors* repaired_errors, std::string* error)
|
||||
{
|
||||
using namespace CGAL;
|
||||
namespace PMP = CGAL::Polygon_mesh_processing;
|
||||
|
||||
if (mesh.empty())
|
||||
|
||||
@@ -263,7 +263,6 @@ size_t get_shapes_count(const NSVGimage &image)
|
||||
} // namespace Slic3r
|
||||
|
||||
namespace {
|
||||
using namespace Slic3r; // Polygon + Vec2f
|
||||
|
||||
Point::coord_type to_coor(float val, double scale) { return static_cast<Point::coord_type>(std::round(val * scale)); }
|
||||
|
||||
|
||||
@@ -61,6 +61,8 @@ public:
|
||||
bool is_smaller_width_perimeter;
|
||||
// Depth in the hierarchy. External perimeter has depth = 0. An external perimeter could be both a contour and a hole.
|
||||
unsigned short depth;
|
||||
// ORCA: an external hole perimeter touching the next outer wall all around, with nothing between them.
|
||||
bool is_thin_wall_hole = false;
|
||||
// Children contour, may be both CCW and CW oriented (outer contours or holes).
|
||||
std::vector<PerimeterGeneratorLoop> children;
|
||||
|
||||
@@ -118,7 +120,7 @@ static bool detect_steep_overhang(const PrintRegionConfig *config,
|
||||
}
|
||||
|
||||
static ExtrusionEntityCollection traverse_loops(const PerimeterGenerator &perimeter_generator, const PerimeterGeneratorLoops &loops, ThickPolylines &thin_walls,
|
||||
bool &steep_overhang_contour, bool &steep_overhang_hole, bool reverse_thin_wall_hole)
|
||||
bool &steep_overhang_contour, bool &steep_overhang_hole)
|
||||
{
|
||||
// loops is an arrayref of ::Loop objects
|
||||
// turn each one into an ExtrusionLoop object
|
||||
@@ -285,24 +287,17 @@ static ExtrusionEntityCollection traverse_loops(const PerimeterGenerator &perime
|
||||
} else {
|
||||
const PerimeterGeneratorLoop &loop = loops[idx.first];
|
||||
assert(thin_walls.empty());
|
||||
const bool reverse_children_thin_wall_hole = loops.size() == 1 && loop.is_contour && loop.children.size() == 1 &&
|
||||
(!loop.children.front().is_contour) && loop.children.front().children.empty();
|
||||
ExtrusionEntityCollection children = traverse_loops(perimeter_generator, loop.children, thin_walls, steep_overhang_contour,
|
||||
steep_overhang_hole, reverse_children_thin_wall_hole);
|
||||
ExtrusionEntityCollection children = traverse_loops(perimeter_generator, loop.children, thin_walls, steep_overhang_contour, steep_overhang_hole);
|
||||
out.entities.reserve(out.entities.size() + children.entities.size() + 1);
|
||||
ExtrusionLoop *eloop = static_cast<ExtrusionLoop*>(coll.entities[idx.first]);
|
||||
coll.entities[idx.first] = nullptr;
|
||||
|
||||
if ((perimeter_generator.config->wall_direction == WallDirection::CounterClockwise) == (loop.is_contour || reverse_thin_wall_hole))
|
||||
// Orca: holes run against the contour, except thin wall holes, which run with it.
|
||||
if ((perimeter_generator.config->wall_direction == WallDirection::CounterClockwise) == (loop.is_contour || loop.is_thin_wall_hole))
|
||||
eloop->make_counter_clockwise();
|
||||
else
|
||||
eloop->make_clockwise();
|
||||
|
||||
// Orca: Reverse print order for thin wall holes.
|
||||
if (reverse_thin_wall_hole) {
|
||||
std::reverse(out.entities.begin(), out.entities.end());
|
||||
}
|
||||
|
||||
eloop->inset_idx = loop.depth;
|
||||
if (loop.is_contour) {
|
||||
out.append(std::move(children.entities));
|
||||
@@ -1499,6 +1494,8 @@ void PerimeterGenerator::process_classic()
|
||||
coord_t min_spacing = coord_t(perimeter_spacing * (1 - INSET_OVERLAP_TOLERANCE));
|
||||
coord_t ext_min_spacing = coord_t(ext_perimeter_spacing * (1 - INSET_OVERLAP_TOLERANCE));
|
||||
bool has_gap_fill = this->config->gap_infill_speed.get_at(get_extruder_index(*print_config, this->config->outer_wall_filament_id - 1)) > 0;
|
||||
// ORCA: Use the smaller width as the lower bound to avoid overestimating safe overlap
|
||||
const double gap_fill_min_width = 0.2 * std::min(perimeter_width, ext_perimeter_width) * (1 - INSET_OVERLAP_TOLERANCE);
|
||||
|
||||
// BBS: this flow is for smaller external perimeter for small area
|
||||
coord_t ext_min_spacing_smaller = coord_t(ext_perimeter_spacing * (1 - SMALLER_EXT_INSET_OVERLAP_TOLERANCE));
|
||||
@@ -1693,6 +1690,15 @@ void PerimeterGenerator::process_classic()
|
||||
|
||||
last = std::move(offsets);
|
||||
|
||||
// ORCA: a thin wall hole has no room for gap fill or an inner wall anywhere beside its outer wall.
|
||||
if (i == 0 && ! holes[0].empty()) {
|
||||
const float room = float(0.5 * (ext_perimeter_spacing2 + gap_fill_min_width));
|
||||
const Polygons reach = to_polygons(offset2_ex(last, -room, room + float(SCALED_EPSILON)));
|
||||
for (PerimeterGeneratorLoop &hole : holes[0])
|
||||
hole.is_thin_wall_hole = intersection_pl(Polylines{ hole.polygon.split_at_first_point() },
|
||||
ClipperUtils::clip_clipper_polygons_with_subject_bbox(reach, get_extents(hole.polygon).inflated(SCALED_EPSILON))).empty();
|
||||
}
|
||||
|
||||
//BBS: refer to superslicer
|
||||
//store surface for top infill if only_one_wall_top
|
||||
if (i == 0 && i!=loop_number && only_one_wall_top && !surface.is_bridge() && this->upper_slices != NULL) {
|
||||
@@ -1819,7 +1825,7 @@ void PerimeterGenerator::process_classic()
|
||||
steep_overhang_contour = true;
|
||||
steep_overhang_hole = true;
|
||||
}
|
||||
ExtrusionEntityCollection entities = traverse_loops(*this, contours.front(), thin_walls, steep_overhang_contour, steep_overhang_hole, false);
|
||||
ExtrusionEntityCollection entities = traverse_loops(*this, contours.front(), thin_walls, steep_overhang_contour, steep_overhang_hole);
|
||||
// All walls are counter-clockwise initially, so we don't need to reorient it if that's what we want
|
||||
if (config->overhang_reverse) {
|
||||
reorient_perimeters(entities, steep_overhang_contour, steep_overhang_hole,
|
||||
@@ -1946,8 +1952,7 @@ void PerimeterGenerator::process_classic()
|
||||
|
||||
// fill gaps
|
||||
if (! gaps.empty()) { // collapse
|
||||
// ORCA: Use the smaller width as the lower bound to avoid overestimating safe overlap
|
||||
double min = 0.2 * std::min(perimeter_width, ext_perimeter_width) * (1 - INSET_OVERLAP_TOLERANCE);
|
||||
double min = gap_fill_min_width;
|
||||
double max = 2. * perimeter_spacing;
|
||||
ExPolygons gaps_ex = diff_ex(
|
||||
//FIXME offset2 would be enough and cheaper.
|
||||
|
||||
@@ -2175,7 +2175,6 @@ namespace client
|
||||
{
|
||||
macro_processor() : macro_processor::base_type(start)
|
||||
{
|
||||
using namespace qi::labels;
|
||||
qi::alpha_type alpha;
|
||||
qi::alnum_type alnum;
|
||||
qi::eps_type eps;
|
||||
|
||||
@@ -1527,7 +1527,6 @@ bool PresetBundle::apply_vendor_config(
|
||||
const std::string& preferred_printer_variant,
|
||||
const std::string& preferred_filament)
|
||||
{
|
||||
namespace fs = boost::filesystem;
|
||||
|
||||
// Get current configuration from AppConfig
|
||||
const auto old_vendors = app_config->vendors();
|
||||
|
||||
@@ -404,7 +404,6 @@ std::string debug_out_path(const char *name, ...)
|
||||
}
|
||||
|
||||
namespace logging = boost::log;
|
||||
namespace src = boost::log::sources;
|
||||
namespace expr = boost::log::expressions;
|
||||
namespace keywords = boost::log::keywords;
|
||||
namespace attrs = boost::log::attributes;
|
||||
@@ -892,7 +891,6 @@ int copy_file_linux_read_write(int infile, int outfile, uintmax_t file_size)
|
||||
// and only features supported by Linux 3.10 (on our build server with CentOS 7) are kept, namely sendfile with ranges and statx() are not supported.
|
||||
bool copy_file_linux(const boost::filesystem::path &from, const boost::filesystem::path &to, boost::system::error_code &ec)
|
||||
{
|
||||
using namespace boost::filesystem;
|
||||
|
||||
struct fd_wrapper
|
||||
{
|
||||
|
||||
@@ -310,6 +310,7 @@ GLVolume::GLVolume(float r, float g, float b, float a)
|
||||
, force_native_color(false)
|
||||
, force_neutral_color(false)
|
||||
, force_sinking_contours(false)
|
||||
, depth_bias(false)
|
||||
, picking(false)
|
||||
, tverts_range(0, size_t(-1))
|
||||
{
|
||||
@@ -1332,11 +1333,17 @@ void GLVolumeCollection::render(GLVolumeCollection::ERenderType type,
|
||||
shader->set_uniform("projection_matrix", projection_matrix);
|
||||
const Matrix3d view_normal_matrix = view_matrix.matrix().block(0, 0, 3, 3) * model_matrix.matrix().block(0, 0, 3, 3).inverse().transpose();
|
||||
shader->set_uniform("view_normal_matrix", view_normal_matrix);
|
||||
if (volume.first->depth_bias) {
|
||||
glsafe(::glEnable(GL_POLYGON_OFFSET_FILL));
|
||||
glsafe(::glPolygonOffset(1.0f, 1.0f));
|
||||
}
|
||||
//BBS: add outline related logic
|
||||
if (volume.first->selected && shader_can_outline && GUI::wxGetApp().show_outline())
|
||||
volume.first->render_with_outline(cnv_size);
|
||||
else
|
||||
volume.first->render();
|
||||
if (volume.first->depth_bias)
|
||||
glsafe(::glDisable(GL_POLYGON_OFFSET_FILL));
|
||||
|
||||
#if ENABLE_ENVIRONMENT_MAP
|
||||
if (use_environment_texture)
|
||||
|
||||
@@ -232,6 +232,10 @@ public:
|
||||
bool force_neutral_color : 1;
|
||||
// Whether or not to force rendering of sinking contours
|
||||
bool force_sinking_contours : 1;
|
||||
// Orca: draw this volume with a positive depth bias (glPolygonOffset, pushed away from the
|
||||
// camera), so on a surface it shares with another volume the other volume wins the depth
|
||||
// test instead of z-fighting it
|
||||
bool depth_bias : 1;
|
||||
// Is render for picking
|
||||
bool picking : 1;
|
||||
// slice error
|
||||
|
||||
@@ -22,8 +22,6 @@
|
||||
#include "CapsuleButton.hpp"
|
||||
|
||||
namespace Slic3r::GUI { struct IntEvent; }
|
||||
using namespace Slic3r;
|
||||
using namespace Slic3r::GUI;
|
||||
|
||||
namespace Slic3r { namespace GUI {
|
||||
#define ANIMATION_REFRESH_INTERVAL 20
|
||||
|
||||