以 COMPAS 生態為主的 FDM 切片研究專案。現階段已完成 planar 與 interpolation 兩種方法,並採用明確分工:
- 方法入口直接呼叫對應演算法
cli.py只負責共用模型讀取與information輸出viewer.py只負責共用slice_output顯示- 幾何輸出統一走標準
slice_output
src/fdm_slicer/planar_slicing.pyplanar演算法本體,讀取方法綁定的input與informationinterpolation_slicing.pyinterpolation演算法本體,讀取方法綁定的input與informationslice_output.py標準切片幾何輸出格式cli.py共用模型讀取與information列印viewer.py共用slice_output顯示paths.py共用路徑規則
config/planar.default.jsonplanar的輸入參數 目前包含layer_height、slice_height_range與切片前target_edge_lengthplanar.information.jsonplanar的information欄位順序interpolation.default.jsoninterpolation的輸入參數 目前包含avg_layer_height、target_edge_length與boundary_axisinterpolation.information.jsoninterpolation的information欄位順序slice_output.json全方法共用的標準幾何輸出契約
scripts/planar_slicer.pyplanar方法入口interpolation_slicer.pyinterpolation方法入口viewer.py單純模型 viewer 入口
gh/planar_component.pyRhino 8 Grasshopper Python 3 component 的正式腳本
目前 planar 已輸出:
informationmodelslicing_planepoint_setpolylineframe_set
conda env create -f environment.yml
conda activate fdm-slicer
python -m pip install -e . --no-deps更新環境:
conda env update -f environment.yml --prunepython scripts/viewer.py --model stl/zero_branch.stl
python scripts/viewer.py --model stl/zero_branch.stl --no-showpython scripts/planar_slicer.py --model stl/zero_branch.stl
python scripts/planar_slicer.py --model stl/zero_branch.stl --no-showpython scripts/interpolation_slicer.py --model stl/zero_branch.stl
python scripts/interpolation_slicer.py --model stl/zero_branch.stl --no-showfdm-viewer --model stl/zero_branch.stlfdm-planar-slicer --model stl/zero_branch.stl
fdm-interpolation-slicer --model stl/zero_branch.stlgh/planar_component.py可直接貼入 Rhino 8 的 Grasshopper Python 3 component- component 會直接呼叫:
src/fdm_slicer/planar_grasshopper.pysrc/fdm_slicer/planar_slicing.py
- 建議輸入:
model:Mesh / Itemlayer_height:Number / Itemslice_height_range:Number / Listtarget_edge_length:Number / Itemmodel_name:Text / Itemrun:Boolean / Item
- 輸出對應:
informationmodelslicing_planepolylinepoint_setframe_set