Compare commits

...

81 Commits

Author SHA1 Message Date
QIDI TECH
1f9400ddda The fan parameters are optimized 2023-10-07 13:30:00 +08:00
sunsets
d6408bf239 Update GCode.cpp 2023-10-06 10:10:46 +08:00
sunsets
d2012d4d9b gcodeviewer icons 2023-10-05 18:20:52 +08:00
sunsets
2b80442677 Update qidiparts.cpp 2023-10-05 18:00:41 +08:00
sunsets
494970573e Update GCode.cpp 2023-10-05 10:57:51 +08:00
sunsets
4ee031407d Merge branches 'main' and 'main' of https://github.com/QIDITECH/QIDISlicer 2023-10-04 15:26:05 +08:00
sunsets
f713cb579a object_range 2023-10-04 15:23:05 +08:00
QIDI TECH
7f19806dd9 Optimal PA calibration and add guide;Z seam is visible by default in preview 2023-09-28 10:04:57 +08:00
sunsets
f4f63b9a54 Merge branch 'main' of https://github.com/QIDITECH/QIDISlicer 2023-09-26 13:39:53 +08:00
sunsets
07b20e3c40 default_material 2023-09-26 13:38:41 +08:00
QIDI TECH
535ce1e4d5 Add MakerWorld 2023-09-25 08:38:20 +08:00
QIDI TECH
478a3cabc4 Update P2 P3 fan gcode 2023-09-23 13:41:54 +08:00
QIDI TECH
40e1a5534e Fix bug 2023-09-23 09:08:15 +08:00
sunsets
019c6dbb10 update first layer speed and rapid fan speed 2023-09-22 14:38:07 +08:00
sunsets
3e70923483 disable_rapid_cooling_fan_first_layers 2023-09-22 09:40:56 +08:00
QIDI TECH
d1902fa3d5 Merge branch 'main' of https://github.com/QIDITECH/QIDISlicer 2023-09-22 08:51:54 +08:00
QIDI TECH
424a37a68c Update PA Pattern 2023-09-22 08:51:49 +08:00
sunsets
1b2437fa02 Update GCode.cpp 2023-09-21 20:07:19 +08:00
sunsets
1687c5d624 exclude_object 2023-09-21 19:45:51 +08:00
sunsets
b1ff57de34 first_layer_speed 2023-09-21 16:50:10 +08:00
QIDI TECH
bccab56220 Update Plater.cpp 2023-09-21 09:54:44 +08:00
QIDI TECH
8ecf30a51d Update Plater.cpp 2023-09-18 20:32:50 +08:00
sunsets
cf13b6b6ab optimize calib 2023-09-18 16:30:28 +08:00
sunsets
1c85f23870 optimize calib 2023-09-18 16:18:31 +08:00
sunsets
35c97ae363 update win10Sdk and calib 2023-09-18 10:22:22 +08:00
QIDI TECH
963e22db99 Merge prusa 2.6.1 2023-09-16 16:26:29 +08:00
76Octane
1338e60f8b Delete github_test.txt 2023-09-16 15:42:32 +08:00
76Octane
a6c966ffd8 Update github_test.txt 2023-09-16 15:39:54 +08:00
76Octane
2c2e8aaab2 Create github_test.txt 2023-09-16 15:36:46 +08:00
sunsets
65a245af41 num_text 2023-09-15 19:25:28 +08:00
QIDI TECH
f2ea046ab5 Merge branch 'main' of https://github.com/QIDITECH/QIDISlicer 2023-09-14 15:07:29 +08:00
QIDI TECH
313d89a44f Update UserGuider 2023-09-14 15:07:07 +08:00
sunsets
5dc99e0fdd calib_flowrate 2023-09-14 10:00:20 +08:00
sunsets
f2a36c90c1 calib 2023-09-13 09:00:55 +08:00
QIDI TECH
1d73b29a00 Update Plater.cpp 2023-09-11 11:13:13 +08:00
sunsets
39bb8169a0 linux 2023-09-11 11:10:12 +08:00
QIDI TECH
205d475acb Update README.md 2023-09-06 08:29:51 +08:00
QIDI TECH
a8371bbded Merge branch 'main' of https://github.com/QIDITECH/QIDISlicer 2023-09-02 15:32:01 +08:00
QIDI TECH
261cd7d6e9 Optimized PressureAdvance 2023-09-02 15:31:11 +08:00
76Octane
c4f8a7808a Update Guide 2023-09-02 15:13:46 +08:00
QIDI TECH
a2b2cf743e Optimized PressureAdvance 2023-09-01 20:05:08 +08:00
76Octane
07e2346d8d update 2023-08-31 18:26:57 +08:00
QIDI TECH
0a6a5f8690 Optimized PressureAdvance 2023-08-31 16:25:40 +08:00
QIDI TECH
51c4567a09 Optimized FlowRate 2023-08-31 10:30:12 +08:00
76Octane
0b9b50fa22 Update calib_dlg.cpp 2023-08-31 09:32:08 +08:00
QIDI TECH
1cceb727d7 Optimized FlowRate 2023-08-30 17:11:44 +08:00
76Octane
49f599efbf Update calib_dlg 2023-08-30 16:53:46 +08:00
QIDI TECH
140ee733ca Merge branch 'main' of https://github.com/QIDITECH/QIDISlicer 2023-08-30 11:16:08 +08:00
QIDI TECH
3d89653ad6 Update QIDITechnology.ini 2023-08-30 11:15:56 +08:00
76Octane
59aa772875 Update calib_dlg
1.Add a dlg for flowrate-fine.
2.Add the notice when using the calibration feature.
3.Optimized parameter settings.
2023-08-30 11:12:12 +08:00
76Octane
a7ad626cdd Update config of flowrate 2023-08-29 14:14:27 +08:00
QIDI TECH
0886a00cae FlowRate 2023-08-26 14:52:45 +08:00
sunsets
e452f65575 Calibratioon 2023-08-25 09:36:16 +08:00
QIDI TECH
a867b747e6 Update QIDITechnology.ini 2023-08-23 13:52:28 +08:00
sunsets
8c0ec030e1 arrange distance 2023-08-23 13:05:26 +08:00
QIDI TECH
f39d64153a Version update 2023-08-23 11:37:36 +08:00
QIDI TECH
3f31b3f078 Add note of nozzle diameter 2023-08-21 15:28:01 +08:00
QIDI TECH
74e485d913 Continues to push notification when export gcode 2023-08-21 09:36:40 +08:00
QIDI TECH
1dad523325 Merge branch 'main' of https://github.com/QIDITECH/QIDISlicer 2023-08-19 13:55:19 +08:00
QIDI TECH
b33907514e Add pattern in infill checkbox 2023-08-19 13:55:15 +08:00
76Octane
ff4834edd2 Exporting notification-no fading style 2023-08-18 19:21:29 +08:00
QIDI TECH
42a146b5af Merge branch 'main' of https://github.com/QIDITECH/QIDISlicer 2023-08-18 15:11:56 +08:00
QIDI TECH
a8e0bd3669 continues to push notification when export gcode 2023-08-18 15:10:30 +08:00
76Octane
d5c00a7bda Update icons 2023-08-18 13:54:53 +08:00
76Octane
bbc4409f8c Revert "icons update"
This reverts commit a192c86e57.
2023-08-18 13:52:43 +08:00
76Octane
a192c86e57 icons update 2023-08-18 13:51:32 +08:00
sunsets
c8a236e92f Merge branch 'main' of https://github.com/QIDITECH/QIDISlicer 2023-08-17 09:22:14 +08:00
76Octane
1b698ce42e Add infill icons 2023-08-14 19:31:09 +08:00
QIDI TECH
b9101f8049 Update first layer speed and start gcode 2023-08-11 17:52:43 +08:00
sunsets
a6bfd77a85 Chamber 2023-08-04 10:01:19 +08:00
76Octane
2dbf47fc36 Adaptive Meshing 2023-08-04 09:01:10 +08:00
QIDI TECH
33a54d7c36 Update QIDITechnology.ini 2023-08-01 19:15:27 +08:00
sunsets
0503b60f30 change 2023-07-28 15:09:44 +08:00
sunsets
bcfcfdf58d Version1.0.4 2023-07-28 10:07:01 +08:00
sunsets
e318ad1cc3 Merge branch 'main' of https://github.com/QIDITECH/QIDISlicer 2023-07-28 09:40:07 +08:00
sunsets
144552bd81 delete udplink 2023-07-28 09:39:59 +08:00
sunsets
529153d41d Udp 2023-07-28 09:39:01 +08:00
76Octane
d761a503ca Merge branch 'main' of https://github.com/QIDITECH/QIDISlicer 2023-07-26 16:12:51 +08:00
76Octane
b4fa60892c cn_trans fix 2023-07-26 16:12:09 +08:00
sunsets
f1b81b3d38 thumb 2023-07-25 10:41:06 +08:00
sunsets
9dbc216996 Revert "UDP and thumb"
This reverts commit 729dc96934.
2023-07-25 09:50:35 +08:00
321 changed files with 74169 additions and 10386 deletions

View File

@@ -26,7 +26,6 @@ endif()
option(SLIC3R_STATIC "Compile QIDISlicer with static libraries (Boost, TBB, glew)" ${SLIC3R_STATIC_INITIAL}) option(SLIC3R_STATIC "Compile QIDISlicer with static libraries (Boost, TBB, glew)" ${SLIC3R_STATIC_INITIAL})
option(SLIC3R_GUI "Compile QIDISlicer with GUI components (OpenGL, wxWidgets)" 1) option(SLIC3R_GUI "Compile QIDISlicer with GUI components (OpenGL, wxWidgets)" 1)
option(SLIC3R_FHS "Assume QIDISlicer is to be installed in a FHS directory structure" 0) option(SLIC3R_FHS "Assume QIDISlicer is to be installed in a FHS directory structure" 0)
option(SLIC3R_WX_STABLE "Build against wxWidgets stable (3.0) as oppsed to dev (3.1) on Linux" 0)
option(SLIC3R_PCH "Use precompiled headers" 1) option(SLIC3R_PCH "Use precompiled headers" 1)
option(SLIC3R_MSVC_COMPILE_PARALLEL "Compile on Visual Studio in parallel" 1) option(SLIC3R_MSVC_COMPILE_PARALLEL "Compile on Visual Studio in parallel" 1)
option(SLIC3R_MSVC_PDB "Generate PDB files on MSVC in Release mode" 1) option(SLIC3R_MSVC_PDB "Generate PDB files on MSVC in Release mode" 1)
@@ -60,7 +59,6 @@ if (APPLE)
endif () endif ()
endif () endif ()
# Proposal for C++ unit tests and sandboxes
option(SLIC3R_BUILD_SANDBOXES "Build development sandboxes" OFF) option(SLIC3R_BUILD_SANDBOXES "Build development sandboxes" OFF)
option(SLIC3R_BUILD_TESTS "Build unit tests" ON) option(SLIC3R_BUILD_TESTS "Build unit tests" ON)
@@ -172,8 +170,8 @@ if(WIN32)
endif() endif()
endif() endif()
if(DEFINED WIN10SDK_PATH) if(DEFINED WIN10SDK_PATH)
if (EXISTS "${WIN10SDK_PATH}/include/winrt/windows.graphics.printing3d.h") if (EXISTS "${WIN10SDK_PATH}/winrt/windows.graphics.printing3d.h")
set(WIN10SDK_INCLUDE_PATH "${WIN10SDK_PATH}/Include") set(WIN10SDK_INCLUDE_PATH "${WIN10SDK_PATH}")
else() else()
message("WIN10SDK_PATH is invalid: ${WIN10SDK_PATH}") message("WIN10SDK_PATH is invalid: ${WIN10SDK_PATH}")
message("${WIN10SDK_PATH}/include/winrt/windows.graphics.printing3d.h was not found") message("${WIN10SDK_PATH}/include/winrt/windows.graphics.printing3d.h was not found")

View File

@@ -1,21 +1,21 @@
1.0.2 1.0.5
alpha=1.0.2-alpha1 alpha=1.0.5-alpha1
beta=1.0.2-beta1 beta=1.0.5-beta1
[common] [common]
release = 1.0.2 release = 1.0.5
alpha = 1.0.2-alpha1 alpha = 1.0.5-alpha1
beta = 1.0.2-beta1 beta = 1.0.5-beta1
rc = 1.0.2-rc2 rc = 1.0.5-rc2
[release:win64] [release:win64]
url = https://github.com/QIDITECH/QIDISlicer/releases/download/V1.0.2/QIDISlicer_Setup_1.0.2.exe url = https://github.com/QIDITECH/QIDISlicer/releases/download/V1.0.5/QIDISlicer_Setup_1.0.5_Win64.exe
size = 71118761 size = 71118761
[release:linux] [release:linux]
url = https://qidi3d.com url = https://github.com/QIDITECH/QIDISlicer/releases/download/V1.0.4/QIDISlicer-1.0.4.AppImage
size = 69915840 size = 69915840
[release:osx] [release:osx]
url = https://qidi3d.com/ url = https://github.com/QIDITECH/QIDISlicer/releases/download/V1.0.5/QIDISlicer_Setup_1.0.5_Win64.exe
size = 90237989 size = 90237989

View File

@@ -7,7 +7,7 @@ QIDISlicer is a professional 3D printer slicing softwarewhich is perfectly co
**Notice:QIDISlicer as a new software dedicated to QIDI's new high speed printers, please make sure your firmware version is V 4.0.0 or above.** **Notice:QIDISlicer as a new software dedicated to QIDI's new high speed printers, please make sure your firmware version is V 4.0.0 or above.**
QIDISlicer 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. QIDISlicer 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.
Thanks to PrusaSlicer and Bambulab for their contributions to the 3D printing community. Thanks to PrusaSlicer, Bambulab and OrcaSlicer for their contributions to the 3D printing community.
See the [QIDI's homepage](https://qidi3d.com) for more information. See the [QIDI's homepage](https://qidi3d.com) for more information.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,4 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="1" y="1" width="16" height="16" rx="1" fill="#009688"/>
<path d="M4 9L14 9" stroke="white" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 228 B

View File

@@ -0,0 +1,4 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="1" y="1" width="16" height="16" rx="1" fill="#CECECE"/>
<line x1="4.37881" y1="8.93516" x2="13.6213" y2="8.93515" stroke="white" stroke-width="1.2" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 285 B

View File

@@ -0,0 +1,4 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="1" y="1" width="16" height="16" rx="1" fill="#4db6ac"/>
<path d="M4 9L14 9" stroke="white" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 232 B

View File

@@ -0,0 +1,3 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="1.5" y="1.5" width="15" height="15" rx="0.5" stroke="#ACACAC"/>
</svg>

After

Width:  |  Height:  |  Size: 176 B

View File

@@ -0,0 +1,3 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="1.5" y="1.5" width="15" height="15" rx="0.5" fill="#CECECE" stroke="#ACACAC"/>
</svg>

After

Width:  |  Height:  |  Size: 191 B

View File

@@ -0,0 +1,3 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="1.5" y="1.5" width="15" height="15" rx="0.5" stroke="#009688"/>
</svg>

After

Width:  |  Height:  |  Size: 176 B

View File

@@ -0,0 +1,4 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="1" y="1" width="16" height="16" rx="1" fill="#009688"/>
<path d="M4.35537 8.5374L8.30284 11.9361C8.71855 12.294 9.34501 12.2502 9.70687 11.838L14.8175 6.01521" stroke="white" stroke-width="1.2" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 331 B

View File

@@ -0,0 +1,4 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="1" y="1" width="16" height="16" rx="1" fill="#CECECE"/>
<path d="M4.35537 8.5374L8.30284 11.9361C8.71855 12.294 9.34501 12.2502 9.70687 11.838L14.8175 6.01521" stroke="white" stroke-width="1.2" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 331 B

View File

@@ -0,0 +1,4 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="1" y="1" width="16" height="16" rx="1" fill="#4db6ac"/>
<path d="M4.35537 8.5374L8.30284 11.9361C8.71855 12.294 9.34501 12.2502 9.70687 11.838L14.8175 6.01521" stroke="white" stroke-width="1.2" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 331 B

View File

@@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3 8.9375L6.45062 11.6772C6.67263 11.8535 6.99663 11.8101 7.16447 11.5817L12 5" stroke="white" stroke-linecap="round"/>
<path d="M3 8.9375L6.45062 11.6772C6.67263 11.8535 6.99663 11.8101 7.16447 11.5817L12 5" stroke="white" stroke-opacity="0.2" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 382 B

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.0"
width="300.000000pt"
height="300.000000pt"
viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet"
id="svg1"
sodipodi:docname="param_3d honeycomb.svg"
xml:space="preserve"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs1" /><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#4479FB"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="pt"
inkscape:zoom="2.0325"
inkscape:cx="200"
inkscape:cy="200"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g1" /><metadata
id="metadata1">&#10;Created by potrace 1.10, written by Peter Selinger 2001-2011&#10;</metadata><g
transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB"
stroke="none"
id="g1"><path
d="M 0.5,150 V 299.5 H 150 299.5 V 150 0.5 H 150 0.5 Z m 287,-122.3 c 0,15.5 -0.1,16.1 -1.8,14.5 -1,-1 -2.9,-1.7 -4.2,-1.7 -1.5,0 -5.5,-3.3 -12.8,-10.6 -5.8,-5.8 -11.4,-11 -12.3,-11.5 -1,-0.5 -10.2,-0.9 -20.6,-0.9 H 217 L 205.5,29 194,40.5 H 179 164 L 152.5,29 141,17.5 H 121 101 L 89.5,29 78,40.5 H 63 48 L 38.5,31 29,21.5 h 24.8 24.7 v -5 -5 H 183 287.5 Z m -269,0.8 c 1.7,0 5.7,3.3 14,11.5 L 44.2,51.5 H 63.6 83 L 94.5,40 106,28.5 h 15 15 L 147.5,40 159,51.5 H 178.5 198 L 209.5,40 221,28.5 h 14.9 15 L 262,39.4 c 6.3,6.3 12.2,11.2 13.8,11.6 l 2.7,0.7 v 11.9 c 0,10.9 -0.2,11.9 -1.8,11.9 -1,0 -7,5.2 -13.4,11.5 L 251.8,98.5 H 236.9 222.1 L 210.5,87 198.8,75.5 H 178.9 159 L 147.5,87 136,98.5 H 121 106 L 94.5,87 83,75.4 62.8,75.7 42.5,76 31.2,87.2 c -7.2,7.3 -12,11.3 -13.3,11.3 -1.2,0 -2.7,0.7 -3.4,1.5 -0.7,0.8 -1.6,1.5 -2.1,1.5 -0.5,0 -0.9,-17.2 -0.9,-38.7 V 24.2 l 2.3,2.1 c 1.3,1.2 3.4,2.2 4.7,2.2 z m 269,92.7 v 38.6 l -2.3,-2.1 c -1.3,-1.2 -3.2,-2.2 -4.3,-2.2 -1.1,0 -6,-4.2 -11.9,-10.1 -5.5,-5.6 -11.4,-10.7 -13.2,-11.5 -3.8,-1.6 -35.3,-2 -38.2,-0.5 -0.9,0.5 -6.5,5.7 -12.3,11.5 l -10.5,10.6 H 178.9 163.1 L 152,144.6 c -6.1,-6 -12.2,-11.2 -13.6,-11.6 -1.4,-0.3 -10.3,-0.5 -19.7,-0.3 L 101.5,133 90.2,144.2 79,155.5 H 63.5 48 L 37.5,145 C 31.8,139.3 25.9,134.1 24.3,133.4 l -2.8,-1.1 v -11.4 c 0,-11.1 0.1,-11.4 2.3,-11.9 1.3,-0.4 7.3,-5.6 13.3,-11.6 L 48,86.5 H 63.5 79 l 11.2,11.2 11.3,11.3 19.3,0.3 19.2,0.3 L 151.5,98 163,86.5 h 15.5 15.5 l 11.2,11.2 11.3,11.3 17.7,0.3 c 9.7,0.2 18.8,0 20.2,-0.3 1.4,-0.4 7.5,-5.6 13.6,-11.6 6.8,-6.7 11.9,-10.9 13.1,-10.9 1.2,0 2.9,-0.9 3.9,-2 1,-1.1 2,-2 2.2,-2 0.1,0 0.3,17.4 0.3,38.7 z M 14.5,142 c 0.7,0.8 2.2,1.5 3.3,1.5 1.3,0 6.4,4.3 13.7,11.5 l 11.7,11.5 H 63.1 83 L 94.5,155 106,143.5 h 15 15 l 11.5,11.5 11.5,11.5 h 19.9 19.9 l 11.7,-11.5 11.6,-11.5 h 14.5 14.4 l 10.5,10.6 c 5.8,5.8 12,11.2 13.8,12 l 3.2,1.4 V 179 c 0,9.8 -0.2,11.5 -1.6,11.5 -0.9,0 -6.9,5.2 -13.3,11.5 l -11.8,11.5 H 236.4 221 L 209.8,202.2 198.5,191 179.2,190.7 160,190.4 148.4,201.9 136.8,213.5 H 121.4 106 L 96,203.4 c -5.5,-5.5 -11.2,-10.7 -12.7,-11.5 -2.1,-1.1 -7.1,-1.4 -20.9,-1.4 H 44.2 L 32.5,202 c -7.7,7.7 -12.3,11.5 -13.8,11.5 -1.2,0 -3,0.9 -3.9,2 -1,1.1 -2.1,2 -2.5,2 -0.5,0 -0.8,-17.3 -0.8,-38.5 0,-21.4 0.4,-38.5 0.9,-38.5 0.5,0 1.4,0.7 2.1,1.5 z m 273,94.7 c 0,36.9 -0.1,38.1 -1.8,36.5 -1,-1 -2.9,-1.7 -4.2,-1.7 -1.7,0 -5.8,-3.3 -14,-11.5 L 255.8,248.5 H 236.4 217 L 205.5,260 194,271.5 H 179 164 L 152.5,260 141,248.5 H 121.4 101.8 L 90.3,260 78.8,271.5 H 63.4 48.1 L 36.5,260 c -6.4,-6.3 -12.4,-11.5 -13.3,-11.5 -1.5,0 -1.7,-1.5 -1.7,-11.5 v -11.4 l 2.7,-1.5 c 1.6,-0.8 7.5,-6.2 13.3,-12 L 48,201.5 h 15 15 l 10.5,10.6 c 5.8,5.8 11.9,11.2 13.7,12 2.4,1 7.9,1.4 20.5,1.4 H 140 l 12,-12 12,-12 h 15 15 l 10.5,10.6 c 5.8,5.8 11.7,11.2 13.2,12 3.8,2 33.2,2 37.9,0 1.9,-0.8 8.1,-6.2 13.9,-12 6.8,-6.9 11.2,-10.6 12.6,-10.6 1.2,0 2.7,-0.7 3.4,-1.5 0.7,-0.8 1.4,-1.5 1.6,-1.5 0.2,0 0.4,17.2 0.4,38.2 z M 14.5,258 c 0.7,0.8 2.3,1.5 3.6,1.5 1.7,0 5.3,2.9 12.1,9.8 14.3,14.3 11.6,13.2 33.8,13.2 H 83 L 94.5,271 106,259.5 h 15 15 l 11.5,11.5 11.5,11.5 h 20 20 L 210.5,271 222,259.5 h 15 15 l 8.8,8.8 c 4.8,4.8 8.7,9.1 8.7,9.5 0,0.4 -10.8,0.7 -24,0.7 h -24 v 4.5 4.5 h -105 -105 V 272 c 0,-8.5 0.4,-15.5 0.9,-15.5 0.5,0 1.4,0.7 2.1,1.5 z"
id="path1-6"
style="fill:#999999;stroke:none;stroke-width:0.1;fill-opacity:0.80000001"
transform="matrix(9.9999998,0,0,-9.9999998,0,3000)" /><path
d="M10 1495 l0 -1495 1495 0 1495 0 0 1495 0 1495 -1495 0 -1495 0 0 -1495z m1000 1376 c0 -5 -7 -14 -15 -21 -8 -7 -15 -24 -15 -39 0 -19 -25 -51 -102 -129 l-103 -102 0 -215 0 -215 103 -102 102 -103 0 -160 0 -160 -102 -103 -103 -102 0 -215 0 -215 103 -102 102 -103 0 -158 0 -158 -101 -102 c-62 -63 -103 -112 -106 -129 l-5 -28 -128 0 -128 0 -7 27 c-3 15 -50 72 -106 128 l-99 101 0 165 0 164 91 90 c50 50 97 102 105 117 20 39 20 377 0 416 -8 15 -55 67 -105 117 l-91 90 0 160 0 160 91 90 c50 50 97 102 105 117 11 21 14 70 14 208 0 138 -3 187 -14 208 -8 15 -55 67 -105 117 -76 75 -91 95 -91 121 0 17 -7 37 -15 44 -8 7 -15 16 -15 21 0 5 164 9 370 9 206 0 370 -4 370 -9z m1150 0 c0 -5 -7 -14 -15 -21 -8 -7 -15 -26 -15 -43 0 -26 -17 -48 -100 -132 l-100 -102 0 -213 0 -213 100 -102 100 -101 0 -164 0 -163 -100 -100 -100 -100 0 -211 0 -211 100 -100 100 -100 0 -165 0 -165 -95 -95 c-59 -59 -99 -107 -103 -125 l-8 -30 -131 -3 -131 -3 -6 33 c-4 25 -31 59 -101 128 l-95 95 0 164 0 164 100 103 100 103 0 207 0 207 -100 102 -100 101 0 169 0 169 100 101 100 102 0 197 c0 151 -3 203 -14 224 -8 15 -53 65 -100 112 -67 66 -86 91 -86 112 0 16 -9 36 -20 45 -11 10 -20 21 -20 25 0 5 167 8 370 8 206 0 370 -4 370 -9z m720 -1046 l0 -1055 -45 0 -45 0 0 -235 c0 -129 -3 -235 -7 -235 -4 0 -45 37 -90 82 l-83 83 0 160 0 160 91 90 c50 50 97 104 105 122 20 46 20 370 0 416 -8 18 -55 72 -105 122 l-91 90 0 160 0 160 91 90 c50 50 97 104 105 122 16 38 20 365 5 406 -5 13 -52 66 -105 118 -80 79 -96 99 -96 125 0 17 -7 37 -15 44 -8 7 -15 16 -15 21 0 5 68 9 150 9 l150 0 0 -1055z m-1530 921 c7 -19 55 -76 107 -128 l93 -93 0 -165 0 -165 -91 -90 c-50 -50 -97 -104 -105 -122 -20 -46 -20 -363 0 -401 8 -15 55 -67 105 -117 l91 -90 0 -170 0 -170 -87 -85 c-127 -126 -123 -114 -123 -318 0 -126 4 -181 14 -205 8 -18 55 -72 105 -122 73 -71 91 -95 91 -118 0 -18 9 -36 23 -48 22 -18 15 -18 -352 -19 -362 0 -374 1 -358 18 10 10 17 31 17 47 0 23 20 50 101 131 l100 102 -3 216 -3 216 -97 98 -98 97 0 165 0 164 100 101 100 102 0 208 0 208 -100 102 -100 101 0 164 0 164 100 101 c76 78 100 108 100 129 l0 26 128 0 128 0 14 -34z m1155 6 c3 -17 43 -66 105 -127 l100 -100 0 -163 0 -164 -100 -101 c-56 -56 -103 -111 -106 -123 -3 -11 -4 -107 -2 -212 l3 -192 103 -103 102 -102 0 -160 0 -160 -102 -103 -103 -102 0 -210 0 -210 103 -102 c82 -84 102 -109 102 -132 0 -16 7 -38 17 -48 16 -17 4 -18 -357 -18 l-373 0 21 23 c12 13 22 34 22 48 0 17 24 49 86 109 47 47 92 99 100 116 12 26 15 69 12 228 l-3 196 -97 98 -98 97 0 170 0 170 98 97 97 98 3 192 c2 105 0 203 -3 217 -4 14 -49 68 -101 121 l-94 96 0 170 0 169 95 95 c58 58 97 105 100 122 l7 28 128 0 128 0 7 -28z m-2115 -387 l0 -170 -86 -85 c-47 -47 -92 -97 -100 -112 -20 -39 -20 -387 0 -426 8 -15 53 -65 100 -112 l86 -85 0 -169 0 -170 -100 -101 -100 -102 0 -191 c0 -105 4 -202 10 -216 5 -14 50 -67 100 -117 67 -67 90 -98 90 -117 0 -14 10 -36 22 -49 l21 -23 -156 0 -157 0 2 1053 3 1052 48 3 47 3 0 237 0 237 85 -85 85 -85 0 -170z"
id="path1" /></g></svg>

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

@@ -0,0 +1,213 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.0"
width="300.000000pt"
height="300.000000pt"
viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet"
id="svg1"
sodipodi:docname="param_adaptive cubic.svg"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#4479FB"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="pt"
inkscape:zoom="2.09"
inkscape:cx="200.23923"
inkscape:cy="202.63158"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g1" />
<metadata
id="metadata1">&#10;Created by potrace 1.10, written by Peter Selinger 2001-2011&#10;</metadata>
<g
transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB"
stroke="none"
id="g1">
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 2922.9849,1156.867 2685.6418,1027.1363"
id="path6-7"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 2515.5503,1316.9857 V 889.95218"
id="path10"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 2131.5789,696.17225 2515.5503,893.5407"
id="path11"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 2903.11,706.9378 2519.1388,893.5407"
id="path12"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 479.47736,1305.5742 V 878.54066"
id="path10-7"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 95.505955,684.76071 479.47736,882.12916"
id="path11-3"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 867.03706,695.52626 -383.9712,186.6029"
id="path12-8"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.80000001;stroke-dasharray:none"
d="M 785.97788,1940.9594 472.32472,2110.7011"
id="path7"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.80000001;stroke-dasharray:none"
d="m 476.01476,2110.7011 3.69004,276.7528"
id="path8"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.80000001;stroke-dasharray:none"
d="m 225.09225,1918.8192 250.92251,188.1919"
id="path9"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 2800.2852,1915.4748 2486.632,2085.2165"
id="path7-8"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 2490.3221,2085.2165 3.69,276.7528"
id="path8-6"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 2239.3995,1893.3346 250.9226,188.1919"
id="path9-6"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:87.3261;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 1782.9922,115.8515 1493.4947,309.95949"
id="path7-8-0"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:89.5926;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 1495.8849,297.52708 3.6652,309.54787"
id="path8-6-9"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 1244.9499,120.24856 250.9226,188.1918"
id="path9-6-6"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 1848.5894,2457.0689 -381.4358,198.5536"
id="path7-8-0-8"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 1470.3029,2642.9053 4.8292,316.6373"
id="path8-6-9-7"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 1139.6762,2461.5667 330.6103,192.5019"
id="path9-6-6-0"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:8.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 149.4465,152.02952 V 60.516606"
id="path4"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
transform="matrix(9.9999998,0,0,-9.9999998,0,3000)" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:8.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 147.60148,148.70849 81.54982,47.23247"
id="path5"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
transform="matrix(9.9999998,0,0,-9.9999998,0,3000)" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 2094.2074,578.15143 815.4982,-472.3247"
id="path5-7"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 238.69304,2920.0892 1054.1912,2447.7645"
id="path5-8"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:92.2818;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 95.423001,1120.2738 301.43238,1003.1616"
id="path5-5"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:8.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 151.29152,149.07749 -77.121777,49.4465"
id="path6"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
transform="matrix(9.9999998,0,0,-9.9999998,0,3000)" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 902.42225,605.20306 131.2045,110.73806"
id="path6-03"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 2697.6137,2919.7604 1926.396,2425.2954"
id="path6-0"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
d="M0 1495 l0 -1495 1495 0 1495 0 0 1495 0 1495 -1495 0 -1495 0 0 -1495z m600 1330 l0 -45 288 0 c159 0 291 -3 294 -6 3 -3 -8 -29 -26 -58 -17 -29 -56 -97 -86 -149 l-55 -96 -447 -1 -448 0 0 200 0 200 240 0 240 0 0 -45z m1069 -47 c58 -105 88 -158 137 -241 19 -32 34 -60 34 -63 0 -2 -153 -4 -340 -4 -204 0 -340 4 -340 9 0 5 13 31 29 58 16 26 66 112 112 191 l83 142 117 0 116 0 52 -92z m1211 -108 l0 -200 -451 2 -451 3 -23 40 c-12 22 -50 88 -84 146 -33 59 -61 110 -61 113 0 3 133 6 295 6 l295 0 0 45 0 45 240 0 240 0 0 -200z m-1940 -325 c0 -2 -13 -26 -29 -53 -15 -26 -39 -68 -53 -93 -14 -24 -41 -71 -60 -104 -86 -148 -235 -406 -274 -473 l-42 -73 -35 58 c-19 32 -54 92 -77 133 -24 41 -59 102 -78 135 -19 33 -43 75 -53 93 -17 28 -19 55 -19 207 l0 175 360 0 c198 0 360 -2 360 -5z m1025 -82 c28 -47 62 -107 76 -132 14 -25 69 -120 121 -211 53 -91 104 -181 115 -200 11 -19 52 -90 92 -157 39 -67 71 -127 71 -133 0 -6 -36 -74 -80 -151 -44 -77 -91 -157 -103 -178 -12 -21 -68 -119 -125 -217 l-103 -179 -492 2 c-271 1 -510 3 -532 3 -41 0 -41 0 -91 87 -28 49 -121 210 -207 360 l-157 272 96 168 c53 92 119 206 147 253 27 47 59 101 70 120 10 19 45 80 77 135 32 55 76 133 99 173 l42 72 417 0 417 0 50 -87z m815 -84 l0 -170 -101 -177 c-56 -97 -111 -193 -121 -212 -46 -79 -36 -85 -138 92 -52 90 -115 199 -141 243 -135 230 -219 378 -219 386 0 5 158 9 360 9 l360 0 0 -171z m-2620 -314 c0 -3 16 -29 35 -59 19 -30 35 -57 35 -59 0 -3 17 -34 38 -68 22 -35 50 -84 64 -109 14 -25 38 -67 53 -93 l27 -48 -132 -232 c-74 -128 -139 -241 -147 -252 -11 -16 -13 61 -13 485 l0 505 20 -33 c11 -18 20 -35 20 -37z m2720 -437 c0 -305 -4 -498 -9 -493 -16 17 -281 482 -281 494 0 6 43 87 96 179 54 92 106 183 116 202 26 46 72 120 76 120 1 0 2 -226 2 -502z m-231 -350 l131 -227 0 -70 0 -71 -306 0 c-168 0 -303 3 -301 8 19 33 214 372 270 470 39 67 71 121 72 120 1 -2 61 -105 134 -230z m-2001 -56 c89 -153 164 -286 168 -295 7 -19 15 -18 -171 -18 -52 0 -169 0 -260 1 l-165 0 0 74 0 73 106 184 c58 101 116 201 128 221 11 21 24 38 27 38 3 0 79 -125 167 -278z m356 -617 c58 -101 106 -187 106 -190 0 -3 -133 -5 -295 -5 l-295 0 0 -50 0 -50 -197 2 -198 3 -3 238 -2 237 388 0 389 0 107 -185z m946 165 c-35 -66 -189 -326 -228 -387 l-47 -73 -177 0 -177 0 -24 32 c-27 37 -257 431 -257 442 0 3 207 6 460 6 460 0 461 0 450 -20z m928 -217 l-3 -238 -202 -3 -203 -2 0 50 0 50 -290 0 c-167 0 -290 4 -290 9 0 8 155 284 196 349 l14 22 390 0 390 0 -2 -237z"
id="path1"
style="stroke-width:0.08000003;stroke-dasharray:none" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="300.000000pt" height="300.000000pt" viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.10, written by Peter Selinger 2001-2011
</metadata>
<g transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB" stroke="none">
<path d="M13 2984 c-2 -7 -5 -680 -6 -1495 l-2 -1484 1492 0 1492 0 3 1490 c2
820 3 1491 2 1492 0 2 -670 4 -1489 5 -1113 2 -1489 0 -1492 -8z m1147 -117
c0 -1 -232 -234 -515 -517 l-515 -515 0 518 0 517 515 0 c283 0 515 -1 515 -3z
m1620 0 c0 -1 -596 -598 -1325 -1327 l-1325 -1325 0 729 0 730 597 598 598
598 727 0 c401 0 728 -1 728 -3z m-507 -2139 l-597 -598 -731 0 -730 0 1325
1325 1325 1325 3 -727 2 -727 -597 -598z m597 -83 l0 -515 -517 0 -518 0 515
515 c283 283 516 515 517 515 2 0 3 -232 3 -515z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1021 B

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="300.000000pt" height="300.000000pt" viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.10, written by Peter Selinger 2001-2011
</metadata>
<g transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB" stroke="none">
<path d="M10 1495 l0 -1495 1495 0 1495 0 0 1495 0 1495 -1495 0 -1495 0 0
-1495z m325 1352 c-22 -18 -76 -67 -121 -109 -44 -43 -83 -78 -87 -78 -9 0 -9
205 0 213 3 4 61 7 127 6 l121 0 -40 -32z m2545 -224 c-1 -194 -3 -253 -12
-238 -72 130 -214 304 -334 409 -43 38 -80 73 -82 77 -2 5 93 9 212 9 l216 0
0 -257z m-481 130 c105 -81 270 -269 349 -401 l32 -52 0 -706 0 -706 -36 -60
c-55 -94 -113 -165 -220 -268 -151 -144 -307 -240 -497 -305 l-102 -35 -333 0
-333 0 -96 36 c-426 159 -713 484 -804 908 -24 115 -26 342 -3 465 67 357 325
678 654 812 146 59 220 73 395 73 241 1 371 -36 560 -160 189 -123 329 -317
391 -540 36 -131 38 -315 5 -439 -45 -166 -135 -315 -257 -422 -68 -60 -70
-62 -161 -110 -121 -64 -182 -78 -348 -78 -140 0 -155 2 -229 29 -208 75 -349
211 -422 406 -24 67 -28 89 -28 200 -1 106 3 135 22 192 24 69 58 126 116 193
l35 40 185 -185 186 -185 42 43 43 42 -205 205 c-200 199 -207 205 -247 205
-35 0 -47 -7 -96 -53 -173 -167 -246 -425 -187 -662 37 -146 99 -252 216 -368
145 -146 349 -227 567 -227 199 0 372 58 539 182 154 113 280 299 334 493 44
156 53 278 29 415 -49 291 -186 520 -410 688 -451 337 -1084 286 -1499 -123
-179 -176 -267 -342 -355 -665 -6 -23 -9 128 -10 457 l-1 493 48 46 c26 26 76
71 111 100 l65 54 960 0 959 0 36 -27z m-2134 -1698 c36 -139 134 -337 223
-450 171 -220 373 -367 632 -461 l65 -23 -132 -1 -133 0 0 50 0 50 -350 0
-350 0 1 498 c1 283 5 484 9 467 5 -16 20 -75 35 -130z m2615 -590 l0 -345
-437 0 -438 1 60 20 c310 104 585 319 763 596 26 40 48 73 50 73 1 0 2 -155 2
-345z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="300.000000pt" height="300.000000pt" viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.10, written by Peter Selinger 2001-2011
</metadata>
<g transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB" stroke="none">
<path d="M4 2991 c-2 -2 -4 -676 -4 -1498 l0 -1493 1498 0 1497 0 -2 1495 -2
1495 -1491 2 c-820 2 -1494 1 -1496 -1z m2774 -1494 l2 -1277 -1280 0 -1280 0
0 1280 0 1280 1278 -2 1277 -3 3 -1278z"/>
<path d="M630 1495 l0 -865 865 0 865 0 0 865 0 865 -865 0 -865 0 0 -865z
m1570 5 l0 -700 -700 0 -700 0 0 700 0 700 700 0 700 0 0 -700z"/>
<path d="M1210 1495 l0 -285 290 0 290 0 0 285 0 285 -290 0 -290 0 0 -285z
m410 0 l0 -125 -120 0 -120 0 0 125 0 125 120 0 120 0 0 -125z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 990 B

View File

@@ -0,0 +1,208 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.0"
width="300.000000pt"
height="300.000000pt"
viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet"
id="svg1"
sodipodi:docname="param_cubic.svg"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#4479FB"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="pt"
inkscape:zoom="1.045"
inkscape:cx="211.00478"
inkscape:cy="282.77512"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g1" />
<metadata
id="metadata1">&#10;Created by potrace 1.10, written by Peter Selinger 2001-2011&#10;</metadata>
<g
transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB"
stroke="none"
id="g1">
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 762.58493,2933.3687 196.84051,2753.4649"
id="path6-7"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 207.17691,2773.2734 25.503976,2100.7894"
id="path7-9"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 217.0479,2764.357 96.965109,2888.3359"
id="path9-1"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 1558.7065,1434.8516 2136.5314,889.29893"
id="path19"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path1" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.80000001;stroke-dasharray:none"
d="m 1955.7196,33.2103 177.1217,856.08863"
id="path20"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.80000001;stroke-dasharray:none"
d="M 2907.7491,1077.4908 2129.1513,889.29893"
id="path21"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.80000001;stroke-dasharray:none"
d="M 1254.6125,597.78598 981.54983,911.43915"
id="path16"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.80000001;stroke-dasharray:none"
d="M 1642.0664,778.5978 1254.6125,597.786"
id="path17"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.80000001;stroke-dasharray:none"
d="M 1254.6125,601.47601 1151.2916,232.47232"
id="path18"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 1409.4211,1478.3903 693.72694,1339.4834"
id="path13"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path1" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.80000001;stroke-dasharray:none"
d="M 380.0738,405.90406 708.48709,1339.4834"
id="path14"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.80000001;stroke-dasharray:none"
d="M 704.79705,1339.4834 132.84133,1808.1181"
id="path15"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.80000001;stroke-dasharray:none"
d="m 2129.1513,2095.9409 291.5129,-313.653"
id="path10"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 2646.0846,2606.8418 291.5129,-313.653"
id="path10-4"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 394.25801,341.81413 685.77091,28.161132"
id="path10-5"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 2797.048,1904.059 2420.6642,1782.2879"
id="path11"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.80000001;stroke-dasharray:none"
d="m 2287.8229,1350.5535 129.1513,431.7344"
id="path12"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85.5063;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 2553.328,2620.0433 1750.2118,2345.7542"
id="path6"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85.5063;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 1753.879,2345.7542 1527.6288,1582.001"
id="path7"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85.5063;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 1753.879,2349.5117 -425.395,454.6434"
id="path9"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:8.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.80000001"
d="M 54.612546,58.671586 80.442802,80.442802"
id="path2"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
transform="matrix(9.9999998,0,0,-9.9999998,0,3000)" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:8.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.80000001"
d="M 80.442802,80.442802 122.50922,67.527675"
id="path3"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
transform="matrix(9.9999998,0,0,-9.9999998,0,3000)" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:8.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.80000001"
d="M 80.811808,80.073801 71.955719,122.87823"
id="path5"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
transform="matrix(9.9999998,0,0,-9.9999998,0,3000)" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 2569.3392,506.02451 2827.8107,263.63872"
id="path2-1"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 2810.028,251.27354 133.0938,38.6031"
id="path3-7"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 2840.5346,286.68096 2787.5647,88.62491"
id="path5-5"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
d="M0 1495 l0 -1495 1495 0 1495 0 0 1495 0 1495 -1495 0 -1495 0 0 -1495z m860 1372 c0 -1 -166 -169 -370 -372 l-370 -370 0 373 0 372 370 0 c204 0 370 -1 370 -3z m1624 -9 c14 -55 24 -103 21 -107 -3 -2 -89 19 -192 47 -103 29 -204 56 -223 61 -25 6 27 9 178 10 162 1 213 -2 216 -11z m-1409 -110 c3 -13 10 -39 15 -58 5 -19 30 -109 54 -200 24 -91 62 -232 85 -315 22 -82 54 -202 70 -265 17 -63 41 -155 55 -203 l24 -88 -31 6 c-18 4 -120 31 -227 60 -107 29 -283 76 -390 105 -107 29 -265 71 -350 94 l-155 42 -3 64 -3 64 358 358 358 358 67 0 c61 0 67 -2 73 -22z m965 1 c41 -11 82 -22 91 -24 14 -3 232 -61 324 -86 60 -17 95 -31 95 -38 0 -11 -1015 -1021 -1026 -1021 -7 0 -30 69 -53 153 -23 83 -46 168 -51 187 -10 35 -50 187 -150 560 -29 107 -58 216 -65 243 l-13 47 387 0 c357 0 392 -2 461 -21z m655 -9 c-27 -28 -55 -39 -55 -22 0 4 -3 17 -6 30 -6 21 -3 22 42 22 l48 0 -29 -30z m97 -192 l88 -21 -1 -346 c-1 -317 -2 -342 -15 -296 -19 66 -25 90 -79 290 -25 94 -58 217 -74 275 -27 99 -29 120 -13 120 3 0 46 -10 94 -22z m-178 -188 c5 -23 15 -64 57 -216 21 -78 54 -202 74 -277 l35 -136 0 -246 c0 -230 -1 -246 -17 -241 -50 14 -549 149 -868 233 -93 25 -183 50 -198 56 -29 10 -27 12 430 469 l458 458 13 -42 c7 -24 14 -50 16 -58z m-2214 -605 c91 -24 242 -65 335 -90 94 -24 186 -49 205 -55 53 -15 302 -81 319 -85 81 -19 147 -40 153 -49 8 -12 -999 -1026 -1019 -1026 -12 0 -23 34 -67 200 -41 155 -66 251 -87 325 -17 63 -19 105 -19 447 0 208 3 378 8 378 4 0 81 -20 172 -45z m1288 -345 c64 -17 182 -49 262 -70 80 -22 222 -60 315 -85 94 -25 186 -49 205 -55 19 -5 97 -26 173 -46 l137 -37 0 -126 0 -126 -372 -372 -373 -373 -66 0 -67 0 -31 118 c-17 64 -36 133 -41 152 -9 33 -25 92 -155 580 -32 118 -73 269 -91 335 -29 107 -33 135 -18 135 2 0 57 -14 122 -30z m-188 -250 c6 -19 30 -111 55 -205 25 -93 63 -235 85 -315 55 -201 71 -262 75 -285 3 -11 11 -43 20 -70 8 -28 15 -53 15 -57 0 -5 -116 -8 -257 -8 l-258 0 -165 45 c-91 24 -240 65 -333 90 -92 25 -174 45 -182 45 -8 0 -15 3 -15 7 0 5 206 214 457 465 l458 458 18 -68 c9 -37 22 -83 27 -102z m-1336 -361 c15 -58 39 -151 55 -207 l29 -102 -37 6 c-20 4 -47 10 -61 14 l-25 6 -2 210 c-2 118 1 203 6 194 5 -8 20 -63 35 -121z m2716 -294 l0 -285 -287 0 -288 0 285 285 c157 157 286 285 287 285 2 0 3 -128 3 -285z m-2615 -145 c27 0 22 -29 -11 -61 l-34 -33 0 53 c0 44 3 52 16 47 9 -3 22 -6 29 -6z m310 -85 c72 -20 173 -47 225 -61 52 -14 147 -39 210 -55 63 -17 117 -32 119 -35 2 -2 -147 -4 -332 -4 l-336 0 -7 38 c-3 20 -12 59 -20 86 -13 46 -12 66 4 66 4 0 65 -16 137 -35z"
id="path1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.0"
width="300.000000pt"
height="300.000000pt"
viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet"
id="svg1"
sodipodi:docname="param_rectilinear.svg"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="pt"
inkscape:zoom="2.0325"
inkscape:cx="200"
inkscape:cy="200"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g1" />
<metadata
id="metadata1">&#10;Created by potrace 1.10, written by Peter Selinger 2001-2011&#10;</metadata>
<g
transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB"
stroke="none"
id="g1">
<path
style="display:inline;fill:#4479fb;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.80000001"
d="M 4.0590406,4.0590406 295.20295,295.20295"
id="path2"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
transform="matrix(9.9999998,0,0,-9.9999998,0,3000)" />
<path
style="display:inline;fill:#4479fb;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:99.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.80000001"
d="M 1367.962,2912.7852 2937.9972,1342.75"
id="path2-8"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:#4479fb;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:100;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.80000001"
d="M 74.460566,1654.6539 1644.4958,84.618725"
id="path2-8-1"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
d="M13 2984 c-2 -7 -5 -680 -6 -1495 l-2 -1484 1492 0 1492 0 3 1490 c2 820 3 1491 2 1492 0 2 -670 4 -1489 5 -1113 2 -1489 0 -1492 -8z m1147 -117 c0 -1 -232 -234 -515 -517 l-515 -515 0 518 0 517 515 0 c283 0 515 -1 515 -3z m1620 0 c0 -1 -596 -598 -1325 -1327 l-1325 -1325 0 729 0 730 597 598 598 598 727 0 c401 0 728 -1 728 -3z m-507 -2139 l-597 -598 -731 0 -730 0 1325 1325 1325 1325 3 -727 2 -727 -597 -598z m597 -83 l0 -515 -517 0 -518 0 515 515 c283 283 516 515 517 515 2 0 3 -232 3 -515z"
id="path1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="300.000000pt" height="300.000000pt" viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.10, written by Peter Selinger 2001-2011
</metadata>
<g transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB" stroke="none">
<path d="M10 2988 c0 -5 0 -677 0 -1494 l-1 -1485 1488 1 c818 0 1488 2 1490
4 2 2 4 672 6 1490 l2 1486 -25 0 c-14 0 -685 1 -1493 3 -807 1 -1467 -1
-1467 -5z m917 -355 l-237 -238 -237 238 -238 237 475 0 475 0 -238 -237z
m749 222 c16 -8 147 -133 291 -277 l263 -263 -365 -365 -365 -365 -365 365
-365 365 278 278 278 277 160 0 c122 0 168 -4 190 -15z m871 -222 l-237 -238
-237 238 -238 237 475 0 475 0 -238 -237z m-2180 -560 l-237 -238 0 475 0 475
237 -238 238 -237 -238 -237z m2503 235 l0 -473 -237 237 -238 238 235 235
c129 129 236 235 237 235 2 0 3 -213 3 -472z m-1820 -1173 l-365 -365 -267
267 c-148 148 -268 263 -268 258 0 -6 -5 -3 -10 5 -13 20 -13 331 0 367 6 15
131 148 278 296 l267 267 365 -365 365 -365 -365 -365z m1807 544 c10 -12 13
-58 13 -185 l0 -169 -278 -278 -277 -277 -365 365 -365 365 365 365 365 365
264 -267 c145 -148 270 -275 278 -284z m-990 -631 l363 -363 -277 -278 -277
-277 -157 0 c-87 0 -170 5 -185 10 -15 6 -148 131 -296 278 l-269 266 363 363
c200 200 365 363 368 363 3 0 168 -163 367 -362z m-1500 -595 l-237 -238 0
475 0 475 237 -238 238 -237 -238 -237z m2503 235 l0 -473 -237 237 -238 238
235 235 c129 129 236 235 237 235 2 0 3 -213 3 -472z m-1940 -323 l235 -235
-475 0 -475 0 235 235 c129 129 237 235 240 235 3 0 111 -106 240 -235z m1620
0 l235 -235 -475 0 -475 0 235 235 c129 129 237 235 240 235 3 0 111 -106 240
-235z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.0"
width="300.000000pt"
height="300.000000pt"
viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet"
id="svg1"
sodipodi:docname="param_gyroid.svg"
xml:space="preserve"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs1" /><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#4479FB"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="pt"
inkscape:zoom="2.0325"
inkscape:cx="200"
inkscape:cy="200"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g1" /><metadata
id="metadata1">&#10;Created by potrace 1.10, written by Peter Selinger 2001-2011&#10;</metadata><g
transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB"
stroke="none"
id="g1"><path
d="M0 1495 l0 -1495 1502 0 1501 0 -6 128 c-4 70 -7 742 -7 1495 l0 1367 -1495 0 -1495 0 0 -1495z m1580 1377 c0 -5 -7 -23 -16 -41 -15 -29 -14 -33 4 -64 30 -49 62 -155 62 -206 0 -50 -19 -120 -45 -170 -9 -17 -61 -79 -115 -136 -158 -166 -205 -254 -217 -402 -13 -161 31 -258 198 -438 177 -190 215 -313 148 -477 -18 -42 -53 -88 -142 -185 -126 -137 -164 -198 -193 -313 -11 -43 -15 -90 -12 -142 l5 -78 -289 0 -288 0 -16 38 c-23 53 -44 138 -44 175 0 34 18 99 44 157 8 19 63 87 122 150 158 170 196 239 213 388 17 160 -28 267 -184 432 -144 153 -150 162 -181 278 -18 67 -18 105 1 166 23 77 55 123 163 237 142 151 184 231 201 378 9 85 -6 183 -35 228 -8 12 -14 25 -14 28 0 3 142 5 315 5 173 0 315 -4 315 -8z m1298 -79 l3 -83 -51 0 -50 0 0 -335 c0 -305 -2 -342 -20 -407 -26 -96 -27 -215 0 -300 19 -59 20 -92 20 -592 0 -506 -1 -532 -21 -598 -16 -54 -20 -91 -17 -164 l3 -94 -287 0 -287 0 -27 58 c-23 49 -27 70 -28 152 0 86 2 100 28 150 16 31 66 93 113 141 104 107 150 168 184 244 50 114 61 216 35 326 -20 82 -58 143 -155 244 -109 113 -146 161 -179 233 -22 49 -26 71 -26 152 -1 132 12 154 183 335 37 39 78 86 92 105 60 82 99 201 99 300 0 69 -26 178 -48 203 -15 17 -5 17 209 15 l224 -3 3 -82z m-2002 -48 c3 -19 4 -70 2 -112 -6 -125 -41 -185 -203 -353 -129 -133 -165 -210 -165 -357 0 -169 44 -264 196 -423 163 -170 179 -202 172 -342 -7 -132 -30 -176 -174 -330 -153 -164 -187 -228 -192 -370 -3 -62 0 -116 8 -146 14 -50 61 -155 81 -178 10 -12 -25 -14 -235 -14 l-246 0 0 40 0 40 50 0 50 0 0 348 c0 192 3 352 7 356 15 14 32 103 33 163 0 61 -13 137 -32 178 -5 11 -7 267 -6 580 3 499 5 566 21 618 21 71 21 152 1 232 -9 33 -18 70 -21 83 l-5 22 325 0 326 0 7 -35z m1482 18 c4 -10 7 -59 7 -108 0 -128 -31 -187 -175 -341 -116 -124 -163 -199 -186 -293 -25 -104 -16 -186 34 -308 30 -72 46 -94 172 -229 53 -56 109 -126 125 -156 28 -49 30 -61 30 -153 0 -93 -2 -105 -32 -166 -23 -47 -67 -103 -148 -190 -145 -156 -195 -254 -195 -384 0 -89 50 -246 95 -295 18 -20 15 -20 -348 -20 -385 0 -385 0 -353 43 11 15 11 24 -1 60 -10 28 -14 69 -11 122 5 112 42 188 145 297 191 202 228 272 225 433 -4 172 -55 273 -227 449 -63 64 -96 108 -118 153 -27 59 -29 71 -25 152 6 127 38 188 179 338 155 166 194 246 191 397 -2 78 -13 139 -37 199 -7 16 12 17 319 17 302 0 327 -1 334 -17z m-2220 -203 c0 -36 -4 -78 -8 -95 -5 -18 -8 18 -8 95 0 77 3 113 8 95 4 -16 8 -59 8 -95z m2741 -752 c0 -73 -3 -106 -9 -93 -16 37 -11 205 6 205 2 0 4 -51 3 -112z m-2741 -733 c0 -33 -4 -73 -8 -90 -5 -19 -8 15 -8 90 0 75 3 109 8 90 4 -16 8 -57 8 -90z m2742 -752 c0 -74 -3 -103 -10 -93 -17 26 -12 200 6 200 2 0 4 -48 4 -107z"
id="path1"
style="fill:#999999;fill-opacity:0.80000001" /><path
d="M 0,151 V 301 H 150 300 V 151 1 H 150 0 Z M 288,16.5 c 0,2.5 -0.2,4.5 -0.5,4.5 -0.3,0 -1.7,-0.7 -3.1,-1.6 -2.1,-1.4 -2.9,-1.5 -5.2,-0.5 -5.1,2.3 -10.7,6.6 -21.3,16.2 -16,14.6 -25.7,18.2 -40.3,15.2 -8.3,-1.7 -14.9,-5.7 -24.3,-14.6 -18.3,-17.3 -25.7,-21 -42.3,-21 -7.5,0 -10.9,0.4 -16,2.3 -8.5,3 -18.9,10.1 -27,18.5 C 97.7,46 91.7,49.3 78.7,51.3 74.5,52 63.9,49.7 59,47.1 53.4,44.2 51.5,42.7 41,32.9 36.3,28.6 31.6,24.4 30.5,23.6 28.7,22.2 31.1,22.1 53.8,22 H 79 V 17 12 H 183.5 288 Z M 19.5,31 c 3.3,1.9 9.8,7.1 14.5,11.5 16.2,15.5 24.1,19.5 39.6,20.2 8,0.4 11.4,0.2 16,-1.2 7.6,-2.3 16.4,-7.6 22.2,-13.3 14.9,-14.5 22.7,-19.6 32.4,-21.2 13.2,-2.1 24.4,1.9 36.1,12.9 19.7,18.7 28.6,23.1 46.3,23.1 14.5,0 24.9,-5.2 40.8,-20.5 4.9,-4.7 9.3,-8.5 9.7,-8.5 0.5,0 0.8,13 0.7,29.7 l -0.3,29.8 -4.1,2.2 c -2.2,1.2 -9,6.6 -15,12 -12.2,11 -17.3,14.6 -22.4,16.1 -10,2.9 -21.3,2.2 -29.7,-2 -2.5,-1.3 -8.9,-6.4 -14.2,-11.4 C 180.9,99.9 175.2,95.8 166.7,92.2 161.4,90 159,89.6 149.5,89.6 c -8.3,-0.1 -12.2,0.4 -16,1.7 -7.4,2.7 -15.2,7.9 -22.6,15 C 93,123.5 82.8,127.9 67.3,125 59,123.5 54.1,120.8 45.6,112.9 35.1,103.2 30.9,99.7 26.5,96.9 18.1,91.7 18.2,91.7 15,94 l -3,2.1 V 60.8 c 0,-19.4 0.4,-34.8 0.8,-34.2 0.4,0.6 3.4,2.6 6.7,4.4 z m 144,72.9 c 6.5,2.9 10.9,6.1 19.7,14.6 14.9,14.3 24.8,19 40.3,19 15.9,0 25.7,-4.7 42.4,-20.3 5.5,-5.1 12.7,-10.8 16.1,-12.7 l 6,-3.4 v 35 35 l -3,-2.2 c -2.6,-2 -3.3,-2.1 -5.6,-1 -5.4,2.4 -13.1,8.2 -20.9,15.7 -13.7,13.2 -20.2,16.4 -33.6,16.4 -12.6,0 -20.1,-3.9 -34.9,-18 -14.5,-13.8 -23.5,-18 -39.1,-18 -16,0 -24.2,3.8 -41.4,19.4 -17.1,15.5 -20.4,17 -35.2,16.4 -12.5,-0.5 -16.6,-2.6 -31.6,-16.3 -6,-5.4 -13.2,-11.3 -16,-13 l -5.2,-3.1 -0.3,-29.7 c -0.1,-16.3 0.1,-29.7 0.5,-29.7 0.5,0 3.3,2.3 6.3,5.1 22.7,21 28.9,24.3 46.5,24.3 16.1,0.1 24.6,-3.9 41.4,-19.6 9.8,-9.3 17.2,-14.2 23.2,-15.7 6.3,-1.5 19.1,-0.5 24.4,1.8 z m -4.5,72.7 c 8.1,1.9 16.4,7.2 25,15.9 13.4,13.7 26.2,19.8 41.4,19.7 16,-0.2 23.8,-3.8 39.9,-18.7 5.4,-4.9 10.4,-9.3 11.2,-9.8 1.3,-0.7 1.5,3 1.5,28.7 v 29.5 l -5.7,3.7 c -3.2,2 -9.6,7.3 -14.3,11.8 -14.6,14.1 -23.4,18.2 -37,17.4 -9.9,-0.6 -17.5,-4.3 -26.5,-12.7 -13.2,-12.6 -23.2,-20.1 -26.6,-20.1 -0.8,0 -2,-0.5 -2.5,-1 -1.8,-1.8 -15.4,-2.9 -22.9,-2 -13.1,1.7 -18.5,4.7 -35.3,19.8 -13.7,12.3 -19.5,15.3 -30.5,16 -13.4,0.8 -21.3,-2.9 -36.2,-17.2 -4.4,-4.2 -10.6,-9.3 -13.7,-11.3 L 21,242.5 v -30.3 c 0,-21.6 0.3,-30.2 1.1,-30.2 0.6,0 5.5,4 10.8,8.8 18.3,16.9 27.3,21.4 42.6,21.4 16.1,0 25.8,-4.5 41.2,-19.1 12.5,-11.9 17.6,-14.9 29.8,-17.5 3.8,-0.7 6,-0.6 12.5,1 z M 13.5,177 c 0.3,0.5 0.1,1 -0.4,1 -0.6,0 -1.1,-0.5 -1.1,-1 0,-0.6 0.2,-1 0.4,-1 0.3,0 0.8,0.4 1.1,1 z M 160,251.9 c 6.7,2.1 12.2,5.5 18.4,11.5 14,13.2 20.9,18.1 29.8,21.2 12.8,4.3 28.7,2.6 40.7,-4.4 2.5,-1.5 9.7,-7.4 16.1,-13.2 6.4,-5.8 13.9,-11.7 16.6,-13 2.7,-1.4 5.2,-3 5.6,-3.5 0.4,-0.6 0.8,7.9 0.8,18.7 V 289 H 150 12 l 0.1,-19.3 c 0,-10.5 0.3,-18.6 0.6,-18 0.2,0.7 1,1.3 1.6,1.3 2.3,0 11.6,7 20.4,15.3 14.5,13.7 25,18.7 39.4,18.7 15.4,0 26.2,-5.4 44,-21.8 8.5,-7.9 11.6,-10 20.9,-14 4,-1.7 14.3,-1.4 21,0.7 z"
id="path1-8"
style="fill:#4479FB;stroke:none;stroke-width:0.1"
transform="matrix(9.9999998,0,0,-9.9999998,0,3000)" /></g></svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="300.000000pt" height="300.000000pt" viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.10, written by Peter Selinger 2001-2011
</metadata>
<g transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB" stroke="none">
<path d="M10 1500 l0 -1490 1490 0 1490 0 0 1490 0 1490 -1490 0 -1490 0 0
-1490z m1690 1372 c0 -4 -22 -30 -50 -57 -45 -45 -50 -53 -50 -95 l0 -45 180
-180 180 -180 -163 -163 -162 -162 -365 365 -365 365 80 80 80 80 317 0 c175
0 318 -4 318 -8z m790 -27 c-28 -29 -36 -33 -49 -22 -18 14 -51 48 -51 54 0 1
30 3 67 3 l67 0 -34 -35z m-1710 -118 l0 -52 403 -403 402 -402 50 0 50 0 202
202 c266 266 264 222 18 468 l-185 184 27 28 27 28 266 0 266 0 49 -50 c45
-46 53 -50 95 -50 42 0 50 4 95 50 l50 51 90 -3 90 -3 3 -555 2 -555 -143 143
-143 143 -45 -2 c-43 -2 -48 -7 -246 -203 l-203 -200 0 -46 0 -45 390 -390
390 -390 -2 -225 -3 -225 -95 -3 -95 -3 -50 51 c-41 41 -55 50 -85 50 -30 0
-44 -9 -85 -50 l-49 -50 -358 0 -358 0 0 -50 0 -50 -100 0 -100 0 0 50 0 50
-272 0 -273 0 190 190 190 190 185 -185 c169 -169 188 -185 220 -185 32 0 52
17 242 207 192 191 208 211 208 243 0 33 -36 71 -617 652 -583 583 -620 618
-653 618 -32 0 -51 -16 -237 -202 -174 -175 -203 -208 -209 -242 l-7 -38 187
-187 186 -186 -260 -260 -260 -260 0 730 0 730 115 115 c113 113 115 116 115
160 0 44 -2 47 -115 160 l-115 115 0 91 c0 50 3 94 7 97 3 4 129 7 280 7 l273
0 0 -53z m-548 -314 l98 -98 -97 -97 c-54 -54 -101 -98 -105 -98 -5 0 -8 88
-8 195 0 107 3 195 7 195 4 0 52 -44 105 -97z m1161 -1161 l567 -567 -163
-163 -162 -162 -180 180 -180 180 -50 0 -51 0 -298 -300 -299 -300 -226 2
-226 3 -3 90 -2 90 375 375 c350 350 375 377 375 410 0 32 -16 51 -187 222
l-188 188 160 160 c88 88 162 160 165 160 3 0 260 -255 573 -568z m1487 -174
c0 -175 -3 -318 -7 -318 -5 0 -173 165 -375 367 l-368 368 162 162 163 163
212 -212 213 -213 0 -317z m-372 -953 c-3 -3 -32 -5 -64 -3 l-59 3 34 33 35
33 30 -30 c16 -17 27 -33 24 -36z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="300.000000pt" height="300.000000pt" viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.10, written by Peter Selinger 2001-2011
</metadata>
<g transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB" stroke="none">
<path d="M10 1495 l0 -1495 1495 0 1495 0 0 1495 0 1495 -1495 0 -1495 0 0
-1495z m358 1363 c-13 -11 -98 -300 -132 -450 -5 -21 -14 -29 -42 -34 -19 -3
-42 -13 -49 -21 -13 -13 -15 19 -15 251 l0 266 127 0 c103 0 124 -2 111 -12z
m1802 4 c0 -5 -55 -25 -122 -46 -193 -59 -361 -108 -383 -113 -15 -3 -43 19
-105 81 l-85 86 348 0 c191 0 347 -4 347 -8z m-783 -174 l92 -93 -24 -90 c-12
-49 -30 -117 -40 -150 -9 -33 -28 -105 -42 -160 -14 -55 -28 -103 -31 -107 -4
-4 -52 -19 -107 -33 -55 -15 -158 -43 -230 -62 -71 -19 -141 -37 -154 -40 -20
-5 -50 21 -210 181 l-188 187 59 217 c32 119 60 223 63 230 3 9 85 12 362 12
l358 0 92 -92z m1393 -63 c0 -118 -3 -155 -13 -155 -7 0 -82 70 -167 155
l-155 155 168 0 167 0 0 -155z m-373 -137 c101 -101 183 -190 183 -199 0 -9
-9 -45 -19 -80 -10 -35 -41 -146 -67 -246 -35 -131 -53 -183 -63 -183 -8 0
-28 -4 -45 -10 -17 -5 -125 -35 -240 -66 l-209 -55 -189 188 -189 189 16 59
c9 33 27 103 41 155 60 226 76 286 84 294 5 4 32 14 62 21 29 8 80 21 113 30
33 9 67 18 75 20 8 2 65 17 125 34 61 16 117 30 125 30 8 1 97 -81 197 -181z
m-1935 -515 c104 -103 188 -194 188 -202 0 -8 -7 -37 -15 -65 -8 -28 -38 -136
-66 -241 -28 -104 -52 -191 -54 -193 -2 -2 -27 -10 -56 -18 -105 -29 -239 -64
-244 -64 -3 0 -5 213 -5 473 l0 473 28 11 c15 6 29 11 32 12 3 1 89 -83 192
-186z m2308 -125 l0 -223 -47 47 -47 47 11 48 c17 78 77 303 80 303 2 0 3
-100 3 -222z m-1188 -175 l188 -188 -55 -205 c-31 -113 -62 -228 -71 -257 -18
-60 8 -48 -274 -122 -85 -23 -169 -46 -186 -51 -17 -6 -39 -10 -50 -10 -12 0
-91 72 -203 184 l-184 185 16 68 c22 97 103 393 114 422 8 21 33 30 219 80
115 31 227 62 249 68 22 6 42 11 45 12 3 0 89 -83 192 -186z m1056 -246 l133
-133 -4 -279 c-2 -154 -7 -294 -11 -312 -8 -29 -13 -33 -88 -53 -44 -12 -88
-23 -98 -25 -9 -2 -48 -12 -86 -23 -38 -11 -111 -30 -162 -43 l-92 -24 -187
187 -187 187 58 218 c85 314 76 292 111 302 69 21 460 128 475 130 3 1 65 -59
138 -132z m-1874 -576 l188 -188 -16 -59 c-9 -32 -29 -108 -46 -169 -16 -60
-35 -134 -41 -162 l-12 -53 -314 0 -313 0 2 363 3 362 170 47 c94 26 175 47
180 47 6 1 95 -84 199 -188z m1117 -297 l187 -186 -15 -52 c-8 -28 -17 -61
-20 -73 l-5 -23 -475 0 -475 0 6 27 c19 81 90 343 95 352 4 6 41 20 82 30 40
11 101 27 134 36 145 40 271 73 285 74 8 1 99 -83 201 -185z m889 -224 l0
-110 -251 0 c-235 0 -251 1 -244 18 3 9 9 29 12 44 4 23 14 29 72 44 54 15
399 110 409 113 1 1 2 -48 2 -109z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="300.000000pt" height="300.000000pt" viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.10, written by Peter Selinger 2001-2011
</metadata>
<g transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB" stroke="none">
<path d="M10 1505 l0 -1495 1495 0 1495 0 0 1495 0 1495 -1495 0 -1495 0 0
-1495z m475 1355 c-16 -17 -17 -33 -12 -132 3 -62 15 -167 27 -233 12 -66 27
-158 35 -205 13 -81 156 -535 174 -553 8 -8 75 6 98 21 10 6 -2 53 -48 191
-34 100 -59 185 -55 188 5 6 56 -2 256 -36 120 -20 121 -20 123 57 l2 47 -85
12 c-47 6 -110 16 -140 22 -30 6 -87 15 -126 22 l-71 11 -12 92 c-7 50 -16
120 -21 156 -5 36 -12 101 -15 145 -4 44 -9 88 -11 98 -5 16 12 17 250 17
l256 0 0 -80 c0 -43 5 -90 11 -103 7 -15 47 -42 122 -79 101 -50 279 -177 299
-212 10 -17 30 -80 68 -211 17 -60 36 -120 41 -133 5 -13 9 -31 9 -42 0 -10 3
-21 8 -23 9 -7 112 14 112 22 0 3 -7 44 -14 91 -7 47 -23 148 -36 225 -12 77
-27 151 -35 165 -8 17 -54 46 -139 90 -116 60 -182 103 -257 170 -23 20 -32
42 -45 105 -10 44 -24 88 -32 98 -14 16 7 17 433 17 l448 0 -21 -23 c-25 -26
-26 -44 -12 -114 10 -47 41 -229 62 -368 6 -38 14 -73 17 -78 4 -4 31 -2 60 5
l53 12 -6 45 c-3 26 -10 75 -15 111 -5 36 -14 103 -20 150 -6 47 -13 102 -16
123 l-5 37 310 0 310 0 0 50 c0 49 1 50 30 50 l30 0 0 -330 0 -330 -50 0 -50
0 0 -400 c0 -312 -3 -400 -12 -400 -7 0 -48 6 -92 12 l-79 13 -27 60 c-15 33
-46 99 -68 147 -23 48 -51 111 -63 138 -12 28 -27 49 -33 46 -6 -3 -30 -10
-53 -17 -24 -6 -43 -14 -43 -18 0 -3 34 -109 76 -236 97 -296 87 -285 266
-285 l128 0 0 -530 0 -530 -665 0 c-374 0 -665 4 -665 9 0 5 30 42 66 82 37
41 73 84 81 96 8 12 36 29 61 37 118 37 508 127 612 141 63 8 144 19 180 25
96 15 203 29 223 30 20 0 22 26 6 84 -12 43 5 42 -159 16 -36 -6 -114 -17
-175 -25 -60 -8 -126 -17 -145 -21 l-35 -6 -68 204 c-37 112 -75 217 -85 233
-15 24 -68 55 -253 148 -129 64 -238 117 -242 117 -4 0 -18 -22 -32 -50 l-25
-50 42 -26 c24 -15 108 -70 188 -122 80 -52 153 -99 163 -106 10 -6 49 -78 87
-161 39 -82 77 -162 86 -177 8 -16 12 -28 7 -28 -4 0 -37 -5 -73 -10 -81 -13
-162 -24 -310 -44 -104 -15 -117 -19 -136 -44 -12 -15 -80 -99 -151 -187
l-129 -160 -504 0 -505 0 -3 443 -2 443 25 -3 c23 -3 32 -18 81 -138 78 -191
82 -203 113 -325 29 -116 35 -123 102 -140 21 -5 35 1 71 32 24 21 66 56 93
78 26 22 69 58 95 80 26 22 77 65 114 95 37 30 81 67 97 81 l29 26 -32 41
c-18 23 -36 42 -40 42 -3 0 -94 -63 -200 -140 -106 -77 -196 -140 -199 -140
-15 0 -70 174 -101 320 -41 190 -62 217 -174 222 l-69 3 -6 315 c-3 173 -7
316 -7 318 -6 9 -52 -1 -62 -13 -7 -8 -16 -15 -21 -15 -5 0 -9 226 -9 515 l0
515 192 0 c190 0 191 0 173 -20z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1,58 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="300.000000pt" height="300.000000pt" viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.10, written by Peter Selinger 2001-2011
</metadata>
<g transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB" stroke="none">
<path d="M0 1503 l0 -1498 1500 0 1500 0 0 1498 0 1497 -1500 0 -1500 0 0
-1497z m665 1367 c-3 -5 -11 -10 -17 -10 -5 0 -35 -15 -66 -34 -136 -82 -436
-246 -448 -246 -11 0 -14 29 -14 150 l0 150 276 0 c181 0 273 -3 269 -10z
m1653 -42 c90 -163 260 -471 286 -521 30 -57 31 -58 11 -70 -18 -11 -83 -46
-321 -173 -55 -30 -107 -54 -114 -54 -12 0 -590 571 -590 583 0 3 63 69 139
146 l140 141 210 0 209 0 30 -52z m562 -200 l0 -253 -63 -32 c-35 -18 -66 -33
-69 -33 -8 0 -32 42 -144 245 -159 291 -174 318 -174 322 0 2 101 3 225 3
l225 0 0 -252z m-1575 72 l110 -110 -161 -161 -162 -162 -34 64 c-20 35 -70
129 -113 209 -43 80 -93 173 -112 208 l-34 62 198 0 198 0 110 -110z m263 43
l-66 -66 -68 66 -68 67 135 0 134 0 -67 -67z m-831 -63 c19 -36 86 -163 150
-284 l116 -218 -297 -297 -296 -296 -145 145 -145 145 0 270 c0 148 4 275 8
281 4 6 50 35 102 64 52 30 148 85 214 122 65 37 121 68 125 68 3 0 31 16 61
35 30 20 58 34 63 32 5 -1 25 -32 44 -67z m1038 -450 c154 -154 281 -284 283
-289 2 -5 -5 -12 -16 -15 -10 -4 -95 -47 -188 -97 -320 -172 -413 -219 -417
-212 -3 5 -64 121 -137 258 -73 138 -137 256 -143 263 -5 7 -8 15 -6 18 2 3
81 83 174 178 94 96 170 174 170 175 1 1 127 -125 280 -279z m957 -152 c70
-121 78 -144 78 -210 l0 -63 -110 -110 -109 -109 -162 162 c-89 89 -160 164
-158 166 7 5 189 106 192 106 2 0 52 27 113 60 60 33 111 60 114 60 3 0 22
-28 42 -62z m-1594 -150 c89 -169 143 -271 176 -328 l25 -44 -39 -22 c-21 -12
-91 -50 -156 -85 -66 -34 -180 -95 -254 -135 l-135 -72 -128 126 c-70 70 -126
131 -124 137 6 17 541 553 554 554 6 1 43 -59 81 -131z m1192 -253 c94 -93
170 -172 170 -175 0 -9 -649 -654 -653 -650 -2 3 -32 59 -67 125 -35 66 -77
145 -93 175 -113 209 -187 353 -184 356 2 3 103 57 223 121 120 64 264 140
319 169 55 30 103 53 108 51 4 -1 84 -78 177 -172z m-2063 -107 l63 -62 -62
-63 c-34 -35 -66 -63 -70 -63 -4 0 -8 56 -8 125 0 69 3 125 7 125 4 0 36 -28
70 -62z m2543 -68 c0 -66 -3 -120 -6 -120 -4 0 -34 27 -67 61 l-60 60 59 60
c32 32 62 59 66 59 4 0 8 -54 8 -120z m-1357 -162 c29 -57 111 -211 181 -342
l127 -239 -130 -131 -131 -131 -325 325 c-179 179 -324 329 -322 333 1 4 50
33 107 64 58 31 175 94 260 139 85 46 160 84 167 84 6 0 36 -46 66 -102z
m-816 -152 c-3 -9 -424 -236 -439 -236 -4 0 -8 56 -8 124 l0 124 112 112 111
111 114 -113 c62 -62 112 -117 110 -122z m2101 85 l142 -139 0 -209 0 -208
-82 -45 c-45 -25 -112 -61 -148 -81 -36 -20 -112 -62 -170 -94 -58 -32 -125
-69 -150 -83 -127 -70 -191 -104 -194 -101 -4 4 -133 245 -193 359 l-34 64
338 338 c186 186 340 338 343 338 3 0 69 -63 148 -139z m-1465 -1003 l-148
-148 -277 0 -276 0 -66 123 c-37 67 -79 145 -95 172 -15 28 -60 106 -98 175
-39 69 -82 146 -97 171 l-26 46 137 73 c76 40 174 93 218 116 44 23 105 56
135 73 l55 30 342 -342 343 -342 -147 -147z m-1100 329 c19 -34 47 -84 62
-112 16 -27 67 -120 115 -205 l86 -155 -145 -3 c-80 -1 -151 0 -158 2 -10 4
-13 64 -13 276 0 161 4 269 9 266 5 -4 25 -34 44 -69z m1688 -25 c20 -37 66
-124 103 -194 l67 -127 -48 -30 c-41 -26 -58 -31 -113 -31 l-65 0 -110 110
-110 110 115 115 c63 63 117 115 120 115 3 0 21 -30 41 -68z m1019 -222 l0
-230 -324 0 -324 0 -16 34 c-9 19 -16 38 -16 43 0 5 21 21 48 35 47 25 251
137 497 274 72 40 131 72 133 73 1 1 2 -102 2 -229z m-1250 -152 c0 -4 -56 -8
-125 -8 -69 0 -125 3 -125 7 0 4 28 36 62 70 l62 63 63 -62 c35 -34 63 -66 63
-70z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="300.000000pt" height="300.000000pt" viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.10, written by Peter Selinger 2001-2011
</metadata>
<g transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB" stroke="none">
<path d="M13 2984 c-2 -7 -5 -680 -6 -1495 l-2 -1484 1492 0 1492 0 3 1490 c2
820 3 1491 2 1492 0 2 -670 4 -1489 5 -1113 2 -1489 0 -1492 -8z m1147 -117
c0 -1 -232 -234 -515 -517 l-515 -515 0 518 0 517 515 0 c283 0 515 -1 515 -3z
m1620 0 c0 -1 -596 -598 -1325 -1327 l-1325 -1325 0 729 0 730 597 598 598
598 727 0 c401 0 728 -1 728 -3z m-507 -2139 l-597 -598 -731 0 -730 0 1325
1325 1325 1325 3 -727 2 -727 -597 -598z m597 -83 l0 -515 -517 0 -518 0 515
515 c283 283 516 515 517 515 2 0 3 -232 3 -515z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1021 B

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="300.000000pt" height="300.000000pt" viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.10, written by Peter Selinger 2001-2011
</metadata>
<g transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479fb" stroke="none">
<path d="M13 2984 c-2 -7 -5 -680 -6 -1495 l-2 -1484 1492 0 1492 0 3 1490 c2
820 3 1491 2 1492 0 2 -670 4 -1489 5 -1113 2 -1489 0 -1492 -8z m1147 -117
c0 -1 -232 -234 -515 -517 l-515 -515 0 518 0 517 515 0 c283 0 515 -1 515 -3z
m1183 -2069 l-527 -528 -731 0 -730 0 1255 1255 1255 1255 3 -727 2 -726 -527
-529z m297 1929 c0 -1 -565 -567 -1255 -1257 l-1255 -1255 0 729 0 729 527
528 527 529 728 0 c400 0 728 -1 728 -3z m230 -2082 l0 -515 -517 0 -518 0
515 515 c283 283 516 515 517 515 2 0 3 -232 3 -515z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="300.000000pt" height="300.000000pt" viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.10, written by Peter Selinger 2001-2011
</metadata>
<g transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB" stroke="none">
<path d="M0 1495 l0 -1495 1495 0 1495 0 0 1495 0 1495 -1495 0 -1495 0 0
-1495z m302 1362 c-18 -19 -22 -35 -22 -85 l0 -62 -62 0 c-43 0 -67 -5 -80
-17 -17 -15 -18 -12 -18 85 l0 102 102 0 101 0 -21 -23z m1668 15 c0 -4 -106
-113 -235 -242 l-235 -235 -235 235 c-129 129 -235 238 -235 242 0 5 212 8
470 8 259 0 470 -3 470 -8z m908 -94 c3 -96 -3 -113 -28 -83 -9 10 -32 15 -76
15 l-64 0 0 64 c0 44 -5 67 -15 76 -30 25 -13 31 83 28 l97 -3 3 -97z m-1678
-253 l255 -255 45 0 45 0 232 232 233 233 0 -325 0 -324 37 -38 37 -38 330 0
331 0 -233 -233 -232 -232 0 -50 0 -50 237 -237 238 -238 -345 0 -344 0 -28
-27 -28 -27 0 -335 0 -336 -238 238 c-230 230 -238 237 -277 237 -39 0 -47 -7
-277 -237 l-238 -238 0 336 0 335 -28 27 -28 27 -339 0 -340 0 238 238 237
237 0 45 0 45 -237 237 -238 238 327 0 327 0 275 -275 c151 -151 279 -275 284
-275 4 0 25 17 45 38 l37 37 -295 295 -295 295 -365 3 -365 3 0 229 0 230 63
0 c56 0 66 3 90 28 24 25 27 36 27 95 l0 67 273 0 272 0 255 -255z m1390 193
c0 -56 3 -65 32 -95 29 -30 37 -33 95 -33 l63 0 0 -230 0 -230 -320 0 -320 0
0 325 0 325 225 0 225 0 0 -62z m-2000 -1223 c0 -6 -106 -116 -235 -245 l-235
-235 0 480 0 480 235 -235 c129 -129 235 -239 235 -245z m2285 -464 c-3 -3
-111 100 -240 229 l-235 235 237 238 238 237 3 -466 c1 -257 0 -470 -3 -473z
m-2015 -491 l0 -320 -230 0 -230 0 0 59 c0 53 -3 63 -31 90 -27 28 -37 31 -90
31 l-59 0 0 230 0 230 320 0 320 0 0 -320z m1918 88 l2 -228 -62 0 c-56 0 -65
-3 -95 -32 -30 -29 -33 -37 -33 -90 l0 -58 -225 0 -225 0 0 320 0 320 318 -2
317 -3 3 -227z m-1038 -273 l235 -235 -475 0 -475 0 235 235 c129 129 237 235
240 235 3 0 111 -106 240 -235z m-1517 -75 l57 0 0 -57 c0 -44 5 -62 22 -80
l21 -23 -101 0 -102 0 0 102 0 101 23 -21 c18 -17 36 -22 80 -22z m2657 -65
l0 -95 -102 0 c-97 0 -100 1 -85 18 12 13 17 37 17 80 l0 62 64 0 c44 0 67 5
76 15 24 29 30 14 30 -80z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="300.000000pt" height="300.000000pt" viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.10, written by Peter Selinger 2001-2011
</metadata>
<g transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB" stroke="none">
<path d="M10 2988 c0 -5 0 -677 0 -1494 l-1 -1485 1488 1 c818 0 1488 2 1490
4 2 2 4 672 6 1490 l2 1486 -25 0 c-14 0 -685 1 -1493 3 -807 1 -1467 -1
-1467 -5z m917 -355 l-237 -238 -237 238 -238 237 475 0 475 0 -238 -237z
m749 222 c16 -8 147 -133 291 -277 l263 -263 -365 -365 -365 -365 -365 365
-365 365 278 278 278 277 160 0 c122 0 168 -4 190 -15z m871 -222 l-237 -238
-237 238 -238 237 475 0 475 0 -238 -237z m-2180 -560 l-237 -238 0 475 0 475
237 -238 238 -237 -238 -237z m2503 235 l0 -473 -237 237 -238 238 235 235
c129 129 236 235 237 235 2 0 3 -213 3 -472z m-1820 -1173 l-365 -365 -267
267 c-148 148 -268 263 -268 258 0 -6 -5 -3 -10 5 -13 20 -13 331 0 367 6 15
131 148 278 296 l267 267 365 -365 365 -365 -365 -365z m1807 544 c10 -12 13
-58 13 -185 l0 -169 -278 -278 -277 -277 -365 365 -365 365 365 365 365 365
264 -267 c145 -148 270 -275 278 -284z m-990 -631 l363 -363 -277 -278 -277
-277 -157 0 c-87 0 -170 5 -185 10 -15 6 -148 131 -296 278 l-269 266 363 363
c200 200 365 363 368 363 3 0 168 -163 367 -362z m-1500 -595 l-237 -238 0
475 0 475 237 -238 238 -237 -238 -237z m2503 235 l0 -473 -237 237 -238 238
235 235 c129 129 236 235 237 235 2 0 3 -213 3 -472z m-1940 -323 l235 -235
-475 0 -475 0 235 235 c129 129 237 235 240 235 3 0 111 -106 240 -235z m1620
0 l235 -235 -475 0 -475 0 235 235 c129 129 237 235 240 235 3 0 111 -106 240
-235z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.0"
width="300.000000pt"
height="300.000000pt"
viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet"
id="svg1"
sodipodi:docname="param_rectilinear.svg"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="pt"
inkscape:zoom="2.0325"
inkscape:cx="200"
inkscape:cy="200"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g1" />
<metadata
id="metadata1">&#10;Created by potrace 1.10, written by Peter Selinger 2001-2011&#10;</metadata>
<g
transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB"
stroke="none"
id="g1">
<path
style="display:inline;fill:#4479fb;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.80000001"
d="M 4.0590406,4.0590406 295.20295,295.20295"
id="path2"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
transform="matrix(9.9999998,0,0,-9.9999998,0,3000)" />
<path
style="display:inline;fill:#4479fb;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:99.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.80000001"
d="M 1367.962,2912.7852 2937.9972,1342.75"
id="path2-8"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:#4479fb;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:100;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.80000001"
d="M 74.460566,1654.6539 1644.4958,84.618725"
id="path2-8-1"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
d="M13 2984 c-2 -7 -5 -680 -6 -1495 l-2 -1484 1492 0 1492 0 3 1490 c2 820 3 1491 2 1492 0 2 -670 4 -1489 5 -1113 2 -1489 0 -1492 -8z m1147 -117 c0 -1 -232 -234 -515 -517 l-515 -515 0 518 0 517 515 0 c283 0 515 -1 515 -3z m1620 0 c0 -1 -596 -598 -1325 -1327 l-1325 -1325 0 729 0 730 597 598 598 598 727 0 c401 0 728 -1 728 -3z m-507 -2139 l-597 -598 -731 0 -730 0 1325 1325 1325 1325 3 -727 2 -727 -597 -598z m597 -83 l0 -515 -517 0 -518 0 515 515 c283 283 516 515 517 515 2 0 3 -232 3 -515z"
id="path1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1,57 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="300.000000pt" height="300.000000pt" viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.10, written by Peter Selinger 2001-2011
</metadata>
<g transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB" stroke="none">
<path d="M37 2993 c-15 -2 -27 -10 -27 -16 0 -7 -1 -678 -3 -1492 l-2 -1480
1492 0 c987 0 1494 3 1495 10 2 6 2 677 0 1493 l-2 1482 -1428 0 c-785 0
-1443 2 -1462 4 -19 2 -47 2 -63 -1z m633 -287 l-165 -165 -50 14 c-188 51
-254 68 -285 74 l-35 6 -3 118 -3 117 353 0 353 0 -165 -164z m427 74 c24 -93
53 -202 78 -295 23 -84 34 -129 32 -131 -1 -1 -47 11 -102 26 -55 16 -179 49
-275 75 -96 26 -177 49 -179 51 -2 2 74 85 170 183 171 177 175 180 214 178
l40 -2 22 -85z m1408 73 c4 -10 18 -61 31 -112 l25 -95 -258 -258 c-206 -206
-262 -258 -278 -253 -11 3 -87 23 -170 45 -82 22 -231 62 -330 88 l-180 49
-38 134 c-21 74 -53 190 -71 259 -19 69 -37 133 -41 143 -7 16 28 17 648 17
614 0 655 -1 662 -17z m220 -43 c-33 -33 -62 -56 -66 -52 -4 4 -13 31 -22 60
l-15 52 81 0 81 0 -59 -60z m144 -437 l-1 -408 -19 65 c-11 36 -35 126 -55
200 -52 197 -74 279 -88 330 l-13 45 86 88 c47 48 87 87 88 87 2 0 3 -183 2
-407z m-2697 138 c13 -5 69 -22 126 -36 56 -15 102 -30 102 -34 0 -3 -61 -67
-135 -141 l-135 -135 0 178 c0 105 4 177 10 177 5 0 19 -4 32 -9z m2468 -161
c5 -19 21 -80 36 -135 14 -55 36 -137 49 -182 22 -81 22 -83 3 -83 -16 0 -138
31 -233 59 -16 5 -94 26 -173 47 l-143 38 208 208 208 208 18 -62 c9 -35 22
-79 27 -98z m-1970 25 c52 -14 111 -29 130 -35 76 -21 220 -59 321 -85 59 -15
111 -30 116 -34 8 -5 85 -277 149 -526 15 -55 30 -110 35 -123 5 -13 9 -31 9
-40 0 -9 -115 -132 -256 -273 l-256 -256 -86 23 c-48 13 -114 30 -147 39 -33
9 -94 25 -135 36 -41 11 -115 31 -165 45 -49 13 -111 29 -138 36 -46 11 -47
13 -63 67 -9 31 -24 70 -33 86 -14 26 -16 76 -19 348 l-3 317 208 205 c126
124 214 202 223 200 8 -2 58 -16 110 -30z m760 -204 c82 -21 232 -61 325 -86
55 -15 121 -33 147 -39 l48 -11 -210 -210 c-137 -137 -211 -204 -214 -194 -10
31 -40 143 -111 414 -14 55 -28 108 -31 118 -6 19 -3 20 46 8z m845 -226 c155
-41 220 -58 340 -90 50 -14 118 -32 152 -41 53 -14 62 -20 66 -42 3 -15 12
-52 21 -82 13 -46 16 -110 14 -375 l-1 -320 -206 -203 -207 -202 -49 14 c-56
16 -138 38 -360 96 -186 49 -285 76 -289 81 -3 5 -106 383 -141 519 -14 58
-31 115 -36 128 -5 13 -9 31 -9 40 0 9 115 132 256 273 254 254 257 257 288
248 17 -6 90 -25 161 -44z m-788 -620 c6 -22 27 -103 48 -180 64 -242 84 -320
80 -323 -4 -4 -109 22 -370 94 -49 13 -114 29 -143 36 l-54 11 208 208 c115
115 211 205 215 201 3 -4 11 -25 16 -47z m-1104 -300 c51 -14 106 -29 122 -34
17 -5 94 -26 173 -47 l143 -38 -208 -208 -208 -208 -18 62 c-24 86 -32 117
-63 233 -14 55 -36 137 -49 183 -27 98 -32 95 108 57z m-177 -255 c46 -174 69
-262 87 -327 l14 -52 -89 -88 -88 -88 1 410 1 410 19 -65 c11 -36 35 -126 55
-200z m904 59 c63 -17 178 -48 255 -68 77 -21 172 -47 210 -56 39 -10 73 -21
77 -24 4 -4 39 -121 77 -261 38 -140 72 -263 76 -273 7 -16 -28 -17 -648 -17
l-655 0 -11 33 c-5 17 -19 68 -31 111 l-22 79 259 259 c205 206 262 258 278
253 11 -3 72 -19 135 -36z m1758 -345 c-4 -3 -261 65 -267 72 -3 2 56 65 129
140 l135 134 3 -171 c1 -95 1 -173 0 -175z m-918 120 c167 -43 395 -107 400
-111 2 -2 -77 -85 -175 -183 -155 -155 -184 -180 -211 -180 l-30 0 -58 208
c-32 114 -62 218 -66 232 -5 14 -11 37 -14 52 -6 26 -5 26 26 17 18 -5 76 -21
128 -35z m745 -199 c55 -15 117 -32 138 -37 l37 -10 0 -114 0 -114 -352 0
-353 0 163 163 164 164 51 -13 c29 -6 97 -24 152 -39z m-2330 -242 l7 -33 -78
0 -78 0 59 60 60 61 11 -28 c7 -15 15 -43 19 -60z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -0,0 +1,213 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.0"
width="300.000000pt"
height="300.000000pt"
viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet"
id="svg1"
sodipodi:docname="param_adaptive cubic.svg"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#4479FB"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="pt"
inkscape:zoom="2.09"
inkscape:cx="200.23923"
inkscape:cy="202.63158"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g1" />
<metadata
id="metadata1">&#10;Created by potrace 1.10, written by Peter Selinger 2001-2011&#10;</metadata>
<g
transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB"
stroke="none"
id="g1">
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 2922.9849,1156.867 2685.6418,1027.1363"
id="path6-7"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 2515.5503,1316.9857 V 889.95218"
id="path10"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 2131.5789,696.17225 2515.5503,893.5407"
id="path11"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 2903.11,706.9378 2519.1388,893.5407"
id="path12"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 479.47736,1305.5742 V 878.54066"
id="path10-7"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 95.505955,684.76071 479.47736,882.12916"
id="path11-3"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 867.03706,695.52626 -383.9712,186.6029"
id="path12-8"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.80000001;stroke-dasharray:none"
d="M 785.97788,1940.9594 472.32472,2110.7011"
id="path7"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.80000001;stroke-dasharray:none"
d="m 476.01476,2110.7011 3.69004,276.7528"
id="path8"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.80000001;stroke-dasharray:none"
d="m 225.09225,1918.8192 250.92251,188.1919"
id="path9"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 2800.2852,1915.4748 2486.632,2085.2165"
id="path7-8"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 2490.3221,2085.2165 3.69,276.7528"
id="path8-6"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 2239.3995,1893.3346 250.9226,188.1919"
id="path9-6"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:87.3261;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 1782.9922,115.8515 1493.4947,309.95949"
id="path7-8-0"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:89.5926;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 1495.8849,297.52708 3.6652,309.54787"
id="path8-6-9"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 1244.9499,120.24856 250.9226,188.1918"
id="path9-6-6"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 1848.5894,2457.0689 -381.4358,198.5536"
id="path7-8-0-8"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 1470.3029,2642.9053 4.8292,316.6373"
id="path8-6-9-7"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:84.99999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 1139.6762,2461.5667 330.6103,192.5019"
id="path9-6-6-0"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:8.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 149.4465,152.02952 V 60.516606"
id="path4"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
transform="matrix(9.9999998,0,0,-9.9999998,0,3000)" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:8.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 147.60148,148.70849 81.54982,47.23247"
id="path5"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
transform="matrix(9.9999998,0,0,-9.9999998,0,3000)" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 2094.2074,578.15143 815.4982,-472.3247"
id="path5-7"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 238.69304,2920.0892 1054.1912,2447.7645"
id="path5-8"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:92.2818;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 95.423001,1120.2738 301.43238,1003.1616"
id="path5-5"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:8.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="m 151.29152,149.07749 -77.121777,49.4465"
id="path6"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
transform="matrix(9.9999998,0,0,-9.9999998,0,3000)" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 902.42225,605.20306 131.2045,110.73806"
id="path6-03"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
style="display:inline;fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:85;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.8"
d="M 2697.6137,2919.7604 1926.396,2425.2954"
id="path6-0"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0" />
<path
d="M0 1495 l0 -1495 1495 0 1495 0 0 1495 0 1495 -1495 0 -1495 0 0 -1495z m600 1330 l0 -45 288 0 c159 0 291 -3 294 -6 3 -3 -8 -29 -26 -58 -17 -29 -56 -97 -86 -149 l-55 -96 -447 -1 -448 0 0 200 0 200 240 0 240 0 0 -45z m1069 -47 c58 -105 88 -158 137 -241 19 -32 34 -60 34 -63 0 -2 -153 -4 -340 -4 -204 0 -340 4 -340 9 0 5 13 31 29 58 16 26 66 112 112 191 l83 142 117 0 116 0 52 -92z m1211 -108 l0 -200 -451 2 -451 3 -23 40 c-12 22 -50 88 -84 146 -33 59 -61 110 -61 113 0 3 133 6 295 6 l295 0 0 45 0 45 240 0 240 0 0 -200z m-1940 -325 c0 -2 -13 -26 -29 -53 -15 -26 -39 -68 -53 -93 -14 -24 -41 -71 -60 -104 -86 -148 -235 -406 -274 -473 l-42 -73 -35 58 c-19 32 -54 92 -77 133 -24 41 -59 102 -78 135 -19 33 -43 75 -53 93 -17 28 -19 55 -19 207 l0 175 360 0 c198 0 360 -2 360 -5z m1025 -82 c28 -47 62 -107 76 -132 14 -25 69 -120 121 -211 53 -91 104 -181 115 -200 11 -19 52 -90 92 -157 39 -67 71 -127 71 -133 0 -6 -36 -74 -80 -151 -44 -77 -91 -157 -103 -178 -12 -21 -68 -119 -125 -217 l-103 -179 -492 2 c-271 1 -510 3 -532 3 -41 0 -41 0 -91 87 -28 49 -121 210 -207 360 l-157 272 96 168 c53 92 119 206 147 253 27 47 59 101 70 120 10 19 45 80 77 135 32 55 76 133 99 173 l42 72 417 0 417 0 50 -87z m815 -84 l0 -170 -101 -177 c-56 -97 -111 -193 -121 -212 -46 -79 -36 -85 -138 92 -52 90 -115 199 -141 243 -135 230 -219 378 -219 386 0 5 158 9 360 9 l360 0 0 -171z m-2620 -314 c0 -3 16 -29 35 -59 19 -30 35 -57 35 -59 0 -3 17 -34 38 -68 22 -35 50 -84 64 -109 14 -25 38 -67 53 -93 l27 -48 -132 -232 c-74 -128 -139 -241 -147 -252 -11 -16 -13 61 -13 485 l0 505 20 -33 c11 -18 20 -35 20 -37z m2720 -437 c0 -305 -4 -498 -9 -493 -16 17 -281 482 -281 494 0 6 43 87 96 179 54 92 106 183 116 202 26 46 72 120 76 120 1 0 2 -226 2 -502z m-231 -350 l131 -227 0 -70 0 -71 -306 0 c-168 0 -303 3 -301 8 19 33 214 372 270 470 39 67 71 121 72 120 1 -2 61 -105 134 -230z m-2001 -56 c89 -153 164 -286 168 -295 7 -19 15 -18 -171 -18 -52 0 -169 0 -260 1 l-165 0 0 74 0 73 106 184 c58 101 116 201 128 221 11 21 24 38 27 38 3 0 79 -125 167 -278z m356 -617 c58 -101 106 -187 106 -190 0 -3 -133 -5 -295 -5 l-295 0 0 -50 0 -50 -197 2 -198 3 -3 238 -2 237 388 0 389 0 107 -185z m946 165 c-35 -66 -189 -326 -228 -387 l-47 -73 -177 0 -177 0 -24 32 c-27 37 -257 431 -257 442 0 3 207 6 460 6 460 0 461 0 450 -20z m928 -217 l-3 -238 -202 -3 -203 -2 0 50 0 50 -290 0 c-167 0 -290 4 -290 9 0 8 155 284 196 349 l14 22 390 0 390 0 -2 -237z"
id="path1"
style="stroke-width:0.08000003;stroke-dasharray:none" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,54 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="300.000000pt" height="300.000000pt" viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.10, written by Peter Selinger 2001-2011
</metadata>
<g transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#4479FB" stroke="none">
<path d="M1452 2990 l-1443 -5 -2 -1490 -2 -1490 1493 2 1492 2 1 1493 1 1493
-49 0 c-26 0 -697 -2 -1491 -5z m-622 -123 c0 -1 -157 -160 -350 -352 l-350
-350 0 353 0 352 350 0 c193 0 350 -1 350 -3z m262 -72 c10 -38 23 -86 28
-105 6 -19 21 -78 35 -130 14 -52 29 -111 35 -130 5 -19 21 -78 34 -130 23
-84 57 -210 162 -597 15 -57 24 -106 21 -110 -4 -3 -53 6 -110 21 -56 16 -165
45 -242 66 -77 21 -185 50 -240 65 -55 15 -134 36 -175 47 -41 11 -118 31
-170 45 -52 13 -111 29 -130 34 -19 5 -45 12 -56 14 -12 3 -52 14 -88 25 -63
20 -66 22 -66 53 0 29 44 76 433 468 428 432 432 436 471 435 l39 -1 19 -70z
m468 60 c30 -8 102 -28 160 -44 58 -15 173 -47 255 -70 83 -23 193 -53 245
-66 52 -14 109 -29 125 -34 17 -5 61 -17 98 -27 l69 -17 -488 -488 c-269 -269
-491 -485 -494 -481 -4 4 -19 54 -34 112 -16 58 -41 152 -56 210 -15 58 -45
168 -65 245 -21 77 -57 212 -81 300 -24 88 -54 201 -67 250 -14 50 -28 98 -32
108 -7 16 4 17 152 17 110 0 176 -5 213 -15z m963 -64 c10 -40 16 -75 14 -78
-3 -2 -15 0 -28 6 -13 5 -69 20 -124 35 -55 14 -172 45 -260 70 l-160 44 270
-1 270 -2 18 -74z m202 19 c-33 -33 -62 -56 -66 -52 -4 4 -13 31 -22 60 l-15
52 81 0 81 0 -59 -60z m145 -105 l0 -76 -37 7 c-21 4 -49 11 -62 16 -24 9 -24
10 34 68 33 33 61 60 62 60 2 0 3 -34 3 -75z m-75 -183 l70 -18 2 -270 2 -269
-20 65 c-17 58 -53 189 -109 405 -10 39 -21 78 -25 88 -9 21 -7 21 80 -1z
m-155 -172 c20 -76 59 -221 90 -340 38 -149 73 -268 108 -370 23 -68 26 -93
30 -264 3 -180 3 -188 -15 -181 -10 4 -58 18 -108 32 -49 13 -164 44 -255 68
-169 46 -276 75 -750 201 -52 14 -102 27 -110 30 -9 3 157 176 475 495 l490
489 18 -62 c9 -35 22 -79 27 -98z m-2385 -577 c74 -19 256 -69 455 -123 19 -5
78 -21 130 -34 52 -14 145 -39 205 -55 61 -16 157 -42 215 -57 58 -15 108 -30
112 -33 4 -4 -212 -226 -481 -495 l-488 -488 -17 69 c-10 37 -22 82 -27 98 -8
29 -17 61 -89 335 -18 69 -51 188 -72 265 -22 77 -46 164 -54 193 -9 36 -14
104 -14 209 0 144 1 155 18 148 9 -4 57 -18 107 -32z m1485 -398 c52 -15 103
-28 112 -30 10 -2 93 -24 185 -50 92 -25 211 -57 263 -70 52 -14 111 -30 130
-35 70 -20 297 -80 365 -97 68 -18 70 -19 73 -52 3 -33 -12 -50 -435 -473
-508 -508 -483 -491 -522 -366 -23 76 -25 83 -66 238 -14 52 -29 111 -35 130
-5 19 -21 78 -34 130 -14 52 -50 185 -80 295 -94 350 -106 394 -106 406 0 13
13 11 150 -26z m-236 -115 c16 -58 41 -152 56 -210 15 -58 44 -166 64 -240 70
-263 138 -516 161 -598 l23 -84 -171 4 -172 4 -295 82 c-162 45 -338 94 -390
107 -52 14 -108 29 -125 34 -16 5 -61 17 -98 27 l-69 17 488 488 c269 269 491
485 494 481 4 -4 19 -54 34 -112z m-1258 -645 c15 -55 30 -111 35 -124 6 -13
8 -26 5 -28 -3 -3 -39 5 -80 17 l-76 23 1 266 1 266 44 -160 c25 -88 56 -205
70 -260z m2621 -482 c-2 -2 -159 -2 -348 -1 l-344 3 345 348 345 347 3 -346
c1 -191 1 -349 -1 -351z m-2671 226 c24 -6 46 -15 49 -19 2 -3 -23 -33 -55
-65 l-60 -59 0 77 c0 47 4 77 11 77 5 0 30 -5 55 -11z m369 -99 c151 -39 304
-81 385 -104 l85 -24 -267 -1 -267 -1 -15 53 c-31 107 -31 111 -10 103 10 -4
51 -16 89 -26z m-206 -64 c6 -25 11 -50 11 -55 0 -7 -30 -11 -77 -11 l-77 0
59 60 c32 32 62 57 65 55 4 -3 13 -25 19 -49z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

7
resources/icons/snap.svg Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="a" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<path fill="none" stroke="#808080" stroke-linecap="round" stroke-miterlimit="10" d="m1.5,11.5V3.5c0-1.104569435119629.895430564880371-2,2-2h9c1.104569435119629,0,2,.895430564880371,2,2v8" />
<line x1="1.5" y1="14.5" x2="14.5" y2="14.5" style="fill:none; stroke:#ed6b21; stroke-linecap:round; stroke-miterlimit:10;"/>
<path d="m7,15h-3V5.237499999999272c0-.683452377914364.447715250171314-1.237499999999272,1-1.237499999999272h2v11Z" style="fill:#ed6b21; stroke-width:0px;"/>
<path d="m9,15h3V5.237499999999272c0-.683452377914364-.447715250171314-1.237499999999272-1-1.237499999999272h-2v11Z" style="fill:#ed6b21; stroke-width:0px;"/>
</svg>

After

Width:  |  Height:  |  Size: 755 B

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,7 @@
min_slic3r_version = 1.0.5
1.0.5 Optimize parameters
min_slic3r_version = 1.0.4
1.0.4 Modify start code
min_slic3r_version = 1.0.3 min_slic3r_version = 1.0.3
1.0.3 Delete filament property 1.0.3 Delete filament property
min_slic3r_version = 1.0.2 min_slic3r_version = 1.0.2

View File

@@ -4,8 +4,8 @@
# Vendor name will be shown by the Config Wizard. # Vendor name will be shown by the Config Wizard.
name = QIDI Technology name = QIDI Technology
# Configuration version of this file. Config file will only be installed, if the config_version differs. # Configuration version of this file. Config file will only be installed, if the config_version differs.
# This means, the server may force the PrusaSlicer configuration to be downgraded. # This means, the server may force the QIDISlicer configuration to be downgraded.
config_version = 1.0.3 config_version = 1.0.6
# Where to get the updates from? # Where to get the updates from?
config_update_url = https://github.com/QIDITECH/QIDISlicer/releases/download/QIDITechnology/ config_update_url = https://github.com/QIDITECH/QIDISlicer/releases/download/QIDITechnology/
changelog_url = https://qidi3d.com/pages/software-firmware changelog_url = https://qidi3d.com/pages/software-firmware
@@ -21,7 +21,7 @@ technology = FFF
family = X family = X
bed_model = X-MAX 3_bed.stl bed_model = X-MAX 3_bed.stl
bed_texture = X-MAX 3.svg bed_texture = X-MAX 3.svg
default_materials = QIDI ABS Rapido @X-MAX 3; QIDI PLA Rapido @X-MAX 3; QIDI PLA Rapido Matte @X-MAX 3; QIDI ToughPETG @X-MAX 3; Generic ABS @X-MAX 3; Generic PETG @X-MAX 3; Generic PLA @X-MAX 3 default_materials = QIDI ABS Odorless @X-MAX 3; QIDI ABS Rapido @X-MAX 3; QIDI ASA @X-MAX 3; QIDI PLA Rapido @X-MAX 3; QIDI PLA Rapido Matte @X-MAX 3; QIDI ToughPETG @X-MAX 3; Generic ABS @X-MAX 3; Generic PETG @X-MAX 3; Generic PLA @X-MAX 3
[printer_model:X-Plus 3] [printer_model:X-Plus 3]
name = X-Plus 3 name = X-Plus 3
@@ -30,7 +30,7 @@ technology = FFF
family = X family = X
bed_model = X-Plus 3_bed.stl bed_model = X-Plus 3_bed.stl
bed_texture = X-Plus 3.svg bed_texture = X-Plus 3.svg
default_materials = QIDI ABS Rapido @X-Plus 3; QIDI PLA Rapido @X-Plus 3; QIDI PLA Rapido Matte @X-Plus 3; QIDI ToughPETG @X-Plus 3; Generic ABS @X-Plus 3; Generic PETG @X-Plus 3; Generic PLA @X-Plus 3 default_materials = QIDI ABS Odorless @X-Plus 3; QIDI ABS Rapido @X-Plus 3; QIDI ASA @X-Plus 3; QIDI PLA Rapido @X-Plus 3; QIDI PLA Rapido Matte @X-Plus 3; QIDI ToughPETG @X-Plus 3; Generic ABS @X-Plus 3; Generic PETG @X-Plus 3; Generic PLA @X-Plus 3
[printer_model:X-smart 3] [printer_model:X-smart 3]
name = X-smart 3 name = X-smart 3
@@ -39,7 +39,7 @@ technology = FFF
family = X family = X
bed_model = X-smart 3_bed.stl bed_model = X-smart 3_bed.stl
bed_texture = X-smart 3.svg bed_texture = X-smart 3.svg
default_materials = QIDI ABS Rapido @X-smart 3; QIDI PLA Rapido @X-smart 3; QIDI PLA Rapido Matte @X-smart 3; QIDI ToughPETG @X-smart 3; Generic ABS @X-smart 3; Generic PETG @X-smart 3; Generic PLA @X-smart 3 default_materials = QIDI ABS Odorless @X-smart 3;QIDI ABS Rapido @X-smart 3; QIDI ASA @X-smart 3; QIDI PLA Rapido @X-smart 3; QIDI PLA Rapido Matte @X-smart 3; QIDI ToughPETG @X-smart 3; Generic ABS @X-smart 3; Generic PETG @X-smart 3; Generic PLA @X-smart 3
# All presets starting with asterisk, for example *common*, are intermediate and they will # All presets starting with asterisk, for example *common*, are intermediate and they will
# not make it into the user interface. # not make it into the user interface.
@@ -83,15 +83,17 @@ first_layer_acceleration = 500
first_layer_acceleration_over_raft = 500 first_layer_acceleration_over_raft = 500
first_layer_extrusion_width = 0.5 first_layer_extrusion_width = 0.5
first_layer_height = 0.2 first_layer_height = 0.2
first_layer_speed = 25% first_layer_infill_speed = 100
first_layer_speed = 50
first_layer_speed_over_raft = 30 first_layer_speed_over_raft = 30
first_layer_travel_speed = 300
fuzzy_skin = none fuzzy_skin = none
fuzzy_skin_point_dist = 0.8 fuzzy_skin_point_dist = 0.8
fuzzy_skin_thickness = 0.3 fuzzy_skin_thickness = 0.3
gap_fill_enabled = 0 gap_fill_enabled = 0
gap_fill_speed = 250 gap_fill_speed = 250
gcode_comments = 0 gcode_comments = 0
gcode_label_objects = 0 gcode_label_objects = 1
gcode_resolution = 0.0125 gcode_resolution = 0.0125
gcode_substitutions = gcode_substitutions =
infill_acceleration = 0 infill_acceleration = 0
@@ -192,8 +194,8 @@ support_tree_branch_diameter_double_wall = 3
support_tree_branch_distance = 1 support_tree_branch_distance = 1
support_tree_tip_diameter = 0.8 support_tree_tip_diameter = 0.8
support_tree_top_rate = 15% support_tree_top_rate = 15%
thick_bridges = 1 thick_bridges = 0
thin_walls = 1 thin_walls = 0
threads = 12 threads = 12
top_fill_pattern = monotoniclines top_fill_pattern = monotoniclines
top_infill_extrusion_width = 0 top_infill_extrusion_width = 0
@@ -263,7 +265,7 @@ solid_infill_speed = 230
# Common filament preset # Common filament preset
[filament:*common*] [filament:*common*]
advance_pressure = 0.031 advance_pressure = 0.031
bed_temperature = 60 bed_temperature = 55
bridge_fan_speed = 100 bridge_fan_speed = 100
compatible_printers = compatible_printers =
compatible_printers_condition = compatible_printers_condition =
@@ -271,6 +273,7 @@ compatible_prints =
compatible_prints_condition = compatible_prints_condition =
cooling = 1 cooling = 1
disable_fan_first_layers = 1 disable_fan_first_layers = 1
disable_rapid_cooling_fan_first_layers = 3
enable_advance_pressure = 1 enable_advance_pressure = 1
enable_auxiliary_fan = 100 enable_auxiliary_fan = 100
enable_dynamic_fan_speeds = 0 enable_dynamic_fan_speeds = 0
@@ -303,7 +306,7 @@ filament_retract_lift_above = nil
filament_retract_lift_below = nil filament_retract_lift_below = nil
filament_retract_restart_extra = nil filament_retract_restart_extra = nil
filament_retract_speed = nil filament_retract_speed = nil
filament_settings_id = PrusaSlicer_cf_pro.ini filament_settings_id =
filament_soluble = 0 filament_soluble = 0
filament_spool_weight = 0 filament_spool_weight = 0
filament_toolchange_delay = 0 filament_toolchange_delay = 0
@@ -313,7 +316,7 @@ filament_unloading_speed = 90
filament_unloading_speed_start = 100 filament_unloading_speed_start = 100
filament_vendor = QIDI filament_vendor = QIDI
filament_wipe = nil filament_wipe = nil
first_layer_bed_temperature = 60 first_layer_bed_temperature = 55
first_layer_temperature = 210 first_layer_temperature = 210
first_layer_volume_temperature = 0 first_layer_volume_temperature = 0
full_fan_speed_layer = 0 full_fan_speed_layer = 0
@@ -328,26 +331,60 @@ overhang_fan_speed_2 = 0
overhang_fan_speed_3 = 0 overhang_fan_speed_3 = 0
slowdown_below_layer_time = 5 slowdown_below_layer_time = 5
smooth_time = 0.03 smooth_time = 0.03
start_filament_gcode = "; Filament gcode\n" start_filament_gcode = "; Filament gcode\n{if (enable_advance_pressure[0] == true)}M900{else};M900{endif} K[advance_pressure] T[smooth_time]\n"
temperature = 220 temperature = 220
volume_temperature = 0 volume_temperature = 0
# QIDI filament preset # QIDI filament preset
[filament:*QIDI ABS Odorless*]
inherits = *common*
advance_pressure = 0.021
bed_temperature = 90
disable_fan_first_layers = 3
enable_auxiliary_fan = 0
enable_dynamic_fan_speeds = 1
enable_volume_fan = 40
extrusion_multiplier = 0.92
fan_below_layer_time = 30
filament_colour = #FFFACD
filament_density = 1.02
filament_max_volumetric_speed = 22
filament_type = ABS
first_layer_bed_temperature = 90
first_layer_temperature = 250
max_fan_speed = 50
min_fan_speed = 10
overhang_fan_speed_0 = 100
overhang_fan_speed_1 = 90
overhang_fan_speed_2 = 80
overhang_fan_speed_3 = 80
slowdown_below_layer_time = 4
temperature = 270
volume_temperature = 55
[filament:*QIDI ABS Rapido*] [filament:*QIDI ABS Rapido*]
inherits = *common* inherits = *common*
advance_pressure = 0.021 advance_pressure = 0.021
bed_temperature = 100 bed_temperature = 90
disable_fan_first_layers = 3
enable_auxiliary_fan = 0 enable_auxiliary_fan = 0
enable_volume_fan = 0 enable_dynamic_fan_speeds = 1
enable_volume_fan = 40
extrusion_multiplier = 0.95 extrusion_multiplier = 0.95
fan_below_layer_time = 30
filament_colour = #FFC800 filament_colour = #FFC800
filament_density = 1.02 filament_density = 1.02
filament_max_volumetric_speed = 22 filament_max_volumetric_speed = 22
filament_type = ABS filament_type = ABS
first_layer_bed_temperature = 100 first_layer_bed_temperature = 90
first_layer_temperature = 250 first_layer_temperature = 250
max_fan_speed = 60 max_fan_speed = 80
min_fan_speed = 60 min_fan_speed = 10
overhang_fan_speed_0 = 100
overhang_fan_speed_1 = 90
overhang_fan_speed_2 = 80
overhang_fan_speed_3 = 80
slowdown_below_layer_time = 4
temperature = 270 temperature = 270
volume_temperature = 55 volume_temperature = 55
@@ -356,6 +393,7 @@ inherits = *common*
advance_pressure = 0.01 advance_pressure = 0.01
bed_temperature = 100 bed_temperature = 100
bridge_fan_speed = 0 bridge_fan_speed = 0
disable_fan_first_layers = 3
enable_auxiliary_fan = 0 enable_auxiliary_fan = 0
enable_volume_fan = 0 enable_volume_fan = 0
extrusion_multiplier = 0.95 extrusion_multiplier = 0.95
@@ -370,72 +408,117 @@ min_fan_speed = 20
temperature = 270 temperature = 270
volume_temperature = 55 volume_temperature = 55
# QIDI filament preset
[filament:*QIDI ASA*]
inherits = *common*
advance_pressure = 0.021
bed_temperature = 90
disable_fan_first_layers = 3
enable_auxiliary_fan = 0
enable_dynamic_fan_speeds = 1
enable_volume_fan = 40
extrusion_multiplier = 0.92
fan_below_layer_time = 35
filament_colour = #F0E68C
filament_density = 1.02
filament_max_volumetric_speed = 16
filament_type = ABS
first_layer_bed_temperature = 90
first_layer_temperature = 250
max_fan_speed = 50
min_fan_speed = 10
overhang_fan_speed_0 = 100
overhang_fan_speed_1 = 80
overhang_fan_speed_2 = 60
overhang_fan_speed_3 = 40
slowdown_below_layer_time = 4
temperature = 270
volume_temperature = 55
[filament:*QIDI PA12-CF*] [filament:*QIDI PA12-CF*]
inherits = *common* inherits = *common*
advance_pressure = 0.01 advance_pressure = 0.01
bed_temperature = 80 bed_temperature = 80
bridge_fan_speed = 0 bridge_fan_speed = 40
disable_fan_first_layers = 3
enable_auxiliary_fan = 0 enable_auxiliary_fan = 0
extrusion_multiplier = 0.96 extrusion_multiplier = 0.96
fan_below_layer_time = 5
filament_colour = #696969 filament_colour = #696969
filament_density = 1.09 filament_density = 1.09
filament_max_volumetric_speed = 14 filament_max_volumetric_speed = 14
filament_type = PA12-CF filament_type = PA12-CF
first_layer_bed_temperature = 80 first_layer_bed_temperature = 80
first_layer_temperature = 290 first_layer_temperature = 290
max_fan_speed = 15 max_fan_speed = 30
min_fan_speed = 15 min_fan_speed = 10
slowdown_below_layer_time = 2
temperature = 290 temperature = 290
[filament:*QIDI PAHT-CF*] [filament:*QIDI PAHT-CF*]
inherits = *common* inherits = *common*
advance_pressure = 0.01 advance_pressure = 0.01
bed_temperature = 80 bed_temperature = 80
bridge_fan_speed = 0 bridge_fan_speed = 40
disable_fan_first_layers = 3
enable_auxiliary_fan = 0 enable_auxiliary_fan = 0
extrusion_multiplier = 0.96 extrusion_multiplier = 0.96
fan_below_layer_time = 5
filament_colour = #4F4F4F filament_colour = #4F4F4F
filament_density = 1.20 filament_density = 1.20
filament_max_volumetric_speed = 15 filament_max_volumetric_speed = 15
filament_type = PAHT-CF filament_type = PAHT-CF
first_layer_bed_temperature = 80 first_layer_bed_temperature = 80
first_layer_temperature = 310 first_layer_temperature = 310
max_fan_speed = 15 max_fan_speed = 30
min_fan_speed = 15 min_fan_speed = 10
slowdown_below_layer_time = 2
temperature = 310 temperature = 310
[filament:*QIDI PET-CF*] [filament:*QIDI PET-CF*]
inherits = *common* inherits = *common*
advance_pressure = 0.01 advance_pressure = 0.01
bed_temperature = 80 bed_temperature = 80
bridge_fan_speed = 5 bridge_fan_speed = 40
disable_fan_first_layers = 3
enable_auxiliary_fan = 0 enable_auxiliary_fan = 0
extrusion_multiplier = 1 extrusion_multiplier = 1
fan_below_layer_time = 5
filament_colour = #323232 filament_colour = #323232
filament_density = 1.30 filament_density = 1.30
filament_max_volumetric_speed = 14 filament_max_volumetric_speed = 14
filament_type = PET-CF filament_type = PET-CF
first_layer_bed_temperature = 80 first_layer_bed_temperature = 80
first_layer_temperature = 320 first_layer_temperature = 320
max_fan_speed = 10 max_fan_speed = 30
min_fan_speed = 10 min_fan_speed = 10
slowdown_below_layer_time = 2
temperature = 320 temperature = 320
[filament:*QIDI PETG-Tough*] [filament:*QIDI PETG-Tough*]
inherits = *common* inherits = *common*
advance_pressure = 0.07 advance_pressure = 0.07
bed_temperature = 80 bed_temperature = 80
bridge_fan_speed = 60 bridge_fan_speed = 90
disable_fan_first_layers = 3
enable_auxiliary_fan = 0 enable_auxiliary_fan = 0
enable_dynamic_fan_speeds = 1
extrusion_multiplier = 0.95 extrusion_multiplier = 0.95
fan_below_layer_time = 30
filament_colour = #00FF40 filament_colour = #00FF40
filament_density = 1.24 filament_density = 1.24
filament_max_volumetric_speed = 16 filament_max_volumetric_speed = 16
filament_type = PETG filament_type = PETG
first_layer_bed_temperature = 80 first_layer_bed_temperature = 80
first_layer_temperature = 240 first_layer_temperature = 240
max_fan_speed = 60 max_fan_speed = 40
min_fan_speed = 60 min_fan_speed = 10
min_print_speed = 10
overhang_fan_speed_0 = 90
overhang_fan_speed_1 = 70
overhang_fan_speed_2 = 50
overhang_fan_speed_3 = 40
slowdown_below_layer_time = 8
temperature = 250 temperature = 250
[filament:*QIDI PLA Rapido*] [filament:*QIDI PLA Rapido*]
@@ -451,7 +534,7 @@ filament_max_volumetric_speed = 22
inherits = *common* inherits = *common*
advance_pressure = 0.03 advance_pressure = 0.03
bed_temperature = 80 bed_temperature = 80
bridge_fan_speed = 0 bridge_fan_speed = 20
enable_auxiliary_fan = 0 enable_auxiliary_fan = 0
extrusion_multiplier = 0.96 extrusion_multiplier = 0.96
filament_colour = #FFEBCD filament_colour = #FFEBCD
@@ -468,27 +551,37 @@ temperature = 300
[filament:*Generic ABS*] [filament:*Generic ABS*]
inherits = *common* inherits = *common*
advance_pressure = 0.021 advance_pressure = 0.021
bed_temperature = 100 bed_temperature = 90
disable_fan_first_layers = 3
enable_auxiliary_fan = 0 enable_auxiliary_fan = 0
enable_volume_fan = 0 enable_dynamic_fan_speeds = 1
enable_volume_fan = 40
extrusion_multiplier = 0.95 extrusion_multiplier = 0.95
fan_below_layer_time = 30
filament_colour = #FFFF00 filament_colour = #FFFF00
filament_density = 1.04 filament_density = 1.04
filament_max_volumetric_speed = 17.5 filament_max_volumetric_speed = 17
filament_type = ABS filament_type = ABS
filament_vendor = Generic filament_vendor = Generic
first_layer_bed_temperature = 100 first_layer_bed_temperature = 90
first_layer_temperature = 250 first_layer_temperature = 250
max_fan_speed = 60 max_fan_speed = 80
min_fan_speed = 60 min_fan_speed = 10
overhang_fan_speed_0 = 100
overhang_fan_speed_1 = 90
overhang_fan_speed_2 = 80
overhang_fan_speed_3 = 80
slowdown_below_layer_time = 4
temperature = 260 temperature = 260
[filament:*Generic PETG*] [filament:*Generic PETG*]
inherits = *common* inherits = *common*
advance_pressure = 0.07 advance_pressure = 0.07
bed_temperature = 80 bed_temperature = 80
disable_fan_first_layers = 3
enable_auxiliary_fan = 0 enable_auxiliary_fan = 0
extrusion_multiplier = 0.95 extrusion_multiplier = 0.95
fan_below_layer_time = 30
filament_colour = #00FF00 filament_colour = #00FF00
filament_density = 1.27 filament_density = 1.27
filament_max_volumetric_speed = 9 filament_max_volumetric_speed = 9
@@ -496,20 +589,23 @@ filament_type = PETG
filament_vendor = Generic filament_vendor = Generic
first_layer_bed_temperature = 80 first_layer_bed_temperature = 80
first_layer_temperature = 240 first_layer_temperature = 240
max_fan_speed = 60 max_fan_speed = 90
min_fan_speed = 60 min_fan_speed = 40
min_print_speed = 10
slowdown_below_layer_time = 4
temperature = 250 temperature = 250
[filament:*Generic PLA*] [filament:*Generic PLA*]
inherits = *common* inherits = *common*
filament_colour = #0000FF filament_colour = #0000FF
filament_density = 1.20 filament_density = 1.20
filament_max_volumetric_speed = 17 filament_max_volumetric_speed = 14
filament_vendor = Generic filament_vendor = Generic
[filament:*Generic TPU 95A*] [filament:*Generic TPU 95A*]
inherits = *common* inherits = *common*
advance_pressure = 0.1 advance_pressure = 0.1
enable_auxiliary_fan = 0
extrusion_multiplier = 1 extrusion_multiplier = 1
filament_colour = #8000FF filament_colour = #8000FF
filament_density = 1.21 filament_density = 1.21
@@ -517,9 +613,15 @@ filament_max_volumetric_speed = 6
filament_type = TPU filament_type = TPU
filament_vendor = Generic filament_vendor = Generic
first_layer_temperature = 230 first_layer_temperature = 230
min_print_speed = 10
slowdown_below_layer_time = 8
temperature = 230 temperature = 230
# X-MAX 3 QIDI filament preset # X-MAX 3 QIDI filament preset
[filament:QIDI ABS Odorless @X-MAX 3]
inherits = *QIDI ABS Odorless*
compatible_printers_condition = printer_model=="X-MAX 3"
[filament:QIDI ABS Rapido @X-MAX 3] [filament:QIDI ABS Rapido @X-MAX 3]
inherits = *QIDI ABS Rapido* inherits = *QIDI ABS Rapido*
compatible_printers_condition = printer_model=="X-MAX 3" compatible_printers_condition = printer_model=="X-MAX 3"
@@ -528,11 +630,15 @@ compatible_printers_condition = printer_model=="X-MAX 3"
inherits = *QIDI ABS-GF* inherits = *QIDI ABS-GF*
compatible_printers_condition = printer_model=="X-MAX 3" compatible_printers_condition = printer_model=="X-MAX 3"
[filament:QIDI ASA @X-MAX 3]
inherits = *QIDI ASA*
compatible_printers_condition = printer_model=="X-MAX 3"
[filament:QIDI PA12-CF @X-MAX 3] [filament:QIDI PA12-CF @X-MAX 3]
inherits = *QIDI PA12-CF* inherits = *QIDI PA12-CF*
compatible_printers_condition = printer_model=="X-MAX 3" compatible_printers_condition = printer_model=="X-MAX 3"
[filament:QIDI PAHT-CF @X-Plus3] [filament:QIDI PAHT-CF @X-MAX 3]
inherits = *QIDI PAHT-CF* inherits = *QIDI PAHT-CF*
compatible_printers_condition = printer_model=="X-MAX 3" compatible_printers_condition = printer_model=="X-MAX 3"
@@ -574,6 +680,10 @@ inherits = *Generic TPU 95A*
compatible_printers_condition = printer_model=="X-MAX 3" compatible_printers_condition = printer_model=="X-MAX 3"
# X-Plus 3 QIDI filament preset # X-Plus 3 QIDI filament preset
[filament:QIDI ABS Odorless @X-Plus 3]
inherits = *QIDI ABS Odorless*
compatible_printers_condition = printer_model=="X-Plus 3"
[filament:QIDI ABS Rapido @X-Plus 3] [filament:QIDI ABS Rapido @X-Plus 3]
inherits = *QIDI ABS Rapido* inherits = *QIDI ABS Rapido*
compatible_printers_condition = printer_model=="X-Plus 3" compatible_printers_condition = printer_model=="X-Plus 3"
@@ -582,6 +692,10 @@ compatible_printers_condition = printer_model=="X-Plus 3"
inherits = *QIDI ABS-GF* inherits = *QIDI ABS-GF*
compatible_printers_condition = printer_model=="X-Plus 3" compatible_printers_condition = printer_model=="X-Plus 3"
[filament:QIDI ASA @X-Plus 3]
inherits = *QIDI ASA*
compatible_printers_condition = printer_model=="X-Plus 3"
[filament:QIDI PA12-CF @X-Plus 3] [filament:QIDI PA12-CF @X-Plus 3]
inherits = *QIDI PA12-CF* inherits = *QIDI PA12-CF*
compatible_printers_condition = printer_model=="X-Plus 3" compatible_printers_condition = printer_model=="X-Plus 3"
@@ -628,6 +742,13 @@ inherits = *Generic TPU 95A*
compatible_printers_condition = printer_model=="X-Plus 3" compatible_printers_condition = printer_model=="X-Plus 3"
# X-smart 3 QIDI filament preset # X-smart 3 QIDI filament preset
[filament:QIDI ABS Odorless @X-smart 3]
inherits = *QIDI ABS Odorless*
compatible_printers_condition = printer_model=="X-smart 3"
advance_pressure = 0.024
filament_max_volumetric_speed = 20
volume_temperature = 0
[filament:QIDI ABS Rapido @X-smart 3] [filament:QIDI ABS Rapido @X-smart 3]
inherits = *QIDI ABS Rapido* inherits = *QIDI ABS Rapido*
compatible_printers_condition = printer_model=="X-smart 3" compatible_printers_condition = printer_model=="X-smart 3"
@@ -635,6 +756,30 @@ advance_pressure = 0.024
filament_max_volumetric_speed = 20 filament_max_volumetric_speed = 20
volume_temperature = 0 volume_temperature = 0
[filament:QIDI ABS-GF @X-smart 3]
inherits = *QIDI ABS-GF*
compatible_printers_condition = printer_model=="X-smart 3"
volume_temperature = 0
[filament:QIDI ASA @X-smart 3]
inherits = *QIDI ASA*
compatible_printers_condition = printer_model=="X-smart 3"
advance_pressure = 0.024
filament_max_volumetric_speed = 20
volume_temperature = 0
[filament:QIDI PA12-CF @X-smart 3]
inherits = *QIDI PA12-CF*
compatible_printers_condition = printer_model=="X-smart 3"
[filament:QIDI PAHT-CF @X-smart 3]
inherits = *QIDI PAHT-CF*
compatible_printers_condition = printer_model=="X-smart 3"
[filament:QIDI PET-CF @X-smart 3]
inherits = *QIDI PET-CF*
compatible_printers_condition = printer_model=="X-smart 3"
[filament:QIDI PETG-Tough @X-smart 3] [filament:QIDI PETG-Tough @X-smart 3]
inherits = *QIDI PETG-Tough* inherits = *QIDI PETG-Tough*
compatible_printers_condition = printer_model=="X-smart 3" compatible_printers_condition = printer_model=="X-smart 3"
@@ -653,6 +798,10 @@ compatible_printers_condition = printer_model=="X-smart 3"
filament_max_volumetric_speed = 20 filament_max_volumetric_speed = 20
slowdown_below_layer_time = 8 slowdown_below_layer_time = 8
[filament:QIDI UltraPA @X-smart 3]
inherits = *QIDI UltraPA*
compatible_printers_condition = printer_model=="X-smart 3"
# X-smart 3 Generic filament preset # X-smart 3 Generic filament preset
[filament:Generic ABS @X-smart 3] [filament:Generic ABS @X-smart 3]
inherits = *Generic ABS* inherits = *Generic ABS*
@@ -669,13 +818,11 @@ filament_max_volumetric_speed = 8
[filament:Generic PLA @X-smart 3] [filament:Generic PLA @X-smart 3]
inherits = *Generic PLA* inherits = *Generic PLA*
compatible_printers_condition = printer_model=="X-smart 3" compatible_printers_condition = printer_model=="X-smart 3"
filament_max_volumetric_speed = 15
slowdown_below_layer_time = 8 slowdown_below_layer_time = 8
[filament:Generic TPU 95A @X-smart 3] [filament:Generic TPU 95A @X-smart 3]
inherits = *Generic TPU 95A* inherits = *Generic TPU 95A*
compatible_printers_condition = printer_model=="X-smart 3" compatible_printers_condition = printer_model=="X-smart 3"
slowdown_below_layer_time = 8
# Common printer preset # Common printer preset
[printer:*common*] [printer:*common*]
@@ -747,7 +894,7 @@ retract_restart_extra_toolchange = 0
retract_speed = 30 retract_speed = 30
silent_mode = 0 silent_mode = 0
single_extruder_multi_material = 0 single_extruder_multi_material = 0
start_gcode = G28\nM141 S0\nG0 Z50 F600\nM190 S[first_layer_bed_temperature]\nG28 Z\nG29\nG0 X0 Y0 Z50 F6000\nM109 S[first_layer_temperature]\nM83\nG0 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0)} Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0)} Z5 F6000\nG0 Z0.2 F600\nG1 E3 F1800\nG1 X{(min(print_bed_max[0], first_layer_print_min[0] + 80))} E{85 * 0.04} F3000\nG1 Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0) + 2} E{2 * 0.04} F3000\nG1 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0)} E{85 * 0.04} F3000\nG1 Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0) + 85} E{83 * 0.04} F3000\nG1 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0) + 2} E{2 * 0.04} F3000\nG1 Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0) + 5} E{80 * 0.04} F3000 start_gcode = PRINT_START\nG28\nM141 S0\nG0 Z50 F600\nM190 S[first_layer_bed_temperature]\nG28 Z\nG29 ; mesh bed leveling ,comment this code to close it\nG0 X0 Y0 Z50 F6000\nM109 S[first_layer_temperature]\nM106 P3 S255\nM83\nG4 P3000\nG0 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0)} Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0)} Z5 F6000\nG0 Z0.2 F600\nG1 E3 F1800\nG1 X{(min(print_bed_max[0], first_layer_print_min[0] + 80))} E{85 * 0.04} F3000\nG1 Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0) + 2} E{2 * 0.04} F3000\nG1 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0)} E{85 * 0.04} F3000\nG1 Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0) + 85} E{83 * 0.04} F3000\nG1 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0) + 2} E{2 * 0.04} F3000\nG1 Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0) + 3} E{82 * 0.04} F3000\nG1 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0) + 12} E{-10 * 0.04} F3000\nG1 E{10 * 0.04} F3000
template_custom_gcode = template_custom_gcode =
thumbnails = thumbnails =
thumbnails_format = QIDI thumbnails_format = QIDI

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -1,175 +1,364 @@
var LangText={ var LangText={
"en": { "en": {
"t0": "Welcome to QIDISlicer",
"t1": "User Guide", "t1": "User Guide",
"t2": "First Print", "t2": "First Print",
"t3": "Add Support", "t3": "Add Support",
"t4": "Connect Device", "t4": "Connect Device",
"t5": "Wifi Send", "t5": "Wifi Send",
"t6": "Issue Report", "t6": "Issue Report",
"t7": "Demonstration", "t7": "Introduce",
"t8": "Product Info", "t8": "3D Printers",
"t9": "Contact with us", "t9": "Contact with us",
"t10": "Filament", "t10": "Filaments",
"t11": "Add Text", "t11": "Add Text",
"t12": "Cut Model", "t12": "Cut Model",
"t13": "Download Model", "t13": "Download Model",
"ls1": "You can download 3D models from the following websites.", "t14": "Adaptive Meshing",
"ls2": "If you have any questions about the Printer or QIDISlicer, please contact us via the appropriate E-mail address or Skype.", "t15": "Flow Rate Calibration",
"ls3": "Note: please try to tell us your requirements in the form of video or pictures, and provide 3MF file, G-code file, machine number and other necessary information.", "t16": "Calibration",
"t17": "Pressure Advance",
"l0": "Learn more:",
"l1": "You can download the 3D model from the following link.",
"l2": "If you have any questions about the Printer or QIDISlicer, please contact us via the appropriate E-mail address or Skype.",
"l3": "Note: please try to tell us your requirements in the form of video or pictures, and provide 3MF file, G-code file, machine number and other necessary information.",
"l5": "Why do you need Adaptive Meshing:",
"l6": "How to close:",
"l7": "1.No wasted probe information, Adaptive Meshing will generate a mesh only in the area you actually need it: This means that leveling before each print takes significantly less time!",
"l8": "2.Since the mesh area will be smaller, the mesh can be much more dense. Imagine making a 3x3 mesh, but the size of a 3DBenchy! Which brings you a higher precision printing experience.",
"l9": "Add ';' before 'G29' in the Start G-code.",
"l10": "Red Area: General mesh leveling.",
"l11": "Green Area: Adaptive mesh leveling.",
"l12": "Why you need Flowrate Calibration",
"l13": "Different filaments have different shrinkage rates, and in order to obtain perfect surface quality, the print flow rate needs to be carefully adjusted.",
"l14": "Flowrate can be changed by modifying the 'Extrusion multiplier'.",
"l15": "1.Overextrusion: There is too much material on the model, causing bumps to form or layers to appear thicker and uneven than expected.",
"l16": "2.Underextrusion extrusion: the printing layer is too thin, the filling strength is insufficient, the surface has dents, and the model is easy to break.",
"l17": "Coarse calibration",
"l18": "Print calibration blocks in the 'Extrusion multiplier' ±0.2 range, with each block having a step size of 0.05.",
"l19": "When you are unsure of the consumable flow rate, you can use coarse calibration first to get a better range, then fine calibration to get a more accurate value.",
"l20": "After printing, determine the best value based on the model surface, enter the 'Extrusion multiplier', and save.",
"l21": "In the figure below, -5 has the best surface quality, so the optimal 'Extrusion multiplier' is 0.95 (1-5%).",
"l22": "Fine calibration",
"l23": "Print calibration blocks in the ±0.04 range based on the 'Extrusion multiplier' you entered, each with a step size of 0.01.",
"l24": "The 'Extrusion multiplier' entered in the figure below is 0.95, and 1 has the best surface quality, so the best 'Extrusion multiplier' is 0.96 (0.95+1%).",
"l25": "Pressure advance can reduce bleed during non-extrude moves and reduce blobbing during cornering.",
"l26": "When to Calibrate Pressure in Advance",
"l27": "1.Use different brands of filaments, or the filaments are damp;",
"l28": "2.The nozzle is worn or replaced with a different size nozzle;",
"l29": "3.Use different printing parameters such as temperature and line width.",
"l30": "How to calibrate",
"l31": "We provide three common calibration methods, you can choose the method you like for calibration.",
"l32": "There is a 10% error in the test results, but it is almost indistinguishable to the naked eye. Choose a suitable value and save it, then start your printing.",
"l33": "If you need to modify the printing parameters, please modify and save the parameters first, and then perform the calibration procedure.",
"l34": "After printing is completed, please enter the best value into the software and save it.",
"l35": "PA Line",
"l36": "After printing is completed, select the smoothest line, enter its corresponding value into the software and save it.",
"l37": "PA Pattern",
"l38": "After printing is completed, select the flattest set of lines, enter its corresponding values into the software and save it.",
"l39": "PA Tower",
"l40": "The pressure advance value will be changed every 5mm the PA tower rises. Please measure the height of the best area of the model, and then calculate the corresponding pressure advance value based on the set step value, then input it into the software and save it.",
}, },
"zh_CN": { "zh_CN": {
"t0": "欢迎使用QIDISlicer",
"t1": "用户指南", "t1": "用户指南",
"t2": "首次打印", "t2": "首次打印",
"t3": "添加支撑", "t3": "添加支撑",
"t4": "连接设备", "t4": "连接设备",
"t5": "无线发送", "t5": "无线发送",
"t6": "问题报告", "t6": "问题报告",
"t7": "演示", "t8": "3D打印机",
"t8": "产品信息", "t7": "介绍",
"t9": "与我们联系", "t9": "与我们联系",
"t10": "耗材", "t10": "耗材",
"t11": "添加文本", "t11": "添加文本",
"t12": "切割模型", "t12": "切割模型",
"t13": "下载模型", "t13": "下载模型",
"ls1": "您可以从以下网站下载 3D 模型。", "t14": "自适应网格划分",
"ls2": "如果您对打印机或 QIDISlicer 有任何疑问,请通过相应的电子邮件地址或 Skype 与我们联系。", "t15": "流量校准",
"ls3": "请尽量以视频或图片的形式告诉我们您的需求并提供3MF文件、G-Code文件、机器编号等必要信息。", "t16": "校准",
"t17": "压力提前",
"l0": "了解更多:",
"l1": "您可以从以下链接下载3D模型。",
"l2": "如果您对打印机或 QIDISlicer 有任何疑问请通过相应的电子邮件地址或Skype与我们联系。",
"l3": "注请尽量以视频或图片的形式告诉我们您的需求并提供3MF文件、G-Code文件、机器编号等必要信息。",
"l5": "为什么需要自适应网格划分:",
"l6": "如何禁用此功能:",
"l7": "1.不浪费探头信息,自适应网格划分将仅在您实际需要的区域生成网格:这意味着每次打印之前的调平所需的时间显着减少!",
"l8": "2.由于网格面积会更小,所以网格可以更密。想象一下制作一个 3x3 网格但大小与3DBenchy一样为您带来更高精度的打印体验。",
"l9": "在起始G-code中的'G29'前添加';'。",
"l10": "红色区域:一般网格调平。",
"l11": "绿色区域:自适应网格调平。",
"l12": "为什么需要流量校准",
"l13": "不同的耗材拥有不同的收缩率,为了获得完美的表面质量,需要对打印流量进行细致的调整。",
"l14": "通过修改‘挤出乘数’可以更改打印流量。",
"l15": "1.挤出过度:模型上的材料过多,导致形成凸起或层显得比预期更厚且不均匀。",
"l16": "2.挤出不足:打印层太薄,填充强度不足,表面有凹痕,模型易断裂。",
"l17": "粗校准",
"l18": "打印挤出乘数±0.2范围内的校准块每个校准块步长为0.05。",
"l19": "当您不确定耗材流量时,可以先使用粗校准以获得更好的范围,然后使用精校准以获得更准确的值。",
"l20": "打印完成后,根据模型表面确定最佳值,输入‘挤出乘数’,并保存。",
"l21": "下图中-5的表面质量最佳因此最佳挤出乘数为0.951-5%)。",
"l22": "精校准",
"l23": "根据您输入的挤出乘数打印±0.04范围内的校准块每个校准块步长为0.01。",
"l24": "下图中输入的挤出乘数为0.951的表面质量最佳因此最佳挤出乘数为0.960.95+1%)。",
"l25": "压力提前可以减少非挤压移动期间的渗出,并减少转弯期间的滴落。",
"l26": "什么时候需要校准压力提前",
"l27": "1.使用不同品牌的耗材,或耗材受潮;",
"l28": "2.喷嘴磨损或更换不同尺寸的喷嘴;",
"l29": "3.使用不同的温度、线宽等打印参数。",
"l30": "如何校准",
"l31": "我们提供了三种常见的校准方式,你可以选择自己喜欢的方式进行校准。",
"l32": "测试结果存在10%的误差,但肉眼几乎无法区别,选择一个合适的值并将其保存,然后开始你的打印吧。",
"l33": "如果你需要修改打印参数,请先修改并保存参数,然后再进行校准程序。",
"l34": "打印完成后,请将最佳值输入到软件中并保存。",
"l35": "PA 划线",
"l36": "打印完成后,选择最平滑的一条线,请将其对应的值输入到软件中并保存。",
"l37": "PA 图形",
"l38": "打印完成后,选择最平整的一组线,请将其对应的值输入到软件中并保存。",
"l39": "PA 塔",
"l40": "PA 塔每升高5mm会更改一次压力提前值请测量出模型最佳区域的高度再根据设定的步进值计算出其对应的压力提前值然后输入到软件中并保存。",
}, },
"ja": { "ja": {
"t0": "QIDISlicerへようこそ",
"t1": "ユーザーガイド", "t1": "ユーザーガイド",
"t2": "最初の印刷物", "t2": "最初の印刷物",
"t3": "サポートを追加する", "t3": "サポートを追加する",
"t4": "デバイスを接続する", "t4": "デバイスを接続する",
"t5": "Wi-Fi送信", "t5": "Wi-Fi送信",
"t6": "問題レポート", "t6": "問題レポート",
"t7": "デモンストレーション", "t7": "紹介します",
"t8": "製品情報", "t8": "3Dプリンター",
"t9": "お問い合わせください", "t9": "お問い合わせください",
"t10": "フィラメント", "t10": "フィラメント",
"t11": "テキストを追加", "t11": "テキストを追加",
"t12": "カットモデル", "t12": "カットモデル",
"t13": "モデルをダウンロード", "t13": "モデルをダウンロード",
"ls1": "3Dモデルは以下のWebサイトからダウンロードできます。", "t14": "適応性メッシュ",
"ls2": "如果您对打印机或 QIDISlicer 有任何疑问,请通过相应的电子邮件地址或 Skype 与我们联系。", "t15": "流量校正",
"ls3": "请尽量以视频或图片的形式告诉我们您的需求并提供3MF文件、G-Code文件、机器编号等必要信息。", "t16": "較正",
"t17": "圧力前進",
"l0": "もっと詳しく知る:",
"l1": "3Dモデルは以下のWebサイトからダウンロードできます。",
"l2": "如果您对打印机或 QIDISlicer 有任何疑问,请通过相应的电子邮件地址或 Skype 与我们联系。",
"l3": "注请尽量以视频或图片的形式告诉我们您的需求并提供3MF文件、G-Code文件、机器编号等必要信息。",
"l5": "アダプティブ メッシュが必要な理由:",
"l6": "この機能を無効にする方法:",
"l7": "1. 無駄なプローブ情報がなく、アダプティブメッシュは実際に必要な領域のメッシュのみを生成します。これは、各印刷前のレベリングにかかる​​時間が大幅に短縮されることを意味します。",
"l8": "2.メッシュ領域が小さくなるため、メッシュをより高密度にすることができます。 3x3 メッシュを 3DBenchy のサイズで作成することを想像してみてください。これにより、より高精度の印刷体験が得られます。",
"l9": "追加 ';' 「最初のGコード」の'G29'の前。",
"l10": "赤い領域: 一般的なメッシュ レベリング。",
"l11": "緑色の領域: 適応性メッシュ レベリング。",
"l12": "フローのキャリブレーションはなぜ必要なのでしょうか",
"l13": "消耗品によっても収縮率は異なりますし、完璧な表面品質を得るためには印刷フローの調整が必要です。",
"l14": "『押し出し乗数』を修正することでプリントフローを変更できます。",
"l15": "1.押し出しすぎ:型の上の材料が多すぎて、突起や層が予想より厚くなってムラができてしまいます。",
"l16": "2.押し出し不足:印刷層が薄すぎて、充填強度が足りなくて、表面に凹痕があって、型が切れやすいです。",
"l17": "粗いキャリブレーション",
"l18": "「押し出し乗数」±0.2の範囲のキャリブレーションブロックを印刷し、各キャリブレーションブロックのステップを0.05とします。",
"l19": "消耗品の流れがわからないときは、粗いキャリブレーションを使って範囲を広くしてから、精緻なキャリブレーションを使ってより正確な値を出すことができます。",
"l20": "印刷が終わったら、モデルの表面から最適値を決めて、「押し出し乗数」を入力し、保存します。",
"l21": "次の図では、-5が最適なので、最適な「押し出し乗数」は0.95(1-5%)となります。",
"l22": "キャリブレーションを行います",
"l23": "入力された「押し出し乗数」に応じて±0.04の範囲のキャリブレーションブロックを印刷します。キャリブレーションブロック毎のステップサイズは0.01です。",
"l24": "図では、「押し出し乗数」を0.95と入力していますが、1の表面品質が最適なので、最適な「押し出し乗数」は0.96(0.95+1%)となります。",
"l25": "圧力前進により、非絞り動作時のブリードが減少し、旋回時の液だれが減少します。",
"l26": "圧力前進を校正する場合",
"l27": "1.異なるブランドの消耗品を使用すると、消耗品が湿気を帯びます。",
"l28": "2.ノズルが磨耗しているか、異なるサイズのノズルに交換されている。",
"l29": "3.温度や線幅などのさまざまな印刷パラメータを使用します。",
"l30": "校正方法",
"l31": "一般的な3つの校正方法が用意されており、お好みの校正方法を選択できます。",
"l32": "テスト結果には10%程度の誤差がありますが、肉眼ではほとんど区別できない程度ですので、適切な値を選択して保存し、印刷を開始してください。",
"l33": "印刷パラメータを変更する必要がある場合は、まずパラメータを変更して保存してから、キャリブレーション手順を実行してください。",
"l34": "印刷が完了したら、ソフトウェアに最適な値を入力して保存します。",
"l35": "PA 線",
"l36": "印刷が完了したら、最も滑らかな線を選択し、対応する値をソフトウェアに入力して保存します。",
"l37": "PAグラフィックス",
"l38": "印刷が完了したら、最も平坦な線のセットを選択し、対応する値をソフトウェアに入力して保存します。",
"l39": "PAタワー",
"l40": "PAタワーが上昇する5mmごとに圧力アドバンス値が変更されますので、モデルの最適領域の高さを測定し、設定されたステップ値に基づいて対応する圧力アドバンス値を計算し、それをソフトウェアに入力して、それを保存。",
}, },
"fr": { "fr": {
"t0": "Bienvenue dans QIDISlicer",
"t1": "Guide de l'utilisateur", "t1": "Guide de l'utilisateur",
"t2": "Première d'impression", "t2": "Première d'impression",
"t3": "Ajouter une prise en charge", "t3": "Ajouter une prise en charge",
"t4": "Connecter l'appareil", "t4": "Connecter l'appareil",
"t5": "Envoi Wi-Fi", "t5": "Envoi Wi-Fi",
"t6": "Rapport de problème", "t6": "Rapport de problème",
"t7": "Démonstration", "t7": "Présentez",
"t8": "Informations sur le produit", "t8": "Imprimantes 3D",
"t9": "Contactez-nous", "t9": "Contactez-nous",
"t10": "Filament", "t10": "Filaments",
"t11": "Ajouter du texte", "t11": "Ajouter du texte",
"t12": "Couper le modèle", "t12": "Couper le modèle",
"t13": "Télécharger le modèle", "t13": "Télécharger le modèle",
"ls1": "Vous pouvez télécharger des modèles 3D à partir des sites Web suivants.", "t14": "Maillage adaptatif",
"ls2": "Si vous avez des questions sur l'imprimante ou le QIDISlicer, veuillez nous contacter via l'adresse e-mail appropriée ou via Skype.", "t15": "Étalonnage du débit",
"ls3": "Remarque : veuillez essayer de nous indiquer vos besoins sous forme de vidéo ou d'images, et fournir un fichier 3MF, un fichier G-code, un numéro de machine et d'autres informations nécessaires.", "t16": "Étalonnage",
"t17": "Avance de pression",
"l0": "Apprendre encore plus:",
"l1": "Vous pouvez télécharger des modèles 3D à partir des sites Web suivants.",
"l2": "Si vous avez des questions sur l'imprimante ou le QIDISlicer, veuillez nous contacter via l'adresse e-mail appropriée ou via Skype.",
"l3": "Remarque: veuillez essayer de nous indiquer vos besoins sous forme de vidéo ou d'images, et fournir un fichier 3MF, un fichier G-code, un numéro de machine et d'autres informations nécessaires.",
"l5": "Pourquoi avez-vous besoin d'un maillage adaptatif:",
"l6": "Comment désactiver cette fonctionnalité:",
"l7": "1.Aucune information de sonde gaspillée, le maillage adaptatif générera un maillage uniquement dans la zone où vous en avez réellement besoin: cela signifie que le nivellement avant chaque impression prend beaucoup moins de temps !",
"l8": "2.Étant donné que la zone de maillage sera plus petite, le maillage peut être beaucoup plus dense. Imaginez faire un maillage 3x3, mais de la taille d'un 3DBenchy ! Ce qui vous apporte une expérience d'impression de plus grande précision.",
"l9": "Ajouter ';' avant 'G29' dans le G-code de début",
"l10": "Zone rouge: Nivellement général du maillage.",
"l11": "Zone verte: Nivellement de maillage adaptatif.",
"l12": "Pourquoi vous avez besoin de la Calibration du débit",
"l13": "Les différents filaments ont des taux de retrait différents, et afin dobtenir une qualité de surface parfaite, le débit dimpression doit être ajusté avec soin.",
"l14": "Le débit peut être modifié en modifiant le «multiplicateur dextrusion».",
"l15": "1.Surextrusion: il y a trop de matériau sur le modèle, provoquant la formation de bosses ou lapparition de couches plus épaisses et inégales que prévu.",
"l16": "2.Extrusion dunderextrusion: la couche dimpression est trop mince, la force remplissante est insuffisante, la surface a des bosses, et le modèle est facile à casser.",
"l17": "Calibrage grossier",
"l18": "Imprimer des blocs détalonnage dans la gamme «multiplicateur dextrusion» de ± 0.2, chaque bloc ayant une taille de pas de 0.05.",
"l19": "Lorsque vous nêtes pas sûr du débit des consommables, vous pouvez utiliser létalonnage grossier dabord pour obtenir une meilleure plage, puis létalonnage fin pour obtenir une valeur plus précise.",
"l20": "Après limpression, déterminez la meilleure valeur en fonction de la surface du modèle, saisissez le «multiplicateur dextrusion» et sauvegardez.",
"l21": "Dans la figure ci-dessous, -5 a la meilleure qualité de surface, de sorte que le multiplicateur dextrusion optimal est 0.95 (1-5%).",
"l22": "Calibrage fin",
"l23": "Imprimez des blocs détalonnage de ± 0.04 en fonction du «multiplicateur dextrusion» que vous avez entré, chacun avec une taille de pas de 0.01.",
"l24": "Le «multiplicateur dextrusion» indiqué dans la figure ci-dessous est de 0.95, et 1 a la meilleure qualité de surface, donc le meilleur «multiplicateur dextrusion» est de 0.96 (0.95+1%).",
"l25": "L'avance de pression peut réduire le saignement lors des mouvements sans extrusion et réduire les gouttes dans les virages.",
"l26": "Quand calibrer la pression à lavance",
"l27": "1.Utilisez différentes marques de filaments, sinon les filaments sont humides ;",
"l28": "2.La buse est usée ou remplacée par une buse de taille différente ;",
"l29": "3.Utilisez différents paramètres d'impression tels que la température et la largeur des lignes.",
"l30": "Comment calibrer",
"l31": "Nous proposons trois méthodes d'étalonnage courantes, vous pouvez choisir la méthode que vous souhaitez pour l'étalonnage.",
"l32": "Il y a une erreur de 10 % dans les résultats du test, mais elle est presque impossible à distinguer à l'œil nu. Choisissez une valeur appropriée et enregistrez-la, puis démarrez votre impression.",
"l33": "Si vous devez modifier les paramètres d'impression, veuillez d'abord modifier et enregistrer les paramètres, puis effectuer la procédure d'étalonnage.",
"l34": "Une fois l'impression terminée, veuillez saisir la meilleure valeur dans le logiciel et l'enregistrer.",
"l35": "Ligne PA",
"l36": "Une fois l'impression terminée, sélectionnez la ligne la plus lisse, entrez la valeur correspondante dans le logiciel et enregistrez-la.",
"l37": "Modèle PA",
"l38": "Une fois l'impression terminée, sélectionnez l'ensemble de lignes le plus plat, entrez ses valeurs correspondantes dans le logiciel et enregistrez-le.",
"l39": "La tour PA",
"l40": "La valeur d'avance de pression sera modifiée tous les 5 mm d'élévation de la tour PA. Veuillez mesurer la hauteur de la meilleure zone du modèle, puis calculer la valeur d'avance de pression correspondante en fonction de la valeur de pas définie, puis la saisir dans le logiciel et l'enregistrer.",
}, },
"de": { "de": {
"t0": "Willkommen bei QIDISlicer",
"t1": "Benutzerhandbuch", "t1": "Benutzerhandbuch",
"t2": "Erster Druck", "t2": "Erster Druck",
"t3": "Unterstützung hinzufügen", "t3": "Unterstützung hinzufügen",
"t4": "Gerät verbinden", "t4": "Gerät verbinden",
"t5": "Wi-Fi senden", "t5": "Wi-Fi senden",
"t6": "Problembericht", "t6": "Problembericht",
"t7": "Demonstration", "t7": "Vorstellung",
"t8": "Produktinformationen", "t8": "3D-Drucker",
"t9": "Kontaktieren Sie uns", "t9": "Kontaktieren Sie uns",
"t10": "Filament", "t10": "Filaments",
"t11": "Text hinzufügen", "t11": "Text hinzufügen",
"t12": "Modell schneiden", "t12": "Modell schneiden",
"t13": "Modell herunterladen", "t13": "Modell herunterladen",
"ls1": "Sie können 3D-Modelle von den folgenden Websites herunterladen.", "t14": "Adaptive Gitternetz",
"ls2": "Wenn Sie Fragen zum Drucker oder QIDISlicer haben, kontaktieren Sie uns bitte über die entsprechende E-Mail-Adresse oder Skype.", "t15": "Kalibrierung der Durchflussrate",
"ls3": "Hinweis: Bitte versuchen Sie, uns Ihre Anforderungen in Form von Videos oder Bildern mitzuteilen und geben Sie die 3MF-Datei, die G-Code-Datei, die Maschinennummer und andere notwendige Informationen an.", "t16": "Kalibrierung",
"t17": "Druckvorschub",
"l0": "Erfahren Sie mehr:",
"l1": "Sie können 3D-Modelle von den folgenden Websites herunterladen.",
"l2": "Wenn Sie Fragen zum Drucker oder QIDISlicer haben, kontaktieren Sie uns bitte über die entsprechende E-Mail-Adresse oder Skype.",
"l3": "Hinweis: Bitte versuchen Sie, uns Ihre Anforderungen in Form von Videos oder Bildern mitzuteilen und geben Sie die 3MF-Datei, die G-Code-Datei, die Maschinennummer und andere notwendige Informationen an.",
"l5": "Warum brauchen Sie Adaptive Meshing:",
"l6": "So deaktivieren Sie diese Funktion:",
"l7": "1.Keine Verschwendung von Sondeninformationen, Adaptive Meshing erstellt ein Netz nur in dem Bereich, in dem Sie es tatsächlich benötigen: Das bedeutet, dass die Nivellierung vor jedem Druck deutlich weniger Zeit in Anspruch nimmt!",
"l8": "2.Da die Maschenfläche kleiner wird, kann das Netz viel dichter sein. Stellen Sie sich vor, Sie erstellen ein 3x3-Netz, aber in der Größe eines 3DBenchy! Das bringt Ihnen ein präziseres Druckerlebnis.",
"l9": "Füge hinzu ein „;“ vor „G29“ im Start-G-Code.",
"l10": "Roter Bereich: Allgemeine Netznivellierung.",
"l11": "Grüner Bereich: Adaptive Netznivellierung.",
"l12": "Was ist eine icd",
"l13": "Es gibt unterschiedliche skalenquoten und man muss den fluss der blüten genau einstellen, um eine optimale oberflächenqualität zu erreichen.",
"l14": "Die durchflussrate kann durch änderung des expeit geändert werden.",
"l15": "1.Überdruck: das modell enthält zu viel material, was dazu führt, dass die form dicker und ungleichmäßiger aussieht als erwartet.",
"l16": "2.Auspressen: der druck ist zu dünn, lässt das material zu wenig laden, hat löcher an der oberfläche, die die modelle beschädigen.",
"l17": "Grobkalibrierung.",
"l18": "Das überprüfen der kalibrierungsblock im rahmen des cop-fensters mit einer wand Von 0.05 stufen.",
"l19": "Bei problemen mit problemen können sie zunächst die raummanadung verwenden, um die richtige übereinstimmung zu erreichen, dann die feinkalibrierung einsetzen.",
"l20": "Wenn der ausdruck fertig ist, beschriftet man die besten werte anhand der oberfläche des modells, geht in den specker-bereich und speichern.",
"l21": "In der grafik, -5 mit der besten oberflächenqualität, kriegst du damit eine optimale ersparnis Von 0.95 (1-5%).",
"l22": "Härtstrich.",
"l23": "Das druckmodul für die wand im bereich Von 0.04 überprüfen, und jeder schritt ist eine 0.01",
"l24": "In dem unteren bild wurde ein -queprol Von 0.95 angezeigt, wobei 1 die beste oberflächenqualität hat. Damit liegt die beste -weshalb bei 0.96 (0.95+1).",
"l25": "Der Druckvorschub kann das Ausbluten bei nicht extrudierten Bewegungen und das Klopfen bei Kurvenfahrten reduzieren.",
"l26": "Wann sollte der Druck im Voraus kalibriert werden",
"l27": "1.Verwenden Sie Filamente verschiedener Marken, oder die Filamente sind feucht;",
"l28": "2.Die Düse ist abgenutzt oder durch eine Düse anderer Größe ersetzt;",
"l29": "3.Verwenden Sie verschiedene Druckparameter wie Temperatur und Linienbreite.",
"l30": "So kalibrieren Sie",
"l31": "Wir bieten drei gängige Kalibrierungsmethoden an. Sie können die Methode auswählen, die Ihnen für die Kalibrierung am besten gefällt.",
"l32": "Die Testergebnisse weisen einen Fehler von 10 % auf, der jedoch mit bloßem Auge kaum zu erkennen ist. Wählen Sie einen geeigneten Wert, speichern Sie ihn und starten Sie dann den Druckvorgang.",
"l33": "Wenn Sie die Druckparameter ändern müssen, ändern und speichern Sie bitte zuerst die Parameter und führen Sie dann den Kalibrierungsvorgang durch.",
"l34": "Nachdem der Druckvorgang abgeschlossen ist, geben Sie bitte den besten Wert in die Software ein und speichern Sie ihn.",
"l35": "PA-Leitung",
"l36": "Wählen Sie nach Abschluss des Druckvorgangs die glatteste Linie aus, geben Sie den entsprechenden Wert in die Software ein und speichern Sie ihn.",
"l37": "PA-Muster",
"l38": "Wählen Sie nach Abschluss des Druckvorgangs den flachsten Liniensatz aus, geben Sie die entsprechenden Werte in die Software ein und speichern Sie sie.",
"l39": "PA-Turm",
"l40": "Der Druckvorschubwert wird alle 5 mm geändert, wenn der PA-Turm ansteigt. Bitte messen Sie die Höhe des besten Bereichs des Modells und berechnen Sie dann den entsprechenden Druckvorschubwert basierend auf dem eingestellten Schrittwert, geben Sie ihn dann in die Software ein und speichern Sie ihn.",
}, },
"be": { "be": {
"t0": "Вітаем у QIDISlicer",
"t1": "Кіраўніцтва карыстальніка", "t1": "Кіраўніцтва карыстальніка",
"t2": "Першы адбітак", "t2": "Першы адбітак",
"t3": "Дадаць падтрымку", "t3": "Дадаць падтрымку",
"t4": "Падключыць прыладу", "t4": "Падключыць прыладу",
"t5": "Адправіць па Wi-Fi", "t5": "Адправіць па Wi-Fi",
"t6": "Паведамленне аб праблеме", "t6": "Паведамленне аб праблеме",
"t7": "Дэманстрацыя", "t7": "Познакомьтесь с нами",
"t8": "Інфармацыя аб прадукце", "t8": "3D принтеры",
"t9": "Звязацца з намі", "t9": "Звязацца з намі",
"t10": "Філамент", "t10": "Філамент",
"t11": "Дадаць тэкст", "t11": "Дадаць тэкст",
"t12": "Разрэзаная мадэль", "t12": "Разрэзаная мадэль",
"t13": "Спампаваць мадэль", "t13": "Спампаваць мадэль",
"ls1": "Вы можаце загрузіць 3D-мадэлі з наступных сайтаў.", "t14": "Адаптыўная сетка",
"ls2": "Калі ў вас ёсць якія-небудзь пытанні аб прынтары або QIDISlicer, калі ласка, звяжыцеся з намі праз адпаведны адрас электроннай пошты або Skype.", "t15": "Каліброўка хуткасці патоку",
"ls3": "Заўвага: калі ласка, паспрабуйце паведаміць нам свае патрабаванні ў выглядзе відэа ці малюнкаў, а таксама прадаставіць файл 3MF, файл G-кода, нумар машыны і іншую неабходную інфармацыю.", "t16": "Каліброўка",
"t17": "Увеличение давления",
"l0": "даведацца больш:",
"l1": "Вы можаце загрузіць 3D-мадэлі з наступных сайтаў.",
"l2": "Калі ў вас ёсць якія-небудзь пытанні аб прынтары або QIDISlicer, калі ласка, звяжыцеся з намі праз адпаведны адрас электроннай пошты або Skype.",
"l3": "Заўвага: калі ласка, паспрабуйце паведаміць нам свае патрабаванні ў выглядзе відэа ці малюнкаў, а таксама прадаставіць файл 3MF, файл G-кода, нумар машыны і іншую неабходную інфармацыю.",
"l5": "Навошта вам патрэбна адаптыўная сетка:",
"l6": "Як адключыць гэтую функцыю:",
"l7": "1.Няма марнай інфармацыі пра зонд, Adaptive Meshing будзе ствараць сетку толькі ў той вобласці, якая вам сапраўды патрэбна: гэта азначае, што выраўноўванне перад кожнай друкам займае значна менш часу!",
"l8": "2.Паколькі плошча сеткі будзе меншай, сетка можа быць значна больш шчыльнай. Уявіце, што вы робіце сетку 3x3, але памерам з 3DBenchy! Што дае вам вопыт больш высокай дакладнасці друку.",
"l9": "Дадайце ';' перад 'G29' у Пачатковым G-кодзе.",
"l10": "Чырвоная зона: агульнае выраўноўванне сеткі.",
"l11": "Зялёная зона: адаптыўнае выраўноўванне сеткі.",
"l12": "Зачем вам калибровка расхода",
"l13": "Различные нити накала имеют разную скорость усадки, и для того, чтобы получить идеальное качество поверхности, скорость печати должна быть тщательно скорректирована.",
"l14": "Расход может быть изменен путем изменения 'экструзионный множитель'.",
"l15": "1.Чрезмерная трузия: на модели слишком много материала, что приводит к образованию шишек или слоев, которые кажутся толще и неравномерно, чем ожидалось.",
"l16": "2.Экструзия: слой печати слишком тонкий, прочность наполнения недостаточна, поверхность имеет вмятины, а модель легко сломать.",
"l17": "Калибровка по грубой поверхности",
"l18": "Печать калибровочных блоков в диапазоне 'экструзионный множитель' ±0.2, причем каждый блок имеет размер шага 0.05.",
"l19": "Если вы не уверены в скорости потока расходуемых материалов, вы можете сначала использовать крупногабаритную калибровку, чтобы получить лучший диапазон, а затем тонкую калибровку, чтобы получить более точное значение.",
"l20": "После печати определите наилучшее значение на основе поверхности модели, введите 'экструзионный множитель' и сохраните.",
"l21": "На рисунке ниже -5 имеет наилучшее качество поверхности, поэтому оптимальный 'экструзионный множитель' составляет 0,95 (1-5%).",
"l22": "- точная калибровка",
"l23": "Печать калибровочных блоков в диапазоне ±0.04 на основе 'экструзионный множитель'вы ввели, каждый размер шага 0.01.",
"l24": "Приведенный ниже 'экструзионный множитель' равен 0,95, а 1 имеет наилучшее качество поверхности, поэтому лучший 'экструзионный множитель' равен 0.96 (0.95+1%).",
"l25": "Увеличение давления может уменьшить кровотечение при движениях без выдавливания и уменьшить образование пятен при прохождении поворотов.",
"l26": "Когда следует калибровать давление заранее",
"l27": "1.Используйте нити разных марок, иначе нити влажные;",
"l28": "2.Насадка изношена или заменена насадкой другого размера;",
"l29": "3.Используйте различные параметры печати, такие как температура и ширина линии.",
"l30": "Как калибровать",
"l31": "Мы предоставляем три распространенных метода калибровки. Вы можете выбрать тот метод калибровки, который вам нравится.",
"l32": "В результатах теста есть погрешность в 10%, но она практически неразличима невооруженным глазом. Выберите подходящее значение и сохраните его, а затем начните печать.",
"l33": "Если вам необходимо изменить параметры печати, сначала измените и сохраните параметры, а затем выполните процедуру калибровки.",
"l34": "После завершения печати введите наилучшее значение в программу и сохраните его.",
"l35": "Линия PA",
"l36": "После завершения печати выберите самую плавную линию, введите соответствующее ей значение в программу и сохраните.",
"l37": "Шаблон PA",
"l38": "После завершения печати выберите самый плоский набор линий, введите соответствующие значения в программу и сохраните.",
"l39": "ПА Тауэр",
"l40": "Значение опережения давления будет меняться каждые 5 мм подъема башни PA. Измерьте высоту лучшей области модели, а затем рассчитайте соответствующее значение опережения давления на основе установленного значения шага, затем введите его в программное обеспечение и сохраните.",
}, },
"ca": {
"t0": "Benvingut a QIDISlicer",
"t1": "Guia de l'usuari",
"t2": "Primera d'impressió",
"t3": "Afegeix suport",
"t4": "Connecta el dispositiu",
"t5": "Enviament sense fil",
"t6": "Informe de problemes",
"t7": "Demostració",
"t8": "Informació del producte",
"t9": "Contacteu amb nosaltres",
"t10": "Filament",
"t11": "Afegeix text",
"t12": "Tallar el model",
"t13": "Baixa el model",
"ls1": "Podeu descarregar models 3D dels següents llocs web.",
"ls2": "Si teniu cap pregunta sobre la impressora o QIDISlicer, poseu-vos en contacte amb nosaltres mitjançant l'adreça de correu electrònic corresponent o Skype.",
"ls3": "Nota: proveu d'indicar-nos els vostres requisits en forma de vídeo o imatges i proporcioneu un fitxer 3MF, un fitxer de codi G, un número de màquina i altra informació necessària.",
},
"cs": {
"t0": "Vítejte v QIDISlicer",
"t1": "Uživatelská příručka",
"t2": "První výtisk",
"t3": "Přidat podporu",
"t4": "Připojit zařízení",
"t5": "Bezdrátové odesílání",
"t6": "Hlášení o problému",
"t7": "Demonstrace",
"t8": "Informace o produktu",
"t9": "Kontaktujte nás",
"t10": "Filament",
"t11": "Přidat text",
"t12": "Vyříznutý model",
"t13": "Stáhnout model",
"ls1": "3D modely si můžete stáhnout z následujících webových stránek.",
"ls2": "Máte-li jakékoli dotazy týkající se tiskárny nebo QIDISlicer, kontaktujte nás prosím prostřednictvím příslušné e-mailové adresy nebo Skype.",
"ls3": "Poznámka: Zkuste nám prosím sdělit své požadavky ve formě videa nebo obrázků a poskytněte soubor 3MF, soubor G-kódu, číslo stroje a další potřebné informace.",
},
"es": {
"t0": "Bienvenido a QIDISlicer",
"t1": "Guía del usuario",
"t2": "Primera de impresión",
"t3": "Agregar soporte",
"t4": "Conectar dispositivo",
"t5": "Envío inalámbrico",
"t6": "Informe de problema",
"t7": "Demostración",
"t8": "Información del producto",
"t9": "Contacta con nosotros",
"t10": "Filamento",
"t11": "Agregar texto",
"t12": "Modelo cortado",
"t13": "Descargar Modelo",
"ls1": "Puede descargar modelos 3D de los siguientes sitios web.",
"ls2": "Si tiene alguna pregunta sobre la impresora o QIDISlicer, comuníquese con nosotros a través de la dirección de correo electrónico correspondiente o Skype.",
"ls3": "Nota: intente decirnos sus requisitos en forma de video o imágenes, y proporcione el archivo 3MF, el archivo de código G, el número de máquina y otra información necesaria.",
},
}; };

View File

@@ -16,91 +16,80 @@ html, body {
background-color: #F4F7FE; background-color: #F4F7FE;
} }
.LinkBtn {
font-size: 12px;
color: #1200FF;
cursor: pointer;
}
.LinkBtn:hover {
text-decoration: underline;
}
/*------------------*/
* {
/* 页面初始化 清除元素原有的内外边距 */
padding: 0;
margin: 0;
/* 盒子模型 */
box-sizing: border-box;
}
body { body {
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
/* 让页面占浏览器可视区域的高度 */
height: 100vh; height: 100vh;
} }
#LeftBoard { .LeftBoard {
/*border-right-width: 1px;
border-right-style: solid;*/
background: #414345; background: #414345;
width:360px; width:360px;
min-width: 280px; min-width: 280px;
height: 100%; height: 100%;
} }
.GuideBtn {
height: 100px;
display: flex;
flex-direction: line;
align-items: center;
justify-content: center;
cursor: pointer;
color: #4479FB;
font-size: 24px;
}
.GuideBtn:hover {
font-size: 26px;
}
.Logo {
height: 40px;
display: flex;
margin-right: 10px;
}
/*导航栏属性*/
li { li {
/* 清除li元素前面的项目符号 */
list-style: none; list-style: none;
} }
.accordion { .accordion {
/* 溢出隐藏 */
overflow: hidden; overflow: hidden;
/* 圆角属性 */
border-radius: 0 8px 8px 0; border-radius: 0 8px 8px 0;
/* 盒子阴影 */
box-shadow: 0 0 10px rgba(0, 0, 0, 0.6); box-shadow: 0 0 10px rgba(0, 0, 0, 0.6);
} }
.accordion > li { .accordion > li {
width: 100%; width: 100%;
} }
.accordion > li input { .accordion > li input {
/* 将单选按钮隐藏起来 */
display: none; display: none;
} }
.accordion > li label { .accordion > li label {
/* 相对定位 */
position: relative; position: relative;
/* label元素是行内元素 需要将其转为块级元素 才能设置宽度和高度 */
display: block; display: block;
width: 100%; width: 100%;
padding: 20px 50px; padding: 20px 50px;
color: #fff; color: #FFFFFF;
background-color: #4479FB; background-color: #4479FB;
/* 鼠标移入变小手 */
cursor: pointer; cursor: pointer;
} }
.accordion > li label i { .accordion > li label i {
/* 绝对定位 */
position: absolute; position: absolute;
/* calc方法自动计算数值 让字体图标垂直居中 */
top: calc(50% - 12px); top: calc(50% - 12px);
left: 20px; left: 20px;
font-size: 24px; font-size: 24px;
/* 加过渡 */
transition: all 0.5s; transition: all 0.5s;
} }
.accordion > li label:hover { .accordion > li label:hover {
border-left-color: #F1F1FF; border-left-color: #FFFFFF;
border-left-width: 4px; border-left-width: 4px;
border-style: solid; border-style: solid;
} }
/* :not()选择器选取的是除括号里的元素以外的其它元素 :first-child选择器是第一个元素 */
.accordion > li:not(:first-child) label { .accordion > li:not(:first-child) label {
border-top: 1px solid #38814d; border-top: 1px solid #38814D;
} }
.accordion > li ol { .accordion > li ol {
width: 100%; width: 100%;
@@ -135,307 +124,168 @@ li {
.accordion > li input:checked ~ ol li { .accordion > li input:checked ~ ol li {
height: 50px; height: 50px;
} }
/*导航栏属性*/
#GuideArea { .MenuBtn {
/*border-bottom-width:1px; height: 50px;
border-bottom-style:inset;*/
height: 100px;
display: flex; display: flex;
flex-direction: column; flex-direction: line;
align-items: center;
justify-content: center;
flex-wrap: nowrap;
position: relative;
width: 100%;
}
#Guide1 {
height: 36px;
line-height: 36px;
display: flex;
justify-content: center;
user-select: none;
}
#GuideBtn {
cursor: pointer; cursor: pointer;
color: #FFFFFF;
transition: all 0.5s;
}
.MenuBtn:hover {
color: #4479FB; color: #4479FB;
} }
.TbItem { .MenuBtnSelected {
font-size: 24px;
display: flex;
justify-content: flex-start;
cursor: pointer;
color: #4479FB
}
.TbItem:hover {
font-size: 25px;
}
.TbItemSelected {
}
#Icon1 {
margin-right: 10px;
}
#QDIcon {
height: 36px;
}
/*------------------*/
#BtnArea {
padding: 0;
margin: 0;
}
.BtnItem {
padding-left: 30px;
height: 50px;
line-height: 50px;
text-indent: 10px;
display: flex;
justify-content: flex-start;
cursor: pointer;
color: white;
transition: all 0.5s;
}
.BtnItem:hover {
color: #4479FB
}
.BtnItemSelected {
background-color: #CED1D9; background-color: #CED1D9;
color: #4479FB color: #4479FB;
} }
.BtnIcon { .MenuBtnIcon {
margin-left: 15px; margin: auto 15px;
display: flex;
flex-direction: column;
justify-content: center;
}
.BookIcon {
display: flex;
flex-direction: column;
justify-content: center;
}
.MainIcon {
width: 20px; width: 20px;
height: 20px; height: 20px;
display: flex;
} }
.LeftIcon { .RightBoard {
width: 30px;
height: 30px;
padding-left: 10px;
}
/*--------------------*/
#RightBoard {
width: 100%; width: 100%;
height: 100%; height: 100%;
min-width: 835px; min-width: 700px;
padding: 0px 50px;
overflow-y: auto; overflow-y: auto;
} }
#ThumbBoard .GuideBoard {
{ margin-top: 20px;
overflow-y:auto;
padding: 0px 40px;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
align-content: flex-start;
margin: 30px 40px;
position: relative;
top: 0px;
bottom: 0px;
right: 0px;
left: 0px;
} }
@media screen and (max-width: 1100px) { .Thumbnail {
.GuideBlock { min-width: 300px;
width: calc(50% - 20px); max-width: 600px;
margin: 0px 10px 40px 10px; width: 23%;
cursor: pointer; margin: 10px auto;
}
}
@media screen and ( min-width:1101px) and ( max-width:1680px ) {
.GuideBlock {
width: calc(33% - 20px);
margin: 0px 10px 40px 10px;
cursor: pointer;
}
}
@media screen and ( min-width:1681px) and (max-width:2120px ) {
.GuideBlock {
width: calc(25% - 20px);
margin: 0px 10px 40px 10px;
cursor: pointer;
}
}
@media screen and ( min-width:2121px) and (max-width:2620px ) {
.GuideBlock {
width: calc(20% - 20px);
margin: 0px 10px 40px 10px;
cursor: pointer;
}
}
@media screen and (min-width:2621px ) and (max-width:3120px ) {
.GuideBlock {
width: calc(16.6% - 20px);
margin: 0px 10px 40px 10px;
cursor: pointer;
}
}
@media screen and (min-width:3121px ) {
.GuideBlock {
width: calc(14.2% - 20px);
margin: 0px 10px 40px 10px;
cursor: pointer;
}
}
#IssueBoard {
overflow-y: auto;
padding: 0px 40px;
display: flex; display: flex;
flex-wrap: wrap; flex-direction: column;
justify-content: center; cursor: pointer;
align-items: center;
margin: 30px 40px;
position: relative;
top: 0px;
bottom: 0px;
right: 0px;
left: 0px;
} }
@media screen{ .ThumbnailTitle {
.halfBlock { text-align: center;
text-align: center; font-size: 18px;
justify-content: center; font-weight: 700;
width: calc(50% - 20px); width: 100%;
margin: 0px 10px; color: #4479FB;
}
} }
@media screen and (max-width: 1100px) { .ImageBoard {
.PrintBlock { margin: 50px auto;
text-align:center;
width: calc(50% - 20px);
margin: 0px 10px 40px 10px;
cursor: pointer;
}
}
@media screen and ( min-width:1101px) and ( max-width:1680px ) {
.PrintBlock {
width: calc(33% - 20px);
margin: 0px 10px 40px 10px;
cursor: pointer;
}
}
@media screen and ( min-width:1681px) and (max-width:2120px ) {
.PrintBlock {
width: calc(25% - 20px);
margin: 0px 10px 40px 10px;
cursor: pointer;
}
}
@media screen and ( min-width:2121px) and (max-width:2620px ) {
.PrintBlock {
width: calc(20% - 20px);
margin: 0px 10px 40px 10px;
cursor: pointer;
}
}
@media screen and (min-width:2621px ) and (max-width:3120px ) {
.PrintBlock {
width: calc(16.6% - 20px);
margin: 0px 10px 40px 10px;
cursor: pointer;
}
}
@media screen and (min-width:3121px ) {
.PrintBlock {
width: calc(14.2% - 20px);
margin: 0px 10px 40px 10px;
cursor: pointer;
}
}
#FilaBigBoard {
display: none; display: none;
} }
#FilaBoard { .AutozoomImage img {
width: 100%;
max-width: 1200px;
border-radius: 5px;
border: 1px solid #4479FB;
margin: 20px auto;
display: flex; display: flex;
flex-wrap: wrap;
text-align: center;
justify-content: center; justify-content: center;
height: 100vh;
overflow-y: auto;
top: 0px;
bottom: 0px;
right: 0px;
left: 0px;
box-sizing: border-box;
} }
.main { .IntroduceBoard {
margin: 50px 50px; margin: 50px auto;
display: none;
}
.IntroduceTitle {
text-align: center;
font-size: 36px;
font-weight: 700;
margin: 30px 0;
color: #4479FB;
line-height: 50px;
}
.IntroduceText {
font-size: 16px;
line-height: 20px;
}
.IntroduceTextBold {
font-size: 16px;
font-weight: 700;
line-height: 25px;
}
.CenterImage img{
margin: 20px auto;
max-width: 1200px;
border-radius: 5px;
border: 1px solid #4479FB;
display: flex;
justify-content: center;
}
.IntroduceTextRed {
font-size: 16px;
color: #ED1C24;
line-height: 20px;
text-align: center;
}
.IntroduceTextGreen {
font-size: 16px;
color: #24AB4D;
line-height: 20px;
text-align: center;
}
.FilamentsTable {
display: flex;
justify-content: center;
width: 100%; width: 100%;
overflow: auto; overflow: auto;
} }
/*表格属性*/
td, th { td, th {
/* 设置td,th宽度高度 */
border: 1px solid gray; border: 1px solid gray;
font-size: 12px; font-size: 12px;
width: 100px; width: 100px;
height: 50px; height: 50px;
text-align: center;
} }
th { th {
background-color: #4F6EBC; background-color: #4F6EBC;
color: #fff; color: #FFFFFF;
} }
table { table {
table-layout: fixed; table-layout: fixed;
width: 200px; /* 固定宽度 */ width: 200px;
} }
td:first-child, th:first-child { td:first-child, th:first-child {
position: sticky; position: sticky;
left: 0; /* 首行永远固定在左侧 */ left: 0;
z-index: 1; z-index: 1;
background: #CDDBFB; background: #CDDBFB;
} }
th:nth-child(odd) { /*奇表头*/ th:nth-child(odd) {
background-color: #6993FB; background-color: #6993FB;
} }
thead tr th { thead tr th {
position: sticky; position: sticky;
top: 0; /* 列首永远固定在头部 */ top: 0;
} }
tbody tr:nth-child(odd) { tbody tr:nth-child(odd) {
@@ -445,94 +295,22 @@ tbody tr:nth-child(odd) {
th:first-child { th:first-child {
z-index: 2; z-index: 2;
} }
/*表格属性*/
/*------Gif------*/ .IssueBoard {
#GifBigBoard { margin-top: 20px;
display: none; display: none;
} }
#GifBoard { .EmailBlock {
margin: 10px auto;
display: flex; display: flex;
flex-wrap: wrap;
align-content: flex-start;
align-items: center;
justify-content: center; justify-content: center;
overflow-y: auto; flex-wrap: wrap;
margin: 30px 40px;
position: relative;
top: 0px;
bottom: 0px;
right: 0px;
left: 0px;
} }
@media screen { .PrinterBlock {
.GifBlock { margin: 0 10px;
margin: 0px 0px 0px 0px; display: flex;
cursor: pointer; flex-direction: column;
}
} }
.UG_PRINTER {
text-align: center;
width: 100%;
}
.UG_PRINTER img {
width: 15%;
}
.UG_IMG {
justify-content:center;
text-align:center;
width: 100%;
}
.UG_IMG img {
width: 100%;
border-radius: 5px 5px 5px 5px;
}
.UG_TITLE {
text-align: center;
font-size: 18px;
font-weight: 700;
line-height: 25px;
width: 100%;
margin-top: 20px;
margin-bottom: 4px;
color: #4479FB;
}
.UG_DESC {
font-size: 14px;
width: 100%;
line-height: 20px;
}
.UG_CDESC {
margin-top:35px;
margin-bottom:5px;
text-align: center;
font-size: 24px;
width: 100%;
line-height: 20px;
}
.UG_B_TITLE {
text-align: center;
font-size: 36px;
font-weight: 700;
line-height: 25px;
width: 100%;
margin-top: 20px;
margin-bottom: 25px;
color: #4479FB;
}
.UG_B_DESC {
font-size: 16px;
width: 100%;
line-height: 20px;
margin-bottom: 50px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 624 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1020 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 480 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 813 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 758 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB

View File

Before

Width:  |  Height:  |  Size: 721 KiB

After

Width:  |  Height:  |  Size: 721 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

View File

Before

Width:  |  Height:  |  Size: 460 KiB

After

Width:  |  Height:  |  Size: 460 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

View File

Before

Width:  |  Height:  |  Size: 502 KiB

After

Width:  |  Height:  |  Size: 502 KiB

View File

@@ -1 +0,0 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1687913925905" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8764" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M264.153704 952.655092 64.311213 952.655092 64.311213 224.110197l199.843514 0L264.154727 952.655092 264.153704 952.655092zM229.954811 261.241886 98.815051 261.241886l0 67.14219 131.139759 0L229.954811 261.241886 229.954811 261.241886zM326.469981 64.541969l198.266599 0 0 888.044562L326.469981 952.58653 326.469981 64.541969 326.469981 64.541969zM495.458767 98.756211 360.142895 98.756211l0 69.234851 135.314849 0L495.457744 98.756211 495.458767 98.756211zM954.857758 892.768143l-190.012611 61.911048-225.718835-692.706665 190.010565-61.911048L954.857758 892.768143 954.857758 892.768143zM708.125331 245.963924 583.437517 286.590204l20.798698 63.833841 124.685767-40.627303L708.125331 245.963924 708.125331 245.963924zM708.125331 245.963924" fill="#4479FB" p-id="8765"></path></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -2,446 +2,492 @@
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="Cache-Control" content="max-age=7200" /> <meta http-equiv="Cache-Control" content="max-age=7200"/>
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" /> <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"/>
<title>homepage</title> <title>homepage</title>
<link rel="stylesheet" type="text/css" href="css/font-awesome.min.css" /> <link rel="stylesheet" type="text/css" href="css/font-awesome.min.css"/>
<link rel="stylesheet" type="text/css" href="css/home.css" /> <link rel="stylesheet" type="text/css" href="css/home.css"/>
<link rel="stylesheet" type="text/css" href="css/dark.css" /> <link rel="stylesheet" type="text/css" href="css/dark.css"/>
<script type="text/javascript" src="js/jquery-3.6.0.min.js"></script> <script type="text/javascript" src="js/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../data/text.js"></script> <script type="text/javascript" src="../data/text.js"></script>
<script type="text/javascript" src="js/json2.js"></script> <script type="text/javascript" src="js/json2.js"></script>
<script type="text/javascript" src="js/globalapi.js"></script> <script type="text/javascript" src="js/globalapi.js"></script>
<script type="text/javascript" src="js/home.js"></script> <script type="text/javascript" src="js/home.js"></script>
</head> </head>
<body class="ZScrol" onLoad="OnInit()">
<div id="LeftBoard"> <body onLoad="OnInit()">
<div id="GuideArea"> <div class="LeftBoard">
<div id="Guide1"> <div menu="UserGuide" class="GuideBtn" onClick="GotoMenu('UserGuide')">
<div id="Icon1"><img id="QDIcon" src="img/logo.png" /></div> <div class="Logo"><img src="img/logo.png"/></div>
<div menu="userguide" class="TbItem" onClick="GotoMain('userguide');"> <div class="trans" tid="t1"></div>
<div class="trans" tid="t1">UserGuide</div>
</div>
</div>
</div> </div>
<ul class="accordion"> <ul class="accordion">
<li> <li>
<input type="radio" name="item" id="item1" /> <input type="radio" name="GuideMenu" id="GuideMenu1"/>
<label for="item1"> <label for="GuideMenu1">
<a class="trans" tid="t7"></a> <a class="trans" tid="t7"></a>
<i class="fa fa-caret-right"></i> <i class="fa fa-caret-right"></i>
</label> </label>
<ol> <ol>
<li menu="firstprint" class="BtnItem" onClick="GotoMenu('firstprint')"> <li menu="FirstPrint" class="MenuBtn" onClick="GotoMenu('FirstPrint')">
<div class="BtnIcon "><img class="LeftIcon" src="img/i1.svg" /></div> <div class="MenuBtnIcon"><img src="img/MenuBtnIcon.svg"/></div>
<div class="trans" tid="t2">UserGuide</div> <div class="trans" tid="t2"></div>
</li> </li>
<li menu="addsupport" class="BtnItem" onClick="GotoMenu('addsupport')"> <li menu="AddSupport" class="MenuBtn" onClick="GotoMenu('AddSupport')">
<div class="BtnIcon "><img class="LeftIcon" src="img/i1.svg" /></div> <div class="MenuBtnIcon"><img src="img/MenuBtnIcon.svg"/></div>
<div class="trans" tid="t3">UserGuide</div> <div class="trans" tid="t3"></div>
</li> </li>
<li menu="wifisend" class="BtnItem" onClick="GotoMenu('wifisend')"> <li menu="WifiSend" class="MenuBtn" onClick="GotoMenu('WifiSend')">
<div class="BtnIcon "><img class="LeftIcon" src="img/i1.svg" /></div> <div class="MenuBtnIcon"><img src="img/MenuBtnIcon.svg"/></div>
<div class="trans" tid="t5">UserGuide</div> <div class="trans" tid="t5"></div>
</li> </li>
<li menu="connectdevice" class="BtnItem" onClick="GotoMenu('connectdevice')"> <li menu="ConnectDevice" class="MenuBtn" onClick="GotoMenu('ConnectDevice')">
<div class="BtnIcon "><img class="LeftIcon" src="img/i1.svg" /></div> <div class="MenuBtnIcon"><img src="img/MenuBtnIcon.svg"/></div>
<div class="trans" tid="t4">UserGuide</div> <div class="trans" tid="t4"></div>
</li> </li>
<li menu="addtext" class="BtnItem" onClick="GotoMenu('addtext')"> <li menu="AddText" class="MenuBtn" onClick="GotoMenu('AddText')">
<div class="BtnIcon "><img class="LeftIcon" src="img/i1.svg" /></div> <div class="MenuBtnIcon"><img src="img/MenuBtnIcon.svg"/></div>
<div class="trans" tid="t11">UserGuide</div> <div class="trans" tid="t11"></div>
</li> </li>
<li menu="cutmodel" class="BtnItem" onClick="GotoMenu('cutmodel')"> <li menu="CutModel" class="MenuBtn" onClick="GotoMenu('CutModel')">
<div class="BtnIcon "><img class="LeftIcon" src="img/i1.svg" /></div> <div class="MenuBtnIcon"><img src="img/MenuBtnIcon.svg"/></div>
<div class="trans" tid="t12">UserGuide</div> <div class="trans" tid="t12"></div>
</li> </li>
<li menu="downloadm" class="BtnItem" onClick="GotoMenu('downloadm')"> <li menu="AdaptiveMeshing" class="MenuBtn" onClick="GotoMenu('AdaptiveMeshing')">
<div class="BtnIcon "><img class="LeftIcon" src="img/i1.svg" /></div> <div class="MenuBtnIcon"><img src="img/MenuBtnIcon.svg"/></div>
<div class="trans" tid="t13">UserGuide</div> <div class="trans" tid="t14"></div>
</li>
<li menu="ModelDownload" class="MenuBtn" onClick="GotoMenu('ModelDownload')">
<div class="MenuBtnIcon"><img src="img/MenuBtnIcon.svg"/></div>
<div class="trans" tid="t13"></div>
</li> </li>
</ol> </ol>
</li> </li>
<li> <li>
<input type="radio" name="item" id="item2" /> <input type="radio" name="GuideMenu" id="GuideMenu2"/>
<label for="item2"> <label for="GuideMenu2">
<a class="trans" tid="t16"></a>
<i class="fa fa-caret-right"></i>
</label>
<ol>
<li menu="Flowrate" class="MenuBtn" onClick="GotoMenu('Flowrate')">
<div class="MenuBtnIcon"><img src="img/MenuBtnIcon.svg"/></div>
<div class="trans" tid="t15"></div>
</li>
<li menu="PressureAdvance" class="MenuBtn" onClick="GotoMenu('PressureAdvance')">
<div class="MenuBtnIcon"><img src="img/MenuBtnIcon.svg"/></div>
<div class="trans" tid="t17"></div>
</li>
</ol>
</li>
<li>
<input type="radio" name="GuideMenu" id="GuideMenu3"/>
<label for="GuideMenu3">
<a class="trans" tid="t8"></a> <a class="trans" tid="t8"></a>
<i class="fa fa-caret-right"></i> <i class="fa fa-caret-right"></i>
</label> </label>
<ol> <ol>
<li menu="infomax3" class="BtnItem" onClick="GotoMenu('infomax3')"> <li menu="X-MAX 3" class="MenuBtn" onClick="GotoMenu('X-MAX 3')">
<div class="BtnIcon "><img class="LeftIcon" src="img/i1.svg" /></div> <div class="MenuBtnIcon"><img src="img/MenuBtnIcon.svg"/></div>
<div class="TextS1">X-MAX 3</div> <div>X-MAX 3</div>
</li> </li>
<li menu="infoplus3" class="BtnItem" onClick="GotoMenu('infoplus3')"> <li menu="X-Plus 3" class="MenuBtn" onClick="GotoMenu('X-Plus 3')">
<div class="BtnIcon "><img class="LeftIcon" src="img/i1.svg" /></div> <div class="MenuBtnIcon"><img src="img/MenuBtnIcon.svg"/></div>
<div class="TextS1">X-Plus 3</div> <div>X-Plus 3</div>
</li> </li>
<li menu="infosmart3" class="BtnItem" onClick="GotoMenu('infosmart3')"> <li menu="X-smart 3" class="MenuBtn" onClick="GotoMenu('X-smart 3')">
<div class="BtnIcon "><img class="LeftIcon" src="img/i1.svg" /></div> <div class="MenuBtnIcon"><img src="img/MenuBtnIcon.svg"/></div>
<div class="TextS1">X-Smart 3</div> <div>X-Smart 3</div>
</li> </li>
<li menu="infof1" class="BtnItem" onClick="GotoMenu('infof1')"> <li menu="Filaments" class="MenuBtn" onClick="GotoMenu('Filaments')">
<div class="BtnIcon "><img class="LeftIcon" src="img/i1.svg" /></div> <div class="MenuBtnIcon"><img src="img/MenuBtnIcon.svg"/></div>
<div class="trans" tid="t10">FInfo</div> <div class="trans" tid="t10"></div>
</li> </li>
</ol> </ol>
</li> </li>
<li> <li>
<input type="radio" name="item" id="item3" /> <input type="radio" name="GuideMenu" id="GuideMenu4"/>
<label for="item3"> <label for="GuideMenu4">
<a class="trans" tid="t9"></a> <a class="trans" tid="t9"></a>
<i class="fa fa-caret-right"></i> <i class="fa fa-caret-right"></i>
</label> </label>
<ol> <ol>
<li menu="issuereport" class="BtnItem" onClick="GotoMenu('issuereport')"> <li menu="IssueReport" class="MenuBtn" onClick="GotoMenu('IssueReport')">
<div class="BtnIcon "><img class="LeftIcon" src="img/i1.svg" /></div> <div class="MenuBtnIcon"><img src="img/MenuBtnIcon.svg"/></div>
<div class="trans" tid="t6">UserGuide</div> <div class="trans" tid="t6"></div>
</li> </li>
</ol> </ol>
</li> </li>
</ul> </ul>
</div> </div>
<div id="RightBoard">
<div id="ThumbBoard" class="ZScrol" board="userguide"> <div class="RightBoard">
<div class="GuideBlock" onClick="GotoMenu('firstprint');"> <div class="GuideBoard" board="UserGuide">
<div class="UG_IMG"><img src="img/FirstPrint.gif" /></div> <div class="Thumbnail" onClick="GotoMenu('FirstPrint')">
<div class="UG_TITLE trans TextS1" tid="t2">FirstPrint</div> <div class="AutozoomImage"><img src="img/FirstPrint.gif"/></div>
<div class="ThumbnailTitle trans" tid="t2"></div>
</div> </div>
<div class="GuideBlock" onClick="GotoMenu('addsupport');"> <div class="Thumbnail" onClick="GotoMenu('AddSupport')">
<div class="UG_IMG"><img src="img/AddSupport.gif" /></div> <div class="AutozoomImage"><img src="img/AddSupport.gif"/></div>
<div class="UG_TITLE trans TextS1" tid="t3">AddSupport</div> <div class="ThumbnailTitle trans" tid="t3"></div>
</div> </div>
<div class="GuideBlock" onClick="GotoMenu('wifisend');"> <div class="Thumbnail" onClick="GotoMenu('WifiSend')">
<div class="UG_IMG"><img src="img/WifiSend.gif" /></div> <div class="AutozoomImage"><img src="img/WifiSend.gif"/></div>
<div class="UG_TITLE trans TextS1" tid="t5">WifiSend</div> <div class="ThumbnailTitle trans" tid="t5"></div>
</div> </div>
<div class="GuideBlock" onClick="GotoMenu('connectdevice');"> <div class="Thumbnail" onClick="GotoMenu('ConnectDevice')">
<div class="UG_IMG"><img src="img/ConnectDevice.gif" /></div> <div class="AutozoomImage"><img src="img/ConnectDevice.gif"/></div>
<div class="UG_TITLE trans TextS1" tid="t4">ConnectDevice</div> <div class="ThumbnailTitle trans" tid="t4"></div>
</div> </div>
<div class="GuideBlock" onClick="GotoMenu('addtext');"> <div class="Thumbnail" onClick="GotoMenu('AddText')">
<div class="UG_IMG"><img src="img/AddText.gif" /></div> <div class="AutozoomImage"><img src="img/AddText.gif"/></div>
<div class="UG_TITLE trans TextS1" tid="t11">AddText</div> <div class="ThumbnailTitle trans" tid="t11"></div>
</div> </div>
<div class="GuideBlock" onClick="GotoMenu('cutmodel');"> <div class="Thumbnail" onClick="GotoMenu('CutModel')">
<div class="UG_IMG"><img src="img/CutModel.gif" /></div> <div class="AutozoomImage"><img src="img/CutModel.gif"/></div>
<div class="UG_TITLE trans TextS1" tid="t12">CutModel</div> <div class="ThumbnailTitle trans" tid="t12"></div>
</div> </div>
<div class="GuideBlock" onClick="GotoMenu('downloadm');"> <div class="Thumbnail" onClick="GotoMenu('AdaptiveMeshing')">
<div class="UG_IMG"><img src="img/DownloadModel.png" /></div> <div class="AutozoomImage"><img src="img/AdaptiveMeshingThumbnail.png"/></div>
<div class="UG_TITLE trans TextS1" tid="t13">AddText</div> <div class="ThumbnailTitle trans" tid="t14"></div>
</div> </div>
<div class="GuideBlock" onClick="GotoMenu('issuereport');"> <div class="Thumbnail" onClick="GotoMenu('ModelDownload')">
<div class="UG_IMG"><img src="img/IssueReport.png" /></div> <div class="AutozoomImage"><img src="img/DownloadModel.png"/></div>
<div class="UG_TITLE trans TextS1" tid="t6">IssueReport</div> <div class="ThumbnailTitle trans" tid="t13"></div>
</div>
<div class="Thumbnail" onClick="GotoMenu('Flowrate')">
<div class="AutozoomImage"><img src="img/FlowrateCoarse.gif"/></div>
<div class="ThumbnailTitle trans" tid="t15"></div>
</div>
<div class="Thumbnail" onClick="GotoMenu('PressureAdvance')">
<div class="AutozoomImage"><img src="img/PressureAdvance.gif"/></div>
<div class="ThumbnailTitle trans" tid="t17"></div>
</div>
<div class="Thumbnail" onClick="GotoMenu('IssueReport')">
<div class="AutozoomImage"><img src="img/IssueReport.png"/></div>
<div class="ThumbnailTitle trans" tid="t6"></div>
</div> </div>
</div> </div>
<div id="GifBigBoard" board="firstprint"> <div class="ImageBoard" board="FirstPrint">
<div id="GifBoard"> <div class="IntroduceTitle trans" tid="t2"></div>
<div class="GifBlock"> <div class="AutozoomImage"><img src="img/FirstPrint.gif"/></div>
<div class="UG_IMG"><img src="img/FirstPrint.gif" /></div> </div>
</div>
<div class="ImageBoard" board="AddSupport">
<div class="IntroduceTitle trans" tid="t3"></div>
<div class="AutozoomImage"><img src="img/AddSupport.gif"/></div>
</div>
<div class="ImageBoard" board="ConnectDevice">
<div class="IntroduceTitle trans" tid="t5"></div>
<div class="AutozoomImage"><img src="img/ConnectDevice.gif"/></div>
</div>
<div class="ImageBoard" board="WifiSend">
<div class="IntroduceTitle trans" tid="t4"></div>
<div class="AutozoomImage"><img src="img/WifiSend.gif"/></div>
</div>
<div class="ImageBoard" board="AddText">
<div class="IntroduceTitle trans" tid="t11"></div>
<div class="AutozoomImage"><img src="img/AddText.gif"/></div>
</div>
<div class="ImageBoard" board="CutModel">
<div class="IntroduceTitle trans" tid="t12"></div>
<div class="AutozoomImage"><img src="img/CutModel.gif"/></div>
</div>
<div class="IntroduceBoard" board="AdaptiveMeshing">
<div class="IntroduceTitle trans" tid="t14"></div>
<div class="IntroduceTextBold trans" tid="l5"></div>
<div class="IntroduceText trans" tid="l7"></div>
<div class="IntroduceText trans" tid="l8"></div>
<div class="CenterImage"><img src="img/AdaptiveMeshing.png"/></div>
<div class="IntroduceTextRed trans" tid="l10"></div>
<div class="IntroduceTextGreen trans" tid="l11"></div>
<div class="IntroduceTextBold trans" tid="l6"></div>
<div class="IntroduceText trans" tid="l9"></div>
<div class="CenterImage"><img src="img/DisableAM.png"/></div>
<div class="IntroduceTextBold trans" tid="l0"></div>
<div class="IntroduceText">https://github.com/kyleisah/Klipper-Adaptive-Meshing-Purging#key-features</div>
</div>
<div class="IntroduceBoard" board="ModelDownload">
<div class="IntroduceTitle trans" tid="t13"></div>
<div class="IntroduceTextBold trans" tid="l1"></div>
<div class="IntroduceText">https://makerworld.com</div>
<div class="AutozoomImage"><img src="img/MakerWorld.png"/></div>
<div class="IntroduceText">https://www.thingiverse.com</div>
<div class="AutozoomImage"><img src="img/thingiverse.png"/></div>
<div class="IntroduceText">https://www.printables.com/model</div>
<div class="AutozoomImage"><img src="img/printables.png"/></div>
</div>
<div class="IntroduceBoard" board="Flowrate">
<div class="IntroduceTitle trans" tid="t15"></div>
<div class="IntroduceTextBold trans" tid="l12"></div>
<div class="IntroduceText trans" tid="l13"></div>
<div class="IntroduceText trans" tid="l14"></div>
<div class="CenterImage"><img src="img/FlowrateValue.png"/></div>
<div class="IntroduceText trans" tid="l15"></div>
<div class="IntroduceText trans" tid="l16"></div>
<div class="CenterImage"><img src="img/FlowrateCompare.png"/></div>
<div class="IntroduceTextBold trans" tid="l17"></div>
<div class="IntroduceText trans" tid="l18"></div>
<div class="IntroduceText trans" tid="l19"></div>
<div class="IntroduceText trans" tid="l20"></div>
<div class="AutozoomImage"><img src="img/FlowrateCoarse.gif"/></div>
<div class="IntroduceText trans" tid="l21"></div>
<div class="CenterImage"><img src="img/FlowrateCoarse.png"/></div>
<div class="IntroduceTextBold trans" tid="l22"></div>
<div class="IntroduceText trans" tid="l23"></div>
<div class="IntroduceText trans" tid="l20"></div>
<div class="AutozoomImage"><img src="img/FlowrateFine.gif"/></div>
<div class="IntroduceText trans" tid="l24"></div>
<div class="CenterImage"><img src="img/FlowrateFine.png"/></div>
</div>
<div class="IntroduceBoard" board="PressureAdvance">
<div class="IntroduceTitle trans" tid="t17"></div>
<div class="IntroduceText trans" tid="l25"></div>
<div class="CenterImage"><img src="img/PressureAdvanceCompare.png"/></div>
<div class="IntroduceTextBold trans" tid="l26"></div>
<div class="IntroduceText trans" tid="l27"></div>
<div class="IntroduceText trans" tid="l28"></div>
<div class="IntroduceText trans" tid="l29"></div>
<div class="IntroduceTextBold trans" tid="l30"></div>
<div class="IntroduceText trans" tid="l31"></div>
<div class="IntroduceText trans" tid="l32"></div>
<div class="AutozoomImage"><img src="img/PressureAdvance.gif"/></div>
<div class="IntroduceText trans" tid="l33"></div>
<div class="IntroduceText trans" tid="l34"></div>
<div class="CenterImage"><img src="img/PressureAdvanceValue.png"/></div>
<div class="IntroduceTextBold trans" tid="l35"></div>
<div class="IntroduceText trans" tid="l36"></div>
<div class="CenterImage"><img src="img/PressureAdvanceLine.png"/></div>
<div class="IntroduceTextBold trans" tid="l37"></div>
<div class="IntroduceText trans" tid="l38"></div>
<div class="CenterImage"><img src="img/PressureAdvancePattern.png"/></div>
<div class="IntroduceTextBold trans" tid="l39"></div>
<div class="IntroduceText trans" tid="l40"></div>
<div class="CenterImage"><img src="img/PressureAdvanceTower.png"/></div>
</div>
<div class="IntroduceBoard" board="X-MAX 3">
<div class="AutozoomImage"><img src="img/X-MAX3Poster.png"/></div>
</div>
<div class="IntroduceBoard" board="X-Plus 3">
<div class="AutozoomImage"><img src="img/X-Plus3Poster.png"/></div>
</div>
<div class="IntroduceBoard" board="X-smart 3">
<div class="AutozoomImage"><img src="img/X-smart3Poster.png"/></div>
</div>
<div class="IntroduceBoard" board="Filaments">
<div class="FilamentsTable">
<table cellspacing="0">
<thead>
<tr>
<th>Filament</th>
<th>Drying box</th>
<th>Anneal</th>
<th>Water resistance</th>
<th>Corrosion resistance</th>
<th>Creep resistance</th>
<th>HDT 0.45</th>
<th>HDT 1.80</th>
<th>Tensile strength(MPa)</th>
<th>Tensile modulus(MPa)</th>
<th>Elongation at break(%)</th>
<th>Flexural strength(MPa)</th>
<th>Flexural modulus(MPa)</th>
<th>Notch impact strength(KJ/㎡)</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in 1" :key="index">
<td>ToughPETG</td>
<td>≤20</td>
<td>/</td>
<td>+++</td>
<td>++</td>
<td>+++</td>
<td>78℃</td>
<td>73℃</td>
<td>40.3±0.6</td>
<td>1780±80</td>
<td>4.0±0.2</td>
<td>62.8±0.4</td>
<td>1919±54</td>
<td>13.9±2.3</td>
</tr>
<tr v-for="(item, index) in 1" :key="index">
<td>UltraABS-GF25</td>
<td>≤30</td>
<td>/</td>
<td>+++</td>
<td>+</td>
<td>+++</td>
<td>97℃</td>
<td>93℃</td>
<td>48.48 ± 0.61</td>
<td>3752.13 ± 68.39</td>
<td>2.10 ± 0.10</td>
<td>78.80 ± 1.26</td>
<td>3531.71 ± 75.79</td>
<td>8.91 ± 0.63</td>
</tr>
<tr v-for="(item, index) in 1" :key="index">
<td>ABS Rapido</td>
<td>≤30</td>
<td>/</td>
<td>++</td>
<td>+</td>
<td>+++</td>
<td>85℃</td>
<td>/</td>
<td>41 ± 1</td>
<td>3850 ± 150</td>
<td>11 ± 1</td>
<td>77.5 ± 2.5</td>
<td>77.5 ± 2.5</td>
<td>20 ± 2</td>
</tr>
<tr v-for="(item, index) in 1" :key="index">
<td>PA12-CF</td>
<td>≤15</td>
<td>80-100℃</td>
<td>+</td>
<td>++</td>
<td>+</td>
<td>149.6℃</td>
<td>112.4℃</td>
<td>87.49 ± 2.81</td>
<td>5438.40 ± 282.82</td>
<td>2.59 ± 0.19</td>
<td>133.17 ± 4.66</td>
<td>4667.43 ± 339.80</td>
<td>6.11 ± 1.45</td>
</tr>
<tr v-for="(item, index) in 1" :key="index">
<td>PATH-CF</td>
<td>≤15</td>
<td>80-100℃</td>
<td>++</td>
<td>+++</td>
<td>+++</td>
<td>192.3℃</td>
<td>121.7℃</td>
<td>104.90 ± 1.99</td>
<td>8383.26 ± 419.53</td>
<td>1.60 ± 0.07</td>
<td>147.70 ± 4.09</td>
<td>5969.35 ± 145.28</td>
<td>6.17 ± 0.2</td>
</tr>
<tr v-for="(item, index) in 1" :key="index">
<td>PET-CF</td>
<td>≤15</td>
<td>80-100℃</td>
<td>+++</td>
<td>+++</td>
<td>+++</td>
<td>148.8℃</td>
<td>112.1℃</td>
<td>87.41 ± 3.57</td>
<td>6025.53 ± 355.46</td>
<td>1.99 ±0.18</td>
<td>122.69 ± 5.19</td>
<td>5313.21 ± 197.89</td>
<td>5.57 ± 0.58</td>
</tr>
<tr v-for="(item, index) in 1" :key="index">
<td>PLA Rapido</td>
<td>≤30</td>
<td>/</td>
<td>+</td>
<td>+</td>
<td>+</td>
<td>57℃</td>
<td>/</td>
<td>39 ± 3</td>
<td>4650 ± 150</td>
<td>12.5 ± 2.5</td>
<td>72.5 ± 2.5</td>
<td>2850 ± 150</td>
<td>6 ± 2</td>
</tr>
<tr v-for="(item, index) in 1" :key="index">
<td>PLA Rapido Matte</td>
<td>≤30</td>
<td>/</td>
<td>+</td>
<td>+</td>
<td>+</td>
<td>58℃</td>
<td>/</td>
<td>39 ± 3</td>
<td>2400 ± 200</td>
<td>3 ± 1</td>
<td>77.5 ± 2.5</td>
<td>2200 ± 200</td>
<td>7.5 ± 1.5</td>
</tr>
<tr v-for="(item, index) in 1" :key="index">
<td>UltraPA</td>
<td>≤15</td>
<td>/</td>
<td>++</td>
<td>++</td>
<td>++</td>
<td>77.8℃</td>
<td>73.1℃</td>
<td>86.15 ± 0.56</td>
<td>3609.22 ± 153.31</td>
<td>11.68 ± 3.36</td>
<td>121.47 ± 3.14</td>
<td>3314.03 ±181.88</td>
<td>5.78 ± 0.30</td>
</tr>
</tbody>
</table>
</div> </div>
</div> </div>
<div id="GifBigBoard" board="addsupport"> <div class="IssueBoard" board="IssueReport">
<div id="GifBoard"> <div class="IntroduceTitle trans" tid="t6"></div>
<div class="GifBlock"> <div class="IntroduceText trans" tid="l2"></div>
<div class="UG_IMG"><img src="img/AddSupport.gif" /></div> <div class="IntroduceText trans" tid="l3"></div>
</div> <div class="EmailBlock">
</div> <div class="PrinterBlock">
</div> <div class="CenterImage"><img src="img/X-MAX 3.png"/></div>
<div class="ThumbnailTitle">X-MAX 3</div>
<div id="GifBigBoard" board="connectdevice"> <div class="IntroduceText">
<div id="GifBoard"> <b>E-mail:</b><br/>MAX3support@qd3dprinter.com<br>MAX3AMS@qd3dprinter.com<br/><br>
<div class="GifBlock"> <b>Skype:</b><br/>MAX3support@qd3dprinter.com
<div class="UG_IMG"><img src="img/ConnectDevice.gif" /></div>
</div>
</div>
</div>
<div id="GifBigBoard" board="wifisend">
<div id="GifBoard">
<div class="GifBlock">
<div class="UG_IMG"><img src="img/WifiSend.gif" /></div>
</div>
</div>
</div>
<div id="GifBigBoard" board="addtext">
<div id="GifBoard">
<div class="GifBlock">
<div class="UG_IMG"><img src="img/AddText.gif" /></div>
</div>
</div>
</div>
<div id="GifBigBoard" board="cutmodel">
<div id="GifBoard">
<div class="GifBlock">
<div class="UG_IMG"><img src="img/CutModel.gif" /></div>
</div>
</div>
</div>
<div id="GifBigBoard" board="downloadm">
<div id="GifBoard">
<div class="GifBlock">
<div class="UG_B_TITLE trans TextS1" tid="t13">download</div>
<div class="UG_CDESC trans" tid="ls1"></div>
</div>
</div>
<div id="IssueBoard">
<div class="halfBlock">
<div class="UG_DESC">URL:https://www.thingiverse.com/</div>
<div class="UG_IMG"><img src="img/thingiverse.png" /></div>
</div>
<div class="halfBlock">
<div class="UG_DESC">URL:https://www.printables.com/model</div>
<div class="UG_IMG"><img src="img/printables.png" /></div>
</div>
</div>
</div>
<!--<div id="GifBigBoard" board="downloadm">
<div id="GifBoard">
<div class="GifBlock">
<div class="UG_B_TITLE trans" tid="t13">downloadm</div>
</div>
<div id="IssueBoard">
<div class="halfBlock">
<div class="UG_CDESC">URL:https://www.thingiverse.com/</div>
<div class="UG_IMG"><img src="img/thingiverse.png" /></div>
<div class="UG_CDESC">URL:https://www.printables.com/model</div>
<div class="UG_IMG"><img src="img/printables.png" /></div>
</div>
</div>
</div>
</div>-->
<div id="GifBigBoard" board="infomax3">
<div id="GifBoard">
<div class="UG_IMG"><img src="img/info1.png" /></div>
</div>
</div>
<div id="GifBigBoard" board="infoplus3">
<div id="GifBoard">
<div class="UG_IMG"><img src="img/info2.png" /></div>
</div>
</div>
<div id="GifBigBoard" board="infosmart3">
<div id="GifBoard">
<div class="UG_IMG"><img src="img/info3.png" /></div>
</div>
</div>
<div id="FilaBigBoard" board="infof1">
<div id="FilaBoard">
<div class="main">
<table cellspacing="0">
<thead>
<tr>
<th>Filament</th>
<th>Drying box</th>
<th>Anneal</th>
<th>Water resistance</th>
<th>Corrosion resistance</th>
<th>Creep resistance</th>
<th>HDT 0.45</th>
<th>HDT 1.80</th>
<th>Tensile strength(MPa)</th>
<th>Tensile modulus(MPa)</th>
<th>Elongation at break(%)</th>
<th>Flexural strength(MPa)</th>
<th>Flexural modulus(MPa)</th>
<th>Notch impact strength(KJ/㎡)</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in 1" :key="index">
<td>ToughPETG</td>
<td>≤20</td>
<td>/</td>
<td>+++</td>
<td>++</td>
<td>+++</td>
<td>78℃</td>
<td>73℃</td>
<td>40.3±0.6</td>
<td>1780±80</td>
<td>4.0±0.2</td>
<td>62.8±0.4</td>
<td>1919±54</td>
<td>13.9±2.3</td>
</tr>
<tr v-for="(item, index) in 1" :key="index">
<td>UltraABS-GF25</td>
<td>≤30</td>
<td>/</td>
<td>+++</td>
<td>+</td>
<td>+++</td>
<td>97℃</td>
<td>93℃</td>
<td>48.48 ± 0.61</td>
<td>3752.13 ± 68.39</td>
<td>2.10 ± 0.10</td>
<td>78.80 ± 1.26</td>
<td>3531.71 ± 75.79</td>
<td>8.91 ± 0.63</td>
</tr>
<tr v-for="(item, index) in 1" :key="index">
<td>ABS Rapido</td>
<td>≤30</td>
<td>/</td>
<td>++</td>
<td>+</td>
<td>+++</td>
<td>85℃</td>
<td>/</td>
<td>41 ± 1</td>
<td>3850 ± 150</td>
<td>11 ± 1</td>
<td>77.5 ± 2.5</td>
<td>77.5 ± 2.5</td>
<td>20 ± 2</td>
</tr>
<tr v-for="(item, index) in 1" :key="index">
<td>PA12-CF</td>
<td>≤15</td>
<td>80-100℃</td>
<td>+</td>
<td>++</td>
<td>+</td>
<td>149.6℃</td>
<td>112.4℃</td>
<td>87.49 ± 2.81</td>
<td>5438.40 ± 282.82</td>
<td>2.59 ± 0.19</td>
<td>133.17 ± 4.66</td>
<td>4667.43 ± 339.80</td>
<td>6.11 ± 1.45</td>
</tr>
<tr v-for="(item, index) in 1" :key="index">
<td>PATH-CF</td>
<td>≤15</td>
<td>80-100℃</td>
<td>++</td>
<td>+++</td>
<td>+++</td>
<td>192.3℃</td>
<td>121.7℃</td>
<td>104.90 ± 1.99</td>
<td>8383.26 ± 419.53</td>
<td>1.60 ± 0.07</td>
<td>147.70 ± 4.09</td>
<td>5969.35 ± 145.28</td>
<td>6.17 ± 0.2</td>
</tr>
<tr v-for="(item, index) in 1" :key="index">
<td>PET-CF</td>
<td>≤15</td>
<td>80-100℃</td>
<td>+++</td>
<td>+++</td>
<td>+++</td>
<td>148.8℃</td>
<td>112.1℃</td>
<td>87.41 ± 3.57</td>
<td>6025.53 ± 355.46</td>
<td>1.99 ±0.18</td>
<td>122.69 ± 5.19</td>
<td>5313.21 ± 197.89</td>
<td>5.57 ± 0.58</td>
</tr>
<tr v-for="(item, index) in 1" :key="index">
<td>PLA Rapido</td>
<td>≤30</td>
<td>/</td>
<td>+</td>
<td>+</td>
<td>+</td>
<td>57℃</td>
<td>/</td>
<td>39 ± 3</td>
<td>4650 ± 150</td>
<td>12.5 ± 2.5</td>
<td>72.5 ± 2.5</td>
<td>2850 ± 150</td>
<td>6 ± 2</td>
</tr>
<tr v-for="(item, index) in 1" :key="index">
<td>PLA Rapido Matte</td>
<td>≤30</td>
<td>/</td>
<td>+</td>
<td>+</td>
<td>+</td>
<td>58℃</td>
<td>/</td>
<td>39 ± 3</td>
<td>2400 ± 200</td>
<td>3 ± 1</td>
<td>77.5 ± 2.5</td>
<td>2200 ± 200</td>
<td>7.5 ± 1.5</td>
</tr>
<tr v-for="(item, index) in 1" :key="index">
<td>UltraPA</td>
<td>≤15</td>
<td>/</td>
<td>++</td>
<td>++</td>
<td>++</td>
<td>77.8℃</td>
<td>73.1℃</td>
<td>86.15 ± 0.56</td>
<td>3609.22 ± 153.31</td>
<td>11.68 ± 3.36</td>
<td>121.47 ± 3.14</td>
<td>3314.03 ±181.88</td>
<td>5.78 ± 0.30</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div id="GifBigBoard" board="issuereport">
<div id="GifBoard">
<div class="GifBlock">
<div class="UG_B_TITLE trans TextS1" tid="t6"></div>
<div class="trans" tid="ls2"></div>
<div class="UG_B_DESC trans" tid="ls3"></div>
</div>
</div>
<div id="IssueBoard">
<div class="PrintBlock">
<div class="UG_IMG"><img src="img/X-MAX3.png" /></div>
<div class="UG_TITLE">X-MAX 3</div>
<div class="UG_DESC">
E-mail:<br />MAX3support@qd3dprinter.com<br>MAX3AMS@qd3dprinter.com<br /><br>
Skype:<br />MAX3support@qd3dprinter.com
</div> </div>
</div> </div>
<div class="PrintBlock"> <div class="PrinterBlock">
<div class="UG_IMG"><img src="img/X-Plus3.png" /></div> <div class="CenterImage"><img src="img/X-Plus 3.png"/></div>
<div class="UG_TITLE">X-Plus 3</div> <div class="ThumbnailTitle">X-Plus 3</div>
<div class="UG_DESC"> <div class="IntroduceText">
E-mail:<br />Plus3support01@qd3dprinter.com<br>Plus3support02@qd3dprinter.com<br /><br> <b>E-mail:</b><br/>Plus3support01@qd3dprinter.com<br>Plus3support02@qd3dprinter.com<br/><br>
Skype:<br />Plus3support@qd3dprinter.com <b>Skype:</b><br/>Plus3support@qd3dprinter.com
</div> </div>
</div> </div>
<div class="PrintBlock"> <div class="PrinterBlock">
<div class="UG_IMG"><img src="img/X-Smart3.png" /></div> <div class="CenterImage"><img src="img/X-smart 3.png"/></div>
<div class="UG_TITLE">X-Smart 3</div> <div class="ThumbnailTitle">X-smart 3</div>
<div class="UG_DESC"> <div class="IntroduceText">
E-mail:<br />Smart3support@qd3dprinter.com<br>Smart3AMS@qd3dprinter.com<br /><br> <b>E-mail:</b><br/>Smart3support@qd3dprinter.com<br>Smart3AMS@qd3dprinter.com<br/><br>
Skype:<br />Smart3support@qd3dprinter.com <b>Skype:</b><br/>Smart3support@qd3dprinter.com
</div> </div>
</div> </div>
</div> </div>

View File

@@ -1,11 +1,6 @@
function OnInit() function OnInit()
{ {
//-----Test----- TranslatePage();
//Set_RecentFile_MouseRightBtn_Event();
//-----Official-----
TranslatePage();
SendMsg_GetLoginInfo(); SendMsg_GetLoginInfo();
SendMsg_GetRecentFile(); SendMsg_GetRecentFile();
@@ -13,40 +8,27 @@ function OnInit()
function GotoMenu( strMenu ) function GotoMenu( strMenu )
{ {
let MenuList = $(".BtnItem"); if (strMenu == "UserGuide")
let nAll=MenuList.length;
for(let n=0;n<nAll;n++)
{ {
let OneBtn=MenuList[n]; $(".MenuBtnSelected").removeClass("MenuBtnSelected");
$("div[board]").hide();
if( $(OneBtn).attr("menu")==strMenu ) $("div[board=\'" + strMenu + "\']").show();
{
$(".BtnItem").removeClass("BtnItemSelected");
$(OneBtn).addClass("BtnItemSelected");
$("div[board]").hide();
$("div[board=\'"+strMenu+"\']").show();
}
} }
} else
{
let MenuList = $(".MenuBtn");
let nAll=MenuList.length;
function GotoMain(strMenu) { for(let n=0;n<nAll;n++)
let MenuList = $(".TbItem") {
let nAll = MenuList.length; let OneBtn=MenuList[n];
if ($(OneBtn).attr("menu")==strMenu)
for (let n = 0; n < nAll; n++) { {
let OneBtn = MenuList[n]; $(".MenuBtnSelected").removeClass("MenuBtnSelected");
$(OneBtn).addClass("MenuBtnSelected");
if ($(OneBtn).attr("menu") == strMenu) { $("div[board]").hide();
$(".TbItem").removeClass("TbItemSelected"); $("div[board=\'"+strMenu+"\']").show();
}
$(OneBtn).addClass("TbItemSelected");
$(".BtnItem").removeClass("BtnItemSelected");
$("div[board]").hide();
$("div[board=\'" + strMenu + "\']").show();
} }
} }
} }

View File

@@ -1,7 +1,8 @@
#add_subdirectory(slasupporttree) #add_subdirectory(slasupporttree)
#add_subdirectory(openvdb) #add_subdirectory(openvdb)
# add_subdirectory(meshboolean) # add_subdirectory(meshboolean)
add_subdirectory(its_neighbor_index) #add_subdirectory(its_neighbor_index)
# add_subdirectory(opencsg) # add_subdirectory(opencsg)
#add_subdirectory(aabb-evaluation) #add_subdirectory(aabb-evaluation)
add_subdirectory(wx_gl_test) #add_subdirectory(wx_gl_test)
add_subdirectory(print_arrange_polys)

View File

@@ -0,0 +1,7 @@
add_executable(print_arrange_polys main.cpp)
target_link_libraries(print_arrange_polys libslic3r admesh)
if (WIN32)
qidislicer_copy_dlls(print_arrange_polys)
endif()

View File

@@ -0,0 +1,103 @@
#include <iostream>
#include <ostream>
#include <libslic3r/TriangleMesh.hpp>
#include <boost/filesystem.hpp>
void print_arrange_polygons(const std::string &dirpath, std::ostream &out)
{
using namespace Slic3r;
boost::filesystem::path p = dirpath;
if (!boost::filesystem::exists(p) || !boost::filesystem::is_directory(p))
return;
for (const auto& entry : boost::filesystem::directory_iterator(p)) {
if (!boost::filesystem::is_regular_file(entry)) {
continue;
}
TriangleMesh mesh;
mesh.ReadSTLFile(entry.path().c_str());
ExPolygons outline = mesh.horizontal_projection();
out << "// " << entry.path().filename() << ": " << std::endl;
for (const ExPolygon &expoly : outline) {
out << "MyPoly{\n"; // Start of polygon
out << "\t{\n"; // Start of contour
for (const auto& point : expoly.contour.points) {
out << " {" << point.x() << ", " << point.y() << "},\n"; // Print point coordinates
}
out << " },\n"; // End of contour
out << " {\n"; // start of holes
for (const auto& hole : expoly.holes) {
out << " {\n"; // Start of hole
for (const auto& point : hole.points) {
out << " {" << point.x() << ", " << point.y() << "},\n"; // Print point coordinates
}
out << " },\n"; // End of hole Polygon
}
out << " }\n"; // end of holes Polygons
out << "},\n"; // End of ExPolygon
}
}
}
void print_arrange_items(const std::string &dirpath, std::ostream &out)
{
using namespace Slic3r;
boost::filesystem::path p = dirpath;
if (!boost::filesystem::exists(p) || !boost::filesystem::is_directory(p))
return;
for (const auto& entry : boost::filesystem::directory_iterator(p)) {
if (!boost::filesystem::is_regular_file(entry)) {
continue;
}
TriangleMesh mesh;
mesh.ReadSTLFile(entry.path().c_str());
ExPolygons outline = mesh.horizontal_projection();
out << "ExPolygons{ " << "// " << entry.path().filename() << ":\n";
for (const ExPolygon &expoly : outline) {
out << " MyPoly{\n"; // Start of polygon
out << " {\n"; // Start of contour
for (const auto& point : expoly.contour.points) {
out << " {" << point.x() << ", " << point.y() << "},\n"; // Print point coordinates
}
out << " },\n"; // End of contour
out << " {\n"; // start of holes
for (const auto& hole : expoly.holes) {
out << " {\n"; // Start of hole
for (const auto& point : hole.points) {
out << " {" << point.x() << ", " << point.y() << "},\n"; // Print point coordinates
}
out << " },\n"; // End of hole Polygon
}
out << " }\n"; // end of holes Polygons
out << " },\n"; // End of ExPolygon
}
out << "},\n";
}
}
int main(int argc, const char *argv[])
{
if (argc <= 1)
return -1;
std::string dirpath = argv[1];
print_arrange_items(dirpath, std::cout);
return 0;
}

View File

@@ -49,21 +49,12 @@ if (SLIC3R_GUI)
if (CMAKE_SYSTEM_NAME STREQUAL "Linux") if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
set (wxWidgets_CONFIG_OPTIONS "--toolkit=gtk${SLIC3R_GTK}") set (wxWidgets_CONFIG_OPTIONS "--toolkit=gtk${SLIC3R_GTK}")
if (SLIC3R_WX_STABLE)
find_package(wxWidgets 3.0 REQUIRED COMPONENTS base core adv html gl)
else ()
find_package(wxWidgets 3.1 QUIET COMPONENTS base core adv html gl)
if (NOT wxWidgets_FOUND)
message(FATAL_ERROR "\nCould not find wxWidgets 3.1.\n"
"Hint: On Linux you can set -DSLIC3R_WX_STABLE=1 to use wxWidgets 3.0\n")
endif ()
endif ()
include(${wxWidgets_USE_FILE})
else ()
find_package(wxWidgets 3.2 REQUIRED COMPONENTS html adv gl core base webview aui net media)
endif () endif ()
find_package(wxWidgets 3.2 MODULE REQUIRED COMPONENTS base core adv html gl aui net webview)
include(${wxWidgets_USE_FILE})
slic3r_remap_configs(wx::wxhtml wx::wxadv wx::wxgl wx::wxcore wx::wxbase RelWithDebInfo Release)
if(UNIX) if(UNIX)
message(STATUS "wx-config path: ${wxWidgets_CONFIG_EXECUTABLE}") message(STATUS "wx-config path: ${wxWidgets_CONFIG_EXECUTABLE}")

View File

@@ -40,6 +40,7 @@
#include "libslic3r/Geometry.hpp" #include "libslic3r/Geometry.hpp"
#include "libslic3r/GCode/PostProcessor.hpp" #include "libslic3r/GCode/PostProcessor.hpp"
#include "libslic3r/Model.hpp" #include "libslic3r/Model.hpp"
#include "libslic3r/CutUtils.hpp"
#include "libslic3r/ModelArrange.hpp" #include "libslic3r/ModelArrange.hpp"
#include "libslic3r/Platform.hpp" #include "libslic3r/Platform.hpp"
#include "libslic3r/Print.hpp" #include "libslic3r/Print.hpp"
@@ -313,10 +314,10 @@ int CLI::run(int argc, char **argv)
// Loop through transform options. // Loop through transform options.
bool user_center_specified = false; bool user_center_specified = false;
Points bed = get_bed_shape(m_print_config); arr2::ArrangeBed bed = arr2::to_arrange_bed(get_bed_shape(m_print_config));
ArrangeParams arrange_cfg; arr2::ArrangeSettings arrange_cfg;
arrange_cfg.min_obj_distance = scaled(min_object_distance(m_print_config)); arrange_cfg.set_distance_from_objects(min_object_distance(m_print_config));
for (auto const &opt_key : m_transforms) { for (auto const &opt_key : m_transforms) {
if (opt_key == "merge") { if (opt_key == "merge") {
Model m; Model m;
@@ -329,7 +330,7 @@ int CLI::run(int argc, char **argv)
if (this->has_print_action()) if (this->has_print_action())
arrange_objects(m, bed, arrange_cfg); arrange_objects(m, bed, arrange_cfg);
else else
arrange_objects(m, InfiniteBed{}, arrange_cfg); arrange_objects(m, arr2::InfiniteBed{}, arrange_cfg);
} }
m_models.clear(); m_models.clear();
m_models.emplace_back(std::move(m)); m_models.emplace_back(std::move(m));
@@ -437,8 +438,11 @@ int CLI::run(int argc, char **argv)
} }
#else #else
// model.objects.front()->cut(0, m_config.opt_float("cut"), ModelObjectCutAttribute::KeepLower | ModelObjectCutAttribute::KeepUpper | ModelObjectCutAttribute::FlipLower); // model.objects.front()->cut(0, m_config.opt_float("cut"), ModelObjectCutAttribute::KeepLower | ModelObjectCutAttribute::KeepUpper | ModelObjectCutAttribute::FlipLower);
model.objects.front()->cut(0, Geometry::translation_transform(m_config.opt_float("cut") * Vec3d::UnitZ()), Cut cut(model.objects.front(), 0, Geometry::translation_transform(m_config.opt_float("cut") * Vec3d::UnitZ()),
ModelObjectCutAttribute::KeepLower | ModelObjectCutAttribute::KeepUpper | ModelObjectCutAttribute::PlaceOnCutUpper); ModelObjectCutAttribute::KeepLower | ModelObjectCutAttribute::KeepUpper | ModelObjectCutAttribute::PlaceOnCutUpper);
auto cut_objects = cut.perform_with_plane();
for (ModelObject* obj : cut_objects)
model.add_object(*obj);
#endif #endif
model.delete_object(size_t(0)); model.delete_object(size_t(0));
} }
@@ -572,7 +576,7 @@ int CLI::run(int argc, char **argv)
if (! m_config.opt_bool("dont_arrange")) { if (! m_config.opt_bool("dont_arrange")) {
if (user_center_specified) { if (user_center_specified) {
Vec2d c = m_config.option<ConfigOptionPoint>("center")->value; Vec2d c = m_config.option<ConfigOptionPoint>("center")->value;
arrange_objects(model, InfiniteBed{scaled(c)}, arrange_cfg); arrange_objects(model, arr2::InfiniteBed{scaled(c)}, arrange_cfg);
} else } else
arrange_objects(model, bed, arrange_cfg); arrange_objects(model, bed, arrange_cfg);
} }

View File

@@ -165,6 +165,7 @@ struct indexed_triangle_set
std::vector<stl_vertex> vertices; std::vector<stl_vertex> vertices;
bool empty() const { return indices.empty() || vertices.empty(); } bool empty() const { return indices.empty() || vertices.empty(); }
bool operator==(const indexed_triangle_set& other) const { return this->indices == other.indices && this->vertices == other.vertices; }
}; };
extern bool stl_open(stl_file *stl, const char *file); extern bool stl_open(stl_file *stl, const char *file);

View File

@@ -86,7 +86,13 @@ inline IntPoint IntPoint2d(cInt x, cInt y)
inline cInt Round(double val) inline cInt Round(double val)
{ {
return static_cast<cInt>((val < 0) ? (val - 0.5) : (val + 0.5)); double v = val < 0 ? val - 0.5 : val + 0.5;
#if defined(CLIPPERLIB_INT32) && ! defined(NDEBUG)
static constexpr const double hi = 65536 * 16383;
if (v > hi || -v > hi)
throw clipperException("Coordinate outside allowed range");
#endif
return static_cast<cInt>(v);
} }
// Overriding the Eigen operators because we don't want to compare Z coordinate if IntPoint is 3 dimensional. // Overriding the Eigen operators because we don't want to compare Z coordinate if IntPoint is 3 dimensional.

View File

@@ -152,6 +152,7 @@ namespace ImGui
// const wchar_t MmuSegmentationMarker = 0x1F; // const wchar_t MmuSegmentationMarker = 0x1F;
const wchar_t PlugMarker = 0x1C; const wchar_t PlugMarker = 0x1C;
const wchar_t DowelMarker = 0x1D; const wchar_t DowelMarker = 0x1D;
const wchar_t SnapMarker = 0x1E;
// Do not forget use following letters only in wstring // Do not forget use following letters only in wstring
const wchar_t DocumentationButton = 0x2600; const wchar_t DocumentationButton = 0x2600;
const wchar_t DocumentationHoverButton = 0x2601; const wchar_t DocumentationHoverButton = 0x2601;

View File

@@ -18,11 +18,10 @@ set(LIBNEST2D_SRCFILES
include/libnest2d/optimizers/nlopt/simplex.hpp include/libnest2d/optimizers/nlopt/simplex.hpp
include/libnest2d/optimizers/nlopt/subplex.hpp include/libnest2d/optimizers/nlopt/subplex.hpp
include/libnest2d/optimizers/nlopt/genetic.hpp include/libnest2d/optimizers/nlopt/genetic.hpp
src/libnest2d.cpp
) )
add_library(libnest2d STATIC ${LIBNEST2D_SRCFILES}) add_library(libnest2d INTERFACE)
target_include_directories(libnest2d PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include) target_include_directories(libnest2d INTERFACE ${CMAKE_CURRENT_LIST_DIR}/include)
target_link_libraries(libnest2d PUBLIC NLopt::nlopt TBB::tbb TBB::tbbmalloc Boost::boost libslic3r) target_link_libraries(libnest2d INTERFACE NLopt::nlopt TBB::tbb TBB::tbbmalloc Boost::boost libslic3r)
target_compile_definitions(libnest2d PUBLIC LIBNEST2D_THREADING_tbb LIBNEST2D_STATIC LIBNEST2D_OPTIMIZER_nlopt LIBNEST2D_GEOMETRIES_libslic3r) target_compile_definitions(libnest2d INTERFACE LIBNEST2D_THREADING_tbb LIBNEST2D_STATIC LIBNEST2D_OPTIMIZER_nlopt LIBNEST2D_GEOMETRIES_libslic3r)

View File

@@ -243,6 +243,12 @@ inline void translate(Slic3r::ExPolygon& sh, const Slic3r::Point& offs)
sh.translate(offs); sh.translate(offs);
} }
template<>
inline void translate(Slic3r::Polygon& sh, const Slic3r::Point& offs)
{
sh.translate(offs);
}
#define DISABLE_BOOST_ROTATE #define DISABLE_BOOST_ROTATE
template<> template<>
inline void rotate(Slic3r::ExPolygon& sh, const Radians& rads) inline void rotate(Slic3r::ExPolygon& sh, const Radians& rads)
@@ -250,6 +256,12 @@ inline void rotate(Slic3r::ExPolygon& sh, const Radians& rads)
sh.rotate(rads); sh.rotate(rads);
} }
template<>
inline void rotate(Slic3r::Polygon& sh, const Radians& rads)
{
sh.rotate(rads);
}
} // namespace shapelike } // namespace shapelike
namespace nfp { namespace nfp {

View File

@@ -15,12 +15,19 @@ namespace Slic3r {
// The stored pointer is not checked for being null when dereferenced. // The stored pointer is not checked for being null when dereferenced.
// //
// This is a movable only object due to the fact that it can possibly hold // This is a movable only object due to the fact that it can possibly hold
// a unique_ptr which a non-copy. // a unique_ptr which can only be moved.
//
// Drawbacks:
// No custom deleters are supported when storing a unique_ptr, but overloading
// std::default_delete for a particular type could be a workaround
//
// raw array types are problematic, since std::default_delete also does not
// support them well.
template<class T> template<class T>
class AnyPtr { class AnyPtr {
enum { RawPtr, UPtr, ShPtr, WkPtr }; enum { RawPtr, UPtr, ShPtr };
boost::variant<T*, std::unique_ptr<T>, std::shared_ptr<T>, std::weak_ptr<T>> ptr; boost::variant<T*, std::unique_ptr<T>, std::shared_ptr<T>> ptr;
template<class Self> static T *get_ptr(Self &&s) template<class Self> static T *get_ptr(Self &&s)
{ {
@@ -28,91 +35,119 @@ class AnyPtr {
case RawPtr: return boost::get<T *>(s.ptr); case RawPtr: return boost::get<T *>(s.ptr);
case UPtr: return boost::get<std::unique_ptr<T>>(s.ptr).get(); case UPtr: return boost::get<std::unique_ptr<T>>(s.ptr).get();
case ShPtr: return boost::get<std::shared_ptr<T>>(s.ptr).get(); case ShPtr: return boost::get<std::shared_ptr<T>>(s.ptr).get();
case WkPtr: {
auto shptr = boost::get<std::weak_ptr<T>>(s.ptr).lock();
return shptr.get();
}
} }
return nullptr; return nullptr;
} }
public: template<class TT> friend class AnyPtr;
template<class TT = T, class = std::enable_if_t<std::is_convertible_v<TT*, T*>>>
AnyPtr(TT *p = nullptr) : ptr{p}
{}
template<class TT, class = std::enable_if_t<std::is_convertible_v<TT*, T*>>>
AnyPtr(std::unique_ptr<TT> p) : ptr{std::unique_ptr<T>(std::move(p))}
{}
template<class TT, class = std::enable_if_t<std::is_convertible_v<TT*, T*>>>
AnyPtr(std::shared_ptr<TT> p) : ptr{std::shared_ptr<T>(std::move(p))}
{}
template<class TT, class = std::enable_if_t<std::is_convertible_v<TT*, T*>>>
AnyPtr(std::weak_ptr<TT> p) : ptr{std::weak_ptr<T>(std::move(p))}
{}
~AnyPtr() = default; template<class TT>
using SimilarPtrOnly = std::enable_if_t<std::is_convertible_v<TT*, T*>>;
public:
AnyPtr() noexcept = default;
AnyPtr(T *p) noexcept: ptr{p} {}
AnyPtr(std::nullptr_t) noexcept {};
template<class TT, class = SimilarPtrOnly<TT>>
AnyPtr(TT *p) noexcept : ptr{p}
{}
template<class TT = T, class = SimilarPtrOnly<TT>>
AnyPtr(std::unique_ptr<TT> p) noexcept : ptr{std::unique_ptr<T>(std::move(p))}
{}
template<class TT = T, class = SimilarPtrOnly<TT>>
AnyPtr(std::shared_ptr<TT> p) noexcept : ptr{std::shared_ptr<T>(std::move(p))}
{}
AnyPtr(AnyPtr &&other) noexcept : ptr{std::move(other.ptr)} {} AnyPtr(AnyPtr &&other) noexcept : ptr{std::move(other.ptr)} {}
template<class TT, class = SimilarPtrOnly<TT>>
AnyPtr(AnyPtr<TT> &&other) noexcept
{
this->operator=(std::move(other));
}
AnyPtr(const AnyPtr &other) = delete; AnyPtr(const AnyPtr &other) = delete;
AnyPtr &operator=(AnyPtr &&other) noexcept { ptr = std::move(other.ptr); return *this; } AnyPtr &operator=(AnyPtr &&other) noexcept
{
ptr = std::move(other.ptr);
return *this;
}
AnyPtr &operator=(const AnyPtr &other) = delete; AnyPtr &operator=(const AnyPtr &other) = delete;
template<class TT, class = std::enable_if_t<std::is_convertible_v<TT*, T*>>> template<class TT, class = SimilarPtrOnly<TT>>
AnyPtr &operator=(TT *p) { ptr = p; return *this; } AnyPtr& operator=(AnyPtr<TT> &&other) noexcept
{
switch (other.ptr.which()) {
case RawPtr: *this = boost::get<TT *>(other.ptr); break;
case UPtr: *this = std::move(boost::get<std::unique_ptr<TT>>(other.ptr)); break;
case ShPtr: *this = std::move(boost::get<std::shared_ptr<TT>>(other.ptr)); break;
}
template<class TT, class = std::enable_if_t<std::is_convertible_v<TT*, T*>>> return *this;
AnyPtr &operator=(std::unique_ptr<TT> p) { ptr = std::move(p); return *this; } }
template<class TT, class = std::enable_if_t<std::is_convertible_v<TT*, T*>>> template<class TT, class = SimilarPtrOnly<TT>>
AnyPtr &operator=(std::shared_ptr<TT> p) { ptr = p; return *this; } AnyPtr &operator=(TT *p) noexcept
{
ptr = static_cast<T *>(p);
return *this;
}
template<class TT, class = std::enable_if_t<std::is_convertible_v<TT*, T*>>> template<class TT, class = SimilarPtrOnly<TT>>
AnyPtr &operator=(std::weak_ptr<TT> p) { ptr = std::move(p); return *this; } AnyPtr &operator=(std::unique_ptr<TT> p) noexcept
{
ptr = std::unique_ptr<T>(std::move(p));
return *this;
}
const T &operator*() const { return *get_ptr(*this); } template<class TT, class = SimilarPtrOnly<TT>>
T &operator*() { return *get_ptr(*this); } AnyPtr &operator=(std::shared_ptr<TT> p) noexcept
{
ptr = std::shared_ptr<T>(std::move(p));
return *this;
}
T *operator->() { return get_ptr(*this); } const T &operator*() const noexcept { return *get_ptr(*this); }
const T *operator->() const { return get_ptr(*this); } T &operator*() noexcept { return *get_ptr(*this); }
T *get() { return get_ptr(*this); } T *operator->() noexcept { return get_ptr(*this); }
const T *get() const { return get_ptr(*this); } const T *operator->() const noexcept { return get_ptr(*this); }
operator bool() const T *get() noexcept { return get_ptr(*this); }
const T *get() const noexcept { return get_ptr(*this); }
operator bool() const noexcept
{ {
switch (ptr.which()) { switch (ptr.which()) {
case RawPtr: return bool(boost::get<T *>(ptr)); case RawPtr: return bool(boost::get<T *>(ptr));
case UPtr: return bool(boost::get<std::unique_ptr<T>>(ptr)); case UPtr: return bool(boost::get<std::unique_ptr<T>>(ptr));
case ShPtr: return bool(boost::get<std::shared_ptr<T>>(ptr)); case ShPtr: return bool(boost::get<std::shared_ptr<T>>(ptr));
case WkPtr: {
auto shptr = boost::get<std::weak_ptr<T>>(ptr).lock();
return bool(shptr);
}
} }
return false; return false;
} }
// If the stored pointer is a shared or weak pointer, returns a reference // If the stored pointer is a shared pointer, returns a reference
// counted copy. Empty shared pointer is returned otherwise. // counted copy. Empty shared pointer is returned otherwise.
std::shared_ptr<T> get_shared_cpy() const std::shared_ptr<T> get_shared_cpy() const noexcept
{ {
std::shared_ptr<T> ret; std::shared_ptr<T> ret;
switch (ptr.which()) { if (ptr.which() == ShPtr)
case ShPtr: ret = boost::get<std::shared_ptr<T>>(ptr); break; ret = boost::get<std::shared_ptr<T>>(ptr);
case WkPtr: ret = boost::get<std::weak_ptr<T>>(ptr).lock(); break;
default:
;
}
return ret; return ret;
} }
// If the underlying pointer is unique, convert to shared pointer // If the underlying pointer is unique, convert to shared pointer
void convert_unique_to_shared() void convert_unique_to_shared() noexcept
{ {
if (ptr.which() == UPtr) if (ptr.which() == UPtr)
ptr = std::shared_ptr<T>{std::move(boost::get<std::unique_ptr<T>>(ptr))}; ptr = std::shared_ptr<T>{std::move(boost::get<std::unique_ptr<T>>(ptr))};
@@ -125,6 +160,7 @@ public:
} }
}; };
} // namespace Slic3r } // namespace Slic3r
#endif // ANYPTR_HPP #endif // ANYPTR_HPP

View File

@@ -12,6 +12,7 @@
#include <ClipperUtils.hpp> #include <ClipperUtils.hpp>
#include <boost/geometry/index/rtree.hpp> #include <boost/geometry/index/rtree.hpp>
#include <boost/container/small_vector.hpp>
#if defined(_MSC_VER) && defined(__clang__) #if defined(_MSC_VER) && defined(__clang__)
#define BOOST_NO_CXX17_HDR_STRING_VIEW #define BOOST_NO_CXX17_HDR_STRING_VIEW
@@ -258,7 +259,7 @@ protected:
auto& index = isBig(item.area()) ? spatindex : smalls_spatindex; auto& index = isBig(item.area()) ? spatindex : smalls_spatindex;
// Query the spatial index for the neighbors // Query the spatial index for the neighbors
std::vector<SpatElement> result; boost::container::small_vector<SpatElement, 100> result;
result.reserve(index.size()); result.reserve(index.size());
index.query(query, std::back_inserter(result)); index.query(query, std::back_inserter(result));

View File

@@ -0,0 +1,269 @@
#ifndef ARRANGE2_HPP
#define ARRANGE2_HPP
#include "Scene.hpp"
#include "Items/MutableItemTraits.hpp"
#include "Core/NFP/NFPArrangeItemTraits.hpp"
#include "libslic3r/MinAreaBoundingBox.hpp"
namespace Slic3r { namespace arr2 {
template<class ArrItem> class Arranger
{
public:
class Ctl : public ArrangeTaskCtl {
public:
virtual void on_packed(ArrItem &item) {};
};
virtual ~Arranger() = default;
virtual void arrange(std::vector<ArrItem> &items,
const std::vector<ArrItem> &fixed,
const ExtendedBed &bed,
Ctl &ctl) = 0;
void arrange(std::vector<ArrItem> &items,
const std::vector<ArrItem> &fixed,
const ExtendedBed &bed,
ArrangeTaskCtl &ctl);
void arrange(std::vector<ArrItem> &items,
const std::vector<ArrItem> &fixed,
const ExtendedBed &bed,
Ctl &&ctl)
{
arrange(items, fixed, bed, ctl);
}
void arrange(std::vector<ArrItem> &items,
const std::vector<ArrItem> &fixed,
const ExtendedBed &bed,
ArrangeTaskCtl &&ctl)
{
arrange(items, fixed, bed, ctl);
}
static std::unique_ptr<Arranger> create(const ArrangeSettingsView &settings);
};
template<class ArrItem> using ArrangerCtl = typename Arranger<ArrItem>::Ctl;
template<class ArrItem>
class DefaultArrangerCtl : public Arranger<ArrItem>::Ctl {
ArrangeTaskCtl *taskctl = nullptr;
public:
DefaultArrangerCtl() = default;
explicit DefaultArrangerCtl(ArrangeTaskBase::Ctl &ctl) : taskctl{&ctl} {}
void update_status(int st) override
{
if (taskctl)
taskctl->update_status(st);
}
bool was_canceled() const override
{
if (taskctl)
return taskctl->was_canceled();
return false;
}
};
template<class ArrItem>
void Arranger<ArrItem>::arrange(std::vector<ArrItem> &items,
const std::vector<ArrItem> &fixed,
const ExtendedBed &bed,
ArrangeTaskCtl &ctl)
{
arrange(items, fixed, bed, DefaultArrangerCtl<ArrItem>{ctl});
}
class EmptyItemOutlineError: public std::exception {
static constexpr const char *Msg = "No outline can be derived for object";
public:
const char* what() const noexcept override { return Msg; }
};
template<class ArrItem> class ArrangeableToItemConverter
{
public:
virtual ~ArrangeableToItemConverter() = default;
// May throw EmptyItemOutlineError
virtual ArrItem convert(const Arrangeable &arrbl, coord_t offs = 0) const = 0;
// Returns the extent of simplification that the converter utilizes when
// creating arrange items. Zero shall mean no simplification at all.
virtual coord_t simplification_tolerance() const { return 0; }
static std::unique_ptr<ArrangeableToItemConverter> create(
ArrangeSettingsView::GeometryHandling geometry_handling,
coord_t safety_d);
static std::unique_ptr<ArrangeableToItemConverter> create(
const Scene &sc)
{
return create(sc.settings().get_geometry_handling(),
scaled(sc.settings().get_distance_from_objects()));
}
};
template<class DStore, class = WritableDataStoreOnly<DStore>>
class AnyWritableDataStore: public AnyWritable
{
DStore &dstore;
public:
AnyWritableDataStore(DStore &store): dstore{store} {}
void write(std::string_view key, std::any d) override
{
set_data(dstore, std::string{key}, std::move(d));
}
};
template<class ArrItem>
class BasicItemConverter : public ArrangeableToItemConverter<ArrItem>
{
coord_t m_safety_d;
coord_t m_simplify_tol;
public:
BasicItemConverter(coord_t safety_d = 0, coord_t simpl_tol = 0)
: m_safety_d{safety_d}, m_simplify_tol{simpl_tol}
{}
coord_t safety_dist() const noexcept { return m_safety_d; }
coord_t simplification_tolerance() const override
{
return m_simplify_tol;
}
};
template<class ArrItem>
class ConvexItemConverter : public BasicItemConverter<ArrItem>
{
public:
using BasicItemConverter<ArrItem>::BasicItemConverter;
ArrItem convert(const Arrangeable &arrbl, coord_t offs) const override;
};
template<class ArrItem>
class AdvancedItemConverter : public BasicItemConverter<ArrItem>
{
protected:
virtual ArrItem get_arritem(const Arrangeable &arrbl, coord_t eps) const;
public:
using BasicItemConverter<ArrItem>::BasicItemConverter;
ArrItem convert(const Arrangeable &arrbl, coord_t offs) const override;
};
template<class ArrItem>
class BalancedItemConverter : public AdvancedItemConverter<ArrItem>
{
protected:
ArrItem get_arritem(const Arrangeable &arrbl, coord_t offs) const override;
public:
using AdvancedItemConverter<ArrItem>::AdvancedItemConverter;
};
template<class ArrItem, class En = void> struct ImbueableItemTraits_
{
static constexpr const char *Key = "object_id";
static void imbue_id(ArrItem &itm, const ObjectID &id)
{
set_arbitrary_data(itm, Key, id);
}
static std::optional<ObjectID> retrieve_id(const ArrItem &itm)
{
std::optional<ObjectID> ret;
auto idptr = get_data<const ObjectID>(itm, Key);
if (idptr)
ret = *idptr;
return ret;
}
};
template<class ArrItem>
using ImbueableItemTraits = ImbueableItemTraits_<StripCVRef<ArrItem>>;
template<class ArrItem>
void imbue_id(ArrItem &itm, const ObjectID &id)
{
ImbueableItemTraits<ArrItem>::imbue_id(itm, id);
}
template<class ArrItem>
std::optional<ObjectID> retrieve_id(const ArrItem &itm)
{
return ImbueableItemTraits<ArrItem>::retrieve_id(itm);
}
template<class ArrItem>
bool apply_arrangeitem(const ArrItem &itm, ArrangeableModel &mdl)
{
bool ret = false;
if (auto id = retrieve_id(itm)) {
mdl.visit_arrangeable(*id, [&itm, &ret](Arrangeable &arrbl) {
if ((ret = arrbl.assign_bed(get_bed_index(itm))))
arrbl.transform(unscaled(get_translation(itm)), get_rotation(itm));
});
}
return ret;
}
template<class ArrItem>
double get_min_area_bounding_box_rotation(const ArrItem &itm)
{
return MinAreaBoundigBox{envelope_convex_hull(itm),
MinAreaBoundigBox::pcConvex}
.angle_to_X();
}
template<class ArrItem>
double get_fit_into_bed_rotation(const ArrItem &itm, const RectangleBed &bed)
{
double ret = 0.;
auto bbsz = envelope_bounding_box(itm).size();
auto binbb = bounding_box(bed);
auto binbbsz = binbb.size();
if (bbsz.x() >= binbbsz.x() || bbsz.y() >= binbbsz.y())
ret = fit_into_box_rotation(envelope_convex_hull(itm), binbb);
return ret;
}
template<class ArrItem>
auto get_corrected_bed(const ExtendedBed &bed,
const ArrangeableToItemConverter<ArrItem> &converter)
{
auto bedcpy = bed;
visit_bed([tol = -converter.simplification_tolerance()](auto &rawbed) {
rawbed = offset(rawbed, tol);
}, bedcpy);
return bedcpy;
}
}} // namespace Slic3r::arr2
#endif // ARRANGE2_HPP

View File

@@ -0,0 +1,498 @@
#ifndef ARRANGEIMPL_HPP
#define ARRANGEIMPL_HPP
#include <random>
#include <map>
#include "Arrange.hpp"
#include "Core/ArrangeBase.hpp"
#include "Core/ArrangeFirstFit.hpp"
#include "Core/NFP/PackStrategyNFP.hpp"
#include "Core/NFP/Kernels/TMArrangeKernel.hpp"
#include "Core/NFP/Kernels/GravityKernel.hpp"
#include "Core/NFP/RectangleOverfitPackingStrategy.hpp"
#include "Core/Beds.hpp"
#include "Items/MutableItemTraits.hpp"
#include "SegmentedRectangleBed.hpp"
#include "libslic3r/Execution/ExecutionTBB.hpp"
#include "libslic3r/Geometry/ConvexHull.hpp"
#ifndef NDEBUG
#include "Core/NFP/Kernels/SVGDebugOutputKernelWrapper.hpp"
#endif
namespace Slic3r { namespace arr2 {
// arrange overload for SegmentedRectangleBed which is exactly what is used
// by XL printers.
template<class It,
class ConstIt,
class SelectionStrategy,
class PackStrategy, class...SBedArgs>
void arrange(SelectionStrategy &&selstrategy,
PackStrategy &&packingstrategy,
const Range<It> &items,
const Range<ConstIt> &fixed,
const SegmentedRectangleBed<SBedArgs...> &bed)
{
// Dispatch:
arrange(std::forward<SelectionStrategy>(selstrategy),
std::forward<PackStrategy>(packingstrategy), items, fixed,
RectangleBed{bed.bb}, SelStrategyTag<SelectionStrategy>{});
std::vector<int> bed_indices = get_bed_indices(items, fixed);
std::map<int, BoundingBox> pilebb;
std::map<int, bool> bed_occupied;
for (auto &itm : items) {
auto bedidx = get_bed_index(itm);
if (bedidx >= 0) {
pilebb[bedidx].merge(fixed_bounding_box(itm));
if (is_wipe_tower(itm))
bed_occupied[bedidx] = true;
}
}
for (auto &fxitm : fixed) {
auto bedidx = get_bed_index(fxitm);
if (bedidx >= 0)
bed_occupied[bedidx] = true;
}
auto bedbb = bounding_box(bed);
auto piecesz = unscaled(bedbb).size();
piecesz.x() /= bed.segments_x();
piecesz.y() /= bed.segments_y();
using Pivots = RectPivots;
Pivots pivot = bed.alignment();
for (int bedidx : bed_indices) {
if (auto occup_it = bed_occupied.find(bedidx);
occup_it != bed_occupied.end() && occup_it->second)
continue;
BoundingBox bb;
auto pilesz = unscaled(pilebb[bedidx]).size();
bb.max.x() = scaled(std::ceil(pilesz.x() / piecesz.x()) * piecesz.x());
bb.max.y() = scaled(std::ceil(pilesz.y() / piecesz.y()) * piecesz.y());
switch (pivot) {
case Pivots::BottomLeft:
bb.translate(bedbb.min - bb.min);
break;
case Pivots::TopRight:
bb.translate(bedbb.max - bb.max);
break;
case Pivots::BottomRight: {
Point bedref{bedbb.max.x(), bedbb.min.y()};
Point bbref {bb.max.x(), bb.min.y()};
bb.translate(bedref - bbref);
break;
}
case Pivots::TopLeft: {
Point bedref{bedbb.min.x(), bedbb.max.y()};
Point bbref {bb.min.x(), bb.max.y()};
bb.translate(bedref - bbref);
break;
}
case Pivots::Center: {
bb.translate(bedbb.center() - bb.center());
break;
}
default:
;
}
Vec2crd d = bb.center() - pilebb[bedidx].center();
auto pilebbx = pilebb[bedidx];
pilebbx.translate(d);
Point corr{0, 0};
corr.x() = -std::min(0, pilebbx.min.x() - bedbb.min.x())
-std::max(0, pilebbx.max.x() - bedbb.max.x());
corr.y() = -std::min(0, pilebbx.min.y() - bedbb.min.y())
-std::max(0, pilebbx.max.y() - bedbb.max.y());
d += corr;
for (auto &itm : items)
if (get_bed_index(itm) == static_cast<int>(bedidx) && !is_wipe_tower(itm))
translate(itm, d);
}
}
using VariantKernel =
boost::variant<TMArrangeKernel, GravityKernel>;
template<> struct KernelTraits_<VariantKernel> {
template<class ArrItem>
static double placement_fitness(const VariantKernel &kernel,
const ArrItem &itm,
const Vec2crd &transl)
{
double ret = NaNd;
boost::apply_visitor(
[&](auto &k) { ret = k.placement_fitness(itm, transl); }, kernel);
return ret;
}
template<class ArrItem, class Bed, class Ctx, class RemIt>
static bool on_start_packing(VariantKernel &kernel,
ArrItem &itm,
const Bed &bed,
const Ctx &packing_context,
const Range<RemIt> &remaining_items)
{
bool ret = false;
boost::apply_visitor([&](auto &k) {
ret = k.on_start_packing(itm, bed, packing_context, remaining_items);
}, kernel);
return ret;
}
template<class ArrItem>
static bool on_item_packed(VariantKernel &kernel, ArrItem &itm)
{
bool ret = false;
boost::apply_visitor([&](auto &k) { ret = k.on_item_packed(itm); },
kernel);
return ret;
}
};
template<class ArrItem>
struct firstfit::ItemArrangedVisitor<ArrItem, DataStoreOnly<ArrItem>> {
template<class Bed, class PIt, class RIt>
static void on_arranged(ArrItem &itm,
const Bed &bed,
const Range<PIt> &packed,
const Range<RIt> &remaining)
{
using OnArrangeCb = std::function<void(StripCVRef<ArrItem> &)>;
auto cb = get_data<OnArrangeCb>(itm, "on_arranged");
if (cb) {
(*cb)(itm);
}
}
};
inline RectPivots xlpivots_to_rect_pivots(ArrangeSettingsView::XLPivots xlpivot)
{
if (xlpivot == arr2::ArrangeSettingsView::xlpRandom) {
// means it should be random
std::random_device rd{};
std::mt19937 rng(rd());
std::uniform_int_distribution<std::mt19937::result_type>
dist(0, arr2::ArrangeSettingsView::xlpRandom - 1);
xlpivot = static_cast<ArrangeSettingsView::XLPivots>(dist(rng));
}
RectPivots rectpivot = RectPivots::Center;
switch(xlpivot) {
case arr2::ArrangeSettingsView::xlpCenter: rectpivot = RectPivots::Center; break;
case arr2::ArrangeSettingsView::xlpFrontLeft: rectpivot = RectPivots::BottomLeft; break;
case arr2::ArrangeSettingsView::xlpFrontRight: rectpivot = RectPivots::BottomRight; break;
case arr2::ArrangeSettingsView::xlpRearLeft: rectpivot = RectPivots::TopLeft; break;
case arr2::ArrangeSettingsView::xlpRearRight: rectpivot = RectPivots::TopRight; break;
default:
;
}
return rectpivot;
}
template<class It, class Bed>
void fill_rotations(const Range<It> &items,
const Bed &bed,
const ArrangeSettingsView &settings)
{
if (!settings.is_rotation_enabled())
return;
for (auto &itm : items) {
if (is_wipe_tower(itm)) // Rotating the wipe tower is currently problematic
continue;
// Use the minimum bounding box rotation as a starting point.
auto minbbr = get_min_area_bounding_box_rotation(itm);
std::vector<double> rotations =
{minbbr,
minbbr + PI / 4., minbbr + PI / 2.,
minbbr + PI, minbbr + 3 * PI / 4.};
// Add the original rotation of the item if minbbr
// is not already the original rotation (zero)
if (std::abs(minbbr) > 0.)
rotations.emplace_back(0.);
// Also try to find the rotation that fits the item
// into a rectangular bed, given that it cannot fit,
// and there exists a rotation which can fit.
if constexpr (std::is_convertible_v<Bed, RectangleBed>) {
double fitbrot = get_fit_into_bed_rotation(itm, bed);
if (std::abs(fitbrot) > 0.)
rotations.emplace_back(fitbrot);
}
set_allowed_rotations(itm, rotations);
}
}
// An arranger put together to fulfill all the requirements based
// on the supplied ArrangeSettings
template<class ArrItem>
class DefaultArranger: public Arranger<ArrItem> {
ArrangeSettings m_settings;
static constexpr auto Accuracy = 1.;
template<class It, class FixIt, class Bed>
void arrange_(
const Range<It> &items,
const Range<FixIt> &fixed,
const Bed &bed,
ArrangerCtl<ArrItem> &ctl)
{
auto cmpfn = [](const auto &itm1, const auto &itm2) {
int pa = get_priority(itm1);
int pb = get_priority(itm2);
return pa == pb ? area(envelope_convex_hull(itm1)) > area(envelope_convex_hull(itm2)) :
pa > pb;
};
auto on_arranged = [&ctl](auto &itm, auto &bed, auto &ctx, auto &rem) {
ctl.update_status(rem.size());
ctl.on_packed(itm);
firstfit::DefaultOnArrangedFn{}(itm, bed, ctx, rem);
};
auto stop_cond = [&ctl] { return ctl.was_canceled(); };
firstfit::SelectionStrategy sel{cmpfn, on_arranged, stop_cond};
constexpr auto ep = ex_tbb;
VariantKernel basekernel;
switch (m_settings.get_arrange_strategy()) {
default:
[[fallthrough]];
case ArrangeSettingsView::asAuto:
if constexpr (std::is_convertible_v<Bed, CircleBed>){
basekernel = GravityKernel{};
} else {
basekernel = TMArrangeKernel{items.size(), area(bed)};
}
break;
case ArrangeSettingsView::asPullToCenter:
basekernel = GravityKernel{};
break;
}
#ifndef NDEBUG
SVGDebugOutputKernelWrapper<VariantKernel> kernel{bounding_box(bed), basekernel};
#else
auto & kernel = basekernel;
#endif
fill_rotations(items, bed, m_settings);
bool with_wipe_tower = std::any_of(items.begin(), items.end(),
[](auto &itm) {
return is_wipe_tower(itm);
});
// With rectange bed, and no fixed items, let's use an infinite bed
// with RectangleOverfitKernelWrapper. It produces better results than
// a pure RectangleBed with inner-fit polygon calculation.
if (!with_wipe_tower &&
m_settings.get_arrange_strategy() == ArrangeSettingsView::asAuto &&
std::is_convertible_v<Bed, RectangleBed>) {
PackStrategyNFP base_strategy{std::move(kernel), ep, Accuracy, stop_cond};
RectangleOverfitPackingStrategy final_strategy{std::move(base_strategy)};
arr2::arrange(sel, final_strategy, items, fixed, bed);
} else {
PackStrategyNFP ps{std::move(kernel), ep, Accuracy, stop_cond};
arr2::arrange(sel, ps, items, fixed, bed);
}
}
public:
explicit DefaultArranger(const ArrangeSettingsView &settings)
{
m_settings.set_from(settings);
}
void arrange(
std::vector<ArrItem> &items,
const std::vector<ArrItem> &fixed,
const ExtendedBed &bed,
ArrangerCtl<ArrItem> &ctl) override
{
visit_bed([this, &items, &fixed, &ctl](auto rawbed) {
if constexpr (IsSegmentedBed<decltype(rawbed)>)
rawbed.pivot = xlpivots_to_rect_pivots(
m_settings.get_xl_alignment());
arrange_(range(items), crange(fixed), rawbed, ctl);
}, bed);
}
};
template<class ArrItem>
std::unique_ptr<Arranger<ArrItem>> Arranger<ArrItem>::create(
const ArrangeSettingsView &settings)
{
// Currently all that is needed is handled by DefaultArranger
return std::make_unique<DefaultArranger<ArrItem>>(settings);
}
template<class ArrItem>
ArrItem ConvexItemConverter<ArrItem>::convert(const Arrangeable &arrbl,
coord_t offs) const
{
auto bed_index = arrbl.get_bed_index();
Polygon outline = arrbl.convex_outline();
if (outline.empty())
throw EmptyItemOutlineError{};
Polygon envelope = arrbl.convex_envelope();
coord_t infl = offs + coord_t(std::ceil(this->safety_dist() / 2.));
if (infl != 0) {
outline = Geometry::convex_hull(offset(outline, infl));
if (! envelope.empty())
envelope = Geometry::convex_hull(offset(envelope, infl));
}
ArrItem ret;
set_convex_shape(ret, outline);
if (! envelope.empty())
set_convex_envelope(ret, envelope);
set_bed_index(ret, bed_index);
set_priority(ret, arrbl.priority());
imbue_id(ret, arrbl.id());
if constexpr (IsWritableDataStore<ArrItem>)
arrbl.imbue_data(AnyWritableDataStore{ret});
return ret;
}
template<class ArrItem>
ArrItem AdvancedItemConverter<ArrItem>::convert(const Arrangeable &arrbl,
coord_t offs) const
{
auto bed_index = arrbl.get_bed_index();
ArrItem ret = get_arritem(arrbl, offs);
set_bed_index(ret, bed_index);
set_priority(ret, arrbl.priority());
imbue_id(ret, arrbl.id());
if constexpr (IsWritableDataStore<ArrItem>)
arrbl.imbue_data(AnyWritableDataStore{ret});
return ret;
}
template<class ArrItem>
ArrItem AdvancedItemConverter<ArrItem>::get_arritem(const Arrangeable &arrbl,
coord_t offs) const
{
coord_t infl = offs + coord_t(std::ceil(this->safety_dist() / 2.));
auto outline = arrbl.full_outline();
if (outline.empty())
throw EmptyItemOutlineError{};
auto envelope = arrbl.full_envelope();
if (infl != 0) {
outline = offset_ex(outline, infl);
if (! envelope.empty())
envelope = offset_ex(envelope, infl);
}
auto simpl_tol = static_cast<double>(this->simplification_tolerance());
if (simpl_tol > 0)
{
outline = expolygons_simplify(outline, simpl_tol);
if (!envelope.empty())
envelope = expolygons_simplify(envelope, simpl_tol);
}
ArrItem ret;
set_shape(ret, outline);
if (! envelope.empty())
set_envelope(ret, envelope);
return ret;
}
template<class ArrItem>
ArrItem BalancedItemConverter<ArrItem>::get_arritem(const Arrangeable &arrbl,
coord_t offs) const
{
ArrItem ret = AdvancedItemConverter<ArrItem>::get_arritem(arrbl, offs);
set_convex_envelope(ret, envelope_convex_hull(ret));
return ret;
}
template<class ArrItem>
std::unique_ptr<ArrangeableToItemConverter<ArrItem>>
ArrangeableToItemConverter<ArrItem>::create(
ArrangeSettingsView::GeometryHandling gh,
coord_t safety_d)
{
std::unique_ptr<ArrangeableToItemConverter<ArrItem>> ret;
constexpr coord_t SimplifyTol = scaled(.2);
switch(gh) {
case arr2::ArrangeSettingsView::ghConvex:
ret = std::make_unique<ConvexItemConverter<ArrItem>>(safety_d);
break;
case arr2::ArrangeSettingsView::ghBalanced:
ret = std::make_unique<BalancedItemConverter<ArrItem>>(safety_d, SimplifyTol);
break;
case arr2::ArrangeSettingsView::ghAdvanced:
ret = std::make_unique<AdvancedItemConverter<ArrItem>>(safety_d, SimplifyTol);
break;
default:
;
}
return ret;
}
}} // namespace Slic3r::arr2
#endif // ARRANGEIMPL_HPP

View File

@@ -0,0 +1,198 @@
#include "ArrangeSettingsDb_AppCfg.hpp"
namespace Slic3r {
ArrangeSettingsDb_AppCfg::ArrangeSettingsDb_AppCfg(AppConfig *appcfg) : m_appcfg{appcfg}
{
m_settings_fff.postfix = "_fff";
m_settings_fff_seq.postfix = "_fff_seq_print";
m_settings_sla.postfix = "_sla";
std::string dist_fff_str =
m_appcfg->get("arrange", "min_object_distance_fff");
std::string dist_bed_fff_str =
m_appcfg->get("arrange", "min_bed_distance_fff");
std::string dist_fff_seq_print_str =
m_appcfg->get("arrange", "min_object_distance_fff_seq_print");
std::string dist_bed_fff_seq_print_str =
m_appcfg->get("arrange", "min_bed_distance_fff_seq_print");
std::string dist_sla_str =
m_appcfg->get("arrange", "min_object_distance_sla");
std::string dist_bed_sla_str =
m_appcfg->get("arrange", "min_bed_distance_sla");
std::string en_rot_fff_str =
m_appcfg->get("arrange", "enable_rotation_fff");
std::string en_rot_fff_seqp_str =
m_appcfg->get("arrange", "enable_rotation_fff_seq_print");
std::string en_rot_sla_str =
m_appcfg->get("arrange", "enable_rotation_sla");
// std::string alignment_fff_str =
// m_appcfg->get("arrange", "alignment_fff");
// std::string alignment_fff_seqp_str =
// m_appcfg->get("arrange", "alignment_fff_seq_pring");
// std::string alignment_sla_str =
// m_appcfg->get("arrange", "alignment_sla");
// Override default alignment and save save/load it to a temporary slot "alignment_xl"
std::string alignment_xl_str =
m_appcfg->get("arrange", "alignment_xl");
std::string geom_handling_str =
m_appcfg->get("arrange", "geometry_handling");
std::string strategy_str =
m_appcfg->get("arrange", "arrange_strategy");
if (!dist_fff_str.empty())
m_settings_fff.vals.d_obj = string_to_float_decimal_point(dist_fff_str);
if (!dist_bed_fff_str.empty())
m_settings_fff.vals.d_bed = string_to_float_decimal_point(dist_bed_fff_str);
if (!dist_fff_seq_print_str.empty())
m_settings_fff_seq.vals.d_obj = string_to_float_decimal_point(dist_fff_seq_print_str);
if (!dist_bed_fff_seq_print_str.empty())
m_settings_fff_seq.vals.d_bed = string_to_float_decimal_point(dist_bed_fff_seq_print_str);
if (!dist_sla_str.empty())
m_settings_sla.vals.d_obj = string_to_float_decimal_point(dist_sla_str);
if (!dist_bed_sla_str.empty())
m_settings_sla.vals.d_bed = string_to_float_decimal_point(dist_bed_sla_str);
if (!en_rot_fff_str.empty())
m_settings_fff.vals.rotations = (en_rot_fff_str == "1" || en_rot_fff_str == "yes");
if (!en_rot_fff_seqp_str.empty())
m_settings_fff_seq.vals.rotations = (en_rot_fff_seqp_str == "1" || en_rot_fff_seqp_str == "yes");
if (!en_rot_sla_str.empty())
m_settings_sla.vals.rotations = (en_rot_sla_str == "1" || en_rot_sla_str == "yes");
// if (!alignment_sla_str.empty())
// m_arrange_settings_sla.alignment = std::stoi(alignment_sla_str);
// if (!alignment_fff_str.empty())
// m_arrange_settings_fff.alignment = std::stoi(alignment_fff_str);
// if (!alignment_fff_seqp_str.empty())
// m_arrange_settings_fff_seq_print.alignment = std::stoi(alignment_fff_seqp_str);
// Override default alignment and save save/load it to a temporary slot "alignment_xl"
ArrangeSettingsView::XLPivots arr_alignment = ArrangeSettingsView::xlpFrontLeft;
if (!alignment_xl_str.empty()) {
int align_val = std::stoi(alignment_xl_str);
if (align_val >= 0 && align_val < ArrangeSettingsView::xlpCount)
arr_alignment =
static_cast<ArrangeSettingsView::XLPivots>(align_val);
}
m_settings_sla.vals.xl_align = arr_alignment ;
m_settings_fff.vals.xl_align = arr_alignment ;
m_settings_fff_seq.vals.xl_align = arr_alignment ;
ArrangeSettingsView::GeometryHandling geom_handl = arr2::ArrangeSettingsView::ghConvex;
if (!geom_handling_str.empty()) {
int gh = std::stoi(geom_handling_str);
if(gh >= 0 && gh < ArrangeSettingsView::GeometryHandling::ghCount)
geom_handl = static_cast<ArrangeSettingsView::GeometryHandling>(gh);
}
m_settings_sla.vals.geom_handling = geom_handl;
m_settings_fff.vals.geom_handling = geom_handl;
m_settings_fff_seq.vals.geom_handling = geom_handl;
ArrangeSettingsView::ArrangeStrategy arr_strategy = arr2::ArrangeSettingsView::asAuto;
if (!strategy_str.empty()) {
int strateg = std::stoi(strategy_str);
if(strateg >= 0 && strateg < ArrangeSettingsView::ArrangeStrategy::asCount)
arr_strategy = static_cast<ArrangeSettingsView::ArrangeStrategy>(strateg);
}
m_settings_sla.vals.arr_strategy = arr_strategy;
m_settings_fff.vals.arr_strategy = arr_strategy;
m_settings_fff_seq.vals.arr_strategy = arr_strategy;
}
void ArrangeSettingsDb_AppCfg::distance_from_obj_range(float &min,
float &max) const
{
min = get_slot(this).dobj_range.minval;
max = get_slot(this).dobj_range.maxval;
}
void ArrangeSettingsDb_AppCfg::distance_from_bed_range(float &min,
float &max) const
{
min = get_slot(this).dbed_range.minval;
max = get_slot(this).dbed_range.maxval;
}
arr2::ArrangeSettingsDb& ArrangeSettingsDb_AppCfg::set_distance_from_objects(float v)
{
Slot &slot = get_slot(this);
slot.vals.d_obj = v;
m_appcfg->set("arrange", "min_object_distance" + slot.postfix,
float_to_string_decimal_point(v));
return *this;
}
arr2::ArrangeSettingsDb& ArrangeSettingsDb_AppCfg::set_distance_from_bed(float v)
{
Slot &slot = get_slot(this);
slot.vals.d_bed = v;
m_appcfg->set("arrange", "min_bed_distance" + slot.postfix,
float_to_string_decimal_point(v));
return *this;
}
arr2::ArrangeSettingsDb& ArrangeSettingsDb_AppCfg::set_rotation_enabled(bool v)
{
Slot &slot = get_slot(this);
slot.vals.rotations = v;
m_appcfg->set("arrange", "enable_rotation" + slot.postfix, v ? "1" : "0");
return *this;
}
arr2::ArrangeSettingsDb& ArrangeSettingsDb_AppCfg::set_xl_alignment(XLPivots v)
{
m_settings_fff.vals.xl_align = v;
m_appcfg->set("arrange", "alignment_xl", std::to_string(v));
return *this;
}
arr2::ArrangeSettingsDb& ArrangeSettingsDb_AppCfg::set_geometry_handling(GeometryHandling v)
{
m_settings_fff.vals.geom_handling = v;
m_appcfg->set("arrange", "geometry_handling", std::to_string(v));
return *this;
}
arr2::ArrangeSettingsDb& ArrangeSettingsDb_AppCfg::set_arrange_strategy(ArrangeStrategy v)
{
m_settings_fff.vals.arr_strategy = v;
m_appcfg->set("arrange", "arrange_strategy", std::to_string(v));
return *this;
}
} // namespace Slic3r

View File

@@ -0,0 +1,92 @@
#ifndef ARRANGESETTINGSDB_APPCFG_HPP
#define ARRANGESETTINGSDB_APPCFG_HPP
#include "ArrangeSettingsView.hpp"
#include "libslic3r/AppConfig.hpp"
#include "libslic3r/PrintConfig.hpp"
namespace Slic3r {
class ArrangeSettingsDb_AppCfg: public arr2::ArrangeSettingsDb
{
public:
enum Slots { slotFFF, slotFFFSeqPrint, slotSLA };
private:
AppConfig *m_appcfg;
Slots m_current_slot = slotFFF;
struct FloatRange { float minval = 0.f, maxval = 100.f; };
struct Slot
{
Values vals;
Values defaults;
FloatRange dobj_range, dbed_range;
std::string postfix;
};
// Settings and their defaults are stored separately for fff,
// sla and fff sequential mode
Slot m_settings_fff, m_settings_fff_seq, m_settings_sla;
template<class Self>
static auto & get_slot(Self *self, Slots slot) {
switch(slot) {
case slotFFF: return self->m_settings_fff;
case slotFFFSeqPrint: return self->m_settings_fff_seq;
case slotSLA: return self->m_settings_sla;
}
return self->m_settings_fff;
}
template<class Self> static auto &get_slot(Self *self)
{
return get_slot(self, self->m_current_slot);
}
template<class Self>
static auto& get_ref(Self *self) { return get_slot(self).vals; }
public:
explicit ArrangeSettingsDb_AppCfg(AppConfig *appcfg);
float get_distance_from_objects() const override { return get_ref(this).d_obj; }
float get_distance_from_bed() const override { return get_ref(this).d_bed; }
bool is_rotation_enabled() const override { return get_ref(this).rotations; }
XLPivots get_xl_alignment() const override { return m_settings_fff.vals.xl_align; }
GeometryHandling get_geometry_handling() const override { return m_settings_fff.vals.geom_handling; }
ArrangeStrategy get_arrange_strategy() const override { return m_settings_fff.vals.arr_strategy; }
void distance_from_obj_range(float &min, float &max) const override;
void distance_from_bed_range(float &min, float &max) const override;
ArrangeSettingsDb& set_distance_from_objects(float v) override;
ArrangeSettingsDb& set_distance_from_bed(float v) override;
ArrangeSettingsDb& set_rotation_enabled(bool v) override;
ArrangeSettingsDb& set_xl_alignment(XLPivots v) override;
ArrangeSettingsDb& set_geometry_handling(GeometryHandling v) override;
ArrangeSettingsDb& set_arrange_strategy(ArrangeStrategy v) override;
Values get_defaults() const override { return get_slot(this).defaults; }
void set_active_slot(Slots slot) noexcept { m_current_slot = slot; }
void set_distance_from_obj_range(Slots slot, float min, float max)
{
get_slot(this, slot).dobj_range = FloatRange{min, max};
}
void set_distance_from_bed_range(Slots slot, float min, float max)
{
get_slot(this, slot).dbed_range = FloatRange{min, max};
}
Values &get_defaults(Slots slot) { return get_slot(this, slot).defaults; }
};
} // namespace Slic3r
#endif // ARRANGESETTINGSDB_APPCFG_HPP

View File

@@ -0,0 +1,119 @@
#ifndef ARRANGESETTINGSVIEW_HPP
#define ARRANGESETTINGSVIEW_HPP
namespace Slic3r { namespace arr2 {
class ArrangeSettingsView
{
public:
enum GeometryHandling { ghConvex, ghBalanced, ghAdvanced, ghCount };
enum ArrangeStrategy { asAuto, asPullToCenter, asCount };
enum XLPivots {
xlpCenter,
xlpRearLeft,
xlpFrontLeft,
xlpFrontRight,
xlpRearRight,
xlpRandom,
xlpCount
};
virtual ~ArrangeSettingsView() = default;
virtual float get_distance_from_objects() const = 0;
virtual float get_distance_from_bed() const = 0;
virtual bool is_rotation_enabled() const = 0;
virtual XLPivots get_xl_alignment() const = 0;
virtual GeometryHandling get_geometry_handling() const = 0;
virtual ArrangeStrategy get_arrange_strategy() const = 0;
};
class ArrangeSettingsDb: public ArrangeSettingsView
{
public:
virtual void distance_from_obj_range(float &min, float &max) const = 0;
virtual void distance_from_bed_range(float &min, float &max) const = 0;
virtual ArrangeSettingsDb& set_distance_from_objects(float v) = 0;
virtual ArrangeSettingsDb& set_distance_from_bed(float v) = 0;
virtual ArrangeSettingsDb& set_rotation_enabled(bool v) = 0;
virtual ArrangeSettingsDb& set_xl_alignment(XLPivots v) = 0;
virtual ArrangeSettingsDb& set_geometry_handling(GeometryHandling v) = 0;
virtual ArrangeSettingsDb& set_arrange_strategy(ArrangeStrategy v) = 0;
struct Values {
float d_obj = 6.f, d_bed = 0.f;
bool rotations = false;
XLPivots xl_align = XLPivots::xlpFrontLeft;
GeometryHandling geom_handling = GeometryHandling::ghConvex;
ArrangeStrategy arr_strategy = ArrangeStrategy::asAuto;
Values() = default;
Values(const ArrangeSettingsView &sv)
{
d_bed = sv.get_distance_from_bed();
d_obj = sv.get_distance_from_objects();
arr_strategy = sv.get_arrange_strategy();
geom_handling = sv.get_geometry_handling();
rotations = sv.is_rotation_enabled();
xl_align = sv.get_xl_alignment();
}
};
virtual Values get_defaults() const { return {}; }
ArrangeSettingsDb& set_from(const ArrangeSettingsView &sv)
{
set_distance_from_bed(sv.get_distance_from_bed());
set_distance_from_objects(sv.get_distance_from_objects());
set_arrange_strategy(sv.get_arrange_strategy());
set_geometry_handling(sv.get_geometry_handling());
set_rotation_enabled(sv.is_rotation_enabled());
set_xl_alignment(sv.get_xl_alignment());
return *this;
}
};
class ArrangeSettings: public Slic3r::arr2::ArrangeSettingsDb
{
ArrangeSettingsDb::Values m_v = {};
public:
explicit ArrangeSettings(
const ArrangeSettingsDb::Values &v = {})
: m_v{v}
{}
explicit ArrangeSettings(const ArrangeSettingsView &v)
: m_v{v}
{}
float get_distance_from_objects() const override { return m_v.d_obj; }
float get_distance_from_bed() const override { return m_v.d_bed; }
bool is_rotation_enabled() const override { return m_v.rotations; }
XLPivots get_xl_alignment() const override { return m_v.xl_align; }
GeometryHandling get_geometry_handling() const override { return m_v.geom_handling; }
ArrangeStrategy get_arrange_strategy() const override { return m_v.arr_strategy; }
void distance_from_obj_range(float &min, float &max) const override { min = 0.f; max = 100.f; }
void distance_from_bed_range(float &min, float &max) const override { min = 0.f; max = 100.f; }
ArrangeSettings& set_distance_from_objects(float v) override { m_v.d_obj = v; return *this; }
ArrangeSettings& set_distance_from_bed(float v) override { m_v.d_bed = v; return *this; }
ArrangeSettings& set_rotation_enabled(bool v) override { m_v.rotations = v; return *this; }
ArrangeSettings& set_xl_alignment(XLPivots v) override { m_v.xl_align = v; return *this; }
ArrangeSettings& set_geometry_handling(GeometryHandling v) override { m_v.geom_handling = v; return *this; }
ArrangeSettings& set_arrange_strategy(ArrangeStrategy v) override { m_v.arr_strategy = v; return *this; }
auto & values() const { return m_v; }
auto & values() { return m_v; }
};
}} // namespace Slic3r::arr2
#endif // ARRANGESETTINGSVIEW_HPP

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