Commit Graph

178 Commits

Author SHA1 Message Date
SoftFever
103cf247e5 Update from FS at b3c41fda4.
Slicing
  - align merge_segmented_layers shape with FS apply_mm_segmentation
    (size = num_facets_states, loop from 0, no -1 shift); painted mixed
    regions were previously attributed to filament_id-1 of intent.
    apply_fuzzy_skin_segmentation reads channel 1;
    apply_mixed_surface_indentation uses segmentation_channel_filament_id
  - port apply_mixed_surface_indentation, apply_mixed_component_surface_offsets,
    apply_mixed_region_surface_offsets, apply_surface_emboss_mixed_region_override,
    plus surface_emboss_mixed_* debug subsystem
  - refactor apply_mm_segmentation (by-value MM, bias_mode, surface-type-
    preserving intersection, region normalization, post-MM dump); hoist MM
    segmentation into slice_volumes so mixed apply_* flow can mutate it
  - restore clear_local_z_plan() invalidation hooks
    (PrintObject.cpp:805/1264/1286)

  GCode
  - add LayerTools::preserve_extruder_order, honored by collect_extruders,
    both reorder_extruders overloads, and
    reorder_filaments_for_minimum_flush_volume; helpers
    append_unique_preserve_order / remove_duplicates_preserve_order
  - wire MixedFilamentManager::ordered_perimeter_extruders for grouped
    manual-pattern walls; set preserve_extruder_order when >= 2
  - mixed-aware support: layer_height set for support-only layers,
    ExtrusionRole-based has_support/has_interface with erMixed short-
    circuit, support_filament / support_interface_filament routed through
    resolve_mixed

  Print
  - materialize mixed_filament_pointillism_{pixel_size,line_gap} in
    PrintApply's option-tracking block so in-session edits diff correctly

  GUI
  - Tab::on_value_change: dithering_local_z_mode cascading clears, 17-key
    project_config sync, update_mixed_filament_panel(false) on
    mixed_filament_component_bias_enabled change
  - GUI_Factories: physical_filaments_count, ui_ordered_filament_ids,
    filament_menu_item_name; filaments_count includes enabled mixed
    virtuals; right-click 'Change filament' submenus iterate UI-ordered IDs

  Tests
  - sentinel asserting MultiMaterialSegmentation uses FS-aligned shape
    (39 -> 40)
2026-05-02 12:34:18 +08:00
SoftFever
9c8caf121e init work to integrate OrcaSlicer-FullSpectrum fork
Integrations up to commit b3c41fda4180a2946812726218d0a849be0aedb6.

  - libslic3r: vendor FilamentMixer; MixedFilamentManager (auto-gen, resolve,
    serialize; manual-pattern / gradient / pointillism); 19 new PrintConfig
    keys; PresetBundle owns the canonical manager with 3MF + AppConfig
    roundtrip and AMS-safe strip+restore; Print owns the slicing-time copy
    with PrintApply auto-regen on color change; TriangleSelector::
    shift_states_above + filament-id remap; inset_idx propagation through
    ExtrusionPath/Loop/MultiPath copy/assign.
  - Slicing: virtual filament IDs in painted regions (same-physical channels
    collapse when mixed_filament_region_collapse is on); ByObject
    collect_filament_data expands mixed slots; pair-cadence + whole-object +
    3+component Local-Z plan generators; LocalZOrderOptimizer utility.
  - GCode + ToolOrdering: LayerTools resolves virtual IDs through wall /
    infill / sparse / solid queries; SameLayerPointillisme in process_layer
    (uniform-segment + grouped per-perimeter-index splitters); WipeTower2
    Local-Z reservation + sub-layer G-code emission; per-layer infill
    filament override.
  - PartPlate: get_extruders* expand virtual slots into physical components;
    CLI path rebuilds a local manager from full_config.
  - GUI: five widget files extracted from FS Plater.cpp (~5000 LOC) —
    MixedMixPreview, MixedGradientSelector + WeightsDialog,
    MixedFilamentColorMapPanel, MixedFilamentColorMatchDialog (ΔE₀₀ recipe
    search), MixedFilamentConfigPanel; Sidebar Mixed Filaments panel
    (drag-reorder, enable/delete, Add Gradient/Pattern/Color); Tab exposure
    of mixed-filament / dithering / per-layer infill-override settings +
    ConfigManipulation visibility and slot-validation rules;
    BBLMixedFilamentBroken / BBLSingleExtruderMixedFilamentRisk
    notifications + slice gate; WipeTowerDialog edits physical P×P
    sub-matrix; bounds-safe extruder_id guards in 3DScene / GLCanvas3D /
    GLGizmoMmuSegmentation; change_filament merge guard and
    on_filaments_delete is_mixed_before_delete propagation.
  - Tests: 4 Catch2 tests for 3MF roundtrip (auto/custom persistence,
    PresetBundle string path, total_filaments stability); full-pipeline
    slice E2E deferred — TODO in file.

  Co-authored-by: Rad <radugheorghiu96@gmail.com>
  Co-authored-by: Justin Hayes <justinh@rahb.ca>
  Co-authored-by: Calogero Guagenti <calogeroguagenti@gmail.com>
  Co-authored-by: xSil3nt <ahmedshazin21@gmail.com>
  Co-authored-by: ratdoux <62392831+ratdoux@users.noreply.github.com>

Co-authored-by: Rad <radugheorghiu96@gmail.com>
Co-authored-by: Justin Hayes <justinh@rahb.ca>
Co-authored-by: Calogero Guagenti <calogeroguagenti@gmail.com>
Co-authored-by: xSil3nt <ahmedshazin21@gmail.com>
Co-authored-by: ratdoux <62392831+ratdoux@users.noreply.github.com>
2026-05-02 12:32:38 +08:00
SoftFever
20c3c833df fixed an issue that zaa_enabled is redefined in both object and region. move all zaa config to region to keep it consistent 2026-05-01 19:47:00 +08:00
SoftFever
9bc2eb7476 Merge branch 'main' into zaa 2026-04-28 16:57:02 +08:00
Valerii Bokhan
5358191499 Freature: Max Resolution and Deviation settings exposed for Arachne (#11925)
* Freature: Max Resolution and Deviation settings exposed for Arachne

Fixes #10235

Co-Authored-By: Copilot <175728472+Copilot@users.noreply.github.com>

* move the new option to comExpert

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-04-26 17:12:33 +08:00
π²
f0d8014ef1 Elefant foot compensation for solid layers (#11526)
* Elefant foot compensation for solid layers

Elefant foot compensation for solid layers above bottommost by infill density manipulation.

* Update Fill.cpp

* change the option to expert cat

* use is_approx for float

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-04-26 17:03:35 +08:00
Valerii Bokhan
c30276ef24 Feature: Ability to set flow ratio for brims (#11876)
Fixes #11853

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-24 14:19:14 +08:00
Aleksandr Dobkin
39ef7a5b7a Adjust ZAA configuration 2026-03-26 04:21:36 -07:00
Aleksandr Dobkin
1cc82873f4 Fix contour extrusion path logic and improve GCode extrusion handling 2026-03-19 01:32:51 -07:00
Aleksandr Dobkin
12232deb7a Fix z-offset handling for ZAA 2026-03-16 13:48:42 -07:00
Aleksandr Dobkin
29e35d77b1 Fix mesh transformation logic PrintObject::contour_z to handle off center cases 2026-03-16 00:56:52 -07:00
Matthias Nott
963f8d86b7 feat: Add Z Anti-Aliasing (ZAA) contouring support
Port Z Anti-Aliasing from BambuStudio-ZAA (https://github.com/adob/BambuStudio-ZAA)
to OrcaSlicer. ZAA eliminates stair-stepping on curved and sloped top surfaces
by raycasting each extrusion point against the original 3D mesh and micro-adjusting
Z height to follow the actual surface geometry.

Key changes:
- Add ContourZ.cpp raycasting algorithm (~330 lines)
- Extend geometry with 3D support (Point3, Line3, Polyline3, MultiPoint3)
- Template arc fitting for 2D/3D compatibility
- Change ExtrusionPath::polyline from Polyline to Polyline3
- Add 5 ZAA config options (zaa_enabled, zaa_min_z, etc.)
- Add posContouring pipeline step in PrintObject
- Update GCode writer for 3D coordinate output
- Add ZAA settings UI in Print Settings > Quality
- Add docs/ZAA.md with usage and implementation details

ZAA is opt-in and disabled by default. When disabled, the slicing pipeline
is unchanged.
2026-02-09 20:42:26 +01:00
Rodrigo Faselli
f27605eac1 3d honeycomb bug fix (with infill combination) improve bridge direction (#12062)
* fill 3d honeycomb bugfix

* fix bridges

Co-Authored-By: tome9111991 <57866234+tome9111991@users.noreply.github.com>

* Fix typo

* cleaning

* Remove bridging angle adjustment for ip3DHoneycomb

* Adjust layer height scaling for infill consistency

* PR comments

---------

Co-authored-by: tome9111991 <57866234+tome9111991@users.noreply.github.com>
2026-01-27 19:12:18 -03:00
Kiss Lorand
3dc80593bd Brim: optionally generate brim from Elephant Foot Compensation outline (#11760)
* Brim can follow EFC outline

* Optimization

* Update Spanish EFC brim description

Adopt reviewer-proposed wording from RF47.

Co-authored-by: RF47 <RF47@users.noreply.github.com>

* Tag Orca specific changes

Tag Orca specific changes vs. Bambu using the comment //ORCA: . This helps when reviewing merge commits from upstream Bambu so we don't end up causing regressions when pulling in commits from upstream

* Tooltip update

---------

Co-authored-by: RF47 <RF47@users.noreply.github.com>
Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
2025-12-29 09:35:44 +08:00
Valerii Bokhan
790bb39783 Fix: The fix of the adaptive layer height logic for supports (#10697)
Fix: Fixing the logic of the adaptive layer height for supports

Removing `tree_support_adaptive_layer_height` because its logic duplicates `independent_support_layer_height`
2025-10-28 17:31:49 +08:00
Noisyfox
2cea19bdcd Fix build error caused by cyclic include 2025-09-21 13:48:03 +08:00
Noisyfox
2375ab860a Merge remote-tracking branch 'upstream/main' into dev/h2d
# Conflicts:
#	resources/profiles/BBL.json
#	src/slic3r/GUI/AmsMappingPopup.cpp
#	src/slic3r/GUI/MediaFilePanel.cpp
#	src/slic3r/GUI/Plater.cpp
#	src/slic3r/GUI/StatusPanel.cpp
2025-09-16 14:46:40 +08:00
SoftFever
d2eb007d57 Ignore the precise outer wall option when the wall sequence is not set to InnerOuter. (#10687) 2025-09-11 20:10:51 +08:00
xun.zhang
24c80fed57 ENH: enhance unprintable filament check in height
1. Detect unprintable filament for each extruder by printable height

jira:STUDIO-9630

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I7731196d96745af935d0a34961f035b458b27ec5
(cherry picked from commit 459671dcb687eb0640ac64fdb5f0dab1802a7eb4)
2025-09-09 15:41:39 +08:00
xun.zhang
f127846914 ENH: enhance extruder unprintable area detection
1. Detect unprintable area for extruder when slicing
2. Always do filament map again if object pos changed

jira:STUDIO-9473

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ic01b8be8e3b08ba6b34efb2d3c451c9e985a03e8
(cherry picked from commit f1445ff0477795e9baf3792348ff27d79ee2308c)
2025-09-07 18:24:59 +08:00
SoftFever
31869bfbd1 [Feature] Add a new feature that allow user to insert extra solid infills (#10611)
* refactor Infill rotation template

* clean up comments

* set default solid_infill_rotate_template to empty

* Fix an issue that infill_direction solid_infill_direction not working as expected

* Add Extra Solid Infill Feature
Introduced a new feature to insert extra solid infills at specific layers for enhanced strength in 3D prints.

* fix doc error

* fix image name

* support "#K" for Explicit Layer List

* update wiki
2025-09-03 22:16:31 +08:00
zhimin.zeng
57916c7452 FIX: Use the same api to get the extruder id
jira: none
Change-Id: I05b3040b176374deee3e95bc52364fe7b33bb257
(cherry picked from commit 8b2544df41456377b09719de15460b19b7c71e09)
2025-08-24 23:18:01 +08:00
SoftFever
6ae89f7d9b rename 2DHoneycomb and 2DLattice to LateralHoneycomb and LateralLattice (#10423)
* rename 2DHoneycomb and 2DLattice to LateralHoneycomb and LateralLattice

* more renaming
2025-08-17 23:49:06 +08:00
π²
1ef427f661 Add template metalanguage support for infill rotation template (#9996)
* Add some new non-overlapping functions for rotation surfaces/infills

I can't post the entire package of changes yet, but this is just the beginning. These features do not affect the latest changes to the pattern rotation system. They are merely adding new functionality.

* Added relative rotation of the infill according to the template.

* Update PrintConfig.cpp

* Update PrintConfig.cpp

* Update PrintConfig.cpp

* Add height limitation

* Both sparse and solid. +one-time instructions

* implementation v3

need for clean code in future

* + Multiply Instructions

* Add solid layers into sparse infill

* Update Layer.hpp

* Update PrintObject.cpp

* Update Tab.cpp

* Remove some bugs and increase quality

* rename apply_model_direction to align_infill_direction_to_model

* Change the data type of top_surface_direction and bottom_surface_direction to float so that they are consistent with other infill direction parameters.

* remove top_surface_direction and bottom surface_direction options

* clean code

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-07-25 20:29:08 +08:00
π²
3d16c7f4c8 Feature: Fuzzy Skin Extrusion Mode (#9878)
* Feature: Fuzzy Skin Extrusion Mode

This extension allows you to add new features to the fuzzy skin generator.

* Add auto switch to Arachne mode

* Move dialog to `update_print_fff_config` and update how `is_msg_dlg_already_exist` is used

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-07-25 15:36:18 +08:00
Rodrigo
a8141ef360 Infill Line Multiplier (#9432)
* Infill Line Multiplier

* Modular Offset Function

* Lightning multiline

* Crosshatch Multiline

ipCrosshatch

* cleaning

Cleaning

clean2

* 3d Honeycomb

cut poliline ends

* Fill Tpmsd Multiline

Fill Tpmsd Multiline

* Update Multiline function

multiline funcion simplify

* Update FillTpmsD

* FillHoneycomb

* Update src/libslic3r/PrintConfig.cpp

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix Honeycomb Multiline

Simplify polylines in honeycomb infill generation

* Improve multiline infill support and pattern simplification

Moved multiline infill application after pattern translation and simplification in Fill3DHoneycomb, and added multiline support to FillAdaptive. Updated honeycomb and 3D honeycomb infill to simplify polylines to 5x line width. Extended GUI and config to support multiline for Adaptive Cubic infill pattern and clarified max value comment.

minimum changes

Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>

* Increase multiline fill spacing in honeycomb infill

Adjusts the spacing parameter in the multiline_fill function to 1.1 times the original spacing, potentially improving infill distribution or print quality.

* Refine fill_multiline tooltip and pattern support logic

Updated the tooltip for the 'fill_multiline' parameter to improve clarity and punctuation. Refactored the logic in ConfigManipulation.cpp to clarify which infill patterns support multiline infill.

* better management of non supported infill patterns

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
Co-authored-by: Ian Bassi <12130714+ianalexis@users.noreply.github.com>
2025-06-30 23:07:33 +08:00
Jonathan Dyrekilde Sommerlund
51d844af2c Top/bottom surface pattern density (#9783)
* Create top surface density option

* Update tooltip

* Specify what 0% top infill means

* Add density for bottom layers

* Discourage users from using top/bottom density incorrectly

* Fix percent don't need translation

* Fix incorrect indentation

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-06-23 10:28:21 +08:00
SoftFever
88fb8187d9 Allow specifying rotation patterns for Sparse and Solid infill (#9924)
* SPE-2405: Add Zig Zag infill that is rectilinear infill but with a consistent pattern between layers.

This Zig Zag infill is inspired by the Zig Zag infill in Cura.

Change-Id: I798affa99f4b5c3bd67f47643e67530fb7c3e0cb
(cherry picked from commit 2808d04d5deef6f99f9618648e46f11de03efc98)

* Add Cross zag and locked-zag for shoes

Ported from BambuStudio

* wip

* sparse infill roratation template

* solid_infill_rotate_template

* remove rotate_solid_infill_direction

* hide sparse infill rotation template for non applicable infill pattern

* hide solid_infill_rotate_template for non supported solid infill patterns

* update icon

* support empty string for ConfigOptionFloats deserialize

* fix build errors

---------

Co-authored-by: Lukáš Hejl <hejl.lukas@gmail.com>
2025-06-22 23:10:35 +08:00
Noisyfox
7cbd0d2b74 Remove classic overhang speed code (#9934)
* Remove code related to classic overhang speed

* Remove `overhang_degree` and `curve_degree`
2025-06-20 23:01:09 +08:00
Noisyfox
b9cce6c179 Ironing support interfaces (#9548)
* Generate support interface iron extrusion

* Always ironing last

* Add options

* Move ironing speed to speed tab

* Don't iron places that are covered by upper support layers

* Disable support interface spacing settings when support ironing is enabled

* Update text
2025-06-19 15:19:05 +08:00
Noisyfox
fe4a72ec94 Upgrade clipper & improve multi-thread performance (#7177)
* Clipper: Verify range of int32 coordinates on input.

Cherry-picked from prusa3d/PrusaSlicer@fa7debf49d

Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>

* ClipperLib: Optimized PointInPolygon() to calculate cross products
 with int64s instead of doubles.

Cherry-picked from prusa3d/PrusaSlicer@9dca8403fe

Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>

* Reworked the ClipperLib / Polygon types to use
the tbb::scallable_allocator to better scale on multiple threads.

Cherry-picked from prusa3d/PrusaSlicer@9cde96993e

Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>

* use tbb::scallable_allocator for Polygons and ExPolygon::holes
to better scale on multiple threads

Cherry-picked from prusa3d/PrusaSlicer@b67ad6434d

Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>

* Fixed compilation on GCC and CLang

Cherry-picked from prusa3d/PrusaSlicer@b3b44681a9

Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>

* Remove clipper2 which is not used

* Removed shiny profiler from clipperlib

Cherry-picked from prusa3d/PrusaSlicer@7e77048593

Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>

* ClipperLib: Further optimization of memory allocation using scalable_allocator.
ClipperLib: SimplifyPolygon() - changed default winding number to positive,
      added strictly_simple parameter.
ClipperUtlis simplify_polygons() - removed "remove_collinear" parameter

Cherry-picked from prusa3d/PrusaSlicer@a7e17df25f

Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>

* ClipperLib: emplace_back() instead of push_back().

Cherry-picked from prusa3d/PrusaSlicer@2e150795b1

Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>

* Fixed issue in a 32bit clipper, where IntersectPoint() checked for
the Y coordinate of the calculated intersection point for validity,
but the Y coordinate was already rounded to 32bits, thus an overflow
may have in rare cases masked invalidity of the result.

Cherry-picked from prusa3d/PrusaSlicer@b39c33414f

Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>

* Fixed Vojtech's out of boundary assert in Clipper library.

Cherry-picked from prusa3d/PrusaSlicer@0a202dcff3

Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>

* Update clipper to 6.4.2.

Cherry-picked from prusa3d/PrusaSlicer@b8b3cccb40

Co-authored-by: Lukáš Hejl <hejl.lukas@gmail.com>

* Try fix cmake opencv

---------

Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>
Co-authored-by: Lukáš Hejl <hejl.lukas@gmail.com>
2025-06-18 17:50:44 +08:00
Henk
0010dc6bb4 Add 2D honeycomb infill pattern (#9483)
* Add 2D honeycomb infill pattern

* Reverted change of 2D lattice infill void area estimation

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-06-18 08:48:48 +08:00
Noisyfox
1aee8a0783 Don't split tiny cracks on first layer (#9917)
Don't split tiny cracks on first layer to get an uninterrupted bottom surface
2025-06-17 19:22:16 +08:00
Noisyfox
940800b059 Merge tiny cracks that is part of a large bottom surface into bottom surface (#9332)
* Merge tiny cracks that is part of a large bottom surface into bottom surface (SoftFever/OrcaSlicer#9329)

* Revert bottom offset

* Top surfaces will have perimeters around, which need to be removed from bottom surfaces so bridges not extended to visible areas
2025-04-29 22:19:30 +08:00
SoftFever
3a114a5d7f Avoid creating bridges on very tiny surface cracks (#9053)
Fix #8563

Before:
![image](https://github.com/user-attachments/assets/eba13eae-42f1-4249-865f-536a2a2af370)

After:
![image](https://github.com/user-attachments/assets/62f990a5-c6db-4f1e-ad31-93a250956ac1)
2025-04-01 22:44:19 +08:00
Noisyfox
a3984a706e FIX: enable circle fitting of tree support with larger threshold (#9038)
* FIX: enable circle fitting of tree support with larger threshold

jira: STUDIO-8588
Change-Id: Ia566fa14f7f786ff905fc3484885634811a6d686
(cherry picked from commit bambulab/BambuStudio@82c72b19bd)
2025-04-01 22:39:15 +08:00
Noisyfox
c2a1a8c39b Use different threshold for top & bottom surfaces 2025-03-30 00:08:26 +08:00
Noisyfox
6bd2355a69 Avoid creating bridges on very tiny surface cracks (SoftFever/OrcaSlicer#8563) 2025-03-30 00:08:26 +08:00
Noisyfox
a9a6f45f08 Merge branch 'main' into dev/support-paint-vertical 2025-02-23 15:50:21 +08:00
Ioannis Giannakas
b4a7721cc0 Enhancement: Additional controls over bridges (#8263)
* Additional control over bridges

* Label updates

* Detect and handle layers over external bridges

* Label updates

* To-Do placeholders

* Filter out small external bridges

* Apply safety offset for internal bridge polygon intersections

* code comments

* Increase bridge offsets to 3 perimeters total (1.5 perimeter in each dimension)

* Filter out bridges based on perimeter counts to focus bridge on areas where bridge infill is actually generated in the end.

* Fixing bugs

* Convert tick boxes to drop down menu

* Additional geometry checks for second internal bridge to ensure no small polygons are left over.

* Minor code refactor for clarity

* Further refinements in polygon logic

* Polygon logic refinements pt3

* Further union operations to ensure clean geometry

* Fix compile error

* Clean up constructors

* Only create bridges on stInternalSolid areas, not sparse infill.

* Refactor internal second bridge logic to stand alone parallel for loop to avoid thread deadlocks

* Revert change to only consider stInternalSolid areas for second internal bridge layer.

This resulted in partly unsupported solid infill areas above as the remainder was too narrow to generate sparse infill

* Updated beta statements and tooltip changes

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-02-12 22:10:57 +08:00
Eric Maglio
5145707801 Add "2D Lattice" fill pattern for lightweight aircraft structures (#8293)
* Add 2D lattice infill pattern

* Add state invalidation behavior for lattice infill angles

* Update SurfaceFillParams methods to account for lattice infill angles

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-02-12 08:39:29 +08:00
Ioannis Giannakas
229a826aa7 Enhancement: Internal Bridge angle override (#7908)
Internal Bridge angle override
2025-02-09 22:00:16 +08:00
Arthur
1c686b3c04 ENH: improve tree supports
1. speedup organic tree support by using parallel for intersection of bed area
jira: STUDIO-8451
2. add extra wall for hybrid tree support's tall branches
3. disable circle fitting for tree support. This feature produces inconsistent
   circles for tree supports.
4. expose the option tree_support_branch_diameter_angle. Tree supports'
   strength can be improved by increasing this value.

Change-Id: If3688ca895df98a77f6ca538077daf8fe94e53f1
(cherry picked from commit 7697eb3dc8f87204d28e6be9adaf55dfcdadbc74)
2025-02-08 11:34:46 +08:00
Arthur
3e7e4df7ce ENH: precise tree support wall count
Change the behavior of "tree support wall count" option, let it control precisely.
0 means auto.

jira: STUDIO-8068
github: 4780
Change-Id: I6d1a64cff9b121f5c0a3e910c5ddbfe6db198687
(cherry picked from commit a557bbe758cd352fa9bb48323995ed2c90737577)
2025-02-08 11:34:42 +08:00
Arthur
ae6fadda4d ENH: add vertical support enforcer
Previously painting support enforces on vertical faces doesn't work, as projecting the facets downwards will give empty polygons.
Now we use a different mechanism to enable vertical paint-on enforces, by directly adding contact nodes.
Note: this feature only works with tree support as only tree support has contact nodes.

jira: none
Change-Id: Id171b1665566d142a6427285baccb40c0aa00949
(cherry picked from commit 9c882f61eb37350a4486df58de48f0ae489f2d15)
(cherry picked from commit 68625a6e601e2feef8e56693da1f58372b27b560)
2025-02-08 11:34:40 +08:00
Arthur
5054ee8508 ENH: improve hybrid tree support
1. do not add interface for small overhangs so supports are easier to
   remove
2. calculate avoidance more accurately using real layer height
  jira: STUDIO-6285
3. hybrid nodes won't collide with lower layers
4. calculate max move more accurately
5. do not increase radius if next layer has collision
  jira: STUDIO-2296, STUDIO-7883
6. rewrite plan_layer_heights to prevent support layers overlap.
  Now the tree support layers are completely independent to object layers.
6. increase collision areas for interface. The top layers may be too
close to interface with adaptive layer heights and very small overhang angle

Change-Id: I052c3f66e68afb7663e2d70c846dd09ed7086071
(cherry picked from commit aca511caebfdeec270d4fc0ec6bbbadde77cddc9)
(cherry picked from commit f2fc996652b3b204b4e554f57afed8519feb0397)
2025-02-08 11:34:39 +08:00
Arthur
fd3ed419c2 NEW: add support_object_first_layer_gap option
jira: STUDIO-6202
github: #3521

Change-Id: I6f1ce9f5312e9482c0f5bf6ac3215861c501106c
(cherry picked from commit 83027d923a6e67fa0013e5d9f627283c68e996de)
(cherry picked from commit 29da3bc441a194d5b83ce267fe24ebf3f3811133)
2025-02-08 11:34:30 +08:00
Arthur
31a5f0d523 FIX: Checking support necessity not working
Only early stop detect_overhangs if support is disabled AND not checking support necessity.

jira: STUDIO-6158
Change-Id: I2d9662231d941827d6392d57344f7d911f641e09
(cherry picked from commit b811a6031d1afe0e7b1cb73050fe6391a65411ef)
(cherry picked from commit fa61ee6abdb4b04a2141b3f8ea9e2e8a789b7881)
2025-02-08 11:34:25 +08:00
Nick Johnson
fd0b2547f2 Add support for structured noise (perlin) fuzzy skin (#7678)
* Add support for perlin noise fuzzy skin

* Support multiple types of coherent noise

* Updated tooltips for more clarity.

* Reorder options as suggested by @discip

* Fix accidental removal of &

* Move libnoise to deps

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-01-27 22:45:16 +08:00
Vovodroid
7a5746b1ae Support threshold overlap (#6606)
* Support threshold overlap

* Update tooltip
2025-01-23 18:01:38 +08:00