mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-20 07:22:35 +00:00
Merge branch 'main' into zaa
This commit is contained in:
@@ -49,7 +49,6 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
build_linux:
|
||||
name: Build Linux
|
||||
strategy:
|
||||
fail-fast: false
|
||||
# Don't run scheduled builds on forks:
|
||||
@@ -59,24 +58,41 @@ jobs:
|
||||
os: ubuntu-24.04
|
||||
build-deps-only: ${{ inputs.build-deps-only || false }}
|
||||
secrets: inherit
|
||||
build_all:
|
||||
name: Build Non-Linux
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: windows-latest
|
||||
- os: orca-macos-arm64
|
||||
arch: arm64
|
||||
build_windows:
|
||||
# Don't run scheduled builds on forks:
|
||||
if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }}
|
||||
uses: ./.github/workflows/build_check_cache.yml
|
||||
with:
|
||||
os: ${{ matrix.os }}
|
||||
os: windows-latest
|
||||
build-deps-only: ${{ inputs.build-deps-only || false }}
|
||||
force-build: ${{ github.event_name == 'schedule' }}
|
||||
secrets: inherit
|
||||
build_macos_arch:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
arch:
|
||||
- arm64
|
||||
- x86_64
|
||||
# Don't run scheduled builds on forks:
|
||||
if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }}
|
||||
uses: ./.github/workflows/build_check_cache.yml
|
||||
with:
|
||||
os: ${{ vars.SELF_HOSTED && 'orca-macos-arm64' || 'macos-14' }}
|
||||
arch: ${{ matrix.arch }}
|
||||
build-deps-only: ${{ inputs.build-deps-only || false }}
|
||||
force-build: ${{ github.event_name == 'schedule' }}
|
||||
secrets: inherit
|
||||
build_macos_universal:
|
||||
name: Build macOS Universal
|
||||
needs: build_macos_arch
|
||||
if: ${{ !cancelled() && needs.build_macos_arch.result == 'success' && !inputs.build-deps-only && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }}
|
||||
uses: ./.github/workflows/build_orca.yml
|
||||
with:
|
||||
os: ${{ vars.SELF_HOSTED && 'orca-macos-arm64' || 'macos-14' }}
|
||||
arch: universal
|
||||
macos-combine-only: true
|
||||
secrets: inherit
|
||||
unit_tests:
|
||||
name: Unit Tests
|
||||
runs-on: ubuntu-24.04
|
||||
@@ -161,11 +177,31 @@ jobs:
|
||||
echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV
|
||||
echo "git_commit_hash=$git_commit_hash" >> $GITHUB_ENV
|
||||
shell: bash
|
||||
# Manage flatpak-builder cache externally so PRs restore but never upload
|
||||
- name: Restore flatpak-builder cache
|
||||
if: github.event_name == 'pull_request'
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: .flatpak-builder
|
||||
key: flatpak-builder-${{ matrix.variant.arch }}-${{ github.event.pull_request.base.sha }}
|
||||
restore-keys: flatpak-builder-${{ matrix.variant.arch }}-
|
||||
- name: Save/restore flatpak-builder cache
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: .flatpak-builder
|
||||
key: flatpak-builder-${{ matrix.variant.arch }}-${{ github.sha }}
|
||||
restore-keys: flatpak-builder-${{ matrix.variant.arch }}-
|
||||
- name: Disable debug info for faster CI builds
|
||||
run: |
|
||||
sed -i '0,/^finish-args:/s//build-options:\n no-debuginfo: true\n strip: true\nfinish-args:/' \
|
||||
scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml
|
||||
shell: bash
|
||||
- uses: flatpak/flatpak-github-actions/flatpak-builder@master
|
||||
with:
|
||||
bundle: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
||||
manifest-path: scripts/flatpak/io.github.softfever.OrcaSlicer.yml
|
||||
cache: true
|
||||
manifest-path: scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml
|
||||
cache: false
|
||||
arch: ${{ matrix.variant.arch }}
|
||||
upload-artifact: false
|
||||
- name: Upload artifacts Flatpak
|
||||
|
||||
@@ -30,14 +30,16 @@ jobs:
|
||||
with:
|
||||
lfs: 'true'
|
||||
|
||||
- name: set outputs
|
||||
id: set_outputs
|
||||
env:
|
||||
dep-folder-name: ${{ inputs.os != 'orca-macos-arm64' && '/OrcaSlicer_dep' || '' }}
|
||||
output-cmd: ${{ inputs.os == 'windows-latest' && '$env:GITHUB_OUTPUT' || '"$GITHUB_OUTPUT"'}}
|
||||
run: |
|
||||
echo cache-key=${{ inputs.os }}-cache-orcaslicer_deps-build-${{ hashFiles('deps/**') }} >> ${{ env.output-cmd }}
|
||||
echo cache-path=${{ github.workspace }}/deps/build${{ env.dep-folder-name }} >> ${{ env.output-cmd }}
|
||||
- name: set outputs
|
||||
id: set_outputs
|
||||
env:
|
||||
# Keep macOS cache keys and paths architecture-specific.
|
||||
cache-os: ${{ contains(inputs.os, 'macos') && format('macos-{0}', inputs.arch) || inputs.os }}
|
||||
dep-folder-name: ${{ contains(inputs.os, 'macos') && format('/{0}', inputs.arch) || '/OrcaSlicer_dep' }}
|
||||
output-cmd: ${{ inputs.os == 'windows-latest' && '$env:GITHUB_OUTPUT' || '"$GITHUB_OUTPUT"'}}
|
||||
run: |
|
||||
echo cache-key=${{ env.cache-os }}-cache-orcaslicer_deps-build-${{ hashFiles('deps/**') }} >> ${{ env.output-cmd }}
|
||||
echo cache-path=${{ github.workspace }}/deps/build${{ env.dep-folder-name }} >> ${{ env.output-cmd }}
|
||||
|
||||
- name: load cache
|
||||
id: cache_deps
|
||||
|
||||
@@ -74,18 +74,15 @@ jobs:
|
||||
cd ${{ github.workspace }}/deps/build
|
||||
|
||||
- name: Build on Mac ${{ inputs.arch }}
|
||||
if: inputs.os == 'orca-macos-arm64'
|
||||
if: contains(inputs.os, 'macos')
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
# brew install automake texinfo libtool
|
||||
# brew list
|
||||
# brew uninstall --ignore-dependencies zstd
|
||||
./build_release_macos.sh -dx -a universal -t 10.15
|
||||
for arch in arm64 x86_64; do
|
||||
(cd "${{ github.workspace }}/deps/build/${arch}" && \
|
||||
find . -mindepth 1 -maxdepth 1 ! -name 'OrcaSlicer_dep' -exec rm -rf {} +)
|
||||
done
|
||||
# brew install zstd
|
||||
if [ -z "${{ vars.SELF_HOSTED }}" ]; then
|
||||
brew install automake texinfo libtool
|
||||
fi
|
||||
./build_release_macos.sh -dx ${{ !vars.SELF_HOSTED && '-1' || '' }} -a ${{ inputs.arch }} -t 10.15
|
||||
(cd "${{ github.workspace }}/deps/build/${{ inputs.arch }}" && \
|
||||
find . -mindepth 1 -maxdepth 1 ! -name 'OrcaSlicer_dep' -exec rm -rf {} +)
|
||||
|
||||
|
||||
- name: Apt-Install Dependencies
|
||||
@@ -104,7 +101,7 @@ jobs:
|
||||
|
||||
# Upload Artifacts
|
||||
# - name: Upload Mac ${{ inputs.arch }} artifacts
|
||||
# if: inputs.os == 'orca-macos-arm64'
|
||||
# if: contains(inputs.os, 'macos')
|
||||
# uses: actions/upload-artifact@v6
|
||||
# with:
|
||||
# name: OrcaSlicer_dep_mac_${{ env.date }}
|
||||
|
||||
@@ -2,10 +2,10 @@ on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
cache-key:
|
||||
required: true
|
||||
required: false
|
||||
type: string
|
||||
cache-path:
|
||||
required: true
|
||||
required: false
|
||||
type: string
|
||||
os:
|
||||
required: true
|
||||
@@ -13,6 +13,10 @@ on:
|
||||
arch:
|
||||
required: false
|
||||
type: string
|
||||
macos-combine-only:
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
build_orca:
|
||||
@@ -31,6 +35,7 @@ jobs:
|
||||
lfs: 'true'
|
||||
|
||||
- name: load cached deps
|
||||
if: ${{ !(contains(inputs.os, 'macos') && inputs.macos-combine-only) }}
|
||||
uses: actions/cache@v5
|
||||
with:
|
||||
path: ${{ inputs.cache-path }}
|
||||
@@ -86,29 +91,82 @@ jobs:
|
||||
|
||||
# Mac
|
||||
- name: Install tools mac
|
||||
if: inputs.os == 'orca-macos-arm64'
|
||||
if: contains(inputs.os, 'macos') && !inputs.macos-combine-only
|
||||
run: |
|
||||
# brew install libtool
|
||||
# brew list
|
||||
mkdir -p ${{ github.workspace }}/deps/build
|
||||
if [ -z "${{ vars.SELF_HOSTED }}" ]; then
|
||||
brew install libtool
|
||||
brew list
|
||||
fi
|
||||
mkdir -p ${{ github.workspace }}/deps/build/${{ inputs.arch }}
|
||||
|
||||
# - name: Free disk space
|
||||
# if: inputs.os == 'orca-macos-arm64'
|
||||
# run: |
|
||||
# df -hI /dev/disk3s1s1
|
||||
# sudo find /Applications -maxdepth 1 -type d -name "Xcode_*.app" ! -name "Xcode_15.4.app" -exec rm -rf {} +
|
||||
# sudo rm -rf ~/Library/Developer/CoreSimulator/Caches/*
|
||||
# df -hI /dev/disk3s1s1
|
||||
- name: Free disk space
|
||||
if: contains(inputs.os, 'macos') && !inputs.macos-combine-only && !vars.SELF_HOSTED
|
||||
run: |
|
||||
df -hI /dev/disk3s1s1
|
||||
sudo find /Applications -maxdepth 1 -type d -name "Xcode_*.app" ! -name "Xcode_15.4.app" -exec rm -rf {} +
|
||||
sudo rm -rf ~/Library/Developer/CoreSimulator/Caches/*
|
||||
df -hI /dev/disk3s1s1
|
||||
|
||||
- name: Build slicer mac
|
||||
if: inputs.os == 'orca-macos-arm64'
|
||||
if: contains(inputs.os, 'macos') && !inputs.macos-combine-only
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
./build_release_macos.sh -s -n -x -a universal -t 10.15
|
||||
./build_release_macos.sh -s -n -x ${{ !vars.SELF_HOSTED && '-1' || '' }} -a ${{ inputs.arch }} -t 10.15
|
||||
|
||||
- name: Pack macOS app bundle ${{ inputs.arch }}
|
||||
if: contains(inputs.os, 'macos') && !inputs.macos-combine-only
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
tar -czvf OrcaSlicer_Mac_bundle_${{ inputs.arch }}_${{ github.sha }}.tar.gz -C build/${{ inputs.arch }} OrcaSlicer
|
||||
|
||||
- name: Upload macOS app bundle ${{ inputs.arch }}
|
||||
if: contains(inputs.os, 'macos') && !inputs.macos-combine-only
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: OrcaSlicer_Mac_bundle_${{ inputs.arch }}_${{ github.sha }}
|
||||
path: ${{ github.workspace }}/OrcaSlicer_Mac_bundle_${{ inputs.arch }}_${{ github.sha }}.tar.gz
|
||||
|
||||
- name: Download macOS arm64 app bundle
|
||||
if: contains(inputs.os, 'macos') && inputs.macos-combine-only
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: OrcaSlicer_Mac_bundle_arm64_${{ github.sha }}
|
||||
path: ${{ github.workspace }}/mac_bundles/arm64
|
||||
|
||||
- name: Download macOS x86_64 app bundle
|
||||
if: contains(inputs.os, 'macos') && inputs.macos-combine-only
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: OrcaSlicer_Mac_bundle_x86_64_${{ github.sha }}
|
||||
path: ${{ github.workspace }}/mac_bundles/x86_64
|
||||
|
||||
- name: Extract macOS app bundles
|
||||
if: contains(inputs.os, 'macos') && inputs.macos-combine-only
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
mkdir -p build/arm64 build/x86_64
|
||||
arm_bundle=$(find "${{ github.workspace }}/mac_bundles/arm64" -name '*.tar.gz' -print -quit)
|
||||
x86_bundle=$(find "${{ github.workspace }}/mac_bundles/x86_64" -name '*.tar.gz' -print -quit)
|
||||
tar -xzvf "$arm_bundle" -C "${{ github.workspace }}/build/arm64"
|
||||
tar -xzvf "$x86_bundle" -C "${{ github.workspace }}/build/x86_64"
|
||||
|
||||
- name: Build universal mac app bundle
|
||||
if: contains(inputs.os, 'macos') && inputs.macos-combine-only
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
./build_release_macos.sh -u -x ${{ !vars.SELF_HOSTED && '-1' || '' }} -a universal -t 10.15
|
||||
|
||||
- name: Delete intermediate per-arch artifacts
|
||||
if: contains(inputs.os, 'macos') && inputs.macos-combine-only
|
||||
uses: geekyeggo/delete-artifact@v5
|
||||
with:
|
||||
name: |
|
||||
OrcaSlicer_Mac_bundle_arm64_${{ github.sha }}
|
||||
OrcaSlicer_Mac_bundle_x86_64_${{ github.sha }}
|
||||
|
||||
# Thanks to RaySajuuk, it's working now
|
||||
- name: Sign app and notary
|
||||
if: github.repository == 'OrcaSlicer/OrcaSlicer' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/')) && inputs.os == 'orca-macos-arm64'
|
||||
if: github.repository == 'OrcaSlicer/OrcaSlicer' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/')) && contains(inputs.os, 'macos') && inputs.macos-combine-only
|
||||
working-directory: ${{ github.workspace }}
|
||||
env:
|
||||
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
|
||||
@@ -162,7 +220,7 @@ jobs:
|
||||
fi
|
||||
|
||||
- name: Create DMG without notary
|
||||
if: github.ref != 'refs/heads/main' && inputs.os == 'orca-macos-arm64'
|
||||
if: github.ref != 'refs/heads/main' && contains(inputs.os, 'macos') && inputs.macos-combine-only
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
mkdir -p ${{ github.workspace }}/build/universal/OrcaSlicer_dmg
|
||||
@@ -181,14 +239,14 @@ jobs:
|
||||
fi
|
||||
|
||||
- name: Upload artifacts mac
|
||||
if: inputs.os == 'orca-macos-arm64'
|
||||
if: contains(inputs.os, 'macos') && inputs.macos-combine-only
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: OrcaSlicer_Mac_universal_${{ env.ver }}
|
||||
path: ${{ github.workspace }}/OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
|
||||
|
||||
- name: Upload OrcaSlicer_profile_validator DMG mac
|
||||
if: inputs.os == 'orca-macos-arm64'
|
||||
if: contains(inputs.os, 'macos') && inputs.macos-combine-only
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: OrcaSlicer_profile_validator_Mac_universal_DMG_${{ env.ver }}
|
||||
@@ -196,7 +254,7 @@ jobs:
|
||||
if-no-files-found: ignore
|
||||
|
||||
- name: Deploy Mac release
|
||||
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' && inputs.os == 'orca-macos-arm64'
|
||||
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' && contains(inputs.os, 'macos') && inputs.macos-combine-only
|
||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||
with:
|
||||
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||
@@ -207,7 +265,7 @@ jobs:
|
||||
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
|
||||
|
||||
- name: Deploy Mac OrcaSlicer_profile_validator DMG release
|
||||
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' && inputs.os == 'orca-macos-arm64'
|
||||
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' && contains(inputs.os, 'macos') && inputs.macos-combine-only
|
||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||
with:
|
||||
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||
|
||||
@@ -36,6 +36,7 @@ src/OrcaSlicer-doc/
|
||||
/deps/DL_CACHE/
|
||||
/deps/DL_CACHE
|
||||
**/.flatpak-builder/
|
||||
*.no-debug.yml
|
||||
resources/profiles/user/default
|
||||
*.code-workspace
|
||||
deps_src/build/
|
||||
|
||||
@@ -42,7 +42,7 @@ cmake --build build/arm64 --config RelWithDebInfo --target all --
|
||||
### Building on Linux
|
||||
**Always use this command to build the project when testing build issues on Linux.**
|
||||
```bash
|
||||
cmake --build build/arm64 --config RelWithDebInfo --target all --
|
||||
cmake --build build --config RelWithDebInfo --target all --
|
||||
|
||||
```
|
||||
|
||||
|
||||
+5
-1
@@ -436,7 +436,11 @@ if (NOT MSVC AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMP
|
||||
endif()
|
||||
|
||||
if((${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang") AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 15)
|
||||
add_compile_options(-Wno-error=enum-constexpr-conversion)
|
||||
include(CheckCXXCompilerFlag)
|
||||
check_cxx_compiler_flag(-Wno-error=enum-constexpr-conversion HAS_WNO_ERROR_ENUM_CONSTEXPR_CONV)
|
||||
if(HAS_WNO_ERROR_ENUM_CONSTEXPR_CONV)
|
||||
add_compile_options(-Wno-error=enum-constexpr-conversion)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
#GCC generates loads of -Wunknown-pragmas when compiling igl. The fix is not easy due to a bug in gcc, see
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<img alt="OrcaSlicer logo" src="resources/images/OrcaSlicer.png" width="15%" height="15%">
|
||||
</picture>
|
||||
|
||||
<a href="https://trendshift.io/repositories/952" target="_blank"><img src="https://trendshift.io/api/badge/repositories/952" alt="SoftFever%2FOrcaSlicer | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
||||
<a href="https://trendshift.io/repositories/15552" target="_blank"><img src="https://trendshift.io/api/badge/repositories/15552" alt="OrcaSlicer%2FOrcaSlicer | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
||||
|
||||
[](https://github.com/OrcaSlicer/OrcaSlicer/stargazers) [](https://github.com/OrcaSlicer/OrcaSlicer/actions/workflows/build_all.yml)
|
||||
|
||||
|
||||
+38
-6
@@ -21,6 +21,8 @@ INSTALL_RUNTIME=false
|
||||
JOBS=$(nproc)
|
||||
FORCE_CLEAN=false
|
||||
ENABLE_CCACHE=false
|
||||
DISABLE_ROFILES_FUSE=false
|
||||
NO_DEBUGINFO=true
|
||||
CACHE_DIR=".flatpak-builder"
|
||||
|
||||
# Help function
|
||||
@@ -36,6 +38,8 @@ show_help() {
|
||||
echo " -c, --cleanup Clean build directory before building"
|
||||
echo " -f, --force-clean Force clean build (disables caching)"
|
||||
echo " --ccache Enable ccache for faster rebuilds (requires ccache in SDK)"
|
||||
echo " --disable-rofiles-fuse Disable rofiles-fuse (workaround for FUSE issues)"
|
||||
echo " --with-debuginfo Include debug info (slower builds, needed for Flathub)"
|
||||
echo " --cache-dir DIR Flatpak builder cache directory [default: $CACHE_DIR]"
|
||||
echo " -i, --install-runtime Install required Flatpak runtime and SDK"
|
||||
echo " -h, --help Show this help message"
|
||||
@@ -75,6 +79,14 @@ while [[ $# -gt 0 ]]; do
|
||||
ENABLE_CCACHE=true
|
||||
shift
|
||||
;;
|
||||
--disable-rofiles-fuse)
|
||||
DISABLE_ROFILES_FUSE=true
|
||||
shift
|
||||
;;
|
||||
--with-debuginfo)
|
||||
NO_DEBUGINFO=false
|
||||
shift
|
||||
;;
|
||||
--cache-dir)
|
||||
CACHE_DIR="$2"
|
||||
shift 2
|
||||
@@ -242,8 +254,8 @@ mkdir -p "$BUILD_DIR"
|
||||
rm -rf "$BUILD_DIR/build-dir"
|
||||
|
||||
# Check if flatpak manifest exists
|
||||
if [[ ! -f "./scripts/flatpak/io.github.softfever.OrcaSlicer.yml" ]]; then
|
||||
echo -e "${RED}Error: Flatpak manifest not found at scripts/flatpak/io.github.softfever.OrcaSlicer.yml${NC}"
|
||||
if [[ ! -f "./scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml" ]]; then
|
||||
echo -e "${RED}Error: Flatpak manifest not found at scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -279,6 +291,7 @@ BUILDER_ARGS=(
|
||||
--verbose
|
||||
--state-dir="$CACHE_DIR"
|
||||
--jobs="$JOBS"
|
||||
--mirror-screenshots-url=https://dl.flathub.org/media/
|
||||
)
|
||||
|
||||
# Add force-clean only if explicitly requested (disables caching)
|
||||
@@ -295,21 +308,40 @@ if [[ "$ENABLE_CCACHE" == true ]]; then
|
||||
echo -e "${GREEN}Using ccache for compiler caching${NC}"
|
||||
fi
|
||||
|
||||
# Disable rofiles-fuse if requested (workaround for FUSE issues)
|
||||
if [[ "$DISABLE_ROFILES_FUSE" == true ]]; then
|
||||
BUILDER_ARGS+=(--disable-rofiles-fuse)
|
||||
echo -e "${YELLOW}rofiles-fuse disabled${NC}"
|
||||
fi
|
||||
|
||||
# Use a temp manifest with no-debuginfo if requested
|
||||
MANIFEST="scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml"
|
||||
if [[ "$NO_DEBUGINFO" == true ]]; then
|
||||
MANIFEST="scripts/flatpak/io.github.orcaslicer.OrcaSlicer.no-debug.yml"
|
||||
sed '0,/^finish-args:/s//build-options:\n no-debuginfo: true\n strip: true\nfinish-args:/' \
|
||||
scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml > "$MANIFEST"
|
||||
echo -e "${YELLOW}Debug info disabled (using temp manifest)${NC}"
|
||||
fi
|
||||
|
||||
if ! flatpak-builder \
|
||||
"${BUILDER_ARGS[@]}" \
|
||||
"$BUILD_DIR/build-dir" \
|
||||
scripts/flatpak/io.github.softfever.OrcaSlicer.yml; then
|
||||
"$MANIFEST"; then
|
||||
echo -e "${RED}Error: flatpak-builder failed${NC}"
|
||||
echo -e "${YELLOW}Check the build log above for details${NC}"
|
||||
rm -f "scripts/flatpak/io.github.orcaslicer.OrcaSlicer.no-debug.yml"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Clean up temp manifest
|
||||
rm -f "scripts/flatpak/io.github.orcaslicer.OrcaSlicer.no-debug.yml"
|
||||
|
||||
# Create bundle
|
||||
echo -e "${YELLOW}Creating Flatpak bundle...${NC}"
|
||||
if ! flatpak build-bundle \
|
||||
"$BUILD_DIR/repo" \
|
||||
"$BUNDLE_NAME" \
|
||||
io.github.softfever.OrcaSlicer \
|
||||
io.github.orcaslicer.OrcaSlicer \
|
||||
--arch="$ARCH"; then
|
||||
echo -e "${RED}Error: Failed to create Flatpak bundle${NC}"
|
||||
exit 1
|
||||
@@ -328,10 +360,10 @@ echo -e "${BLUE}To install the Flatpak:${NC}"
|
||||
echo -e "flatpak install --user $BUNDLE_NAME"
|
||||
echo ""
|
||||
echo -e "${BLUE}To run OrcaSlicer:${NC}"
|
||||
echo -e "flatpak run io.github.softfever.OrcaSlicer"
|
||||
echo -e "flatpak run io.github.orcaslicer.OrcaSlicer"
|
||||
echo ""
|
||||
echo -e "${BLUE}To uninstall:${NC}"
|
||||
echo -e "flatpak uninstall --user io.github.softfever.OrcaSlicer"
|
||||
echo -e "flatpak uninstall --user io.github.orcaslicer.OrcaSlicer"
|
||||
echo ""
|
||||
if [[ "$FORCE_CLEAN" != true ]]; then
|
||||
echo -e "${BLUE}Cache Management:${NC}"
|
||||
|
||||
+48
-35
@@ -3,7 +3,7 @@
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
while getopts ":dpa:snt:xbc:1Th" opt; do
|
||||
while getopts ":dpa:snt:xbc:1Tuh" opt; do
|
||||
case "${opt}" in
|
||||
d )
|
||||
export BUILD_TARGET="deps"
|
||||
@@ -40,10 +40,14 @@ while getopts ":dpa:snt:xbc:1Th" opt; do
|
||||
T )
|
||||
export BUILD_TESTS="1"
|
||||
;;
|
||||
u )
|
||||
export BUILD_TARGET="universal"
|
||||
;;
|
||||
h ) echo "Usage: ./build_release_macos.sh [-d]"
|
||||
echo " -d: Build deps only"
|
||||
echo " -a: Set ARCHITECTURE (arm64 or x86_64 or universal)"
|
||||
echo " -s: Build slicer only"
|
||||
echo " -u: Build universal app only (requires existing arm64 and x86_64 app bundles)"
|
||||
echo " -n: Nightly build"
|
||||
echo " -t: Specify minimum version of the target platform, default is 11.3"
|
||||
echo " -x: Use Ninja Multi-Config CMake generator, default is Xcode"
|
||||
@@ -249,48 +253,54 @@ function build_slicer() {
|
||||
done
|
||||
}
|
||||
|
||||
function lipo_dir() {
|
||||
local universal_dir="$1"
|
||||
local x86_64_dir="$2"
|
||||
|
||||
# Find all Mach-O files in the universal (arm64-based) copy and lipo them
|
||||
while IFS= read -r -d '' f; do
|
||||
local rel="${f#"$universal_dir"/}"
|
||||
local x86="$x86_64_dir/$rel"
|
||||
if [ -f "$x86" ]; then
|
||||
echo " lipo: $rel"
|
||||
lipo -create "$f" "$x86" -output "$f.tmp"
|
||||
mv "$f.tmp" "$f"
|
||||
else
|
||||
echo " warning: no x86_64 counterpart for $rel, keeping arm64 only"
|
||||
fi
|
||||
done < <(find "$universal_dir" -type f -print0 | while IFS= read -r -d '' candidate; do
|
||||
if file "$candidate" | grep -q "Mach-O"; then
|
||||
printf '%s\0' "$candidate"
|
||||
fi
|
||||
done)
|
||||
}
|
||||
|
||||
function build_universal() {
|
||||
echo "Building universal binary..."
|
||||
|
||||
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$ARCH"
|
||||
|
||||
# Create universal binary
|
||||
echo "Creating universal binary..."
|
||||
# PROJECT_BUILD_DIR="$PROJECT_DIR/build_Universal"
|
||||
ARM64_APP="$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer.app"
|
||||
X86_64_APP="$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer.app"
|
||||
|
||||
mkdir -p "$PROJECT_BUILD_DIR/OrcaSlicer"
|
||||
UNIVERSAL_APP="$PROJECT_BUILD_DIR/OrcaSlicer/OrcaSlicer.app"
|
||||
rm -rf "$UNIVERSAL_APP"
|
||||
cp -R "$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer.app" "$UNIVERSAL_APP"
|
||||
|
||||
# Get the binary path inside the .app bundle
|
||||
BINARY_PATH="Contents/MacOS/OrcaSlicer"
|
||||
|
||||
# Create universal binary using lipo
|
||||
lipo -create \
|
||||
"$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer.app/$BINARY_PATH" \
|
||||
"$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer.app/$BINARY_PATH" \
|
||||
-output "$UNIVERSAL_APP/$BINARY_PATH"
|
||||
|
||||
echo "Universal binary created at $UNIVERSAL_APP"
|
||||
|
||||
cp -R "$ARM64_APP" "$UNIVERSAL_APP"
|
||||
|
||||
echo "Creating universal binaries for OrcaSlicer.app..."
|
||||
lipo_dir "$UNIVERSAL_APP" "$X86_64_APP"
|
||||
echo "Universal OrcaSlicer.app created at $UNIVERSAL_APP"
|
||||
|
||||
# Create universal binary for profile validator if it exists
|
||||
if [ -f "$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ] && \
|
||||
[ -f "$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ]; then
|
||||
echo "Creating universal binary for OrcaSlicer_profile_validator..."
|
||||
ARM64_VALIDATOR="$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app"
|
||||
X86_64_VALIDATOR="$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer_profile_validator.app"
|
||||
if [ -d "$ARM64_VALIDATOR" ] && [ -d "$X86_64_VALIDATOR" ]; then
|
||||
echo "Creating universal binaries for OrcaSlicer_profile_validator.app..."
|
||||
UNIVERSAL_VALIDATOR_APP="$PROJECT_BUILD_DIR/OrcaSlicer/OrcaSlicer_profile_validator.app"
|
||||
rm -rf "$UNIVERSAL_VALIDATOR_APP"
|
||||
cp -R "$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app" "$UNIVERSAL_VALIDATOR_APP"
|
||||
|
||||
# Get the binary path inside the profile validator .app bundle
|
||||
VALIDATOR_BINARY_PATH="Contents/MacOS/OrcaSlicer_profile_validator"
|
||||
|
||||
# Create universal binary using lipo
|
||||
lipo -create \
|
||||
"$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer_profile_validator.app/$VALIDATOR_BINARY_PATH" \
|
||||
"$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app/$VALIDATOR_BINARY_PATH" \
|
||||
-output "$UNIVERSAL_VALIDATOR_APP/$VALIDATOR_BINARY_PATH"
|
||||
|
||||
echo "Universal binary for OrcaSlicer_profile_validator created at $UNIVERSAL_VALIDATOR_APP"
|
||||
cp -R "$ARM64_VALIDATOR" "$UNIVERSAL_VALIDATOR_APP"
|
||||
lipo_dir "$UNIVERSAL_VALIDATOR_APP" "$X86_64_VALIDATOR"
|
||||
echo "Universal OrcaSlicer_profile_validator.app created at $UNIVERSAL_VALIDATOR_APP"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -305,13 +315,16 @@ case "${BUILD_TARGET}" in
|
||||
slicer)
|
||||
build_slicer
|
||||
;;
|
||||
universal)
|
||||
build_universal
|
||||
;;
|
||||
*)
|
||||
echo "Unknown target: $BUILD_TARGET. Available targets: deps, slicer, all."
|
||||
echo "Unknown target: $BUILD_TARGET. Available targets: deps, slicer, universal, all."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "$ARCH" = "universal" ] && [ "$BUILD_TARGET" != "deps" ]; then
|
||||
if [ "$ARCH" = "universal" ] && { [ "$BUILD_TARGET" = "all" ] || [ "$BUILD_TARGET" = "slicer" ]; }; then
|
||||
build_universal
|
||||
fi
|
||||
|
||||
|
||||
Vendored
+1
@@ -18,6 +18,7 @@ orcaslicer_add_cmake_project(Boost
|
||||
-DBOOST_EXCLUDE_LIBRARIES:STRING=contract|fiber|numpy|stacktrace|wave|test
|
||||
-DBOOST_LOCALE_ENABLE_ICU:BOOL=OFF # do not link to libicu, breaks compatibility between distros
|
||||
-DBUILD_TESTING:BOOL=OFF
|
||||
-DBOOST_IOSTREAMS_ENABLE_ZSTD:BOOL=OFF
|
||||
"${_context_abi_line}"
|
||||
"${_context_arch_line}"
|
||||
)
|
||||
|
||||
Vendored
+2
@@ -5,6 +5,8 @@ find_package(OpenGL QUIET REQUIRED)
|
||||
orcaslicer_add_cmake_project(
|
||||
GLEW
|
||||
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/glew
|
||||
CMAKE_ARGS
|
||||
-DGLEW_USE_EGL=OFF
|
||||
)
|
||||
|
||||
if (MSVC)
|
||||
|
||||
Vendored
+10
-2
@@ -3,9 +3,17 @@ project(GLEW)
|
||||
|
||||
find_package(OpenGL REQUIRED)
|
||||
|
||||
if(OpenGL_EGL_FOUND)
|
||||
message(STATUS "building GLEW for EGL (hope that wxWidgets agrees, otherwise you won't have any output!)")
|
||||
# Allow parent project to control EGL usage.
|
||||
# Default to OFF since OrcaSlicer forces GDK_BACKEND=x11 (using GLX contexts).
|
||||
# GLEW must use glXGetProcAddressARB (GLX) to match wxWidgets GL canvas.
|
||||
# Using EGL function loading with GLX contexts causes rendering failures.
|
||||
option(GLEW_USE_EGL "Use EGL instead of GLX for OpenGL function loading" OFF)
|
||||
|
||||
if(GLEW_USE_EGL)
|
||||
message(STATUS "Building GLEW with EGL support")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DGLEW_EGL")
|
||||
else()
|
||||
message(STATUS "Building GLEW with GLX support")
|
||||
endif()
|
||||
|
||||
add_library(GLEW src/glew.c)
|
||||
|
||||
Vendored
+1
-4
@@ -1,8 +1,6 @@
|
||||
set(_wx_toolkit "")
|
||||
set(_wx_debug_postfix "")
|
||||
set(_wx_shared -DwxBUILD_SHARED=OFF)
|
||||
set(_wx_flatpak_patch "")
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
set(_gtk_ver 2)
|
||||
|
||||
@@ -14,7 +12,6 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
if (FLATPAK)
|
||||
set(_wx_debug_postfix "d")
|
||||
set(_wx_shared -DwxBUILD_SHARED=ON -DBUILD_SHARED_LIBS:BOOL=ON)
|
||||
set(_wx_flatpak_patch PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-flatpak.patch)
|
||||
endif ()
|
||||
endif()
|
||||
|
||||
@@ -37,7 +34,6 @@ orcaslicer_add_cmake_project(
|
||||
GIT_REPOSITORY "https://github.com/SoftFever/Orca-deps-wxWidgets"
|
||||
GIT_SHALLOW ON
|
||||
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} ${JPEG_PKG}
|
||||
${_wx_flatpak_patch}
|
||||
CMAKE_ARGS
|
||||
${_wx_opengl_override}
|
||||
-DwxBUILD_PRECOMP=ON
|
||||
@@ -51,6 +47,7 @@ orcaslicer_add_cmake_project(
|
||||
-DwxUSE_UNICODE=ON
|
||||
-DwxUSE_PRIVATE_FONTS=ON
|
||||
-DwxUSE_OPENGL=ON
|
||||
-DwxUSE_GLCANVAS_EGL=OFF
|
||||
-DwxUSE_WEBREQUEST=ON
|
||||
-DwxUSE_WEBVIEW=ON
|
||||
${_wx_edge}
|
||||
|
||||
@@ -26,6 +26,7 @@ add_subdirectory(imguizmo)
|
||||
add_subdirectory(libigl)
|
||||
add_subdirectory(libnest2d)
|
||||
add_subdirectory(mcut)
|
||||
add_subdirectory(md4c)
|
||||
add_subdirectory(miniz)
|
||||
add_subdirectory(minilzo)
|
||||
add_subdirectory(qhull)
|
||||
|
||||
@@ -18,7 +18,7 @@ template <
|
||||
typename DerivedF,
|
||||
typename SType,
|
||||
typename DerivedNF>
|
||||
IGL_INLINE void igl::loop(
|
||||
IGL_INLINE bool igl::loop(
|
||||
const int n_verts,
|
||||
const Eigen::PlainObjectBase<DerivedF> & F,
|
||||
Eigen::SparseMatrix<SType>& S,
|
||||
@@ -26,15 +26,15 @@ IGL_INLINE void igl::loop(
|
||||
{
|
||||
typedef Eigen::SparseMatrix<SType> SparseMat;
|
||||
typedef Eigen::Triplet<SType> Triplet_t;
|
||||
|
||||
|
||||
//Ref. https://graphics.stanford.edu/~mdfisher/subdivision.html
|
||||
//Heavily borrowing from igl::upsample
|
||||
|
||||
|
||||
DerivedF FF, FFi;
|
||||
triangle_triangle_adjacency(F, FF, FFi);
|
||||
std::vector<std::vector<typename DerivedF::Scalar>> adjacencyList;
|
||||
adjacency_list(F, adjacencyList, true);
|
||||
|
||||
|
||||
//Compute the number and positions of the vertices to insert (on edges)
|
||||
Eigen::MatrixXi NI = Eigen::MatrixXi::Constant(FF.rows(), FF.cols(), -1);
|
||||
Eigen::MatrixXi NIdoubles = Eigen::MatrixXi::Zero(FF.rows(), FF.cols());
|
||||
@@ -48,12 +48,18 @@ IGL_INLINE void igl::loop(
|
||||
{
|
||||
NI(i,j) = counter;
|
||||
NIdoubles(i,j) = 0;
|
||||
if (FF(i,j) != -1)
|
||||
if (FF(i,j) != -1)
|
||||
{
|
||||
//If it is not a boundary
|
||||
NI(FF(i,j), FFi(i,j)) = counter;
|
||||
NIdoubles(i,j) = 1;
|
||||
} else
|
||||
int adj_triangle = FF(i, j);
|
||||
int adj_edge = FFi(i, j);
|
||||
if (adj_triangle >= 0 && adj_triangle < NI.rows() && adj_edge >= 0 && adj_edge < NI.cols()) {
|
||||
NI(adj_triangle, adj_edge) = counter;
|
||||
NIdoubles(i, j) = 1;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else
|
||||
{
|
||||
//Mark boundary vertices for later
|
||||
vertIsOnBdry(F(i,j)) = 1;
|
||||
@@ -63,24 +69,24 @@ IGL_INLINE void igl::loop(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const int& n_odd = n_verts;
|
||||
const int& n_even = counter;
|
||||
const int n_newverts = n_odd + n_even;
|
||||
|
||||
|
||||
//Construct vertex positions
|
||||
std::vector<Triplet_t> tripletList;
|
||||
for(int i=0; i<n_odd; ++i)
|
||||
for(int i=0; i<n_odd; ++i)
|
||||
{
|
||||
//Old vertices
|
||||
const std::vector<int>& localAdjList = adjacencyList[i];
|
||||
if(vertIsOnBdry(i)==1)
|
||||
if(vertIsOnBdry(i)==1)
|
||||
{
|
||||
//Boundary vertex
|
||||
tripletList.emplace_back(i, localAdjList.front(), 1./8.);
|
||||
tripletList.emplace_back(i, localAdjList.back(), 1./8.);
|
||||
tripletList.emplace_back(i, i, 3./4.);
|
||||
} else
|
||||
} else
|
||||
{
|
||||
const int n = localAdjList.size();
|
||||
const SType dn = n;
|
||||
@@ -99,19 +105,19 @@ IGL_INLINE void igl::loop(
|
||||
tripletList.emplace_back(i, i, 1.-dn*beta);
|
||||
}
|
||||
}
|
||||
for(int i=0; i<FF.rows(); ++i)
|
||||
for(int i=0; i<FF.rows(); ++i)
|
||||
{
|
||||
//New vertices
|
||||
for(int j=0; j<3; ++j)
|
||||
for(int j=0; j<3; ++j)
|
||||
{
|
||||
if(NIdoubles(i,j)==0)
|
||||
if(NIdoubles(i,j)==0)
|
||||
{
|
||||
if(FF(i,j)==-1)
|
||||
if(FF(i,j)==-1)
|
||||
{
|
||||
//Boundary vertex
|
||||
tripletList.emplace_back(NI(i,j) + n_odd, F(i,j), 1./2.);
|
||||
tripletList.emplace_back(NI(i,j) + n_odd, F(i, (j+1)%3), 1./2.);
|
||||
} else
|
||||
} else
|
||||
{
|
||||
tripletList.emplace_back(NI(i,j) + n_odd, F(i,j), 3./8.);
|
||||
tripletList.emplace_back(NI(i,j) + n_odd, F(i, (j+1)%3), 3./8.);
|
||||
@@ -123,33 +129,34 @@ IGL_INLINE void igl::loop(
|
||||
}
|
||||
S.resize(n_newverts, n_verts);
|
||||
S.setFromTriplets(tripletList.begin(), tripletList.end());
|
||||
|
||||
|
||||
// Build the new topology (Every face is replaced by four)
|
||||
NF.resize(F.rows()*4, 3);
|
||||
for(int i=0; i<F.rows();++i)
|
||||
{
|
||||
Eigen::VectorXi VI(6);
|
||||
VI << F(i,0), F(i,1), F(i,2), NI(i,0) + n_odd, NI(i,1) + n_odd, NI(i,2) + n_odd;
|
||||
|
||||
|
||||
Eigen::VectorXi f0(3), f1(3), f2(3), f3(3);
|
||||
f0 << VI(0), VI(3), VI(5);
|
||||
f1 << VI(1), VI(4), VI(3);
|
||||
f2 << VI(3), VI(4), VI(5);
|
||||
f3 << VI(4), VI(2), VI(5);
|
||||
|
||||
|
||||
NF.row((i*4)+0) = f0;
|
||||
NF.row((i*4)+1) = f1;
|
||||
NF.row((i*4)+2) = f2;
|
||||
NF.row((i*4)+3) = f3;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
template <
|
||||
typename DerivedV,
|
||||
typename DerivedV,
|
||||
typename DerivedF,
|
||||
typename DerivedNV,
|
||||
typename DerivedNF>
|
||||
IGL_INLINE void igl::loop(
|
||||
IGL_INLINE bool igl::loop(
|
||||
const Eigen::PlainObjectBase<DerivedV>& V,
|
||||
const Eigen::PlainObjectBase<DerivedF>& F,
|
||||
Eigen::PlainObjectBase<DerivedNV>& NV,
|
||||
@@ -158,16 +165,19 @@ IGL_INLINE void igl::loop(
|
||||
{
|
||||
NV = V;
|
||||
NF = F;
|
||||
for(int i=0; i<number_of_subdivs; ++i)
|
||||
for(int i=0; i<number_of_subdivs; ++i)
|
||||
{
|
||||
DerivedNF tempF = NF;
|
||||
Eigen::SparseMatrix<typename DerivedV::Scalar> S;
|
||||
loop(NV.rows(), tempF, S, NF);
|
||||
if (!loop(NV.rows(), tempF, S, NF)) {
|
||||
return false;
|
||||
}
|
||||
// This .eval is super important
|
||||
NV = (S*NV).eval();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef IGL_STATIC_LIBRARY
|
||||
template void igl::loop<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, int);
|
||||
#endif
|
||||
#endif
|
||||
@@ -29,7 +29,7 @@ namespace igl
|
||||
typename DerivedF,
|
||||
typename SType,
|
||||
typename DerivedNF>
|
||||
IGL_INLINE void loop(
|
||||
IGL_INLINE bool loop(
|
||||
const int n_verts,
|
||||
const Eigen::PlainObjectBase<DerivedF> & F,
|
||||
Eigen::SparseMatrix<SType>& S,
|
||||
@@ -44,11 +44,11 @@ namespace igl
|
||||
// NV a matrix containing the new vertices
|
||||
// NF a matrix containing the new faces
|
||||
template <
|
||||
typename DerivedV,
|
||||
typename DerivedV,
|
||||
typename DerivedF,
|
||||
typename DerivedNV,
|
||||
typename DerivedNF>
|
||||
IGL_INLINE void loop(
|
||||
IGL_INLINE bool loop(
|
||||
const Eigen::PlainObjectBase<DerivedV>& V,
|
||||
const Eigen::PlainObjectBase<DerivedF>& F,
|
||||
Eigen::PlainObjectBase<DerivedNV>& NV,
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
project(MD4C C)
|
||||
|
||||
set(MD_VERSION_MAJOR 0)
|
||||
set(MD_VERSION_MINOR 5)
|
||||
set(MD_VERSION_RELEASE 2)
|
||||
set(MD_VERSION "${MD_VERSION_MAJOR}.${MD_VERSION_MINOR}.${MD_VERSION_RELEASE}")
|
||||
|
||||
set(PROJECT_VERSION "${MD_VERSION}")
|
||||
set(PROJECT_URL "https://github.com/mity/md4c")
|
||||
|
||||
|
||||
#option(BUILD_MD2HTML_EXECUTABLE "Whether to compile the md2html executable" ON)
|
||||
|
||||
|
||||
#if(WIN32)
|
||||
# # On Windows, given there is no standard lib install dir etc., we rather
|
||||
# # by default build static lib.
|
||||
# option(BUILD_SHARED_LIBS "help string describing option" OFF)
|
||||
#else()
|
||||
# # On Linux, MD4C is slowly being adding into some distros which prefer
|
||||
# # shared lib.
|
||||
# option(BUILD_SHARED_LIBS "help string describing option" ON)
|
||||
#endif()
|
||||
|
||||
add_definitions(
|
||||
-DMD_VERSION_MAJOR=${MD_VERSION_MAJOR}
|
||||
-DMD_VERSION_MINOR=${MD_VERSION_MINOR}
|
||||
-DMD_VERSION_RELEASE=${MD_VERSION_RELEASE}
|
||||
)
|
||||
|
||||
#set(CMAKE_CONFIGURATION_TYPES Debug Release RelWithDebInfo MinSizeRel)
|
||||
#if("${CMAKE_BUILD_TYPE}" STREQUAL "")
|
||||
# set(CMAKE_BUILD_TYPE $ENV{CMAKE_BUILD_TYPE})
|
||||
#
|
||||
# if("${CMAKE_BUILD_TYPE}" STREQUAL "")
|
||||
# set(CMAKE_BUILD_TYPE "Release")
|
||||
# endif()
|
||||
#endif()
|
||||
|
||||
|
||||
if(${CMAKE_C_COMPILER_ID} MATCHES GNU|Clang)
|
||||
add_compile_options(-Wall -Wextra -Wshadow)
|
||||
|
||||
# We enforce -Wdeclaration-after-statement because Qt project needs to
|
||||
# build MD4C with Integrity compiler which chokes whenever a declaration
|
||||
# is not at the beginning of a block.
|
||||
add_compile_options(-Wdeclaration-after-statement)
|
||||
elseif(MSVC)
|
||||
# Disable warnings about the so-called unsecured functions:
|
||||
add_definitions(/D_CRT_SECURE_NO_WARNINGS)
|
||||
add_compile_options(/W3)
|
||||
|
||||
# Specify proper C runtime library:
|
||||
string(REGEX REPLACE "/M[DT]d?" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
|
||||
string(REGEX REPLACE "/M[DT]d?" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
|
||||
string(REGEX REPLACE "/M[DT]d?" "" CMAKE_C_FLAGS_RELWITHDEBINFO "{$CMAKE_C_FLAGS_RELWITHDEBINFO}")
|
||||
string(REGEX REPLACE "/M[DT]d?" "" CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}")
|
||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT")
|
||||
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELEASE} /MT")
|
||||
set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_RELEASE} /MT")
|
||||
endif()
|
||||
|
||||
include(GNUInstallDirs)
|
||||
|
||||
add_subdirectory(src)
|
||||
#if (BUILD_MD2HTML_EXECUTABLE)
|
||||
# add_subdirectory(md2html)
|
||||
#endif ()
|
||||
@@ -0,0 +1,22 @@
|
||||
|
||||
# The MIT License (MIT)
|
||||
|
||||
Copyright © 2016-2024 Martin Mitáš
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the “Software”),
|
||||
to deal in the Software without restriction, including without limitation
|
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.
|
||||
@@ -0,0 +1,297 @@
|
||||
|
||||
# MD4C Readme
|
||||
|
||||
* Home: http://github.com/mity/md4c
|
||||
* Wiki: http://github.com/mity/md4c/wiki
|
||||
* Issue tracker: http://github.com/mity/md4c/issues
|
||||
|
||||
MD4C stands for "Markdown for C" and that's exactly what this project is about.
|
||||
|
||||
|
||||
## What is Markdown
|
||||
|
||||
In short, Markdown is the markup language this `README.md` file is written in.
|
||||
|
||||
The following resources can explain more if you are unfamiliar with it:
|
||||
* [Wikipedia article](http://en.wikipedia.org/wiki/Markdown)
|
||||
* [CommonMark site](http://commonmark.org)
|
||||
|
||||
|
||||
## What is MD4C
|
||||
|
||||
MD4C is Markdown parser implementation in C, with the following features:
|
||||
|
||||
* **Compliance:** Generally, MD4C aims to be compliant to the latest version of
|
||||
[CommonMark specification](http://spec.commonmark.org/). Currently, we are
|
||||
fully compliant to CommonMark 0.31.
|
||||
|
||||
* **Extensions:** MD4C supports some commonly requested and accepted extensions.
|
||||
See below.
|
||||
|
||||
* **Performance:** MD4C is [very fast](https://talk.commonmark.org/t/2520).
|
||||
|
||||
* **Compactness:** MD4C parser is implemented in one source file and one header
|
||||
file. There are no dependencies other than standard C library.
|
||||
|
||||
* **Embedding:** MD4C parser is easy to reuse in other projects, its API is
|
||||
very straightforward: There is actually just one function, `md_parse()`.
|
||||
|
||||
* **Push model:** MD4C parses the complete document and calls few callback
|
||||
functions provided by the application to inform it about a start/end of
|
||||
every block, a start/end of every span, and with any textual contents.
|
||||
|
||||
* **Portability:** MD4C builds and works on Windows and POSIX-compliant OSes.
|
||||
(It should be simple to make it run also on most other platforms, at least as
|
||||
long as the platform provides C standard library, including a heap memory
|
||||
management.)
|
||||
|
||||
* **Encoding:** MD4C by default expects UTF-8 encoding of the input document.
|
||||
But it can be compiled to recognize ASCII-only control characters (i.e. to
|
||||
disable all Unicode-specific code), or (on Windows) to expect UTF-16 (i.e.
|
||||
what is on Windows commonly called just "Unicode"). See more details below.
|
||||
|
||||
* **Permissive license:** MD4C is available under the [MIT license](LICENSE.md).
|
||||
|
||||
|
||||
## Using MD4C
|
||||
|
||||
### Parsing Markdown
|
||||
|
||||
If you need just to parse a Markdown document, you need to include `md4c.h`
|
||||
and link against MD4C library (`-lmd4c`); or alternatively add `md4c.[hc]`
|
||||
directly to your code base as the parser is only implemented in the single C
|
||||
source file.
|
||||
|
||||
The main provided function is `md_parse()`. It takes a text in the Markdown
|
||||
syntax and a pointer to a structure which provides pointers to several callback
|
||||
functions.
|
||||
|
||||
As `md_parse()` processes the input, it calls the callbacks (when entering or
|
||||
leaving any Markdown block or span; and when outputting any textual content of
|
||||
the document), allowing application to convert it into another format or render
|
||||
it onto the screen.
|
||||
|
||||
|
||||
### Converting to HTML
|
||||
|
||||
If you need to convert Markdown to HTML, include `md4c-html.h` and link against
|
||||
MD4C-HTML library (`-lmd4c-html`); or alternatively add the sources `md4c.[hc]`,
|
||||
`md4c-html.[hc]` and `entity.[hc]` into your code base.
|
||||
|
||||
To convert a Markdown input, call `md_html()` function. It takes the Markdown
|
||||
input and calls the provided callback function. The callback is fed with
|
||||
chunks of the HTML output. Typical callback implementation just appends the
|
||||
chunks into a buffer or writes them to a file.
|
||||
|
||||
|
||||
## Markdown Extensions
|
||||
|
||||
The default behavior is to recognize only Markdown syntax defined by the
|
||||
[CommonMark specification](http://spec.commonmark.org/).
|
||||
|
||||
However, with appropriate flags, the behavior can be tuned to enable some
|
||||
extensions:
|
||||
|
||||
* With the flag `MD_FLAG_COLLAPSEWHITESPACE`, a non-trivial whitespace is
|
||||
collapsed into a single space.
|
||||
|
||||
* With the flag `MD_FLAG_TABLES`, GitHub-style tables are supported.
|
||||
|
||||
* With the flag `MD_FLAG_TASKLISTS`, GitHub-style task lists are supported.
|
||||
|
||||
* With the flag `MD_FLAG_STRIKETHROUGH`, strike-through spans are enabled
|
||||
(text enclosed in tilde marks, e.g. `~foo bar~`).
|
||||
|
||||
* With the flag `MD_FLAG_PERMISSIVEURLAUTOLINKS` permissive URL autolinks
|
||||
(not enclosed in `<` and `>`) are supported.
|
||||
|
||||
* With the flag `MD_FLAG_PERMISSIVEEMAILAUTOLINKS`, permissive e-mail
|
||||
autolinks (not enclosed in `<` and `>`) are supported.
|
||||
|
||||
* With the flag `MD_FLAG_PERMISSIVEWWWAUTOLINKS` permissive WWW autolinks
|
||||
without any scheme specified (e.g. `www.example.com`) are supported. MD4C
|
||||
then assumes `http:` scheme.
|
||||
|
||||
* With the flag `MD_FLAG_LATEXMATHSPANS` LaTeX math spans (`$...$`) and
|
||||
LaTeX display math spans (`$$...$$`) are supported. (Note though that the
|
||||
HTML renderer outputs them verbatim in a custom tag `<x-equation>`.)
|
||||
|
||||
* With the flag `MD_FLAG_WIKILINKS`, wiki-style links (`[[link label]]` and
|
||||
`[[target article|link label]]`) are supported. (Note that the HTML renderer
|
||||
outputs them in a custom tag `<x-wikilink>`.)
|
||||
|
||||
* With the flag `MD_FLAG_UNDERLINE`, underscore (`_`) denotes an underline
|
||||
instead of an ordinary emphasis or strong emphasis.
|
||||
|
||||
Few features of CommonMark (those some people see as mis-features) may be
|
||||
disabled with the following flags:
|
||||
|
||||
* With the flag `MD_FLAG_NOHTMLSPANS` or `MD_FLAG_NOHTMLBLOCKS`, raw inline
|
||||
HTML or raw HTML blocks respectively are disabled.
|
||||
|
||||
* With the flag `MD_FLAG_NOINDENTEDCODEBLOCKS`, indented code blocks are
|
||||
disabled.
|
||||
|
||||
|
||||
## Input/Output Encoding
|
||||
|
||||
The CommonMark specification declares that any sequence of Unicode code points
|
||||
is a valid CommonMark document.
|
||||
|
||||
But, under a closer inspection, Unicode plays any role in few very specific
|
||||
situations when parsing Markdown documents:
|
||||
|
||||
1. For detection of word boundaries when processing emphasis and strong
|
||||
emphasis, some classification of Unicode characters (whether it is
|
||||
a whitespace or a punctuation) is needed.
|
||||
|
||||
2. For (case-insensitive) matching of a link reference label with the
|
||||
corresponding link reference definition, Unicode case folding is used.
|
||||
|
||||
3. For translating HTML entities (e.g. `&`) and numeric character
|
||||
references (e.g. `#` or `ಫ`) into their Unicode equivalents.
|
||||
|
||||
However note MD4C leaves this translation on the renderer/application; as
|
||||
the renderer is supposed to really know output encoding and whether it
|
||||
really needs to perform this kind of translation. (For example, when the
|
||||
renderer outputs HTML, it may leave the entities untranslated and defer the
|
||||
work to a web browser.)
|
||||
|
||||
MD4C relies on this property of the CommonMark and the implementation is, to
|
||||
a large degree, encoding-agnostic. Most of MD4C code only assumes that the
|
||||
encoding of your choice is compatible with ASCII. I.e. that the codepoints
|
||||
below 128 have the same numeric values as ASCII.
|
||||
|
||||
Any input MD4C does not understand is simply seen as part of the document text
|
||||
and sent to the renderer's callback functions unchanged.
|
||||
|
||||
The two situations (word boundary detection and link reference matching) where
|
||||
MD4C has to understand Unicode are handled as specified by the following
|
||||
preprocessor macros (as specified at the time MD4C is being built):
|
||||
|
||||
* If preprocessor macro `MD4C_USE_UTF8` is defined, MD4C assumes UTF-8 for the
|
||||
word boundary detection and for the case-insensitive matching of link labels.
|
||||
|
||||
When none of these macros is explicitly used, this is the default behavior.
|
||||
|
||||
* On Windows, if preprocessor macro `MD4C_USE_UTF16` is defined, MD4C uses
|
||||
`WCHAR` instead of `char` and assumes UTF-16 encoding in those situations.
|
||||
(UTF-16 is what Windows developers usually call just "Unicode" and what
|
||||
Win32API generally works with.)
|
||||
|
||||
Note that because this macro affects also the types in `md4c.h`, you have
|
||||
to define the macro both when building MD4C as well as when including
|
||||
`md4c.h`.
|
||||
|
||||
Also note this is only supported in the parser (`md4c.[hc]`). The HTML
|
||||
renderer does not support this and you will have to write your own custom
|
||||
renderer to use this feature.
|
||||
|
||||
* If preprocessor macro `MD4C_USE_ASCII` is defined, MD4C assumes nothing but
|
||||
an ASCII input.
|
||||
|
||||
That effectively means that non-ASCII whitespace or punctuation characters
|
||||
won't be recognized as such and that link reference matching will work in
|
||||
a case-insensitive way only for ASCII letters (`[a-zA-Z]`).
|
||||
|
||||
|
||||
## Documentation
|
||||
|
||||
The API of the parser is quite well documented in the comments in the `md4c.h`.
|
||||
Similarly, the markdown-to-html API is described in its header `md4c-html.h`.
|
||||
|
||||
There is also [project wiki](http://github.com/mity/md4c/wiki) which provides
|
||||
some more comprehensive documentation. However note it is incomplete and some
|
||||
details may be somewhat outdated.
|
||||
|
||||
|
||||
## FAQ
|
||||
|
||||
**Q: How does MD4C compare to other Markdown parsers?**
|
||||
|
||||
**A:** Some other implementations combine Markdown parser and HTML generator
|
||||
into a single entangled code hidden behind an interface which just allows the
|
||||
conversion from Markdown to HTML. They are often unusable if you want to
|
||||
process the input in any other way.
|
||||
|
||||
Second, most parsers (if not all of them; at least within the scope of C/C++
|
||||
language) are full DOM-like parsers: They construct abstract syntax tree (AST)
|
||||
representation of the whole Markdown document. That takes time and it leads to
|
||||
bigger memory footprint.
|
||||
|
||||
Building AST is completely fine as long as you need it. If you don't, there is
|
||||
a very high chance that using MD4C will be substantially faster and less hungry
|
||||
in terms of memory consumption.
|
||||
|
||||
Last but not least, some Markdown parsers are implemented in a naive way. When
|
||||
fed with a [smartly crafted input pattern](test/pathological_tests.py), they
|
||||
may exhibit quadratic (or even worse) parsing times. What MD4C can still parse
|
||||
in a fraction of second may turn into long minutes or possibly hours with them.
|
||||
Hence, when such a naive parser is used to process an input from an untrusted
|
||||
source, the possibility of denial-of-service attacks becomes a real danger.
|
||||
|
||||
A lot of our effort went into providing linear parsing times no matter what
|
||||
kind of crazy input MD4C parser is fed with. (If you encounter an input pattern
|
||||
which leads to a sub-linear parsing times, please do not hesitate and report it
|
||||
as a bug.)
|
||||
|
||||
**Q: Does MD4C perform any input validation?**
|
||||
|
||||
**A:** No. And we are proud of it. :-)
|
||||
|
||||
CommonMark specification states that any sequence of Unicode characters is
|
||||
a valid Markdown document. (In practice, this more or less always means UTF-8
|
||||
encoding.)
|
||||
|
||||
In other words, according to the specification, it does not matter whether some
|
||||
Markdown syntax construction is in some way broken or not. If it's broken, it
|
||||
won't be recognized and the parser should see it just as a verbatim text.
|
||||
|
||||
MD4C takes this a step further: It sees any sequence of bytes as a valid input,
|
||||
following completely the GIGO philosophy (garbage in, garbage out). I.e. any
|
||||
ill-formed UTF-8 byte sequence will propagate to the respective callback as
|
||||
a part of the text.
|
||||
|
||||
If you need to validate that the input is, say, a well-formed UTF-8 document,
|
||||
you have to do it on your own. The easiest way how to do this is to simply
|
||||
validate the whole document before passing it to the MD4C parser.
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MD4C is covered with MIT license, see the file `LICENSE.md`.
|
||||
|
||||
|
||||
## Links to Related Projects
|
||||
|
||||
Ports and bindings to other languages:
|
||||
|
||||
* [commonmark-d](https://github.com/AuburnSounds/commonmark-d):
|
||||
Port of MD4C to D language.
|
||||
|
||||
* [markdown-wasm](https://github.com/rsms/markdown-wasm):
|
||||
Port of MD4C to WebAssembly.
|
||||
|
||||
* [PyMD4C](https://github.com/dominickpastore/pymd4c):
|
||||
Python bindings for MD4C
|
||||
|
||||
Software using MD4C:
|
||||
|
||||
* [imgui_md](https://github.com/mekhontsev/imgui_md):
|
||||
Markdown renderer for [Dear ImGui](https://github.com/ocornut/imgui)
|
||||
|
||||
* [MarkDown Monolith Assembler](https://github.com/1Hyena/mdma):
|
||||
A command line tool for building browser-based books.
|
||||
|
||||
* [QOwnNotes](https://www.qownnotes.org/):
|
||||
A plain-text file notepad and todo-list manager with markdown support and
|
||||
ownCloud / Nextcloud integration.
|
||||
|
||||
* [Qt](https://www.qt.io/):
|
||||
Cross-platform C++ GUI framework.
|
||||
|
||||
* [Textosaurus](https://github.com/martinrotter/textosaurus):
|
||||
Cross-platform text editor based on Qt and Scintilla.
|
||||
|
||||
* [8th](https://8th-dev.com/):
|
||||
Cross-platform concatenative programming language.
|
||||
@@ -0,0 +1,53 @@
|
||||
|
||||
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS 1)
|
||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG")
|
||||
|
||||
|
||||
# Build rules for MD4C parser library
|
||||
|
||||
configure_file(md4c.pc.in md4c.pc @ONLY)
|
||||
add_library(md4c md4c.c md4c.h)
|
||||
set_target_properties(md4c PROPERTIES
|
||||
COMPILE_FLAGS "-DMD4C_USE_UTF8"
|
||||
VERSION ${MD_VERSION}
|
||||
SOVERSION ${MD_VERSION_MAJOR}
|
||||
PUBLIC_HEADER md4c.h
|
||||
)
|
||||
|
||||
# Build rules for HTML renderer library
|
||||
|
||||
configure_file(md4c-html.pc.in md4c-html.pc @ONLY)
|
||||
add_library(md4c-html md4c-html.c md4c-html.h entity.c entity.h)
|
||||
set_target_properties(md4c-html PROPERTIES
|
||||
VERSION ${MD_VERSION}
|
||||
SOVERSION ${MD_VERSION_MAJOR}
|
||||
PUBLIC_HEADER md4c-html.h
|
||||
)
|
||||
target_link_libraries(md4c-html md4c)
|
||||
|
||||
|
||||
# Install rules
|
||||
|
||||
#install(
|
||||
# TARGETS md4c
|
||||
# EXPORT md4cConfig
|
||||
# ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
# LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
# RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
# PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
# INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
#)
|
||||
#install(FILES ${CMAKE_BINARY_DIR}/src/md4c.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||
#
|
||||
#install(
|
||||
# TARGETS md4c-html
|
||||
# EXPORT md4cConfig
|
||||
# ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
# LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
# RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
# PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
#)
|
||||
#install(FILES ${CMAKE_BINARY_DIR}/src/md4c-html.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||
#
|
||||
#install(EXPORT md4cConfig DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/md4c/ NAMESPACE md4c::)
|
||||
#
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* MD4C: Markdown parser for C
|
||||
* (http://github.com/mity/md4c)
|
||||
*
|
||||
* Copyright (c) 2016-2024 Martin Mitáš
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef MD4C_ENTITY_H
|
||||
#define MD4C_ENTITY_H
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
/* Most entities are formed by single Unicode codepoint, few by two codepoints.
|
||||
* Single-codepoint entities have codepoints[1] set to zero. */
|
||||
typedef struct ENTITY_tag ENTITY;
|
||||
struct ENTITY_tag {
|
||||
const char* name;
|
||||
unsigned codepoints[2];
|
||||
};
|
||||
|
||||
const ENTITY* entity_lookup(const char* name, size_t name_size);
|
||||
|
||||
|
||||
#endif /* MD4C_ENTITY_H */
|
||||
@@ -0,0 +1,567 @@
|
||||
/*
|
||||
* MD4C: Markdown parser for C
|
||||
* (http://github.com/mity/md4c)
|
||||
*
|
||||
* Copyright (c) 2016-2024 Martin Mitáš
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "md4c-html.h"
|
||||
#include "entity.h"
|
||||
|
||||
|
||||
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199409L
|
||||
/* C89/90 or old compilers in general may not understand "inline". */
|
||||
#if defined __GNUC__
|
||||
#define inline __inline__
|
||||
#elif defined _MSC_VER
|
||||
#define inline __inline
|
||||
#else
|
||||
#define inline
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#define snprintf _snprintf
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
typedef struct MD_HTML_tag MD_HTML;
|
||||
struct MD_HTML_tag {
|
||||
void (*process_output)(const MD_CHAR*, MD_SIZE, void*);
|
||||
void* userdata;
|
||||
unsigned flags;
|
||||
int image_nesting_level;
|
||||
char escape_map[256];
|
||||
};
|
||||
|
||||
#define NEED_HTML_ESC_FLAG 0x1
|
||||
#define NEED_URL_ESC_FLAG 0x2
|
||||
|
||||
|
||||
/*****************************************
|
||||
*** HTML rendering helper functions ***
|
||||
*****************************************/
|
||||
|
||||
#define ISDIGIT(ch) ('0' <= (ch) && (ch) <= '9')
|
||||
#define ISLOWER(ch) ('a' <= (ch) && (ch) <= 'z')
|
||||
#define ISUPPER(ch) ('A' <= (ch) && (ch) <= 'Z')
|
||||
#define ISALNUM(ch) (ISLOWER(ch) || ISUPPER(ch) || ISDIGIT(ch))
|
||||
|
||||
|
||||
static inline void
|
||||
render_verbatim(MD_HTML* r, const MD_CHAR* text, MD_SIZE size)
|
||||
{
|
||||
r->process_output(text, size, r->userdata);
|
||||
}
|
||||
|
||||
/* Keep this as a macro. Most compiler should then be smart enough to replace
|
||||
* the strlen() call with a compile-time constant if the string is a C literal. */
|
||||
#define RENDER_VERBATIM(r, verbatim) \
|
||||
render_verbatim((r), (verbatim), (MD_SIZE) (strlen(verbatim)))
|
||||
|
||||
|
||||
static void
|
||||
render_html_escaped(MD_HTML* r, const MD_CHAR* data, MD_SIZE size)
|
||||
{
|
||||
MD_OFFSET beg = 0;
|
||||
MD_OFFSET off = 0;
|
||||
|
||||
/* Some characters need to be escaped in normal HTML text. */
|
||||
#define NEED_HTML_ESC(ch) (r->escape_map[(unsigned char)(ch)] & NEED_HTML_ESC_FLAG)
|
||||
|
||||
while(1) {
|
||||
/* Optimization: Use some loop unrolling. */
|
||||
while(off + 3 < size && !NEED_HTML_ESC(data[off+0]) && !NEED_HTML_ESC(data[off+1])
|
||||
&& !NEED_HTML_ESC(data[off+2]) && !NEED_HTML_ESC(data[off+3]))
|
||||
off += 4;
|
||||
while(off < size && !NEED_HTML_ESC(data[off]))
|
||||
off++;
|
||||
|
||||
if(off > beg)
|
||||
render_verbatim(r, data + beg, off - beg);
|
||||
|
||||
if(off < size) {
|
||||
switch(data[off]) {
|
||||
case '&': RENDER_VERBATIM(r, "&"); break;
|
||||
case '<': RENDER_VERBATIM(r, "<"); break;
|
||||
case '>': RENDER_VERBATIM(r, ">"); break;
|
||||
case '"': RENDER_VERBATIM(r, """); break;
|
||||
}
|
||||
off++;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
beg = off;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
render_url_escaped(MD_HTML* r, const MD_CHAR* data, MD_SIZE size)
|
||||
{
|
||||
static const MD_CHAR hex_chars[] = "0123456789ABCDEF";
|
||||
MD_OFFSET beg = 0;
|
||||
MD_OFFSET off = 0;
|
||||
|
||||
/* Some characters need to be escaped in URL attributes. */
|
||||
#define NEED_URL_ESC(ch) (r->escape_map[(unsigned char)(ch)] & NEED_URL_ESC_FLAG)
|
||||
|
||||
while(1) {
|
||||
while(off < size && !NEED_URL_ESC(data[off]))
|
||||
off++;
|
||||
if(off > beg)
|
||||
render_verbatim(r, data + beg, off - beg);
|
||||
|
||||
if(off < size) {
|
||||
char hex[3];
|
||||
|
||||
switch(data[off]) {
|
||||
case '&': RENDER_VERBATIM(r, "&"); break;
|
||||
default:
|
||||
hex[0] = '%';
|
||||
hex[1] = hex_chars[((unsigned)data[off] >> 4) & 0xf];
|
||||
hex[2] = hex_chars[((unsigned)data[off] >> 0) & 0xf];
|
||||
render_verbatim(r, hex, 3);
|
||||
break;
|
||||
}
|
||||
off++;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
|
||||
beg = off;
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned
|
||||
hex_val(char ch)
|
||||
{
|
||||
if('0' <= ch && ch <= '9')
|
||||
return ch - '0';
|
||||
if('A' <= ch && ch <= 'Z')
|
||||
return ch - 'A' + 10;
|
||||
else
|
||||
return ch - 'a' + 10;
|
||||
}
|
||||
|
||||
static void
|
||||
render_utf8_codepoint(MD_HTML* r, unsigned codepoint,
|
||||
void (*fn_append)(MD_HTML*, const MD_CHAR*, MD_SIZE))
|
||||
{
|
||||
static const MD_CHAR utf8_replacement_char[] = { (char)0xef, (char)0xbf, (char)0xbd };
|
||||
|
||||
unsigned char utf8[4];
|
||||
size_t n;
|
||||
|
||||
if(codepoint <= 0x7f) {
|
||||
n = 1;
|
||||
utf8[0] = codepoint;
|
||||
} else if(codepoint <= 0x7ff) {
|
||||
n = 2;
|
||||
utf8[0] = 0xc0 | ((codepoint >> 6) & 0x1f);
|
||||
utf8[1] = 0x80 + ((codepoint >> 0) & 0x3f);
|
||||
} else if(codepoint <= 0xffff) {
|
||||
n = 3;
|
||||
utf8[0] = 0xe0 | ((codepoint >> 12) & 0xf);
|
||||
utf8[1] = 0x80 + ((codepoint >> 6) & 0x3f);
|
||||
utf8[2] = 0x80 + ((codepoint >> 0) & 0x3f);
|
||||
} else {
|
||||
n = 4;
|
||||
utf8[0] = 0xf0 | ((codepoint >> 18) & 0x7);
|
||||
utf8[1] = 0x80 + ((codepoint >> 12) & 0x3f);
|
||||
utf8[2] = 0x80 + ((codepoint >> 6) & 0x3f);
|
||||
utf8[3] = 0x80 + ((codepoint >> 0) & 0x3f);
|
||||
}
|
||||
|
||||
if(0 < codepoint && codepoint <= 0x10ffff)
|
||||
fn_append(r, (char*)utf8, (MD_SIZE)n);
|
||||
else
|
||||
fn_append(r, utf8_replacement_char, 3);
|
||||
}
|
||||
|
||||
/* Translate entity to its UTF-8 equivalent, or output the verbatim one
|
||||
* if such entity is unknown (or if the translation is disabled). */
|
||||
static void
|
||||
render_entity(MD_HTML* r, const MD_CHAR* text, MD_SIZE size,
|
||||
void (*fn_append)(MD_HTML*, const MD_CHAR*, MD_SIZE))
|
||||
{
|
||||
if(r->flags & MD_HTML_FLAG_VERBATIM_ENTITIES) {
|
||||
render_verbatim(r, text, size);
|
||||
return;
|
||||
}
|
||||
|
||||
/* We assume UTF-8 output is what is desired. */
|
||||
if(size > 3 && text[1] == '#') {
|
||||
unsigned codepoint = 0;
|
||||
|
||||
if(text[2] == 'x' || text[2] == 'X') {
|
||||
/* Hexadecimal entity (e.g. "�")). */
|
||||
MD_SIZE i;
|
||||
for(i = 3; i < size-1; i++)
|
||||
codepoint = 16 * codepoint + hex_val(text[i]);
|
||||
} else {
|
||||
/* Decimal entity (e.g. "&1234;") */
|
||||
MD_SIZE i;
|
||||
for(i = 2; i < size-1; i++)
|
||||
codepoint = 10 * codepoint + (text[i] - '0');
|
||||
}
|
||||
|
||||
render_utf8_codepoint(r, codepoint, fn_append);
|
||||
return;
|
||||
} else {
|
||||
/* Named entity (e.g. " "). */
|
||||
const ENTITY* ent;
|
||||
|
||||
ent = entity_lookup(text, size);
|
||||
if(ent != NULL) {
|
||||
render_utf8_codepoint(r, ent->codepoints[0], fn_append);
|
||||
if(ent->codepoints[1])
|
||||
render_utf8_codepoint(r, ent->codepoints[1], fn_append);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
fn_append(r, text, size);
|
||||
}
|
||||
|
||||
static void
|
||||
render_attribute(MD_HTML* r, const MD_ATTRIBUTE* attr,
|
||||
void (*fn_append)(MD_HTML*, const MD_CHAR*, MD_SIZE))
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i = 0; attr->substr_offsets[i] < attr->size; i++) {
|
||||
MD_TEXTTYPE type = attr->substr_types[i];
|
||||
MD_OFFSET off = attr->substr_offsets[i];
|
||||
MD_SIZE size = attr->substr_offsets[i+1] - off;
|
||||
const MD_CHAR* text = attr->text + off;
|
||||
|
||||
switch(type) {
|
||||
case MD_TEXT_NULLCHAR: render_utf8_codepoint(r, 0x0000, render_verbatim); break;
|
||||
case MD_TEXT_ENTITY: render_entity(r, text, size, fn_append); break;
|
||||
default: fn_append(r, text, size); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
render_open_ol_block(MD_HTML* r, const MD_BLOCK_OL_DETAIL* det)
|
||||
{
|
||||
char buf[64];
|
||||
|
||||
if(det->start == 1) {
|
||||
RENDER_VERBATIM(r, "<ol>\n");
|
||||
return;
|
||||
}
|
||||
|
||||
snprintf(buf, sizeof(buf), "<ol start=\"%u\">\n", det->start);
|
||||
RENDER_VERBATIM(r, buf);
|
||||
}
|
||||
|
||||
static void
|
||||
render_open_li_block(MD_HTML* r, const MD_BLOCK_LI_DETAIL* det)
|
||||
{
|
||||
if(det->is_task) {
|
||||
RENDER_VERBATIM(r, "<li class=\"task-list-item\">"
|
||||
"<input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled");
|
||||
if(det->task_mark == 'x' || det->task_mark == 'X')
|
||||
RENDER_VERBATIM(r, " checked");
|
||||
RENDER_VERBATIM(r, ">");
|
||||
} else {
|
||||
RENDER_VERBATIM(r, "<li>");
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
render_open_code_block(MD_HTML* r, const MD_BLOCK_CODE_DETAIL* det)
|
||||
{
|
||||
RENDER_VERBATIM(r, "<pre><code");
|
||||
|
||||
/* If known, output the HTML 5 attribute class="language-LANGNAME". */
|
||||
if(det->lang.text != NULL) {
|
||||
RENDER_VERBATIM(r, " class=\"language-");
|
||||
render_attribute(r, &det->lang, render_html_escaped);
|
||||
RENDER_VERBATIM(r, "\"");
|
||||
}
|
||||
|
||||
RENDER_VERBATIM(r, ">");
|
||||
}
|
||||
|
||||
static void
|
||||
render_open_td_block(MD_HTML* r, const MD_CHAR* cell_type, const MD_BLOCK_TD_DETAIL* det)
|
||||
{
|
||||
RENDER_VERBATIM(r, "<");
|
||||
RENDER_VERBATIM(r, cell_type);
|
||||
|
||||
switch(det->align) {
|
||||
case MD_ALIGN_LEFT: RENDER_VERBATIM(r, " align=\"left\">"); break;
|
||||
case MD_ALIGN_CENTER: RENDER_VERBATIM(r, " align=\"center\">"); break;
|
||||
case MD_ALIGN_RIGHT: RENDER_VERBATIM(r, " align=\"right\">"); break;
|
||||
default: RENDER_VERBATIM(r, ">"); break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
render_open_a_span(MD_HTML* r, const MD_SPAN_A_DETAIL* det)
|
||||
{
|
||||
RENDER_VERBATIM(r, "<a href=\"");
|
||||
render_attribute(r, &det->href, render_url_escaped);
|
||||
|
||||
if(det->title.text != NULL) {
|
||||
RENDER_VERBATIM(r, "\" title=\"");
|
||||
render_attribute(r, &det->title, render_html_escaped);
|
||||
}
|
||||
|
||||
RENDER_VERBATIM(r, "\">");
|
||||
}
|
||||
|
||||
static void
|
||||
render_open_img_span(MD_HTML* r, const MD_SPAN_IMG_DETAIL* det)
|
||||
{
|
||||
RENDER_VERBATIM(r, "<img src=\"");
|
||||
render_attribute(r, &det->src, render_url_escaped);
|
||||
|
||||
RENDER_VERBATIM(r, "\" alt=\"");
|
||||
}
|
||||
|
||||
static void
|
||||
render_close_img_span(MD_HTML* r, const MD_SPAN_IMG_DETAIL* det)
|
||||
{
|
||||
if(det->title.text != NULL) {
|
||||
RENDER_VERBATIM(r, "\" title=\"");
|
||||
render_attribute(r, &det->title, render_html_escaped);
|
||||
}
|
||||
|
||||
RENDER_VERBATIM(r, (r->flags & MD_HTML_FLAG_XHTML) ? "\" />" : "\">");
|
||||
}
|
||||
|
||||
static void
|
||||
render_open_wikilink_span(MD_HTML* r, const MD_SPAN_WIKILINK_DETAIL* det)
|
||||
{
|
||||
RENDER_VERBATIM(r, "<x-wikilink data-target=\"");
|
||||
render_attribute(r, &det->target, render_html_escaped);
|
||||
|
||||
RENDER_VERBATIM(r, "\">");
|
||||
}
|
||||
|
||||
|
||||
/**************************************
|
||||
*** HTML renderer implementation ***
|
||||
**************************************/
|
||||
|
||||
static int
|
||||
enter_block_callback(MD_BLOCKTYPE type, void* detail, void* userdata)
|
||||
{
|
||||
static const MD_CHAR* head[6] = { "<h1>", "<h2>", "<h3>", "<h4>", "<h5>", "<h6>" };
|
||||
MD_HTML* r = (MD_HTML*) userdata;
|
||||
|
||||
switch(type) {
|
||||
case MD_BLOCK_DOC: /* noop */ break;
|
||||
case MD_BLOCK_QUOTE: RENDER_VERBATIM(r, "<blockquote>\n"); break;
|
||||
case MD_BLOCK_UL: RENDER_VERBATIM(r, "<ul>\n"); break;
|
||||
case MD_BLOCK_OL: render_open_ol_block(r, (const MD_BLOCK_OL_DETAIL*)detail); break;
|
||||
case MD_BLOCK_LI: render_open_li_block(r, (const MD_BLOCK_LI_DETAIL*)detail); break;
|
||||
case MD_BLOCK_HR: RENDER_VERBATIM(r, (r->flags & MD_HTML_FLAG_XHTML) ? "<hr />\n" : "<hr>\n"); break;
|
||||
case MD_BLOCK_H: RENDER_VERBATIM(r, head[((MD_BLOCK_H_DETAIL*)detail)->level - 1]); break;
|
||||
case MD_BLOCK_CODE: render_open_code_block(r, (const MD_BLOCK_CODE_DETAIL*) detail); break;
|
||||
case MD_BLOCK_HTML: /* noop */ break;
|
||||
case MD_BLOCK_P: RENDER_VERBATIM(r, "<p>"); break;
|
||||
case MD_BLOCK_TABLE: RENDER_VERBATIM(r, "<table>\n"); break;
|
||||
case MD_BLOCK_THEAD: RENDER_VERBATIM(r, "<thead>\n"); break;
|
||||
case MD_BLOCK_TBODY: RENDER_VERBATIM(r, "<tbody>\n"); break;
|
||||
case MD_BLOCK_TR: RENDER_VERBATIM(r, "<tr>\n"); break;
|
||||
case MD_BLOCK_TH: render_open_td_block(r, "th", (MD_BLOCK_TD_DETAIL*)detail); break;
|
||||
case MD_BLOCK_TD: render_open_td_block(r, "td", (MD_BLOCK_TD_DETAIL*)detail); break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
leave_block_callback(MD_BLOCKTYPE type, void* detail, void* userdata)
|
||||
{
|
||||
static const MD_CHAR* head[6] = { "</h1>\n", "</h2>\n", "</h3>\n", "</h4>\n", "</h5>\n", "</h6>\n" };
|
||||
MD_HTML* r = (MD_HTML*) userdata;
|
||||
|
||||
switch(type) {
|
||||
case MD_BLOCK_DOC: /*noop*/ break;
|
||||
case MD_BLOCK_QUOTE: RENDER_VERBATIM(r, "</blockquote>\n"); break;
|
||||
case MD_BLOCK_UL: RENDER_VERBATIM(r, "</ul>\n"); break;
|
||||
case MD_BLOCK_OL: RENDER_VERBATIM(r, "</ol>\n"); break;
|
||||
case MD_BLOCK_LI: RENDER_VERBATIM(r, "</li>\n"); break;
|
||||
case MD_BLOCK_HR: /*noop*/ break;
|
||||
case MD_BLOCK_H: RENDER_VERBATIM(r, head[((MD_BLOCK_H_DETAIL*)detail)->level - 1]); break;
|
||||
case MD_BLOCK_CODE: RENDER_VERBATIM(r, "</code></pre>\n"); break;
|
||||
case MD_BLOCK_HTML: /* noop */ break;
|
||||
case MD_BLOCK_P: RENDER_VERBATIM(r, "</p>\n"); break;
|
||||
case MD_BLOCK_TABLE: RENDER_VERBATIM(r, "</table>\n"); break;
|
||||
case MD_BLOCK_THEAD: RENDER_VERBATIM(r, "</thead>\n"); break;
|
||||
case MD_BLOCK_TBODY: RENDER_VERBATIM(r, "</tbody>\n"); break;
|
||||
case MD_BLOCK_TR: RENDER_VERBATIM(r, "</tr>\n"); break;
|
||||
case MD_BLOCK_TH: RENDER_VERBATIM(r, "</th>\n"); break;
|
||||
case MD_BLOCK_TD: RENDER_VERBATIM(r, "</td>\n"); break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
enter_span_callback(MD_SPANTYPE type, void* detail, void* userdata)
|
||||
{
|
||||
MD_HTML* r = (MD_HTML*) userdata;
|
||||
int inside_img = (r->image_nesting_level > 0);
|
||||
|
||||
/* We are inside a Markdown image label. Markdown allows to use any emphasis
|
||||
* and other rich contents in that context similarly as in any link label.
|
||||
*
|
||||
* However, unlike in the case of links (where that contents becomescontents
|
||||
* of the <a>...</a> tag), in the case of images the contents is supposed to
|
||||
* fall into the attribute alt: <img alt="...">.
|
||||
*
|
||||
* In that context we naturally cannot output nested HTML tags. So lets
|
||||
* suppress them and only output the plain text (i.e. what falls into text()
|
||||
* callback).
|
||||
*
|
||||
* CommonMark specification declares this a recommended practice for HTML
|
||||
* output.
|
||||
*/
|
||||
if(type == MD_SPAN_IMG)
|
||||
r->image_nesting_level++;
|
||||
if(inside_img)
|
||||
return 0;
|
||||
|
||||
switch(type) {
|
||||
case MD_SPAN_EM: RENDER_VERBATIM(r, "<em>"); break;
|
||||
case MD_SPAN_STRONG: RENDER_VERBATIM(r, "<strong>"); break;
|
||||
case MD_SPAN_U: RENDER_VERBATIM(r, "<u>"); break;
|
||||
case MD_SPAN_A: render_open_a_span(r, (MD_SPAN_A_DETAIL*) detail); break;
|
||||
case MD_SPAN_IMG: render_open_img_span(r, (MD_SPAN_IMG_DETAIL*) detail); break;
|
||||
case MD_SPAN_CODE: RENDER_VERBATIM(r, "<code>"); break;
|
||||
case MD_SPAN_DEL: RENDER_VERBATIM(r, "<del>"); break;
|
||||
case MD_SPAN_LATEXMATH: RENDER_VERBATIM(r, "<x-equation>"); break;
|
||||
case MD_SPAN_LATEXMATH_DISPLAY: RENDER_VERBATIM(r, "<x-equation type=\"display\">"); break;
|
||||
case MD_SPAN_WIKILINK: render_open_wikilink_span(r, (MD_SPAN_WIKILINK_DETAIL*) detail); break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
leave_span_callback(MD_SPANTYPE type, void* detail, void* userdata)
|
||||
{
|
||||
MD_HTML* r = (MD_HTML*) userdata;
|
||||
|
||||
if(type == MD_SPAN_IMG)
|
||||
r->image_nesting_level--;
|
||||
if(r->image_nesting_level > 0)
|
||||
return 0;
|
||||
|
||||
switch(type) {
|
||||
case MD_SPAN_EM: RENDER_VERBATIM(r, "</em>"); break;
|
||||
case MD_SPAN_STRONG: RENDER_VERBATIM(r, "</strong>"); break;
|
||||
case MD_SPAN_U: RENDER_VERBATIM(r, "</u>"); break;
|
||||
case MD_SPAN_A: RENDER_VERBATIM(r, "</a>"); break;
|
||||
case MD_SPAN_IMG: render_close_img_span(r, (MD_SPAN_IMG_DETAIL*) detail); break;
|
||||
case MD_SPAN_CODE: RENDER_VERBATIM(r, "</code>"); break;
|
||||
case MD_SPAN_DEL: RENDER_VERBATIM(r, "</del>"); break;
|
||||
case MD_SPAN_LATEXMATH: /*fall through*/
|
||||
case MD_SPAN_LATEXMATH_DISPLAY: RENDER_VERBATIM(r, "</x-equation>"); break;
|
||||
case MD_SPAN_WIKILINK: RENDER_VERBATIM(r, "</x-wikilink>"); break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
text_callback(MD_TEXTTYPE type, const MD_CHAR* text, MD_SIZE size, void* userdata)
|
||||
{
|
||||
MD_HTML* r = (MD_HTML*) userdata;
|
||||
|
||||
switch(type) {
|
||||
case MD_TEXT_NULLCHAR: render_utf8_codepoint(r, 0x0000, render_verbatim); break;
|
||||
case MD_TEXT_BR: RENDER_VERBATIM(r, (r->image_nesting_level == 0
|
||||
? ((r->flags & MD_HTML_FLAG_XHTML) ? "<br />\n" : "<br>\n")
|
||||
: " "));
|
||||
break;
|
||||
case MD_TEXT_SOFTBR: RENDER_VERBATIM(r, (r->image_nesting_level == 0 ? "\n" : " ")); break;
|
||||
case MD_TEXT_HTML: render_verbatim(r, text, size); break;
|
||||
case MD_TEXT_ENTITY: render_entity(r, text, size, render_html_escaped); break;
|
||||
default: render_html_escaped(r, text, size); break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
debug_log_callback(const char* msg, void* userdata)
|
||||
{
|
||||
MD_HTML* r = (MD_HTML*) userdata;
|
||||
if(r->flags & MD_HTML_FLAG_DEBUG)
|
||||
fprintf(stderr, "MD4C: %s\n", msg);
|
||||
}
|
||||
|
||||
int
|
||||
md_html(const MD_CHAR* input, MD_SIZE input_size,
|
||||
void (*process_output)(const MD_CHAR*, MD_SIZE, void*),
|
||||
void* userdata, unsigned parser_flags, unsigned renderer_flags)
|
||||
{
|
||||
MD_HTML render = { process_output, userdata, renderer_flags, 0, { 0 } };
|
||||
int i;
|
||||
|
||||
MD_PARSER parser = {
|
||||
0,
|
||||
parser_flags,
|
||||
enter_block_callback,
|
||||
leave_block_callback,
|
||||
enter_span_callback,
|
||||
leave_span_callback,
|
||||
text_callback,
|
||||
debug_log_callback,
|
||||
NULL
|
||||
};
|
||||
|
||||
/* Build map of characters which need escaping. */
|
||||
for(i = 0; i < 256; i++) {
|
||||
unsigned char ch = (unsigned char) i;
|
||||
|
||||
if(strchr("\"&<>", ch) != NULL)
|
||||
render.escape_map[i] |= NEED_HTML_ESC_FLAG;
|
||||
|
||||
if(!ISALNUM(ch) && strchr("~-_.+!*(),%#@?=;:/,+$", ch) == NULL)
|
||||
render.escape_map[i] |= NEED_URL_ESC_FLAG;
|
||||
}
|
||||
|
||||
/* Consider skipping UTF-8 byte order mark (BOM). */
|
||||
if(renderer_flags & MD_HTML_FLAG_SKIP_UTF8_BOM && sizeof(MD_CHAR) == 1) {
|
||||
static const MD_CHAR bom[3] = { (char)0xef, (char)0xbb, (char)0xbf };
|
||||
if(input_size >= sizeof(bom) && memcmp(input, bom, sizeof(bom)) == 0) {
|
||||
input += sizeof(bom);
|
||||
input_size -= sizeof(bom);
|
||||
}
|
||||
}
|
||||
|
||||
return md_parse(input, input_size, &parser, (void*) &render);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* MD4C: Markdown parser for C
|
||||
* (http://github.com/mity/md4c)
|
||||
*
|
||||
* Copyright (c) 2016-2024 Martin Mitáš
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef MD4C_HTML_H
|
||||
#define MD4C_HTML_H
|
||||
|
||||
#include "md4c.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/* If set, debug output from md_parse() is sent to stderr. */
|
||||
#define MD_HTML_FLAG_DEBUG 0x0001
|
||||
#define MD_HTML_FLAG_VERBATIM_ENTITIES 0x0002
|
||||
#define MD_HTML_FLAG_SKIP_UTF8_BOM 0x0004
|
||||
#define MD_HTML_FLAG_XHTML 0x0008
|
||||
|
||||
|
||||
/* Render Markdown into HTML.
|
||||
*
|
||||
* Note only contents of <body> tag is generated. Caller must generate
|
||||
* HTML header/footer manually before/after calling md_html().
|
||||
*
|
||||
* Params input and input_size specify the Markdown input.
|
||||
* Callback process_output() gets called with chunks of HTML output.
|
||||
* (Typical implementation may just output the bytes to a file or append to
|
||||
* some buffer).
|
||||
* Param userdata is just propagated back to process_output() callback.
|
||||
* Param parser_flags are flags from md4c.h propagated to md_parse().
|
||||
* Param render_flags is bitmask of MD_HTML_FLAG_xxxx.
|
||||
*
|
||||
* Returns -1 on error (if md_parse() fails.)
|
||||
* Returns 0 on success.
|
||||
*/
|
||||
int md_html(const MD_CHAR* input, MD_SIZE input_size,
|
||||
void (*process_output)(const MD_CHAR*, MD_SIZE, void*),
|
||||
void* userdata, unsigned parser_flags, unsigned renderer_flags);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" { */
|
||||
#endif
|
||||
|
||||
#endif /* MD4C_HTML_H */
|
||||
@@ -0,0 +1,13 @@
|
||||
prefix=@CMAKE_INSTALL_PREFIX@
|
||||
exec_prefix=@CMAKE_INSTALL_PREFIX@
|
||||
libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
|
||||
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
||||
|
||||
Name: @PROJECT_NAME@ HTML renderer
|
||||
Description: Markdown to HTML converter library.
|
||||
Version: @PROJECT_VERSION@
|
||||
URL: @PROJECT_URL@
|
||||
|
||||
Requires: md4c = @PROJECT_VERSION@
|
||||
Libs: -L${libdir} -lmd4c-html
|
||||
Cflags: -I${includedir}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,407 @@
|
||||
/*
|
||||
* MD4C: Markdown parser for C
|
||||
* (http://github.com/mity/md4c)
|
||||
*
|
||||
* Copyright (c) 2016-2024 Martin Mitáš
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef MD4C_H
|
||||
#define MD4C_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if defined MD4C_USE_UTF16
|
||||
/* Magic to support UTF-16. Note that in order to use it, you have to define
|
||||
* the macro MD4C_USE_UTF16 both when building MD4C as well as when
|
||||
* including this header in your code. */
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
typedef WCHAR MD_CHAR;
|
||||
#else
|
||||
#error MD4C_USE_UTF16 is only supported on Windows.
|
||||
#endif
|
||||
#else
|
||||
typedef char MD_CHAR;
|
||||
#endif
|
||||
|
||||
typedef unsigned MD_SIZE;
|
||||
typedef unsigned MD_OFFSET;
|
||||
|
||||
|
||||
/* Block represents a part of document hierarchy structure like a paragraph
|
||||
* or list item.
|
||||
*/
|
||||
typedef enum MD_BLOCKTYPE {
|
||||
/* <body>...</body> */
|
||||
MD_BLOCK_DOC = 0,
|
||||
|
||||
/* <blockquote>...</blockquote> */
|
||||
MD_BLOCK_QUOTE,
|
||||
|
||||
/* <ul>...</ul>
|
||||
* Detail: Structure MD_BLOCK_UL_DETAIL. */
|
||||
MD_BLOCK_UL,
|
||||
|
||||
/* <ol>...</ol>
|
||||
* Detail: Structure MD_BLOCK_OL_DETAIL. */
|
||||
MD_BLOCK_OL,
|
||||
|
||||
/* <li>...</li>
|
||||
* Detail: Structure MD_BLOCK_LI_DETAIL. */
|
||||
MD_BLOCK_LI,
|
||||
|
||||
/* <hr> */
|
||||
MD_BLOCK_HR,
|
||||
|
||||
/* <h1>...</h1> (for levels up to 6)
|
||||
* Detail: Structure MD_BLOCK_H_DETAIL. */
|
||||
MD_BLOCK_H,
|
||||
|
||||
/* <pre><code>...</code></pre>
|
||||
* Note the text lines within code blocks are terminated with '\n'
|
||||
* instead of explicit MD_TEXT_BR. */
|
||||
MD_BLOCK_CODE,
|
||||
|
||||
/* Raw HTML block. This itself does not correspond to any particular HTML
|
||||
* tag. The contents of it _is_ raw HTML source intended to be put
|
||||
* in verbatim form to the HTML output. */
|
||||
MD_BLOCK_HTML,
|
||||
|
||||
/* <p>...</p> */
|
||||
MD_BLOCK_P,
|
||||
|
||||
/* <table>...</table> and its contents.
|
||||
* Detail: Structure MD_BLOCK_TABLE_DETAIL (for MD_BLOCK_TABLE),
|
||||
* structure MD_BLOCK_TD_DETAIL (for MD_BLOCK_TH and MD_BLOCK_TD)
|
||||
* Note all of these are used only if extension MD_FLAG_TABLES is enabled. */
|
||||
MD_BLOCK_TABLE,
|
||||
MD_BLOCK_THEAD,
|
||||
MD_BLOCK_TBODY,
|
||||
MD_BLOCK_TR,
|
||||
MD_BLOCK_TH,
|
||||
MD_BLOCK_TD
|
||||
} MD_BLOCKTYPE;
|
||||
|
||||
/* Span represents an in-line piece of a document which should be rendered with
|
||||
* the same font, color and other attributes. A sequence of spans forms a block
|
||||
* like paragraph or list item. */
|
||||
typedef enum MD_SPANTYPE {
|
||||
/* <em>...</em> */
|
||||
MD_SPAN_EM,
|
||||
|
||||
/* <strong>...</strong> */
|
||||
MD_SPAN_STRONG,
|
||||
|
||||
/* <a href="xxx">...</a>
|
||||
* Detail: Structure MD_SPAN_A_DETAIL. */
|
||||
MD_SPAN_A,
|
||||
|
||||
/* <img src="xxx">...</a>
|
||||
* Detail: Structure MD_SPAN_IMG_DETAIL.
|
||||
* Note: Image text can contain nested spans and even nested images.
|
||||
* If rendered into ALT attribute of HTML <IMG> tag, it's responsibility
|
||||
* of the parser to deal with it.
|
||||
*/
|
||||
MD_SPAN_IMG,
|
||||
|
||||
/* <code>...</code> */
|
||||
MD_SPAN_CODE,
|
||||
|
||||
/* <del>...</del>
|
||||
* Note: Recognized only when MD_FLAG_STRIKETHROUGH is enabled.
|
||||
*/
|
||||
MD_SPAN_DEL,
|
||||
|
||||
/* For recognizing inline ($) and display ($$) equations
|
||||
* Note: Recognized only when MD_FLAG_LATEXMATHSPANS is enabled.
|
||||
*/
|
||||
MD_SPAN_LATEXMATH,
|
||||
MD_SPAN_LATEXMATH_DISPLAY,
|
||||
|
||||
/* Wiki links
|
||||
* Note: Recognized only when MD_FLAG_WIKILINKS is enabled.
|
||||
*/
|
||||
MD_SPAN_WIKILINK,
|
||||
|
||||
/* <u>...</u>
|
||||
* Note: Recognized only when MD_FLAG_UNDERLINE is enabled. */
|
||||
MD_SPAN_U
|
||||
} MD_SPANTYPE;
|
||||
|
||||
/* Text is the actual textual contents of span. */
|
||||
typedef enum MD_TEXTTYPE {
|
||||
/* Normal text. */
|
||||
MD_TEXT_NORMAL = 0,
|
||||
|
||||
/* NULL character. CommonMark requires replacing NULL character with
|
||||
* the replacement char U+FFFD, so this allows caller to do that easily. */
|
||||
MD_TEXT_NULLCHAR,
|
||||
|
||||
/* Line breaks.
|
||||
* Note these are not sent from blocks with verbatim output (MD_BLOCK_CODE
|
||||
* or MD_BLOCK_HTML). In such cases, '\n' is part of the text itself. */
|
||||
MD_TEXT_BR, /* <br> (hard break) */
|
||||
MD_TEXT_SOFTBR, /* '\n' in source text where it is not semantically meaningful (soft break) */
|
||||
|
||||
/* Entity.
|
||||
* (a) Named entity, e.g.
|
||||
* (Note MD4C does not have a list of known entities.
|
||||
* Anything matching the regexp /&[A-Za-z][A-Za-z0-9]{1,47};/ is
|
||||
* treated as a named entity.)
|
||||
* (b) Numerical entity, e.g. Ӓ
|
||||
* (c) Hexadecimal entity, e.g. ካ
|
||||
*
|
||||
* As MD4C is mostly encoding agnostic, application gets the verbatim
|
||||
* entity text into the MD_PARSER::text_callback(). */
|
||||
MD_TEXT_ENTITY,
|
||||
|
||||
/* Text in a code block (inside MD_BLOCK_CODE) or inlined code (`code`).
|
||||
* If it is inside MD_BLOCK_CODE, it includes spaces for indentation and
|
||||
* '\n' for new lines. MD_TEXT_BR and MD_TEXT_SOFTBR are not sent for this
|
||||
* kind of text. */
|
||||
MD_TEXT_CODE,
|
||||
|
||||
/* Text is a raw HTML. If it is contents of a raw HTML block (i.e. not
|
||||
* an inline raw HTML), then MD_TEXT_BR and MD_TEXT_SOFTBR are not used.
|
||||
* The text contains verbatim '\n' for the new lines. */
|
||||
MD_TEXT_HTML,
|
||||
|
||||
/* Text is inside an equation. This is processed the same way as inlined code
|
||||
* spans (`code`). */
|
||||
MD_TEXT_LATEXMATH
|
||||
} MD_TEXTTYPE;
|
||||
|
||||
|
||||
/* Alignment enumeration. */
|
||||
typedef enum MD_ALIGN {
|
||||
MD_ALIGN_DEFAULT = 0, /* When unspecified. */
|
||||
MD_ALIGN_LEFT,
|
||||
MD_ALIGN_CENTER,
|
||||
MD_ALIGN_RIGHT
|
||||
} MD_ALIGN;
|
||||
|
||||
|
||||
/* String attribute.
|
||||
*
|
||||
* This wraps strings which are outside of a normal text flow and which are
|
||||
* propagated within various detailed structures, but which still may contain
|
||||
* string portions of different types like e.g. entities.
|
||||
*
|
||||
* So, for example, lets consider this image:
|
||||
*
|
||||
* 
|
||||
*
|
||||
* The image alt text is propagated as a normal text via the MD_PARSER::text()
|
||||
* callback. However, the image title ('foo " bar') is propagated as
|
||||
* MD_ATTRIBUTE in MD_SPAN_IMG_DETAIL::title.
|
||||
*
|
||||
* Then the attribute MD_SPAN_IMG_DETAIL::title shall provide the following:
|
||||
* -- [0]: "foo " (substr_types[0] == MD_TEXT_NORMAL; substr_offsets[0] == 0)
|
||||
* -- [1]: """ (substr_types[1] == MD_TEXT_ENTITY; substr_offsets[1] == 4)
|
||||
* -- [2]: " bar" (substr_types[2] == MD_TEXT_NORMAL; substr_offsets[2] == 10)
|
||||
* -- [3]: (n/a) (n/a ; substr_offsets[3] == 14)
|
||||
*
|
||||
* Note that these invariants are always guaranteed:
|
||||
* -- substr_offsets[0] == 0
|
||||
* -- substr_offsets[LAST+1] == size
|
||||
* -- Currently, only MD_TEXT_NORMAL, MD_TEXT_ENTITY, MD_TEXT_NULLCHAR
|
||||
* substrings can appear. This could change only of the specification
|
||||
* changes.
|
||||
*/
|
||||
typedef struct MD_ATTRIBUTE {
|
||||
const MD_CHAR* text;
|
||||
MD_SIZE size;
|
||||
const MD_TEXTTYPE* substr_types;
|
||||
const MD_OFFSET* substr_offsets;
|
||||
} MD_ATTRIBUTE;
|
||||
|
||||
|
||||
/* Detailed info for MD_BLOCK_UL. */
|
||||
typedef struct MD_BLOCK_UL_DETAIL {
|
||||
int is_tight; /* Non-zero if tight list, zero if loose. */
|
||||
MD_CHAR mark; /* Item bullet character in MarkDown source of the list, e.g. '-', '+', '*'. */
|
||||
} MD_BLOCK_UL_DETAIL;
|
||||
|
||||
/* Detailed info for MD_BLOCK_OL. */
|
||||
typedef struct MD_BLOCK_OL_DETAIL {
|
||||
unsigned start; /* Start index of the ordered list. */
|
||||
int is_tight; /* Non-zero if tight list, zero if loose. */
|
||||
MD_CHAR mark_delimiter; /* Character delimiting the item marks in MarkDown source, e.g. '.' or ')' */
|
||||
} MD_BLOCK_OL_DETAIL;
|
||||
|
||||
/* Detailed info for MD_BLOCK_LI. */
|
||||
typedef struct MD_BLOCK_LI_DETAIL {
|
||||
int is_task; /* Can be non-zero only with MD_FLAG_TASKLISTS */
|
||||
MD_CHAR task_mark; /* If is_task, then one of 'x', 'X' or ' '. Undefined otherwise. */
|
||||
MD_OFFSET task_mark_offset; /* If is_task, then offset in the input of the char between '[' and ']'. */
|
||||
} MD_BLOCK_LI_DETAIL;
|
||||
|
||||
/* Detailed info for MD_BLOCK_H. */
|
||||
typedef struct MD_BLOCK_H_DETAIL {
|
||||
unsigned level; /* Header level (1 - 6) */
|
||||
} MD_BLOCK_H_DETAIL;
|
||||
|
||||
/* Detailed info for MD_BLOCK_CODE. */
|
||||
typedef struct MD_BLOCK_CODE_DETAIL {
|
||||
MD_ATTRIBUTE info;
|
||||
MD_ATTRIBUTE lang;
|
||||
MD_CHAR fence_char; /* The character used for fenced code block; or zero for indented code block. */
|
||||
} MD_BLOCK_CODE_DETAIL;
|
||||
|
||||
/* Detailed info for MD_BLOCK_TABLE. */
|
||||
typedef struct MD_BLOCK_TABLE_DETAIL {
|
||||
unsigned col_count; /* Count of columns in the table. */
|
||||
unsigned head_row_count; /* Count of rows in the table header (currently always 1) */
|
||||
unsigned body_row_count; /* Count of rows in the table body */
|
||||
} MD_BLOCK_TABLE_DETAIL;
|
||||
|
||||
/* Detailed info for MD_BLOCK_TH and MD_BLOCK_TD. */
|
||||
typedef struct MD_BLOCK_TD_DETAIL {
|
||||
MD_ALIGN align;
|
||||
} MD_BLOCK_TD_DETAIL;
|
||||
|
||||
/* Detailed info for MD_SPAN_A. */
|
||||
typedef struct MD_SPAN_A_DETAIL {
|
||||
MD_ATTRIBUTE href;
|
||||
MD_ATTRIBUTE title;
|
||||
int is_autolink; /* nonzero if this is an autolink */
|
||||
} MD_SPAN_A_DETAIL;
|
||||
|
||||
/* Detailed info for MD_SPAN_IMG. */
|
||||
typedef struct MD_SPAN_IMG_DETAIL {
|
||||
MD_ATTRIBUTE src;
|
||||
MD_ATTRIBUTE title;
|
||||
} MD_SPAN_IMG_DETAIL;
|
||||
|
||||
/* Detailed info for MD_SPAN_WIKILINK. */
|
||||
typedef struct MD_SPAN_WIKILINK {
|
||||
MD_ATTRIBUTE target;
|
||||
} MD_SPAN_WIKILINK_DETAIL;
|
||||
|
||||
/* Flags specifying extensions/deviations from CommonMark specification.
|
||||
*
|
||||
* By default (when MD_PARSER::flags == 0), we follow CommonMark specification.
|
||||
* The following flags may allow some extensions or deviations from it.
|
||||
*/
|
||||
#define MD_FLAG_COLLAPSEWHITESPACE 0x0001 /* In MD_TEXT_NORMAL, collapse non-trivial whitespace into single ' ' */
|
||||
#define MD_FLAG_PERMISSIVEATXHEADERS 0x0002 /* Do not require space in ATX headers ( ###header ) */
|
||||
#define MD_FLAG_PERMISSIVEURLAUTOLINKS 0x0004 /* Recognize URLs as autolinks even without '<', '>' */
|
||||
#define MD_FLAG_PERMISSIVEEMAILAUTOLINKS 0x0008 /* Recognize e-mails as autolinks even without '<', '>' and 'mailto:' */
|
||||
#define MD_FLAG_NOINDENTEDCODEBLOCKS 0x0010 /* Disable indented code blocks. (Only fenced code works.) */
|
||||
#define MD_FLAG_NOHTMLBLOCKS 0x0020 /* Disable raw HTML blocks. */
|
||||
#define MD_FLAG_NOHTMLSPANS 0x0040 /* Disable raw HTML (inline). */
|
||||
#define MD_FLAG_TABLES 0x0100 /* Enable tables extension. */
|
||||
#define MD_FLAG_STRIKETHROUGH 0x0200 /* Enable strikethrough extension. */
|
||||
#define MD_FLAG_PERMISSIVEWWWAUTOLINKS 0x0400 /* Enable WWW autolinks (even without any scheme prefix, if they begin with 'www.') */
|
||||
#define MD_FLAG_TASKLISTS 0x0800 /* Enable task list extension. */
|
||||
#define MD_FLAG_LATEXMATHSPANS 0x1000 /* Enable $ and $$ containing LaTeX equations. */
|
||||
#define MD_FLAG_WIKILINKS 0x2000 /* Enable wiki links extension. */
|
||||
#define MD_FLAG_UNDERLINE 0x4000 /* Enable underline extension (and disables '_' for normal emphasis). */
|
||||
#define MD_FLAG_HARD_SOFT_BREAKS 0x8000 /* Force all soft breaks to act as hard breaks. */
|
||||
|
||||
#define MD_FLAG_PERMISSIVEAUTOLINKS (MD_FLAG_PERMISSIVEEMAILAUTOLINKS | MD_FLAG_PERMISSIVEURLAUTOLINKS | MD_FLAG_PERMISSIVEWWWAUTOLINKS)
|
||||
#define MD_FLAG_NOHTML (MD_FLAG_NOHTMLBLOCKS | MD_FLAG_NOHTMLSPANS)
|
||||
|
||||
/* Convenient sets of flags corresponding to well-known Markdown dialects.
|
||||
*
|
||||
* Note we may only support subset of features of the referred dialect.
|
||||
* The constant just enables those extensions which bring us as close as
|
||||
* possible given what features we implement.
|
||||
*
|
||||
* ABI compatibility note: Meaning of these can change in time as new
|
||||
* extensions, bringing the dialect closer to the original, are implemented.
|
||||
*/
|
||||
#define MD_DIALECT_COMMONMARK 0
|
||||
#define MD_DIALECT_GITHUB (MD_FLAG_PERMISSIVEAUTOLINKS | MD_FLAG_TABLES | MD_FLAG_STRIKETHROUGH | MD_FLAG_TASKLISTS)
|
||||
|
||||
/* Parser structure.
|
||||
*/
|
||||
typedef struct MD_PARSER {
|
||||
/* Reserved. Set to zero.
|
||||
*/
|
||||
unsigned abi_version;
|
||||
|
||||
/* Dialect options. Bitmask of MD_FLAG_xxxx values.
|
||||
*/
|
||||
unsigned flags;
|
||||
|
||||
/* Caller-provided rendering callbacks.
|
||||
*
|
||||
* For some block/span types, more detailed information is provided in a
|
||||
* type-specific structure pointed by the argument 'detail'.
|
||||
*
|
||||
* The last argument of all callbacks, 'userdata', is just propagated from
|
||||
* md_parse() and is available for any use by the application.
|
||||
*
|
||||
* Note any strings provided to the callbacks as their arguments or as
|
||||
* members of any detail structure are generally not zero-terminated.
|
||||
* Application has to take the respective size information into account.
|
||||
*
|
||||
* Any rendering callback may abort further parsing of the document by
|
||||
* returning non-zero.
|
||||
*/
|
||||
int (*enter_block)(MD_BLOCKTYPE /*type*/, void* /*detail*/, void* /*userdata*/);
|
||||
int (*leave_block)(MD_BLOCKTYPE /*type*/, void* /*detail*/, void* /*userdata*/);
|
||||
|
||||
int (*enter_span)(MD_SPANTYPE /*type*/, void* /*detail*/, void* /*userdata*/);
|
||||
int (*leave_span)(MD_SPANTYPE /*type*/, void* /*detail*/, void* /*userdata*/);
|
||||
|
||||
int (*text)(MD_TEXTTYPE /*type*/, const MD_CHAR* /*text*/, MD_SIZE /*size*/, void* /*userdata*/);
|
||||
|
||||
/* Debug callback. Optional (may be NULL).
|
||||
*
|
||||
* If provided and something goes wrong, this function gets called.
|
||||
* This is intended for debugging and problem diagnosis for developers;
|
||||
* it is not intended to provide any errors suitable for displaying to an
|
||||
* end user.
|
||||
*/
|
||||
void (*debug_log)(const char* /*msg*/, void* /*userdata*/);
|
||||
|
||||
/* Reserved. Set to NULL.
|
||||
*/
|
||||
void (*syntax)(void);
|
||||
} MD_PARSER;
|
||||
|
||||
|
||||
/* For backward compatibility. Do not use in new code.
|
||||
*/
|
||||
typedef MD_PARSER MD_RENDERER;
|
||||
|
||||
|
||||
/* Parse the Markdown document stored in the string 'text' of size 'size'.
|
||||
* The parser provides callbacks to be called during the parsing so the
|
||||
* caller can render the document on the screen or convert the Markdown
|
||||
* to another format.
|
||||
*
|
||||
* Zero is returned on success. If a runtime error occurs (e.g. a memory
|
||||
* fails), -1 is returned. If the processing is aborted due any callback
|
||||
* returning non-zero, the return value of the callback is returned.
|
||||
*/
|
||||
int md_parse(const MD_CHAR* text, MD_SIZE size, const MD_PARSER* parser, void* userdata);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" { */
|
||||
#endif
|
||||
|
||||
#endif /* MD4C_H */
|
||||
@@ -0,0 +1,13 @@
|
||||
prefix=@CMAKE_INSTALL_PREFIX@
|
||||
exec_prefix=@CMAKE_INSTALL_PREFIX@
|
||||
libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
|
||||
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
||||
|
||||
Name: @PROJECT_NAME@
|
||||
Description: Markdown parser library with a SAX-like callback-based interface.
|
||||
Version: @PROJECT_VERSION@
|
||||
URL: @PROJECT_URL@
|
||||
|
||||
Requires:
|
||||
Libs: -L${libdir} -lmd4c
|
||||
Cflags: -I${includedir}
|
||||
+1291
-440
File diff suppressed because it is too large
Load Diff
+1421
-527
File diff suppressed because it is too large
Load Diff
+7268
-5849
File diff suppressed because it is too large
Load Diff
+1948
-730
File diff suppressed because it is too large
Load Diff
+1338
-469
File diff suppressed because it is too large
Load Diff
+3689
-1595
File diff suppressed because it is too large
Load Diff
+1697
-645
File diff suppressed because it is too large
Load Diff
+5396
-3691
File diff suppressed because it is too large
Load Diff
+1430
-532
File diff suppressed because it is too large
Load Diff
+1372
-497
File diff suppressed because it is too large
Load Diff
+1449
-530
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,3 @@
|
||||
src/libslic3r/PresetBundle.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevBed.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevBed.h
|
||||
src/slic3r/GUI/DeviceCore/DevConfig.h
|
||||
@@ -68,6 +67,7 @@ src/slic3r/GUI/Gizmos/GLGizmoText.hpp
|
||||
src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp
|
||||
src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp
|
||||
src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp
|
||||
src/slic3r/GUI/Gizmos/GLGizmoAssembly.cpp
|
||||
src/slic3r/GUI/GUI.cpp
|
||||
src/slic3r/GUI/GUI_App.cpp
|
||||
src/slic3r/GUI/GUI_AuxiliaryList.cpp
|
||||
@@ -81,6 +81,7 @@ src/slic3r/GUI/GUI_ObjectTable.hpp
|
||||
src/slic3r/GUI/GUI_ObjectTableSettings.cpp
|
||||
src/slic3r/GUI/GUI_ObjectTableSettings.hpp
|
||||
src/slic3r/GUI/GUI_Preview.cpp
|
||||
src/slic3r/GUI/2DBed.cpp
|
||||
src/slic3r/GUI/HintNotification.cpp
|
||||
src/slic3r/GUI/IMSlider.cpp
|
||||
src/slic3r/GUI/Widgets/SideTools.cpp
|
||||
@@ -96,6 +97,7 @@ src/slic3r/GUI/Jobs/RotoptimizeJob.cpp
|
||||
src/slic3r/GUI/Jobs/BindJob.cpp
|
||||
src/slic3r/GUI/Jobs/PrintJob.cpp
|
||||
src/slic3r/GUI/Jobs/SendJob.cpp
|
||||
src/slic3r/GUI/Jobs/EmbossJob.cpp
|
||||
src/slic3r/GUI/ThermalPreconditioningDialog.cpp
|
||||
src/slic3r/GUI/ThermalPreconditioningDialog.hpp
|
||||
src/slic3r/GUI/Jobs/SLAImportJob.cpp
|
||||
@@ -165,7 +167,6 @@ src/slic3r/GUI/Tab.hpp
|
||||
src/slic3r/GUI/UnsavedChangesDialog.cpp
|
||||
src/slic3r/GUI/Auxiliary.cpp
|
||||
src/slic3r/GUI/UpdateDialogs.cpp
|
||||
src/slic3r/GUI/UnsavedChangesDialog.cpp
|
||||
src/slic3r/GUI/ObjColorDialog.cpp
|
||||
src/slic3r/GUI/SyncAmsInfoDialog.cpp
|
||||
src/slic3r/GUI/WipeTowerDialog.cpp
|
||||
@@ -178,12 +179,10 @@ src/slic3r/GUI/KBShortcutsDialog.cpp
|
||||
src/slic3r/GUI/ReleaseNote.cpp
|
||||
src/slic3r/GUI/ReleaseNote.hpp
|
||||
src/slic3r/GUI/UpgradePanel.cpp
|
||||
src/slic3r/GUI/UnsavedChangesDialog.cpp
|
||||
src/slic3r/Utils/FixModelByWin10.cpp
|
||||
src/slic3r/Utils/PresetUpdater.cpp
|
||||
src/slic3r/Utils/Http.cpp
|
||||
src/slic3r/Utils/Process.cpp
|
||||
src/slic3r/GUI/Jobs/PrintJob.cpp
|
||||
src/libslic3r/GCode.cpp
|
||||
src/libslic3r/GCode/ToolOrdering.cpp
|
||||
src/libslic3r/ExtrusionEntity.cpp
|
||||
@@ -237,7 +236,6 @@ src/slic3r/Utils/Obico.cpp
|
||||
src/slic3r/Utils/SimplyPrint.cpp
|
||||
src/slic3r/Utils/Flashforge.cpp
|
||||
src/slic3r/GUI/Jobs/OAuthJob.cpp
|
||||
src/slic3r/GUI/BackgroundSlicingProcess.cpp
|
||||
src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp
|
||||
src/slic3r/GUI/PartSkipDialog.cpp
|
||||
src/slic3r/GUI/PartSkipDialog.hpp
|
||||
@@ -246,4 +244,8 @@ src/slic3r/GUI/SkipPartCanvas.hpp
|
||||
src/slic3r/GUI/FilamentBitmapUtils.cpp
|
||||
src/slic3r/GUI/FilamentBitmapUtils.hpp
|
||||
src/slic3r/GUI/FilamentPickerDialog.cpp
|
||||
src/slic3r/GUI/NetworkPluginDialog.cpp
|
||||
src/slic3r/GUI/RammingChart.cpp
|
||||
src/slic3r/GUI/StepMeshDialog.cpp
|
||||
src/slic3r/GUI/FilamentPickerDialog.hpp
|
||||
src/libslic3r/PresetBundle.cpp
|
||||
|
||||
+1452
-526
File diff suppressed because it is too large
Load Diff
+1383
-500
File diff suppressed because it is too large
Load Diff
+1422
-547
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+5034
-3361
File diff suppressed because it is too large
Load Diff
+1387
-502
File diff suppressed because it is too large
Load Diff
+1439
-530
File diff suppressed because it is too large
Load Diff
+1447
-528
File diff suppressed because it is too large
Load Diff
+1447
-506
File diff suppressed because it is too large
Load Diff
+2909
-2206
File diff suppressed because it is too large
Load Diff
+2662
-2604
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Afinia",
|
||||
"version": "02.03.01.10",
|
||||
"version": "02.03.02.51",
|
||||
"force_update": "0",
|
||||
"description": "Afinia configurations",
|
||||
"machine_model_list": [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Anker",
|
||||
"version": "02.03.01.20",
|
||||
"version": "02.03.02.51",
|
||||
"force_update": "0",
|
||||
"description": "Anker configurations",
|
||||
"machine_model_list": [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Anycubic",
|
||||
"version": "02.03.01.10",
|
||||
"version": "02.03.02.51",
|
||||
"force_update": "0",
|
||||
"description": "Anycubic configurations",
|
||||
"machine_model_list": [
|
||||
@@ -56,6 +56,10 @@
|
||||
"name": "Anycubic Kobra S1",
|
||||
"sub_path": "machine/Anycubic Kobra S1.json"
|
||||
},
|
||||
{
|
||||
"name": "Anycubic Predator",
|
||||
"sub_path": "machine/Anycubic Predator.json"
|
||||
},
|
||||
{
|
||||
"name": "Anycubic Vyper",
|
||||
"sub_path": "machine/Anycubic Vyper.json"
|
||||
@@ -63,10 +67,6 @@
|
||||
{
|
||||
"name": "Anycubic i3 Mega S",
|
||||
"sub_path": "machine/Anycubic i3 Mega S.json"
|
||||
},
|
||||
{
|
||||
"name": "Anycubic Predator",
|
||||
"sub_path": "machine/Anycubic Predator.json"
|
||||
}
|
||||
],
|
||||
"process_list": [
|
||||
@@ -82,14 +82,14 @@
|
||||
"name": "0.10mm Detail @Anycubic Kobra 3 0.2 nozzle",
|
||||
"sub_path": "process/0.10mm Detail @Anycubic Kobra 3 0.2 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.12mm Detail @Anycubic Kobra 3 0.4 nozzle",
|
||||
"sub_path": "process/0.12mm Detail @Anycubic Kobra 3 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.12mm Detail @Anycubic Kobra 2 Neo 0.4 nozzle",
|
||||
"sub_path": "process/0.12mm Detail @Anycubic Kobra 2 Neo 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.12mm Detail @Anycubic Kobra 3 0.4 nozzle",
|
||||
"sub_path": "process/0.12mm Detail @Anycubic Kobra 3 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.15mm Optimal @Anycubic 4MaxPro2",
|
||||
"sub_path": "process/0.15mm Optimal @Anycubic 4MaxPro2.json"
|
||||
@@ -126,14 +126,14 @@
|
||||
"name": "0.16mm Optimal @Anycubic Kobra 2 Pro 0.4 nozzle",
|
||||
"sub_path": "process/0.16mm Optimal @Anycubic Kobra 2 Pro 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.16mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle",
|
||||
"sub_path": "process/0.16mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.16mm Optimal @Anycubic Kobra 3 0.4 nozzle",
|
||||
"sub_path": "process/0.16mm Optimal @Anycubic Kobra 3 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.16mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle",
|
||||
"sub_path": "process/0.16mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.20mm Standard @Anycubic 4MaxPro",
|
||||
"sub_path": "process/0.20mm Standard @Anycubic 4MaxPro.json"
|
||||
@@ -186,6 +186,10 @@
|
||||
"name": "0.20mm Standard @Anycubic KobraPlus",
|
||||
"sub_path": "process/0.20mm Standard @Anycubic KobraPlus.json"
|
||||
},
|
||||
{
|
||||
"name": "0.20mm Standard @Anycubic Predator",
|
||||
"sub_path": "process/0.20mm Standard @Anycubic Predator.json"
|
||||
},
|
||||
{
|
||||
"name": "0.20mm Standard @Anycubic Vyper",
|
||||
"sub_path": "process/0.20mm Standard @Anycubic Vyper.json"
|
||||
@@ -202,14 +206,14 @@
|
||||
"name": "0.28mm Draft @Anycubic Kobra 2 Pro 0.4 nozzle",
|
||||
"sub_path": "process/0.28mm Draft @Anycubic Kobra 2 Pro 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.28mm SuperDraft @Anycubic Kobra 3 0.4 nozzle",
|
||||
"sub_path": "process/0.28mm SuperDraft @Anycubic Kobra 3 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.28mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle",
|
||||
"sub_path": "process/0.28mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.28mm SuperDraft @Anycubic Kobra 3 0.4 nozzle",
|
||||
"sub_path": "process/0.28mm SuperDraft @Anycubic Kobra 3 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.30mm Draft @Anycubic 4MaxPro2",
|
||||
"sub_path": "process/0.30mm Draft @Anycubic 4MaxPro2.json"
|
||||
@@ -249,10 +253,6 @@
|
||||
{
|
||||
"name": "0.40mm Standard @Anycubic Kobra 3 0.8 nozzle",
|
||||
"sub_path": "process/0.40mm Standard @Anycubic Kobra 3 0.8 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.20mm Standard @Anycubic Predator",
|
||||
"sub_path": "process/0.20mm Standard @Anycubic Predator.json"
|
||||
}
|
||||
],
|
||||
"filament_list": [
|
||||
@@ -506,6 +506,10 @@
|
||||
"name": "Anycubic Kobra S1 0.4 nozzle",
|
||||
"sub_path": "machine/Anycubic Kobra S1 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Anycubic Predator 0.4 nozzle",
|
||||
"sub_path": "machine/Anycubic Predator 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Anycubic Vyper 0.4 nozzle",
|
||||
"sub_path": "machine/Anycubic Vyper 0.4 nozzle.json"
|
||||
@@ -513,10 +517,6 @@
|
||||
{
|
||||
"name": "Anycubic i3 Mega S 0.4 nozzle",
|
||||
"sub_path": "machine/Anycubic i3 Mega S 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Anycubic Predator 0.4 nozzle",
|
||||
"sub_path": "machine/Anycubic Predator 0.4 nozzle.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 1.9 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 133 KiB |
@@ -0,0 +1,355 @@
|
||||
{
|
||||
"activate_air_filtration": [
|
||||
"0"
|
||||
],
|
||||
"activate_chamber_temp_control": [
|
||||
"0"
|
||||
],
|
||||
"adaptive_pressure_advance": [
|
||||
"0"
|
||||
],
|
||||
"adaptive_pressure_advance_bridges": [
|
||||
"0"
|
||||
],
|
||||
"adaptive_pressure_advance_model": [
|
||||
"0,0,0\n0,0,0"
|
||||
],
|
||||
"adaptive_pressure_advance_overhangs": [
|
||||
"1"
|
||||
],
|
||||
"additional_cooling_fan_speed": [
|
||||
"0"
|
||||
],
|
||||
"chamber_temperature": [
|
||||
"0"
|
||||
],
|
||||
"close_fan_the_first_x_layers": [
|
||||
"1"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Anycubic Kobra Neo 0.6 nozzle"
|
||||
],
|
||||
"compatible_printers_condition": "",
|
||||
"compatible_prints": [],
|
||||
"compatible_prints_condition": "",
|
||||
"complete_print_exhaust_fan_speed": [
|
||||
"80"
|
||||
],
|
||||
"cool_plate_temp": [
|
||||
"35"
|
||||
],
|
||||
"cool_plate_temp_initial_layer": [
|
||||
"35"
|
||||
],
|
||||
"default_filament_colour": [
|
||||
""
|
||||
],
|
||||
"dont_slow_down_outer_wall": [
|
||||
"0"
|
||||
],
|
||||
"during_print_exhaust_fan_speed": [
|
||||
"60"
|
||||
],
|
||||
"enable_overhang_bridge_fan": [
|
||||
"1"
|
||||
],
|
||||
"enable_pressure_advance": [
|
||||
"1"
|
||||
],
|
||||
"eng_plate_temp": [
|
||||
"45"
|
||||
],
|
||||
"eng_plate_temp_initial_layer": [
|
||||
"45"
|
||||
],
|
||||
"fan_cooling_layer_time": [
|
||||
"30"
|
||||
],
|
||||
"fan_max_speed": [
|
||||
"100"
|
||||
],
|
||||
"fan_min_speed": [
|
||||
"10"
|
||||
],
|
||||
"filament_adaptive_volumetric_speed": [
|
||||
"0"
|
||||
],
|
||||
"filament_adhesiveness_category": [
|
||||
"0"
|
||||
],
|
||||
"filament_change_length": [
|
||||
"10"
|
||||
],
|
||||
"filament_cooling_final_speed": [
|
||||
"3.4"
|
||||
],
|
||||
"filament_cooling_initial_speed": [
|
||||
"2.2"
|
||||
],
|
||||
"filament_cooling_moves": [
|
||||
"4"
|
||||
],
|
||||
"filament_cost": [
|
||||
"6000"
|
||||
],
|
||||
"filament_density": [
|
||||
"1.23"
|
||||
],
|
||||
"filament_deretraction_speed": [
|
||||
"nil"
|
||||
],
|
||||
"filament_diameter": [
|
||||
"1.75"
|
||||
],
|
||||
"filament_end_gcode": [
|
||||
" "
|
||||
],
|
||||
"filament_extruder_variant": [
|
||||
"Direct Drive Standard"
|
||||
],
|
||||
"filament_flow_ratio": [
|
||||
"1"
|
||||
],
|
||||
"filament_flush_temp": [
|
||||
"0"
|
||||
],
|
||||
"filament_flush_volumetric_speed": [
|
||||
"0"
|
||||
],
|
||||
"filament_id": "P5d312b1",
|
||||
"filament_ironing_flow": [
|
||||
"nil"
|
||||
],
|
||||
"filament_ironing_inset": [
|
||||
"nil"
|
||||
],
|
||||
"filament_ironing_spacing": [
|
||||
"nil"
|
||||
],
|
||||
"filament_ironing_speed": [
|
||||
"nil"
|
||||
],
|
||||
"filament_is_support": [
|
||||
"0"
|
||||
],
|
||||
"filament_loading_speed": [
|
||||
"28"
|
||||
],
|
||||
"filament_loading_speed_start": [
|
||||
"3"
|
||||
],
|
||||
"filament_long_retractions_when_cut": [
|
||||
"nil"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"18"
|
||||
],
|
||||
"filament_minimal_purge_on_wipe_tower": [
|
||||
"15"
|
||||
],
|
||||
"filament_multitool_ramming": [
|
||||
"0"
|
||||
],
|
||||
"filament_multitool_ramming_flow": [
|
||||
"10"
|
||||
],
|
||||
"filament_multitool_ramming_volume": [
|
||||
"10"
|
||||
],
|
||||
"filament_notes": [
|
||||
""
|
||||
],
|
||||
"filament_printable": [
|
||||
"3"
|
||||
],
|
||||
"filament_ramming_parameters": [
|
||||
"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6"
|
||||
],
|
||||
"filament_retract_before_wipe": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retract_lift_above": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retract_lift_below": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retract_lift_enforce": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retract_restart_extra": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retract_when_changing_layer": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retraction_distances_when_cut": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retraction_length": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retraction_minimum_travel": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retraction_speed": [
|
||||
"nil"
|
||||
],
|
||||
"filament_settings_id": [
|
||||
"SUNLU PETG @Anycubic Kobra Neo 0.6 nozzle"
|
||||
],
|
||||
"filament_shrink": [
|
||||
"100%"
|
||||
],
|
||||
"filament_shrinkage_compensation_z": [
|
||||
"100%"
|
||||
],
|
||||
"filament_soluble": [
|
||||
"0"
|
||||
],
|
||||
"filament_stamping_distance": [
|
||||
"0"
|
||||
],
|
||||
"filament_stamping_loading_speed": [
|
||||
"0"
|
||||
],
|
||||
"filament_start_gcode": [
|
||||
" "
|
||||
],
|
||||
"filament_toolchange_delay": [
|
||||
"0"
|
||||
],
|
||||
"filament_tower_interface_pre_extrusion_dist": [
|
||||
"10"
|
||||
],
|
||||
"filament_tower_interface_pre_extrusion_length": [
|
||||
"0"
|
||||
],
|
||||
"filament_tower_interface_print_temp": [
|
||||
"-1"
|
||||
],
|
||||
"filament_tower_interface_purge_volume": [
|
||||
"20"
|
||||
],
|
||||
"filament_tower_ironing_area": [
|
||||
"4"
|
||||
],
|
||||
"filament_type": [
|
||||
"PETG"
|
||||
],
|
||||
"filament_unloading_speed": [
|
||||
"90"
|
||||
],
|
||||
"filament_unloading_speed_start": [
|
||||
"100"
|
||||
],
|
||||
"filament_vendor": [
|
||||
"SUNLU"
|
||||
],
|
||||
"filament_wipe": [
|
||||
"nil"
|
||||
],
|
||||
"filament_wipe_distance": [
|
||||
"nil"
|
||||
],
|
||||
"filament_z_hop": [
|
||||
"nil"
|
||||
],
|
||||
"filament_z_hop_types": [
|
||||
"nil"
|
||||
],
|
||||
"from": "User",
|
||||
"full_fan_speed_layer": [
|
||||
"4"
|
||||
],
|
||||
"hot_plate_temp": [
|
||||
"70"
|
||||
],
|
||||
"hot_plate_temp_initial_layer": [
|
||||
"70"
|
||||
],
|
||||
"idle_temperature": [
|
||||
"0"
|
||||
],
|
||||
"inherits": "",
|
||||
"internal_bridge_fan_speed": [
|
||||
"-1"
|
||||
],
|
||||
"ironing_fan_speed": [
|
||||
"-1"
|
||||
],
|
||||
"long_retractions_when_ec": [
|
||||
"0"
|
||||
],
|
||||
"name": "SUNLU PETG @Anycubic Kobra Neo 0.6 nozzle",
|
||||
"nozzle_temperature": [
|
||||
"235"
|
||||
],
|
||||
"nozzle_temperature_initial_layer": [
|
||||
"235"
|
||||
],
|
||||
"nozzle_temperature_range_high": [
|
||||
"240"
|
||||
],
|
||||
"nozzle_temperature_range_low": [
|
||||
"225"
|
||||
],
|
||||
"overhang_fan_speed": [
|
||||
"100"
|
||||
],
|
||||
"overhang_fan_threshold": [
|
||||
"25%"
|
||||
],
|
||||
"pellet_flow_coefficient": [
|
||||
"0.4157"
|
||||
],
|
||||
"pressure_advance": [
|
||||
"0.034"
|
||||
],
|
||||
"reduce_fan_stop_start_freq": [
|
||||
"1"
|
||||
],
|
||||
"required_nozzle_HRC": [
|
||||
"0"
|
||||
],
|
||||
"retraction_distances_when_ec": [
|
||||
"10"
|
||||
],
|
||||
"slow_down_for_layer_cooling": [
|
||||
"1"
|
||||
],
|
||||
"slow_down_layer_time": [
|
||||
"5"
|
||||
],
|
||||
"slow_down_min_speed": [
|
||||
"10"
|
||||
],
|
||||
"supertack_plate_temp": [
|
||||
"35"
|
||||
],
|
||||
"supertack_plate_temp_initial_layer": [
|
||||
"35"
|
||||
],
|
||||
"support_material_interface_fan_speed": [
|
||||
"100"
|
||||
],
|
||||
"temperature_vitrification": [
|
||||
"100"
|
||||
],
|
||||
"textured_cool_plate_temp": [
|
||||
"40"
|
||||
],
|
||||
"textured_cool_plate_temp_initial_layer": [
|
||||
"40"
|
||||
],
|
||||
"textured_plate_temp": [
|
||||
"45"
|
||||
],
|
||||
"textured_plate_temp_initial_layer": [
|
||||
"45"
|
||||
],
|
||||
"version": "0.0.0.0",
|
||||
"volumetric_speed_coefficients": [
|
||||
""
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,355 @@
|
||||
{
|
||||
"activate_air_filtration": [
|
||||
"0"
|
||||
],
|
||||
"activate_chamber_temp_control": [
|
||||
"0"
|
||||
],
|
||||
"adaptive_pressure_advance": [
|
||||
"0"
|
||||
],
|
||||
"adaptive_pressure_advance_bridges": [
|
||||
"0.014"
|
||||
],
|
||||
"adaptive_pressure_advance_model": [
|
||||
"0,0,0\n0,0,0"
|
||||
],
|
||||
"adaptive_pressure_advance_overhangs": [
|
||||
"0"
|
||||
],
|
||||
"additional_cooling_fan_speed": [
|
||||
"0"
|
||||
],
|
||||
"chamber_temperature": [
|
||||
"0"
|
||||
],
|
||||
"close_fan_the_first_x_layers": [
|
||||
"1"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Anycubic Kobra Neo 0.6 nozzle"
|
||||
],
|
||||
"compatible_printers_condition": "",
|
||||
"compatible_prints": [],
|
||||
"compatible_prints_condition": "",
|
||||
"complete_print_exhaust_fan_speed": [
|
||||
"80"
|
||||
],
|
||||
"cool_plate_temp": [
|
||||
"35"
|
||||
],
|
||||
"cool_plate_temp_initial_layer": [
|
||||
"35"
|
||||
],
|
||||
"default_filament_colour": [
|
||||
""
|
||||
],
|
||||
"dont_slow_down_outer_wall": [
|
||||
"0"
|
||||
],
|
||||
"during_print_exhaust_fan_speed": [
|
||||
"60"
|
||||
],
|
||||
"enable_overhang_bridge_fan": [
|
||||
"1"
|
||||
],
|
||||
"enable_pressure_advance": [
|
||||
"1"
|
||||
],
|
||||
"eng_plate_temp": [
|
||||
"45"
|
||||
],
|
||||
"eng_plate_temp_initial_layer": [
|
||||
"45"
|
||||
],
|
||||
"fan_cooling_layer_time": [
|
||||
"60"
|
||||
],
|
||||
"fan_max_speed": [
|
||||
"100"
|
||||
],
|
||||
"fan_min_speed": [
|
||||
"40"
|
||||
],
|
||||
"filament_adaptive_volumetric_speed": [
|
||||
"0"
|
||||
],
|
||||
"filament_adhesiveness_category": [
|
||||
"0"
|
||||
],
|
||||
"filament_change_length": [
|
||||
"10"
|
||||
],
|
||||
"filament_cooling_final_speed": [
|
||||
"3.4"
|
||||
],
|
||||
"filament_cooling_initial_speed": [
|
||||
"2.2"
|
||||
],
|
||||
"filament_cooling_moves": [
|
||||
"4"
|
||||
],
|
||||
"filament_cost": [
|
||||
"6000"
|
||||
],
|
||||
"filament_density": [
|
||||
"1.25"
|
||||
],
|
||||
"filament_deretraction_speed": [
|
||||
"nil"
|
||||
],
|
||||
"filament_diameter": [
|
||||
"1.75"
|
||||
],
|
||||
"filament_end_gcode": [
|
||||
" "
|
||||
],
|
||||
"filament_extruder_variant": [
|
||||
"Direct Drive Standard"
|
||||
],
|
||||
"filament_flow_ratio": [
|
||||
"1"
|
||||
],
|
||||
"filament_flush_temp": [
|
||||
"0"
|
||||
],
|
||||
"filament_flush_volumetric_speed": [
|
||||
"0"
|
||||
],
|
||||
"filament_id": "P172589e",
|
||||
"filament_ironing_flow": [
|
||||
"nil"
|
||||
],
|
||||
"filament_ironing_inset": [
|
||||
"nil"
|
||||
],
|
||||
"filament_ironing_spacing": [
|
||||
"nil"
|
||||
],
|
||||
"filament_ironing_speed": [
|
||||
"nil"
|
||||
],
|
||||
"filament_is_support": [
|
||||
"0"
|
||||
],
|
||||
"filament_loading_speed": [
|
||||
"28"
|
||||
],
|
||||
"filament_loading_speed_start": [
|
||||
"3"
|
||||
],
|
||||
"filament_long_retractions_when_cut": [
|
||||
"nil"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"18"
|
||||
],
|
||||
"filament_minimal_purge_on_wipe_tower": [
|
||||
"15"
|
||||
],
|
||||
"filament_multitool_ramming": [
|
||||
"0"
|
||||
],
|
||||
"filament_multitool_ramming_flow": [
|
||||
"10"
|
||||
],
|
||||
"filament_multitool_ramming_volume": [
|
||||
"10"
|
||||
],
|
||||
"filament_notes": [
|
||||
""
|
||||
],
|
||||
"filament_printable": [
|
||||
"3"
|
||||
],
|
||||
"filament_ramming_parameters": [
|
||||
"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6"
|
||||
],
|
||||
"filament_retract_before_wipe": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retract_lift_above": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retract_lift_below": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retract_lift_enforce": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retract_restart_extra": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retract_when_changing_layer": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retraction_distances_when_cut": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retraction_length": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retraction_minimum_travel": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retraction_speed": [
|
||||
"nil"
|
||||
],
|
||||
"filament_settings_id": [
|
||||
"SUNLU PLA @Anycubic Kobra Neo 0.6 nozzle"
|
||||
],
|
||||
"filament_shrink": [
|
||||
"100%"
|
||||
],
|
||||
"filament_shrinkage_compensation_z": [
|
||||
"100%"
|
||||
],
|
||||
"filament_soluble": [
|
||||
"0"
|
||||
],
|
||||
"filament_stamping_distance": [
|
||||
"0"
|
||||
],
|
||||
"filament_stamping_loading_speed": [
|
||||
"0"
|
||||
],
|
||||
"filament_start_gcode": [
|
||||
" "
|
||||
],
|
||||
"filament_toolchange_delay": [
|
||||
"0"
|
||||
],
|
||||
"filament_tower_interface_pre_extrusion_dist": [
|
||||
"10"
|
||||
],
|
||||
"filament_tower_interface_pre_extrusion_length": [
|
||||
"0"
|
||||
],
|
||||
"filament_tower_interface_print_temp": [
|
||||
"-1"
|
||||
],
|
||||
"filament_tower_interface_purge_volume": [
|
||||
"20"
|
||||
],
|
||||
"filament_tower_ironing_area": [
|
||||
"4"
|
||||
],
|
||||
"filament_type": [
|
||||
"PLA"
|
||||
],
|
||||
"filament_unloading_speed": [
|
||||
"90"
|
||||
],
|
||||
"filament_unloading_speed_start": [
|
||||
"100"
|
||||
],
|
||||
"filament_vendor": [
|
||||
"SUNLU"
|
||||
],
|
||||
"filament_wipe": [
|
||||
"nil"
|
||||
],
|
||||
"filament_wipe_distance": [
|
||||
"nil"
|
||||
],
|
||||
"filament_z_hop": [
|
||||
"nil"
|
||||
],
|
||||
"filament_z_hop_types": [
|
||||
"nil"
|
||||
],
|
||||
"from": "User",
|
||||
"full_fan_speed_layer": [
|
||||
"3"
|
||||
],
|
||||
"hot_plate_temp": [
|
||||
"60"
|
||||
],
|
||||
"hot_plate_temp_initial_layer": [
|
||||
"60"
|
||||
],
|
||||
"idle_temperature": [
|
||||
"0"
|
||||
],
|
||||
"inherits": "",
|
||||
"internal_bridge_fan_speed": [
|
||||
"-1"
|
||||
],
|
||||
"ironing_fan_speed": [
|
||||
"-1"
|
||||
],
|
||||
"long_retractions_when_ec": [
|
||||
"0"
|
||||
],
|
||||
"name": "SUNLU PLA @Anycubic Kobra Neo 0.6 nozzle",
|
||||
"nozzle_temperature": [
|
||||
"215"
|
||||
],
|
||||
"nozzle_temperature_initial_layer": [
|
||||
"215"
|
||||
],
|
||||
"nozzle_temperature_range_high": [
|
||||
"210"
|
||||
],
|
||||
"nozzle_temperature_range_low": [
|
||||
"200"
|
||||
],
|
||||
"overhang_fan_speed": [
|
||||
"100"
|
||||
],
|
||||
"overhang_fan_threshold": [
|
||||
"25%"
|
||||
],
|
||||
"pellet_flow_coefficient": [
|
||||
"0.4157"
|
||||
],
|
||||
"pressure_advance": [
|
||||
"0.028"
|
||||
],
|
||||
"reduce_fan_stop_start_freq": [
|
||||
"1"
|
||||
],
|
||||
"required_nozzle_HRC": [
|
||||
"0"
|
||||
],
|
||||
"retraction_distances_when_ec": [
|
||||
"10"
|
||||
],
|
||||
"slow_down_for_layer_cooling": [
|
||||
"1"
|
||||
],
|
||||
"slow_down_layer_time": [
|
||||
"5"
|
||||
],
|
||||
"slow_down_min_speed": [
|
||||
"10"
|
||||
],
|
||||
"supertack_plate_temp": [
|
||||
"35"
|
||||
],
|
||||
"supertack_plate_temp_initial_layer": [
|
||||
"35"
|
||||
],
|
||||
"support_material_interface_fan_speed": [
|
||||
"100"
|
||||
],
|
||||
"temperature_vitrification": [
|
||||
"100"
|
||||
],
|
||||
"textured_cool_plate_temp": [
|
||||
"40"
|
||||
],
|
||||
"textured_cool_plate_temp_initial_layer": [
|
||||
"40"
|
||||
],
|
||||
"textured_plate_temp": [
|
||||
"45"
|
||||
],
|
||||
"textured_plate_temp_initial_layer": [
|
||||
"45"
|
||||
],
|
||||
"version": "0.0.0.0",
|
||||
"volumetric_speed_coefficients": [
|
||||
""
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,283 @@
|
||||
{
|
||||
"adaptive_bed_mesh_margin": "5",
|
||||
"auxiliary_fan": "0",
|
||||
"bbl_use_printhost": "0",
|
||||
"bed_custom_model": "D:/3D_Prints/PEi Sheet Anycubic Kobra Neo.stl",
|
||||
"bed_custom_texture": "D:/3D_Prints/PEi Sheet Anycubic Kobra Neo.png",
|
||||
"bed_exclude_area": [],
|
||||
"bed_mesh_max": "210,205",
|
||||
"bed_mesh_min": "32,5",
|
||||
"bed_mesh_probe_distance": "0,0",
|
||||
"bed_temperature_formula": "by_first_filament",
|
||||
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\nG92 E0 ;zero out extruded length for accurecy",
|
||||
"best_object_pos": "0.5,0.5",
|
||||
"change_extrusion_role_gcode": "",
|
||||
"change_filament_gcode": "_M600",
|
||||
"cooling_tube_length": "0",
|
||||
"cooling_tube_retraction": "0",
|
||||
"default_bed_type": "",
|
||||
"default_filament_profile": [
|
||||
"SUNLU PLA @Anycubic Kobra Neo 0.6 nozzle"
|
||||
],
|
||||
"default_nozzle_volume_type": [
|
||||
"Standard"
|
||||
],
|
||||
"default_print_profile": "0.4 Layer @Anycubic Kobra Neo 0.6 nozzle",
|
||||
"deretraction_speed": [
|
||||
"30"
|
||||
],
|
||||
"disable_m73": "0",
|
||||
"emit_machine_limits_to_gcode": "1",
|
||||
"enable_filament_ramming": "0",
|
||||
"enable_long_retraction_when_cut": "0",
|
||||
"enable_power_loss_recovery": "printer_configuration",
|
||||
"extra_loading_move": "0",
|
||||
"extruder_clearance_height_to_lid": "250",
|
||||
"extruder_clearance_height_to_rod": "35",
|
||||
"extruder_clearance_radius": "55",
|
||||
"extruder_colour": [
|
||||
"#FF4D4F"
|
||||
],
|
||||
"extruder_offset": [
|
||||
"0x0"
|
||||
],
|
||||
"extruder_printable_area": [],
|
||||
"extruder_printable_height": [
|
||||
"0"
|
||||
],
|
||||
"extruder_type": [
|
||||
"Direct Drive"
|
||||
],
|
||||
"extruder_variant_list": [
|
||||
"Direct Drive Standard"
|
||||
],
|
||||
"fan_kickstart": "0",
|
||||
"fan_speedup_overhangs": "0",
|
||||
"fan_speedup_time": "2",
|
||||
"file_start_gcode": "",
|
||||
"from": "User",
|
||||
"gcode_flavor": "klipper",
|
||||
"grab_length": [
|
||||
"0"
|
||||
],
|
||||
"head_wrap_detect_zone": [],
|
||||
"high_current_on_filament_swap": "0",
|
||||
"host_type": "octoprint",
|
||||
"inherits": "",
|
||||
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;Layer {layer_num + 1} @ [layer_z]mm\nSET_PRINT_STATS_INFO CURRENT_LAYER={layer_num + 1}\nM117 Layer {layer_num+1}/[total_layer_count] @ [layer_z]mm\nPLR_SAVE_PRINT_STATE_WITH_LAYER LAYER={layer_num + 1} LAYER_HEIGHT={layer_z}\n",
|
||||
"long_retractions_when_cut": [
|
||||
"0"
|
||||
],
|
||||
"machine_end_gcode": "_END_PRINT\n;total layers count = [total_layer_count]",
|
||||
"machine_load_filament_time": "42",
|
||||
"machine_max_acceleration_e": [
|
||||
"2500",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_extruding": [
|
||||
"2500",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_retracting": [
|
||||
"2500",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_travel": [
|
||||
"20000",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_x": [
|
||||
"2500",
|
||||
"15000"
|
||||
],
|
||||
"machine_max_acceleration_y": [
|
||||
"2500",
|
||||
"15000"
|
||||
],
|
||||
"machine_max_acceleration_z": [
|
||||
"20",
|
||||
"5000"
|
||||
],
|
||||
"machine_max_jerk_e": [
|
||||
"4",
|
||||
"10"
|
||||
],
|
||||
"machine_max_jerk_x": [
|
||||
"8",
|
||||
"20"
|
||||
],
|
||||
"machine_max_jerk_y": [
|
||||
"8",
|
||||
"20"
|
||||
],
|
||||
"machine_max_jerk_z": [
|
||||
"4",
|
||||
"5"
|
||||
],
|
||||
"machine_max_junction_deviation": [
|
||||
"0",
|
||||
"0"
|
||||
],
|
||||
"machine_max_speed_e": [
|
||||
"100",
|
||||
"80"
|
||||
],
|
||||
"machine_max_speed_x": [
|
||||
"250",
|
||||
"600"
|
||||
],
|
||||
"machine_max_speed_y": [
|
||||
"250",
|
||||
"600"
|
||||
],
|
||||
"machine_max_speed_z": [
|
||||
"20",
|
||||
"10"
|
||||
],
|
||||
"machine_min_extruding_rate": [
|
||||
"0",
|
||||
"0"
|
||||
],
|
||||
"machine_min_travel_rate": [
|
||||
"0",
|
||||
"0"
|
||||
],
|
||||
"machine_pause_gcode": "PAUSE",
|
||||
"machine_start_gcode": "SET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\n;;;;; PLR_RESUME - INITIAL PRINTER SETUP STARTS ;;;;;\nPLR_DISABLE\n_START_PRINT BED_TEMP=[first_layer_bed_temperature] EXTRUDER_TEMP=[first_layer_temperature]\nPLR_ENABLE\n;;;;; PLR_RESUME - PRINT GCODE STARTS ;;;;;",
|
||||
"machine_tool_change_time": "0",
|
||||
"machine_unload_filament_time": "0",
|
||||
"manual_filament_change": "0",
|
||||
"master_extruder_id": "1",
|
||||
"max_layer_height": [
|
||||
"0.48"
|
||||
],
|
||||
"max_resonance_avoidance_speed": "120",
|
||||
"min_layer_height": [
|
||||
"0.15"
|
||||
],
|
||||
"min_resonance_avoidance_speed": "70",
|
||||
"name": "Anycubic Kobra Neo 0.6 nozzle",
|
||||
"nozzle_diameter": [
|
||||
"0.6"
|
||||
],
|
||||
"nozzle_flush_dataset": [
|
||||
"0"
|
||||
],
|
||||
"nozzle_height": "4",
|
||||
"nozzle_hrc": "0",
|
||||
"nozzle_type": [
|
||||
"undefine"
|
||||
],
|
||||
"nozzle_volume": [
|
||||
"0"
|
||||
],
|
||||
"parking_pos_retraction": "0",
|
||||
"pellet_modded_printer": "0",
|
||||
"physical_extruder_map": [
|
||||
"0"
|
||||
],
|
||||
"preferred_orientation": "0",
|
||||
"print_host": "yazan-minipc.local:5555",
|
||||
"print_host_webui": "",
|
||||
"printable_area": [
|
||||
"0x0",
|
||||
"222x0",
|
||||
"222x222",
|
||||
"0x222"
|
||||
],
|
||||
"printable_height": "250",
|
||||
"printer_agent": "moonraker",
|
||||
"printer_extruder_id": [
|
||||
"1"
|
||||
],
|
||||
"printer_extruder_variant": [
|
||||
"Direct Drive Standard"
|
||||
],
|
||||
"printer_model": "Anycubic Kobra Neo",
|
||||
"printer_notes": "",
|
||||
"printer_settings_id": "Anycubic Kobra Neo 0.6 nozzle",
|
||||
"printer_structure": "undefine",
|
||||
"printer_technology": "FFF",
|
||||
"printer_variant": "0.6",
|
||||
"printhost_apikey": "",
|
||||
"printhost_authorization_type": "key",
|
||||
"printhost_cafile": "",
|
||||
"printhost_password": "",
|
||||
"printhost_port": "",
|
||||
"printhost_ssl_ignore_revoke": "0",
|
||||
"printhost_user": "",
|
||||
"printing_by_object_gcode": "",
|
||||
"purge_in_prime_tower": "0",
|
||||
"resonance_avoidance": "0",
|
||||
"retract_before_wipe": [
|
||||
"0%"
|
||||
],
|
||||
"retract_length_toolchange": [
|
||||
"0"
|
||||
],
|
||||
"retract_lift_above": [
|
||||
"0"
|
||||
],
|
||||
"retract_lift_below": [
|
||||
"259"
|
||||
],
|
||||
"retract_lift_enforce": [
|
||||
"All Surfaces"
|
||||
],
|
||||
"retract_restart_extra": [
|
||||
"0"
|
||||
],
|
||||
"retract_restart_extra_toolchange": [
|
||||
"0"
|
||||
],
|
||||
"retract_when_changing_layer": [
|
||||
"1"
|
||||
],
|
||||
"retraction_distances_when_cut": [
|
||||
"18"
|
||||
],
|
||||
"retraction_length": [
|
||||
"1"
|
||||
],
|
||||
"retraction_minimum_travel": [
|
||||
"1"
|
||||
],
|
||||
"retraction_speed": [
|
||||
"30"
|
||||
],
|
||||
"scan_first_layer": "0",
|
||||
"silent_mode": "0",
|
||||
"single_extruder_multi_material": "1",
|
||||
"support_air_filtration": "0",
|
||||
"support_chamber_temp_control": "0",
|
||||
"support_multi_bed_types": "0",
|
||||
"support_object_skip_flush": "0",
|
||||
"template_custom_gcode": "",
|
||||
"thumbnails": "32x32/PNG, 300x300/PNG",
|
||||
"thumbnails_format": "PNG",
|
||||
"time_cost": "0",
|
||||
"time_lapse_gcode": "",
|
||||
"travel_slope": [
|
||||
"3"
|
||||
],
|
||||
"upward_compatible_machine": [],
|
||||
"use_firmware_retraction": "1",
|
||||
"use_relative_e_distances": "1",
|
||||
"version": "2.2.0.4",
|
||||
"wipe": [
|
||||
"0"
|
||||
],
|
||||
"wipe_distance": [
|
||||
"2"
|
||||
],
|
||||
"wrapping_detection_gcode": "",
|
||||
"wrapping_detection_layers": "20",
|
||||
"wrapping_exclude_area": [],
|
||||
"z_hop": [
|
||||
"0"
|
||||
],
|
||||
"z_hop_types": [
|
||||
"Auto Lift"
|
||||
],
|
||||
"z_offset": "0"
|
||||
}
|
||||
@@ -0,0 +1,364 @@
|
||||
{
|
||||
"accel_to_decel_enable": "0",
|
||||
"accel_to_decel_factor": "50%",
|
||||
"align_infill_direction_to_model": "1",
|
||||
"alternate_extra_wall": "0",
|
||||
"bottom_shell_layers": "3",
|
||||
"bottom_shell_thickness": "0",
|
||||
"bottom_solid_infill_flow_ratio": "1",
|
||||
"bottom_surface_density": "100%",
|
||||
"bottom_surface_pattern": "concentric",
|
||||
"bridge_acceleration": "50%",
|
||||
"bridge_angle": "0",
|
||||
"bridge_density": "100%",
|
||||
"bridge_flow": "1.5",
|
||||
"bridge_no_support": "0",
|
||||
"bridge_speed": "10",
|
||||
"brim_ears_detection_length": "1",
|
||||
"brim_ears_max_angle": "125",
|
||||
"brim_object_gap": "0.4",
|
||||
"brim_type": "no_brim",
|
||||
"brim_use_efc_outline": "1",
|
||||
"brim_width": "5",
|
||||
"calib_flowrate_topinfill_special_order": "0",
|
||||
"compatible_printers": [
|
||||
"Anycubic Kobra Neo 0.6 nozzle"
|
||||
],
|
||||
"compatible_printers_condition": "",
|
||||
"counterbore_hole_bridging": "none",
|
||||
"default_acceleration": "2500",
|
||||
"default_jerk": "0",
|
||||
"default_junction_deviation": "0",
|
||||
"detect_narrow_internal_solid_infill": "1",
|
||||
"detect_overhang_wall": "1",
|
||||
"detect_thin_wall": "1",
|
||||
"dont_filter_internal_bridges": "disabled",
|
||||
"draft_shield": "disabled",
|
||||
"elefant_foot_compensation": "0.2",
|
||||
"elefant_foot_compensation_layers": "1",
|
||||
"enable_arc_fitting": "0",
|
||||
"enable_extra_bridge_layer": "disabled",
|
||||
"enable_overhang_speed": "1",
|
||||
"enable_prime_tower": "0",
|
||||
"enable_support": "1",
|
||||
"enable_tower_interface_cooldown_during_tower": "0",
|
||||
"enable_tower_interface_features": "0",
|
||||
"enable_wrapping_detection": "0",
|
||||
"enforce_support_layers": "0",
|
||||
"ensure_vertical_shell_thickness": "ensure_critical_only",
|
||||
"exclude_object": "1",
|
||||
"extra_perimeters_on_overhangs": "0",
|
||||
"extra_solid_infills": "",
|
||||
"extrusion_rate_smoothing_external_perimeter_only": "0",
|
||||
"filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode",
|
||||
"fill_multiline": "1",
|
||||
"filter_out_gap_fill": "0.6",
|
||||
"first_layer_flow_ratio": "1",
|
||||
"flush_into_infill": "0",
|
||||
"flush_into_objects": "0",
|
||||
"flush_into_support": "1",
|
||||
"from": "User",
|
||||
"fuzzy_skin": "none",
|
||||
"fuzzy_skin_first_layer": "0",
|
||||
"fuzzy_skin_mode": "displacement",
|
||||
"fuzzy_skin_noise_type": "classic",
|
||||
"fuzzy_skin_octaves": "4",
|
||||
"fuzzy_skin_persistence": "0.5",
|
||||
"fuzzy_skin_point_distance": "0.8",
|
||||
"fuzzy_skin_scale": "1",
|
||||
"fuzzy_skin_thickness": "0.3",
|
||||
"gap_fill_flow_ratio": "1",
|
||||
"gap_fill_target": "topbottom",
|
||||
"gap_infill_speed": "50",
|
||||
"gcode_add_line_number": "0",
|
||||
"gcode_comments": "0",
|
||||
"gcode_label_objects": "1",
|
||||
"hole_to_polyhole": "0",
|
||||
"hole_to_polyhole_threshold": "0.01",
|
||||
"hole_to_polyhole_twisted": "1",
|
||||
"independent_support_layer_height": "1",
|
||||
"infill_anchor": "1e+09",
|
||||
"infill_anchor_max": "1e+09",
|
||||
"infill_combination": "0",
|
||||
"infill_combination_max_layer_height": "100%",
|
||||
"infill_direction": "45",
|
||||
"infill_jerk": "9",
|
||||
"infill_lock_depth": "1",
|
||||
"infill_overhang_angle": "60",
|
||||
"infill_shift_step": "0.4",
|
||||
"infill_wall_overlap": "20%",
|
||||
"inherits": "",
|
||||
"initial_layer_acceleration": "1500",
|
||||
"initial_layer_infill_speed": "50",
|
||||
"initial_layer_jerk": "9",
|
||||
"initial_layer_line_width": "0",
|
||||
"initial_layer_min_bead_width": "85%",
|
||||
"initial_layer_print_height": "0.4",
|
||||
"initial_layer_speed": "30",
|
||||
"initial_layer_travel_speed": "50%",
|
||||
"inner_wall_acceleration": "2500",
|
||||
"inner_wall_flow_ratio": "1",
|
||||
"inner_wall_jerk": "9",
|
||||
"inner_wall_line_width": "0",
|
||||
"inner_wall_speed": "70",
|
||||
"interface_shells": "0",
|
||||
"interlocking_beam": "0",
|
||||
"interlocking_beam_layer_count": "2",
|
||||
"interlocking_beam_width": "0.8",
|
||||
"interlocking_boundary_avoidance": "2",
|
||||
"interlocking_depth": "2",
|
||||
"interlocking_orientation": "22.5",
|
||||
"internal_bridge_angle": "0",
|
||||
"internal_bridge_density": "100%",
|
||||
"internal_bridge_flow": "1.5",
|
||||
"internal_bridge_speed": "30",
|
||||
"internal_solid_infill_acceleration": "100%",
|
||||
"internal_solid_infill_flow_ratio": "1",
|
||||
"internal_solid_infill_line_width": "0",
|
||||
"internal_solid_infill_pattern": "monotonic",
|
||||
"internal_solid_infill_speed": "70",
|
||||
"ironing_angle": "0",
|
||||
"ironing_angle_fixed": "0",
|
||||
"ironing_flow": "10%",
|
||||
"ironing_inset": "0",
|
||||
"ironing_pattern": "rectilinear",
|
||||
"ironing_spacing": "0.1",
|
||||
"ironing_speed": "20",
|
||||
"ironing_type": "no ironing",
|
||||
"is_infill_first": "0",
|
||||
"lateral_lattice_angle_1": "-45",
|
||||
"lateral_lattice_angle_2": "45",
|
||||
"layer_height": "0.4",
|
||||
"line_width": "100%",
|
||||
"make_overhang_printable": "0",
|
||||
"make_overhang_printable_angle": "60",
|
||||
"make_overhang_printable_hole_size": "0",
|
||||
"max_bridge_length": "10",
|
||||
"max_travel_detour_distance": "0",
|
||||
"max_volumetric_extrusion_rate_slope": "0",
|
||||
"max_volumetric_extrusion_rate_slope_segment_length": "3",
|
||||
"min_bead_width": "85%",
|
||||
"min_feature_size": "25%",
|
||||
"min_length_factor": "0.75",
|
||||
"min_skirt_length": "0",
|
||||
"min_width_top_surface": "300%",
|
||||
"minimum_sparse_infill_area": "15",
|
||||
"mmu_segmented_region_interlocking_depth": "0",
|
||||
"mmu_segmented_region_max_width": "0",
|
||||
"name": "0.4 Layer @Anycubic Kobra Neo 0.6 nozzle",
|
||||
"notes": "",
|
||||
"only_one_wall_first_layer": "0",
|
||||
"only_one_wall_top": "0",
|
||||
"ooze_prevention": "0",
|
||||
"outer_wall_acceleration": "2500",
|
||||
"outer_wall_flow_ratio": "1",
|
||||
"outer_wall_jerk": "9",
|
||||
"outer_wall_line_width": "0",
|
||||
"outer_wall_speed": "70",
|
||||
"overhang_1_4_speed": "100%",
|
||||
"overhang_2_4_speed": "100%",
|
||||
"overhang_3_4_speed": "75%",
|
||||
"overhang_4_4_speed": "50%",
|
||||
"overhang_flow_ratio": "1",
|
||||
"overhang_reverse": "0",
|
||||
"overhang_reverse_internal_only": "0",
|
||||
"overhang_reverse_threshold": "50%",
|
||||
"post_process": [],
|
||||
"precise_outer_wall": "0",
|
||||
"precise_z_height": "0",
|
||||
"preheat_steps": "1",
|
||||
"preheat_time": "30",
|
||||
"prime_tower_brim_width": "3",
|
||||
"prime_tower_enable_framework": "0",
|
||||
"prime_tower_flat_ironing": "0",
|
||||
"prime_tower_infill_gap": "150%",
|
||||
"prime_tower_skip_points": "1",
|
||||
"prime_tower_width": "60",
|
||||
"prime_volume": "45",
|
||||
"print_extruder_id": [
|
||||
"1"
|
||||
],
|
||||
"print_extruder_variant": [
|
||||
"Direct Drive Standard"
|
||||
],
|
||||
"print_flow_ratio": "1",
|
||||
"print_order": "default",
|
||||
"print_sequence": "by layer",
|
||||
"print_settings_id": "0.4 Layer @Anycubic Kobra Neo 0.6 nozzle",
|
||||
"raft_contact_distance": "0.1",
|
||||
"raft_expansion": "1.5",
|
||||
"raft_first_layer_density": "100%",
|
||||
"raft_first_layer_expansion": "5",
|
||||
"raft_layers": "0",
|
||||
"reduce_crossing_wall": "1",
|
||||
"reduce_infill_retraction": "1",
|
||||
"resolution": "0.005",
|
||||
"role_based_wipe_speed": "1",
|
||||
"scarf_angle_threshold": "155",
|
||||
"scarf_joint_flow_ratio": "1",
|
||||
"scarf_joint_speed": "100%",
|
||||
"scarf_overhang_threshold": "40%",
|
||||
"seam_gap": "10%",
|
||||
"seam_position": "aligned",
|
||||
"seam_slope_conditional": "0",
|
||||
"seam_slope_entire_loop": "0",
|
||||
"seam_slope_inner_walls": "0",
|
||||
"seam_slope_min_length": "20",
|
||||
"seam_slope_start_height": "0",
|
||||
"seam_slope_steps": "10",
|
||||
"seam_slope_type": "none",
|
||||
"set_other_flow_ratios": "0",
|
||||
"single_extruder_multi_material_priming": "0",
|
||||
"single_loop_draft_shield": "0",
|
||||
"skeleton_infill_density": "25%",
|
||||
"skeleton_infill_line_width": "100%",
|
||||
"skin_infill_density": "25%",
|
||||
"skin_infill_depth": "2",
|
||||
"skin_infill_line_width": "100%",
|
||||
"skirt_distance": "2",
|
||||
"skirt_height": "1",
|
||||
"skirt_loops": "0",
|
||||
"skirt_speed": "50",
|
||||
"skirt_start_angle": "-135",
|
||||
"skirt_type": "combined",
|
||||
"slice_closing_radius": "0.001",
|
||||
"slicing_mode": "regular",
|
||||
"slow_down_layers": "1",
|
||||
"slowdown_for_curled_perimeters": "1",
|
||||
"small_area_infill_flow_compensation": "1",
|
||||
"small_area_infill_flow_compensation_model": [
|
||||
"0,0",
|
||||
"\n0.2,0.4444",
|
||||
"\n0.4,0.6145",
|
||||
"\n0.6,0.7059",
|
||||
"\n0.8,0.7619",
|
||||
"\n1.5,0.8571",
|
||||
"\n2,0.8889",
|
||||
"\n3,0.9231",
|
||||
"\n5,0.9520",
|
||||
"\n10,1"
|
||||
],
|
||||
"small_perimeter_speed": "0",
|
||||
"small_perimeter_threshold": "0",
|
||||
"solid_infill_direction": "45",
|
||||
"solid_infill_filament": "1",
|
||||
"solid_infill_rotate_template": "45,135",
|
||||
"sparse_infill_acceleration": "100%",
|
||||
"sparse_infill_density": "10%",
|
||||
"sparse_infill_filament": "1",
|
||||
"sparse_infill_flow_ratio": "1",
|
||||
"sparse_infill_line_width": "0",
|
||||
"sparse_infill_pattern": "3dhoneycomb",
|
||||
"sparse_infill_rotate_template": "",
|
||||
"sparse_infill_speed": "70",
|
||||
"spiral_finishing_flow_ratio": "0",
|
||||
"spiral_mode": "0",
|
||||
"spiral_mode_max_xy_smoothing": "200%",
|
||||
"spiral_mode_smooth": "1",
|
||||
"spiral_starting_flow_ratio": "0",
|
||||
"staggered_inner_seams": "0",
|
||||
"standby_temperature_delta": "-5",
|
||||
"support_angle": "0",
|
||||
"support_base_pattern": "rectilinear",
|
||||
"support_base_pattern_spacing": "2",
|
||||
"support_bottom_interface_spacing": "0.2",
|
||||
"support_bottom_z_distance": "0.4",
|
||||
"support_critical_regions_only": "0",
|
||||
"support_expansion": "0",
|
||||
"support_filament": "0",
|
||||
"support_flow_ratio": "1",
|
||||
"support_interface_bottom_layers": "2",
|
||||
"support_interface_filament": "0",
|
||||
"support_interface_flow_ratio": "1",
|
||||
"support_interface_loop_pattern": "0",
|
||||
"support_interface_not_for_body": "1",
|
||||
"support_interface_pattern": "auto",
|
||||
"support_interface_spacing": "0.2",
|
||||
"support_interface_speed": "50",
|
||||
"support_interface_top_layers": "2",
|
||||
"support_ironing": "0",
|
||||
"support_ironing_flow": "10%",
|
||||
"support_ironing_pattern": "rectilinear",
|
||||
"support_ironing_spacing": "0.1",
|
||||
"support_line_width": "0",
|
||||
"support_object_first_layer_gap": "1",
|
||||
"support_object_xy_distance": "1",
|
||||
"support_on_build_plate_only": "0",
|
||||
"support_remove_small_overhang": "0",
|
||||
"support_speed": "50",
|
||||
"support_style": "snug",
|
||||
"support_threshold_angle": "40",
|
||||
"support_threshold_overlap": "50%",
|
||||
"support_top_z_distance": "0.34",
|
||||
"support_type": "normal(auto)",
|
||||
"symmetric_infill_y_axis": "0",
|
||||
"thick_bridges": "0",
|
||||
"thick_internal_bridges": "1",
|
||||
"timelapse_type": "0",
|
||||
"top_bottom_infill_wall_overlap": "20%",
|
||||
"top_shell_layers": "3",
|
||||
"top_shell_thickness": "0",
|
||||
"top_solid_infill_flow_ratio": "1",
|
||||
"top_surface_acceleration": "1500",
|
||||
"top_surface_density": "100%",
|
||||
"top_surface_jerk": "9",
|
||||
"top_surface_line_width": "0",
|
||||
"top_surface_pattern": "concentric",
|
||||
"top_surface_speed": "60",
|
||||
"travel_acceleration": "2500",
|
||||
"travel_jerk": "12",
|
||||
"travel_speed": "140",
|
||||
"travel_speed_z": "0",
|
||||
"tree_support_angle_slow": "25",
|
||||
"tree_support_auto_brim": "1",
|
||||
"tree_support_branch_angle": "40",
|
||||
"tree_support_branch_angle_organic": "40",
|
||||
"tree_support_branch_diameter": "5",
|
||||
"tree_support_branch_diameter_angle": "10",
|
||||
"tree_support_branch_diameter_organic": "4",
|
||||
"tree_support_branch_distance": "5",
|
||||
"tree_support_branch_distance_organic": "1",
|
||||
"tree_support_brim_width": "3",
|
||||
"tree_support_tip_diameter": "0.8",
|
||||
"tree_support_top_rate": "30%",
|
||||
"tree_support_wall_count": "0",
|
||||
"version": "0.0.0.0",
|
||||
"wall_direction": "auto",
|
||||
"wall_distribution_count": "1",
|
||||
"wall_filament": "1",
|
||||
"wall_generator": "arachne",
|
||||
"wall_loops": "2",
|
||||
"wall_sequence": "inner wall/outer wall",
|
||||
"wall_transition_angle": "10",
|
||||
"wall_transition_filter_deviation": "25%",
|
||||
"wall_transition_length": "100%",
|
||||
"wipe_before_external_loop": "1",
|
||||
"wipe_on_loops": "1",
|
||||
"wipe_speed": "80%",
|
||||
"wipe_tower_bridging": "10",
|
||||
"wipe_tower_cone_angle": "0",
|
||||
"wipe_tower_extra_flow": "100%",
|
||||
"wipe_tower_extra_rib_length": "0",
|
||||
"wipe_tower_extra_spacing": "100%",
|
||||
"wipe_tower_filament": "0",
|
||||
"wipe_tower_fillet_wall": "1",
|
||||
"wipe_tower_max_purge_speed": "90",
|
||||
"wipe_tower_no_sparse_layers": "0",
|
||||
"wipe_tower_rib_width": "8",
|
||||
"wipe_tower_rotation_angle": "0",
|
||||
"wipe_tower_wall_type": "rectangle",
|
||||
"wiping_volumes_extruders": [
|
||||
"70",
|
||||
"70",
|
||||
"70",
|
||||
"70",
|
||||
"70",
|
||||
"70",
|
||||
"70",
|
||||
"70",
|
||||
"70",
|
||||
"70"
|
||||
],
|
||||
"xy_contour_compensation": "-0.02",
|
||||
"xy_hole_compensation": "0.02"
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Artillery",
|
||||
"version": "02.03.02.10",
|
||||
"version": "02.03.02.51",
|
||||
"force_update": "0",
|
||||
"description": "Artillery configurations",
|
||||
"machine_model_list": [
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "Bambulab",
|
||||
"url": "http://www.bambulab.com/Parameters/vendor/BBL.json",
|
||||
"version": "02.00.00.56",
|
||||
"version": "02.01.00.10",
|
||||
"force_update": "0",
|
||||
"description": "the initial version of BBL configurations",
|
||||
"machine_model_list": [
|
||||
|
||||
@@ -102,6 +102,21 @@
|
||||
"filament_minimal_purge_on_wipe_tower": [
|
||||
"15"
|
||||
],
|
||||
"filament_tower_interface_pre_extrusion_dist": [
|
||||
"10"
|
||||
],
|
||||
"filament_tower_interface_pre_extrusion_length": [
|
||||
"0"
|
||||
],
|
||||
"filament_tower_ironing_area": [
|
||||
"4"
|
||||
],
|
||||
"filament_tower_interface_purge_volume": [
|
||||
"20"
|
||||
],
|
||||
"filament_tower_interface_print_temp": [
|
||||
"-1"
|
||||
],
|
||||
"filament_printable": [
|
||||
"3"
|
||||
],
|
||||
@@ -277,4 +292,4 @@
|
||||
"volumetric_speed_coefficients":[
|
||||
"0 0 0 0 0 0"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -93,6 +93,8 @@
|
||||
"prime_tower_lift_height": "-1",
|
||||
"prime_tower_max_speed": "90",
|
||||
"prime_tower_flat_ironing": "0",
|
||||
"enable_tower_interface_features": "0",
|
||||
"enable_tower_interface_cooldown_during_tower": "0",
|
||||
"raft_layers": "0",
|
||||
"reduce_crossing_wall": "0",
|
||||
"reduce_infill_retraction": "1",
|
||||
@@ -170,4 +172,4 @@
|
||||
"xy_contour_compensation": "0",
|
||||
"xy_hole_compensation": "0",
|
||||
"z_direction_outwall_speed_continuous": "0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "BIQU",
|
||||
"version": "02.03.01.10",
|
||||
"version": "02.03.02.51",
|
||||
"force_update": "0",
|
||||
"description": "BIQU configurations",
|
||||
"machine_model_list": [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Blocks",
|
||||
"version": "02.03.01.10",
|
||||
"version": "02.03.02.51",
|
||||
"force_update": "0",
|
||||
"description": "Blocks configurations",
|
||||
"machine_model_list": [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "CONSTRUCT3D",
|
||||
"version": "02.03.01.10",
|
||||
"version": "02.03.02.51",
|
||||
"force_update": "0",
|
||||
"description": "Construct3D configurations",
|
||||
"machine_model_list": [
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "Chuanying",
|
||||
"url": "",
|
||||
"version": "02.03.01.10",
|
||||
"version": "02.03.02.51",
|
||||
"force_update": "0",
|
||||
"description": "Chuanying configurations",
|
||||
"machine_model_list": [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Co Print",
|
||||
"version": "02.03.01.10",
|
||||
"version": "02.03.02.51",
|
||||
"force_update": "0",
|
||||
"description": "CoPrint configurations",
|
||||
"machine_model_list": [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "CoLiDo",
|
||||
"version": "02.03.01.10",
|
||||
"version": "02.03.02.51",
|
||||
"force_update": "0",
|
||||
"description": "CoLiDo configurations",
|
||||
"machine_model_list": [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Comgrow",
|
||||
"version": "02.03.01.10",
|
||||
"version": "02.03.02.51",
|
||||
"force_update": "0",
|
||||
"description": "Comgrow configurations",
|
||||
"machine_model_list": [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Creality",
|
||||
"version": "02.03.01.20",
|
||||
"version": "02.03.01.21",
|
||||
"force_update": "0",
|
||||
"description": "Creality configurations",
|
||||
"machine_model_list": [
|
||||
@@ -132,6 +132,10 @@
|
||||
"name": "Creality K2 Pro",
|
||||
"sub_path": "machine/Creality K2 Pro.json"
|
||||
},
|
||||
{
|
||||
"name": "Creality K2",
|
||||
"sub_path": "machine/Creality K2.json"
|
||||
},
|
||||
{
|
||||
"name": "Creality Sermoon V1",
|
||||
"sub_path": "machine/Creality Sermoon V1.json"
|
||||
@@ -730,22 +734,42 @@
|
||||
"name": "0.08mm SuperDetail @Creality K2 Pro 0.2 nozzle",
|
||||
"sub_path": "process/0.08mm SuperDetail @Creality K2 Pro 0.2 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.08mm SuperDetail @Creality K2 0.2 nozzle",
|
||||
"sub_path": "process/0.08mm SuperDetail @Creality K2 0.2 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.08mm SuperDetail @Creality K2 Pro 0.4 nozzle",
|
||||
"sub_path": "process/0.08mm SuperDetail @Creality K2 Pro 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.08mm SuperDetail @Creality K2 0.4 nozzle",
|
||||
"sub_path": "process/0.08mm SuperDetail @Creality K2 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.10mm HighDetail @Creality K2 Pro 0.2 nozzle",
|
||||
"sub_path": "process/0.10mm HighDetail @Creality K2 Pro 0.2 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.10mm HighDetail @Creality K2 0.2 nozzle",
|
||||
"sub_path": "process/0.10mm HighDetail @Creality K2 0.2 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.12mm Detail @Creality K2 Pro 0.2 nozzle",
|
||||
"sub_path": "process/0.12mm Detail @Creality K2 Pro 0.2 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.12mm Detail @Creality K2 0.2 nozzle",
|
||||
"sub_path": "process/0.12mm Detail @Creality K2 0.2 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.12mm Detail @Creality K2 Pro 0.4 nozzle",
|
||||
"sub_path": "process/0.12mm Detail @Creality K2 Pro 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.12mm Detail @Creality K2 0.4 nozzle",
|
||||
"sub_path": "process/0.12mm Detail @Creality K2 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.12mm Fine @Creality CR10SE 0.2",
|
||||
"sub_path": "process/0.12mm Fine @Creality CR10SE 0.2.json"
|
||||
@@ -802,6 +826,10 @@
|
||||
"name": "0.14mm Optimal @Creality K2 Pro 0.2 nozzle",
|
||||
"sub_path": "process/0.14mm Optimal @Creality K2 Pro 0.2 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.14mm Optimal @Creality K2 0.2 nozzle",
|
||||
"sub_path": "process/0.14mm Optimal @Creality K2 0.2 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.16mm Optimal @Creality CR10SE 0.2",
|
||||
"sub_path": "process/0.16mm Optimal @Creality CR10SE 0.2.json"
|
||||
@@ -862,10 +890,18 @@
|
||||
"name": "0.16mm Optimal @Creality K2 Pro 0.4 nozzle",
|
||||
"sub_path": "process/0.16mm Optimal @Creality K2 Pro 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.16mm Optimal @Creality K2 0.4 nozzle",
|
||||
"sub_path": "process/0.16mm Optimal @Creality K2 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.18mm Detail @Creality K2 Pro 0.6 nozzle",
|
||||
"sub_path": "process/0.18mm Detail @Creality K2 Pro 0.6 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.18mm Detail @Creality K2 0.6 nozzle",
|
||||
"sub_path": "process/0.18mm Detail @Creality K2 0.6 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.20mm Standard @Creality CR10SE 0.2",
|
||||
"sub_path": "process/0.20mm Standard @Creality CR10SE 0.2.json"
|
||||
@@ -926,6 +962,10 @@
|
||||
"name": "0.20mm Standard @Creality K2 Pro 0.4 nozzle",
|
||||
"sub_path": "process/0.20mm Standard @Creality K2 Pro 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.20mm Standard @Creality K2 0.4 nozzle",
|
||||
"sub_path": "process/0.20mm Standard @Creality K2 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.20mm Ultrafast @Creality Ender-5 Max 0.4mm nozzle",
|
||||
"sub_path": "process/0.20mm Ultrafast @Creality Ender-5 Max 0.4mm nozzle.json"
|
||||
@@ -938,6 +978,10 @@
|
||||
"name": "0.24mm Detail @Creality K2 Pro 0.8 nozzle",
|
||||
"sub_path": "process/0.24mm Detail @Creality K2 Pro 0.8 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.24mm Detail @Creality K2 0.8 nozzle",
|
||||
"sub_path": "process/0.24mm Detail @Creality K2 0.8 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.24mm Draft @Creality CR10SE 0.2",
|
||||
"sub_path": "process/0.24mm Draft @Creality CR10SE 0.2.json"
|
||||
@@ -994,6 +1038,10 @@
|
||||
"name": "0.24mm Draft @Creality K2 Pro 0.4 nozzle",
|
||||
"sub_path": "process/0.24mm Draft @Creality K2 Pro 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.24mm Draft @Creality K2 0.4 nozzle",
|
||||
"sub_path": "process/0.24mm Draft @Creality K2 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.24mm Optimal @Creality Ender-3 V3",
|
||||
"sub_path": "process/0.24mm Optimal @Creality Ender3V3 0.6 nozzle.json"
|
||||
@@ -1030,10 +1078,18 @@
|
||||
"name": "0.24mm Optimal @Creality K2 Pro 0.6 nozzle",
|
||||
"sub_path": "process/0.24mm Optimal @Creality K2 Pro 0.6 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.24mm Optimal @Creality K2 0.6 nozzle",
|
||||
"sub_path": "process/0.24mm Optimal @Creality K2 0.6 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.28mm SuperDraft @Creality K2 Pro 0.4 nozzle",
|
||||
"sub_path": "process/0.28mm SuperDraft @Creality K2 Pro 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.28mm SuperDraft @Creality K2 0.4 nozzle",
|
||||
"sub_path": "process/0.28mm SuperDraft @Creality K2 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.30mm Standard @Creality Ender-3 V3",
|
||||
"sub_path": "process/0.30mm Standard @Creality Ender3V3 0.6 nozzle.json"
|
||||
@@ -1066,6 +1122,10 @@
|
||||
"name": "0.30mm Standard @Creality K2 Pro 0.6 nozzle",
|
||||
"sub_path": "process/0.30mm Standard @Creality K2 Pro 0.6 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.30mm Standard @Creality K2 0.6 nozzle",
|
||||
"sub_path": "process/0.30mm Standard @Creality K2 0.6 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.32mm Optimal @Creality K1 (0.8 nozzle)",
|
||||
"sub_path": "process/0.32mm Optimal @Creality K1 (0.8 nozzle).json"
|
||||
@@ -1086,6 +1146,10 @@
|
||||
"name": "0.32mm Optimal @Creality K2 Pro 0.8 nozzle",
|
||||
"sub_path": "process/0.32mm Optimal @Creality K2 Pro 0.8 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.32mm Optimal @Creality K2 0.8 nozzle",
|
||||
"sub_path": "process/0.32mm Optimal @Creality K2 0.8 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.36mm Draft @Creality Ender-3 V3",
|
||||
"sub_path": "process/0.36mm Draft @Creality Ender3V3 0.6 nozzle.json"
|
||||
@@ -1114,10 +1178,14 @@
|
||||
"name": "0.36mm Draft @Creality K2 Plus 0.6 nozzle",
|
||||
"sub_path": "process/0.36mm Draft @Creality K2 Plus 0.6 nozzle.json"
|
||||
},
|
||||
{
|
||||
{
|
||||
"name": "0.36mm Draft @Creality K2 Pro 0.6 nozzle",
|
||||
"sub_path": "process/0.36mm Draft @Creality K2 Pro 0.6 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.36mm Draft @Creality K2 0.6 nozzle",
|
||||
"sub_path": "process/0.36mm Draft @Creality K2 0.6 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.40mm Standard @Creality K1 (0.8 nozzle)",
|
||||
"sub_path": "process/0.40mm Standard @Creality K1 (0.8 nozzle).json"
|
||||
@@ -1142,10 +1210,18 @@
|
||||
"name": "0.40mm Standard @Creality K2 Pro 0.8 nozzle",
|
||||
"sub_path": "process/0.40mm Standard @Creality K2 Pro 0.8 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.40mm Standard @Creality K2 0.8 nozzle",
|
||||
"sub_path": "process/0.40mm Standard @Creality K2 0.8 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.42mm SuperDraft @Creality K2 Pro 0.6 nozzle",
|
||||
"sub_path": "process/0.42mm SuperDraft @Creality K2 Pro 0.6 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.42mm SuperDraft @Creality K2 0.6 nozzle",
|
||||
"sub_path": "process/0.42mm SuperDraft @Creality K2 0.6 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.48mm Draft @Creality K1 (0.8 nozzle)",
|
||||
"sub_path": "process/0.48mm Draft @Creality K1 (0.8 nozzle).json"
|
||||
@@ -1170,10 +1246,18 @@
|
||||
"name": "0.48mm Draft @Creality K2 Pro 0.8 nozzle",
|
||||
"sub_path": "process/0.48mm Draft @Creality K2 Pro 0.8 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.48mm Draft @Creality K2 0.8 nozzle",
|
||||
"sub_path": "process/0.48mm Draft @Creality K2 0.8 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.56mm SuperDraft @Creality K2 Pro 0.8 nozzle",
|
||||
"sub_path": "process/0.56mm SuperDraft @Creality K2 Pro 0.8 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.56mm SuperDraft @Creality K2 0.8 nozzle",
|
||||
"sub_path": "process/0.56mm SuperDraft @Creality K2 0.8 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "0.08mm SuperDetail @Creality Ender5Pro (2019) 0.2",
|
||||
"sub_path": "process/0.08mm SuperDetail @Creality Ender5Pro (2019) 0.2.json"
|
||||
@@ -1898,18 +1982,34 @@
|
||||
"name": "Creality K2 Pro 0.2 nozzle",
|
||||
"sub_path": "machine/Creality K2 Pro 0.2 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Creality K2 0.2 nozzle",
|
||||
"sub_path": "machine/Creality K2 0.2 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Creality K2 Pro 0.4 nozzle",
|
||||
"sub_path": "machine/Creality K2 Pro 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Creality K2 0.4 nozzle",
|
||||
"sub_path": "machine/Creality K2 0.4 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Creality K2 Pro 0.6 nozzle",
|
||||
"sub_path": "machine/Creality K2 Pro 0.6 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Creality K2 0.6 nozzle",
|
||||
"sub_path": "machine/Creality K2 0.6 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Creality K2 Pro 0.8 nozzle",
|
||||
"sub_path": "machine/Creality K2 Pro 0.8 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Creality K2 0.8 nozzle",
|
||||
"sub_path": "machine/Creality K2 0.8 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Creality Sermoon V1 0.4 nozzle",
|
||||
"sub_path": "machine/Creality Sermoon V1 0.4 nozzle.json"
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
@@ -21,6 +21,10 @@
|
||||
";filament start gcode\n{if (position[2] > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Creality K2 0.2 nozzle",
|
||||
"Creality K2 0.4 nozzle",
|
||||
"Creality K2 0.6 nozzle",
|
||||
"Creality K2 0.8 nozzle",
|
||||
"Creality K2 Plus 0.2 nozzle",
|
||||
"Creality K2 Plus 0.4 nozzle",
|
||||
"Creality K2 Plus 0.6 nozzle",
|
||||
|
||||
@@ -21,6 +21,10 @@
|
||||
";filament start gcode\n{if (position[2] > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Creality K2 0.2 nozzle",
|
||||
"Creality K2 0.4 nozzle",
|
||||
"Creality K2 0.6 nozzle",
|
||||
"Creality K2 0.8 nozzle",
|
||||
"Creality K2 Plus 0.2 nozzle",
|
||||
"Creality K2 Plus 0.4 nozzle",
|
||||
"Creality K2 Plus 0.6 nozzle",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
";filament start gcode\n{if (position[2] > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Creality K2 0.2 nozzle",
|
||||
"Creality K2 0.4 nozzle",
|
||||
"Creality K2 0.6 nozzle",
|
||||
"Creality K2 0.8 nozzle",
|
||||
"Creality K2 Plus 0.2 nozzle",
|
||||
"Creality K2 Plus 0.4 nozzle",
|
||||
"Creality K2 Plus 0.6 nozzle",
|
||||
|
||||
@@ -54,6 +54,10 @@
|
||||
";filament start gcode\n{if (position[2] > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Creality K2 0.2 nozzle",
|
||||
"Creality K2 0.4 nozzle",
|
||||
"Creality K2 0.6 nozzle",
|
||||
"Creality K2 0.8 nozzle",
|
||||
"Creality K2 Plus 0.2 nozzle",
|
||||
"Creality K2 Plus 0.4 nozzle",
|
||||
"Creality K2 Plus 0.6 nozzle",
|
||||
|
||||
@@ -48,6 +48,10 @@
|
||||
";filament start gcode\n{if (position[2] > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Creality K2 0.2 nozzle",
|
||||
"Creality K2 0.4 nozzle",
|
||||
"Creality K2 0.6 nozzle",
|
||||
"Creality K2 0.8 nozzle",
|
||||
"Creality K2 Plus 0.2 nozzle",
|
||||
"Creality K2 Plus 0.4 nozzle",
|
||||
"Creality K2 Plus 0.6 nozzle",
|
||||
|
||||
@@ -9,6 +9,10 @@
|
||||
"23"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Creality K2 0.2 nozzle",
|
||||
"Creality K2 0.4 nozzle",
|
||||
"Creality K2 0.6 nozzle",
|
||||
"Creality K2 0.8 nozzle",
|
||||
"Creality K2 Plus 0.2 nozzle",
|
||||
"Creality K2 Plus 0.4 nozzle",
|
||||
"Creality K2 Plus 0.6 nozzle",
|
||||
|
||||
@@ -9,6 +9,10 @@
|
||||
"18"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Creality K2 0.2 nozzle",
|
||||
"Creality K2 0.4 nozzle",
|
||||
"Creality K2 0.6 nozzle",
|
||||
"Creality K2 0.8 nozzle",
|
||||
"Creality K2 Plus 0.2 nozzle",
|
||||
"Creality K2 Plus 0.4 nozzle",
|
||||
"Creality K2 Plus 0.6 nozzle",
|
||||
|
||||
@@ -9,6 +9,10 @@
|
||||
"10"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Creality K2 0.2 nozzle",
|
||||
"Creality K2 0.4 nozzle",
|
||||
"Creality K2 0.6 nozzle",
|
||||
"Creality K2 0.8 nozzle",
|
||||
"Creality K2 Plus 0.2 nozzle",
|
||||
"Creality K2 Plus 0.4 nozzle",
|
||||
"Creality K2 Plus 0.6 nozzle",
|
||||
|
||||
@@ -15,6 +15,10 @@
|
||||
"0"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Creality K2 0.2 nozzle",
|
||||
"Creality K2 0.4 nozzle",
|
||||
"Creality K2 0.6 nozzle",
|
||||
"Creality K2 0.8 nozzle",
|
||||
"Creality K2 Plus 0.2 nozzle",
|
||||
"Creality K2 Plus 0.4 nozzle",
|
||||
"Creality K2 Plus 0.6 nozzle",
|
||||
|
||||
@@ -36,6 +36,10 @@
|
||||
";filament start gcode\n{if (position[2] > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Creality K2 0.2 nozzle",
|
||||
"Creality K2 0.4 nozzle",
|
||||
"Creality K2 0.6 nozzle",
|
||||
"Creality K2 0.8 nozzle",
|
||||
"Creality K2 Plus 0.2 nozzle",
|
||||
"Creality K2 Plus 0.4 nozzle",
|
||||
"Creality K2 Plus 0.6 nozzle",
|
||||
|
||||
@@ -0,0 +1,183 @@
|
||||
{
|
||||
"type": "machine",
|
||||
"from": "system",
|
||||
"settings_id": "GM001",
|
||||
"instantiation": "true",
|
||||
"inherits": "fdm_creality_common",
|
||||
"printer_model": "Creality K2",
|
||||
"printer_settings_id": "Creality",
|
||||
"auxiliary_fan": "1",
|
||||
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n",
|
||||
"change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X0 Y140 F30000\nG1 Z{z_after_toolchange} F600",
|
||||
"cooling_tube_length": "0",
|
||||
"cooling_tube_retraction": "0",
|
||||
"default_print_profile": "0.10mm Standard @Creality K2 0.2 nozzle",
|
||||
"emit_machine_limits_to_gcode": "1",
|
||||
"enable_filament_ramming": "0",
|
||||
"extra_loading_move": "0",
|
||||
"extruder_clearance_height_to_lid": "118",
|
||||
"extruder_clearance_height_to_rod": "24",
|
||||
"extruder_clearance_radius": "64",
|
||||
"fan_kickstart": "0",
|
||||
"fan_speedup_overhangs": "1",
|
||||
"fan_speedup_time": "0",
|
||||
"gcode_flavor": "klipper",
|
||||
"high_current_on_filament_swap": "0",
|
||||
"machine_end_gcode": "END_PRINT",
|
||||
"machine_load_filament_time": "0",
|
||||
"machine_max_acceleration_e": [
|
||||
"5000",
|
||||
"5000"
|
||||
],
|
||||
"machine_max_acceleration_extruding": [
|
||||
"20000",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_retracting": [
|
||||
"5000",
|
||||
"5000"
|
||||
],
|
||||
"machine_max_acceleration_travel": [
|
||||
"20000",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_x": [
|
||||
"20000",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_y": [
|
||||
"20000",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_z": [
|
||||
"100",
|
||||
"100"
|
||||
],
|
||||
"machine_max_jerk_e": [
|
||||
"10",
|
||||
"10"
|
||||
],
|
||||
"machine_max_jerk_x": [
|
||||
"100",
|
||||
"100"
|
||||
],
|
||||
"machine_max_jerk_y": [
|
||||
"100",
|
||||
"100"
|
||||
],
|
||||
"machine_max_jerk_z": [
|
||||
"5",
|
||||
"5"
|
||||
],
|
||||
"machine_max_speed_e": [
|
||||
"50",
|
||||
"50"
|
||||
],
|
||||
"machine_max_speed_x": [
|
||||
"800",
|
||||
"800"
|
||||
],
|
||||
"machine_max_speed_y": [
|
||||
"800",
|
||||
"800"
|
||||
],
|
||||
"machine_max_speed_z": [
|
||||
"5",
|
||||
"5"
|
||||
],
|
||||
"machine_pause_gcode": "PAUSE",
|
||||
"machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y130 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y130 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X130 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600",
|
||||
"machine_unload_filament_time": "0",
|
||||
"manual_filament_change": "0",
|
||||
"nozzle_type": "hardened_steel",
|
||||
"nozzle_volume": "183",
|
||||
"parking_pos_retraction": "0",
|
||||
"preferred_orientation": "0",
|
||||
"printable_area": [
|
||||
"0x0",
|
||||
"260x0",
|
||||
"260x260",
|
||||
"0x260"
|
||||
],
|
||||
"printable_height": "260",
|
||||
"printer_technology": "FFF",
|
||||
"printer_variant": "0.2",
|
||||
"printhost_authorization_type": "key",
|
||||
"purge_in_prime_tower": "0",
|
||||
"scan_first_layer": "0",
|
||||
"silent_mode": "0",
|
||||
"single_extruder_multi_material": "1",
|
||||
"support_air_filtration": "1",
|
||||
"support_chamber_temp_control": "0",
|
||||
"support_multi_bed_types": "1",
|
||||
"thumbnails": [
|
||||
"300x300",
|
||||
"96x96"
|
||||
],
|
||||
"thumbnails_format": "PNG",
|
||||
"use_firmware_retraction": "0",
|
||||
"use_relative_e_distances": "1",
|
||||
"z_offset": "0",
|
||||
"default_filament_profile": [
|
||||
"Creality Generic PLA @K2-all"
|
||||
],
|
||||
"deretraction_speed": [
|
||||
"40"
|
||||
],
|
||||
"extruder_colour": [
|
||||
"#FCE94F"
|
||||
],
|
||||
"extruder_offset": [
|
||||
"0x0"
|
||||
],
|
||||
"max_layer_height": [
|
||||
"0.14"
|
||||
],
|
||||
"min_layer_height": [
|
||||
"0.04"
|
||||
],
|
||||
"nozzle_diameter": [
|
||||
"0.2"
|
||||
],
|
||||
"retract_before_wipe": [
|
||||
"70%"
|
||||
],
|
||||
"retract_length_toolchange": [
|
||||
"0"
|
||||
],
|
||||
"retract_lift_above": [
|
||||
"0"
|
||||
],
|
||||
"retract_lift_below": [
|
||||
"259"
|
||||
],
|
||||
"retract_restart_extra": [
|
||||
"0"
|
||||
],
|
||||
"retract_restart_extra_toolchange": [
|
||||
"0"
|
||||
],
|
||||
"retract_when_changing_layer": [
|
||||
"1"
|
||||
],
|
||||
"retraction_length": [
|
||||
"0.5"
|
||||
],
|
||||
"retraction_minimum_travel": [
|
||||
"1"
|
||||
],
|
||||
"retraction_speed": [
|
||||
"40"
|
||||
],
|
||||
"wipe": [
|
||||
"1"
|
||||
],
|
||||
"wipe_distance": [
|
||||
"2"
|
||||
],
|
||||
"z_hop": [
|
||||
"0.4"
|
||||
],
|
||||
"name": "Creality K2 0.2 nozzle",
|
||||
"nozzle_height": "4"
|
||||
}
|
||||
@@ -0,0 +1,182 @@
|
||||
{
|
||||
"type": "machine",
|
||||
"from": "system",
|
||||
"settings_id": "GM001",
|
||||
"instantiation": "true",
|
||||
"inherits": "fdm_creality_common",
|
||||
"printer_model": "Creality K2",
|
||||
"printer_settings_id": "Creality",
|
||||
"auxiliary_fan": "1",
|
||||
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n",
|
||||
"change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X0 Y140 F30000\nG1 Z{z_after_toolchange} F600",
|
||||
"cooling_tube_length": "0",
|
||||
"cooling_tube_retraction": "0",
|
||||
"default_print_profile": "0.16mm Standard @Creality K2 0.4 nozzle",
|
||||
"emit_machine_limits_to_gcode": "1",
|
||||
"enable_filament_ramming": "0",
|
||||
"extra_loading_move": "0",
|
||||
"extruder_clearance_height_to_lid": "118",
|
||||
"extruder_clearance_height_to_rod": "24",
|
||||
"extruder_clearance_radius": "64",
|
||||
"fan_kickstart": "0",
|
||||
"fan_speedup_overhangs": "1",
|
||||
"fan_speedup_time": "0",
|
||||
"gcode_flavor": "klipper",
|
||||
"high_current_on_filament_swap": "0",
|
||||
"machine_end_gcode": "END_PRINT",
|
||||
"machine_load_filament_time": "0",
|
||||
"machine_max_acceleration_e": [
|
||||
"5000",
|
||||
"5000"
|
||||
],
|
||||
"machine_max_acceleration_extruding": [
|
||||
"20000",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_retracting": [
|
||||
"5000",
|
||||
"5000"
|
||||
],
|
||||
"machine_max_acceleration_travel": [
|
||||
"20000",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_x": [
|
||||
"20000",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_y": [
|
||||
"20000",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_z": [
|
||||
"100",
|
||||
"100"
|
||||
],
|
||||
"machine_max_jerk_e": [
|
||||
"10",
|
||||
"10"
|
||||
],
|
||||
"machine_max_jerk_x": [
|
||||
"100",
|
||||
"100"
|
||||
],
|
||||
"machine_max_jerk_y": [
|
||||
"100",
|
||||
"100"
|
||||
],
|
||||
"machine_max_jerk_z": [
|
||||
"5",
|
||||
"5"
|
||||
],
|
||||
"machine_max_speed_e": [
|
||||
"50",
|
||||
"50"
|
||||
],
|
||||
"machine_max_speed_x": [
|
||||
"800",
|
||||
"800"
|
||||
],
|
||||
"machine_max_speed_y": [
|
||||
"800",
|
||||
"800"
|
||||
],
|
||||
"machine_max_speed_z": [
|
||||
"5",
|
||||
"5"
|
||||
],
|
||||
"machine_pause_gcode": "PAUSE",
|
||||
"machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y130 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y130 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X130 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600",
|
||||
"machine_unload_filament_time": "0",
|
||||
"manual_filament_change": "0",
|
||||
"nozzle_type": "hardened_steel",
|
||||
"nozzle_volume": "183",
|
||||
"parking_pos_retraction": "0",
|
||||
"preferred_orientation": "0",
|
||||
"printable_area": [
|
||||
"0x0",
|
||||
"260x0",
|
||||
"260x260",
|
||||
"0x260"
|
||||
],
|
||||
"printable_height": "260",
|
||||
"printer_technology": "FFF",
|
||||
"printer_variant": "0.4",
|
||||
"printhost_authorization_type": "key",
|
||||
"purge_in_prime_tower": "0",
|
||||
"scan_first_layer": "0",
|
||||
"silent_mode": "0",
|
||||
"single_extruder_multi_material": "1",
|
||||
"support_air_filtration": "1",
|
||||
"support_chamber_temp_control": "0",
|
||||
"support_multi_bed_types": "1",
|
||||
"thumbnails": [
|
||||
"300x300",
|
||||
"96x96"
|
||||
],
|
||||
"thumbnails_format": "PNG",
|
||||
"use_firmware_retraction": "0",
|
||||
"use_relative_e_distances": "1",
|
||||
"z_offset": "0",
|
||||
"default_filament_profile": [
|
||||
"Creality Generic PLA @K2-all"
|
||||
],
|
||||
"deretraction_speed": [
|
||||
"40"
|
||||
],
|
||||
"extruder_colour": [
|
||||
"#FCE94F"
|
||||
],
|
||||
"extruder_offset": [
|
||||
"0x0"
|
||||
],
|
||||
"max_layer_height": [
|
||||
"0.32"
|
||||
],
|
||||
"min_layer_height": [
|
||||
"0.08"
|
||||
],
|
||||
"nozzle_diameter": [
|
||||
"0.4"
|
||||
],
|
||||
"retract_before_wipe": [
|
||||
"70%"
|
||||
],
|
||||
"retract_length_toolchange": [
|
||||
"0"
|
||||
],
|
||||
"retract_lift_above": [
|
||||
"0"
|
||||
],
|
||||
"retract_lift_below": [
|
||||
"259"
|
||||
],
|
||||
"retract_restart_extra": [
|
||||
"0"
|
||||
],
|
||||
"retract_restart_extra_toolchange": [
|
||||
"0"
|
||||
],
|
||||
"retract_when_changing_layer": [
|
||||
"1"
|
||||
],
|
||||
"retraction_length": [
|
||||
"0.8"
|
||||
],
|
||||
"retraction_minimum_travel": [
|
||||
"1"
|
||||
],
|
||||
"retraction_speed": [
|
||||
"40"
|
||||
],
|
||||
"wipe": [
|
||||
"1"
|
||||
],
|
||||
"wipe_distance": [
|
||||
"2"
|
||||
],
|
||||
"z_hop": [
|
||||
"0.4"
|
||||
],
|
||||
"name": "Creality K2 0.4 nozzle"
|
||||
}
|
||||
@@ -0,0 +1,182 @@
|
||||
{
|
||||
"type": "machine",
|
||||
"from": "system",
|
||||
"setting_id": "GM001",
|
||||
"instantiation": "true",
|
||||
"inherits": "fdm_creality_common",
|
||||
"printer_model": "Creality K2",
|
||||
"printer_settings_id": "Creality",
|
||||
"auxiliary_fan": "1",
|
||||
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n",
|
||||
"change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X0 Y140 F30000\nG1 Z{z_after_toolchange} F600",
|
||||
"cooling_tube_length": "0",
|
||||
"cooling_tube_retraction": "0",
|
||||
"default_print_profile": "0.30mm Standard @Creality K2 0.6 nozzle",
|
||||
"emit_machine_limits_to_gcode": "1",
|
||||
"enable_filament_ramming": "0",
|
||||
"extra_loading_move": "0",
|
||||
"extruder_clearance_height_to_lid": "118",
|
||||
"extruder_clearance_height_to_rod": "24",
|
||||
"extruder_clearance_radius": "64",
|
||||
"fan_kickstart": "0",
|
||||
"fan_speedup_overhangs": "1",
|
||||
"fan_speedup_time": "0",
|
||||
"gcode_flavor": "klipper",
|
||||
"high_current_on_filament_swap": "0",
|
||||
"machine_end_gcode": "END_PRINT",
|
||||
"machine_load_filament_time": "0",
|
||||
"machine_max_acceleration_e": [
|
||||
"5000",
|
||||
"5000"
|
||||
],
|
||||
"machine_max_acceleration_extruding": [
|
||||
"20000",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_retracting": [
|
||||
"5000",
|
||||
"5000"
|
||||
],
|
||||
"machine_max_acceleration_travel": [
|
||||
"20000",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_x": [
|
||||
"20000",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_y": [
|
||||
"20000",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_z": [
|
||||
"100",
|
||||
"100"
|
||||
],
|
||||
"machine_max_jerk_e": [
|
||||
"10",
|
||||
"10"
|
||||
],
|
||||
"machine_max_jerk_x": [
|
||||
"100",
|
||||
"100"
|
||||
],
|
||||
"machine_max_jerk_y": [
|
||||
"100",
|
||||
"100"
|
||||
],
|
||||
"machine_max_jerk_z": [
|
||||
"5",
|
||||
"5"
|
||||
],
|
||||
"machine_max_speed_e": [
|
||||
"50",
|
||||
"50"
|
||||
],
|
||||
"machine_max_speed_x": [
|
||||
"800",
|
||||
"800"
|
||||
],
|
||||
"machine_max_speed_y": [
|
||||
"800",
|
||||
"800"
|
||||
],
|
||||
"machine_max_speed_z": [
|
||||
"5",
|
||||
"5"
|
||||
],
|
||||
"machine_pause_gcode": "PAUSE",
|
||||
"machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y130 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y130 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X130 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600",
|
||||
"machine_unload_filament_time": "0",
|
||||
"manual_filament_change": "0",
|
||||
"nozzle_type": "hardened_steel",
|
||||
"nozzle_volume": "183",
|
||||
"parking_pos_retraction": "0",
|
||||
"preferred_orientation": "0",
|
||||
"printable_area": [
|
||||
"0x0",
|
||||
"260x0",
|
||||
"260x260",
|
||||
"0x260"
|
||||
],
|
||||
"printable_height": "260",
|
||||
"printer_technology": "FFF",
|
||||
"printer_variant": "0.6",
|
||||
"printhost_authorization_type": "key",
|
||||
"purge_in_prime_tower": "0",
|
||||
"scan_first_layer": "0",
|
||||
"silent_mode": "0",
|
||||
"single_extruder_multi_material": "1",
|
||||
"support_air_filtration": "1",
|
||||
"support_chamber_temp_control": "0",
|
||||
"support_multi_bed_types": "1",
|
||||
"thumbnails": [
|
||||
"300x300",
|
||||
"96x96"
|
||||
],
|
||||
"thumbnails_format": "PNG",
|
||||
"use_firmware_retraction": "0",
|
||||
"use_relative_e_distances": "1",
|
||||
"z_offset": "0",
|
||||
"default_filament_profile": [
|
||||
"Creality Generic PLA @K2-all"
|
||||
],
|
||||
"deretraction_speed": [
|
||||
"40"
|
||||
],
|
||||
"extruder_colour": [
|
||||
"#FCE94F"
|
||||
],
|
||||
"extruder_offset": [
|
||||
"0x0"
|
||||
],
|
||||
"max_layer_height": [
|
||||
"0.42"
|
||||
],
|
||||
"min_layer_height": [
|
||||
"0.12"
|
||||
],
|
||||
"nozzle_diameter": [
|
||||
"0.6"
|
||||
],
|
||||
"retract_before_wipe": [
|
||||
"70%"
|
||||
],
|
||||
"retract_length_toolchange": [
|
||||
"0"
|
||||
],
|
||||
"retract_lift_above": [
|
||||
"0"
|
||||
],
|
||||
"retract_lift_below": [
|
||||
"259"
|
||||
],
|
||||
"retract_restart_extra": [
|
||||
"0"
|
||||
],
|
||||
"retract_restart_extra_toolchange": [
|
||||
"0"
|
||||
],
|
||||
"retract_when_changing_layer": [
|
||||
"1"
|
||||
],
|
||||
"retraction_length": [
|
||||
"1.5"
|
||||
],
|
||||
"retraction_minimum_travel": [
|
||||
"1"
|
||||
],
|
||||
"retraction_speed": [
|
||||
"40"
|
||||
],
|
||||
"wipe": [
|
||||
"1"
|
||||
],
|
||||
"wipe_distance": [
|
||||
"2"
|
||||
],
|
||||
"z_hop": [
|
||||
"0.4"
|
||||
],
|
||||
"name": "Creality K2 0.6 nozzle"
|
||||
}
|
||||
@@ -0,0 +1,182 @@
|
||||
{
|
||||
"type": "machine",
|
||||
"from": "system",
|
||||
"setting_id": "GM001",
|
||||
"instantiation": "true",
|
||||
"inherits": "fdm_creality_common",
|
||||
"printer_model": "Creality K2",
|
||||
"printer_settings_id": "Creality",
|
||||
"auxiliary_fan": "1",
|
||||
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n",
|
||||
"change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X0 Y140 F30000\nG1 Z{z_after_toolchange} F600",
|
||||
"cooling_tube_length": "0",
|
||||
"cooling_tube_retraction": "0",
|
||||
"default_print_profile": "0.40mm Standard @Creality K2 0.8 nozzle",
|
||||
"emit_machine_limits_to_gcode": "1",
|
||||
"enable_filament_ramming": "0",
|
||||
"extra_loading_move": "0",
|
||||
"extruder_clearance_height_to_lid": "118",
|
||||
"extruder_clearance_height_to_rod": "24",
|
||||
"extruder_clearance_radius": "64",
|
||||
"fan_kickstart": "0",
|
||||
"fan_speedup_overhangs": "1",
|
||||
"fan_speedup_time": "0",
|
||||
"gcode_flavor": "klipper",
|
||||
"high_current_on_filament_swap": "0",
|
||||
"machine_end_gcode": "END_PRINT",
|
||||
"machine_load_filament_time": "0",
|
||||
"machine_max_acceleration_e": [
|
||||
"5000",
|
||||
"5000"
|
||||
],
|
||||
"machine_max_acceleration_extruding": [
|
||||
"20000",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_retracting": [
|
||||
"5000",
|
||||
"5000"
|
||||
],
|
||||
"machine_max_acceleration_travel": [
|
||||
"20000",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_x": [
|
||||
"20000",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_y": [
|
||||
"20000",
|
||||
"20000"
|
||||
],
|
||||
"machine_max_acceleration_z": [
|
||||
"100",
|
||||
"100"
|
||||
],
|
||||
"machine_max_jerk_e": [
|
||||
"10",
|
||||
"10"
|
||||
],
|
||||
"machine_max_jerk_x": [
|
||||
"100",
|
||||
"100"
|
||||
],
|
||||
"machine_max_jerk_y": [
|
||||
"100",
|
||||
"100"
|
||||
],
|
||||
"machine_max_jerk_z": [
|
||||
"5",
|
||||
"5"
|
||||
],
|
||||
"machine_max_speed_e": [
|
||||
"50",
|
||||
"50"
|
||||
],
|
||||
"machine_max_speed_x": [
|
||||
"800",
|
||||
"800"
|
||||
],
|
||||
"machine_max_speed_y": [
|
||||
"800",
|
||||
"800"
|
||||
],
|
||||
"machine_max_speed_z": [
|
||||
"5",
|
||||
"5"
|
||||
],
|
||||
"machine_pause_gcode": "PAUSE",
|
||||
"machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y130 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y130 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X130 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600",
|
||||
"machine_unload_filament_time": "0",
|
||||
"manual_filament_change": "0",
|
||||
"nozzle_type": "hardened_steel",
|
||||
"nozzle_volume": "183",
|
||||
"parking_pos_retraction": "0",
|
||||
"preferred_orientation": "0",
|
||||
"printable_area": [
|
||||
"0x0",
|
||||
"260x0",
|
||||
"260x260",
|
||||
"0x260"
|
||||
],
|
||||
"printable_height": "260",
|
||||
"printer_technology": "FFF",
|
||||
"printer_variant": "0.8",
|
||||
"printhost_authorization_type": "key",
|
||||
"purge_in_prime_tower": "0",
|
||||
"scan_first_layer": "0",
|
||||
"silent_mode": "0",
|
||||
"single_extruder_multi_material": "1",
|
||||
"support_air_filtration": "1",
|
||||
"support_chamber_temp_control": "0",
|
||||
"support_multi_bed_types": "1",
|
||||
"thumbnails": [
|
||||
"300x300",
|
||||
"96x96"
|
||||
],
|
||||
"thumbnails_format": "PNG",
|
||||
"use_firmware_retraction": "0",
|
||||
"use_relative_e_distances": "1",
|
||||
"z_offset": "0",
|
||||
"default_filament_profile": [
|
||||
"Creality Generic PLA @K2-all"
|
||||
],
|
||||
"deretraction_speed": [
|
||||
"40"
|
||||
],
|
||||
"extruder_colour": [
|
||||
"#FCE94F"
|
||||
],
|
||||
"extruder_offset": [
|
||||
"0x0"
|
||||
],
|
||||
"max_layer_height": [
|
||||
"0.56"
|
||||
],
|
||||
"min_layer_height": [
|
||||
"0.16"
|
||||
],
|
||||
"nozzle_diameter": [
|
||||
"0.8"
|
||||
],
|
||||
"retract_before_wipe": [
|
||||
"70%"
|
||||
],
|
||||
"retract_length_toolchange": [
|
||||
"0"
|
||||
],
|
||||
"retract_lift_above": [
|
||||
"0"
|
||||
],
|
||||
"retract_lift_below": [
|
||||
"259"
|
||||
],
|
||||
"retract_restart_extra": [
|
||||
"0"
|
||||
],
|
||||
"retract_restart_extra_toolchange": [
|
||||
"0"
|
||||
],
|
||||
"retract_when_changing_layer": [
|
||||
"1"
|
||||
],
|
||||
"retraction_length": [
|
||||
"3"
|
||||
],
|
||||
"retraction_minimum_travel": [
|
||||
"1"
|
||||
],
|
||||
"retraction_speed": [
|
||||
"40"
|
||||
],
|
||||
"wipe": [
|
||||
"1"
|
||||
],
|
||||
"wipe_distance": [
|
||||
"2"
|
||||
],
|
||||
"z_hop": [
|
||||
"0.4"
|
||||
],
|
||||
"name": "Creality K2 0.8 nozzle"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"type": "machine_model",
|
||||
"name": "Creality K2",
|
||||
"model_id": "Creality_K2",
|
||||
"nozzle_diameter": "0.2;0.4;0.6;0.8",
|
||||
"machine_tech": "FFF",
|
||||
"family": "Creality",
|
||||
"bed_model": "creality_k1_buildplate_model.stl",
|
||||
"default_bed_type": "Textured PEI Plate",
|
||||
"bed_texture": "creality_k1_buildplate_texture.png",
|
||||
"hotend_model": "",
|
||||
"default_materials": "Creality Generic ABS @K2-all;Creality Generic ASA @K2-all;Creality Generic PETG @K2-all;Creality Generic PLA @K2-all;Creality Generic PLA High Speed @K2-all;Creality Generic PLA Matte @K2-all;Creality Generic PLA Silk @K2-all"
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
{
|
||||
"type": "process",
|
||||
"name": "0.08mm SuperDetail @Creality K2 0.2 nozzle",
|
||||
"inherits": "fdm_process_common_klipper",
|
||||
"from": "system",
|
||||
"setting_id": "GP004",
|
||||
"instantiation": "true",
|
||||
"max_travel_detour_distance": "0",
|
||||
"bottom_surface_pattern": "monotonic",
|
||||
"bottom_shell_layers": "5",
|
||||
"bottom_shell_thickness": "0",
|
||||
"bridge_flow": "1",
|
||||
"bridge_speed": "25",
|
||||
"internal_bridge_speed": "70",
|
||||
"brim_width": "5",
|
||||
"brim_object_gap": "0.1",
|
||||
"compatible_printers": [
|
||||
"Creality K2 0.2 nozzle"
|
||||
],
|
||||
"default_acceleration": "12000",
|
||||
"bridge_no_support": "0",
|
||||
"draft_shield": "disabled",
|
||||
"elefant_foot_compensation": "0.15",
|
||||
"outer_wall_line_width": "0.22",
|
||||
"outer_wall_speed": "100",
|
||||
"outer_wall_acceleration": "5000",
|
||||
"inner_wall_acceleration": "5000",
|
||||
"wall_generator": "classic",
|
||||
"wall_infill_order": "inner wall/outer wall/infill",
|
||||
"line_width": "0.22",
|
||||
"infill_direction": "45",
|
||||
"sparse_infill_density": "15%",
|
||||
"sparse_infill_pattern": "crosshatch",
|
||||
"internal_bridge_support_thickness": "0.8",
|
||||
"initial_layer_acceleration": "500",
|
||||
"initial_layer_line_width": "0.25",
|
||||
"initial_layer_print_height": "0.1",
|
||||
"initial_layer_speed": "40",
|
||||
"gap_infill_speed": "50",
|
||||
"infill_combination": "0",
|
||||
"sparse_infill_line_width": "0.25",
|
||||
"infill_wall_overlap": "30",
|
||||
"sparse_infill_speed": "120",
|
||||
"interface_shells": "0",
|
||||
"ironing_flow": "10%",
|
||||
"ironing_spacing": "0.15",
|
||||
"ironing_speed": "30",
|
||||
"ironing_type": "no ironing",
|
||||
"layer_height": "0.08",
|
||||
"reduce_infill_retraction": "1",
|
||||
"filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode",
|
||||
"detect_overhang_wall": "1",
|
||||
"overhang_1_4_speed": "0",
|
||||
"overhang_2_4_speed": "50",
|
||||
"overhang_3_4_speed": "30",
|
||||
"overhang_4_4_speed": "10",
|
||||
"only_one_wall_top": "1",
|
||||
"precise_outer_wall": "0",
|
||||
"inner_wall_line_width": "0.25",
|
||||
"inner_wall_speed": "150",
|
||||
"wall_loops": "4",
|
||||
"raft_layers": "0",
|
||||
"seam_position": "aligned",
|
||||
"skirt_distance": "2",
|
||||
"skirt_height": "1",
|
||||
"skirt_loops": "0",
|
||||
"minimum_sparse_infill_area": "15",
|
||||
"internal_solid_infill_line_width": "0.22",
|
||||
"internal_solid_infill_speed": "150",
|
||||
"initial_layer_infill_speed": "60",
|
||||
"standby_temperature_delta": "-5",
|
||||
"enable_support": "0",
|
||||
"resolution": "0.012",
|
||||
"support_type": "normal(auto)",
|
||||
"support_style": "default",
|
||||
"support_on_build_plate_only": "0",
|
||||
"support_top_z_distance": "0.2",
|
||||
"support_bottom_z_distance": "0.2",
|
||||
"support_filament": "0",
|
||||
"support_line_width": "0.2",
|
||||
"support_interface_loop_pattern": "0",
|
||||
"support_interface_filament": "0",
|
||||
"support_interface_top_layers": "2",
|
||||
"support_interface_bottom_layers": "2",
|
||||
"support_interface_spacing": "0.5",
|
||||
"support_expansion": "0",
|
||||
"support_interface_speed": "80",
|
||||
"support_base_pattern": "default",
|
||||
"support_base_pattern_spacing": "2.5",
|
||||
"support_speed": "150",
|
||||
"support_threshold_angle": "30",
|
||||
"support_object_xy_distance": "0.35",
|
||||
"tree_support_branch_diameter": "2",
|
||||
"tree_support_branch_angle": "45",
|
||||
"tree_support_wall_count": "1",
|
||||
"detect_thin_wall": "0",
|
||||
"top_surface_pattern": "monotonicline",
|
||||
"top_surface_line_width": "0.22",
|
||||
"top_surface_acceleration": "2000",
|
||||
"top_surface_speed": "100",
|
||||
"top_shell_layers": "7",
|
||||
"top_shell_thickness": "0.8",
|
||||
"travel_acceleration": "12000",
|
||||
"travel_speed": "500",
|
||||
"enable_prime_tower": "1",
|
||||
"wipe_tower_no_sparse_layers": "0",
|
||||
"prime_tower_width": "60",
|
||||
"xy_hole_compensation": "0",
|
||||
"xy_contour_compensation": "0",
|
||||
"gcode_label_objects": "0"
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
{
|
||||
"type": "process",
|
||||
"name": "0.08mm SuperDetail @Creality K2 0.4 nozzle",
|
||||
"inherits": "fdm_process_common_klipper",
|
||||
"from": "system",
|
||||
"setting_id": "GP004",
|
||||
"instantiation": "true",
|
||||
"max_travel_detour_distance": "0",
|
||||
"bottom_surface_pattern": "monotonic",
|
||||
"bottom_shell_layers": "7",
|
||||
"bottom_shell_thickness": "0",
|
||||
"bridge_flow": "1",
|
||||
"bridge_speed": "10",
|
||||
"internal_bridge_speed": "200%",
|
||||
"brim_width": "5",
|
||||
"brim_object_gap": "0.3",
|
||||
"compatible_printers": [
|
||||
"Creality K2 0.4 nozzle"
|
||||
],
|
||||
"default_acceleration": "6000",
|
||||
"bridge_no_support": "0",
|
||||
"draft_shield": "disabled",
|
||||
"elefant_foot_compensation": "0.15",
|
||||
"outer_wall_line_width": "0.42",
|
||||
"outer_wall_speed": "200",
|
||||
"outer_wall_acceleration": "2000",
|
||||
"inner_wall_acceleration": "2000",
|
||||
"wall_generator": "classic",
|
||||
"wall_infill_order": "inner wall/outer wall/infill",
|
||||
"line_width": "0.42",
|
||||
"infill_direction": "45",
|
||||
"sparse_infill_density": "15%",
|
||||
"sparse_infill_pattern": "crosshatch",
|
||||
"internal_bridge_support_thickness": "0.8",
|
||||
"initial_layer_acceleration": "1000",
|
||||
"initial_layer_line_width": "0.5",
|
||||
"initial_layer_print_height": "0.2",
|
||||
"initial_layer_speed": "60",
|
||||
"gap_infill_speed": "250",
|
||||
"infill_combination": "0",
|
||||
"sparse_infill_line_width": "0.45",
|
||||
"infill_wall_overlap": "30%",
|
||||
"sparse_infill_speed": "300",
|
||||
"interface_shells": "0",
|
||||
"ironing_flow": "8",
|
||||
"ironing_spacing": "0.15",
|
||||
"ironing_speed": "60",
|
||||
"ironing_type": "no ironing",
|
||||
"layer_height": "0.08",
|
||||
"reduce_infill_retraction": "1",
|
||||
"filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode",
|
||||
"detect_overhang_wall": "1",
|
||||
"overhang_1_4_speed": "0",
|
||||
"overhang_2_4_speed": "50",
|
||||
"overhang_3_4_speed": "30",
|
||||
"overhang_4_4_speed": "10",
|
||||
"only_one_wall_top": "1",
|
||||
"precise_outer_wall": "0",
|
||||
"inner_wall_line_width": "0.45",
|
||||
"inner_wall_speed": "300",
|
||||
"wall_loops": "2",
|
||||
"raft_layers": "0",
|
||||
"seam_position": "aligned",
|
||||
"skirt_distance": "2",
|
||||
"skirt_height": "1",
|
||||
"skirt_loops": "0",
|
||||
"minimum_sparse_infill_area": "15",
|
||||
"internal_solid_infill_line_width": "0.42",
|
||||
"internal_solid_infill_speed": "250",
|
||||
"initial_layer_infill_speed": "105",
|
||||
"standby_temperature_delta": "-5",
|
||||
"enable_support": "0",
|
||||
"resolution": "0.012",
|
||||
"support_type": "normal(auto)",
|
||||
"support_style": "default",
|
||||
"support_on_build_plate_only": "0",
|
||||
"support_top_z_distance": "0.2",
|
||||
"support_bottom_z_distance": "0.2",
|
||||
"support_filament": "0",
|
||||
"support_line_width": "0.4",
|
||||
"support_interface_loop_pattern": "0",
|
||||
"support_interface_filament": "0",
|
||||
"support_interface_top_layers": "2",
|
||||
"support_interface_bottom_layers": "2",
|
||||
"support_interface_spacing": "0.5",
|
||||
"support_expansion": "0",
|
||||
"support_interface_speed": "80",
|
||||
"support_base_pattern": "default",
|
||||
"support_base_pattern_spacing": "2.5",
|
||||
"support_speed": "150",
|
||||
"support_threshold_angle": "30",
|
||||
"support_object_xy_distance": "0.35",
|
||||
"tree_support_branch_diameter": "2",
|
||||
"tree_support_branch_angle": "45",
|
||||
"tree_support_wall_count": "1",
|
||||
"detect_thin_wall": "0",
|
||||
"top_surface_pattern": "monotonicline",
|
||||
"top_surface_line_width": "0.42",
|
||||
"top_surface_acceleration": "2000",
|
||||
"top_surface_speed": "200",
|
||||
"top_shell_layers": "9",
|
||||
"top_shell_thickness": "0.8",
|
||||
"travel_acceleration": "10000",
|
||||
"travel_speed": "500",
|
||||
"enable_prime_tower": "1",
|
||||
"wipe_tower_no_sparse_layers": "0",
|
||||
"prime_tower_width": "40",
|
||||
"xy_hole_compensation": "0",
|
||||
"xy_contour_compensation": "0",
|
||||
"gcode_label_objects": "0"
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
{
|
||||
"type": "process",
|
||||
"name": "0.10mm HighDetail @Creality K2 0.2 nozzle",
|
||||
"inherits": "fdm_process_common_klipper",
|
||||
"from": "system",
|
||||
"setting_id": "GP004",
|
||||
"instantiation": "true",
|
||||
"max_travel_detour_distance": "0",
|
||||
"bottom_surface_pattern": "monotonic",
|
||||
"bottom_shell_layers": "5",
|
||||
"bottom_shell_thickness": "0",
|
||||
"bridge_flow": "1",
|
||||
"bridge_speed": "25",
|
||||
"internal_bridge_speed": "70",
|
||||
"brim_width": "5",
|
||||
"brim_object_gap": "0.1",
|
||||
"compatible_printers": [
|
||||
"Creality K2 0.2 nozzle"
|
||||
],
|
||||
"default_acceleration": "12000",
|
||||
"bridge_no_support": "0",
|
||||
"draft_shield": "disabled",
|
||||
"elefant_foot_compensation": "0.15",
|
||||
"outer_wall_line_width": "0.22",
|
||||
"outer_wall_speed": "100",
|
||||
"outer_wall_acceleration": "5000",
|
||||
"inner_wall_acceleration": "5000",
|
||||
"wall_generator": "classic",
|
||||
"wall_infill_order": "inner wall/outer wall/infill",
|
||||
"line_width": "0.22",
|
||||
"infill_direction": "45",
|
||||
"sparse_infill_density": "15%",
|
||||
"sparse_infill_pattern": "crosshatch",
|
||||
"internal_bridge_support_thickness": "0.8",
|
||||
"initial_layer_acceleration": "500",
|
||||
"initial_layer_line_width": "0.25",
|
||||
"initial_layer_print_height": "0.1",
|
||||
"initial_layer_speed": "40",
|
||||
"gap_infill_speed": "50",
|
||||
"infill_combination": "0",
|
||||
"sparse_infill_line_width": "0.25",
|
||||
"infill_wall_overlap": "30",
|
||||
"sparse_infill_speed": "120",
|
||||
"interface_shells": "0",
|
||||
"ironing_flow": "10%",
|
||||
"ironing_spacing": "0.15",
|
||||
"ironing_speed": "30",
|
||||
"ironing_type": "no ironing",
|
||||
"layer_height": "0.1",
|
||||
"reduce_infill_retraction": "1",
|
||||
"filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode",
|
||||
"detect_overhang_wall": "1",
|
||||
"overhang_1_4_speed": "0",
|
||||
"overhang_2_4_speed": "50",
|
||||
"overhang_3_4_speed": "30",
|
||||
"overhang_4_4_speed": "10",
|
||||
"only_one_wall_top": "1",
|
||||
"precise_outer_wall": "0",
|
||||
"inner_wall_line_width": "0.25",
|
||||
"inner_wall_speed": "150",
|
||||
"wall_loops": "4",
|
||||
"raft_layers": "0",
|
||||
"seam_position": "aligned",
|
||||
"skirt_distance": "2",
|
||||
"skirt_height": "1",
|
||||
"skirt_loops": "0",
|
||||
"minimum_sparse_infill_area": "15",
|
||||
"internal_solid_infill_line_width": "0.22",
|
||||
"internal_solid_infill_speed": "150",
|
||||
"initial_layer_infill_speed": "60",
|
||||
"standby_temperature_delta": "-5",
|
||||
"enable_support": "0",
|
||||
"resolution": "0.012",
|
||||
"support_type": "normal(auto)",
|
||||
"support_style": "default",
|
||||
"support_on_build_plate_only": "0",
|
||||
"support_top_z_distance": "0.2",
|
||||
"support_bottom_z_distance": "0.2",
|
||||
"support_filament": "0",
|
||||
"support_line_width": "0.2",
|
||||
"support_interface_loop_pattern": "0",
|
||||
"support_interface_filament": "0",
|
||||
"support_interface_top_layers": "2",
|
||||
"support_interface_bottom_layers": "2",
|
||||
"support_interface_spacing": "0.5",
|
||||
"support_expansion": "0",
|
||||
"support_interface_speed": "80",
|
||||
"support_base_pattern": "default",
|
||||
"support_base_pattern_spacing": "2.5",
|
||||
"support_speed": "150",
|
||||
"support_threshold_angle": "30",
|
||||
"support_object_xy_distance": "0.35",
|
||||
"tree_support_branch_diameter": "2",
|
||||
"tree_support_branch_angle": "45",
|
||||
"tree_support_wall_count": "1",
|
||||
"detect_thin_wall": "0",
|
||||
"top_surface_pattern": "monotonicline",
|
||||
"top_surface_line_width": "0.22",
|
||||
"top_surface_acceleration": "2000",
|
||||
"top_surface_speed": "100",
|
||||
"top_shell_layers": "7",
|
||||
"top_shell_thickness": "0.8",
|
||||
"travel_acceleration": "12000",
|
||||
"travel_speed": "500",
|
||||
"enable_prime_tower": "1",
|
||||
"wipe_tower_no_sparse_layers": "0",
|
||||
"prime_tower_width": "60",
|
||||
"xy_hole_compensation": "0",
|
||||
"xy_contour_compensation": "0",
|
||||
"gcode_label_objects": "0"
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
{
|
||||
"type": "process",
|
||||
"name": "0.12mm Detail @Creality K2 0.2 nozzle",
|
||||
"inherits": "fdm_process_common_klipper",
|
||||
"from": "system",
|
||||
"setting_id": "GP004",
|
||||
"instantiation": "true",
|
||||
"max_travel_detour_distance": "0",
|
||||
"bottom_surface_pattern": "monotonic",
|
||||
"bottom_shell_layers": "5",
|
||||
"bottom_shell_thickness": "0",
|
||||
"bridge_flow": "1",
|
||||
"bridge_speed": "25",
|
||||
"internal_bridge_speed": "70",
|
||||
"brim_width": "5",
|
||||
"brim_object_gap": "0.1",
|
||||
"compatible_printers": [
|
||||
"Creality K2 0.2 nozzle"
|
||||
],
|
||||
"default_acceleration": "12000",
|
||||
"bridge_no_support": "0",
|
||||
"draft_shield": "disabled",
|
||||
"elefant_foot_compensation": "0.15",
|
||||
"outer_wall_line_width": "0.22",
|
||||
"outer_wall_speed": "100",
|
||||
"outer_wall_acceleration": "5000",
|
||||
"inner_wall_acceleration": "5000",
|
||||
"wall_generator": "classic",
|
||||
"wall_infill_order": "inner wall/outer wall/infill",
|
||||
"line_width": "0.22",
|
||||
"infill_direction": "45",
|
||||
"sparse_infill_density": "15%",
|
||||
"sparse_infill_pattern": "crosshatch",
|
||||
"internal_bridge_support_thickness": "0.8",
|
||||
"initial_layer_acceleration": "500",
|
||||
"initial_layer_line_width": "0.25",
|
||||
"initial_layer_print_height": "0.1",
|
||||
"initial_layer_speed": "40",
|
||||
"gap_infill_speed": "50",
|
||||
"infill_combination": "0",
|
||||
"sparse_infill_line_width": "0.25",
|
||||
"infill_wall_overlap": "30",
|
||||
"sparse_infill_speed": "120",
|
||||
"interface_shells": "0",
|
||||
"ironing_flow": "10%",
|
||||
"ironing_spacing": "0.15",
|
||||
"ironing_speed": "30",
|
||||
"ironing_type": "no ironing",
|
||||
"layer_height": "0.12",
|
||||
"reduce_infill_retraction": "1",
|
||||
"filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode",
|
||||
"detect_overhang_wall": "1",
|
||||
"overhang_1_4_speed": "0",
|
||||
"overhang_2_4_speed": "50",
|
||||
"overhang_3_4_speed": "30",
|
||||
"overhang_4_4_speed": "10",
|
||||
"only_one_wall_top": "1",
|
||||
"precise_outer_wall": "0",
|
||||
"inner_wall_line_width": "0.25",
|
||||
"inner_wall_speed": "150",
|
||||
"wall_loops": "4",
|
||||
"raft_layers": "0",
|
||||
"seam_position": "aligned",
|
||||
"skirt_distance": "2",
|
||||
"skirt_height": "1",
|
||||
"skirt_loops": "0",
|
||||
"minimum_sparse_infill_area": "15",
|
||||
"internal_solid_infill_line_width": "0.22",
|
||||
"internal_solid_infill_speed": "150",
|
||||
"initial_layer_infill_speed": "60",
|
||||
"standby_temperature_delta": "-5",
|
||||
"enable_support": "0",
|
||||
"resolution": "0.012",
|
||||
"support_type": "normal(auto)",
|
||||
"support_style": "default",
|
||||
"support_on_build_plate_only": "0",
|
||||
"support_top_z_distance": "0.2",
|
||||
"support_bottom_z_distance": "0.2",
|
||||
"support_filament": "0",
|
||||
"support_line_width": "0.2",
|
||||
"support_interface_loop_pattern": "0",
|
||||
"support_interface_filament": "0",
|
||||
"support_interface_top_layers": "2",
|
||||
"support_interface_bottom_layers": "2",
|
||||
"support_interface_spacing": "0.5",
|
||||
"support_expansion": "0",
|
||||
"support_interface_speed": "80",
|
||||
"support_base_pattern": "default",
|
||||
"support_base_pattern_spacing": "2.5",
|
||||
"support_speed": "150",
|
||||
"support_threshold_angle": "30",
|
||||
"support_object_xy_distance": "0.35",
|
||||
"tree_support_branch_diameter": "2",
|
||||
"tree_support_branch_angle": "45",
|
||||
"tree_support_wall_count": "1",
|
||||
"detect_thin_wall": "0",
|
||||
"top_surface_pattern": "monotonicline",
|
||||
"top_surface_line_width": "0.22",
|
||||
"top_surface_acceleration": "2000",
|
||||
"top_surface_speed": "100",
|
||||
"top_shell_layers": "7",
|
||||
"top_shell_thickness": "0.8",
|
||||
"travel_acceleration": "12000",
|
||||
"travel_speed": "500",
|
||||
"enable_prime_tower": "1",
|
||||
"wipe_tower_no_sparse_layers": "0",
|
||||
"prime_tower_width": "60",
|
||||
"xy_hole_compensation": "0",
|
||||
"xy_contour_compensation": "0",
|
||||
"gcode_label_objects": "0"
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
{
|
||||
"type": "process",
|
||||
"name": "0.12mm Detail @Creality K2 0.4 nozzle",
|
||||
"inherits": "fdm_process_common_klipper",
|
||||
"from": "system",
|
||||
"setting_id": "GP004",
|
||||
"instantiation": "true",
|
||||
"max_travel_detour_distance": "0",
|
||||
"bottom_surface_pattern": "monotonic",
|
||||
"bottom_shell_layers": "5",
|
||||
"bottom_shell_thickness": "0",
|
||||
"bridge_flow": "1",
|
||||
"bridge_speed": "10",
|
||||
"internal_bridge_speed": "200%",
|
||||
"brim_width": "5",
|
||||
"brim_object_gap": "0.1",
|
||||
"compatible_printers": [
|
||||
"Creality K2 0.4 nozzle"
|
||||
],
|
||||
"default_acceleration": "12000",
|
||||
"bridge_no_support": "0",
|
||||
"draft_shield": "disabled",
|
||||
"elefant_foot_compensation": "0.15",
|
||||
"outer_wall_line_width": "0.42",
|
||||
"outer_wall_speed": "200",
|
||||
"outer_wall_acceleration": "5000",
|
||||
"inner_wall_acceleration": "5000",
|
||||
"wall_generator": "classic",
|
||||
"wall_infill_order": "inner wall/outer wall/infill",
|
||||
"line_width": "0.42",
|
||||
"infill_direction": "45",
|
||||
"sparse_infill_density": "15%",
|
||||
"sparse_infill_pattern": "crosshatch",
|
||||
"internal_bridge_support_thickness": "0.8",
|
||||
"initial_layer_acceleration": "2000",
|
||||
"initial_layer_line_width": "0.5",
|
||||
"initial_layer_print_height": "0.2",
|
||||
"initial_layer_speed": "60",
|
||||
"gap_infill_speed": "250",
|
||||
"infill_combination": "0",
|
||||
"sparse_infill_line_width": "0.45",
|
||||
"infill_wall_overlap": "30%",
|
||||
"sparse_infill_speed": "300",
|
||||
"interface_shells": "0",
|
||||
"ironing_flow": "10%",
|
||||
"ironing_spacing": "0.15",
|
||||
"ironing_speed": "30",
|
||||
"ironing_type": "no ironing",
|
||||
"layer_height": "0.12",
|
||||
"reduce_infill_retraction": "1",
|
||||
"filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode",
|
||||
"detect_overhang_wall": "1",
|
||||
"overhang_1_4_speed": "0",
|
||||
"overhang_2_4_speed": "50",
|
||||
"overhang_3_4_speed": "30",
|
||||
"overhang_4_4_speed": "10",
|
||||
"only_one_wall_top": "1",
|
||||
"precise_outer_wall": "0",
|
||||
"inner_wall_line_width": "0.45",
|
||||
"inner_wall_speed": "300",
|
||||
"wall_loops": "2",
|
||||
"raft_layers": "0",
|
||||
"seam_position": "aligned",
|
||||
"skirt_distance": "2",
|
||||
"skirt_height": "1",
|
||||
"skirt_loops": "0",
|
||||
"minimum_sparse_infill_area": "15",
|
||||
"internal_solid_infill_line_width": "0.42",
|
||||
"internal_solid_infill_speed": "250",
|
||||
"initial_layer_infill_speed": "105",
|
||||
"standby_temperature_delta": "-5",
|
||||
"enable_support": "0",
|
||||
"resolution": "0.012",
|
||||
"support_type": "normal(auto)",
|
||||
"support_style": "default",
|
||||
"support_on_build_plate_only": "0",
|
||||
"support_top_z_distance": "0.2",
|
||||
"support_bottom_z_distance": "0.2",
|
||||
"support_filament": "0",
|
||||
"support_line_width": "0.42",
|
||||
"support_interface_loop_pattern": "0",
|
||||
"support_interface_filament": "0",
|
||||
"support_interface_top_layers": "2",
|
||||
"support_interface_bottom_layers": "2",
|
||||
"support_interface_spacing": "0.5",
|
||||
"support_expansion": "0",
|
||||
"support_interface_speed": "80",
|
||||
"support_base_pattern": "default",
|
||||
"support_base_pattern_spacing": "2.5",
|
||||
"support_speed": "150",
|
||||
"support_threshold_angle": "30",
|
||||
"support_object_xy_distance": "0.35",
|
||||
"tree_support_branch_diameter": "2",
|
||||
"tree_support_branch_angle": "45",
|
||||
"tree_support_wall_count": "1",
|
||||
"detect_thin_wall": "0",
|
||||
"top_surface_pattern": "monotonicline",
|
||||
"top_surface_line_width": "0.42",
|
||||
"top_surface_acceleration": "5000",
|
||||
"top_surface_speed": "200",
|
||||
"top_shell_layers": "6",
|
||||
"top_shell_thickness": "0.8",
|
||||
"travel_acceleration": "12000",
|
||||
"travel_speed": "500",
|
||||
"enable_prime_tower": "1",
|
||||
"wipe_tower_no_sparse_layers": "0",
|
||||
"prime_tower_width": "40",
|
||||
"xy_hole_compensation": "0",
|
||||
"xy_contour_compensation": "0",
|
||||
"gcode_label_objects": "0"
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
{
|
||||
"type": "process",
|
||||
"name": "0.14mm Optimal @Creality K2 0.2 nozzle",
|
||||
"inherits": "fdm_process_common_klipper",
|
||||
"from": "system",
|
||||
"setting_id": "GP004",
|
||||
"instantiation": "true",
|
||||
"max_travel_detour_distance": "0",
|
||||
"bottom_surface_pattern": "monotonic",
|
||||
"bottom_shell_layers": "5",
|
||||
"bottom_shell_thickness": "0",
|
||||
"bridge_flow": "1",
|
||||
"bridge_speed": "25",
|
||||
"internal_bridge_speed": "70",
|
||||
"brim_width": "5",
|
||||
"brim_object_gap": "0.1",
|
||||
"compatible_printers": [
|
||||
"Creality K2 0.2 nozzle"
|
||||
],
|
||||
"default_acceleration": "12000",
|
||||
"bridge_no_support": "0",
|
||||
"draft_shield": "disabled",
|
||||
"elefant_foot_compensation": "0.15",
|
||||
"outer_wall_line_width": "0.22",
|
||||
"outer_wall_speed": "100",
|
||||
"outer_wall_acceleration": "5000",
|
||||
"inner_wall_acceleration": "5000",
|
||||
"wall_generator": "classic",
|
||||
"wall_infill_order": "inner wall/outer wall/infill",
|
||||
"line_width": "0.22",
|
||||
"infill_direction": "45",
|
||||
"sparse_infill_density": "15%",
|
||||
"sparse_infill_pattern": "crosshatch",
|
||||
"internal_bridge_support_thickness": "0.8",
|
||||
"initial_layer_acceleration": "500",
|
||||
"initial_layer_line_width": "0.25",
|
||||
"initial_layer_print_height": "0.1",
|
||||
"initial_layer_speed": "40",
|
||||
"gap_infill_speed": "50",
|
||||
"infill_combination": "0",
|
||||
"sparse_infill_line_width": "0.25",
|
||||
"infill_wall_overlap": "30",
|
||||
"sparse_infill_speed": "120",
|
||||
"interface_shells": "0",
|
||||
"ironing_flow": "10%",
|
||||
"ironing_spacing": "0.15",
|
||||
"ironing_speed": "30",
|
||||
"ironing_type": "no ironing",
|
||||
"layer_height": "0.14",
|
||||
"reduce_infill_retraction": "1",
|
||||
"filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode",
|
||||
"detect_overhang_wall": "1",
|
||||
"overhang_1_4_speed": "0",
|
||||
"overhang_2_4_speed": "50",
|
||||
"overhang_3_4_speed": "30",
|
||||
"overhang_4_4_speed": "10",
|
||||
"only_one_wall_top": "1",
|
||||
"precise_outer_wall": "0",
|
||||
"inner_wall_line_width": "0.25",
|
||||
"inner_wall_speed": "150",
|
||||
"wall_loops": "4",
|
||||
"raft_layers": "0",
|
||||
"seam_position": "aligned",
|
||||
"skirt_distance": "2",
|
||||
"skirt_height": "1",
|
||||
"skirt_loops": "0",
|
||||
"minimum_sparse_infill_area": "15",
|
||||
"internal_solid_infill_line_width": "0.22",
|
||||
"internal_solid_infill_speed": "150",
|
||||
"initial_layer_infill_speed": "60",
|
||||
"standby_temperature_delta": "-5",
|
||||
"enable_support": "0",
|
||||
"resolution": "0.012",
|
||||
"support_type": "normal(auto)",
|
||||
"support_style": "default",
|
||||
"support_on_build_plate_only": "0",
|
||||
"support_top_z_distance": "0.2",
|
||||
"support_bottom_z_distance": "0.2",
|
||||
"support_filament": "0",
|
||||
"support_line_width": "0.2",
|
||||
"support_interface_loop_pattern": "0",
|
||||
"support_interface_filament": "0",
|
||||
"support_interface_top_layers": "2",
|
||||
"support_interface_bottom_layers": "2",
|
||||
"support_interface_spacing": "0.5",
|
||||
"support_expansion": "0",
|
||||
"support_interface_speed": "80",
|
||||
"support_base_pattern": "default",
|
||||
"support_base_pattern_spacing": "2.5",
|
||||
"support_speed": "150",
|
||||
"support_threshold_angle": "30",
|
||||
"support_object_xy_distance": "0.35",
|
||||
"tree_support_branch_diameter": "2",
|
||||
"tree_support_branch_angle": "45",
|
||||
"tree_support_wall_count": "1",
|
||||
"detect_thin_wall": "0",
|
||||
"top_surface_pattern": "monotonicline",
|
||||
"top_surface_line_width": "0.22",
|
||||
"top_surface_acceleration": "2000",
|
||||
"top_surface_speed": "100",
|
||||
"top_shell_layers": "7",
|
||||
"top_shell_thickness": "0.8",
|
||||
"travel_acceleration": "12000",
|
||||
"travel_speed": "500",
|
||||
"enable_prime_tower": "1",
|
||||
"wipe_tower_no_sparse_layers": "0",
|
||||
"prime_tower_width": "60",
|
||||
"xy_hole_compensation": "0",
|
||||
"xy_contour_compensation": "0",
|
||||
"gcode_label_objects": "0"
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
{
|
||||
"type": "process",
|
||||
"name": "0.16mm Optimal @Creality K2 0.4 nozzle",
|
||||
"inherits": "fdm_process_common_klipper",
|
||||
"from": "system",
|
||||
"setting_id": "GP004",
|
||||
"instantiation": "true",
|
||||
"max_travel_detour_distance": "0",
|
||||
"bottom_surface_pattern": "monotonic",
|
||||
"bottom_shell_layers": "4",
|
||||
"bottom_shell_thickness": "0",
|
||||
"bridge_flow": "1",
|
||||
"bridge_speed": "10",
|
||||
"internal_bridge_speed": "150%",
|
||||
"brim_width": "5",
|
||||
"brim_object_gap": "0.1",
|
||||
"compatible_printers": [
|
||||
"Creality K2 0.4 nozzle"
|
||||
],
|
||||
"default_acceleration": "12000",
|
||||
"bridge_no_support": "0",
|
||||
"draft_shield": "disabled",
|
||||
"elefant_foot_compensation": "0.15",
|
||||
"outer_wall_line_width": "0.42",
|
||||
"outer_wall_speed": "200",
|
||||
"outer_wall_acceleration": "5000",
|
||||
"inner_wall_acceleration": "5000",
|
||||
"wall_generator": "classic",
|
||||
"wall_infill_order": "inner wall/outer wall/infill",
|
||||
"line_width": "0.42",
|
||||
"infill_direction": "45",
|
||||
"sparse_infill_density": "15%",
|
||||
"sparse_infill_pattern": "crosshatch",
|
||||
"internal_bridge_support_thickness": "0.8",
|
||||
"initial_layer_acceleration": "2000",
|
||||
"initial_layer_line_width": "0.5",
|
||||
"initial_layer_print_height": "0.2",
|
||||
"initial_layer_speed": "60",
|
||||
"gap_infill_speed": "250",
|
||||
"infill_combination": "0",
|
||||
"sparse_infill_line_width": "0.45",
|
||||
"infill_wall_overlap": "30%",
|
||||
"sparse_infill_speed": "270",
|
||||
"interface_shells": "0",
|
||||
"ironing_flow": "10%",
|
||||
"ironing_spacing": "0.15",
|
||||
"ironing_speed": "30",
|
||||
"ironing_type": "no ironing",
|
||||
"layer_height": "0.16",
|
||||
"reduce_infill_retraction": "1",
|
||||
"filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode",
|
||||
"detect_overhang_wall": "1",
|
||||
"overhang_1_4_speed": "0",
|
||||
"overhang_2_4_speed": "50",
|
||||
"overhang_3_4_speed": "30",
|
||||
"overhang_4_4_speed": "10",
|
||||
"only_one_wall_top": "1",
|
||||
"precise_outer_wall": "0",
|
||||
"inner_wall_line_width": "0.45",
|
||||
"inner_wall_speed": "300",
|
||||
"wall_loops": "2",
|
||||
"raft_layers": "0",
|
||||
"seam_position": "aligned",
|
||||
"skirt_distance": "2",
|
||||
"skirt_height": "1",
|
||||
"skirt_loops": "0",
|
||||
"minimum_sparse_infill_area": "15",
|
||||
"internal_solid_infill_line_width": "0.42",
|
||||
"internal_solid_infill_speed": "250",
|
||||
"initial_layer_infill_speed": "105",
|
||||
"standby_temperature_delta": "-5",
|
||||
"enable_support": "0",
|
||||
"resolution": "0.012",
|
||||
"support_type": "normal(auto)",
|
||||
"support_style": "default",
|
||||
"support_on_build_plate_only": "0",
|
||||
"support_top_z_distance": "0.2",
|
||||
"support_bottom_z_distance": "0.2",
|
||||
"support_filament": "0",
|
||||
"support_line_width": "0.42",
|
||||
"support_interface_loop_pattern": "0",
|
||||
"support_interface_filament": "0",
|
||||
"support_interface_top_layers": "2",
|
||||
"support_interface_bottom_layers": "2",
|
||||
"support_interface_spacing": "0.5",
|
||||
"support_expansion": "0",
|
||||
"support_interface_speed": "80",
|
||||
"support_base_pattern": "default",
|
||||
"support_base_pattern_spacing": "2.5",
|
||||
"support_speed": "150",
|
||||
"support_threshold_angle": "30",
|
||||
"support_object_xy_distance": "0.35",
|
||||
"tree_support_branch_diameter": "2",
|
||||
"tree_support_branch_angle": "45",
|
||||
"tree_support_wall_count": "1",
|
||||
"detect_thin_wall": "0",
|
||||
"top_surface_pattern": "monotonicline",
|
||||
"top_surface_line_width": "0.42",
|
||||
"top_surface_acceleration": "5000",
|
||||
"top_surface_speed": "200",
|
||||
"top_shell_layers": "6",
|
||||
"top_shell_thickness": "0.8",
|
||||
"travel_acceleration": "12000",
|
||||
"travel_speed": "500",
|
||||
"enable_prime_tower": "1",
|
||||
"wipe_tower_no_sparse_layers": "0",
|
||||
"prime_tower_width": "40",
|
||||
"xy_hole_compensation": "0",
|
||||
"xy_contour_compensation": "0",
|
||||
"gcode_label_objects": "0"
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
{
|
||||
"type": "process",
|
||||
"name": "0.18mm Detail @Creality K2 0.6 nozzle",
|
||||
"inherits": "fdm_process_common_klipper",
|
||||
"from": "system",
|
||||
"setting_id": "GP004",
|
||||
"instantiation": "true",
|
||||
"max_travel_detour_distance": "0",
|
||||
"bottom_surface_pattern": "monotonic",
|
||||
"bottom_shell_layers": "3",
|
||||
"bottom_shell_thickness": "0",
|
||||
"bridge_flow": "1",
|
||||
"bridge_speed": "25",
|
||||
"internal_bridge_speed": "70",
|
||||
"brim_width": "5",
|
||||
"brim_object_gap": "0.1",
|
||||
"compatible_printers": [
|
||||
"Creality K2 0.6 nozzle"
|
||||
],
|
||||
"default_acceleration": "12000",
|
||||
"bridge_no_support": "0",
|
||||
"draft_shield": "disabled",
|
||||
"elefant_foot_compensation": "0.15",
|
||||
"outer_wall_line_width": "0.62",
|
||||
"outer_wall_speed": "100",
|
||||
"outer_wall_acceleration": "5000",
|
||||
"inner_wall_acceleration": "5000",
|
||||
"wall_generator": "classic",
|
||||
"wall_infill_order": "inner wall/outer wall/infill",
|
||||
"line_width": "0.62",
|
||||
"infill_direction": "45",
|
||||
"sparse_infill_density": "15%",
|
||||
"sparse_infill_pattern": "crosshatch",
|
||||
"internal_bridge_support_thickness": "0.8",
|
||||
"initial_layer_acceleration": "500",
|
||||
"initial_layer_line_width": "0.62",
|
||||
"initial_layer_print_height": "0.3",
|
||||
"initial_layer_speed": "40",
|
||||
"gap_infill_speed": "50",
|
||||
"infill_combination": "0",
|
||||
"sparse_infill_line_width": "0.62",
|
||||
"infill_wall_overlap": "30",
|
||||
"sparse_infill_speed": "120",
|
||||
"interface_shells": "0",
|
||||
"ironing_flow": "10%",
|
||||
"ironing_spacing": "0.15",
|
||||
"ironing_speed": "30",
|
||||
"ironing_type": "no ironing",
|
||||
"layer_height": "0.18",
|
||||
"reduce_infill_retraction": "1",
|
||||
"filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode",
|
||||
"detect_overhang_wall": "1",
|
||||
"overhang_1_4_speed": "0",
|
||||
"overhang_2_4_speed": "50",
|
||||
"overhang_3_4_speed": "20",
|
||||
"overhang_4_4_speed": "10",
|
||||
"only_one_wall_top": "1",
|
||||
"precise_outer_wall": "0",
|
||||
"inner_wall_line_width": "0.62",
|
||||
"inner_wall_speed": "150",
|
||||
"wall_loops": "2",
|
||||
"raft_layers": "0",
|
||||
"seam_position": "aligned",
|
||||
"skirt_distance": "2",
|
||||
"skirt_height": "1",
|
||||
"skirt_loops": "0",
|
||||
"minimum_sparse_infill_area": "15",
|
||||
"internal_solid_infill_line_width": "0.62",
|
||||
"internal_solid_infill_speed": "150",
|
||||
"initial_layer_infill_speed": "60",
|
||||
"standby_temperature_delta": "-5",
|
||||
"enable_support": "0",
|
||||
"resolution": "0.012",
|
||||
"support_type": "normal(auto)",
|
||||
"support_style": "default",
|
||||
"support_on_build_plate_only": "0",
|
||||
"support_top_z_distance": "0.2",
|
||||
"support_bottom_z_distance": "0.2",
|
||||
"support_filament": "0",
|
||||
"support_line_width": "0.6",
|
||||
"support_interface_loop_pattern": "0",
|
||||
"support_interface_filament": "0",
|
||||
"support_interface_top_layers": "2",
|
||||
"support_interface_bottom_layers": "2",
|
||||
"support_interface_spacing": "0.5",
|
||||
"support_expansion": "0",
|
||||
"support_interface_speed": "80",
|
||||
"support_base_pattern": "default",
|
||||
"support_base_pattern_spacing": "2.5",
|
||||
"support_speed": "150",
|
||||
"support_threshold_angle": "30",
|
||||
"support_object_xy_distance": "0.35",
|
||||
"tree_support_branch_diameter": "2",
|
||||
"tree_support_branch_angle": "45",
|
||||
"tree_support_wall_count": "1",
|
||||
"detect_thin_wall": "0",
|
||||
"top_surface_pattern": "monotonicline",
|
||||
"top_surface_line_width": "0.62",
|
||||
"top_surface_acceleration": "2000",
|
||||
"top_surface_speed": "100",
|
||||
"top_shell_layers": "4",
|
||||
"top_shell_thickness": "0.8",
|
||||
"travel_acceleration": "12000",
|
||||
"travel_speed": "500",
|
||||
"enable_prime_tower": "1",
|
||||
"wipe_tower_no_sparse_layers": "0",
|
||||
"prime_tower_width": "60",
|
||||
"xy_hole_compensation": "0",
|
||||
"xy_contour_compensation": "0",
|
||||
"gcode_label_objects": "0"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user