Compare commits

..

199 Commits

Author SHA1 Message Date
SoftFever
f7184c868b add more checks and bump version to 1.6.6 2023-08-24 19:26:16 +08:00
ZdDroid
761417f1bf Fixed crashes caused by failed version checks 修复:检查更新概率崩溃 (#1903)
修复:检查更新概率崩溃

Co-authored-by: ZdDroid <601865048@qq.com>
2023-08-24 18:30:32 +08:00
gobau
ec8d348c5a P1S LAN mode not working #1882 (#1905) 2023-08-24 18:09:43 +08:00
Hotsolidinfill
dee6120c34 fix missing bottom surface in viewer (#1899)
* Update Korean translation

* 1. Fix blank button text after translation
2. Fix some mistranslated korean

* -fix bottom surface in gcode viewer
-update korean translation
2023-08-24 07:48:59 +08:00
SoftFever
ff925783de bump version to 1.6.5 2023-08-23 23:34:22 +08:00
SoftFever
6dbb429c85 update locale 2023-08-23 21:57:11 +08:00
SoftFever
2aefba2cf5 fix bbl cloud connection and camera issue 2023-08-23 21:53:40 +08:00
Carlos Caruncho
de4e34ec01 Update Spanish translation (#1885)
* Some Spanish string fixes
2023-08-23 21:53:27 +08:00
just-trey
004bea72db AM bug fix (#1889)
* anker profile bug fixes

* set layer change gcode to reset extruder

* fix layer change issue

* Use standard before_layer_change_gcode

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-08-23 20:23:38 +08:00
ZdDroid
cd8a377f09 Check the new version asynchronously 修复拓竹用户不同步设备列表 (#1893)
修复:拓竹用户不同步设备列表
优化:检查更新时概率卡住GUI

Co-authored-by: ZdDroid <601865048@qq.com>
2023-08-23 20:16:24 +08:00
SoftFever
5072bf3d16 update locale 2023-08-22 19:25:21 +08:00
SoftFever
08b7af645d misc changes 2023-08-22 18:34:56 +08:00
SoftFever
95762fabee Make new overhang slowdonw(PrusaSlicer's slowdown) default again.
And tweak it
2023-08-22 18:34:56 +08:00
renemosner
44a013a5a7 Updating the translation into Czech (#1872)
Completion of the Czech translation
2023-08-22 18:26:27 +08:00
just-trey
baa11c9b7e Am profile bug fixes (#1868)
* anker profile bug fixes

* akermake profile bug fix

* feedback from review

* frevert resolution
2023-08-22 18:12:35 +08:00
stasyan68
ba87a1b8f9 Updating the translation into Russian, adding new lines (#1865)
Updating the translation into Russian, adding new lines
2023-08-21 21:58:39 +08:00
Carlos Caruncho
c5df165824 Spanish translation (#1866)
* Some Spanish string fixes

PO updated

* More spanish strings fixes

* Compiled MO

* Update spanish strings and MO

* Update

* Update OrcaSlicer_es.po

* Update OrcaSlicer_es.po

* Delete OrcaSlicer.mo

* update .mo files

* Update OrcaSlicer_es.po

* Update OrcaSlicer_es.po

* Update OrcaSlicer_es.po

* Update spanish lang and english string

* Update OrcaSlicer_es.po

* revert .gitignore changes

* Update OrcaSlicer_es.po

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-08-21 21:58:08 +08:00
Hotsolidinfill
53c6db9168 Fix blank button in mesh boolean (#1870)
* Update Korean translation

* 1. Fix blank button text after translation
2. Fix some mistranslated korean
2023-08-21 21:38:39 +08:00
SoftFever
3f15339345 fix linux build errors 2023-08-20 22:16:32 +08:00
SoftFever
86d908f44e final 1.6.4
set default internal_solid_infill_pattern to ipMonotonic
2023-08-20 20:49:06 +08:00
SoftFever
6e1bdaf9d4 some misc changes (#1848)
* some misc changes
* stealth_mode: disable hms
* fix bbl camera  #1091 #1830
* fix anker
2023-08-20 20:02:54 +08:00
Vojtech Bubnik
a202fde769 Fix of #6336 #5073: Throw an error if G92 E0 is missing in layer change
G-code with relative extruder addressing. Also thrown an error,
if G92 E0 is used with absolute extruder addressing.
2023-08-20 20:00:49 +08:00
Hotsolidinfill
29da81527e Update Korean translation (#1859) 2023-08-20 11:15:50 +08:00
SoftFever
15d96e1f6d support adaptive bed mesh for PA calib 2023-08-19 23:31:12 +08:00
chunmao.guo
6a767a5f67 FIX: WebView: not wrap javascript
Change-Id: If2b1fe8163599ebbfd97334115a786a8985bf876
2023-08-19 22:16:19 +08:00
SoftFever
1fa6ee78e7 update locale 2023-08-19 22:09:27 +08:00
Stephen Hurd
27eb7bbe9f Add spacenavd support (#1769) 2023-08-19 15:45:27 +08:00
SoftFever
5f848b7a93 Fixed a bug that print_bed_min/max values were not correct in multi-plate project #1834 2023-08-19 11:01:00 +08:00
Heiko Liebscher
94f8c26c30 fix de for new features (#1837) 2023-08-19 09:42:55 +08:00
Carlos Caruncho
3e49c3f55b Spanish translation update and error in english string "outer_only" (#1794)
* Update spanish lang and english string
* Update OrcaSlicer_es.po
* revert .gitignore changes

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-08-19 09:42:00 +08:00
SoftFever
a148b9d85f fix build error 2023-08-19 09:30:54 +08:00
zhimin.zeng
f65871b3fb ENH: Allow users to adjust the order of components in assemble
Change-Id: Ie4b979e4cfdf99d822801400cd6b54773f526d7a
(cherry picked from commit 2b8b32a2d2d8181d1ab0c490e1a7b4333dc34fad)
2023-08-19 01:32:59 +08:00
lane.wei
5a5955f3bc FIX: config: update config with correct logic
1. remove other vendors
2. set the version to correct one
jira: STUDIO-4009

Change-Id: I804bb1d08a9d241bc323a22b0d3fb40f7c9c3c9a
2023-08-19 01:32:59 +08:00
zhimin.zeng
2e78f7e809 FIX: Re-multicolor slice when change first_layer_print_sequence
Change-Id: If17708744a52c95aec406e2cd46a29ff4cf29872
(cherry picked from commit 892f508f194e49462a2c470ce8d0f3f6313a0c09)
(cherry picked from commit a00864f8d254f10cae6b20dcf5d6edc2814ed802)
2023-08-19 01:32:59 +08:00
zhimin.zeng
79a7201f52 ENH: support custom the first layer print sequence
Change-Id: I0516948292933fe47d39fb3ae2f7e91473b45b3a
(cherry picked from commit 5bbdb28c86509d5f94b5b9c33a0f2e1b2749e94b)
(cherry picked from commit 22c6e9f1d2c6f1b86c70827c8bec65a857fe2bc5)
2023-08-19 01:32:59 +08:00
salt.wei
a35264e910 FIX: should consider plate offset in wipe tower
Updating position to gcode writer in wipe tower
miss plate offset.

This is handling for github issue #2256

github: github issue #2256

Signed-off-by: salt.wei <salt.wei@bambulab.com>
Change-Id: I915591ee919d10bb5bd2c2dcd5f1e98fd4b66503
2023-08-19 01:32:59 +08:00
liz.li
d9a8526843 NEW: first layer printing sequence
Change-Id: I19e39a27cf972eb859e51a334aeae8f57ee263f8
(cherry picked from commit 1369107c04668f800a338395ed3af316c32d194d)
2023-08-19 01:32:59 +08:00
maosheng.wei
d5e5992b02 FIX: [github 2246 2209] reload form disk not working
Change-Id: If70d7b700c454e9290741980afb0a1fd73a1fa5a
2023-08-19 01:32:59 +08:00
chunmao.guo
a422b9a01d FIX: load from gcode stream crash with null model pointer
Change-Id: I09a17dd5726d164a4e0bc1d5f213581832a17a5d
(cherry picked from commit 52065d43c98eda7a2a7c799d2100a10b6cbc42bf)
2023-08-19 01:32:59 +08:00
liz.li
37c0f8d0bd FIX: meshboolean set transformation matrix twice
Change-Id: I1428c66f69bbd14fa0485bab23b0a26b8e7b6dba
(cherry picked from commit 23e69af4d9516c7c2f8b4fb9649d1757903627b6)
2023-08-19 01:32:59 +08:00
igiannakas
719a25a291 Fix for support generating mid air (#1762) (#1815)
Fix for support generating mid air
2023-08-18 18:55:25 +08:00
rspython
1279beb3de add Anycubic Kobra Plus profile based on Anycubic Kobra Max. (#1823)
Co-authored-by: HANDS Richard <richard.hands@soprasteria.com>
2023-08-18 18:53:49 +08:00
slynn1324
c1fbcd5661 Add P1S to config.json, copied from BambuStudio. (#1817)
Add P1S to config.json, copied from BambuStudio.  Fixes OrcaSlicer issue #1712.
2023-08-17 23:10:26 +08:00
SoftFever
43087cc6a6 update locale and tweak some profiles 2023-08-14 20:15:57 +08:00
SoftFever
e56863af0d fix cicd build 2023-08-13 22:32:49 +08:00
Noisyfox
f714e72faa Simple brim ears impl (#1779)
* First working brim ear impl, ported from SuperSlicer

* Make brim ears configurable

* Generate ears only if ear size > 0

* Fix `Polygon::convex_points` as well as brim ear max angle

* Fix another error in `Polygon::convex_points` and `Polygon::concave_points`

* Apply brim ears to inner brims as well

* tweak hide and disable condition a bit

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-08-13 22:29:45 +08:00
SoftFever
afe1030b58 test (#1785) 2023-08-13 22:16:16 +08:00
Carlos Caruncho
02405db48e Update Spanish translation (#1783)
* Some Spanish string fixes

PO updated

* More spanish strings fixes

* Compiled MO

* Update spanish strings and MO

* Update

* Update OrcaSlicer_es.po

* Update OrcaSlicer_es.po

* Delete OrcaSlicer.mo

* update .mo files

* Update OrcaSlicer_es.po

* Update OrcaSlicer_es.po

* Update OrcaSlicer_es.po

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-08-13 10:26:52 +08:00
SoftFever
6298b1c449 Merge branch 'main' of github.com:SoftFever/OrcaSlicer 2023-08-13 10:07:07 +08:00
just-trey
fe1d7a0751 AnkerMake Profile Additions (#1716)
* Ankermake Profile Additions

* updated based on feedback
2023-08-13 10:06:37 +08:00
SoftFever
270fff56f5 Fix Troodon2 klipper bug 2023-08-13 09:56:24 +08:00
SoftFever
3be1168d12 Fix vivedino profile 2023-08-12 22:19:03 +08:00
SoftFever
9f5678c3d1 minor tweak internal bridge speed 2023-08-12 20:26:22 +08:00
SoftFever
5807135a1f Fixed an issue that internal_bridge_speed is applied to external bridge infills
A new extrusion role - erInternalBridgeInfill is introduced.
SuperSlicer's implementation is referenced.

Signed-off-by: SoftFever <103989404+SoftFever@users.noreply.github.com>
2023-08-12 15:38:22 +08:00
SoftFever
8dd9561574 Optimize new overhang slowdown and re-enable it #1642
Signed-off-by: SoftFever <103989404+SoftFever@users.noreply.github.com>
2023-08-12 15:34:08 +08:00
SoftFever
b79fc88ade 1.6.4-beta3 2023-08-11 21:14:25 +08:00
SoftFever
61db1ef369 misc profile fixes 2023-08-11 21:13:53 +08:00
Arthur
a1bc4b3a57 FIX: tree support's enforcers inside a hole were wrong
Previously holes of enforcer_polygons was taken as contours,
which caused enforcers inside a hole were too large.

Jira: STUDIO-3877
Change-Id: If38c34e2469b822012a2ed0b082783563fe99228
2023-08-11 20:50:03 +08:00
SoftFever
99406816cd fix crashes on some Linux distro caused by locale by @pfrench42 #235 (#1766)
fix crashes on some Linux distro caused by locale by @pfrench42

#235
2023-08-11 20:26:37 +08:00
Lee Colarelli
abc0f1c682 feat: added Anycubic Kobra 2 (#1765)
* feat: added Anycubic Kobra 2

Signed-off-by: Lee Colarelli <lee@leecolarelli.com>

* fix: corrected buildplate texture size

Signed-off-by: Lee Colarelli <lee@leecolarelli.com>

* fix: corrected max layer height

Signed-off-by: Lee Colarelli <lee@leecolarelli.com>

* fix bed model

---------

Signed-off-by: Lee Colarelli <lee@leecolarelli.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-08-11 20:26:20 +08:00
SoftFever
7e87d9f031 Fix CICD 2023-08-11 18:31:52 +08:00
otkd
905ad5296b Update Ukrainian translation (#1748)
* refactor(localization): update Ukrainian

- Fixed typos and inconsistencies in existing Ukrainian translations

Signed-off-by: otkd <7527203+otkd@users.noreply.github.com>

* Update bbl/i18n/uk/OrcaSlicer_uk.po

Co-authored-by: Bohdan Keller <vickas777@gmail.com>

* Apply suggestions from code review

Co-authored-by: Bohdan Keller <vickas777@gmail.com>

* Ukrainian translation changes

- Further changes based on recommendations in #1748
- Updates .mo with current changes and from 9da51fe574db8160e4e95c04fc0bac2b2cba822e 7692851dbd808561f5ebfaacf826eb3166a84265

Signed-off-by: otkd <7527203+otkd@users.noreply.github.com>

---------

Signed-off-by: otkd <7527203+otkd@users.noreply.github.com>
Co-authored-by: Bohdan Keller <vickas777@gmail.com>
2023-08-11 08:41:00 +08:00
Alexander Sulfrian
f1afe93d6f Fix compiling imgui with boost libraries (#1755)
Addind only the include dirs is wrong. The cmake boost_headeronly
library contains more settings.

Without adding the cmake boost_headeronly library, the compilation of
imgui is missing the defines for the boost library (f.e.
BOOST_LOG_DYN_LINK) and it will result in linker errors.

Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-08-11 08:20:10 +08:00
SoftFever
84a7f3c084 fix build errors 2023-08-10 23:30:37 +08:00
SoftFever
24bf61af73 increase the line width limit to 5x the nozzle diameter #1745 2023-08-10 23:00:59 +08:00
SoftFever
3e393df9df support chamber temperature per filament #1160 2023-08-10 22:08:48 +08:00
SoftFever
333a5067ec Fix a bug that overhang slowdown won't work when top z is 0 #1763 2023-08-10 21:09:27 +08:00
SoftFever
7b88104870 update locale 2023-08-10 20:43:00 +08:00
SoftFever
89ec02444a internal bridge speed 2023-08-10 17:34:51 +08:00
SoftFever
bb89336285 add One wall threshold parameter 2023-08-10 10:56:12 +08:00
SoftFever
b396f55ddc don't force build debug version of boost on Windows 2023-08-10 10:56:12 +08:00
Alexander Sulfrian
c1e85db46e Fix wxWidgets debugging macros (#1742)
wxFAIL will always generate an assert error and does not expect a
condition.
2023-08-09 23:25:25 +08:00
SoftFever
e02e8c6f15 disable GENERATOR_IS_MULTI_CONFIG for openvdb so we can skip building debug version for it. 2023-08-09 22:16:58 +08:00
SoftFever
637a171559 Fixed an unicode bug in Mesh boolean 2023-08-09 17:13:44 +08:00
SoftFever
362ee83ff3 update locale 2 2023-08-09 14:12:18 +08:00
SoftFever
37c54aa4f6 clean up 2023-08-09 13:42:41 +08:00
SoftFever
a4c632026f update loacale 2023-08-09 12:09:06 +08:00
SoftFever
b8d7661ac4 Merge branch 'main' into feature/1.6.4_rc 2023-08-09 11:41:25 +08:00
SoftFever
36750c74e6 refactor exclude object 2023-08-09 10:53:39 +08:00
SoftFever
f8c9c6bfc4 Merge some BS1.7 changes:
fix full screen issue on Windows
2023-08-09 00:47:48 +08:00
djperya
ec7f7bd484 Ukrainian translation (#1717)
* Some Ukrainian translation fixes

* Some Ukrainian translation fixes

* Update OrcaSlicer_uk.po

* Update OrcaSlicer_uk.po

clarification of the Ukrainian translation

* Update bbl/i18n/uk/OrcaSlicer_uk.po

Co-authored-by: Bohdan Keller <vickas777@gmail.com>

* Update bbl/i18n/uk/OrcaSlicer_uk.po

Co-authored-by: Bohdan Keller <vickas777@gmail.com>

* Update bbl/i18n/uk/OrcaSlicer_uk.po

Co-authored-by: Bohdan Keller <vickas777@gmail.com>

---------

Co-authored-by: Bohdan Keller <vickas777@gmail.com>
2023-08-08 23:01:37 +08:00
stasyan68
f374d34fdc Updating the Russian translation (#1718)
* Updating the Russian translation

Updating the Russian translation and adding new lines

* Add files via upload

* Delete OrcaSlicer.mo

* Create RU

* Delete RU

* Updating the Russian translation

Updating the Russian translation

* Updating the Russian translation

Updating the Russian translation

* Updating the translation into Russian, with the support of @lizardjazz11

Updating the translation into Russian, with the support of @lizardjazz1
2023-08-08 22:59:47 +08:00
Carlos Caruncho
77c00a944d Update Spanish translation (#1719)
* Some Spanish string fixes

PO updated

* More spanish strings fixes

* Compiled MO

* Update spanish strings and MO

* Update

* Update OrcaSlicer_es.po

* Update OrcaSlicer_es.po

* Delete OrcaSlicer.mo

* update .mo files

* Update OrcaSlicer_es.po

* Update OrcaSlicer_es.po

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-08-08 22:45:02 +08:00
renemosner
7f07569304 Updated cs_CZ translations (#1734)
Completion of the CS/CZ translation
2023-08-08 22:44:40 +08:00
SoftFever
da05ae02da Merge some BS1.7 changes:
Boolean operation feature
2023-08-08 22:14:20 +08:00
SoftFever
9e73dfeb5d enforce no tracking 2023-08-08 19:36:24 +08:00
SoftFever
bcbbbf35db Merge some BS1.7 changes:
internal_solid_infill_pattern
2023-08-08 19:08:13 +08:00
SoftFever
7ece35931e Merge some BS1.7 changes:
Port object canceling for BL X1 from BS.

Todo: refactor
2023-08-08 19:08:13 +08:00
SoftFever
3acd89e877 Merge some BS1.7 changes:
bring back fill_bed feature, original implemention from PrusaSlicer. BS added exclusion logic.
2023-08-08 19:08:13 +08:00
SoftFever
b8db25ac0e revert PA tower 2023-08-06 23:19:02 +08:00
SoftFever
dc55845a40 tweak machine end gcode for qidi 2023-08-06 23:18:36 +08:00
SoftFever
6800291468 Revert "update PA tower so it's one wall for most nozzles(0.4 upwards)"
This reverts commit ab6649da8a.
2023-08-06 21:20:59 +08:00
SoftFever
fcc19342c5 DummyPR (#1698)
* upload deps binaries
2023-08-06 18:24:49 +08:00
SoftFever
ff6bf5e5ad update Czech translation on behalf of @renemosner (#1702) 2023-08-06 18:12:01 +08:00
SoftFever
ba3c1eb23b Update README.md
update discord link
2023-08-05 09:49:54 +08:00
SoftFever
4705867d2a Update README.md 2023-08-05 09:40:05 +08:00
SoftFever
0fa666792a bump version to 1.6.4-beta2 2023-08-04 21:05:36 +08:00
SoftFever
14f248f8fa fixed an bug that CN plate name was not working properly 2023-08-04 20:36:32 +08:00
Hotsolidinfill
580424701b fix Korean font not be loaded properly (#1681)
* Update Korean Translation
- Make overhang printable
- Lift Z Enforcement
- etc

* fix Korean font not be loaded
2023-08-04 19:15:15 +08:00
Carlos Caruncho
127ce2b909 Spanish translation update (#1646)
* Some Spanish string fixes

PO updated

* More spanish strings fixes

* Compiled MO

* Update spanish strings and MO

* Update

* Update OrcaSlicer_es.po

* Update OrcaSlicer_es.po

* Delete OrcaSlicer.mo

* update .mo files

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-08-04 19:11:58 +08:00
SoftFever
013a64243f tweak single wall #1680 2023-08-04 18:56:58 +08:00
SoftFever
ce59235bd7 Fix set fan bug 2023-08-04 18:56:58 +08:00
djperya
d381a5ed11 Ukrainian translation (#1672)
* Some Ukrainian translation fixes

* Some Ukrainian translation fixes

* Update OrcaSlicer_uk.po
2023-08-04 18:46:59 +08:00
SoftFever
886c1eee6d update Korean .mo file 2023-08-03 19:01:45 +08:00
Hotsolidinfill
68ac3eb526 Update Korean Translation (#1664)
- Make overhang printable
- Lift Z Enforcement
- etc
2023-08-03 18:20:24 +08:00
SoftFever
f3b1694a14 update latest BL profiles from BS 1.7.1 2023-08-03 08:49:37 +08:00
SoftFever
95539c78fa bump version to 1.6.4-beta 2023-08-03 00:48:54 +08:00
SoftFever
79911ab188 fix build error on Ubuntu and update deps 2023-08-03 00:48:54 +08:00
SoftFever
12195c722f update locale 2023-08-03 00:48:54 +08:00
SoftFever
afdd753db7 tweak profiles 2023-08-03 00:47:48 +08:00
djperya
6c8b011991 Some Ukrainian translation fixes (#1638) 2023-07-31 20:50:41 +08:00
SoftFever
aaefc400e1 Tweak profiles
1. Fix Voron Trident printable height issue #1641
2. Revamp Qidi X3 printer profiles
3. Turn on accel_to_decel_enable for klipper machine by default
4. Many other profiles tweaks
2023-07-31 19:52:56 +08:00
SoftFever
58e24dd270 Revert "Kingroon profiles improves (#1599)"
This reverts commit e78a6d964b.
2023-07-31 18:52:49 +08:00
SoftFever
2903942403 Treat the printer as a generic printer when loading new printers not found in the system from a project file 2023-07-31 00:28:52 +08:00
SoftFever
92b1ff824a Miscellaneous changes for PA calib:
1. Changed printing speed for all PA tests, where the speed will be calculated by max(100, outer_wall_speed) with consideration of max_volumetric_speed.
2. PA tower now uses the classic wall generator.
#1616
2023-07-30 23:03:36 +08:00
Noisyfox
b571318be8 Make Overhang Printable (#1615)
* First working conical overhang impl

* Add settings for Make overhang printable

* Added an Advanced setting to the Quality menu for Make overhang printable
* Allow toggling the feature and adjusting the angle threshold

* Retain recesses in the bottom of the model when "Make Overhangs Printable" is turned on

* Add settings for Make overhang printable hole size

* Allow disabling conical overhang per modifier

* Should check upper layer instead

* Skip unnecessary layers

* Apply conical overhang before any size compensation
which fixs the `lslices` not being updated issue and also the elephant foot compensation

* 1. Fix an issue that changing make_overhang_printable related parameters won't clear caches properly.
2. Tweak the logic of make_overhang_printable parameter so that it works for per region/object/print level. Remove make_overhang_printable_disable parameter.

* Change default make_overhang_printable_angle to 55

* One more missing commit

* 1. Skip checking default_region_config()->make_overhang_printable
2. Handle make_overhang_printable_angle and make_overhang_printable_hole_size value change

---------

Co-authored-by: David Bern <odie5533@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-07-30 20:20:43 +08:00
SoftFever
ab6649da8a update PA tower so it's one wall for most nozzles(0.4 upwards) 2023-07-30 19:38:34 +08:00
SoftFever
71b76d74d7 Fixed a regression where print settings set by calibration features were not applied properly #1614 2023-07-30 19:25:02 +08:00
Carlos Caruncho
e78a6d964b Kingroon profiles improves (#1599)
* Update OrcaSlicer_es.po

* Update OrcaSlicer_es.po

More strings!

* Update OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* Update Orcaslicer spanish

* Merge

* Corregidos duplicados

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po
	modified:   bbl/i18n/es/OrcaSlicer_es.mo

* modified:   bbl/i18n/es/OrcaSlicer_es.mo

* Update Orca es

* FIX:orcaslicer_es.po  some strings

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po
	modified:   resources/i18n/es/OrcaSlicer.mo

* Update text.js

Added es_ES to text.js (spanish strings)

* Kingroon profiles added

Added Kp3s and kp5l printers

* Update OrcaSlicer_es.po

CAMBIOS EN CUARTEL

* Update OrcaSlicer_es.po

* [FIX] Fixed some spanish strings

Improved translation

* More spanish string fixes

More fixes

* Fix More Spanish Strings

* add kingoon profiles

* Last mo update

* Fix KP3S PRO S1 profile

* Kingroon printers fixes

* Update OrcaSlicer.mo

* Added plate bed

* [FIX] Some Kingroon profiles fixes

* Kingroon profile improves

Brong start gcode

* Kingroon profile improves

Deleted some profiles

* Some fixes

* More fixes
2023-07-30 13:58:43 +08:00
ovlach
a329497f49 fix: ambiguous call _check_convertible_to_path_source(const wxCStrData&) (#1597)
* fix: ambiguous call _check_convertible_to_path_source(const wxCStrData&)

* change to ToStdWstring() per discussion

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-07-30 09:46:50 +08:00
SoftFever
2dfb4f1a68 Optimized gcode generation. Reduce set fan speed commands #804 2023-07-30 00:16:09 +08:00
djperya
979b17fab7 compilation errors fixed of Ukrainian localizalion (#1610)
* compilation errors fixed of Ukrainian localizalion

* add UKRAINIAN lang option in UI

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-07-29 10:13:17 +08:00
Noisyfox
d7a1241550 Port single wall on top surface from classic wall generator to Arachne (#1583)
* Port single wall on top surface from classic wall generator to Arachne

* Move the surface split code into a separate function to be shared between classic and Arachne. This also adds bridge detection to Arachne as well.

* Remove unwanted infills

* Fix insets calculating

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-07-29 10:12:47 +08:00
Carlos Caruncho
c13a2e57e2 Spanish translation improves and compiled MO (#1607)
* Some Spanish string fixes

PO updated

* More spanish strings fixes

* Compiled MO
2023-07-28 22:20:58 +08:00
SoftFever
0657ad9e58 Overhang tweaks:
1. Revert back to classic overhang
2. Support percent for overhang speed
2023-07-28 00:19:08 +08:00
Jason M-H
be54f6bc99 Calculate extrusion width %s as a function of nozzle width, not layer height (#1578)
* Calculate extrusion width %s as a function of nozzle width, not layer height

* handled more width conversions

* more missing percent handling

* even more missed percent handling

* even more more extrusion % handling

* some fixes

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-07-27 23:37:47 +08:00
SoftFever
71ddef9724 fix misspelling in the tooltip of Filter out tiny gaps option #1606 2023-07-27 22:21:10 +08:00
SoftFever
5c71994c83 update locale 2023-07-27 22:10:39 +08:00
SoftFever
1a869cfca9 Merge branch 'main' of github.com:SoftFever/OrcaSlicer 2023-07-27 22:03:45 +08:00
SoftFever
ff7fb51f41 fix sidelable font 2023-07-27 22:03:32 +08:00
SoftFever
53688791af skip overhang degree check in PerimeterGenerator when overhang_speed_classic is not enabled 2023-07-27 22:03:12 +08:00
ovlach
df819b2778 Use namespaces to link against libcereal >= 1.3.1 (#1596)
0ffcfd8393

Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-07-27 21:58:19 +08:00
thewildmage
910d79ae6f Fix overly persistent pressure advance pattern (#1591)
* Reset model's calib_pa_pattern as needed

* Add initial config for skirt and brim in PA pattern
2023-07-26 19:23:41 +08:00
djperya
c0cb91bb8a Create OrcaSlicer_uk.po (#1601)
Add Ukrainian translation
2023-07-26 19:16:07 +08:00
Carlos Caruncho
9368ca46ed Some Spanish string fixes (#1600)
PO updated
2023-07-26 19:14:34 +08:00
Morton Jonuschat
b5d5b972fc [BUGFIX] Fix emitting Klipper SET_VELOCITY_LIMIT commands (#1598)
[BUGFIX] Fix Klipper SET_VELOCITY_LIMIT code

- Always write out SET_VELOCITY_LIMTIT ACCEL=<acceleration> independently of the accel_to_decel setting
- Append the ACCEL_TO_DECEL fragment if enabled in config
2023-07-26 19:11:47 +08:00
SoftFever
7f6f01c4c9 QoL: remember each printer's filament/bed/process settings (#1592)
* init work
TODO:
1. support multi filament
2. support project

* Properly handle filament number change when switching printers
2023-07-25 21:54:34 +08:00
SoftFever
6aa3e400d1 reduce AppConfig::Save() calls 2023-07-25 19:19:49 +08:00
Carlos Caruncho
cccc857f6f Fixed spanish translation and kingroon profiles added (#1572)
* Update OrcaSlicer_es.po

* Update OrcaSlicer_es.po

More strings!

* Update OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* Update Orcaslicer spanish

* Merge

* Corregidos duplicados

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po
	modified:   bbl/i18n/es/OrcaSlicer_es.mo

* modified:   bbl/i18n/es/OrcaSlicer_es.mo

* Update Orca es

* FIX:orcaslicer_es.po  some strings

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po
	modified:   resources/i18n/es/OrcaSlicer.mo

* Update text.js

Added es_ES to text.js (spanish strings)

* Kingroon profiles added

Added Kp3s and kp5l printers

* Update OrcaSlicer_es.po

CAMBIOS EN CUARTEL

* Update OrcaSlicer_es.po

* [FIX] Fixed some spanish strings

Improved translation

* More spanish string fixes

More fixes

* Fix More Spanish Strings

* add kingoon profiles

* Last mo update

* Fix KP3S PRO S1 profile

* Kingroon printers fixes

* Update OrcaSlicer.mo

* Added plate bed
2023-07-23 12:03:53 +08:00
Jason M-H
7a3971eca5 Add Lift Z only Above/Below, On Surface (e.g. Only on Top) (#1562)
* Added config options for Enforce Lift Z (from SS, doesn't affect Gcode
yet)

* working, minus first layer override; also fixed m_last_extrusion_role not being set

* fixed logic to match SS

* minimize to just one config

* removed first layer override

* Cleaned up logic, working as intended

* added lift above z, lift below z; somehow broke filament overrides

* fixed overrides not working, but lift above/below and enforce don't override

* fixed filament overrides

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-07-22 21:07:13 +08:00
thewildmage
777c7c68f9 Add Ellis' pattern method for pressure advance calibration (#1547)
* Add pattern method to Pressure Advance dialog

* Convert calib_pressure_advance to more unique calib_pressure_advance_line

* Share move_to function with PA lines and patterns

* Add PA pattern to calib.hpp

* Implement move_to(Vec3d). Combine with Vec2d version

* Add call to PA pattern in GCode.cpp

* Add helper functions

* Add directionality to draw_digit

* Extract shared number drawing variables

* Extract convert_number_to_string function

* Use in-class initializers for pattern variables

* Add max_numbering_height function

* Add helper functions

* Extract shared delta helper functions

* Add pattern generate_test() and associated helpers

* Clarify use of math functions

* Remove unused move_to overload, accept move_to comments

* Add get_distance() and draw_line()

* Extract set_nozzle_diameter()

* Clean up and simplify

* Rearrange and clean up

* Start work on print_pa_pattern

* Complete basic draw_box function

* Add more helper functions

* Add struct for pattern config, more helpers

* Rearrange

* Add encroachment member variable

* Add structs to manage optional arguments

* Simplify optional arguments structs

* Update opt args usage. Finish draw_box function

* Complete print_pa_pattern function

* Reuse PA Line STL

* Fix forward declaration error

* Fix invalid comparison

* Fixing complier errors

* Make DrawDigitMode options more clear

* More compilation error fixes

* Yet more compile error fixes

* Fix incorrect default step value

* Handle top-level dialog changes, consolidate params definitions

* Add layer change G-code, set more print variables

* Simplify optArgs constructors

* Fix pattern drawing, minor misc. clean up

* Make draw_box() G-code comments more helpful

* Make more of draw_line() const

* Fix sequential number draw direction

* Extract shared e_per_mm function

* Fix misplaced decimal in PA Line

* Move short constructor into .hpp

* Fix inverted Y direction in pattern digit drawing

* Use placeholder STL to create needed layers

* Rearrange and clean up

* Proof of concept: Adding custom G-Code at layer

* Use new scaling method

* Reorganize Plater::calib_pa()

* Restructure calib

* New strategy for adding custom G-code

* Remove redundant invocation

* Use cube primitive as positioning handle

* Move logic to Plater

Modifications to model in GCode cancelled _do_export from within itself

* Consolidate m_starting_point and pattern_start functions

* Replace bed_center() with m_starting_point

* Fix and consolidate number tab creation

* Fix off by one layer bug

* Use correct bounding box

* Use Vec3d instead of Vec2d for m_starting_point and m_last_pos

* Add translate_starting_point function

* Vec3d fix

* Store CalibPressureAdvancePattern with model

* Formatting adjustments

* Move pattern when handle moves

* Improve const correctness

* Improve/fix pattern writer and config

* Fix speed setting bug

* Pass model into generate_gcodes to improve consistency

* Re-generate pattern on reslice

* Make pattern actually move with handle

* Fix overzealous m_last_pos initialization

* Use clearer function names

* Use correct model

* Remove unused member variable

* Don't hard-code print config settings

* Remove unused lines, formatting clean up

* Make sure set_key_value operates on existing keys

* Remove asserts which limited life of key/value set

* Update Calibration.md

* Update licensing info

* Actually use speed in draw_line

* Don't speed_adjust twice

* doc: Make width and speed settings used more clear

* Bugfix: Shouldn't need to move handle to see pattern

* Clean up

* Move mp_gcodegen into line method alone

* Fix wrong number thickness in PA Line

* Remove unnecessary middleman PatternSettings

* Give value of config to const m_initial_config, not ref

* Fix incorrect DrawBoxOptArg default

* Use line_width_anchor() for all of initial layer

* Use clearer function name

* Replace "anchor" with "first_layer" for better consistency

* Update Calibration.md

* Update Calibration.md

* Make number tab infill explanation more clear

* (Hopefully) fix missing origin

* Add GCodeProcessor tags

* Fully refresh config

* Don't store is_bbl_printer

* Move set_starting_point to private

* Don't constantly recreate GCodeWriter

* Use different step value for pattern test

* Remove redundant processor tags

* Label glyph G-code

* Fix comparison typo

* Set number print speed

* Fix mixed up draw_number parameter

* Don't use line_width_first_layer for pattern

* (Hopefully) fix temp tower generating PA pattern

* Start with pattern centered on plate

* Add gap between pattern and handle

* Fix overly persistent pattern

* Revert "(Hopefully) fix temp tower generating PA pattern"

This reverts commit 0aa1206886.

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-07-22 20:48:56 +08:00
ZdDroid
87f6c43784 Display print end time for in BL device page (#1568)
Show progress increase end time
Supplementary translation

Co-authored-by: ZdDroid <601865048@qq.com>
2023-07-22 10:40:15 +08:00
Hotsolidinfill
224e1ea2de Add Korean translation + Font problem (need help) (#1553)
* add ko_KR

* add

* additional translation
"Tip of the Day"

* add korean to language list

* -Fix Korean translation
-Add Russian to language list
2023-07-20 22:59:11 +08:00
SoftFever
f5b824eaa2 1. temp fix for Korean font
2. fix crashes when cjk language is use but the system don't have unicode support enabled on Windows
2023-07-19 18:17:21 +08:00
SoftFever
b5cbb42e62 fix build errors for relwithdebinfo 2023-07-19 18:16:35 +08:00
SoftFever
fda21497fc revert back to 2019 runner 2023-07-18 01:07:25 +08:00
SoftFever
ed156c1fc9 fix win cicd, revert back to vs2019 2023-07-18 01:02:42 +08:00
Heiko Liebscher
3725ef1e1b fix lang files (gettext tool) (#1550) 2023-07-17 20:38:18 +08:00
SoftFever
40a17695c5 fix vs2022 deps 2023-07-16 10:58:18 +08:00
SoftFever
9253fed401 add vs2022 bat 2023-07-15 00:10:03 +08:00
SoftFever
b76be35d5a fix OCCT patch failure 2023-07-15 00:10:03 +08:00
stasyan68
053bb37ece added Russian translation (#1509) 2023-07-11 00:06:44 +08:00
Carlos Caruncho
453b0cf8e6 OrcaSlicer_Es.po spanish translation finished (#1483)
* Update OrcaSlicer_es.po

* Update OrcaSlicer_es.po

More strings!

* Update OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* Update Orcaslicer spanish

* Merge

* Corregidos duplicados

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po
	modified:   bbl/i18n/es/OrcaSlicer_es.mo

* modified:   bbl/i18n/es/OrcaSlicer_es.mo

* Update Orca es

* FIX:orcaslicer_es.po  some strings

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po

* modified:   bbl/i18n/es/OrcaSlicer_es.po
	modified:   resources/i18n/es/OrcaSlicer.mo

* Update text.js

Added es_ES to text.js (spanish strings)
2023-07-10 22:29:19 +08:00
SoftFever
e3a85e2b33 use smaller font for codes 2023-07-08 14:48:07 +08:00
SoftFever
3d7c45c6dc fix wrong default support_threshold_angle value 2023-07-07 10:38:55 +08:00
SoftFever
809278320e clear m_calib_config before each print 2023-07-07 01:03:32 +08:00
SoftFever
bdf8c8d5b1 Merge remote-tracking branch 'remote/v1.6.0'
# Conflicts:
#	.github/workflows/build_ubuntu.yml
#	src/libslic3r/Print.cpp
#	version.inc
2023-07-07 00:38:54 +08:00
SoftFever
93b8d7aeff update po/pot files 2023-07-07 00:07:31 +08:00
SoftFever
e94fe296ee Improve seams:
1. Turn off wipe_on_loops by default
2. Change default wipe distance to 1 mm
2023-07-06 21:11:55 +08:00
SoftFever
c3c6bbc4e5 Port PrusaSlicer staggered_inner_seams 2023-07-06 21:08:39 +08:00
SoftFever
b47777e73e optimize gcode generation 2023-07-06 00:01:06 +08:00
Carlos Caruncho
85882c3dde Update OrcaSlicer_es.po (#1443) 2023-06-30 22:46:21 +08:00
SoftFever
1318051bc3 update gitignore 2023-06-30 20:17:58 +08:00
SoftFever
f6c5369e76 fix OCCT build on Mac when build_release_macos.sh 2023-06-30 14:00:53 +08:00
SoftFever
d6fedfb47a update doxygen setting 2023-06-30 13:59:41 +08:00
Jeremy Lucas
92e02dbef4 Added doc & photo for wiki guide for max volumetric flow (#1301)
* Added doc and photo for max volumetric flow

* Fixed comments on doc. Same old image

* Added photos and finished description

* Forgot to save

* Added other method back in
2023-06-29 12:04:16 +08:00
Dylan
1a809b0931 Fix check multi filament valid (#1433)
* no need to check different filaments if using a multi-head printer

* bed temperatures warning
2023-06-29 12:03:34 +08:00
igiannakas
1c780496aa Optimise sandwich wall mode when perimeters are shared with multiple islands(Arachne only) (#1352)
* Update PerimeterGenerator.cpp

* PerimeterGenerator updated with improved Sandwich infill handling

Cleaned up code

* Beautified syntax

* Optimise the logic

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-06-29 12:02:07 +08:00
Scott Mudge
8e4a43ea5c Add option for skirt-speed override (#1371)
Add skirt speed option.

Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-06-26 20:53:17 +08:00
Dylan
e925db8c0f fix is_extruder_used (#1422) 2023-06-25 15:18:56 +08:00
SoftFever
3fee164058 update linux deps 2023-06-25 14:39:08 +08:00
Scott Mudge
1ef8ca2de0 Bugfix for zero-width tree supports (#1367)
fix bug with zero width tree supports throwing exception.
2023-06-25 13:38:29 +08:00
Scott Mudge
b943a04da7 Fix tooltip referencing "Studio" (#1370)
Fixed language with reference to "Studio"
2023-06-25 13:32:47 +08:00
SoftFever
4a799aa770 update Ubuntu deps 2023-06-11 14:44:44 +08:00
Maciej Lisiewski
e065809e3a Fix building with GCC13 (required to build on Arch and Fedora) (#1220)
* Backport TBB fix to allow building on GCC13

* Fix OpenEXR build with GCC13

* Fix Clipper2 build with GCC13

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2023-06-11 11:36:33 +08:00
SoftFever
6108d8ee40 tweak ubuntu packages 2023-06-08 16:42:42 +08:00
SoftFever
d54861b8f7 add mac arm64 for build_deps 2023-06-07 17:44:48 +08:00
SoftFever
42d78a3a57 update cicd triggers 2023-06-07 16:02:45 +08:00
SoftFever
6aa84e8c42 build deps cicd 2023-06-07 15:42:18 +08:00
SoftFever
483febb01d fix build_deps syntax 2023-06-07 15:13:02 +08:00
SoftFever
678a0918d2 build deps 2023-06-07 14:50:19 +08:00
Heiko Liebscher
335ba93982 fix some typo and new feature (#1202) 2023-06-05 11:02:07 +08:00
Heti
9861051cd7 Easier solution to allow opening the app on OSX described in README.md (#1232)
Update README.md

Easier solution to allow opening the app
2023-06-05 10:54:25 +08:00
Branden Cash
c675d979a7 fix(macos): disable App Transport Security (#1157)
* feat(webview): enable context menu

This enables the ability (at least on MacOS) to reload the webview.

* fix(webview): add handler for webview error

Adding this un-covered the following error when trying to load a the printer page using http and hostname:
```
OnError: error loading page about:blank  wxWEBVIEW_NAV_ERR_OTHER The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

```

* fix(macos): disable App Transport Security policy

Disables the [App Transport Security](https://developer.apple.com/documentation/bundleresources/information_property_list/nsapptransportsecurity) policy that blocks loading http urls (via hostname...ip addresses were fine because ip addresses can't have certs, so they would be excluded from the ATS restriction).

Resolves #791
2023-06-01 00:14:47 +08:00
lane.wei
b953fd0b4d ENH: switch back to ubuntu 20.04 for building linux
This reverts commit 32f978c8932064395c0cfc3d8c22c2c9a263d4df.
2023-04-28 17:11:46 +08:00
gerrit
dbc797305c ci: update build version to 01.06.02.04
Change-Id: I7bfdc18da15ed4061458a0261b577abfb42abc1c
2023-04-27 15:50:48 +08:00
liz.li
955d9bb84b FIX: mac command key been translated and cannot work
Change-Id: Ib8f83e7c0acee36ebf2f7365f544eeb804b4db8a
2023-04-27 15:50:48 +08:00
gerrit
fe04156500 ci: update build version to 01.06.02.03
Change-Id: Ibbda1d0b2163fbcb318eb6554dbc766c561fddf9
2023-04-27 15:50:48 +08:00
liz.li
8b08d2be9f FIX:add layer range, the extruder should inherit from object config
Change-Id: I11615ebe40393cf1a1fe5caad7490dc6083ec2e7
(cherry picked from commit 864869b656fb4afbf68d47a191b6a8105dd25933)
2023-04-27 15:50:48 +08:00
gerrit
afe0ed6f41 ci: update build version to 01.06.02.02
Change-Id: Id18fc70803c7a5c96749a6b004a3dec1480f3a77
2023-04-27 15:50:47 +08:00
gerrit
48bdf6dbc7 ci: update network module based on commit 2f3f938
Change-Id: I56ea8cf7a512e77d2c7e617fdff381d705399b5c
2023-04-27 15:50:47 +08:00
Stone Li
1f42a95ee4 ENH: update version to 01.06.02.01
Change-Id: I97fbdfb2f58638fd819fc4cec41333ee695547f8
2023-04-27 15:50:47 +08:00
tao wang
18fcbc8857 NEW:add color picker control to material settings
Change-Id: I69dc51b64edb0a44331cd93d7fc157b4b0284fdc
2023-04-27 15:50:47 +08:00
qing.zhang
8be14d6cfe FIX: set temp befor open HB fan to avoid oozing
Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: Ibbda89a855927615d7da0e6da94a988852a10465
2023-04-27 15:50:47 +08:00
qing.zhang
64428b4d3b ENH: add support for PLA and support for PA
Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I83781d4e11bd986131caaabba479c0074f2506a0
(cherry picked from commit 545c0122d1c0fce96b62de7ee9042b24911d93a6)
2023-04-27 15:50:47 +08:00
zhimin.zeng
ae0a470f4c FIX: rotate model before cut, the rotation of connectors is incorrect
github issue #1646 & #1647

Change-Id: Iab1d6984685a532011f425e704ccae039a6ef65d
(cherry picked from commit 1219045039de4ac0ed677b264e6e8469e6bc72dd)
2023-04-27 15:50:47 +08:00
zhimin.zeng
6c0d1898b3 FIX: crash when setting negative thickness value on text tool
github issue #1656

Change-Id: Ib77bdd3e4b2508c466d7122a9052d1d15d6bc4bb
(cherry picked from commit 8e347eb971ad28bd53fd4bfcdbccd0b980e81810)
2023-04-27 15:50:47 +08:00
liz.li
d20afab115 FIX: save and load layer_range to 3mf
Change-Id: Ie18aa8140b5c0fbba87be6ef2f8d0c924fa61791
(cherry picked from commit 6ef824bfbe06c694609c8e69338a3628248b93ac)
2023-04-27 15:50:47 +08:00
qing.zhang
9defe7b617 FIX: STUDIO-2383 slicing error while using compensation
set resolution value to 0 could avoid shape error

1. elephant compensation
2. xy-hole-compensation
3. xy-contour-compensation

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I238b6dd3342e09d33f4d10f7928f5fb48371d2b3
(cherry picked from commit f3518dbd226e7fe7cc6e0bbead118aa8321037bd)
2023-04-27 15:50:47 +08:00
973 changed files with 121767 additions and 17500 deletions

View File

@@ -1,4 +1,4 @@
# Doxyfile 1.9.5
# Doxyfile 1.9.8
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project.
@@ -48,7 +48,7 @@ PROJECT_NAME = OrcaSlicer
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 1.5.0
PROJECT_NUMBER = 1.6.3
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
@@ -61,14 +61,14 @@ PROJECT_BRIEF = OrcaSlicer
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
# the logo to the output directory.
PROJECT_LOGO = D:/a/OrcaSlicer/OrcaSlicer/resources/images/BambuStudio.png
PROJECT_LOGO = ./resources/images/OrcaSlicer_32px.png
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
# into which the generated documentation will be written. If a relative path is
# entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used.
OUTPUT_DIRECTORY = OrcaSlicer-doc
OUTPUT_DIRECTORY = ../
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096
# sub-directories (in 2 levels) under the output directory of each output format
@@ -86,7 +86,7 @@ CREATE_SUBDIRS = YES
# level increment doubles the number of directories, resulting in 4096
# directories at level 8 which is the default and also the maximum value. The
# sub-directories are organized in 2 levels, the first level always has a fixed
# numer of 16 directories.
# number of 16 directories.
# Minimum value: 0, maximum value: 8, default value: 8.
# This tag requires that the tag CREATE_SUBDIRS is set to YES.
@@ -184,7 +184,7 @@ FULL_PATH_NAMES = YES
# will be relative from the directory where doxygen is started.
# This tag requires that the tag FULL_PATH_NAMES is set to YES.
STRIP_FROM_PATH = /Users/lijiang/lab/OrcaSlicer/
STRIP_FROM_PATH = /Users/runner/work/OrcaSlicer/OrcaSlicer
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
# path mentioned in the documentation of a class, which tells the reader which
@@ -193,7 +193,7 @@ STRIP_FROM_PATH = /Users/lijiang/lab/OrcaSlicer/
# specify the list of include paths that are normally passed to the compiler
# using the -I flag.
STRIP_FROM_INC_PATH =
STRIP_FROM_INC_PATH = /Users/runner/work/OrcaSlicer/OrcaSlicer
# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
# less readable) file names. This can be useful is your file systems doesn't
@@ -363,6 +363,17 @@ MARKDOWN_SUPPORT = YES
TOC_INCLUDE_HEADINGS = 5
# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to
# generate identifiers for the Markdown headings. Note: Every identifier is
# unique.
# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a
# sequence number starting at 0 and GITHUB use the lower case version of title
# with any whitespace replaced by '-' and punctuation characters removed.
# The default value is: DOXYGEN.
# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
MARKDOWN_ID_STYLE = GITHUB
# When enabled doxygen tries to link words that correspond to documented
# classes, or namespaces to their corresponding documentation. Such a link can
# be prevented in individual cases by putting a % sign in front of the word or
@@ -379,7 +390,7 @@ AUTOLINK_SUPPORT = YES
# diagrams that involve STL classes more complete and accurate.
# The default value is: NO.
BUILTIN_STL_SUPPORT = NO
BUILTIN_STL_SUPPORT = YES
# If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support.
@@ -418,7 +429,7 @@ DISTRIBUTE_GROUP_DOC = NO
# is disabled and one has to add nested compounds explicitly via \ingroup.
# The default value is: NO.
GROUP_NESTED_COMPOUNDS = NO
GROUP_NESTED_COMPOUNDS = YES
# Set the SUBGROUPING tag to YES to allow class member groups of the same type
# (for instance a group of public functions) to be put as a subgroup of that
@@ -487,6 +498,14 @@ LOOKUP_CACHE_SIZE = 6
NUM_PROC_THREADS = 0
# If the TIMESTAMP tag is set different from NO then each generated page will
# contain the date or date and time when the page was generated. Setting this to
# NO can help when comparing the output of multiple runs.
# Possible values are: YES, NO, DATETIME and DATE.
# The default value is: NO.
TIMESTAMP = NO
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
@@ -499,7 +518,7 @@ NUM_PROC_THREADS = 0
# normally produced when WARNINGS is set to YES.
# The default value is: NO.
EXTRACT_ALL = NO
EXTRACT_ALL = YES
# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
# be included in the documentation.
@@ -568,7 +587,8 @@ HIDE_UNDOC_MEMBERS = NO
# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
# undocumented classes that are normally visible in the class hierarchy. If set
# to NO, these classes will be included in the various overviews. This option
# has no effect if EXTRACT_ALL is enabled.
# will also hide undocumented C++ concepts if enabled. This option has no effect
# if EXTRACT_ALL is enabled.
# The default value is: NO.
HIDE_UNDOC_CLASSES = NO
@@ -714,26 +734,26 @@ STRICT_PROTO_MATCHING = NO
# list. This list is created by putting \todo commands in the documentation.
# The default value is: YES.
GENERATE_TODOLIST = YES
GENERATE_TODOLIST = NO
# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
# list. This list is created by putting \test commands in the documentation.
# The default value is: YES.
GENERATE_TESTLIST = YES
GENERATE_TESTLIST = NO
# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
# list. This list is created by putting \bug commands in the documentation.
# The default value is: YES.
GENERATE_BUGLIST = YES
GENERATE_BUGLIST = NO
# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
# the deprecated list. This list is created by putting \deprecated commands in
# the documentation.
# The default value is: YES.
GENERATE_DEPRECATEDLIST= YES
GENERATE_DEPRECATEDLIST= NO
# The ENABLED_SECTIONS tag can be used to enable conditional documentation
# sections, marked by \if <section_label> ... \endif and \cond <section_label>
@@ -859,11 +879,26 @@ WARN_IF_INCOMPLETE_DOC = YES
WARN_NO_PARAMDOC = NO
# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, doxygen will warn about
# undocumented enumeration values. If set to NO, doxygen will accept
# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag
# will automatically be disabled.
# The default value is: NO.
WARN_IF_UNDOC_ENUM_VAL = NO
# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS
# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but
# at the end of the doxygen process doxygen will return with a non-zero status.
# Possible values are: NO, YES and FAIL_ON_WARNINGS.
# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then doxygen behaves
# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined doxygen will not
# write the warning messages in between other messages but write them at the end
# of a run, in case a WARN_LOGFILE is defined the warning messages will be
# besides being in the defined file also be shown at the end of a run, unless
# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case
# the behavior will remain as with the setting FAIL_ON_WARNINGS.
# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT.
# The default value is: NO.
WARN_AS_ERROR = NO
@@ -908,7 +943,7 @@ WARN_LOGFILE =
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.
INPUT = .
INPUT = ./src
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -1031,9 +1066,6 @@ EXCLUDE_PATTERNS =
# output. The symbol name can be a fully qualified name, a word, or if the
# wildcard * is used, a substring. Examples: ANamespace, AClass,
# ANamespace::AClass, ANamespace::*Test
#
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories use the pattern */test/*
EXCLUDE_SYMBOLS =
@@ -1219,46 +1251,6 @@ USE_HTAGS = YES
VERBATIM_HEADERS = YES
# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
# clang parser (see:
# http://clang.llvm.org/) for more accurate parsing at the cost of reduced
# performance. This can be particularly helpful with template rich C++ code for
# which doxygen's built-in parser lacks the necessary type information.
# Note: The availability of this option depends on whether or not doxygen was
# generated with the -Duse_libclang=ON option for CMake.
# The default value is: NO.
CLANG_ASSISTED_PARSING = NO
# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS
# tag is set to YES then doxygen will add the directory of each input to the
# include path.
# The default value is: YES.
# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
CLANG_ADD_INC_PATHS = YES
# If clang assisted parsing is enabled you can provide the compiler with command
# line options that you would normally use when invoking the compiler. Note that
# the include paths will already be set by doxygen for the files and directories
# specified with INPUT and INCLUDE_PATH.
# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
CLANG_OPTIONS =
# If clang assisted parsing is enabled you can provide the clang parser with the
# path to the directory containing a file called compile_commands.json. This
# file is the compilation database (see:
# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the
# options used when the source files were built. This is equivalent to
# specifying the -p option to a clang tool, such as clang-check. These options
# will then be passed to the parser. Any options specified with CLANG_OPTIONS
# will be added as well.
# Note: The availability of this option depends on whether or not doxygen was
# generated with the -Duse_libclang=ON option for CMake.
CLANG_DATABASE_PATH =
#---------------------------------------------------------------------------
# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
@@ -1270,10 +1262,11 @@ CLANG_DATABASE_PATH =
ALPHABETICAL_INDEX = YES
# In case all classes in a project start with a common prefix, all classes will
# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
# can be used to specify a prefix (or a list of prefixes) that should be ignored
# while generating the index headers.
# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes)
# that should be ignored while generating the index headers. The IGNORE_PREFIX
# tag works for classes, function and member names. The entity will be placed in
# the alphabetical list under the first letter of the entity name that remains
# after removing the prefix.
# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
IGNORE_PREFIX =
@@ -1293,7 +1286,7 @@ GENERATE_HTML = YES
# The default directory is: html.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_OUTPUT = html
HTML_OUTPUT = OrcaSlicer_Dev_Document
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
# generated HTML page (for example: .htm, .php, .asp).
@@ -1352,7 +1345,12 @@ HTML_STYLESHEET =
# Doxygen will copy the style sheet files to the output directory.
# Note: The order of the extra style sheet files is of importance (e.g. the last
# style sheet in the list overrules the setting of the previous ones in the
# list). For an example see the documentation.
# list).
# Note: Since the styling of scrollbars can currently not be overruled in
# Webkit/Chromium, the styling will be left out of the default doxygen.css if
# one or more extra stylesheets have been specified. So if scrollbar
# customization is desired it has to be added explicitly. For an example see the
# documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_EXTRA_STYLESHEET =
@@ -1368,17 +1366,13 @@ HTML_EXTRA_STYLESHEET =
HTML_EXTRA_FILES =
# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output
# should be rendered with a dark or light theme. Default setting AUTO_LIGHT
# enables light output unless the user preference is dark output. Other options
# are DARK to always use dark mode, LIGHT to always use light mode, AUTO_DARK to
# default to dark mode unless the user prefers light mode, and TOGGLE to let the
# user toggle between dark and light mode via a button.
# Possible values are: LIGHT Always generate light output., DARK Always generate
# dark output., AUTO_LIGHT Automatically set the mode according to the user
# preference, use light mode if no preference is set (the default)., AUTO_DARK
# Automatically set the mode according to the user preference, use dark mode if
# no preference is set. and TOGGLE Allow to user to switch between light and
# dark mode via a button..
# should be rendered with a dark or light theme.
# Possible values are: LIGHT always generate light mode output, DARK always
# generate dark mode output, AUTO_LIGHT automatically set the mode according to
# the user preference, use light mode if no preference is set (the default),
# AUTO_DARK automatically set the mode according to the user preference, use
# dark mode if no preference is set and TOGGLE allow to user to switch between
# light and dark mode via a button.
# The default value is: AUTO_LIGHT.
# This tag requires that the tag GENERATE_HTML is set to YES.
@@ -1414,15 +1408,6 @@ HTML_COLORSTYLE_SAT = 100
HTML_COLORSTYLE_GAMMA = 80
# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
# page will contain the date and time when the page was generated. Setting this
# to YES can help to show when doxygen was last run and thus if the
# documentation is up to date.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_TIMESTAMP = NO
# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML
# documentation will contain a main index with vertical navigation menus that
# are dynamically created via JavaScript. If disabled, the navigation index will
@@ -1440,7 +1425,7 @@ HTML_DYNAMIC_MENUS = YES
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_DYNAMIC_SECTIONS = NO
HTML_DYNAMIC_SECTIONS = YES
# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
# shown in the various tree structured indices initially; the user can expand
@@ -1468,7 +1453,7 @@ HTML_INDEX_NUM_ENTRIES = 100
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_DOCSET = NO
GENERATE_DOCSET = YES
# This tag determines the name of the docset feed. A documentation feed provides
# an umbrella under which multiple documentation sets from a single provider
@@ -1572,6 +1557,16 @@ BINARY_TOC = NO
TOC_EXPAND = NO
# The SITEMAP_URL tag is used to specify the full URL of the place where the
# generated documentation will be placed on the server by the user during the
# deployment of the documentation. The generated sitemap is called sitemap.xml
# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL
# is specified no sitemap is generated. For information about the sitemap
# protocol see https://www.sitemaps.org
# This tag requires that the tag GENERATE_HTML is set to YES.
SITEMAP_URL =
# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
@@ -1736,7 +1731,7 @@ OBFUSCATE_EMAILS = YES
# The default value is: png.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_FORMULA_FORMAT = png
HTML_FORMULA_FORMAT = svg
# Use this tag to change the font size of LaTeX formulas included as images in
# the HTML documentation. When you change the font size after a successful
@@ -2060,9 +2055,16 @@ PDF_HYPERLINKS = YES
USE_PDFLATEX = YES
# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
# command to the generated LaTeX files. This will instruct LaTeX to keep running
# if errors occur, instead of asking the user for help.
# The LATEX_BATCHMODE tag ignals the behavior of LaTeX in case of an error.
# Possible values are: NO same as ERROR_STOP, YES same as BATCH, BATCH In batch
# mode nothing is printed on the terminal, errors are scrolled as if <return> is
# hit at every error; missing files that TeX tries to input or request from
# keyboard input (\read on a not open input stream) cause the job to abort,
# NON_STOP In nonstop mode the diagnostic message will appear on the terminal,
# but there is no possibility of user interaction just like in batch mode,
# SCROLL In scroll mode, TeX will stop only for missing files to input or if
# keyboard input is necessary and ERROR_STOP In errorstop mode, TeX will stop at
# each error, asking for user intervention.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
@@ -2083,14 +2085,6 @@ LATEX_HIDE_INDICES = NO
LATEX_BIB_STYLE = plain
# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
# page will contain the date and time when the page was generated. Setting this
# to NO can help when comparing the output of multiple runs.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_TIMESTAMP = NO
# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute)
# path from which the emoji images will be read. If a relative path is entered,
# it will be relative to the LATEX_OUTPUT directory. If left blank the
@@ -2256,7 +2250,7 @@ DOCBOOK_OUTPUT = docbook
#---------------------------------------------------------------------------
# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures
# AutoGen Definitions (see https://autogen.sourceforge.net/) file that captures
# the structure of the code including all documentation. Note that this feature
# is still experimental and incomplete at the moment.
# The default value is: NO.
@@ -2267,6 +2261,28 @@ GENERATE_AUTOGEN_DEF = NO
# Configuration options related to Sqlite3 output
#---------------------------------------------------------------------------
# If the GENERATE_SQLITE3 tag is set to YES doxygen will generate a Sqlite3
# database with symbols found by doxygen stored in tables.
# The default value is: NO.
GENERATE_SQLITE3 = NO
# The SQLITE3_OUTPUT tag is used to specify where the Sqlite3 database will be
# put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put
# in front of it.
# The default directory is: sqlite3.
# This tag requires that the tag GENERATE_SQLITE3 is set to YES.
SQLITE3_OUTPUT = sqlite3
# The SQLITE3_OVERWRITE_DB tag is set to YES, the existing doxygen_sqlite3.db
# database file will be recreated with each doxygen run. If set to NO, doxygen
# will warn if an a database file is already found and not modify it.
# The default value is: YES.
# This tag requires that the tag GENERATE_SQLITE3 is set to YES.
SQLITE3_RECREATE_DB = YES
#---------------------------------------------------------------------------
# Configuration options related to the Perl module output
#---------------------------------------------------------------------------
@@ -2322,7 +2338,7 @@ ENABLE_PREPROCESSING = YES
# The default value is: NO.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
MACRO_EXPANSION = NO
MACRO_EXPANSION = YES
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
# the macro expansion is limited to the macros specified with the PREDEFINED and
@@ -2330,7 +2346,7 @@ MACRO_EXPANSION = NO
# The default value is: NO.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
EXPAND_ONLY_PREDEF = NO
EXPAND_ONLY_PREDEF = YES
# If the SEARCH_INCLUDES tag is set to YES, the include files in the
# INCLUDE_PATH will be searched if a #include is found.
@@ -2431,16 +2447,9 @@ EXTERNAL_GROUPS = YES
EXTERNAL_PAGES = YES
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
# Configuration options related to diagram generator tools
#---------------------------------------------------------------------------
# You can include diagrams made with dia in doxygen documentation. Doxygen will
# then run dia to produce the diagram and insert it in the documentation. The
# DIA_PATH tag allows you to specify the directory where the dia binary resides.
# If left empty dia is assumed to be found in the default search path.
DIA_PATH =
# If set to YES the inheritance and collaboration graphs will hide inheritance
# and usage relations if the target is undocumented or is not a class.
# The default value is: YES.
@@ -2449,7 +2458,7 @@ HIDE_UNDOC_RELATIONS = YES
# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
# available from the path. This tool is part of Graphviz (see:
# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
# https://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
# Bell Labs. The other options in this section have no effect if this option is
# set to NO
# The default value is: NO.
@@ -2502,13 +2511,15 @@ DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4"
DOT_FONTPATH =
# If the CLASS_GRAPH tag is set to YES (or GRAPH) then doxygen will generate a
# graph for each documented class showing the direct and indirect inheritance
# relations. In case HAVE_DOT is set as well dot will be used to draw the graph,
# otherwise the built-in generator will be used. If the CLASS_GRAPH tag is set
# to TEXT the direct and indirect inheritance relations will be shown as texts /
# links.
# Possible values are: NO, YES, TEXT and GRAPH.
# If the CLASS_GRAPH tag is set to YES or GRAPH or BUILTIN then doxygen will
# generate a graph for each documented class showing the direct and indirect
# inheritance relations. In case the CLASS_GRAPH tag is set to YES or GRAPH and
# HAVE_DOT is enabled as well, then dot will be used to draw the graph. In case
# the CLASS_GRAPH tag is set to YES and HAVE_DOT is disabled or if the
# CLASS_GRAPH tag is set to BUILTIN, then the built-in generator will be used.
# If the CLASS_GRAPH tag is set to TEXT the direct and indirect inheritance
# relations will be shown as texts / links.
# Possible values are: NO, YES, TEXT, GRAPH and BUILTIN.
# The default value is: YES.
CLASS_GRAPH = YES
@@ -2579,7 +2590,7 @@ DOT_WRAP_THRESHOLD = 17
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
TEMPLATE_RELATIONS = NO
TEMPLATE_RELATIONS = YES
# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
# YES then doxygen will generate a graph for each documented file showing the
@@ -2649,7 +2660,7 @@ DIR_GRAPH_MAX_DEPTH = 1
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
# generated by dot. For an explanation of the image formats see the section
# output formats in the documentation of the dot tool (Graphviz (see:
# http://www.graphviz.org/)).
# https://www.graphviz.org/)).
# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
# to make the SVG files visible in IE 9+ (other browsers do not have this
# requirement).
@@ -2686,11 +2697,12 @@ DOT_PATH =
DOTFILE_DIRS =
# The MSCFILE_DIRS tag can be used to specify one or more directories that
# contain msc files that are included in the documentation (see the \mscfile
# command).
# You can include diagrams made with dia in doxygen documentation. Doxygen will
# then run dia to produce the diagram and insert it in the documentation. The
# DIA_PATH tag allows you to specify the directory where the dia binary resides.
# If left empty dia is assumed to be found in the default search path.
MSCFILE_DIRS =
DIA_PATH =
# The DIAFILE_DIRS tag can be used to specify one or more directories that
# contain dia files that are included in the documentation (see the \diafile
@@ -2738,7 +2750,7 @@ DOT_GRAPH_MAX_NODES = 50
# Minimum value: 0, maximum value: 1000, default value: 0.
# This tag requires that the tag HAVE_DOT is set to YES.
MAX_DOT_GRAPH_DEPTH = 4
MAX_DOT_GRAPH_DEPTH = 5
# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
# files in one run (i.e. multiple -o and -T options on the command line). This
@@ -2767,3 +2779,19 @@ GENERATE_LEGEND = YES
# The default value is: YES.
DOT_CLEANUP = YES
# You can define message sequence charts within doxygen comments using the \msc
# command. If the MSCGEN_TOOL tag is left empty (the default), then doxygen will
# use a built-in version of mscgen tool to produce the charts. Alternatively,
# the MSCGEN_TOOL tag can also specify the name an external tool. For instance,
# specifying prog as the value, doxygen will call the tool as prog -T
# <outfile_format> -o <outputfile> <inputfile>. The external tool should support
# output file formats "png", "eps", "svg", and "ismap".
MSCGEN_TOOL =
# The MSCFILE_DIRS tag can be used to specify one or more directories that
# contain msc files that are included in the documentation (see the \mscfile
# command).
MSCFILE_DIRS =

127
.github/workflows/build_deps.yml vendored Normal file
View File

@@ -0,0 +1,127 @@
# name: Build Deps
name: Build deps
on:
pull_request:
branches:
- main
paths:
- 'deps/**'
- .github/workflows/build_deps.yml
push:
branches:
- main
paths:
- 'deps/**'
- .github/workflows/build_deps.yml
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build_deps:
strategy:
fail-fast: false
matrix:
include:
# - os: ubuntu-22.04
- os: windows-latest
# - os: macos-12
# arch: x86_64
# - os: macos-12
# arch: arm64
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: setup dev on Windows
if: matrix.os == 'Windows'
uses: microsoft/setup-msbuild@v1.1
- name: Get the date on Ubuntu and macOS
if: matrix.os != 'windows-latest'
id: get-date-unix
run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV
shell: bash
- name: Get the date on Windows
if: matrix.os == 'windows-latest'
id: get-date-windows
run: echo "date=$(Get-Date -Format 'yyyyMMdd')" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
shell: pwsh
- name: Build on Windows
if: matrix.os == 'windows-latest'
working-directory: ${{ github.workspace }}
run: |
choco install strawberryperl
mkdir ${{ github.workspace }}/deps/build
mkdir ${{ github.workspace }}/deps/build/OrcaSlicer_dep
.\build_release_vs2022.bat deps
cd ${{ github.workspace }}/deps/build
- name: Build on Mac x86_64
if: matrix.os == 'macos-12' && matrix.arch == 'x86_64'
working-directory: ${{ github.workspace }}
run: |
brew install cmake git gettext
mkdir -p ${{ github.workspace }}/deps/build_x86_64
mkdir -p ${{ github.workspace }}/deps/build_x86_64/OrcaSlicer_dep_x86_64
./build_release_macos.sh -dp -a x86_64
- name: Build on Mac arm64
if: matrix.os == 'macos-12' && matrix.arch == 'arm64'
working-directory: ${{ github.workspace }}
run: |
brew install cmake git gettext
mkdir -p ${{ github.workspace }}/deps/build_arm64
mkdir -p ${{ github.workspace }}/deps/build_arm64/OrcaSlicer_dep_arm64
./build_release_macos.sh -dp -a arm64
- name: Build on Ubuntu
if: matrix.os == 'ubuntu-22.04'
working-directory: ${{ github.workspace }}
run: |
sudo apt-get update
sudo apt-get install -y cmake git g++ build-essential libgl1-mesa-dev m4 \
libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules pkgconf \
libglu1-mesa-dev libcairo2-dev libgtk-3-dev libsoup2.4-dev libwebkit2gtk-4.0-dev \
libgstreamer1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-base1.0-dev \
gstreamer1.0-plugins-bad libosmesa6-dev wget sudo autoconf curl libunwind-dev
mkdir -p ${{ github.workspace }}/deps/build
mkdir -p ${{ github.workspace }}/deps/build/destdir
sudo ./BuildLinux.sh -ur
sudo chown $USER -R ./
./BuildLinux.sh -dr
- name: Upload Mac arm64 artifacts
if: matrix.os == 'macos-12' && matrix.arch == 'arm64'
uses: actions/upload-artifact@v3
with:
name: OrcaSlicer_dep_mac_arm64_${{ env.date }}
path: ${{ github.workspace }}/deps/build_arm64/OrcaSlicer_dep*.tar.gz
- name: Upload Mac x86_64 artifacts
if: matrix.os == 'macos-12' && matrix.arch == 'x86_64'
uses: actions/upload-artifact@v3
with:
name: OrcaSlicer_dep_mac_x86_64_${{ env.date }}
path: ${{ github.workspace }}/deps/build_x86_64/OrcaSlicer_dep*.tar.gz
- name: Upload Windows artifacts
if: matrix.os == 'windows-latest'
uses: actions/upload-artifact@v3
with:
name: OrcaSlicer_dep_win64_${{ env.date }}
path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep
- name: Upload Ubuntu artifacts
if: matrix.os == 'ubuntu-22.04'
uses: actions/upload-artifact@v3
with:
name: OrcaSlicer_dep_ubuntu_${{ env.date }}
path: ${{ github.workspace }}/deps/build/destdir

View File

@@ -1,83 +0,0 @@
name: Build Linux
on:
push:
branches:
- main
paths:
- 'src/**'
- 'deps/**'
- '**/CMakeLists.txt'
- 'version.inc'
- 'bbl/**'
- 'resources/**'
pull_request:
branches:
- main
paths:
- 'src/**'
- 'deps/**'
- '**/CMakeLists.txt'
- 'version.inc'
- 'bbl/**'
- 'resources/**'
jobs:
appimage-builder:
name: Linux AppImage Build
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y autoconf build-essential cmake curl eglexternalplatform-dev \
extra-cmake-modules file git libcairo2-dev libcurl4-openssl-dev libdbus-1-dev libglew-dev libglu1-mesa-dev \
libglu1-mesa-dev libgstreamer1.0-dev libgstreamerd-3-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev \
libgtk-3-dev libgtk-3-dev libmspack-dev libosmesa6-dev libsecret-1-dev libsoup2.4-dev libssl-dev libudev-dev libwayland-dev \
libwebkit2gtk-4.0-dev libxkbcommon-dev locales locales-all m4 pkgconf sudo wayland-protocols wget
- name: Install dependencies from BuildLinux.sh
shell: bash
run: sudo ./BuildLinux.sh -ur
- name: Fix permissions
shell: bash
run: sudo chown $USER -R ./
# - name: Build deps
# id: cache_deps
# uses: actions/cache@v3
# env:
# cache-name: ${{ runner.os }}-cache-orcaslicer_deps_x64
# with:
# path: ${{ github.workspace }}/deps/build/destdir
# key: build-${{ env.cache-name }}
# - if: ${{ steps.cache_deps.outputs.cache-hit != 'true' }}
# name: Build deps
# working-directory: ${{ github.workspace }}
# continue-on-error: true
# run: ./BuildLinux.sh -dr
- name: Download and extract deps
working-directory: ${{ github.workspace }}
run: |
mkdir -p ${{ github.workspace }}/deps/build
mkdir -p ${{ github.workspace }}/deps/build/destdir
curl -LJO https://github.com/SoftFever/FileSharing/releases/download/OrcaSlicer_deps_Mar/OrcaSlicer_dep_ubuntu_05-04-2023.tar.gz
tar -zxf OrcaSlicer_dep_ubuntu_05-04-2023.tar.gz -C ${{ github.workspace }}/deps/build
chown -R $(id -u):$(id -g) ${{ github.workspace }}/deps/build/destdir
ls -l ${{ github.workspace }}/deps/build/destdir
rm OrcaSlicer_dep_ubuntu_05-04-2023.tar.gz
- name: Build Studio
shell: bash
run: |
./BuildLinux.sh -isr
chmod +x ./build/OrcaSlicer_ubu64.AppImage
- uses: actions/upload-artifact@v3
with:
name: OrcaSlicer_Linux
path: './build/OrcaSlicer_ubu64.AppImage'

View File

@@ -1,111 +0,0 @@
name: Build Mac AppleSilicon
on:
push:
branches:
- main
paths:
- 'src/**'
- 'deps/**'
- '**/CMakeLists.txt'
- 'version.inc'
- 'bbl/**'
- 'resources/**'
pull_request:
branches:
- main
paths:
- 'src/**'
- 'deps/**'
- '**/CMakeLists.txt'
- 'version.inc'
- 'bbl/**'
- 'resources/**'
jobs:
build_osx_arm64:
name: Build Mac AppleSilicon
runs-on: macos-12
steps:
- uses: actions/checkout@v3
- name: Install tools
run: |
brew install cmake git gettext zstd
- run: mkdir -p ${{ github.workspace }}/deps/build_arm64
- run: mkdir -p ${{ github.workspace }}/deps/build_arm64/OrcaSlicer_dep_arm64
# - name: build deps
# id: cache_deps
# uses: actions/cache@v3
# env:
# cache-name: ${{ runner.os }}-cache-orcaslicer_deps_arm64
# with:
# path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep
# key: build-${{ env.cache-name }}
# - if: ${{ steps.cache_deps.outputs.cache-hit != 'true' }}
# name: build deps
# working-directory: ${{ github.workspace }}
# continue-on-error: true
# run: ./build_release_macos.sh -d -a arm64
- name: Download and extract deps
working-directory: ${{ github.workspace }}
run: |
curl -LJO https://github.com/SoftFever/FileSharing/releases/download/OrcaSlicer_deps_Mar/OrcaSlicer_dep_mac_arm64_11-03-2023.tar.gz
tar -zxf OrcaSlicer_dep_mac_arm64_11-03-2023.tar.gz -C ${{ github.workspace }}/deps/build_arm64
chown -R $(id -u):$(id -g) ${{ github.workspace }}/deps/build_arm64/OrcaSlicer_dep_arm64
ls -l ${{ github.workspace }}/deps/build_arm64/OrcaSlicer_dep_arm64
rm OrcaSlicer_dep_mac_arm64_11-03-2023.tar.gz
- name: Build studio
working-directory: ${{ github.workspace }}
run: |
./build_release_macos.sh -s -n -a arm64
- name: Sign app
working-directory: ${{ github.workspace }}
if: github.event_name != 'pull_request'
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
CERTIFICATE_ID: ${{ secrets.MACOS_CERTIFICATE_ID }}
run: |
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode --output $CERTIFICATE_PATH
security create-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH
security import $CERTIFICATE_PATH -P $P12_PASSWORD -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $P12_PASSWORD $KEYCHAIN_PATH
codesign --deep --force --verbose --sign "$CERTIFICATE_ID" ${{ github.workspace }}/build_arm64/OrcaSlicer/OrcaSlicer.app
- name: Pack app
working-directory: ${{ github.workspace }}
run: |
export ver=$(grep '^#define SoftFever_VERSION' ./build_arm64/src/libslic3r/libslic3r_version.h | cut -d ' ' -f3)
ver="_V${ver//\"}"
cd ${{ github.workspace }}/build_arm64/OrcaSlicer
zip -FSrq OrcaSlicer${ver}_Mac_AppleSilicon_signed.zip ./OrcaSlicer.app
# (wip: staple failed, error 65)
# - name: Notarize the app
# run: |
# cd ${{ github.workspace }}/build_arm64/OrcaSlicer
# xcrun notarytool store-credentials "notarytool-profile" --apple-id "${{ secrets.APPLE_DEV_ACCOUNT }}" --team-id "${{ secrets.TEAM_ID }}" --password "${{ secrets.APP_PWD }}"
# ditto -c -k --keepParent "OrcaSlicer.app" "OrcaSlicer.zip"
# xcrun notarytool submit "OrcaSlicer.zip" --keychain-profile "notarytool-profile" --wait
# xcrun stapler staple OrcaSlicer.app
# zip -FSrq OrcaSlicer_Mac_notarized.zip OrcaSlicer.app
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: OrcaSlicer_Mac_AppleSilicon
path: ${{ github.workspace }}/build_arm64/OrcaSlicer/OrcaSlicer*.zip

View File

@@ -1,110 +0,0 @@
name: Build Mac Intel
on:
push:
branches:
- main
paths:
- 'src/**'
- 'deps/**'
- '**/CMakeLists.txt'
- 'version.inc'
- 'bbl/**'
- 'resources/**'
pull_request:
branches:
- main
paths:
- 'src/**'
- 'deps/**'
- '**/CMakeLists.txt'
- 'version.inc'
- 'bbl/**'
- 'resources/**'
jobs:
build_osx_x86_64:
name: Build Mac Intel
runs-on: macos-12
steps:
- uses: actions/checkout@v3
- name: Install tools
run: |
brew install cmake git gettext
- run: mkdir -p ${{ github.workspace }}/deps/build_x86_64
- run: mkdir -p ${{ github.workspace }}/deps/build_x86_64/OrcaSlicer_dep_x86_64
# - name: build deps
# id: cache_deps
# uses: actions/cache@v3
# env:
# cache-name: ${{ runner.os }}-cache-orcaslicer_deps_x64
# with:
# path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep
# key: build-${{ env.cache-name }}
# - if: ${{ steps.cache_deps.outputs.cache-hit != 'true' }}
# name: build deps
# working-directory: ${{ github.workspace }}
# continue-on-error: true
# run: ./build_release_macos.sh -d -a x86_64
- name: Download and extract deps
working-directory: ${{ github.workspace }}
run: |
curl -LJO https://github.com/SoftFever/FileSharing/releases/download/OrcaSlicer_deps_Mar/OrcaSlicer_dep_mac_x86_64_11-03-2023.tar.gz
tar -zxf OrcaSlicer_dep_mac_x86_64_11-03-2023.tar.gz -C ${{ github.workspace }}/deps/build_x86_64
chown -R $(id -u):$(id -g) ${{ github.workspace }}/deps/build_x86_64/OrcaSlicer_dep_x86_64
ls -l ${{ github.workspace }}/deps/build_x86_64/OrcaSlicer_dep_x86_64
rm OrcaSlicer_dep_mac_x86_64_11-03-2023.tar.gz
- name: Build studio
working-directory: ${{ github.workspace }}
run: ./build_release_macos.sh -s -n -a x86_64
- name: Sign app
working-directory: ${{ github.workspace }}
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
CERTIFICATE_ID: ${{ secrets.MACOS_CERTIFICATE_ID }}
if: github.event_name != 'pull_request'
run: |
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode --output $CERTIFICATE_PATH
security create-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH
security import $CERTIFICATE_PATH -P $P12_PASSWORD -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $P12_PASSWORD $KEYCHAIN_PATH
codesign --deep --force --verbose --sign "$CERTIFICATE_ID" ${{ github.workspace }}/build_x86_64/OrcaSlicer/OrcaSlicer.app
- name: pack app
working-directory: ${{ github.workspace }}
run: |
export ver=$(grep '^#define SoftFever_VERSION' ./build_x86_64/src/libslic3r/libslic3r_version.h | cut -d ' ' -f3)
ver="_V${ver//\"}"
cd ${{ github.workspace }}/build_x86_64/OrcaSlicer
zip -FSrq OrcaSlicer${ver}_Mac_Intel_signed.zip OrcaSlicer.app
# (wip: staple failed, error 65)
# - name: Notarize the app
# run: |
# xcrun notarytool store-credentials "notarytool-profile" --apple-id "${{ secrets.APPLE_DEV_ACCOUNT }}" --team-id "${{ secrets.TEAM_ID }}" --password "${{ secrets.APP_PWD }}"
# ditto -c -k --keepParent "OrcaSlicer.app" "OrcaSlicer.zip"
# xcrun notarytool submit "OrcaSlicer.zip" --keychain-profile "notarytool-profile" --wait
# xcrun stapler staple OrcaSlicer.app
# zip -FSrq OrcaSlicer_Mac_notarized.zip OrcaSlicer.app
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: OrcaSlicer_Mac_Intel
path: ${{ github.workspace }}/build_x86_64/OrcaSlicer/OrcaSlicer*.zip

286
.github/workflows/build_orca.yml vendored Normal file
View File

@@ -0,0 +1,286 @@
name: Build OrcaSlicer
on:
push:
branches:
- main
paths:
- 'src/**'
- '**/CMakeLists.txt'
- 'version.inc'
- 'localization/**'
- 'resources/**'
- ".github/workflows/build_orca.yml"
pull_request:
branches:
- main
paths:
- 'src/**'
- '**/CMakeLists.txt'
- 'version.inc'
- 'localization/**'
- 'resources/**'
- ".github/workflows/build_orca.yml"
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build_orca:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-20.04
- os: windows-2019
- os: macos-12
arch: x86_64
- os: macos-12
arch: arm64
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Get the version and date on Ubuntu and macOS
if: matrix.os != 'windows-2019'
id: get-version-unix
run: |
ver=$(grep 'set(SoftFever_VERSION' version.inc | cut -d '"' -f2)
echo "ver=$ver" >> $GITHUB_ENV
echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV
shell: bash
- name: Get the version and date on Windows
if: matrix.os == 'windows-2019'
id: get-version-windows
run: |
echo "date=$(Get-Date -Format 'yyyyMMdd')" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
# Extract the version from the file
$versionContent = Get-Content version.inc -Raw
if ($versionContent -match 'set\(SoftFever_VERSION "(.*?)"\)') {
$ver = $matches[1]
}
echo "ver=$ver" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
echo "date: ${{ env.date }} version: $ver"
shell: pwsh
# Mac
- name: Install tools mac
if: matrix.os == 'macos-12'
run: |
brew install cmake git gettext zstd
mkdir -p ${{ github.workspace }}/deps/build_${{matrix.arch}}
mkdir -p ${{ github.workspace }}/deps/build_${{matrix.arch}}/OrcaSlicer_dep_${{matrix.arch}}
# - name: build deps
# if: matrix.os == 'macos-12'
# id: cache_deps
# uses: actions/cache@v3
# env:
# cache-name: ${{ runner.os }}-cache-orcaslicer_deps_${{matrix.arch}}
# with:
# path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep
# key: build-${{ env.cache-name }}
# - if: ${{ steps.cache_deps.outputs.cache-hit != 'true' }}
# name: build deps
# working-directory: ${{ github.workspace }}
# continue-on-error: true
# run: ./build_release_macos.sh -d -a ${{matrix.arch}}
- name: Download and extract deps
if: matrix.os == 'macos-12'
working-directory: ${{ github.workspace }}
run: |
curl -LJO https://github.com/SoftFever/FileSharing/releases/download/2023.08.2/OrcaSlicer_dep_mac_${{matrix.arch}}_06-08-2023.tar.gz
tar -zxfOrcaSlicer_dep_mac_${{matrix.arch}}_06-08-2023.tar.gz -C ${{ github.workspace }}/deps/build_${{matrix.arch}}
chown -R $(id -u):$(id -g) ${{ github.workspace }}/deps/build_${{matrix.arch}}/OrcaSlicer_dep_${{matrix.arch}}
ls -l ${{ github.workspace }}/deps/build_${{matrix.arch}}/OrcaSlicer_dep_${{matrix.arch}}
rm OrcaSlicer_dep_mac_${{matrix.arch}}_06-08-2023.tar.gz
- name: Build slicer mac
if: matrix.os == 'macos-12'
working-directory: ${{ github.workspace }}
run: |
./build_release_macos.sh -s -n -a ${{matrix.arch}}
- name: Sign app
if: matrix.os == 'macos-12'
working-directory: ${{ github.workspace }}
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
CERTIFICATE_ID: ${{ secrets.MACOS_CERTIFICATE_ID }}
run: |
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode --output $CERTIFICATE_PATH
security create-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH
security import $CERTIFICATE_PATH -P $P12_PASSWORD -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $P12_PASSWORD $KEYCHAIN_PATH
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" ${{ github.workspace }}/build_${{matrix.arch}}/OrcaSlicer/OrcaSlicer.app
ln -s /Applications ${{ github.workspace }}/build_${{matrix.arch}}/OrcaSlicer/Applications
hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build_${{matrix.arch}}/OrcaSlicer -ov -format UDZO OrcaSlicer_Mac_${{matrix.arch}}_V${{ env.ver }}.dmg
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" OrcaSlicer_Mac_${{matrix.arch}}_V${{ env.ver }}.dmg
# Thanks to RaySajuuk, it's working now
- name: Notarize the app
if: matrix.os == 'macos-12'
working-directory: ${{ github.workspace }}
run: |
xcrun notarytool store-credentials "notarytool-profile" --apple-id "${{ secrets.APPLE_DEV_ACCOUNT }}" --team-id "${{ secrets.TEAM_ID }}" --password "${{ secrets.APP_PWD }}"
xcrun notarytool submit "OrcaSlicer_Mac_${{matrix.arch}}_V${{ env.ver }}.dmg" --keychain-profile "notarytool-profile" --wait
xcrun stapler staple OrcaSlicer_Mac_${{matrix.arch}}_V${{ env.ver }}.dmg
- name: Upload artifacts mac
if: matrix.os == 'macos-12'
uses: actions/upload-artifact@v3
with:
name: OrcaSlicer_Mac_${{matrix.arch}}_V${{ env.ver }}
path: ${{ github.workspace }}/OrcaSlicer_Mac_${{matrix.arch}}_V${{ env.ver }}.dmg
# Windows
- name: setup MSVC
if: matrix.os == 'windows-2019'
uses: microsoft/setup-msbuild@v1.1
- name: Install nsis
if: matrix.os == 'windows-2019'
run: |
choco install nsis
- name: download deps
if: matrix.os == 'windows-2019'
shell: powershell
run: '(new-object System.Net.WebClient).DownloadFile("https://github.com/SoftFever/FileSharing/releases/download/4/OrcaSlicer_dep_18Jul2023.zip", "$env:temp\OrcaSlicer_dep_18Jul2023.zip")'
- name: maker dir
if: matrix.os == 'windows-2019'
working-directory: ${{ github.workspace }}
run: |
mkdir ${{ github.workspace }}/deps/build
mkdir ${{ github.workspace }}/deps/build/OrcaSlicer_dep
- name: extract deps
if: matrix.os == 'windows-2019'
working-directory: ${{ github.workspace }}/deps/build
shell: cmd
run: '"C:/Program Files/7-Zip/7z.exe" x %temp%\OrcaSlicer_dep_18Jul2023.zip'
# - name: build deps
# if: matrix.os == 'windows-2019'
# id: cache_deps
# uses: actions/cache@v3
# env:
# cache-name: ${{ runner.os }}-cache-orcaslicer_deps
# with:
# path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep
# key: ${{ runner.os }}-build-${{ env.cache-name }}
# - if: ${{ steps.cache_deps.outputs.cache-hit != 'true' }}
# name: build deps
# working-directory: ${{ github.workspace }}
# continue-on-error: true
# run: .\build_release_vs2022.bat deps
# - run: Get-ChildItem ${{ github.workspace }}/deps/build/ -Exclude OrcaSlicer_dep | Remove-Item -Recurse -Force
- name: Build slicer Win
if: matrix.os == 'windows-2019'
working-directory: ${{ github.workspace }}
run: .\build_release.bat slicer
- name: Create installer Win
if: matrix.os == 'windows-2019'
working-directory: ${{ github.workspace }}/build
run: cpack -G NSIS
# - name: pack app
# if: matrix.os == 'windows-2019'
# working-directory: ${{ github.workspace }}/build
# shell: cmd
# run: '"C:/Program Files/7-Zip/7z.exe" a -tzip OrcaSlicer_dev_build.zip ${{ github.workspace }}/build/OrcaSlicer'
- name: Upload artifacts Win zip
if: matrix.os == 'windows-2019'
uses: actions/upload-artifact@v3
with:
name: OrcaSlicer_Windows_V${{ env.ver }}_portable
path: ${{ github.workspace }}/build/OrcaSlicer
- name: Upload artifacts Win installer
if: matrix.os == 'windows-2019'
uses: actions/upload-artifact@v3
with:
name: OrcaSlicer_Windows_V${{ env.ver }}
path: ${{ github.workspace }}/build/OrcaSlicer*.exe
# Ubuntu
- name: Install dependencies
if: matrix.os == 'ubuntu-20.04'
run: |
sudo apt-get update
sudo apt-get install -y autoconf build-essential cmake curl eglexternalplatform-dev \
extra-cmake-modules file git libcairo2-dev libcurl4-openssl-dev libdbus-1-dev libglew-dev libglu1-mesa-dev \
libglu1-mesa-dev libgstreamer1.0-dev libgstreamerd-3-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev \
libgtk-3-dev libgtk-3-dev libmspack-dev libosmesa6-dev libsecret-1-dev libsoup2.4-dev libssl-dev libudev-dev libwayland-dev \
libwebkit2gtk-4.0-dev libxkbcommon-dev locales locales-all m4 pkgconf sudo wayland-protocols wget
- name: Install dependencies from BuildLinux.sh
if: matrix.os == 'ubuntu-20.04'
shell: bash
run: sudo ./BuildLinux.sh -ur
- name: Fix permissions
if: matrix.os == 'ubuntu-20.04'
shell: bash
run: sudo chown $USER -R ./
# - name: Build deps
# if: matrix.os == 'ubuntu-20.04'
# id: cache_deps
# uses: actions/cache@v3
# env:
# cache-name: ${{ runner.os }}-cache-orcaslicer_deps_x64
# with:
# path: ${{ github.workspace }}/deps/build/destdir
# key: build-${{ env.cache-name }}
# - if: ${{ steps.cache_deps.outputs.cache-hit != 'true' }}
# name: Build deps
# working-directory: ${{ github.workspace }}
# continue-on-error: true
# run: ./BuildLinux.sh -dr
- name: Download and extract deps
if: matrix.os == 'ubuntu-20.04'
working-directory: ${{ github.workspace }}
run: |
mkdir -p ${{ github.workspace }}/deps/build
mkdir -p ${{ github.workspace }}/deps/build/destdir
curl -LJO https://github.com/SoftFever/FileSharing/releases/download/2023.08/OrcaSlicer_dep_ubuntu_02-08-2023.tar.gz
tar -zxf OrcaSlicer_dep_ubuntu_02-08-2023.tar.gz -C ${{ github.workspace }}/deps/build
chown -R $(id -u):$(id -g) ${{ github.workspace }}/deps/build/destdir
ls -l ${{ github.workspace }}/deps/build/destdir
rm OrcaSlicer_dep_ubuntu_02-08-2023.tar.gz
- name: Build slicer
if: matrix.os == 'ubuntu-20.04'
shell: bash
run: |
./BuildLinux.sh -isr
chmod +x ./build/OrcaSlicer_ubu64.AppImage
- name: Upload artifacts Ubuntu
if: matrix.os == 'ubuntu-20.04'
uses: actions/upload-artifact@v3
with:
name: OrcaSlicer_Linux_V${{ env.ver }}
path: './build/OrcaSlicer_ubu64.AppImage'

View File

@@ -1,79 +0,0 @@
name: Build Win64
on:
push:
branches:
- main
paths:
- 'src/**'
- 'deps/**'
- '**/CMakeLists.txt'
- 'version.inc'
- 'bbl/**'
- 'resources/**'
pull_request:
branches:
- main
paths:
- 'src/**'
- 'deps/**'
- '**/CMakeLists.txt'
- 'version.inc'
- 'bbl/**'
- 'resources/**'
jobs:
build_win64:
name: Build Win64
runs-on: windows-2019
steps:
- uses: actions/checkout@v3
- uses: ilammy/msvc-dev-cmd@v1
- name: Install perl
run: |
choco install strawberryperl
- run: mkdir ${{ github.workspace }}/deps/build
- run: mkdir ${{ github.workspace }}/deps/build/OrcaSlicer_dep
- name: download deps
shell: powershell
run: '(new-object System.Net.WebClient).DownloadFile("https://github.com/SoftFever/FileSharing/releases/download/OrcaSlicer_deps_Mar/OrcaSlicer_dep_05May2023.zip", "$env:temp\OrcaSlicer_dep_05May2023.zip")'
- name: extract deps
working-directory: ${{ github.workspace }}/deps/build
shell: cmd
run: '"C:/Program Files/7-Zip/7z.exe" x %temp%\OrcaSlicer_dep_05May2023.zip'
- run: dir "${{ github.workspace }}\deps\build\OrcaSlicer_dep"
# - name: build deps
# id: cache_deps
# uses: actions/cache@v3
# env:
# cache-name: ${{ runner.os }}-cache-orcaslicer_deps
# with:
# path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep
# key: ${{ runner.os }}-build-${{ env.cache-name }}
# - if: ${{ steps.cache_deps.outputs.cache-hit != 'true' }}
# name: build deps
# working-directory: ${{ github.workspace }}
# continue-on-error: true
# run: .\build_release.bat deps
# - run: Get-ChildItem ${{ github.workspace }}/deps/build/ -Exclude OrcaSlicer_dep | Remove-Item -Recurse -Force
- name: Build studio
working-directory: ${{ github.workspace }}
run: .\build_release.bat studio
# - name: pack app
# working-directory: ${{ github.workspace }}/build
# shell: cmd
# run: '"C:/Program Files/7-Zip/7z.exe" a -tzip OrcaSlicer_dev_build.zip ${{ github.workspace }}/build/OrcaSlicer'
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: OrcaSlicer_Win64_nightly
path: ${{ github.workspace }}/build/OrcaSlicer

6
.gitignore vendored
View File

@@ -18,9 +18,11 @@ local-lib
/src/TAGS
/.vscode/
build-linux/*
deps/build-linux/*
deps/build*/*
**/.DS_Store
install_*
build_*/
SVG
src/OrcaSlicer-doc/
src/OrcaSlicer-doc/
.idea/
/.cache/

View File

@@ -1,103 +0,0 @@
{
"build_systems":
[
{
"name": "List",
//"file_regex": " at ([^-\\s]*) line ([0-9]*)",
// "file_regex": " at (D\\:\\/src\\/Slic3r\\/.*?) line ([0-9]*)",
"shell_cmd": "ls -l"
},
{
"name": "Run",
"working_dir": "$project_path",
"file_regex": " at (.*?) line ([0-9]*)",
// "shell_cmd": "chdir & perl slic3r.pl --DataDir \"C:\\Users\\Public\\Documents\\Prusa3D\\Slic3r settings MK2\" --gui \"..\\Slic3r-tests\\gap fill torture 20 -rt.stl\""
"shell_cmd": "chdir & perl slic3r.pl"
},
{
"name": "full",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"shell_cmd": "chdir & perl Build.pl"
},
{
"name": "xs",
"working_dir": "$project_path/build",
// for Visual Studio:
"file_regex": "^(..[^:]*)\\(([0-9]+)\\)(.*)$",
// For GCC:
// "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"shell_cmd": "chdir & ninja -j 6 -v",
"env": {
// "PATH": "C:\\Program Files (x86)\\MSBuild\\12.0\\bin\\amd64;C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\BIN\\amd64;C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\IDE;C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\Tools;%PATH%;c:\\wperl64d\\site\\bin;c:\\wperl64d\\bin",
// "PERL_CPANM_HOME": "c:\\wperl64d\\cpanm",
// "WXDIR": "D:\\src-perl\\wxWidgets-3.0.3-beta1",
// "BOOST_DIR": "D:\\src-perl\\boost_1_61_0",
// "BOOST_INCLUDEDIR": "D:\\src-perl\\boost_1_61_0",
// "BOOST_LIBRARYDIR": "D:\\src-perl\\boost_1_61_0\\stage\\x64\\lib",
// "SLIC3R_STATIC": "1"
}
},
{
"name": "xs & run",
"working_dir": "$project_path/build",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"shell_cmd": "chdir & ninja -j 6 & cd .. & perl slic3r.pl --gui \"..\\Slic3r-tests\\star3-big2.stl\""
},
{
"name": "Slic3r - clean",
"working_dir": "$project_path/build",
"file_regex": "^(..[^:]*)(?::|\\()([0-9]+)(?::|\\))(?:([0-9]+):)?\\s*(.*)",
"shell_cmd": ["chdir & ninja clean"]
},
{
"name": "run tests",
"working_dir": "$project_path/build",
// for Visual Studio:
"file_regex": "^(..[^:]*)\\(([0-9]+)\\)(.*)$",
"shell_cmd": "chdir & ctest --verbose"
},
{
"name": "Clean & Configure",
"working_dir": "$project_path",
// for Visual Studio:
"file_regex": "^(..[^:]*)(?::|\\()([0-9]+)(?::|\\))(?:([0-9]+):)?\\s*(.*)",
"shell_cmd": "chdir & rmdir /S /Q build & mkdir build & cd build & cmake -G Ninja .. -DCMAKE_COLOR_MAKEFILE=OFF -DCMAKE_RULE_PROGRESS=OFF -DCMAKE_RULE_MESSAGES=OFF -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo"
},
{
"name": "Configure",
"working_dir": "$project_path/build",
// for Visual Studio:
"file_regex": "^(..[^:]*)(?::|\\()([0-9]+)(?::|\\))(?:([0-9]+):)?\\s*(.*)",
"shell_cmd": "cmake -G Ninja .. -DCMAKE_COLOR_MAKEFILE=OFF -DCMAKE_RULE_PROGRESS=OFF -DCMAKE_RULE_MESSAGES=OFF -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo"
}
],
"folders":
[
{
"path": ".",
// "folder_exclude_patterns": [".svn", "._d", ".metadata", ".settings"],
"file_exclude_patterns": ["XS.c", "*.pch", "*.ilk", "*.js" ]
}
],
"settings":
{
"sublimegdb_workingdir": "${folder:${project_path:run}}",
// NOTE: You MUST provide --interpreter=mi for the plugin to work
// "sublimegdb_commandline": "D:\\Qt\\Tools\\mingw492_32\\bin\\gdb.exe --interpreter=mi -ex 'target localhost:2345'",
// "sublimegdb_commandline": "D:\\Qt\\Tools\\mingw492_32\\bin\\gdb.exe --interpreter=mi perl --args perl slic3r.pl",
// "sublimegdb_commandline": "D:\\Qt\\Tools\\mingw492_32\\bin\\gdb.exe --interpreter=mi perl --args slic3r.pl ",
// "sublimegdb_commandline": "D:\\Qt\\Tools\\mingw492_32\\bin\\gdb.exe --interpreter=mi -e C:\\Strawberry\\perl\\bin\\perl.exe -s C:\\Strawberry\\perl\\site\\lib\\auto\\Slic3r\\XS\\XS.xs.dll --args perl slic3r.pl -j 1 --gui D:\\src\\Slic3r-tests\\star3-big.stl",
"sublimegdb_commandline": "D:\\Qt\\Tools\\mingw492_32\\bin\\gdb.exe --interpreter=mi perl.exe --args perl slic3r.pl -j 1 --gui", // D:\\src\\Slic3r-tests\\star3-big.stl",
// "sublimegdb_commandline": "D:\\Qt\\Tools\\mingw492_32\\bin\\gdb.exe --interpreter=mi -x slic3r.gdb",
// "arguments": "slic3r -j 1 --gui ../Slic3r-tests/star3-big.stl",
// "arguments": "../slic3r.pl -j 1 --gui",
// "sublimegdb_exec_cmd": "-exec-continue",
// Add "pending breakpoints" for symbols that are dynamically loaded from
// external shared libraries
"debug_ext" : true,
"run_after_init": false,
"close_views": false
}
}

View File

@@ -40,7 +40,7 @@ while getopts ":dsiuhgbr" opt; do
BUILD_DEPS="1"
;;
s )
BUILD_BAMBU_STUDIO="1"
BUILD_ORCA="1"
;;
b )
BUILD_DEBUG="1"
@@ -87,7 +87,7 @@ then
mkdir build
fi
# Addtional Dev packages for BambuStudio
# Addtional Dev packages for OrcaSlicer
export REQUIRED_DEV_PACKAGES="libmspack-dev libgstreamerd-3-dev libsecret-1-dev libwebkit2gtk-4.0-dev libosmesa6-dev libssl-dev libcurl4-openssl-dev eglexternalplatform-dev libudev-dev libdbus-1-dev extra-cmake-modules"
# libwebkit2gtk-4.1-dev ??
export DEV_PACKAGES_COUNT=$(echo ${REQUIRED_DEV_PACKAGES} | wc -w)
@@ -212,7 +212,7 @@ then
echo "done"
fi
if [[ -n "$BUILD_BAMBU_STUDIO" ]]
if [[ -n "$BUILD_ORCA" ]]
then
echo "[7/9] Configuring Slic3r..."
BUILD_ARGS=""

View File

@@ -42,7 +42,6 @@ set(SLIC3R_GTK "2" CACHE STRING "GTK version to use with wxWidgets on Linux")
set(IS_CROSS_COMPILE FALSE)
if (APPLE)
set(CMAKE_FIND_FRAMEWORK LAST)
set(CMAKE_FIND_APPBUNDLE LAST)
@@ -406,6 +405,7 @@ if(SLIC3R_STATIC)
set(TBB_STATIC 1)
endif()
set(TBB_DEBUG 1)
set(CMAKE_MAP_IMPORTED_CONFIG_RELWITHDEBINFO RelWithDebInfo Release "")
find_package(TBB REQUIRED)
# include_directories(${TBB_INCLUDE_DIRS})
# add_definitions(${TBB_DEFINITIONS})
@@ -502,10 +502,14 @@ find_package(glfw3 REQUIRED)
# Find the Cereal serialization library
find_package(cereal REQUIRED)
set_target_properties(cereal PROPERTIES IMPORTED_GLOBAL TRUE)
if (NOT TARGET cereal::cereal)
add_library(cereal::cereal ALIAS cereal)
endif ()
# l10n
set(L10N_DIR "${SLIC3R_RESOURCES_DIR}/i18n")
set(BBL_L18N_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bbl/i18n")
set(BBL_L18N_DIR "${CMAKE_CURRENT_SOURCE_DIR}/localization/i18n")
add_custom_target(gettext_make_pot
COMMAND xgettext --keyword=L --keyword=_L --keyword=_u8L --keyword=L_CONTEXT:1,2c --keyword=_L_PLURAL:1,2 --add-comments=TRN --from-code=UTF-8 --no-location --debug --boost
-f "${BBL_L18N_DIR}/list.txt"
@@ -563,6 +567,20 @@ else ()
"OpenVDB installation with the OPENVDB_FIND_MODULE_PATH cache variable.")
endif ()
find_path(SPNAV_INCLUDE_DIR spnav.h)
if (SPNAV_INCLUDE_DIR)
find_library(HAVE_SPNAV spnav)
if (HAVE_SPNAV)
add_definitions(-DHAVE_SPNAV)
add_library(libspnav SHARED IMPORTED)
target_link_libraries(libspnav INTERFACE spnav)
message(STATUS "SPNAV library found")
else()
message(STATUS "SPNAV library NOT found, Spacenavd not supported")
endif()
else()
message(STATUS "SPNAV library NOT found, Spacenavd not supported")
endif()
set(TOP_LEVEL_PROJECT_DIR ${PROJECT_SOURCE_DIR})
function(orcaslicer_copy_dlls target config postfix output_dlls)
@@ -694,7 +712,10 @@ endif()
# Resources install target, configure fhs.hpp on UNIX
if (WIN32)
install(DIRECTORY "${SLIC3R_RESOURCES_DIR}/" DESTINATION "${CMAKE_INSTALL_PREFIX}/resources")
install(DIRECTORY "${SLIC3R_RESOURCES_DIR}/" DESTINATION "./resources")
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
include(InstallRequiredSystemLibraries)
install (PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION ".")
elseif (SLIC3R_FHS)
# CMAKE_INSTALL_FULL_DATAROOTDIR: read-only architecture-independent data root (share)
set(SLIC3R_FHS_RESOURCES "${CMAKE_INSTALL_FULL_DATAROOTDIR}/OrcaSlicer")
@@ -703,8 +724,8 @@ elseif (SLIC3R_FHS)
)
install(FILES src/platform/unix/OrcaSlicer.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications)
foreach(SIZE 32 128 192)
install(FILES ${SLIC3R_RESOURCES_DIR}/images/BambuStudio_${SIZE}px.png
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/${SIZE}x${SIZE}/apps RENAME BambuStudio.png
install(FILES ${SLIC3R_RESOURCES_DIR}/images/OrcaSlicer_${SIZE}px.png
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/${SIZE}x${SIZE}/apps RENAME OrcaSlicer.png
)
endforeach()
elseif (CMAKE_MACOSX_BUNDLE)
@@ -714,4 +735,34 @@ else ()
install(DIRECTORY "${SLIC3R_RESOURCES_DIR}/" DESTINATION "${CMAKE_INSTALL_PREFIX}/resources")
endif ()
install(FILES ${CMAKE_SOURCE_DIR}/LICENSE.txt DESTINATION ".")
configure_file(${LIBDIR}/platform/unix/fhs.hpp.in ${LIBDIR_BIN}/platform/unix/fhs.hpp)
set (CPACK_PACKAGE_NAME "OrcaSlicer")
set (CPACK_PACKAGE_VENDOR "SoftFever")
set (CPACK_PACKAGE_VERSION_MAJOR "${ORCA_VERSION_MAJOR}")
set (CPACK_PACKAGE_VERSION_MINOR "${ORCA_VERSION_MINOR}")
set (CPACK_PACKAGE_VERSION_PATCH "${ORCA_VERSION_PATCH}")
set (CPACK_PACKAGE_FILE_NAME "OrcaSlicer_Windows_${SoftFever_VERSION}")
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Orca Slicer is an open source slicer for FDM printers")
set (CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/SoftFever/OrcaSlicer")
set (CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME})
set (CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/resources/images\\\\OrcaSlicer.ico")
set (CPACK_NSIS_MUI_ICON "${CPACK_PACKAGE_ICON}")
set (CPACK_NSIS_MUI_UNIICON "${CPACK_PACKAGE_ICON}")
set (CPACK_NSIS_INSTALLED_ICON_NAME "$INSTDIR\\\\orca-slicer.exe")
set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
CreateShortCut \\\"$DESKTOP\\\\OrcaSlicer.lnk\\\" \\\"$INSTDIR\\\\orca-slicer.exe\\\"
")
set (CPACK_PACKAGE_CHECKSUM SHA256)
set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "OrcaSlicer")
set (CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
set (CPACK_NSIS_EXECUTABLES_DIRECTORY ".")
# set (CPACK_NSIS_MODIFY_PATH "ON")
set(CPACK_PACKAGE_EXECUTABLES "orca-slicer;OrcaSlicer")
set(CPACK_CREATE_DESKTOP_LINKS "orca-slicer")
set (CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE.txt) # must also include in install command
set(CPACK_WIX_UPGRADE_GUID "058245e8-20e0-4a95-9ab7-1acfe17ad511")
set(CPACK_GENERATOR NSIS)
include(CPack)

View File

@@ -1,71 +0,0 @@
# Build Bambu Slicer in a container
#
# Build an AppImage using rootless Podman (refer to https://github.com/containers/podman/blob/main/docs/tutorials/rootless_tutorial.md):
# rm -rf build; podman build . -t orca-slicer-builder && podman run --rm localhost/orca-slicer-builder /bin/bash -c 'tar -c $(find build | grep ubu64.AppImage | head -1)' | tar -xv
#
# Troubleshooting the build container:
# podman run -it --name orca-slicer-builder localhost/orca-slicer-builder /bin/bash
#
# Debugging the resulting AppImage:
# 1) Install `gdb`
# 2) In a terminal in the same directory as the AppImage, start it with following:
# echo -e "run\nbt\nquit" | gdb ./BambuStudio_ubu64.AppImage
# 3) Find related issue using backtrace output for clues and add backtrace to it on github
#
# Docker alternative AppImage build syntax (use this if you can't install podman):
# rm -rf build; docker build . --file Containerfile -t orca-slicer-builder; docker run --rm orca-slicer-builder /bin/bash -c 'tar -c $(find build | grep ubu64.AppImage | head -1)' | tar -xv
#
#
# TODO: bind mount OrcaSlicer to inside the container instead of COPY to enable faster rebuilds during dev work.
FROM docker.io/ubuntu:20.04
LABEL maintainer "DeftDawg <DeftDawg@gmail.com>"
# Disable interactive package configuration
RUN apt-get update && \
echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
# Add a deb-src
RUN echo deb-src http://archive.ubuntu.com/ubuntu \
$(cat /etc/*release | grep VERSION_CODENAME | cut -d= -f2) main universe>> /etc/apt/sources.list
RUN apt-get update && apt-get install -y \
git \
build-essential \
autoconf pkgconf m4 \
cmake extra-cmake-modules \
libglu1-mesa-dev libglu1-mesa-dev \
libwayland-dev libxkbcommon-dev wayland-protocols \
eglexternalplatform-dev libglew-dev \
libgtk-3-dev \
libdbus-1-dev \
libcairo2-dev \
libgtk-3-dev libwebkit2gtk-4.0-dev \
libsoup2.4-dev \
libgstreamer1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-base1.0-dev libgstreamerd-3-dev \
libmspack-dev \
libosmesa6-dev \
libssl-dev libcurl4-openssl-dev libsecret-1-dev \
libudev-dev \
curl \
wget \
file \
sudo
COPY ./ OrcaSlicer
WORKDIR OrcaSlicer
# These can run together, but we run them seperate for podman caching
# Update System dependencies
RUN ./BuildLinux.sh -u
# Build dependencies in ./deps
RUN ./BuildLinux.sh -d
# Build slic3r
RUN ./BuildLinux.sh -s
# Build AppImage
ENV container podman
RUN ./BuildLinux.sh -i

View File

@@ -1,15 +0,0 @@
#!/bin/bash
PROJECT_ROOT=$(cd -P -- "$(dirname -- "$0")" && printf '%s\n' "$(pwd -P)")
set -x
# Wishlist hint: For developers, creating a Docker Compose
# setup with persistent volumes for the build & deps directories
# would speed up recompile times significantly. For end users,
# the simplicity of a single Docker image and a one-time compilation
# seems better.
docker build -t bambustudio \
--build-arg USER=$USER \
--build-arg UID=$(id -u) \
--build-arg GID=$(id -g) \
$PROJECT_ROOT

View File

@@ -1,25 +0,0 @@
#!/bin/bash
set -x
# Just in case, here's some other things that might help:
# Force the container's hostname to be the same as your workstation
# -h $HOSTNAME \
# If there's problems with the X display, try this
# -v /tmp/.X11-unix:/tmp/.X11-unix \
docker run \
`# Use the hosts networking. Printer wifi and also dbus communication` \
--net=host \
`# Some X installs will not have permissions to talk to sockets for shared memory` \
--ipc host \
`# Run as your workstations username to keep permissions the same` \
-u $USER \
`# Bind mount your home directory into the container for loading/saving files` \
-v $HOME:/home/$USER \
`# Pass the X display number to the container` \
-e DISPLAY=$DISPLAY \
`# It seems that libGL and dbus things need privileged mode` \
--privileged=true \
`# Attach tty for running bambu with command line things` \
-ti \
`# Pass all parameters from this script to the bambu ENTRYPOINT binary` \
bambustudio $*

View File

@@ -1,94 +0,0 @@
FROM docker.io/ubuntu:20.04
LABEL maintainer "DeftDawg <DeftDawg@gmail.com>"
# Disable interactive package configuration
RUN apt-get update && \
echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
# Add a deb-src
RUN echo deb-src http://archive.ubuntu.com/ubuntu \
$(cat /etc/*release | grep VERSION_CODENAME | cut -d= -f2) main universe>> /etc/apt/sources.list
RUN apt-get update && apt-get install -y \
autoconf \
build-essential \
cmake \
curl \
eglexternalplatform-dev \
extra-cmake-modules \
file \
git \
gstreamer1.0-plugins-bad \
gstreamer1.0-libav \
libcairo2-dev \
libcurl4-openssl-dev \
libdbus-1-dev \
libglew-dev \
libglu1-mesa-dev \
libglu1-mesa-dev \
libgstreamer1.0-dev \
libgstreamerd-3-dev \
libgstreamer-plugins-base1.0-dev \
libgstreamer-plugins-good1.0-dev \
libgtk-3-dev \
libgtk-3-dev \
libmspack-dev \
libosmesa6-dev \
libsecret-1-dev \
libsoup2.4-dev \
libssl-dev \
libudev-dev \
libwayland-dev \
libwebkit2gtk-4.0-dev \
libxkbcommon-dev \
locales \
locales-all \
m4 \
pkgconf \
sudo \
wayland-protocols \
wget
# Change your locale here if you want. See the output
# of `locale -a` to pick the correct string formatting.
ENV LC_ALL=en_US.utf8
RUN locale-gen $LC_ALL
# Set this so that Orca Slicer doesn't complain about
# the CA cert path on every startup
ENV SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
COPY ./ BambuStudio
WORKDIR BambuStudio
# These can run together, but we run them seperate for podman caching
# Update System dependencies
RUN ./BuildLinux.sh -u
# Build dependencies in ./deps
RUN ./BuildLinux.sh -d
# Build slic3r
RUN ./BuildLinux.sh -s
# Build AppImage
ENV container podman
RUN ./BuildLinux.sh -i
# It's easier to run Orca Slicer as the same username,
# UID and GID as your workstation. Since we bind mount
# your home directory into the container, it's handy
# to keep permissions the same. Just in case, defaults
# are root.
SHELL ["/bin/bash", "-l", "-c"]
ARG USER=root
ARG UID=0
ARG GID=0
RUN [[ "$UID" != "0" ]] \
&& groupadd -g $GID $USER \
&& useradd -u $UID -g $GID $USER
# Using an entrypoint instead of CMD because the binary
# accepts several command line arguments.
ENTRYPOINT ["/BambuStudio/build/package/bin/orca-slicer"]

View File

@@ -4,14 +4,10 @@
[![Build Mac Intel](https://github.com/SoftFever/OrcaSlicer/actions/workflows/build_mac_x64.yml/badge.svg)](https://github.com/SoftFever/OrcaSlicer/actions/workflows/build_mac_x64.yml)
[![Build Linux](https://github.com/SoftFever/OrcaSlicer/actions/workflows/build_linux.yml/badge.svg)](https://github.com/SoftFever/OrcaSlicer/actions/workflows/build_linux.yml)
# Orca Slicer
Orca Slicer is a fork of Bambu Studio. It was previously known as BambuStudio-SoftFever.
Bambu Studio is based on [PrusaSlicer](https://github.com/prusa3d/PrusaSlicer) by Prusa Research, which is from [Slic3r](https://github.com/Slic3r/Slic3r) by Alessandro Ranellucci and the RepRap community.
Orca Slicer incorporates a lot of features from SuperSlicer by @supermerill
Prebuilt binaries are available through the [github releases page](https://github.com/SoftFever/OrcaSlicer/releases/).
# Orca Slicer
Orca Slicer is an open source slicer for FDM printers.
You can download Orca Slicer here: [github releases page](https://github.com/SoftFever/OrcaSlicer/releases/).
![discord-mark-blue](https://github.com/SoftFever/OrcaSlicer/assets/103989404/b97d5ffc-072d-4d0a-bbda-e67ef373876f) Join community: [OrcaSlicer Official Discord Server](https://discord.gg/WTEkCR6SnV)
# Main features
- Auto calibrations for all printers
@@ -21,6 +17,13 @@ Prebuilt binaries are available through the [github releases page](https://githu
- More granular controls
- More features can be found in [change notes](https://github.com/SoftFever/OrcaSlicer/releases/)
### Some background
OrcaSlicer is fork of Bambu Studio
It was previously known as BambuStudio-SoftFever
Bambu Studio is forked from [PrusaSlicer](https://github.com/prusa3d/PrusaSlicer) by Prusa Research, which is from [Slic3r](https://github.com/Slic3r/Slic3r) by Alessandro Ranellucci and the RepRap community.
Orca Slicer incorporates a lot of features from SuperSlicer by @supermerill
Orca Slicer's logo is designed by community member Justin Levine(@freejstnalxndr)
# How to install
**Windows**:
1. Unzip the binaries to any folder you prefer, then execute orca-slicer.exe to start the application.
@@ -33,12 +36,16 @@ Prebuilt binaries are available through the [github releases page](https://githu
2. Double click to unzip the package, move OrcaSlicer.app to Application folder.
3. The app is signed but not notarized at the moment due to the proptiery network plugin.
We have two options to make it run on our machines
- Option 1:
- Option 1 (You only need to do this once. After that the app can be oppened normally.):
- Step 1: Hold _cmd_ and right click the app, from the context menu choose **Open**.
- Step 2: A warning window will pop up, click _Open_
- Option 2:
Execute this command in terminal: `xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app`
```console
softfever@mac:~$ xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app
```
- Option 2:
- Option 3:
- Step 1: open the app, a warning window will pop up
![image](./SoftFever_doc/mac_cant_open.png)
- Step 2: in `System Settings` -> `Privacy & Security`, click `Open Anyway`:
@@ -82,5 +89,7 @@ Slic3r is licensed under the GNU Affero General Public License, version 3. Slic3
The GNU Affero General Public License, version 3 ensures that if you use any part of this software in any way (even behind a web server), your software must be released under the same license.
The bambu networking plugin is based on non-free libraries. It is optional to the Orca Slicer and provides extended functionalities for users.
Orca Slicer includes a pressure advance calibration pattern test adapted from Andrew Ellis' generator, which is licensed under GNU General Public License, version 3. Ellis' generator is itself adapted from a generator developed by Sineos for Marlin, which is licensed under GNU General Public License, version 3.
The bambu networking plugin is based on non-free libraries from Bambulab. It is optional to the Orca Slicer and provides extended functionalities for Bambulab printer users.

View File

@@ -1,4 +0,0 @@
# Add individual tools as executables in separate directories
add_subdirectory(bbs_gcode_checker)
install(TARGETS bbs_gcode_checker RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}")

View File

@@ -1,6 +0,0 @@
cmake_minimum_required (VERSION 3.8)
project ("bbs_gcode_checker")
add_executable (bbs_gcode_checker "main.cpp" "GCodeChecker.cpp" "GCodeChecker.h" )

View File

@@ -1,702 +0,0 @@
#include "GCodeChecker.h"
#include <fstream>
#include <math.h>
#include <map>
#include <string.h>
namespace BambuStudio {
//BBS: only check wodth when dE is longer than this value
const double CHECK_WIDTH_E_THRESHOLD = 0.0025;
const double WIDTH_THRESHOLD = 0.02;
const double RADIUS_THRESHOLD = 0.005;
const double filament_diameter = 1.75;
const double Pi = 3.14159265358979323846;
const std::string Extrusion_Role_Tag = " FEATURE: ";
const std::string Width_Tag = " LINE_WIDTH: ";
const std::string Wipe_Start_Tag = " WIPE_START";
const std::string Wipe_End_Tag = " WIPE_END";
const std::string Layer_Change_Tag = " CHANGE_LAYER";
const std::string Height_Tag = " LAYER_HEIGHT: ";
const std::string filament_flow_ratio_tag = " filament_flow_ratio";
const std::string nozzle_temperature_Tag = " nozzle_temperature =";
const std::string nozzle_temperature_initial_layer_Tag = " nozzle_temperature_initial_layer";
const std::string Z_HEIGHT_TAG = " Z_HEIGHT: ";
const std::string Initial_Layer_Ptint_Height_Tag = " initial_layer_print_height =";
GCodeCheckResult GCodeChecker::parse_file(const std::string& path)
{
std::ifstream file(path);
if (file.fail()) {
std::cout << "Failed to open file " << path << std::endl;
return GCodeCheckResult::ParseFailed;
}
std::string line_raw;
std::string line;
while (std::getline(file, line_raw)) {
const char *c = line_raw.c_str();
c = skip_whitespaces(c);
if (std::toupper(*c) == 'N')
c = skip_word(c);
c = skip_whitespaces(c);
line = c;
if (parse_line(line) != GCodeCheckResult::Success) {
std::cout << "Failed to parse line " << line_raw << std::endl;
return GCodeCheckResult::ParseFailed;
}
}
if (m_layer_num == 0) {
std::cout << "Invalid gcode file without layer change comment" << std::endl;
return GCodeCheckResult::ParseFailed;
}
return GCodeCheckResult::Success;
}
bool GCodeChecker::include_chinese(const char* str)
{
char c;
while(1)
{
c=*str++;
if (is_end_of_line(c))
break;
if ((c & 0x80) && (*str & 0x80))
return true;
}
return false;
}
GCodeCheckResult GCodeChecker::parse_line(const std::string& line)
{
// update start position
m_start_position = m_end_position;
GCodeCheckResult ret;
const char *c = skip_whitespaces(line.c_str());
if (include_chinese(c)) {
//chinese is forbidden
return GCodeCheckResult::ParseFailed;
} if (is_end_of_line(*c)) {
//BBS: skip empty line
return GCodeCheckResult::Success;
} else if (is_comment_line(*c)) {
GCodeLine gcode_line;
gcode_line.m_raw = c;
ret = parse_comment(gcode_line);
if (ret != GCodeCheckResult::Success)
return ret;
} else {
GCodeLine gcode_line;
gcode_line.m_raw = c;
ret = parse_command(gcode_line);
if (ret != GCodeCheckResult::Success)
return ret;
ret = check_line_width(gcode_line);
if (ret != GCodeCheckResult::Success)
return ret;
}
return GCodeCheckResult::Success;
}
GCodeCheckResult GCodeChecker::parse_comment(GCodeLine& line)
{
const char *c = line.m_raw.c_str();
c++;
std::string comment = c;
// extrusion role tag
if (starts_with(comment, Extrusion_Role_Tag)) {
m_role = string_to_role(comment.substr(Extrusion_Role_Tag.length()));
if (m_role == erExternalPerimeter) {
if (z_height == initial_layer_height && nozzle_temp != nozzle_temperature_initial_layer[filament_id]) {
std::cout << "invalid filament nozzle initial layer temperature comment with invalid value!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
if (z_height != initial_layer_height && nozzle_temp != nozzle_temperature[filament_id]) {
std::cout << "invalid filament nozzle temperature comment with invalid value!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
}
} else if (starts_with(comment, Wipe_Start_Tag)) {
m_wiping = true;
} else if (starts_with(comment, Wipe_End_Tag)) {
m_wiping = false;
} else if (starts_with(comment, Height_Tag)) {
std::string str = comment.substr(Height_Tag.size());
if (!parse_double_from_str(str, m_height)) {
std::cout << "invalid height comment with invalid value!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
} else if (starts_with(comment, Width_Tag)) {
std::string str = comment.substr(Width_Tag.size());
if (!parse_double_from_str(str, m_width)) {
std::cout << "invalid width comment with invalid value!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
} else if (starts_with(comment, Layer_Change_Tag)) {
m_layer_num++;
} else if (starts_with(comment, filament_flow_ratio_tag))
{
std::string str = comment.substr(filament_flow_ratio_tag.size()+3);
if (!parse_double_from_str(str, filament_flow_ratio))
{
std::cout << "invalid filament flow ratio comment with invalid value!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
}
else if (starts_with(comment, nozzle_temperature_Tag)) {
std::string str = comment.substr(nozzle_temperature_Tag.size() + 1);
if (!parse_double_from_str(str, nozzle_temperature)) {
std::cout << "invalid nozzle temperature comment with invalid value!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
}
else if (starts_with(comment, nozzle_temperature_initial_layer_Tag)) {
std::string str = comment.substr(nozzle_temperature_initial_layer_Tag.size() + 3);
if (!parse_double_from_str(str, nozzle_temperature_initial_layer)) {
std::cout << "invalid nozzle temperature initial layer comment with invalid value!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
} else if (starts_with(comment, Z_HEIGHT_TAG)) {
std::string str = comment.substr(Z_HEIGHT_TAG.size());
if (!parse_double_from_str(str, z_height)) {
std::cout << "invalid z height comment with invalid value!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
} else if (starts_with(comment, Initial_Layer_Ptint_Height_Tag)) {
std::string str = comment.substr(Initial_Layer_Ptint_Height_Tag.size());
if (!parse_double_from_str(str, initial_layer_height)) {
std::cout << "invalid initial layer height comment with invalid value!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
}
return GCodeCheckResult::Success;
}
GCodeCheckResult GCodeChecker::parse_command(GCodeLine& gcode_line)
{
const std::string cmd = gcode_line.cmd();
GCodeCheckResult ret = GCodeCheckResult::Success;
switch (::toupper(cmd[0])) {
case 'G':
{
switch (::atoi(&cmd[1]))
{
case 0:
case 1: { ret = parse_G0_G1(gcode_line); break; } // Move
case 2:
case 3: { ret = parse_G2_G3(gcode_line); break; } // Move
case 90: { ret = parse_G90(gcode_line); break; } // Set to Absolute Positioning
case 91: { ret = parse_G91(gcode_line); break; } // Set to Relative Positioning
case 92: { ret = parse_G92(gcode_line); break; } // Set Position
default: { break; }
}
break;
}
case 'M':{
switch (::atoi(&cmd[1]))
{
case 82: { ret = parse_M82(gcode_line); break; } // Set to Absolute extrusion
case 83: { ret = parse_M83(gcode_line); break; } // Set to Relative extrusion
case 104: {
ret = parse_M104_M109(gcode_line);
break;
} // Set to nozzle temperature
case 109: {
ret = parse_M104_M109(gcode_line);
break;
} // Set to nozzle temperature
default: { break; }
}
break;
}
case 'T':{
int pt = ::atoi(&cmd[1]);
if (pt == 1000 || pt == 1100 || pt == 255) {
break;
}
if (pt < 0 || pt > 254 || pt >= filament_flow_ratio.size()) {
std::cout << "Invalid T command"<<std::endl;
ret = GCodeCheckResult::ParseFailed;
break;
}
filament_id = pt;
flow_ratio = filament_flow_ratio[pt];
break;
}
default: {
//BBS: other g command? impossible! must be invalid
ret = GCodeCheckResult::ParseFailed;
break;
}
}
return ret;
}
GCodeCheckResult GCodeChecker::parse_axis(GCodeLine& gcode_line)
{
const std::string cmd = gcode_line.m_raw;
const char* c = cmd.c_str();
c = skip_word(c);
while (! is_end_of_gcode_line(*c)) {
c = skip_whitespaces(c);
if (is_end_of_gcode_line(*c))
break;
Axis axis = UNKNOWN_AXIS;
switch (*c) {
case 'X': axis = X; break;
case 'Y': axis = Y; break;
case 'Z': axis = Z; break;
case 'E': axis = E; break;
case 'F': axis = F; break;
case 'I': axis = I; break;
case 'J': axis = J; break;
case 'P': axis = P; break;
default:
//BBS: invalid command which has invalid axis
std::cout << "Invalid gcode because of invalid axis!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
char *pend = nullptr;
double v = strtod(++c, &pend);
if (pend != nullptr && is_end_of_word(*pend) && !isnan(v) && !isinf(v)) {
gcode_line.m_axis[int(axis)] = v;
if (gcode_line.m_mask & (1 << int(axis))) {
//BBS: invalid command which has duplicated axis
std::cout << "Invalid gcode because of duplicated axis!" << std::endl;
return GCodeCheckResult::ParseFailed;
} else {
gcode_line.m_mask |= 1 << int(axis);
}
if (c == pend) {
//BBS: invalid command which has invalid axis value
std::cout << "Invalid gcode because of invalid axis value!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
c = pend;
} else {
//BBS: invalid command for invalid axis value
std::cout << "Invalid gcode because of invalid axis value!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
}
return GCodeCheckResult::Success;
}
GCodeCheckResult GCodeChecker::parse_G0_G1(GCodeLine& gcode_line)
{
if (parse_axis(gcode_line) != GCodeCheckResult::Success)
return GCodeCheckResult::ParseFailed;
//BBS: invalid G1 command which has no axis or invalid axis
if ((!gcode_line.m_mask) ||
gcode_line.has(I) ||
gcode_line.has(J)) {
std::cout << "Invalid G0_G1 gcode because of no axis or invalid axis!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
//BBS: invalid G1 command which has zero speed
if (gcode_line.has(F) && gcode_line.get(F) == 0.0) {
std::cout << "Invalid G0_G1 gcode because has F axis but 0 speed!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
return GCodeCheckResult::Success;
}
GCodeCheckResult GCodeChecker::parse_G2_G3(GCodeLine& gcode_line)
{
if (parse_axis(gcode_line) != GCodeCheckResult::Success)
return GCodeCheckResult::ParseFailed;
//BBS: invalid G2_G3 command which has no axis or Z axis
if (!gcode_line.m_mask) {
std::cout << "Invalid G2_G3 gcode because of no axis or has Z axis!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
//BBS: invalid G2_G3 command which has zero speed
if (gcode_line.has(F) && gcode_line.get(F) == 0.0) {
std::cout << "Invalid G2_G3 gcode because has F axis but 0 speed!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
//BBS: invalid G2_G3 command which has no I and J axis
if (!gcode_line.has(I) &&
!gcode_line.has(J)) {
std::cout << "Invalid G2_G3 gcode because of no I and J axis at same time!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
//BBS: invalid G2_G3 command which has no X and Y axis at same time
if (!gcode_line.has(X) && !gcode_line.has(Y) && !gcode_line.has(I) && !gcode_line.has(J)) {
if (!gcode_line.has(X) || !gcode_line.has(P) || (int)gcode_line.get(P) != 1) {
std::cout << "Invalid G2_G3 gcode because of no X and Y axis at same time!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
}
return GCodeCheckResult::Success;
}
GCodeCheckResult GCodeChecker::parse_G90(const GCodeLine& gcode_line)
{
const char* c = gcode_line.m_raw.c_str();
//BBS: G90 is single command with no argument
if (!is_single_gcode_word(c)) {
std::cout << "Invalid G90 gcode with invalid end!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
m_global_positioning_type = EPositioningType::Absolute;
return GCodeCheckResult::Success;
}
GCodeCheckResult GCodeChecker::parse_G91(const GCodeLine& gcode_line)
{
const char* c = gcode_line.m_raw.c_str();
//BBS: G91 is single command with no argument
if (!is_single_gcode_word(c)) {
std::cout << "Invalid G91 gcode with invalid end!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
m_global_positioning_type = EPositioningType::Relative;
return GCodeCheckResult::Success;
}
GCodeCheckResult GCodeChecker::parse_G92(GCodeLine& gcode_line)
{
if (parse_axis(gcode_line) != GCodeCheckResult::Success)
return GCodeCheckResult::ParseFailed;
//BBS: invalid G92 command which has no axis or invalid axis
if (!gcode_line.m_mask ||
gcode_line.has(F) ||
gcode_line.has(I) ||
gcode_line.has(J)) {
std::cout << "Invalid G2_G3 gcode because of no axis or invalid axis!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
if (gcode_line.has(X))
m_origin[X] = m_end_position[X] - gcode_line.get(X);
if (gcode_line.has(Y))
m_origin[Y] = m_end_position[Y] - gcode_line.get(Y);
if (gcode_line.has(Z))
m_origin[Z] = m_end_position[Z] - gcode_line.get(Z);
if (gcode_line.has(E))
m_end_position[E] = gcode_line.get(E);
for (unsigned char a = X; a <= E; ++a) {
m_origin[a] = m_end_position[a];
}
return GCodeCheckResult::Success;
}
GCodeCheckResult GCodeChecker::parse_M82(const GCodeLine& gcode_line)
{
const char* c = gcode_line.m_raw.c_str();
//BBS: M82 is single command with no argument
if (!is_single_gcode_word(c)) {
std::cout << "Invalid M82 gcode with invalid end!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
m_e_local_positioning_type = EPositioningType::Absolute;
return GCodeCheckResult::Success;
}
GCodeCheckResult GCodeChecker::parse_M83(const GCodeLine& gcode_line)
{
const char* c = gcode_line.m_raw.c_str();
//BBS: M83 is single command with no argument
if (!is_single_gcode_word(c)) {
std::cout << "Invalid M83 gcode with invalid end!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
m_e_local_positioning_type = EPositioningType::Relative;
return GCodeCheckResult::Success;
}
GCodeCheckResult GCodeChecker::parse_M104_M109(const GCodeLine &gcode_line)
{
const char *c = gcode_line.m_raw.c_str();
const char *rs = strchr(c,'S');
std::string str=rs;
str = str.substr(1);
for (int i = 0; i < str.size(); i++) {
if (str[i] == ' ')
str=str.substr(0,i);
}
if (!parse_double_from_str(str, nozzle_temp)) {
std::cout << "invalid nozzle temperature comment with invalid value!" << std::endl;
return GCodeCheckResult::ParseFailed;
}
return GCodeCheckResult::Success;
}
double GCodeChecker::calculate_G1_width(const std::array<double, 3>& source,
const std::array<double, 3>& target,
double e, double height, bool is_bridge) const
{
double volume = (e / flow_ratio) * Pi * (filament_diameter / 2.0f) * (filament_diameter / 2.0f);
std::array<double, 3> delta = { target[0] - source[0],
target[1] - source[1],
target[2] - source[2] };
double length = sqrt(delta[0] * delta[0] + delta[1] * delta[1] + delta[2] * delta[2]);
double mm3_per_mm = volume / length;
return is_bridge? 2 * sqrt(mm3_per_mm/Pi) :
(mm3_per_mm / height) + height * (1 - 0.25 * Pi);
}
double GCodeChecker::calculate_G2_G3_width(const std::array<double, 2>& source,
const std::array<double, 2>& target,
const std::array<double, 2>& center,
bool is_ccw, double e, double height,
bool is_bridge) const
{
std::array<double, 2> v1 = { source[0] - center[0], source[1] - center[1] };
std::array<double, 2> v2 = { target[0] - center[0], target[1] - center[1] };
double dot = v1[0] * v2[0] + v1[1] * v2[1];
double cross = v1[0] * v2[1] - v1[1] * v2[0];
double radian = atan2(cross, dot);
radian = is_ccw ?
(radian < 0 ? 2 * Pi + radian : radian) :
(radian < 0 ? -radian : 2 * Pi - radian);
double radius = sqrt(v1[0] * v1[0] + v1[1] * v1[1]);
double length = radius * radian;
double volume = (e / flow_ratio) * Pi * (filament_diameter / 2) * (filament_diameter / 2);
double mm3_per_mm = volume / length;
return is_bridge? 2 * sqrt(mm3_per_mm/Pi) :
(mm3_per_mm / height) + height * (1 - 0.25 * Pi);
}
GCodeCheckResult GCodeChecker::check_line_width(const GCodeLine& gcode_line)
{
//BBS: don't need to check extrusion before first layer
if (m_layer_num <= 0) {
return GCodeCheckResult::Success;
}
GCodeCheckResult ret = GCodeCheckResult::Success;
//BBS: only need to handle G0 G1 G2 G3
const std::string cmd = gcode_line.cmd();
int cmd_id = ::atoi(&cmd[1]);
if (::toupper(cmd[0]) == 'G')
switch (::atoi(&cmd[1]))
{
case 0:
case 1: { ret = check_G0_G1_width(gcode_line); break; }
case 2:
case 3: { ret = check_G2_G3_width(gcode_line); break; }
default: { break; }
}
return ret;
}
GCodeCheckResult GCodeChecker::check_G0_G1_width(const GCodeLine& line)
{
auto absolute_position = [this](Axis axis, const GCodeLine& lineG1) {
bool is_relative = (m_global_positioning_type == EPositioningType::Relative);
if (axis == E)
is_relative |= (m_e_local_positioning_type == EPositioningType::Relative);
if (lineG1.has(Axis(axis))) {
double ret = lineG1.get(Axis(axis));
return is_relative ? m_start_position[axis] + ret : m_origin[axis] + ret;
} else
return m_start_position[axis];
};
auto move_type = [this](const std::array<double, 4>& delta_pos) {
EMoveType type = EMoveType::Noop;
if (m_wiping)
type = EMoveType::Wipe;
else if (delta_pos[E] < 0.0f)
type = (delta_pos[X] != 0.0f || delta_pos[Y] != 0.0f || delta_pos[Z] != 0.0f) ? EMoveType::Travel : EMoveType::Retract;
else if (delta_pos[E] > 0.0f) {
if (delta_pos[X] == 0.0f && delta_pos[Y] == 0.0f)
type = (delta_pos[Z] == 0.0f) ? EMoveType::Unretract : EMoveType::Travel;
else if (delta_pos[X] != 0.0f || delta_pos[Y] != 0.0f)
type = EMoveType::Extrude;
}
else if (delta_pos[X] != 0.0f || delta_pos[Y] != 0.0f || delta_pos[Z] != 0.0f)
type = EMoveType::Travel;
return type;
};
for (unsigned char a = X; a <= E; ++a) {
m_end_position[a] = absolute_position((Axis)a, line);
}
// calculates movement deltas
std::array<double, 4> delta_pos;
for (unsigned char a = X; a <= E; ++a)
delta_pos[a] = m_end_position[a] - m_start_position[a];
// Todo: currently, for precision, there alwasy has possible to generate
// such gcode because of decimal truncation
/*if (line.has(Axis(E)) && delta_pos[E] == 0.0 && !m_wiping) {
std::cout << "Invalid GCode because has E axis but 0 extrusion" << std::endl;
return GCodeCheckResult::CheckFailed;
}*/
EMoveType type = move_type(delta_pos);
if (type == EMoveType::Extrude && m_end_position[Z] == 0.0f)
type = EMoveType::Travel;
//BBS: calculate line width and compare.
//Don't need to check gap fill which has verious width
if (type == EMoveType::Extrude &&
m_role != erGapFill &&
delta_pos[E] > CHECK_WIDTH_E_THRESHOLD) {
std::array<double, 3> source = { m_start_position[X], m_start_position[Y], m_start_position[Z] };
std::array<double, 3> target = { m_end_position[X], m_end_position[Y], m_end_position[Z] };
bool is_bridge = m_role == erOverhangPerimeter || m_role == erBridgeInfill;
if (!is_bridge) {
double width_real = calculate_G1_width(source, target, delta_pos[E], m_height, is_bridge);
if (fabs(width_real - m_width) > WIDTH_THRESHOLD) {
std::cout << "Invalid G0_G1 because has abnormal line width." << std::endl;
std::cout << "Width: " << m_width << " Width_real: " << width_real << std::endl;
return GCodeCheckResult::CheckFailed;
}
}
}
return GCodeCheckResult::Success;
}
GCodeCheckResult GCodeChecker::check_G2_G3_width(const GCodeLine& line)
{
auto absolute_position = [this](Axis axis, const GCodeLine& lineG2_3) {
bool is_relative = (m_global_positioning_type == EPositioningType::Relative);
if (axis == E)
is_relative |= (m_e_local_positioning_type == EPositioningType::Relative);
if (lineG2_3.has(Axis(axis))) {
double ret = lineG2_3.get(Axis(axis));
if (axis == I)
return m_start_position[X] + ret;
else if (axis == J)
return m_start_position[Y] + ret;
else
return is_relative ? m_start_position[axis] + ret : m_origin[axis] + ret;
} else {
if (axis == I)
return m_start_position[X];
else if (axis == J)
return m_start_position[Y];
else
return m_start_position[axis];
}
};
auto move_type = [this](const double& delta_E) {
EMoveType type = EMoveType::Noop;
if (m_wiping)
type = EMoveType::Wipe;
else if (delta_E < 0.0f || delta_E == 0.0f)
type = EMoveType::Travel;
else
type = EMoveType::Extrude;
return type;
};
for (unsigned char a = X; a <= E; ++a) {
m_end_position[a] = absolute_position((Axis)a, line);
}
std::array<double, 2> source = { m_start_position[X], m_start_position[Y] };
std::array<double, 2> target = { m_end_position[X], m_end_position[Y] };
std::array<double, 2> center = { absolute_position(I, line),absolute_position(J, line) };
const std::string& cmd = line.cmd();
bool is_ccw = (::atoi(&cmd[1]) == 2) ? false : true;
double delta_e = m_end_position[E] - m_start_position[E];
EMoveType type = move_type(delta_e);
//BBS: judge whether is normal arc by radius
double radius1 = sqrt(pow((source[0] - center[0]), 2) + pow((source[1] - center[1]), 2));
double radius2 = sqrt(pow((target[0] - center[0]), 2) + pow((target[1] - center[1]), 2));
if (fabs(radius2 - radius1) > RADIUS_THRESHOLD) {
std::cout << "Invalid G2_G3 because of abnormal radius." << std::endl;
std::cout << "radius1: " << radius1 << " radius2: " << radius2 << std::endl;
return GCodeCheckResult::CheckFailed;
}
//BBS: calculate line width and compare
//Don't need to check gap fill which has verious width
if (type == EMoveType::Extrude &&
m_role != erGapFill &&
delta_e > CHECK_WIDTH_E_THRESHOLD) {
bool is_bridge = m_role == erOverhangPerimeter || m_role == erBridgeInfill;
if (!is_bridge) {
double width_real = calculate_G2_G3_width(source, target, center, is_ccw, delta_e, m_height, is_bridge);
if (fabs(width_real - m_width) > WIDTH_THRESHOLD) {
std::cout << "Invalid G2_G3 because has abnormal line width." << std::endl;
std::cout << "Width: " << m_width << " Width_real: " << width_real << std::endl;
return GCodeCheckResult::CheckFailed;
}
}
}
return GCodeCheckResult::Success;
}
const std::map<std::string, ExtrusionRole> string_to_role_map = {
{ "Inner wall", erPerimeter },
{ "Outer wall", erExternalPerimeter },
{ "Overhang wall", erOverhangPerimeter },
{ "Sparse infill", erInternalInfill },
{ "Internal solid infill", erSolidInfill },
{ "Top surface", erTopSolidInfill },
{ "Bottom surface", erBottomSurface },
{ "Ironing", erIroning },
{ "Bridge", erBridgeInfill },
{ "Gap infill", erGapFill },
{ "Skirt", erSkirt },
{ "Brim", erBrim },
{ "Support", erSupportMaterial },
{ "Support interface", erSupportMaterialInterface },
{ "Support transition", erSupportTransition },
{ "Prime tower", erWipeTower },
{ "Custom", erCustom },
{ "Mixed", erMixed }
};
ExtrusionRole GCodeChecker::string_to_role(const std::string &role)
{
for (auto it = string_to_role_map.begin(); it != string_to_role_map.end(); it++) {
if (role == it->first)
return it->second;
}
return erNone;
}
}

View File

@@ -1,222 +0,0 @@
#ifndef _GCodeChecker_H_
#define _GCodeChecker_H_
#include <iostream>
#include <string>
#include <vector>
#include <array>
namespace BambuStudio {
enum class GCodeCheckResult : unsigned char
{
Success,
ParseFailed,
CheckFailed,
Count
};
enum class EMoveType : unsigned char
{
Noop,
Retract,
Unretract,
Tool_change,
Color_change,
Pause_Print,
Custom_GCode,
Travel,
Wipe,
Extrude,
Count
};
enum Axis {
X=0,
Y,
Z,
E,
F,
I,
J,
P,
NUM_AXES,
UNKNOWN_AXIS = NUM_AXES,
};
enum ExtrusionRole : uint8_t {
erNone,
erPerimeter,
erExternalPerimeter,
erOverhangPerimeter,
erInternalInfill,
erSolidInfill,
erTopSolidInfill,
erBottomSurface,
erIroning,
erBridgeInfill,
erGapFill,
erSkirt,
erBrim,
erSupportMaterial,
erSupportMaterialInterface,
erSupportTransition,
erWipeTower,
erCustom,
// Extrusion role for a collection with multiple extrusion roles.
erMixed,
erCount
};
class GCodeChecker {
public:
class GCodeLine {
public:
GCodeLine() {}
const std::string cmd() const {
const char *cmd = GCodeChecker::skip_whitespaces(m_raw.c_str());
return std::string(cmd, GCodeChecker::skip_word(cmd) - cmd);
}
bool has(Axis axis) const { return (m_mask & (1 << int(axis))) != 0; }
double get(Axis axis) const { return m_axis[int(axis)]; }
std::string m_raw;
double m_axis[NUM_AXES] = { 0.0f };
uint32_t m_mask = 0;
};
enum class EPositioningType : unsigned char
{
Absolute,
Relative
};
GCodeChecker() {}
GCodeCheckResult parse_file(const std::string& path);
private:
bool include_chinese(const char* str);
GCodeCheckResult parse_line(const std::string& line);
GCodeCheckResult parse_command(GCodeLine& gcode_line);
GCodeCheckResult parse_axis(GCodeLine& gcode_line);
GCodeCheckResult parse_G0_G1(GCodeLine& gcode_line);
GCodeCheckResult parse_G2_G3(GCodeLine& gcode_line);
GCodeCheckResult parse_G90(const GCodeLine& gcode_line);
GCodeCheckResult parse_G91(const GCodeLine& gcode_line);
GCodeCheckResult parse_G92(GCodeLine& gcode_line);
GCodeCheckResult parse_M82(const GCodeLine& gcode_line);
GCodeCheckResult parse_M83(const GCodeLine& gcode_line);
GCodeCheckResult parse_M104_M109(const GCodeLine &gcode_line);
GCodeCheckResult parse_comment(GCodeLine& gcode_line);
GCodeCheckResult check_line_width(const GCodeLine& gcode_line);
GCodeCheckResult check_G0_G1_width(const GCodeLine& gcode_line);
GCodeCheckResult check_G2_G3_width(const GCodeLine& gcode_line);
double calculate_G1_width(const std::array<double, 3>& source,
const std::array<double, 3>& target,
double e, double height, bool is_bridge) const;
double calculate_G2_G3_width(const std::array<double, 2>& source,
const std::array<double, 2>& target,
const std::array<double, 2>& center,
bool is_ccw, double e, double height, bool is_bridge) const;
public:
static bool is_whitespace(char c) { return c == ' ' || c == '\t'; }
static bool is_end_of_line(char c) { return c == '\r' || c == '\n' || c == 0; }
static bool is_comment_line(char c) { return c == ';'; }
static bool is_end_of_gcode_line(char c) { return is_comment_line(c) || is_end_of_line(c); }
static bool is_end_of_word(char c) { return is_whitespace(c) || is_end_of_gcode_line(c); }
static const char* skip_word(const char *c) {
for (; ! is_end_of_word(*c); ++ c)
; // silence -Wempty-body
return c;
}
static const char* skip_whitespaces(const char *c) {
for (; is_whitespace(*c); ++ c)
; // silence -Wempty-body
return c;
}
static bool is_single_gcode_word(const char* c) {
c = skip_word(c);
c = skip_whitespaces(c);
return is_end_of_gcode_line(*c);
}
static bool starts_with(const std::string &comment, const std::string &tag) {
size_t tag_len = tag.size();
return comment.size() >= tag_len && comment.substr(0, tag_len) == tag;
}
static ExtrusionRole string_to_role(const std::string& role);
//BBS: Returns true if the number was parsed correctly into out and the number spanned the whole input string.
static bool parse_double_from_str(const std::string& input, double& out) {
size_t read = 0;
try {
out = std::stod(input, &read);
return input.size() == read;
} catch (...) {
return false;
}
}
static bool parse_double_from_str(const std::string &input, std::vector<double> &out)
{
std::string cmd=input;
size_t read = 0;
while (cmd.size() >= 5)
{
int pt = 0;
for (pt = 0; pt < cmd.size(); pt++) {
char temp = cmd[pt];
if (temp == ',')
{
try {
double num = std::stod(cmd.substr(0, pt), &read);
out.push_back(num);
cmd = cmd.substr(pt+1);
break;
} catch (...) {
return false;
}
}
}
}
double num = std::stod(cmd, &read);
out.push_back(num);
return true;
}
private:
EPositioningType m_global_positioning_type = EPositioningType::Absolute;
EPositioningType m_e_local_positioning_type = EPositioningType::Absolute;
std::array<double, 4> m_start_position = { 0.0, 0.0, 0.0, 0.0 };
std::array<double, 4> m_end_position = { 0.0, 0.0, 0.0, 0.0 };
std::array<double, 4> m_origin = { 0.0, 0.0, 0.0, 0.0 };
//BBS: use these value to save information from comment
ExtrusionRole m_role = erNone;
bool m_wiping = false;
int m_layer_num = 0;
double m_height = 0.0;
double m_width = 0.0;
double z_height=0.0f;
double initial_layer_height=0.0f;
int filament_id;
double flow_ratio = 0;
double nozzle_temp = 0.0f;
std::vector<double> filament_flow_ratio;
std::vector<double> nozzle_temperature;
std::vector<double> nozzle_temperature_initial_layer;
};
}
#endif

View File

@@ -1,24 +0,0 @@
#include "GCodeChecker.h"
using namespace std;
using namespace BambuStudio;
int main(int argc, char *argv[])
{
if (argc != 2) {
cout << "Invalid input arguments" << endl;
return -1;
}
string path(argv[1]);
cout << "Start to check file " << path << endl;
GCodeChecker checker;
//BBS: parse and check whether has invalid gcode
if (checker.parse_file(path) != GCodeCheckResult::Success) {
cout << "Failed to parse and check file " << path << endl;
return -1;
}
cout << "Success to parse and check file" << path << endl;
return 0;
}

View File

@@ -3,17 +3,17 @@ cd deps
mkdir build
cd build
set DEPS=%CD%/OrcaSlicer_dep
if "%1"=="studio" (
GOTO :studio
if "%1"=="slicer" (
GOTO :slicer
)
echo "building deps.."
cmake ../ -G "Visual Studio 16 2019" -DDESTDIR="%CD%/OrcaSlicer_dep" -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release --target ALL_BUILD -- -m
cmake --build . --config Release --target deps -- -m
if "%1"=="deps" exit /b 0
:studio
echo "building studio..."
:slicer
echo "building Orca Slicer..."
cd %WP%
mkdir build
cd build

View File

@@ -12,7 +12,7 @@ while getopts ":a:sdphn" opt; do
export ARCH="$OPTARG"
;;
s )
export BUILD_TARGET="studio"
export BUILD_TARGET="slicer"
;;
n )
export NIGHTLY_BUILD="1"
@@ -20,7 +20,7 @@ while getopts ":a:sdphn" opt; do
h ) echo "Usage: ./build_release_macos.sh [-d]"
echo " -d: Build deps only"
echo " -a: Set ARCHITECTURE (arm64 or x86_64)"
echo " -s: Build studio only"
echo " -s: Build slicer only"
echo " -n: Nightly build"
exit 0
;;
@@ -54,12 +54,12 @@ mkdir -p build_$ARCH
cd build_$ARCH
DEPS=$PWD/OrcaSlicer_dep_$ARCH
mkdir -p $DEPS
if [ "studio." != $BUILD_TARGET. ];
if [ "slicer." != $BUILD_TARGET. ];
then
echo "building deps..."
echo "cmake ../ -DDESTDIR=$DEPS -DOPENSSL_ARCH=darwin64-${ARCH}-cc -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES:STRING=${ARCH}"
cmake ../ -DDESTDIR="$DEPS" -DOPENSSL_ARCH="darwin64-${ARCH}-cc" -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES:STRING=${ARCH}
cmake --build . --config Release --target all
cmake --build . --config Release --target deps
if [ "1." == "$PACK_DEPS". ];
then
tar -zcvf OrcaSlicer_dep_mac_${ARCH}_$(date +"%d-%m-%Y").tar.gz OrcaSlicer_dep_$ARCH
@@ -75,7 +75,7 @@ fi
cd $WD
mkdir -p build_$ARCH
cd build_$ARCH
echo "building studio..."
echo "building slicer..."
cmake .. -GXcode -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="$DEPS/usr/local" -DCMAKE_INSTALL_PREFIX="$PWD/OrcaSlicer" -DCMAKE_BUILD_TYPE=Release -DCMAKE_MACOSX_RPATH=ON -DCMAKE_INSTALL_RPATH="$DEPS/usr/local" -DCMAKE_MACOSX_BUNDLE=ON -DCMAKE_OSX_ARCHITECTURES=${ARCH}
cmake --build . --config Release --target ALL_BUILD
mkdir -p OrcaSlicer

23
build_release_vs2022.bat Normal file
View File

@@ -0,0 +1,23 @@
set WP=%CD%
cd deps
mkdir build
cd build
set DEPS=%CD%/OrcaSlicer_dep
if "%1"=="slicer" (
GOTO :slicer
)
echo "building deps.."
cmake ../ -G "Visual Studio 17 2022" -A x64 -DDESTDIR="%CD%/OrcaSlicer_dep" -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release --target deps -- -m
if "%1"=="deps" exit /b 0
:slicer
echo "building Orca Slicer..."
cd %WP%
mkdir build
cd build
cmake .. -G "Visual Studio 17 2022" -A x64 -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="%DEPS%/usr/local" -DCMAKE_INSTALL_PREFIX="./OrcaSlicer" -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release --target ALL_BUILD -- -m
cmake --build . --target install --config Release

View File

@@ -1,23 +0,0 @@
set WP=%CD%
cd deps
mkdir build
cd build
set DEPS=%CD%/OrcaSlicer_dep
if "%1"=="studio" (
GOTO :studio
)
echo "building deps.."
cmake ../ -G "Visual Studio 16 2019" -DDESTDIR="%CD%/OrcaSlicer_dep" -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release --target ALL_BUILD -- -m
if "%1"=="deps" exit /b 0
:studio
echo "building studio..."
cd %WP%
mkdir build
cd build
cmake .. -G "Visual Studio 16 2019" -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="%DEPS%/usr/local" -DCMAKE_INSTALL_PREFIX="./OrcaSlicer" -DCMAKE_BUILD_TYPE=Release -DWIN10SDK_PATH="C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0"
cmake --build . --config RelWithDebInfo --target ALL_BUILD -- -m
@REM cmake --build . --target install --config RelWithDebInfo

View File

@@ -1,495 +0,0 @@
@setlocal disableDelayedExpansion enableExtensions
@IF "%PS_ECHO_ON%" NEQ "" (echo on) ELSE (echo off)
@GOTO :MAIN
:HELP
@ECHO.
@ECHO Performs initial build or rebuild of the app (build) and deps (build/deps).
@ECHO Default options are determined from build directories and system state.
@ECHO.
@ECHO Usage: build_win [-ARCH ^<arch^>] [-CONFIG ^<config^>] [-VERSION ^<version^>]
@ECHO [-PRODUCT ^<product^>] [-DESTDIR ^<directory^>]
@ECHO [-STEPS ^<all^|all-dirty^|app^|app-dirty^|deps^|deps-dirty^>]
@ECHO [-RUN ^<console^|custom^|none^|viewer^|window^>]
@ECHO.
@ECHO -a -ARCH Target processor architecture
@ECHO Default: %PS_ARCH_HOST%
@ECHO -c -CONFIG MSVC project config
@ECHO Default: %PS_CONFIG_DEFAULT%
@ECHO -v -VERSION Major version number of MSVC installation to use for build
@ECHO Default: %PS_VERSION_SUPPORTED%
@ECHO -p -PRODUCT Product ID of MSVC installation to use for build
@ECHO Default: %PS_PRODUCT_DEFAULT%
@ECHO -s -STEPS Performs only the specified build steps:
@ECHO all - clean and build deps and app
@ECHO all-dirty - build deps and app without cleaning
@ECHO app - clean and build main applications
@ECHO app-dirty - build main applications without cleaning
@ECHO deps - clean and build deps
@ECHO deps-dirty - build deps without cleaning
@ECHO Default: %PS_STEPS_DEFAULT%
@ECHO -r -RUN Specifies what to perform at the run step:
@ECHO console - run and wait on orca-slicer-console.exe
@ECHO custom - run and wait on your custom build/%PS_CUSTOM_RUN_FILE%
@ECHO ide - open project in Visual Studio if not open (no wait)
@ECHO none - run step does nothing
@ECHO viewer - run bambu-gcodeviewer.exe (no wait)
@ECHO window - run orca-slicer.exe (no wait)
@ECHO Default: none
@ECHO -d -DESTDIR Deps destination directory
@ECHO Warning: Changing destdir path will not delete the old destdir.
@ECHO Default: %PS_DESTDIR_DEFAULT_MSG%
@ECHO.
@ECHO Examples:
@ECHO.
@ECHO Initial build: build_win -d "c:\src\BambuSlicer-deps"
@ECHO Build post deps change: build_win -s all
@ECHO App dirty build: build_win
@ECHO App dirty build ^& run: build_win -r console
@ECHO All clean build ^& run: build_win -s all -r console -d "deps\build\out_deps"
@ECHO.
GOTO :END
:MAIN
REM Script constants
SET START_TIME=%TIME%
SET PS_START_DIR=%CD%
SET PS_SOLUTION_NAME=BambuStudio
SET PS_CHOICE_TIMEOUT=30
SET PS_CUSTOM_RUN_FILE=custom_run.bat
SET PS_DEPS_PATH_FILE_NAME=.DEPS_PATH.txt
SET PS_DEPS_PATH_FILE=%~dp0deps\build\%PS_DEPS_PATH_FILE_NAME%
SET PS_CONFIG_LIST="Debug;MinSizeRel;Release;RelWithDebInfo"
REM The officially supported toolchain version is 16 (Visual Studio 2019)
REM TODO: Update versions after Boost gets rolled to 1.78 or later
SET PS_VERSION_SUPPORTED=16
SET PS_VERSION_EXCEEDED=17
SET VSWHERE=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe
IF NOT EXIST "%VSWHERE%" SET VSWHERE=%ProgramFiles%\Microsoft Visual Studio\Installer\vswhere.exe
FOR /F "tokens=4 USEBACKQ delims=." %%I IN (`"%VSWHERE%" -nologo -property productId`) DO SET PS_PRODUCT_DEFAULT=%%I
IF "%PS_PRODUCT_DEFAULT%" EQU "" (
SET EXIT_STATUS=-1
@ECHO ERROR: No Visual Studio installation found. 1>&2
GOTO :HELP
)
REM Default to the latest supported version if multiple are available
FOR /F "tokens=1 USEBACKQ delims=." %%I IN (
`^""%VSWHERE%" -version "[%PS_VERSION_SUPPORTED%,%PS_VERSION_EXCEEDED%)" -latest -nologo -property catalog_buildVersion^"`
) DO SET PS_VERSION_SUPPORTED=%%I
REM Probe build directories and system state for reasonable default arguments
pushd %~dp0
SET PS_CONFIG=RelWithDebInfo
SET PS_ARCH=%PROCESSOR_ARCHITECTURE:amd64=x64%
CALL :TOLOWER PS_ARCH
SET PS_RUN=none
SET PS_DESTDIR=
SET PS_VERSION=
SET PS_PRODUCT=%PS_PRODUCT_DEFAULT%
CALL :RESOLVE_DESTDIR_CACHE
REM Set up parameters used by help menu
SET EXIT_STATUS=0
SET PS_CONFIG_DEFAULT=%PS_CONFIG%
SET PS_ARCH_HOST=%PS_ARCH%
(echo " -help /help -h /h -? /? ")| findstr /I /C:" %~1 ">nul && GOTO :HELP
REM Parse arguments
SET EXIT_STATUS=1
SET PS_CURRENT_STEP=arguments
SET PARSER_STATE=
SET PARSER_FAIL=
FOR %%I in (%*) DO CALL :PARSE_OPTION "ARCH CONFIG DESTDIR STEPS RUN VERSION PRODUCT" PARSER_STATE "%%~I"
IF "%PARSER_FAIL%" NEQ "" (
@ECHO ERROR: Invalid switch: %PARSER_FAIL% 1>&2
GOTO :HELP
)ELSE IF "%PARSER_STATE%" NEQ "" (
@ECHO ERROR: Missing parameter for: %PARSER_STATE% 1>&2
GOTO :HELP
)
REM Validate arguments
SET PS_ASK_TO_CONTINUE=
CALL :TOLOWER PS_ARCH
SET PS_ARCH=%PS_ARCH:amd64=x64%
CALL :PARSE_OPTION_VALUE %PS_CONFIG_LIST:;= % PS_CONFIG
IF "%PS_CONFIG%" EQU "" GOTO :HELP
REM RESOLVE_DESTDIR_CACHE must go after PS_ARCH and PS_CONFIG, but before PS STEPS
CALL :RESOLVE_DESTDIR_CACHE
IF "%PS_STEPS%" EQU "" SET PS_STEPS=%PS_STEPS_DEFAULT%
CALL :PARSE_OPTION_VALUE "all all-dirty deps-dirty deps app-dirty app app-cmake" PS_STEPS
IF "%PS_STEPS%" EQU "" GOTO :HELP
(echo %PS_STEPS%)| findstr /I /C:"dirty">nul && SET PS_STEPS_DIRTY=1 || SET PS_STEPS_DIRTY=
IF "%PS_STEPS%" EQU "app-cmake" SET PS_STEPS_DIRTY=1
IF "%PS_DESTDIR%" EQU "" SET PS_DESTDIR=%PS_DESTDIR_CACHED%
IF "%PS_DESTDIR%" EQU "" (
@ECHO ERROR: Parameter required: -DESTDIR 1>&2
GOTO :HELP
)
CALL :CANONICALIZE_PATH PS_DESTDIR "%PS_START_DIR%"
IF "%PS_DESTDIR%" NEQ "%PS_DESTDIR_CACHED%" (
(echo "all deps all-dirty deps-dirty")| findstr /I /C:"%PS_STEPS%">nul || (
IF EXIST "%PS_DESTDIR%" (
@ECHO WARNING: DESTDIR does not match cache: 1>&2
@ECHO WARNING: new: %PS_DESTDIR% 1>&2
@ECHO WARNING: old: %PS_DESTDIR_CACHED% 1>&2
SET PS_ASK_TO_CONTINUE=1
) ELSE (
@ECHO ERROR: Invalid parameter: DESTDIR=%PS_DESTDIR% 1>&2
GOTO :HELP
)
)
)
SET PS_DESTDIR_DEFAULT_MSG=
CALL :PARSE_OPTION_VALUE "console custom ide none viewer window" PS_RUN
IF "%PS_RUN%" EQU "" GOTO :HELP
IF "%PS_RUN%" NEQ "none" IF "%PS_STEPS:~0,4%" EQU "deps" (
@ECHO ERROR: RUN=%PS_RUN% specified with STEPS=%PS_STEPS%
@ECHO ERROR: RUN=none is the only valid option for STEPS "deps" or "deps-dirty"
GOTO :HELP
)
IF DEFINED PS_VERSION (
SET /A PS_VERSION_EXCEEDED=%PS_VERSION% + 1
) ELSE SET PS_VERSION=%PS_VERSION_SUPPORTED%
SET MSVC_FILTER=-products Microsoft.VisualStudio.Product.%PS_PRODUCT% -version "[%PS_VERSION%,%PS_VERSION_EXCEEDED%)"
FOR /F "tokens=* USEBACKQ" %%I IN (`^""%VSWHERE%" %MSVC_FILTER% -nologo -property installationPath^"`) DO SET MSVC_DIR=%%I
IF NOT EXIST "%MSVC_DIR%" (
@ECHO ERROR: Compatible Visual Studio installation not found. 1>&2
GOTO :HELP
)
REM Give the user a chance to cancel if we found something odd.
IF "%PS_ASK_TO_CONTINUE%" EQU "" GOTO :BUILD_ENV
@ECHO.
@ECHO Unexpected parameters detected. Build paused for %PS_CHOICE_TIMEOUT% seconds.
choice /T %PS_CHOICE_TIMEOUT% /C YN /D N /M "Continue"
IF %ERRORLEVEL% NEQ 1 GOTO :HELP
REM Set up MSVC environment
:BUILD_ENV
SET EXIT_STATUS=2
SET PS_CURRENT_STEP=environment
@ECHO **********************************************************************
@ECHO ** Build Config: %PS_CONFIG%
@ECHO ** Target Arch: %PS_ARCH%
@ECHO ** Build Steps: %PS_STEPS%
@ECHO ** Run App: %PS_RUN%
@ECHO ** Deps path: %PS_DESTDIR%
@ECHO ** Using Microsoft Visual Studio installation found at:
@ECHO ** %MSVC_DIR%
CALL "%MSVC_DIR%\Common7\Tools\vsdevcmd.bat" -arch=%PS_ARCH% -host_arch=%PS_ARCH_HOST% -app_platform=Desktop
IF %ERRORLEVEL% NEQ 0 GOTO :END
REM Need to reset the echo state after vsdevcmd.bat clobbers it.
@IF "%PS_ECHO_ON%" NEQ "" (echo on) ELSE (echo off)
IF "%PS_DRY_RUN_ONLY%" NEQ "" (
@ECHO Script terminated early because PS_DRY_RUN_ONLY is set. 1>&2
GOTO :END
)
IF /I "%PS_STEPS:~0,3%" EQU "app" GOTO :BUILD_APP
REM Build deps
:BUILD_DEPS
SET EXIT_STATUS=3
SET PS_CURRENT_STEP=deps
IF "%PS_STEPS_DIRTY%" EQU "" (
CALL :MAKE_OR_CLEAN_DIRECTORY deps\build "%PS_DEPS_PATH_FILE_NAME%" .vs
CALL :MAKE_OR_CLEAN_DIRECTORY "%PS_DESTDIR%"
)
cd deps\build || GOTO :END
cmake.exe .. -DDESTDIR="%PS_DESTDIR%"
IF %ERRORLEVEL% NEQ 0 IF "%PS_STEPS_DIRTY%" NEQ "" (
(del CMakeCache.txt && cmake.exe .. -DDESTDIR="%PS_DESTDIR%") || GOTO :END
) ELSE GOTO :END
(echo %PS_DESTDIR%)> "%PS_DEPS_PATH_FILE%"
msbuild /m ALL_BUILD.vcxproj /p:Configuration=%PS_CONFIG% /v:quiet || GOTO :END
cd ..\..
IF /I "%PS_STEPS:~0,4%" EQU "deps" GOTO :RUN_APP
REM Build app
:BUILD_APP
SET EXIT_STATUS=4
SET PS_CURRENT_STEP=app
IF "%PS_STEPS_DIRTY%" EQU "" CALL :MAKE_OR_CLEAN_DIRECTORY build "%PS_CUSTOM_RUN_FILE%" .vs
cd build || GOTO :END
REM Make sure we have a custom batch file skeleton for the run stage
set PS_CUSTOM_BAT=%PS_CUSTOM_RUN_FILE%
CALL :CANONICALIZE_PATH PS_CUSTOM_BAT
IF NOT EXIST %PS_CUSTOM_BAT% CALL :WRITE_CUSTOM_SCRIPT_SKELETON %PS_CUSTOM_BAT%
SET PS_PROJECT_IS_OPEN=
FOR /F "tokens=2 delims=," %%I in (
'tasklist /V /FI "IMAGENAME eq devenv.exe " /NH /FO CSV ^| find "%PS_SOLUTION_NAME%"'
) do SET PS_PROJECT_IS_OPEN=%%~I
cmake.exe .. -DCMAKE_PREFIX_PATH="%PS_DESTDIR%\usr\local" -DCMAKE_CONFIGURATION_TYPES=%PS_CONFIG_LIST%
IF %ERRORLEVEL% NEQ 0 IF "%PS_STEPS_DIRTY%" NEQ "" (
(del CMakeCache.txt && cmake.exe .. -DCMAKE_PREFIX_PATH="%PS_DESTDIR%\usr\local" -DCMAKE_CONFIGURATION_TYPES=%PS_CONFIG_LIST%) || GOTO :END
) ELSE GOTO :END
REM Skip the build step if we're using the undocumented app-cmake to regenerate the full config from inside devenv
IF "%PS_STEPS%" NEQ "app-cmake" msbuild /m ALL_BUILD.vcxproj /p:Configuration=%PS_CONFIG% /v:quiet || GOTO :END
(echo %PS_DESTDIR%)> "%PS_DEPS_PATH_FILE_FOR_CONFIG%"
REM Run app
:RUN_APP
REM All build steps complete.
CALL :DIFF_TIME ELAPSED_TIME %START_TIME% %TIME%
IF "%PS_CURRENT_STEP%" NEQ "arguments" (
@ECHO.
@ECHO Total Build Time Elapsed %ELAPSED_TIME%
)
SET EXIT_STATUS=5
SET PS_CURRENT_STEP=run
IF "%PS_RUN%" EQU "none" GOTO :PROLOGUE
cd src\%PS_CONFIG% || GOTO :END
SET PS_PROJECT_IS_OPEN=
FOR /F "tokens=2 delims=," %%I in (
'tasklist /V /FI "IMAGENAME eq devenv.exe " /NH /FO CSV ^| find "%PS_SOLUTION_NAME%"'
) do SET PS_PROJECT_IS_OPEN=%%~I
@ECHO.
@ECHO Running %PS_RUN% application...
@REM icacls below is just a hack for file-not-found error handling
IF "%PS_RUN%" EQU "console" (
icacls orca-slicer-console.exe >nul || GOTO :END
start /wait /b orca-slicer-console.exe
) ELSE IF "%PS_RUN%" EQU "window" (
icacls orca-slicer.exe >nul || GOTO :END
start orca-slicer.exe
) ELSE IF "%PS_RUN%" EQU "viewer" (
icacls bambu-gcodeviewer.exe >nul || GOTO :END
start bambu-gcodeviewer.exe
) ELSE IF "%PS_RUN%" EQU "custom" (
icacls %PS_CUSTOM_BAT% >nul || GOTO :END
CALL %PS_CUSTOM_BAT%
) ELSE IF "%PS_RUN%" EQU "ide" (
IF "%PS_PROJECT_IS_OPEN%" NEQ "" (
@ECHO WARNING: Solution is already open in Visual Studio. Skipping ide run step. 1>&2
) ELSE (
@ECHO Preparing to run Visual Studio...
cd ..\.. || GOTO :END
REM This hack generates a single config for MSVS, guaranteeing it gets set as the active config.
cmake.exe .. -DCMAKE_PREFIX_PATH="%PS_DESTDIR%\usr\local" -DCMAKE_CONFIGURATION_TYPES=%PS_CONFIG% > nul 2> nul || GOTO :END
REM Now launch devenv with the single config (setting it active) and a /command switch to re-run cmake and generate the full config list
start devenv.exe %PS_SOLUTION_NAME%.sln /command ^"shell /o ^^^"%~f0^^^" -d ^^^"%PS_DESTDIR%^^^" -c %PS_CONFIG% -a %PS_ARCH% -r none -s app-cmake^"
REM If devenv fails to launch just directly regenerate the full config list.
IF %ERRORLEVEL% NEQ 0 (
cmake.exe .. -DCMAKE_PREFIX_PATH="%PS_DESTDIR%\usr\local" -DCMAKE_CONFIGURATION_TYPES=%PS_CONFIG_LIST% 2> nul 1> nul || GOTO :END
)
)
)
@REM ********** DON'T ADD ANY CODE BETWEEN THESE TWO SECTIONS **********
@REM RUN_APP may hand off control, so let exit codes fall through to PROLOGUE.
:PROLOGUE
SET EXIT_STATUS=%ERRORLEVEL%
:END
@IF "%PS_ECHO_ON%%PS_DRY_RUN_ONLY%" NEQ "" (
@ECHO **********************************************************************
@ECHO ** Script Parameters:
@ECHO **********************************************************************
@SET PS_
)
IF "%EXIT_STATUS%" NEQ "0" (
IF "%PS_CURRENT_STEP%" NEQ "arguments" (
@ECHO.
@ECHO ERROR: *** Build process failed at %PS_CURRENT_STEP% step. *** 1>&2
)
) ELSE (
@ECHO All steps completed successfully.
)
popd
exit /B %EXIT_STATUS%
GOTO :EOF
REM Functions and stubs start here.
:RESOLVE_DESTDIR_CACHE
@REM Resolves all DESTDIR cache values and sets PS_STEPS_DEFAULT
@REM Note: This just sets global variables, so it doesn't use setlocal.
SET PS_DEPS_PATH_FILE_FOR_CONFIG=%~dp0build\.vs\%PS_ARCH%\%PS_CONFIG%\%PS_DEPS_PATH_FILE_NAME%
mkdir "%~dp0build\.vs\%PS_ARCH%\%PS_CONFIG%" > nul 2> nul
REM Copy a legacy file if we don't have one in the proper location.
echo f|xcopy /D "%~dp0build\%PS_ARCH%\%PS_CONFIG%\%PS_DEPS_PATH_FILE_NAME%" "%PS_DEPS_PATH_FILE_FOR_CONFIG%" > nul 2> nul
CALL :CANONICALIZE_PATH PS_DEPS_PATH_FILE_FOR_CONFIG
IF EXIST "%PS_DEPS_PATH_FILE_FOR_CONFIG%" (
FOR /F "tokens=* USEBACKQ" %%I IN ("%PS_DEPS_PATH_FILE_FOR_CONFIG%") DO (
SET PS_DESTDIR_CACHED=%%I
SET PS_DESTDIR_DEFAULT_MSG=%%I
)
SET PS_STEPS_DEFAULT=app-dirty
) ELSE IF EXIST "%PS_DEPS_PATH_FILE%" (
FOR /F "tokens=* USEBACKQ" %%I IN ("%PS_DEPS_PATH_FILE%") DO (
SET PS_DESTDIR_CACHED=%%I
SET PS_DESTDIR_DEFAULT_MSG=%%I
)
SET PS_STEPS_DEFAULT=app
) ELSE (
SET PS_DESTDIR_CACHED=
SET PS_DESTDIR_DEFAULT_MSG=Cache missing. Argument required.
SET PS_STEPS_DEFAULT=all
)
GOTO :EOF
:PARSE_OPTION
@REM Argument parser called for each argument
@REM %1 - Valid option list
@REM %2 - Variable name for parser state; must be unset when parsing finished
@REM %3 - Current argument value
@REM PARSER_FAIL will be set on an error
@REM Note: Must avoid delayed expansion since filenames may contain ! character
setlocal disableDelayedExpansion
IF "%PARSER_FAIL%" NEQ "" GOTO :EOF
CALL SET LAST_ARG=%%%2%%
IF "%LAST_ARG%" EQU "" (
CALL :PARSE_OPTION_NAME %1 %~2 %~3 1
SET ARG_TYPE=NAME
) ELSE (
SET PS_SET_COMMAND=SET PS_%LAST_ARG%=%~3
SET ARG_TYPE=LAST_ARG
SET %~2=
)
CALL SET LAST_ARG=%%%2%%
IF "%LAST_ARG%%ARG_TYPE%" EQU "NAME" SET PARSER_FAIL=%~3
(
endlocal
SET PARSER_FAIL=%PARSER_FAIL%
SET %~2=%LAST_ARG%
%PS_SET_COMMAND%
)
GOTO :EOF
:PARSE_OPTION_VALUE
setlocal disableDelayedExpansion
@REM Parses value and verifies it is within the supplied list
@REM %1 - Valid option list
@REM %2 - In/out variable name; unset on error
CALL SET NAME=%~2
CALL SET SAVED_VALUE=%%%NAME%%%
CALL :PARSE_OPTION_NAME %1 %NAME% -%SAVED_VALUE%
CALL SET NEW_VALUE=%%%NAME%%%
IF "%NEW_VALUE%" EQU "" (
@ECHO ERROR: Invalid parameter: %NAME:~3%=%SAVED_VALUE% 1>&2
)
endlocal & SET %NAME%=%NEW_VALUE%
GOTO :EOF
:PARSE_OPTION_NAME
@REM Parses an option name
@REM %1 - Valid option list
@REM %2 - Out variable name; unset on error
@REM %3 - Current argument value
@REM %4 - Boolean indicating single character switches are valid
@REM Note: Delayed expansion safe because ! character is invalid in option name
setlocal enableDelayedExpansion
IF "%4" NEQ "" FOR %%I IN (%~1) DO @(
SET SHORT_NAME=%%~I
SET SHORT_ARG_!SHORT_NAME:~0,1!=%%~I
)
@SET OPTION_NAME=%~3
@(echo %OPTION_NAME%)| findstr /R /C:"[-/]..*">nul || GOTO :PARSE_OPTION_NAME_FAIL
@SET OPTION_NAME=%OPTION_NAME:~1%
IF "%4" NEQ "" (
IF "%OPTION_NAME%" EQU "%OPTION_NAME:~0,1%" (
IF "!SHORT_ARG_%OPTION_NAME:~0,1%!" NEQ "" SET OPTION_NAME=!SHORT_ARG_%OPTION_NAME:~0,1%!
)
)
@(echo %OPTION_NAME%)| findstr /R /C:".[ ][ ]*.">nul && GOTO :PARSE_OPTION_NAME_FAIL
@(echo %~1 )| findstr /I /C:" %OPTION_NAME% ">nul || GOTO :PARSE_OPTION_NAME_FAIL
FOR %%I IN (%~1) DO SET OPTION_NAME=!OPTION_NAME:%%~I=%%~I!
endlocal & SET %~2=%OPTION_NAME%
GOTO :EOF
:PARSE_OPTION_NAME_FAIL
endlocal & SET %~2=
GOTO :EOF
:MAKE_OR_CLEAN_DIRECTORY
@REM Create directory if it doesn't exist or clean it if it does
@REM %1 - Directory path to clean or create
@REM %* - Optional list of files/dirs to keep (in the base directory only)
setlocal disableDelayedExpansion
IF NOT EXIST "%~1" (
@ECHO Creating %~1
mkdir "%~1" && (
endlocal
GOTO :EOF
)
)
@ECHO Cleaning %~1 ...
SET KEEP_LIST=
:MAKE_OR_CLEAN_DIRECTORY_ARG_LOOP
IF "%~2" NEQ "" (
SET KEEP_LIST=%KEEP_LIST% "%~2"
SHIFT /2
GOTO :MAKE_OR_CLEAN_DIRECTORY_ARG_LOOP
)
for /F "usebackq delims=" %%I in (`dir /a /b "%~1"`) do (
(echo %KEEP_LIST%)| findstr /I /L /C:"\"%%I\"">nul || (
rmdir /s /q "%~1\%%I" 2>nul ) || del /q /f "%~1\%%I"
)
endlocal
GOTO :EOF
:TOLOWER
@REM Converts supplied environment variable to lowercase
@REM %1 - Input/output variable name
@REM Note: This is slow on very long strings, but is used only on very short ones
setlocal disableDelayedExpansion
@FOR %%b IN (a b c d e f g h i j k l m n o p q r s t u v w x y z) DO @CALL set %~1=%%%1:%%b=%%b%%
@CALL SET OUTPUT=%%%~1%%
endlocal & SET %~1=%OUTPUT%
GOTO :EOF
:CANONICALIZE_PATH
@REM Canonicalizes the path in the supplied variable
@REM %1 - Input/output variable containing path to canonicalize
@REM %2 - Optional base directory
setlocal
CALL :CANONICALIZE_PATH_INNER %1 %%%~1%% %2
endlocal & SET %~1=%OUTPUT%
GOTO :EOF
:CANONICALIZE_PATH_INNER
if "%~3" NEQ "" (pushd %3 || GOTO :EOF)
SET OUTPUT=%~f2
if "%~3" NEQ "" popd
GOTO :EOF
:DIFF_TIME
@REM Calculates elapsed time between two timestamps (TIME environment variable format)
@REM %1 - Output variable
@REM %2 - Start time
@REM %3 - End time
setlocal EnableDelayedExpansion
set START_ARG=%2
set END_ARG=%3
set END=!END_ARG:%TIME:~8,1%=%%100)*100+1!
set START=!START_ARG:%TIME:~8,1%=%%100)*100+1!
set /A DIFF=((((10!END:%TIME:~2,1%=%%100)*60+1!%%100)-((((10!START:%TIME:~2,1%=%%100)*60+1!%%100), DIFF-=(DIFF^>^>31)*24*60*60*100
set /A CC=DIFF%%100+100,DIFF/=100,SS=DIFF%%60+100,DIFF/=60,MM=DIFF%%60+100,HH=DIFF/60+100
@endlocal & set %1=%HH:~1%%TIME:~2,1%%MM:~1%%TIME:~2,1%%SS:~1%%TIME:~8,1%%CC:~1%
@GOTO :EOF
:WRITE_CUSTOM_SCRIPT_SKELETON
@REM Writes the following text to the supplied file
@REM %1 - Output filename
setlocal
@(
ECHO @ECHO.
ECHO @ECHO ********************************************************************************
ECHO @ECHO ** This is a custom run script skeleton.
ECHO @ECHO ********************************************************************************
ECHO @ECHO.
ECHO @ECHO ********************************************************************************
ECHO @ECHO ** The working directory is:
ECHO @ECHO ********************************************************************************
ECHO dir
ECHO @ECHO.
ECHO @ECHO ********************************************************************************
ECHO @ECHO ** The environment is:
ECHO @ECHO ********************************************************************************
ECHO set
ECHO @ECHO.
ECHO @ECHO ********************************************************************************
ECHO @ECHO ** Edit or replace this script to run custom steps after a successful build:
ECHO @ECHO ** %~1
ECHO @ECHO ********************************************************************************
ECHO @ECHO.
) > "%~1"
endlocal
GOTO :EOF

View File

@@ -238,7 +238,8 @@ endif()
set(OpenVDB_LIB_COMPONENTS "")
set(OpenVDB_DEBUG_SUFFIX "d" CACHE STRING "Suffix for the debug libraries")
get_property(_is_multi GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
# get_property(_is_multi GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
set(_is_multi FALSE)
foreach(COMPONENT ${OpenVDB_FIND_COMPONENTS})
set(LIB_NAME ${COMPONENT})

View File

@@ -1,29 +1,19 @@
# This is a wrapper of FindTBB which prefers the config scripts if available in the system
# but only if building with dynamic dependencies. The config scripts potentially belong
# to TBB >= 2020 which is incompatible with OpenVDB in our static dependency bundle.
# This workaround is useful for package maintainers on Linux systems to use newer versions
# of intel TBB (renamed to oneTBB from version 2021 up).
# ported from PrusaSlicer
set(_q "")
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
set(_q QUIET)
endif()
# Only consider the config scripts if not building with the static dependencies
# and this call is not made from a static dependency build (e.g. dep_OpenVDB will use this module)
# BUILD_SHARED_LIBS will always be defined for dependency projects and will be OFF.
# Newer versions of TBB also discourage from using TBB as a static library
if (NOT SLIC3R_STATIC AND (NOT DEFINED BUILD_SHARED_LIBS OR BUILD_SHARED_LIBS))
find_package(${CMAKE_FIND_PACKAGE_NAME} ${${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION} CONFIG ${_q})
if(NOT ${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
if (NOT ${CMAKE_FIND_PACKAGE_NAME}_FOUND)
message(STATUS "Falling back to MODULE search for ${CMAKE_FIND_PACKAGE_NAME}...")
else()
message(STATUS "${CMAKE_FIND_PACKAGE_NAME} found in ${${CMAKE_FIND_PACKAGE_NAME}_DIR}")
endif()
find_package(${CMAKE_FIND_PACKAGE_NAME} ${${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION} CONFIG ${_q})
if(NOT ${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
if (NOT ${CMAKE_FIND_PACKAGE_NAME}_FOUND)
message(STATUS "Falling back to MODULE search for ${CMAKE_FIND_PACKAGE_NAME}...")
else()
message(STATUS "${CMAKE_FIND_PACKAGE_NAME} found in ${${CMAKE_FIND_PACKAGE_NAME}_DIR}")
endif()
endif ()
endif()
if (NOT ${CMAKE_FIND_PACKAGE_NAME}_FOUND)
include(${CMAKE_CURRENT_LIST_DIR}/FindTBB.cmake.in)

View File

@@ -52,7 +52,7 @@
<string>OBJ</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>BambuStudio.icns</string>
<string>OrcaSlicer.icns</string>
<key>CFBundleTypeName</key>
<string>STL</string>
<key>CFBundleTypeRole</key>
@@ -69,7 +69,7 @@
<string>AMF</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>BambuStudio.icns</string>
<string>OrcaSlicer.icns</string>
<key>CFBundleTypeName</key>
<string>AMF</string>
<key>CFBundleTypeRole</key>
@@ -86,7 +86,7 @@
<string>3MF</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>BambuStudio.icns</string>
<string>OrcaSlicer.icns</string>
<key>CFBundleTypeName</key>
<string>3MF</string>
<key>CFBundleTypeRole</key>
@@ -118,5 +118,13 @@
<true/>
<key>NSHumanReadableCopyright</key>
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
<key>NSAppTransportSecurity</key>
<dict>
<!-- Disable App Transport Security. Resolves https://github.com/SoftFever/OrcaSlicer/issues/791 -->
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
</dict>
</plist>

View File

@@ -7,7 +7,7 @@ else()
endif()
if(IS_CROSS_COMPILE AND APPLE)
bambustudio_add_cmake_project(Blosc
orcaslicer_add_cmake_project(Blosc
#URL https://github.com/Blosc/c-blosc/archive/refs/tags/v1.17.0.zip
#URL_HASH SHA256=7463a1df566704f212263312717ab2c36b45d45cba6cd0dccebf91b2cc4b4da9
URL https://github.com/tamasmeszaros/c-blosc/archive/refs/heads/v1.17.0_tm.zip
@@ -26,7 +26,7 @@ if(IS_CROSS_COMPILE AND APPLE)
-DDEACTIVATE_AVX2=ON
)
else()
bambustudio_add_cmake_project(Blosc
orcaslicer_add_cmake_project(Blosc
#URL https://github.com/Blosc/c-blosc/archive/refs/tags/v1.17.0.zip
#URL_HASH SHA256=7463a1df566704f212263312717ab2c36b45d45cba6cd0dccebf91b2cc4b4da9
URL https://github.com/tamasmeszaros/c-blosc/archive/refs/heads/v1.17.0_tm.zip

View File

@@ -90,7 +90,7 @@ if (_cfg_rel GREATER -1 OR _cfg_relwdeb GREATER -1 OR _cfg_minsizerel GREATER -1
list(APPEND _boost_variants release)
endif()
if (_cfg_deb GREATER -1 OR (MSVC AND ${DEP_DEBUG}) )
if (MSVC AND ${DEP_DEBUG} )
list(APPEND _boost_variants debug)
endif()

View File

@@ -1,4 +1,4 @@
bambustudio_add_cmake_project(
orcaslicer_add_cmake_project(
CGAL
GIT_REPOSITORY https://github.com/CGAL/cgal.git
GIT_TAG caacd806dc55c61cc68adaad99f2240f00493b29 # releases/CGAL-5.3

6
deps/CMakeLists.txt vendored
View File

@@ -34,7 +34,7 @@ endif ()
set(DESTDIR "${CMAKE_CURRENT_BINARY_DIR}/destdir" CACHE PATH "Destination directory")
set(DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH "Path for downloaded source packages.")
option(DEP_DEBUG "Build debug variants (only applicable on Windows)" ON)
option(DEP_DEBUG "Build debug variants (only applicable on Windows)" OFF)
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
option(DEP_WX_GTK3 "Build wxWidgets against GTK3" OFF)
@@ -85,7 +85,7 @@ if (NOT _is_multi AND NOT CMAKE_BUILD_TYPE)
message(STATUS "Forcing CMAKE_BUILD_TYPE to Release as it was not specified.")
endif ()
function(bambustudio_add_cmake_project projectname)
function(orcaslicer_add_cmake_project projectname)
cmake_parse_arguments(P_ARGS "" "INSTALL_DIR;BUILD_COMMAND;INSTALL_COMMAND" "CMAKE_ARGS" ${ARGN})
set(_configs_line -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE})
@@ -145,7 +145,7 @@ else()
endif()
endfunction(bambustudio_add_cmake_project)
endfunction(orcaslicer_add_cmake_project)
if (MSVC)

View File

@@ -55,7 +55,7 @@ else()
set(_curl_static ON)
endif()
bambustudio_add_cmake_project(CURL
orcaslicer_add_cmake_project(CURL
# GIT_REPOSITORY https://github.com/curl/curl.git
# GIT_TAG curl-7_75_0
URL https://github.com/curl/curl/archive/refs/tags/curl-7_75_0.zip

View File

@@ -1,4 +1,4 @@
bambustudio_add_cmake_project(Cereal
orcaslicer_add_cmake_project(Cereal
URL "https://github.com/USCiLab/cereal/archive/v1.2.2.tar.gz"
URL_HASH SHA256=1921f26d2e1daf9132da3c432e2fd02093ecaedf846e65d7679ddf868c7289c4
CMAKE_ARGS

View File

@@ -1,4 +1,4 @@
bambustudio_add_cmake_project(EXPAT
orcaslicer_add_cmake_project(EXPAT
# GIT_REPOSITORY https://github.com/nigels-com/glew.git
# GIT_TAG 3a8eff7 # 2.1.0
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/expat

View File

@@ -10,7 +10,7 @@ else()
set(_ft_disable_zlib "-D FT_DISABLE_ZLIB=TRUE")
endif()
bambustudio_add_cmake_project(FREETYPE
orcaslicer_add_cmake_project(FREETYPE
URL https://mirror.ossplanet.net/nongnu/freetype/freetype-2.12.1.tar.gz
URL_HASH SHA256=efe71fd4b8246f1b0b1b9bfca13cfff1c9ad85930340c27df469733bbb620938
#DEPENDS ${ZLIB_PKG}

View File

@@ -2,7 +2,7 @@
set(OpenGL_GL_PREFERENCE "LEGACY") # to prevent a nasty warning by cmake
find_package(OpenGL QUIET REQUIRED)
bambustudio_add_cmake_project(
orcaslicer_add_cmake_project(
GLEW
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/glew
)

View File

@@ -12,7 +12,7 @@ else()
set(_glfw_use_wayland "-DGLFW_USE_WAYLAND=FF")
endif()
bambustudio_add_cmake_project(GLFW
orcaslicer_add_cmake_project(GLFW
URL https://github.com/glfw/glfw/archive/refs/tags/3.3.7.zip
URL_HASH SHA256=e02d956935e5b9fb4abf90e2c2e07c9a0526d7eacae8ee5353484c69a2a76cd0
#DEPENDS dep_Boost

View File

@@ -11,7 +11,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
endif ()
endif()
bambustudio_add_cmake_project(JPEG
orcaslicer_add_cmake_project(JPEG
URL https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/2.0.6.zip
URL_HASH SHA256=017bdc33ff3a72e11301c0feb4657cb27719d7f97fa67a78ed506c594218bbf1
DEPENDS ${ZLIB_PKG}

View File

@@ -1,4 +1,4 @@
bambustudio_add_cmake_project(NLopt
orcaslicer_add_cmake_project(NLopt
URL "https://github.com/stevengj/nlopt/archive/v2.5.0.tar.gz"
URL_HASH SHA256=c6dd7a5701fff8ad5ebb45a3dc8e757e61d52658de3918e38bab233e7fd3b4ae
CMAKE_ARGS

View File

@@ -4,11 +4,15 @@ else()
set(library_build_type "Static")
endif()
bambustudio_add_cmake_project(OCCT
# get relative path of CMAKE_BINARY_DIR against root source directory
file(RELATIVE_PATH BINARY_DIR_REL ${CMAKE_SOURCE_DIR}/.. ${CMAKE_BINARY_DIR})
orcaslicer_add_cmake_project(OCCT
URL https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_6_0.zip
URL_HASH SHA256=28334f0e98f1b1629799783e9b4d21e05349d89e695809d7e6dfa45ea43e1dbc
#PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch
PATCH_COMMAND git apply --directory deps/build/dep_OCCT-prefix/src/dep_OCCT --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch
PATCH_COMMAND git apply --directory ${BINARY_DIR_REL}/dep_OCCT-prefix/src/dep_OCCT --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch
#DEPENDS dep_Boost
#DEPENDS dep_FREETYPE
CMAKE_ARGS

View File

@@ -1,5 +1,5 @@
bambustudio_add_cmake_project(OpenCSG
orcaslicer_add_cmake_project(OpenCSG
# GIT_REPOSITORY https://github.com/floriankirsch/OpenCSG.git
# GIT_TAG 83e274457b46c9ad11a4ee599203250b1618f3b9 #v1.4.2
URL https://github.com/floriankirsch/OpenCSG/archive/refs/tags/opencsg-1-4-2-release.zip

31
deps/OpenEXR/0001-OpenEXR-GCC13.patch vendored Normal file
View File

@@ -0,0 +1,31 @@
--- a/OpenEXR/IlmImf/ImfDwaCompressor.cpp
+++ b/OpenEXR/IlmImf/ImfDwaCompressor.cpp
@@ -159,6 +159,7 @@
#include <limits>
#include <cstddef>
+#include <cstdint>
// Windows specific addition to prevent the indirect import of the redefined min/max macros
--- a/OpenEXR/IlmImf/ImfHuf.h
+++ b/OpenEXR/IlmImf/ImfHuf.h
@@ -40,6 +40,8 @@
#include "ImfExport.h"
#include "ImfNamespace.h"
+#include <cstdint>
+
//-----------------------------------------------------------------------------
//
// 16-bit Huffman compression and decompression:
--- a/OpenEXR/IlmImf/ImfMisc.h
+++ b/OpenEXR/IlmImf/ImfMisc.h
@@ -51,6 +51,7 @@
#include "ImfForward.h"
#include <cstddef>
+#include <cstdint>
#include <vector>

View File

@@ -29,16 +29,24 @@ if (APPLE AND IS_CROSS_COMPILE)
${_cmake_openexr_arch}
)
else()
bambustudio_add_cmake_project(OpenEXR
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(_patch_cmd ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-OpenEXR-GCC13.patch)
else ()
set(_patch_cmd "")
endif ()
orcaslicer_add_cmake_project(OpenEXR
# GIT_REPOSITORY https://github.com/openexr/openexr.git
URL https://github.com/AcademySoftwareFoundation/openexr/archive/refs/tags/v2.5.5.zip
URL_HASH SHA256=0307a3d7e1fa1e77e9d84d7e9a8694583fbbbfd50bdc6884e2c96b8ef6b902de
PATCH_COMMAND ${_patch_cmd}
DEPENDS ${ZLIB_PKG}
GIT_TAG v2.5.5
CMAKE_ARGS
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DBUILD_TESTING=OFF
-DPYILMBASE_ENABLE:BOOL=OFF
-DBUILD_TESTING=OFF
-DPYILMBASE_ENABLE:BOOL=OFF
-DOPENEXR_VIEWERS_ENABLE:BOOL=OFF
-DOPENEXR_BUILD_UTILS:BOOL=OFF
)

View File

@@ -6,9 +6,10 @@ else()
set(_build_static ON)
endif()
bambustudio_add_cmake_project(OpenVDB
URL https://github.com/tamasmeszaros/openvdb/archive/refs/tags/v6.2.1-prusa3d.zip #v6.2.1 patched
URL_HASH SHA256=caf9f0c91976722883ff9cb32420ef142af22f7e625fc643b91c23d6e4172f62
orcaslicer_add_cmake_project(OpenVDB
# support vs2022, update to 8.2
URL https://github.com/tamasmeszaros/openvdb/archive/a68fd58d0e2b85f01adeb8b13d7555183ab10aa5.zip
URL_HASH SHA256=f353e7b99bd0cbfc27ac9082de51acf32a8bc0b3e21ff9661ecca6f205ec1d81
DEPENDS dep_TBB dep_Blosc dep_OpenEXR dep_Boost
CMAKE_ARGS
-DCMAKE_POSITION_INDEPENDENT_CODE=ON

4
deps/PNG/PNG.cmake vendored
View File

@@ -7,7 +7,7 @@ endif ()
if(APPLE AND IS_CROSS_COMPILE)
# TODO: check if it doesn't create problem when compiling from arm to x86_64
bambustudio_add_cmake_project(PNG
orcaslicer_add_cmake_project(PNG
GIT_REPOSITORY https://github.com/glennrp/libpng.git
GIT_TAG v1.6.35
DEPENDS ${ZLIB_PKG}
@@ -26,7 +26,7 @@ set(_patch_step "")
if (APPLE)
set(_patch_step PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/PNG.patch)
endif ()
bambustudio_add_cmake_project(PNG
orcaslicer_add_cmake_project(PNG
# GIT_REPOSITORY https://github.com/glennrp/libpng.git
# GIT_TAG v1.6.35
URL https://github.com/glennrp/libpng/archive/refs/tags/v1.6.35.zip

View File

@@ -1,5 +1,5 @@
include(GNUInstallDirs)
bambustudio_add_cmake_project(Qhull
orcaslicer_add_cmake_project(Qhull
URL "https://github.com/qhull/qhull/archive/v8.0.1.zip"
URL_HASH SHA256=5287f5edd6a0372588f5d6640799086a4033d89d19711023ef8229dd9301d69b
CMAKE_ARGS

11
deps/TBB/0001-TBB-GCC13.patch vendored Normal file
View File

@@ -0,0 +1,11 @@
--- a/include/tbb/task.h
+++ b/include/tbb/task.h
@@ -219,7 +219,7 @@
#if __TBB_TASK_PRIORITY
//! Pointer to the next offloaded lower priority task.
/** Used to maintain a list of offloaded tasks inside the scheduler. **/
- task* next_offloaded;
+ tbb::task* next_offloaded;
};
#endif /* __TBB_TASK_PRIORITY */

9
deps/TBB/TBB.cmake vendored
View File

@@ -1,11 +1,12 @@
bambustudio_add_cmake_project(
orcaslicer_add_cmake_project(
TBB
URL "https://github.com/wjakob/tbb/archive/a0dc9bf76d0120f917b641ed095360448cabc85b.tar.gz"
URL_HASH SHA256=0545cb6033bd1873fcae3ea304def720a380a88292726943ae3b9b207f322efe
URL "https://github.com/oneapi-src/oneTBB/archive/refs/tags/v2021.5.0.zip"
URL_HASH SHA256=83ea786c964a384dd72534f9854b419716f412f9d43c0be88d41874763e7bb47
#PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-TBB-GCC13.patch
CMAKE_ARGS
-DTBB_BUILD_SHARED=OFF
-DTBB_BUILD_TESTS=OFF
-DTBB_BUILD_TESTS=OFF
-DTBB_TEST=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DCMAKE_DEBUG_POSTFIX=_debug
)

View File

@@ -2,7 +2,7 @@ find_package(OpenGL QUIET REQUIRED)
if (APPLE)
message(STATUS "Compiling TIFF for macos ${CMAKE_SYSTEM_VERSION}.")
bambustudio_add_cmake_project(TIFF
orcaslicer_add_cmake_project(TIFF
URL https://gitlab.com/libtiff/libtiff/-/archive/v4.3.0/libtiff-v4.3.0.zip
URL_HASH SHA256=4fca1b582c88319f3ad6ecd5b46320eadaf5eb4ef6f6c32d44caaae4a03d0726
DEPENDS ${ZLIB_PKG} ${PNG_PKG} dep_JPEG
@@ -14,7 +14,7 @@ if (APPLE)
-Dpixarlog:BOOL=OFF
)
else()
bambustudio_add_cmake_project(TIFF
orcaslicer_add_cmake_project(TIFF
URL https://gitlab.com/libtiff/libtiff/-/archive/v4.1.0/libtiff-v4.1.0.zip
URL_HASH SHA256=c56edfacef0a60c0de3e6489194fcb2f24c03dbb550a8a7de5938642d045bd32
DEPENDS ${ZLIB_PKG} ${PNG_PKG} dep_JPEG

View File

@@ -1,4 +1,4 @@
bambustudio_add_cmake_project(ZLIB
orcaslicer_add_cmake_project(ZLIB
# GIT_REPOSITORY https://github.com/madler/zlib.git
# GIT_TAG v1.2.11
URL https://github.com/madler/zlib/archive/refs/tags/v1.2.11.zip

View File

@@ -26,7 +26,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(_patch_cmd ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-wxWidget-fix.patch)
endif ()
bambustudio_add_cmake_project(
orcaslicer_add_cmake_project(
wxWidgets
GIT_REPOSITORY "https://github.com/wxWidgets/wxWidgets"
GIT_TAG ${_wx_git_tag}

View File

@@ -1,12 +1,13 @@
- [Flow rate](#Flow-rate)
- [Pressure Advance](#Pressure-Advance)
1. [Line method](#Line-method)
2. [Tower method](#Tower-method)
2. [Pattern method](#Pattern-method)
3. [Tower method](#Tower-method)
- [Temp tower](#Temp-tower)
- [Retraction test](#Retraction-test)
- [Orca Tolerance Test](#Orca-Tolerance-Test)
- [Advanced calibration]
1. [Max Volumetric speed]
- [Advanced calibration](#Advanced-Calibration)
1. [Max Volumetric speed](#Max-Volumetric-speed)
2. [VFA]
**NOTE**: After completing the calibration process, remember to create a new project in order to exit the calibration mode.
@@ -32,10 +33,13 @@ Steps
![image](https://user-images.githubusercontent.com/103989404/210139721-919be130-fbba-4e3a-aa58-8a563e8c7792.png)
# Pressure Advance
I will present two approaches for calibrating the pressure advance value. Both methods have their own advantages and disadvantages. It is important to note that each method has two versions: one for a direct drive extruder and one for a Bowden extruder. Make sure to select the appropriate version for your test.
##### *NOTE: For Bambulab X1/X1C users, make sure you do not select the 'Flow calibration' option.*
Orca Slicer includes three approaches for calibrating the pressure advance value. Each method has its own advantages and disadvantages. It is important to note that each method has two versions: one for a direct drive extruder and one for a Bowden extruder. Make sure to select the appropriate version for your test.
##### *NOTE: For Bambulab X1/X1C users, make sure you do not select the 'Flow calibration' option when printings.*
![uncheck](https://user-images.githubusercontent.com/103989404/221345187-3c317a46-4d85-4221-99b9-adb5c7f48026.jpeg)
### Line method
The line method is quick and straightforward to test. However, its accuracy highly depends on your first layer quality. It is suggested to turn on the bed mesh leveling for this test.
Steps:
1. Select the printer, filament, and process you would like to use for the test.
@@ -48,7 +52,27 @@ Steps:
![line_0 016](https://user-images.githubusercontent.com/103989404/210140046-dc5adf6a-42e8-48cd-950c-5e81558da967.jpg)
![image](https://user-images.githubusercontent.com/103989404/210140079-61a4aba4-ae01-4988-9f8e-2a45a90cdb7d.png)
### Pattern method
The pattern method is adapted from [Andrew Ellis' pattern method generator](https://ellis3dp.com/Pressure_Linear_Advance_Tool/), which was itself derived from the [Marlin pattern method](https://marlinfw.org/tools/lin_advance/k-factor.html) developed by [Sineos](https://github.com/Sineos/k-factorjs).
[Instructions for using and reading the pattern method](https://ellis3dp.com/Print-Tuning-Guide/articles/pressure_linear_advance/pattern_method.html) are provided in [Ellis' Print Tuning Guide](https://ellis3dp.com/Print-Tuning-Guide/), with only a few Orca Slicer differences to note.
First and foremost, when you initiate the test, you'll only see a small rectangular prism on the plate. This object serves a few purposes:
1. The test pattern itself is added in as custom G-Code at each layer, same as you could do by hand actually. The rectangular prism gives us the layers in which to insert that G-Code. This also means that **you'll see the full test pattern when you move to the Preview pane**
2. The prism acts as a handle, enabling you to move the test pattern wherever you'd like on the plate by moving the prism
3. The filament selected for the prism is also used for the test pattern
Next, Ellis' generator provided the ability to adjust specific printer, filament, and print profile settings. You can make these same changes in Orca Slicer by adjusting the settings in the Prepare pane as you would with any other print. When you initiate the calibration test, Ellis' default settings are applied. A few things to note about these settings:
1. Ellis specified line widths as a percent of filament diameter. The Orca pattern method does the same to provide its suggested defaults, making use of Ellis' percentages in combination with your specified nozzle diameter
2. In terms of line width, the pattern only makes use of the `Default` and `First layer` widths
3. In terms of speed, the pattern only uses the `First layer speed -> First layer` and `Other layers speed -> Outer wall` speeds
4. The infill pattern beneath the numbers cannot be changed becuase it's not actually an infill pattern pulled from the settings. All of the pattern G-Code is custom written, so that "infill" is, effectively, hand-drawn and so not processed through the usual channels that would enable Orca to recognize it as infill
### Tower method
The tower method may take a bit more time to complete, but it does not rely on the quality of the first layer.
The PA value for this test will be increased by 0.002 for every 1 mm increase in height. (**NOTE** 0.02 for Bowden)
Steps:
@@ -82,6 +106,27 @@ You can assess the tolerance using either an M6 Allen key or the printed hexagon
![image](./images/OrcaToleranceTes_m6.jpg)
![image](./images/OrcaToleranceTest_print.jpg)
# Advanced Calibration
## Max Volumetric speed
This is a test designed to calibrate the maximum volumetric speed of the specific filament. The generic or 3rd party filament types may not have the correct volumetric flow rate set in the filament. This test will help you to find the maximum volumetric speed of the filament.
You will be promted to enter the settings for the test: start volumetric speed, end volumentric speed, and step. It is recommended to use the default values (5mm³/s start, 20mm³/s end, with a step of 0.5), unless you already have an idea of the lower or upper limit for your filament. Select "OK", slice the plate, and send it to the printer.
Once printed, take note of where the layers begin to fail and where the quality begins to suffer. Pay attention to changes from matte to shiny as well.
![image](./images/vmf_measurement_point.jpg)
Using calipers or a ruler, measure the height of the print at that point. Use the following calculation to determine the correct max flow value: `start + (height-measured * step)` . For example in the photo below, and using the default setting values, the print quality began to suffer at 19mm measured, so the calculation would be: `5 + (19 * 0.5)` , or `13mm³/s` using the default values. Enter your number into the "Max volumetric speed" value in the filament settings.
![image](./images/caliper_sample_mvf.jpg)
You can also return to OrcaSlicer in the "Preview" tab, make sure the color scheme "flow" is selected. Scroll down to the layer height that you measured, and click on the toolhead slider. This will indicate the max flow level for your filmanet.
![image](./images/max_volumetric_flow.jpg)
#### *NOTE You may also choose to conservatively reduce the flow by 5-10% to ensure print quality.*
***
*Credits:*
- *The Flowrate test and retraction test is inspired by [SuperSlicer](https://github.com/supermerill/SuperSlicer)*

View File

@@ -12,24 +12,24 @@ Full manual for GNUgettext can be seen here: http://www.gnu.org/software/gettext
### Scenario 1. How do I add a translation or fix an existing translation
1. Get PO-file 'BambuStudio_xx.pot' from corresponding sub-folder here:
https://github.com/bambulab/BambuStudio/tree/master/bbl/i18n
1. Get PO-file 'OrcaSlicer_xx.pot' from corresponding sub-folder here:
https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n
2. Open this file in PoEdit as "Edit a translation"
3. Apply your corrections to the translation
4. Push changed BambuStudio_xx.po into the original folder
5. copy BambuStudio_xx.mo into resources/i18n/xx and rename it to BambuStudio.mo, then push the changed file.
4. Push changed OrcaSlicer_xx.po into the original folder
5. copy OrcaSlicer_xx.mo into resources/i18n/xx and rename it to OrcaSlicer.mo, then push the changed file.
### Scenario 2. How do I add a new language support
1. Get file BambuStudio.pot here :
https://github.com/bambulab/BambuStudio/tree/master/bbl/i18n
1. Get file OrcaSlicer.pot here :
https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n
2. Open it in PoEdit for "Create new translation"
3. Select Translation Language (for example French).
4. As a result you will have fr.po - the file containing translation to French.
Notice. When the translation is complete you need to:
- Rename the file to BambuStudio_fr.po
- Click "Save file" button. BambuStudio_fr.mo will be created immediately
- Bambu_Studio_fr.po needs to be copied into the sub-folder fr of https://github.com/bambulab/BambuStudio/tree/master/bbl/i18n, and be pushed
- copy BambuStudio_xx.mo into resources/i18n/xx and rename it to BambuStudio.mo, then push the changed file.
- Rename the file to OrcaSlicer_fr.po
- Click "Save file" button. OrcaSlicer_fr.mo will be created immediately
- Bambu_Studio_fr.po needs to be copied into the sub-folder fr of https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n, and be pushed
- copy OrcaSlicer_xx.mo into resources/i18n/xx and rename it to OrcaSlicer.mo, then push the changed file.
( name of folder "fr" means "French" - the translation language).
### Scenario 3. How do I add a new text resource when implementing a feature to Orca Slicer
@@ -43,11 +43,11 @@ If you add new file resource, add it to the list of files containing macro `L()`
### Scenario 4. How do I use GNUgettext to localize my own application taking Orca Slicer as an example
1. For convenience create a list of files with this macro `L(s)`. We have
https://github.com/bambulab/BambuStudio/blob/master/bbl/i18n/list.txt.
https://github.com/softfever/OrcaSlicer/blob/master/localization/i18n/list.txt.
2. Create template file(*.POT) with GNUgettext command:
```
xgettext --keyword=L --add-comments=TRN --from-code=UTF-8 --debug -o BambuStudio.pot -f list.txt
xgettext --keyword=L --add-comments=TRN --from-code=UTF-8 --debug -o OrcaSlicer.pot -f list.txt
```
Use flag `--from-code=UTF-8` to specify that the source strings are in UTF-8 encoding

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

View File

@@ -6,48 +6,58 @@
"files": [
{
"type": "po",
"pattern": "bbl/i18n/en/OrcaSlicer_en.po",
"pattern": "localization/i18n/en/OrcaSlicer_en.po",
"lang": "en"
},
{
"type": "po",
"pattern": "bbl/i18n/fr/OrcaSlicer_fr.po",
"pattern": "localization/i18n/fr/OrcaSlicer_fr.po",
"lang": "fr"
},
{
"type": "po",
"pattern": "bbl/i18n/de/OrcaSlicer_de.po",
"pattern": "localization/i18n/de/OrcaSlicer_de.po",
"lang": "de"
},
{
"type": "po",
"pattern": "bbl/i18n/sv/OrcaSlicer_sv.po",
"pattern": "localization/i18n/sv/OrcaSlicer_sv.po",
"lang": "sv"
},
{
"type": "po",
"pattern": "bbl/i18n/es/OrcaSlicer_es.po",
"pattern": "localization/i18n/es/OrcaSlicer_es.po",
"lang": "es"
},
{
"type": "po",
"pattern": "bbl/i18n/nl/OrcaSlicer_nl.po",
"pattern": "localization/i18n/nl/OrcaSlicer_nl.po",
"lang": "nl"
},
{
"type": "po",
"pattern": "bbl/i18n/hu/OrcaSlicer_hu.po",
"pattern": "localization/i18n/hu/OrcaSlicer_hu.po",
"lang": "hu"
},
{
"type": "po",
"pattern": "bbl/i18n/ja/OrcaSlicer_ja.po",
"pattern": "localization/i18n/ja/OrcaSlicer_ja.po",
"lang": "ja"
},
{
"type": "po",
"pattern": "localization/i18n/ko/OrcaSlicer_ko.po",
"lang": "ko"
},
{
"type": "po",
"pattern": "localization/i18n/ru/OrcaSlicer_ru.po",
"lang": "ru"
}
]
},
"download": {
"folder": "bbl/i18n",
"folder": "localization/i18n",
"includeSourceLang" : "true",
"files": {
"output": "${lang}/OrcaSlicer_${lang}.po"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-27 18:30+0800\n"
"POT-Creation-Date: 2023-08-22 19:19+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,18 +18,6 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
msgid "Maximum speed of X axis"
msgstr ""
msgid "Maximum speed of Y axis"
msgstr ""
msgid "Maximum speed of Z axis"
msgstr ""
msgid "Maximum speed of E axis"
msgstr ""
msgid "Supports Painting"
msgstr ""
@@ -668,7 +656,7 @@ msgid "Open Project"
msgstr ""
msgid ""
"The version of Bambu studio is too low and needs to be updated to the latest "
"The version of Orca Slicer is too low and needs to be updated to the latest "
"version before it can be used normally"
msgstr ""
@@ -859,6 +847,12 @@ msgstr ""
msgid "Set as individual objects"
msgstr ""
msgid "Fill bed with copies"
msgstr ""
msgid "Fill the remaining area of bed with copies of the selected object"
msgstr ""
msgid "Printable"
msgstr ""
@@ -1561,6 +1555,15 @@ msgstr ""
msgid "Orienting"
msgstr ""
msgid "Filling bed "
msgstr ""
msgid "Bed filling canceled."
msgstr ""
msgid "Bed filling done."
msgstr ""
msgid "Error! Unable to create thread!"
msgstr ""
@@ -1850,7 +1853,10 @@ msgstr ""
msgid "You need to select the material type and color first."
msgstr ""
msgid "Other color"
msgid "Other Color"
msgstr ""
msgid "Custom Color"
msgstr ""
msgid "Dynamic flow calibration"
@@ -2794,6 +2800,9 @@ msgstr ""
msgid "An object is layed over the boundary of plate."
msgstr ""
msgid "A G-code path goes beyond the max print height."
msgstr ""
msgid "A G-code path goes beyond the boundary of plate."
msgstr ""
@@ -2806,12 +2815,6 @@ msgid ""
"confirming that the height is within the build volume."
msgstr ""
msgid "Jump to"
msgstr ""
msgid "ERROR:"
msgstr ""
msgid "Calibration step selection"
msgstr ""
@@ -3366,7 +3369,7 @@ msgstr ""
msgid ""
"Another virtual camera is running.\n"
"Bambu Studio supports only a single virtual camera.\n"
"Orca Slicer supports only a single virtual camera.\n"
"Do you want to stop this virtual camera?"
msgstr ""
@@ -3759,6 +3762,9 @@ msgstr ""
msgid "Slice ok."
msgstr ""
msgid "Jump to"
msgstr ""
msgid "Error:"
msgstr ""
@@ -3768,6 +3774,9 @@ msgstr ""
msgid "Export successfully."
msgstr ""
msgid "Serious warning:"
msgstr ""
msgid " (Repair)"
msgstr ""
@@ -4240,6 +4249,11 @@ msgid ""
"on the printer."
msgstr ""
msgid ""
"Unable to perform boolean operation on model meshes. Only positive parts "
"will be exported."
msgstr ""
msgid ""
"Print By Object: \n"
"Suggest to use auto-arrange to avoid collisions when printing."
@@ -4260,6 +4274,14 @@ msgstr ""
msgid "Plate Settings"
msgstr ""
#, possible-boost-format
msgid "Number of currently selected parts: %1%\n"
msgstr ""
#, possible-boost-format
msgid "Number of currently selected objects: %1%\n"
msgstr ""
#, possible-boost-format
msgid "Part name: %1%\n"
msgstr ""
@@ -4354,6 +4376,9 @@ msgstr ""
msgid "Login Region"
msgstr ""
msgid "Stealth Mode"
msgstr ""
msgid "Metric"
msgstr ""
@@ -4588,6 +4613,12 @@ msgstr ""
msgid "Plate name"
msgstr ""
msgid "Customize"
msgstr ""
msgid "First Layer print sequence"
msgstr ""
msgid "Same as Global Bed Type"
msgstr ""
@@ -5007,6 +5038,12 @@ msgid ""
"the overhang degree range and wall speed is used"
msgstr ""
msgid "Bridge"
msgstr ""
msgid "Set speed for external and internal bridges"
msgstr ""
msgid "Travel speed"
msgstr ""
@@ -5073,9 +5110,6 @@ msgstr ""
msgid "Print temperature"
msgstr ""
msgid "Chamber temperature"
msgstr ""
msgid "Nozzle"
msgstr ""
@@ -5204,6 +5238,9 @@ msgstr ""
msgid "Layer height limits"
msgstr ""
msgid "Lift Z Enforcement"
msgstr ""
msgid "Retraction when switching material"
msgstr ""
@@ -5930,12 +5967,15 @@ msgstr ""
msgid "Bottom surface"
msgstr ""
msgid "Bridge"
msgid "Internal Bridge"
msgstr ""
msgid "Gap infill"
msgstr ""
msgid "Skirt"
msgstr ""
msgid "Support interface"
msgstr ""
@@ -6140,6 +6180,22 @@ msgstr ""
msgid "Layer height cannot exceed nozzle diameter"
msgstr ""
msgid ""
"Relative extruder addressing requires resetting the extruder position at "
"each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to "
"layer_gcode."
msgstr ""
msgid ""
"\"G92 E0\" was found in before_layer_gcode, which is incompatible with "
"absolute extruder addressing."
msgstr ""
msgid ""
"\"G92 E0\" was found in layer_gcode, which is incompatible with absolute "
"extruder addressing."
msgstr ""
#, possible-c-format, possible-boost-format
msgid "Plate %d: %s does not support filament %s"
msgstr ""
@@ -6335,6 +6391,9 @@ msgstr ""
msgid "Bed types supported by the printer"
msgstr ""
msgid "First layer print sequence"
msgstr ""
msgid "This G-code is inserted at every layer change before lifting z"
msgstr ""
@@ -6439,6 +6498,21 @@ msgid ""
"pattern"
msgstr ""
msgid "One wall threshold"
msgstr ""
#, possible-c-format, possible-boost-format
msgid ""
"If a top surface has to be printed and it's partially covered by another "
"layer, it won't be considered at a top layer where its width is below this "
"value. This can be useful to not let the 'one perimeter on top' trigger on "
"surface that should be covered only by perimeters. This value can be a mm or "
"a % of the perimeter extrusion width.\n"
"Warning: If enabled, artifacts can be created is you have some thin features "
"on the next layer, like letters. Set this setting to 0 to remove these "
"artifacts."
msgstr ""
msgid "Only one wall on first layer"
msgstr ""
@@ -6459,12 +6533,26 @@ msgstr ""
msgid "Enable this option to slow printing down for different overhang degree"
msgstr ""
msgid "mm/s"
msgid "mm/s or %"
msgstr ""
msgid "External"
msgstr ""
msgid "Speed of bridge and completely overhang wall"
msgstr ""
msgid "mm/s"
msgstr ""
msgid "Internal"
msgstr ""
msgid ""
"Speed of internal bridge. If the value is expressed as a percentage, it will "
"be calculated based on the bridge_speed. Default value is 150%."
msgstr ""
msgid "Brim width"
msgstr ""
@@ -6479,7 +6567,10 @@ msgid ""
"models. Auto means the brim width is analysed and calculated automatically."
msgstr ""
msgid "outer_only"
msgid "Mouse ear"
msgstr ""
msgid "Outer brim only"
msgstr ""
msgid "Inner brim only"
@@ -6496,6 +6587,30 @@ msgid ""
"easily"
msgstr ""
msgid "Brim ears"
msgstr ""
msgid "Only draw brim over the sharp edges of the model."
msgstr ""
msgid "Brim ear max angle"
msgstr ""
msgid ""
"Maximum angle to let a brim ear appear. \n"
"If set to 0, no brim will be created. \n"
"If set to ~180, brim will be created on everything but straight sections."
msgstr ""
msgid "Brim ear detection radius"
msgstr ""
msgid ""
"The geometry will be decimated before dectecting sharp angles. This "
"parameter indicates the minimum length of the deviation for the decimation.\n"
"0 to deactivate"
msgstr ""
msgid "Compatible machine"
msgstr ""
@@ -6611,11 +6726,11 @@ msgid "Internal bridge support thickness"
msgstr ""
msgid ""
"If enabled, Studio will generate support loops under the contours of "
"internal bridges.These support loops could prevent internal bridges from "
"extruding over the air and improve the top surface quality, especially when "
"the sparse infill density is low.This value determines the thickness of the "
"support loops. 0 means disable this feature"
"If enabled, support loops will be generated under the contours of internal "
"bridges.These support loops could prevent internal bridges from extruding "
"over the air and improve the top surface quality, especially when the sparse "
"infill density is low.This value determines the thickness of the support "
"loops. 0 means disable this feature"
msgstr ""
msgid "Top surface pattern"
@@ -6654,7 +6769,17 @@ msgstr ""
msgid "Line pattern of bottom surface infill, not bridge infill"
msgstr ""
msgid "Line width of outer wall"
msgid "Internal solid infill pattern"
msgstr ""
msgid ""
"Line pattern of internal solid infill. if the detect nattow internal solid "
"infill be enabled, the concentric pattern will be used for the small area."
msgstr ""
msgid ""
"Line width of outer wall. If expressed as a %, it will be computed over the "
"nozzle diameter."
msgstr ""
msgid ""
@@ -6672,9 +6797,6 @@ msgid ""
"Set to zero for auto."
msgstr ""
msgid "mm/s or %"
msgstr ""
msgid "Small perimeters threshold"
msgstr ""
@@ -6755,7 +6877,9 @@ msgstr ""
msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)"
msgstr ""
msgid "Default line width if some line width is set to be zero"
msgid ""
"Default line width if other line widths are set to 0. If expressed as a %, "
"it will be computed over the nozzle diameter."
msgstr ""
msgid "Keep fan always on"
@@ -6887,6 +7011,12 @@ msgstr ""
msgid "money/kg"
msgstr ""
msgid "Vendor"
msgstr ""
msgid "Vendor of filament. For show only"
msgstr ""
msgid "(Undefined)"
msgstr ""
@@ -7052,7 +7182,9 @@ msgstr ""
msgid "Jerk for travel"
msgstr ""
msgid "Line width of initial layer"
msgid ""
"Line width of initial layer. If expressed as a %, it will be computed over "
"the nozzle diameter."
msgstr ""
msgid "Initial layer height"
@@ -7154,7 +7286,7 @@ msgstr ""
msgid ""
"Filter out gaps smaller than the threshold specified. This setting won't "
"affact top/bottom layers"
"affect top/bottom layers"
msgstr ""
msgid ""
@@ -7292,7 +7424,9 @@ msgstr ""
msgid "Filament to print internal sparse infill."
msgstr ""
msgid "Line width of internal sparse infill"
msgid ""
"Line width of internal sparse infill. If expressed as a %, it will be "
"computed over the nozzle diameter."
msgstr ""
msgid "Infill/Wall overlap"
@@ -7335,6 +7469,9 @@ msgstr ""
msgid "All solid layer"
msgstr ""
msgid "Ironing Pattern"
msgstr ""
msgid "Ironing flow"
msgstr ""
@@ -7562,6 +7699,32 @@ msgstr ""
msgid "User can self-define the project file name when export"
msgstr ""
msgid "Make overhang printable"
msgstr ""
msgid "Modify the geometry to print overhangs without support material."
msgstr ""
msgid "Make overhang printable maximum angle"
msgstr ""
msgid ""
"Maximum angle of overhangs to allow after making more steep overhangs "
"printable.90° will not change the model at all and allow any overhang, while "
"0 will replace all overhangs with conical material."
msgstr ""
msgid "Make overhang printable hole area"
msgstr ""
msgid ""
"Maximum area of a hole in the base of the model before it's filled by "
"conical material.A value of 0 will fill all the holes in the model base."
msgstr ""
msgid "mm²"
msgstr ""
msgid "Detect overhang wall"
msgstr ""
@@ -7571,7 +7734,9 @@ msgid ""
"speed to print. For 100%% overhang, bridge speed is used."
msgstr ""
msgid "Line width of inner wall"
msgid ""
"Line width of inner wall. If expressed as a %, it will be computed over the "
"nozzle diameter."
msgstr ""
msgid "Speed of inner wall"
@@ -7676,6 +7841,42 @@ msgstr ""
msgid "Spiral"
msgstr ""
msgid "Only lift Z above"
msgstr ""
msgid ""
"If you set this to a positive value, Z lift will only take place above the "
"specified absolute Z."
msgstr ""
msgid "Only lift Z below"
msgstr ""
msgid ""
"If you set this to a positive value, Z lift will only take place below the "
"specified absolute Z."
msgstr ""
msgid "On surfaces"
msgstr ""
msgid ""
"Enforce Z Hop behavior. This setting is impacted by the above settings (Only "
"lift Z above/below)."
msgstr ""
msgid "All Surfaces"
msgstr ""
msgid "Top Only"
msgstr ""
msgid "Bottom Only"
msgstr ""
msgid "Top and Bottom"
msgstr ""
msgid "Extra length on restart"
msgstr ""
@@ -7732,6 +7933,14 @@ msgstr ""
msgid "Random"
msgstr ""
msgid "Staggered inner seams"
msgstr ""
msgid ""
"This option causes the inner seams to be shifted backwards based on their "
"depth, forming a zigzag pattern."
msgstr ""
msgid "Seam gap"
msgstr ""
@@ -7739,7 +7948,7 @@ msgid ""
"In order to reduce the visibility of the seam in a closed loop extrusion, "
"the loop is interrupted and shortened by a specified amount.\n"
"This amount can be specified in millimeters or as a percentage of the "
"current extruder diameter. The default value for this parameter is 15%."
"current extruder diameter. The default value for this parameter is 10%."
msgstr ""
msgid "Role base wipe speed"
@@ -7787,6 +7996,12 @@ msgstr ""
msgid "Number of loops for the skirt. Zero means disabling skirt"
msgstr ""
msgid "Skirt speed"
msgstr ""
msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed."
msgstr ""
msgid ""
"The printing speed in exported gcode will be slowed down, when the estimated "
"layer time is shorter than this value, to get better cooling for these layers"
@@ -7800,10 +8015,9 @@ msgid ""
"internal solid infill"
msgstr ""
msgid "mm²"
msgstr ""
msgid "Line width of internal solid infill"
msgid ""
"Line width of internal solid infill. If expressed as a %, it will be "
"computed over the nozzle diameter."
msgstr ""
msgid "Speed of internal solid infill, not the top and bottom surface"
@@ -7920,6 +8134,12 @@ msgid ""
"etc."
msgstr ""
msgid "Remove small overhangs"
msgstr ""
msgid "Remove small overhangs that possibly need no supports."
msgstr ""
msgid "Top Z distance"
msgstr ""
@@ -7940,7 +8160,9 @@ msgid ""
"filament for support and current filament is used"
msgstr ""
msgid "Line width of support"
msgid ""
"Line width of support. If expressed as a %, it will be computed over the "
"nozzle diameter."
msgstr ""
msgid "Interface use loop pattern"
@@ -8117,6 +8339,9 @@ msgid ""
"support"
msgstr ""
msgid "Chamber temperature"
msgstr ""
msgid "Target chamber temperature"
msgstr ""
@@ -8145,7 +8370,9 @@ msgid ""
"tool change"
msgstr ""
msgid "Line width for top surfaces"
msgid ""
"Line width for top surfaces. If expressed as a %, it will be computed over "
"the nozzle diameter."
msgstr ""
msgid "Speed of top surface infill which is solid"
@@ -8393,6 +8620,12 @@ msgstr ""
msgid "Load cached slicing data from directory"
msgstr ""
msgid "Export STL"
msgstr ""
msgid "Export the objects as multiple STL."
msgstr ""
msgid "Slice"
msgstr ""
@@ -8408,6 +8641,12 @@ msgstr ""
msgid "Update the configs values of 3mf to latest."
msgstr ""
msgid "Load default filaments"
msgstr ""
msgid "Load first filament as default for those not loaded"
msgstr ""
msgid "mtcpp"
msgstr ""
@@ -8456,6 +8695,12 @@ msgstr ""
msgid "Arrange options: 0-disable, 1-enable, others-auto"
msgstr ""
msgid "Repetions count"
msgstr ""
msgid "Repetions count of the whole model"
msgstr ""
msgid "Convert Unit"
msgstr ""
@@ -8486,6 +8731,14 @@ msgstr ""
msgid "Skip some objects in this print"
msgstr ""
msgid "load uptodate process/machine settings when using uptodate"
msgstr ""
msgid ""
"load uptodate process/machine settings from the specified file when using "
"uptodate"
msgstr ""
msgid "Data directory"
msgstr ""
@@ -8599,6 +8852,159 @@ msgstr ""
msgid "Support: propagate branches at layer %d"
msgstr ""
msgid ""
"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension."
msgstr ""
msgid "Loading of a model file failed."
msgstr ""
msgid "The supplied file couldn't be read because it's empty"
msgstr ""
msgid "Unknown file format. Input file must have .3mf or .zip.amf extension."
msgstr ""
msgid "Canceled"
msgstr ""
msgid "load_obj: failed to parse"
msgstr ""
msgid "The file contains polygons with more than 4 vertices."
msgstr ""
msgid "The file contains polygons with less than 2 vertices."
msgstr ""
msgid "The file contains invalid vertex index."
msgstr ""
msgid "This OBJ file couldn't be read because it's empty."
msgstr ""
msgid "Network lookup"
msgstr ""
msgid "Address"
msgstr ""
msgid "Hostname"
msgstr ""
msgid "Service name"
msgstr ""
msgid "OctoPrint version"
msgstr ""
msgid "Searching for devices"
msgstr ""
msgid "Finished"
msgstr ""
msgid "Unable to perform boolean operation on selected parts"
msgstr ""
msgid "Mesh Boolean"
msgstr ""
msgid "Union"
msgstr ""
msgid "Difference"
msgstr ""
msgid "Intersection"
msgstr ""
msgid "Source Volume"
msgstr ""
msgid "Tool Volume"
msgstr ""
msgid "Subtract from"
msgstr ""
msgid "Subtract with"
msgstr ""
msgid "selected"
msgstr ""
msgid "Part 1"
msgstr ""
msgid "Part 2"
msgstr ""
msgid "Delete input"
msgstr ""
msgid "Send to print"
msgstr ""
msgid "Upload to Printer Host with the following filename:"
msgstr ""
msgid "Use forward slashes ( / ) as a directory separator if needed."
msgstr ""
#, possible-c-format, possible-boost-format
msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?"
msgstr ""
msgid "Upload"
msgstr ""
msgid "Upload and Print"
msgstr ""
msgid "Simulate"
msgstr ""
msgid "Print host upload queue"
msgstr ""
msgid "ID"
msgstr ""
msgid "Progress"
msgstr ""
msgid "Host"
msgstr ""
msgctxt "OfFile"
msgid "Size"
msgstr ""
msgid "Filename"
msgstr ""
msgid "Error Message"
msgstr ""
msgid "Cancel selected"
msgstr ""
msgid "Show error message"
msgstr ""
msgid "Enqueued"
msgstr ""
msgid "Uploading"
msgstr ""
msgid "Cancelling"
msgstr ""
msgid "Error uploading to print host:"
msgstr ""
msgid "PA Calibration"
msgstr ""
@@ -8617,6 +9023,9 @@ msgstr ""
msgid "PA Line"
msgstr ""
msgid "PA Pattern"
msgstr ""
msgid "Method"
msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -130,5 +130,10 @@ src/libslic3r/PrintObject.cpp
src/libslic3r/PrintObjectSlice.cpp
src/libslic3r/PlaceholderParser.cpp
src/libslic3r/TreeSupport.cpp
src/libslic3r/Model.cpp
src/libslic3r/Format/OBJ.cpp
src/slic3r/GUI/BonjourDialog.cpp
src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp
src/slic3r/GUI/PrintHostDialogs.cpp
src/slic3r/GUI/calib_dlg.cpp
src/slic3r/GUI/PhysicalPrinterDialog.cpp

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,54 +1,83 @@
{
"printers": [
{
"display_name": "Bambu Lab P1P",
"func": {
"FUNC_CHAMBER_TEMP": false,
"FUNC_FIRSTLAYER_INSPECT": false,
"FUNC_AI_MONITORING": false,
"FUNC_BUILDPLATE_MARKER_DETECT": false,
"FUNC_FLOW_CALIBRATION": false,
"FUNC_MONITORING": false,
"FUNC_MEDIA_FILE": false,
"FUNC_REMOTE_TUNNEL": false,
"FUNC_LOCAL_TUNNEL": true,
"FUNC_VIRTUAL_CAMERA" : false,
"FUNC_PRINT_WITHOUT_SD": false,
"FUNC_ALTER_RESOLUTION": false,
"FUNC_CHAMBER_FAN" : false,
"FUNC_EXTRUSION_CALI": true,
"FUNC_PRINT_ALL" : false
},
"camera_resolution":["720p"],
"bed_temperature_limit": 100,
"model_id": "C11",
"printer_type": "C11",
"ftp_folder" : "sdcard/",
"printer_thumbnail_image": "printer_thumbnail_p1p"
{
"display_name": "Bambu Lab P1P",
"func": {
"FUNC_CHAMBER_TEMP": false,
"FUNC_FIRSTLAYER_INSPECT": false,
"FUNC_AI_MONITORING": true,
"FUNC_LIDAR_CALIBRATION": false,
"FUNC_BUILDPLATE_MARKER_DETECT": false,
"FUNC_FLOW_CALIBRATION": false,
"FUNC_MONITORING": false,
"FUNC_MEDIA_FILE": false,
"FUNC_VIRTUAL_CAMERA": false,
"FUNC_PRINT_WITHOUT_SD": false,
"FUNC_ALTER_RESOLUTION": false,
"FUNC_PRINT_ALL": false,
"FUNC_EXTRUSION_CALI": true
},
{
"display_name": "Bambu Lab X1",
"func": {
"FUNC_VIRTUAL_TYAY" : true,
"FUNC_EXTRUSION_CALI": false,
"FUNC_LOCAL_TUNNEL": false
},
"model_id": "BL-P002",
"camera_resolution":["720p","1080p"],
"printer_type": "3DPrinter-X1",
"printer_thumbnail_image": "printer_thumbnail"
"camera_resolution": [ "720p" ],
"bed_temperature_limit": 100,
"model_id": "C11",
"printer_type": "C11",
"compatible_machine": [ "BL-P001", "BL-P002", "C12"],
"ftp_folder": "sdcard/",
"printer_thumbnail_image": "printer_thumbnail_p1p"
},
{
"display_name": "Bambu Lab P1S",
"func": {
"FUNC_CHAMBER_TEMP": false,
"FUNC_FIRSTLAYER_INSPECT": false,
"FUNC_AI_MONITORING": true,
"FUNC_LIDAR_CALIBRATION": false,
"FUNC_BUILDPLATE_MARKER_DETECT": false,
"FUNC_FLOW_CALIBRATION": false,
"FUNC_MONITORING": false,
"FUNC_MEDIA_FILE": false,
"FUNC_VIRTUAL_CAMERA": false,
"FUNC_PRINT_WITHOUT_SD": false,
"FUNC_ALTER_RESOLUTION": false,
"FUNC_PRINT_ALL": false,
"FUNC_VIRTUAL_TYAY": true,
"FUNC_EXTRUSION_CALI": true
},
{
"display_name": "Bambu Lab X1 Carbon",
"func": {
"FUNC_VIRTUAL_TYAY" : true,
"FUNC_EXTRUSION_CALI": false,
"FUNC_LOCAL_TUNNEL": false
},
"model_id": "BL-P001",
"camera_resolution":["720p","1080p"],
"printer_type": "3DPrinter-X1-Carbon",
"printer_thumbnail_image": "printer_thumbnail"
}
"camera_resolution": [ "720p" ],
"bed_temperature_limit": 100,
"model_id": "C12",
"compatible_machine":["BL-P001", "BL-P002", "C11"],
"printer_type": "C12",
"ftp_folder" : "sdcard/",
"printer_thumbnail_image": "printer_thumbnail_p1p"
},
{
"display_name": "Bambu Lab X1",
"func": {
"FUNC_VIRTUAL_TYAY": true,
"FUNC_EXTRUSION_CALI": false,
"FUNC_LOCAL_TUNNEL": false
},
"model_id": "BL-P002",
"compatible_machine": [ "BL-P001", "C11", "C12"],
"camera_resolution": [ "720p", "1080p" ],
"printer_type": "3DPrinter-X1",
"printer_thumbnail_image": "printer_thumbnail"
},
{
"display_name": "Bambu Lab X1 Carbon",
"func": {
"FUNC_VIRTUAL_TYAY": true,
"FUNC_EXTRUSION_CALI": false,
"FUNC_LOCAL_TUNNEL": false
},
"model_id": "BL-P001",
"compatible_machine": [ "BL-P002", "C11", "C12"],
"camera_resolution": [ "720p", "1080p" ],
"printer_type": "3DPrinter-X1-Carbon",
"printer_thumbnail_image": "printer_thumbnail"
}
]
}

Binary file not shown.

Binary file not shown.

93
resources/fonts/OFL.txt Normal file
View File

@@ -0,0 +1,93 @@
Copyright 2012 Google Inc. All Rights Reserved.
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Some files were not shown because too many files have changed in this diff Show More