{"$schema":"nativecad-dfm-pack/1","id":"fdm-x1c","title":"Bambu Lab X1 Carbon - design rules for parts that print first time","sector":"fdm-x1c","version":"2026-09-22","summary":"The FDM numbers for the machine on the bench: real build envelope including the front-left exclusion corner, wall and line width per nozzle, overhang, bridge, hole and clearance limits, eleven filaments with warp class and AMS rules, four calibration coupons and two worked builds. Every value names the profile or the guide it came from.","aliases":["bambu","bambu lab","bambu lab x1 carbon","x1c","x1 carbon","bambu studio","ams","fdm","fff","fdm printing","filament printing","desktop 3d printer","gcode.3mf"],"crossSector":false,"size":"standard","sources":[{"id":"bbl-machine-x1c04","title":"Bambu Studio machine profile - Bambu Lab X1 Carbon 0.4 nozzle.json","url":"https://github.com/bambulab/BambuStudio/blob/master/resources/profiles/BBL/machine/Bambu%20Lab%20X1%20Carbon%200.4%20nozzle.json","accessed":"2026-09-21"},{"id":"bbl-process-common","title":"Bambu Studio process profile - fdm_process_common.json (line widths, brim, compensation)","url":"https://github.com/bambulab/BambuStudio/blob/master/resources/profiles/BBL/process/fdm_process_common.json","accessed":"2026-09-21"},{"id":"bbl-forum-volume","title":"Bambu Lab forum thread 12875 - what is the real maximum print volume","url":"https://forum.bambulab.com/t/what-is-the-real-maximum-print-volume/12875","accessed":"2026-09-21"},{"id":"bbl-issue-1793","title":"BambuStudio issue 1793 - object too close to the exclusion area","url":"https://github.com/bambulab/BambuStudio/issues/1793","accessed":"2026-09-21"},{"id":"hubs-fdm","title":"Hubs - How to design parts for FDM 3D printing","url":"https://www.hubs.com/knowledge-base/how-design-parts-fdm-3d-printing/","accessed":"2026-09-21"},{"id":"xometry-fdm","title":"Xometry - FDM design tips","url":"https://xometry.pro/en-eu/articles/fdm-design-tips/","accessed":"2026-09-21"},{"id":"prusa-modeling","title":"Prusa Knowledge Base - Modeling with 3D printing in mind","url":"https://help.prusa3d.com/article/modeling-with-3d-printing-in-mind_164135","accessed":"2026-09-21"},{"id":"adp-abs-asa","title":"ADP Industries - Bambu Lab ABS and ASA printing guide","url":"https://www.adpindustries.com/blog/bambu-lab-abs-asa-printing-guide/","accessed":"2026-09-21"},{"id":"flush-guide","title":"3DProfileFix - AMS flushing volumes guide","url":"https://www.3dprofilefix.com/guides/flushing-volumes-guide.html","accessed":"2026-09-21"},{"id":"filamentcalcs-ams","title":"FilamentCalcs - multi-colour printing with the AMS, is it worth it","url":"https://filamentcalcs.com/guides/multi-color-printing-ams-worth-it","accessed":"2026-09-21"},{"id":"bbl-wiki-step","title":"Bambu Lab wiki - Bambu Studio STEP import","url":"https://wiki.bambulab.com/en/software/bambu-studio/step","accessed":"2026-09-21"},{"id":"printago-3mf","title":"Printago - inside the .gcode.3mf file format","url":"https://printago.io/blog/3mf-file-format","accessed":"2026-09-21"},{"id":"nativecad-fdm-x1c","title":"NativeCAD rule pack data/dfm/fdm_x1c.json and ops/fdmX1cRules.js (CADSF-1772)","note":"the sourced warn/fail table this pack reshapes; every row there carries its own source and an inference flag"},{"id":"kb-research-x1c","title":"NativeCAD research note 2026-09-21 - CAD to Bambu Lab X1 Carbon","note":"projectpads/CADSolver/kb/research-2026-09-21-cad-to-bambu-lab-x1-carbon-file-path-headless-slicing-lan-protocol-ams-fdm-dfm-pack.md"}],"entries":[{"id":"build-envelope","kind":"dimension","tier":1,"title":"X1 Carbon build envelope","summary":"The bed is 256 x 256 mm and the profile's printable height is 250 mm - Bambu's marketing copy says 256. A part past that is not a tall print, it is a plate the slicer refuses.","applies":["bambu lab x1 carbon","build volume","plate layout"],"value":{"table":[{"axis":"x","value":256},{"axis":"y","value":256},{"axis":"z","value":250}],"unit":"mm"},"basis":"printable_area and printable_height in the X1C machine profile Bambu Studio enforces","sources":["bbl-machine-x1c04","bbl-forum-volume"],"tags":["envelope","machine","x1c"]},{"id":"bed-exclusion-corner","kind":"rule","tier":1,"title":"Front-left 18 x 28 mm bed exclusion","summary":"The X1C reserves a front-left 18 (X) by 28 (Y) mm rectangle for the wiper and cutter. It is an XY footprint exclusion at every Z, and switching it off in the slicer switches the AMS off with it.","applies":["plate layout","bed","first part placement"],"value":{"table":[{"x0":0,"y0":0,"x1":18,"y1":28}],"unit":"mm"},"basis":"bed_exclude_area in the X1C 0.4 machine profile; BambuStudio issue 1793 is the 'too close to exclusion area' refusal it produces","sources":["bbl-machine-x1c04","bbl-issue-1793"],"tags":["bed","exclusion","layout","x1c"]},{"id":"usable-envelope","kind":"dimension","tier":1,"title":"Usable envelope once the exclusion corner is respected","summary":"A part that has to clear the front-left exclusion gets about 238 x 256 x 249 mm full-depth, or 256 x 228 x 249 mm full-width. Size the biggest part against one of those two, never against the headline 256 x 256.","applies":["build volume","large part","plate layout"],"value":{"table":[{"orientation":"full-depth","x":238,"y":256,"z":249},{"orientation":"full-width","x":256,"y":228,"z":249}],"unit":"mm"},"basis":"forum measurement of the real maximum print volume with the exclusion area enabled, cross-checked against the machine profile","sources":["bbl-forum-volume","bbl-machine-x1c04"],"tags":["envelope","layout","x1c"]},{"id":"wall-thickness-by-nozzle","kind":"dimension","tier":1,"title":"Minimum and recommended wall by nozzle","summary":"A wall is a stack of extrusions, so the floor is two outer-wall line widths: 0.84 mm at the 0.4 nozzle, and 0.42 / 1.26 / 1.68 mm at 0.2 / 0.6 / 0.8. Published FDM guidance wants 1.2 mm before a wall counts as structural.","applies":["wall","shell","rib","printed part"],"value":{"table":[{"nozzle":0.2,"fail":0.42,"recommended":0.75},{"nozzle":0.4,"fail":0.84,"recommended":1.2},{"nozzle":0.6,"fail":1.26,"recommended":1.8},{"nozzle":0.8,"fail":1.68,"recommended":2.4}],"unit":"mm"},"basis":"2 x outer_wall_line_width from the Bambu process profile; the 1.2 mm recommendation is Hubs' FDM wall guidance","sources":["bbl-process-common","hubs-fdm","nativecad-fdm-x1c"],"tags":["wall","nozzle","thickness"]},{"id":"nozzle-line-widths","kind":"dimension","tier":1,"title":"Default line widths per nozzle","summary":"At the 0.4 nozzle: line 0.42, outer wall 0.42, inner wall 0.45, first layer 0.5 mm. The 0.2 / 0.6 / 0.8 rows scale by nozzle ratio. Every wall, rib and text stroke on this machine is a multiple of one of these.","applies":["wall","rib","text","thin feature"],"value":{"table":[{"nozzle":0.2,"line":0.21,"outer":0.21,"inner":0.23,"first":0.25},{"nozzle":0.4,"line":0.42,"outer":0.42,"inner":0.45,"first":0.5},{"nozzle":0.6,"line":0.63,"outer":0.63,"inner":0.68,"first":0.75},{"nozzle":0.8,"line":0.84,"outer":0.84,"inner":0.9,"first":1}],"unit":"mm"},"basis":"default line widths at 0.4 from fdm_process_common.json; the other three nozzles scale by nozzle ratio and are flagged as inference in the rule pack","sources":["bbl-process-common","nativecad-fdm-x1c"],"tags":["line-width","nozzle","extrusion"]},{"id":"layer-height-by-nozzle","kind":"dimension","tier":1,"title":"Layer-height range per nozzle","summary":"Profile limits: 0.04-0.14 mm at the 0.2 nozzle, 0.08-0.28 at 0.4, 0.12-0.42 at 0.6, 0.16-0.56 at 0.8. Vertical features that must land on a layer boundary - lids, steps, engraving depth - are multiples of the one you pick.","applies":["layer height","z feature","engraving depth"],"value":{"table":[{"nozzle":0.2,"min":0.04,"max":0.14},{"nozzle":0.4,"min":0.08,"max":0.28},{"nozzle":0.6,"min":0.12,"max":0.42},{"nozzle":0.8,"min":0.16,"max":0.56}],"unit":"mm"},"basis":"min and max layer height per nozzle in the Bambu Studio machine profiles","sources":["bbl-machine-x1c04"],"tags":["layer-height","nozzle","z"]},{"id":"overhang-limit","kind":"rule","tier":1,"title":"Overhang angle before it needs support","summary":"45 deg off vertical prints clean, 55 deg is the fail line, and ABS/ASA/PC pull that in to 40/50. Bambu's default process auto-supports past a 30 deg threshold angle, so a steeper face costs support material and comes off scarred.","applies":["overhang","orientation","support"],"value":{"typical":45,"max":55,"unit":"deg"},"basis":"45 deg is the universal FDM safe overhang in the published guidance; the 55 deg fail and the 40/50 ABS/ASA pair are the rule pack's warn/fail tiers","sources":["hubs-fdm","prusa-modeling","adp-abs-asa","nativecad-fdm-x1c"],"tags":["overhang","support","orientation"]},{"id":"bridge-span","kind":"rule","tier":1,"title":"Unsupported bridge span","summary":"A bridge over 10 mm starts to droop and 25 mm is the fail line on this machine, against 5 mm in the conservative published guidance. Give every bridge two anchored ends - a span anchored at one end is not a bridge, it is an overhang.","applies":["bridge","span","ceiling","hole roof"],"value":{"typical":10,"max":25,"unit":"mm"},"basis":"Xometry's FDM bridging guidance reduced to the rule pack's warn/fail pair for the X1C's part cooling","sources":["xometry-fdm","hubs-fdm","nativecad-fdm-x1c"],"tags":["bridge","overhang","span"]},{"id":"hole-size-and-compensation","kind":"rule","tier":1,"title":"Hole diameter and the shrink you design around","summary":"Printed holes come out 0.1-0.3 mm undersize and Bambu ships xy_hole_compensation at 0, so add 0.15-0.2 mm to any hole meant to fit something. Below 1.5 mm diameter a hole is a dimple: drill it after the print or drop it.","applies":["hole","bore","clearance hole","fit"],"value":{"table":[{"param":"min-diameter","value":1.5},{"param":"compensation-min","value":0.15},{"param":"compensation-max","value":0.2}],"unit":"mm"},"basis":"Hubs' printed-hole undersize guidance read against Bambu's xy_hole_compensation default of 0","sources":["hubs-fdm","bbl-process-common"],"tags":["hole","tolerance","fit"]},{"id":"horizontal-hole-teardrop","kind":"rule","tier":1,"title":"Teardrop a horizontal hole over 8 mm","summary":"A hole with its axis in the plate plane has to bridge its own ceiling. Past about 8 mm diameter that ceiling sags into the bore, so replace the top of the circle with a teardrop or a 45 deg roof and print it without support.","applies":["hole","horizontal bore","teardrop"],"value":{"max":8,"unit":"mm"},"basis":"Prusa's modeling-for-3D-printing guidance on horizontal holes and self-supporting roofs","sources":["prusa-modeling"],"tags":["hole","overhang","teardrop"]},{"id":"min-pin-diameter","kind":"dimension","tier":1,"title":"Free-standing pin and boss diameter","summary":"Under 1.5 mm a free-standing pin is one or two extrusions wide and snaps off the plate; under 3 mm it survives the print but not the handling. Published guidance goes as far as 5 mm - fillet the base whichever number you take.","applies":["pin","boss","post","thin feature"],"value":{"min":1.5,"typical":3,"unit":"mm"},"basis":"Xometry's 1-3 mm pin guidance and Hubs' 5 mm free-standing recommendation, reduced to the rule pack's fail/warn pair","sources":["xometry-fdm","hubs-fdm","nativecad-fdm-x1c"],"tags":["pin","boss","thin-feature"]},{"id":"printed-tolerance","kind":"tolerance","tier":1,"title":"Dimensional tolerance you can design to","summary":"Design to +/- 0.2 mm on this machine; after the X1C's own flow calibration users hold +/- 0.1-0.2 mm. That is the band every mating dimension has to tolerate before you add a single micron of clearance on top.","applies":["tolerance","mating part","fit"],"value":{"min":0.1,"max":0.2,"typical":0.2,"unit":"mm"},"basis":"Prusa's published FDM tolerance baseline; the tighter post-flow-calibration band is the rule pack's inference from user reports","sources":["prusa-modeling","nativecad-fdm-x1c"],"tags":["tolerance","fit","accuracy"]},{"id":"mating-clearance","kind":"tolerance","tier":1,"title":"Clearance by fit class","summary":"Press fit 0.1-0.15 mm, sliding 0.2-0.3, hinge 0.3 and up, loose 0.5. Apply it on the diameter or across the slot - two printed parts modelled to the same nominal dimension do not go together.","applies":["clearance","fit","assembly","hinge","press fit"],"value":{"table":[{"fit":"press","min":0.1,"max":0.15},{"fit":"sliding","min":0.2,"max":0.3},{"fit":"hinge","min":0.3},{"fit":"loose","min":0.5}],"unit":"mm"},"basis":"Prusa's published clearance classes for printed mating parts","sources":["prusa-modeling"],"tags":["clearance","fit","assembly"]},{"id":"elephant-foot-chamfer","kind":"rule","tier":1,"title":"Chamfer the bed-face edge, never fillet it","summary":"The first layers squash out by about 0.15 mm - exactly Bambu's default elephant-foot compensation. Break every bed-touching edge with a chamfer: a fillet down there is a near-horizontal overhang that prints straight back out flat.","applies":["first layer","bed face","edge break","chamfer"],"value":{"typical":0.15,"unit":"mm"},"basis":"elefant_foot_compensation default in the Bambu process profile; chamfer-over-fillet at the bed face is Prusa's and Hubs' guidance","sources":["bbl-process-common","prusa-modeling"],"tags":["elephant-foot","chamfer","first-layer"]},{"id":"z-anisotropy-orientation","kind":"rule","tier":1,"title":"Orient the load off the build direction","summary":"An FDM part is weakest in tension across the layers. A section whose run-to-thickness ratio passes 8:1 along the build direction carries its load through layer bonds in series - reorient it, or thicken it.","applies":["orientation","load path","strength","thin section"],"value":{"max":8,"unit":"ratio"},"basis":"layer-bond anisotropy is published FDM guidance; the 8:1 run-to-thickness threshold is the rule pack's warn limit (ops/fdmX1cRules.js x1c_z_anisotropy)","sources":["hubs-fdm","prusa-modeling","nativecad-fdm-x1c"],"tags":["anisotropy","orientation","strength"]},{"id":"ams-and-soft-filament","kind":"rule","tier":2,"title":"AMS slots, and the filament that cannot use them","summary":"Four slots per AMS and up to four units is 16 filaments on one machine, but TPU and other soft filaments buckle in the feed path and must run from the external spool. A plate that maps TPU to an AMS slot does not print.","applies":["ams","multi-material","tpu","filament mapping"],"value":{"table":[{"param":"slots-per-unit","value":4},{"param":"max-units","value":4},{"param":"max-filaments","value":16}],"unit":"count"},"basis":"Bambu's published AMS capacity and soft-filament exclusion, carried in the rule pack as x1c_ams_tpu","sources":["kb-research-x1c","nativecad-fdm-x1c"],"tags":["ams","multi-material","tpu"]},{"id":"material-pla","kind":"material","tier":1,"title":"PLA - the default, and the one that does not warp","summary":"Density 1.24 g/cm3, warp class 1 of 5, 45/55 deg overhang, 5 mm brim, no chamber, no hardened nozzle. It softens around 55-60 C, so it is the right answer for anything that is not hot, heavily loaded or outdoors.","applies":["pla","filament","indoor part","prototype"],"value":{"table":[{"param":"density","value":1.24},{"param":"overhang-warn-deg","value":45},{"param":"overhang-fail-deg","value":55},{"param":"warp-index","value":1},{"param":"brim","value":5}],"note":"density g/cm3, overhang deg, warp class 1-5, brim mm"},"basis":"filament_density and the brim default from the Bambu profiles; the overhang pair is the rule pack's PLA row and the softening range is Hubs' FDM material guidance","sources":["bbl-process-common","hubs-fdm","nativecad-fdm-x1c"],"tags":["pla","material","filament"]},{"id":"material-abs-asa","kind":"material","tier":1,"title":"ABS and ASA - warp class 4, lid closed","summary":"Density 1.04 (ABS) and 1.07 (ASA) g/cm3, overhang tightened to 40/50 deg, 8 mm brim, chamber around 55 C with the lid on and the aux fan off. Warp class 4 of 5: a big flat footprint with square corners lifts off the plate.","applies":["abs","asa","outdoor part","heat resistant part"],"value":{"table":[{"material":"abs","density":1.04,"overhang-warn-deg":40,"overhang-fail-deg":50,"warp-index":4,"brim":8,"chamber-c":55},{"material":"asa","density":1.07,"overhang-warn-deg":40,"overhang-fail-deg":50,"warp-index":4,"brim":8,"chamber-c":55}],"note":"density g/cm3, overhang deg, brim mm, chamber C"},"basis":"ADP's Bambu ABS/ASA guide plus the rule pack's ABS and ASA rows (overhang tightened by 5 deg, flagged as inference there)","sources":["adp-abs-asa","nativecad-fdm-x1c"],"tags":["abs","asa","warp","material"]},{"id":"sequential-print-clearance","kind":"rule","tier":2,"title":"Clearance for by-object (sequential) printing","summary":"Printing objects one at a time needs 68 mm of radial clearance around the extruder and nothing already finished taller than 90 mm - the gantry sweeps over the parts it has built. Past 90 mm, plate them layer by layer instead.","applies":["sequential printing","by object","plate layout"],"value":{"table":[{"param":"clearance-radius","value":68},{"param":"clearance-height","value":90}],"unit":"mm"},"basis":"extruder_clearance_radius and extruder_clearance_height_to_lid in the X1C machine profile","sources":["bbl-machine-x1c04"],"tags":["sequential","layout","plate"],"detail":"Sequential printing is how you get a clean first layer on many small parts without a stringy travel between them, and how you print two filaments on one plate without the AMS. The cost is the clearance envelope: the extruder body needs 68 mm of radius and the gantry needs 90 mm of headroom above anything already standing. A tall part on a sequential plate is therefore a layout error, not a slicer setting."},{"id":"text-legibility","kind":"rule","tier":2,"title":"Embossed and engraved text that survives the print","summary":"Emboss a stroke at least 0.84 mm wide (two 0.4-nozzle line widths) and 0.5 mm proud; engrave 1.0 mm wide and 0.5 mm deep. cad_engrave_text legibility:\"fdm_x1c\" gates the floors: stroke 0.8, gap 0.45, counter 0.4, cap 3.0 mm, arc 200 deg.","applies":["text","emboss","engrave","logo","part marking"],"value":{"table":[{"param":"emboss-stroke","value":0.84},{"param":"emboss-height","value":0.5},{"param":"engrave-stroke","value":1},{"param":"engrave-depth","value":0.5},{"param":"gate-stroke-p2","value":0.8},{"param":"gate-glyph-gap","value":0.45},{"param":"gate-counter","value":0.4},{"param":"gate-cap-height","value":3},{"param":"gate-arc-max-deg","value":200}],"unit":"mm"},"basis":"Xometry's FDM text guidance, restated in line widths so it tracks whichever nozzle is fitted","sources":["xometry-fdm","bbl-process-common","nativecad-fdm-x1c"],"tags":["text","emboss","engrave","legibility","embolden"],"detail":"Restating the stroke as 'two line widths' rather than '0.8 mm' is what makes it portable: at the 0.6 nozzle the same rule reads 1.26 mm and at the 0.2 nozzle 0.42 mm. Height and depth are best read in layers instead of millimetres - 0.5 mm is two layers at 0.25, four at 0.12 - because a feature that does not land on a layer boundary is rounded to one. CADSF-2231 made this a gate (ops/font/textLegibility.js): the stroke is read at the 2nd percentile of the distance-transform ridge on the placed glyph polygons, because the minimum is always a junction or a tip. Refusals: text_stem_too_thin, text_counter_closed, text_glyphs_fuse, text_cap_too_small, text_arc_too_long. Measured on DejaVu Sans Bold: a 2.4 mm cap gives a 0.44 mm stroke and fails four ways (the LABS pendant planet words); 3.3 mm gives 0.60, and embolden 0.07 mm (offset plus swallowtail untangle) lifts it to 0.74 at the cost of letter gap. A bold face needs about a 4.5 mm cap to clear 0.8 mm unaided."},{"id":"hardened-nozzle-for-filled","kind":"rule","tier":2,"title":"Filled filament needs the hardened nozzle","summary":"PLA-CF, PA-CF and glass-filled PETG chew through brass and stainless. The X1C's 0.4 / 0.6 / 0.8 nozzles are hardened steel, the 0.2 is stainless, so filled filament on the 0.2 nozzle is a pairing the rule pack refuses outright.","applies":["carbon fibre filament","glass filled filament","nozzle choice"],"value":{"table":[{"nozzle":0.2,"nozzle-material":"stainless steel","hardened":false},{"nozzle":0.4,"nozzle-material":"hardened steel","hardened":true},{"nozzle":0.6,"nozzle-material":"hardened steel","hardened":true},{"nozzle":0.8,"nozzle-material":"hardened steel","hardened":true}]},"basis":"nozzle material per diameter in the X1C machine profiles; the abrasive-filament pairing is the rule pack's x1c_nozzle_material_compat rule","sources":["bbl-machine-x1c04","nativecad-fdm-x1c"],"tags":["nozzle","abrasive","carbon-fibre"]},{"id":"filament-catalogue","kind":"material","tier":2,"title":"Filament catalogue - eleven filaments, one table","summary":"Density, warp class 1-5, overhang warn/fail pair, AMS compatibility and hardened-nozzle flag for PLA, PETG, ABS, ASA, PC, PA, PA-CF, PLA-CF, PETG-GF, PVA and TPU. Pick the row first, then the geometry follows from it.","applies":["filament","material selection","ams"],"value":{"table":[{"id":"pla","density":1.24,"warp":1,"overhang":"45/55","ams":true,"hardened":false,"brim":5},{"id":"petg","density":1.27,"warp":2,"overhang":"45/55","ams":true,"hardened":false,"brim":5},{"id":"abs","density":1.04,"warp":4,"overhang":"40/50","ams":true,"hardened":false,"brim":8},{"id":"asa","density":1.07,"warp":4,"overhang":"40/50","ams":true,"hardened":false,"brim":8},{"id":"pc","density":1.2,"warp":5,"overhang":"40/50","ams":true,"hardened":false,"brim":8},{"id":"pa","density":1.14,"warp":3,"overhang":"45/55","ams":true,"hardened":false,"brim":8},{"id":"pa-cf","density":1.14,"warp":3,"overhang":"45/55","ams":true,"hardened":true,"brim":8},{"id":"pla-cf","density":1.24,"warp":1,"overhang":"45/55","ams":true,"hardened":true,"brim":5},{"id":"pet-gf","density":1.27,"warp":2,"overhang":"45/55","ams":true,"hardened":true,"brim":5},{"id":"pva","density":1.23,"warp":1,"overhang":"45/55","ams":true,"hardened":false,"brim":5},{"id":"tpu","density":1.21,"warp":1,"overhang":"45/55","ams":false,"hardened":false,"brim":5}],"note":"density g/cm3, warp class 1-5, overhang warn/fail deg, brim mm"},"basis":"filament_density from the Bambu filament profiles; warp class, the overhang pairs and the hardened-nozzle flags are the rule pack's material rows","sources":["bbl-process-common","adp-abs-asa","kb-research-x1c","nativecad-fdm-x1c"],"tags":["filament","material","density","warp"],"detail":"Warp class is this pack's own 1-5 ordering of the published shrinkage ranking (ABS/ASA/PC far above PETG, PETG above PLA), not a number any one page prints. It exists so a geometry rule can be written against it: class 4 and up wants a brim, a closed lid and chamfered rather than square footprint corners, and it is the class that makes a 200 mm flat plate a bad idea on this machine."},{"id":"material-petg","kind":"material","tier":2,"title":"PETG - tougher than PLA, still no chamber","summary":"Density 1.27 g/cm3, warp class 2 of 5, 45/55 deg overhang, 5 mm brim. It is the sensible step up from PLA for a part that flexes or lives somewhere warm, at the cost of stringing and worse bridging.","applies":["petg","filament","functional part"],"value":{"table":[{"param":"density","value":1.27},{"param":"warp-index","value":2},{"param":"overhang-warn-deg","value":45},{"param":"brim","value":5}],"note":"density g/cm3, warp class 1-5, overhang deg, brim mm"},"basis":"filament_density from the Bambu profiles and the rule pack's PETG row","sources":["bbl-process-common","hubs-fdm","nativecad-fdm-x1c"],"tags":["petg","material","filament"]},{"id":"material-pa-cf","kind":"material","tier":2,"title":"PA-CF - the strong one, and the expensive one","summary":"Carbon-filled nylon at 1.14 g/cm3, chamber around 50 C, 8 mm brim, hardened nozzle required, and a 1.2 mm wall floor rather than 0.84 - filled filament does not lay a reliable two-extrusion wall.","applies":["pa-cf","nylon","carbon fibre","structural part"],"value":{"table":[{"param":"density","value":1.14},{"param":"warp-index","value":3},{"param":"min-wall-floor","value":1.2},{"param":"chamber-c","value":50},{"param":"brim","value":8}],"note":"density g/cm3, wall and brim mm, chamber C"},"basis":"the rule pack's pa-cf row; the 1.2 mm filled-filament wall floor is carried over from ops/machineCatalog.js's bambu_x1c pa_cf entry (CADSF-655)","sources":["kb-research-x1c","nativecad-fdm-x1c"],"tags":["pa-cf","nylon","material","structural"]},{"id":"material-tpu","kind":"material","tier":2,"title":"TPU - flexible, and external spool only","summary":"Density 1.21 g/cm3, warp class 1, external spool only because the AMS feed path buckles it. Design for it the way you design a moulded elastomer: thin walls that bend, generous radii, and no press fits anywhere.","applies":["tpu","flexible part","gasket","bumper"],"value":{"table":[{"param":"density","value":1.21},{"param":"warp-index","value":1},{"param":"ams-compatible","value":0}],"note":"density g/cm3; ams-compatible 0 means external spool only"},"basis":"the rule pack's tpu row and Bambu's published soft-filament exclusion from the AMS","sources":["kb-research-x1c","nativecad-fdm-x1c"],"tags":["tpu","flexible","material","ams"]},{"id":"warp-risk-composite","kind":"rule","tier":2,"title":"Warp risk is a footprint problem, not a material problem","summary":"Shrinkage class times footprint size times flatness times how completely the footprint fills its own bounding box. A score of 1.0 is where the published guidance starts asking for a brim and a hot chamber - a square-cornered flat plate is the worst case.","applies":["warping","footprint","flat part","abs"],"value":{"max":1,"unit":"ratio"},"basis":"composite score in ops/fdmX1cRules.js x1c_warp_risk over the published shrinkage ranking; 1.0 is the rule pack's warn limit, not a figure any one page prints","sources":["hubs-fdm","adp-abs-asa","nativecad-fdm-x1c"],"tags":["warp","footprint","abs","first-layer"],"detail":"The four factors are multiplicative, which is why a small ABS part is fine and a large one is not, and why the same part in PLA never lifts. The geometric levers are all in the footprint: chamfer the plan-view corners instead of leaving them square, break a big solid plate into a ribbed one so the bed-contact area drops, and keep the aspect ratio of the footprint under control. The process levers - brim width and a closed lid with the aux fan off - are the ones the rule pack cannot see."},{"id":"flow-rate-budget","kind":"process","tier":2,"title":"Volumetric flow is what actually caps print speed","summary":"Realistic flow at the 0.4 nozzle is 12-20 mm3/s. Layer height times line width times speed has to stay under it, so a part that is all thin outer wall prints slowly no matter what the 500 mm/s headline says.","applies":["print time","wall","infill","speed"],"value":{"table":[{"param":"flow-min","value":12},{"param":"flow-max","value":20}],"note":"volumetric flow in mm3/s at the 0.4 nozzle"},"basis":"realistic 0.4-nozzle volumetric flow from the research note, flagged there as inference over the profile's speed and acceleration ceilings","sources":["kb-research-x1c","nativecad-fdm-x1c"],"tags":["flow","print-time","speed"]},{"id":"machine-thermals-and-speed","kind":"process","tier":2,"title":"Hotend, bed, chamber and the motion ceiling","summary":"300 C hotend, 120 C bed, enclosed chamber that holds heat, 500 mm/s XY and 20000 mm/s2 extruding acceleration, with a 107 mm3 nozzle volume. Those are the ceilings every other number on this page sits under.","applies":["machine","thermals","speed","chamber"],"value":{"table":[{"param":"hotend-max-c","value":300},{"param":"bed-max-c","value":120},{"param":"max-speed-xy","value":500},{"param":"max-accel-extruding","value":20000},{"param":"nozzle-volume","value":107}],"note":"temperatures C, speed mm/s, acceleration mm/s2, nozzle volume mm3"},"basis":"machine profile limits for the X1C plus the published spec for the enclosure and hotend","sources":["bbl-machine-x1c04","kb-research-x1c"],"tags":["machine","thermal","speed","x1c"]},{"id":"multicolour-flush-cost","kind":"process","tier":2,"title":"What a colour change actually costs","summary":"Every filament change purges the 107 mm3 nozzle plus a flush of 100-200 mm3 light to dark, 500-800 dark to light and 700+ into clear, and a 35 mm prime tower stands for the whole build. A 100 g part becomes about 135 g in colour.","applies":["multi-colour","ams","colour change","print cost"],"value":{"table":[{"param":"nozzle-purge","value":107},{"param":"flush-light-to-dark","value":"100-200"},{"param":"flush-dark-to-light","value":"500-800"},{"param":"flush-into-clear","value":700},{"param":"prime-tower-width","value":35}],"note":"volumes mm3, prime tower width mm"},"basis":"published AMS flushing-volume matrix and the FilamentCalcs multi-colour mass comparison, carried in the rule pack as x1c_multicolour_cost","sources":["flush-guide","filamentcalcs-ams","nativecad-fdm-x1c"],"tags":["ams","multi-colour","waste","print-cost"],"detail":"The design consequence is geometric: the cost scales with the number of distinct filaments per Z slab times the number of layers in it, not with how much of each colour is visible. A logo inlaid through the full height of a part costs a change on every layer; the same logo recessed into the top 2 mm costs a change on a handful. Grouping colours into Z bands is the single biggest saving available to the model."},{"id":"process-defaults","kind":"process","tier":2,"title":"The defaults the 0.20 Standard profile prints with","summary":"Two walls, three bottom and five top layers, 15 percent grid infill, 30 deg support threshold, 0.15 mm elephant-foot compensation, 0 hole compensation, 5 mm brim, 35 mm prime tower. Design against these, not against a slicer you have retuned.","applies":["slicer defaults","process profile","infill","support"],"value":{"table":[{"param":"walls","value":2},{"param":"bottom-layers","value":3},{"param":"top-layers","value":5},{"param":"infill-percent","value":15},{"param":"support-threshold-deg","value":30},{"param":"elephant-foot-comp","value":0.15},{"param":"xy-hole-comp","value":0},{"param":"brim","value":5},{"param":"prime-tower-width","value":35}],"note":"counts, percent, deg and mm as named"},"basis":"the 0.20mm Standard @BBL X1C process profile as shipped","sources":["bbl-process-common","bbl-machine-x1c04"],"tags":["defaults","process","infill","support"]},{"id":"unsupported-island","kind":"rule","tier":2,"title":"No unsupported islands","summary":"A face that starts in mid-air with nothing under it is 0 supportable layers of contact: the extruder draws it into open space and the part fails there. Count of unsupported islands in a printable model must be 0.","applies":["island","overhang","orientation","support"],"value":{"max":0,"unit":"count"},"basis":"published FDM guidance that a new region needs a layer beneath it; carried in the rule pack as the x1c_unsupported_island fail rule","sources":["hubs-fdm","nativecad-fdm-x1c"],"tags":["island","overhang","support","orientation"]},{"id":"step-into-bambu-studio","kind":"process","tier":2,"title":"STEP goes into Bambu Studio directly","summary":"Bambu Studio reads STEP natively through OCCT with its own linear and angular deflection settings, so a NativeCAD STEP export needs no mesh step at all. A multi-solid STEP arrives as 1 object carrying parts, and STEP colours are not mapped to filaments.","applies":["step export","slicer import","file path"],"value":{"options":["step","stl","obj","3mf"],"note":"the four formats Bambu Studio accepts as input geometry"},"basis":"Bambu Lab's STEP import documentation and the observed multi-solid behaviour recorded in the research note","sources":["bbl-wiki-step","kb-research-x1c"],"tags":["step","export","slicer","file-path"],"detail":"This is the practical reason to hand the slicer a B-rep rather than a mesh: the tessellation happens inside Bambu Studio against its own deflection settings, so a curve stays a curve until the last possible moment and the user can re-tessellate finer without going back to CAD. The one thing STEP does not carry across is colour-to-filament assignment - that needs a Bambu-flavoured 3MF with per-part extruder metadata."},{"id":"gcode-3mf-handoff","kind":"process","tier":2,"title":"The printer eats .gcode.3mf, not G-code","summary":"The machine consumes a .gcode.3mf: a zip holding per-plate G-code, an md5 the printer checks, plate thumbnails and the full resolved settings. The slicer is what produces it - there are 4 input formats in and exactly 1 out.","applies":["gcode.3mf","print job","file path","slicer output"],"value":{"table":[{"param":"input-formats","value":4},{"param":"output-format","value":"gcode.3mf"}],"note":"STEP / STL / OBJ / 3MF in, one .gcode.3mf out"},"basis":"the .gcode.3mf anatomy from the BambuStudio 3MF writer and the Printago teardown, as recorded in the research note","sources":["printago-3mf","kb-research-x1c"],"tags":["3mf","print-job","file-path"],"detail":"Inside it: 3D/3dmodel.model plus 3D/Objects/*.model (per-triangle paint for colour, supports and seams), Metadata/project_settings.config (every resolved key as JSON), Metadata/model_settings.config (plate, gcode file, bed type, print sequence, per-part extruder), Metadata/slice_info.config (predicted time, weight, per-filament usage), Metadata/plate_1.gcode and its .md5, and the plate/top/pick PNGs. printer_model has to match the target machine or the printer rejects the job."},{"id":"test-clearance-coupon","kind":"test","tier":2,"title":"Clearance coupon - pick the fit class before you print the part","summary":"A 70 x 24 x 6 mm plate with five holes at 5.0, 5.1, 5.2, 5.3 and 5.5 mm, printed and tried against a 5 mm pin. The first hole that slides is the clearance this filament and nozzle actually give you, and the number beats any table.","applies":["clearance","fit test","calibration","assembly"],"value":{"min":0.1,"max":0.5,"typical":0.2,"unit":"mm"},"basis":"the published clearance classes turned into a printable gauge; the geometry it demands is a flat plate at least 6 mm thick so the bore is a bore and not a bridge","sources":["prusa-modeling","hubs-fdm"],"see":["fdm-x1c/mating-clearance"],"tags":["test","clearance","calibration","fit"]},{"id":"test-overhang-tower","kind":"test","tier":2,"title":"Overhang tower - find the angle this filament really fails at","summary":"Tongues stepping from 30 to 70 deg in 5 deg increments, each at least 5 mm deep, printed in the filament you intend to use. The step where the underside goes rough is the fail angle; it moves with material, cooling and layer height.","applies":["overhang","support","orientation","calibration"],"value":{"min":30,"max":70,"unit":"deg"},"basis":"the standard FDM overhang-tower method against the published 45 deg baseline; demands tongues deep enough to be a real overhang rather than a bridge","sources":["hubs-fdm","prusa-modeling"],"see":["fdm-x1c/overhang-limit"],"tags":["test","overhang","calibration","orientation"]},{"id":"test-bridge-ladder","kind":"test","tier":2,"title":"Bridge ladder - the span that still droops","summary":"Spans of 5, 10, 15, 20, 25 and 30 mm between two 10 mm pillars, printed as one part. Measure the sag under each: the last clean rung is this machine's bridge limit for that filament, and it is usually nearer 25 mm than the 5 mm guidance.","applies":["bridge","span","ceiling","calibration"],"value":{"min":5,"max":30,"unit":"mm"},"basis":"published FDM bridging guidance turned into a printable ladder; demands both ends anchored so it measures bridging rather than overhang","sources":["xometry-fdm","hubs-fdm"],"see":["fdm-x1c/bridge-span"],"tags":["test","bridge","calibration"]},{"id":"test-hole-gauge","kind":"test","tier":2,"title":"Hole gauge - measure the undersize, then design it out","summary":"Holes at 2, 4, 6, 8, 10 and 12 mm through a 6 mm plate, measured with calipers after printing. The difference is the compensation to add in CAD - expect 0.1-0.3 mm, and expect it to be worse at the small end.","applies":["hole","bore","calibration","fit"],"value":{"min":2,"max":12,"unit":"mm"},"basis":"Hubs' printed-hole undersize guidance turned into a gauge; a 6 mm plate keeps every hole a through-bore rather than a blind pocket","sources":["hubs-fdm","bbl-process-common"],"see":["fdm-x1c/hole-size-and-compensation"],"tags":["test","hole","calibration","tolerance"]},{"id":"recipe-x1c-print-ready-bracket","kind":"recipe","tier":2,"title":"Recipe: print-ready L-bracket for the X1 Carbon","summary":"Build a 60 x 60 x 40 mm L-bracket that obeys this pack: 3 mm walls above the 1.2 mm recommendation, a 0.6 mm chamfer on every bed-touching edge for the elephant foot, and a 5.2 mm clearance hole for an M5 with the printed undersize designed out.","applies":["bracket","l-bracket","printed part","fixture"],"basis":"combines wall-thickness-by-nozzle, elephant-foot-chamfer and hole-size-and-compensation into one buildable part that fits the plate with room to spare","sources":["bbl-process-common","hubs-fdm","prusa-modeling"],"see":["fdm-x1c/elephant-foot-chamfer","fdm-x1c/hole-size-and-compensation"],"tags":["recipe","bracket","printed-part"],"recipe":{"prompt":"Model a 60x60x40mm printed L-bracket for a Bambu X1 Carbon: 3mm walls, a 0.6mm chamfer on the bed-face edges, and a 5.2mm clearance hole through the base leg","steps":[{"tool":"cad_box","args":{"dx":60,"dy":60,"dz":3},"note":"base leg, bed face at z=0, 3 mm thick"},{"tool":"cad_box","args":{"dx":60,"dy":3,"dz":40},"note":"upright leg, 3 mm thick, overlapping the base"},{"tool":"cad_boolean_union","args":{"of":"$0","tool":"$1"},"note":"one L-shaped solid"},{"tool":"cad_chamfer_edges","args":{"of":"$2","distance":0.6},"note":"break every edge 0.6 mm - chamfer, not fillet, so the bed-face edge absorbs the elephant foot"},{"tool":"cad_drill_hole","args":{"of":"$3","center":[30,35],"type":"drill","diameter":5.2},"note":"M5 clearance through the base leg: 5.0 nominal plus 0.2 mm for the printed undersize"}],"expect":{"volume":17284.9045009852,"faceCount":33,"watertight":true,"note":"measured 2026-09-22: 60x60x3 base plus 60x3x40 upright unioned is 17460 mm3; the 0.6 mm blanket chamfer takes 111 mm3 and the 5.2 mm through-hole another 64, and the chamfer is what turns 8 faces into 31"}}},{"id":"recipe-x1c-clearance-coupon","kind":"recipe","tier":2,"title":"Recipe: X1 Carbon clearance coupon","summary":"Build the fit gauge from the clearance-coupon test: a 70 x 24 x 6 mm plate with five bores at 5.0, 5.1, 5.2, 5.3 and 5.5 mm on a 13 mm pitch. Print it once and every fit on the machine afterwards is a measurement instead of a guess.","applies":["calibration","clearance","fit test","coupon"],"basis":"the geometry the test-clearance-coupon entry demands, built as real tool calls so an agent can produce it without re-deriving the pitch","sources":["prusa-modeling","hubs-fdm"],"see":["fdm-x1c/test-clearance-coupon","fdm-x1c/mating-clearance"],"tags":["recipe","calibration","clearance"],"recipe":{"prompt":"Model a 70x24x6mm 3D printing clearance test coupon with five holes at 5.0, 5.1, 5.2, 5.3 and 5.5mm on a 13mm pitch","steps":[{"tool":"cad_box","args":{"dx":70,"dy":24,"dz":6},"note":"coupon plate, 6 mm thick so every hole is a through-bore"},{"tool":"cad_drill_hole","args":{"of":"$0","center":[11,12],"type":"drill","diameter":5},"note":"nominal - a 5 mm pin should NOT enter this one"},{"tool":"cad_drill_hole","args":{"of":"$1","center":[24,12],"type":"drill","diameter":5.1},"note":"press fit, 0.1 mm"},{"tool":"cad_drill_hole","args":{"of":"$2","center":[37,12],"type":"drill","diameter":5.2},"note":"sliding fit, 0.2 mm"},{"tool":"cad_drill_hole","args":{"of":"$3","center":[50,12],"type":"drill","diameter":5.3},"note":"sliding to hinge, 0.3 mm"},{"tool":"cad_drill_hole","args":{"of":"$4","center":[63,12],"type":"drill","diameter":5.5},"note":"loose fit, 0.5 mm"}],"expect":{"volume":9437.277266965333,"faceCount":16,"watertight":true,"note":"measured 2026-09-22: 70x24x6 plate is 10080 mm3 and the five bores at 5.0 to 5.5 mm remove 643; each through-bore adds a cylindrical face and closes one, so 6 faces become 16"}}}]}