fdmprinter.def.json 495 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733
  1. {
  2. "name": "FDM Printer Base Description",
  3. "version": 2,
  4. "metadata":
  5. {
  6. "type": "machine",
  7. "author": "Unknown",
  8. "manufacturer": "Unknown",
  9. "setting_version": 23,
  10. "file_formats": "text/x-gcode;model/stl;application/x-wavefront-obj;application/x3g",
  11. "visible": false,
  12. "has_materials": true,
  13. "has_variants": false,
  14. "has_machine_quality": false,
  15. "preferred_material": "generic_pla",
  16. "preferred_quality_type": "normal",
  17. "machine_extruder_trains": { "0": "fdmextruder" },
  18. "supports_usb_connection": true,
  19. "supports_network_connection": false
  20. },
  21. "settings":
  22. {
  23. "machine_settings":
  24. {
  25. "label": "Machine",
  26. "type": "category",
  27. "description": "Machine specific settings",
  28. "icon": "Printer",
  29. "children":
  30. {
  31. "machine_name":
  32. {
  33. "label": "Machine Type",
  34. "description": "The name of your 3D printer model.",
  35. "default_value": "Unknown",
  36. "type": "str",
  37. "settable_per_mesh": false,
  38. "settable_per_extruder": false,
  39. "settable_per_meshgroup": false
  40. },
  41. "machine_show_variants":
  42. {
  43. "label": "Show Machine Variants",
  44. "description": "Whether to show the different variants of this machine, which are described in separate json files.",
  45. "default_value": false,
  46. "type": "bool",
  47. "settable_per_mesh": false,
  48. "settable_per_extruder": false,
  49. "settable_per_meshgroup": false
  50. },
  51. "machine_start_gcode":
  52. {
  53. "label": "Start G-code",
  54. "description": "G-code commands to be executed at the very start - separated by \\n.",
  55. "default_value": "G28 ;Home\nG1 Z15.0 F6000 ;Move the platform down 15mm\n;Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0",
  56. "type": "str",
  57. "settable_per_mesh": false,
  58. "settable_per_extruder": false,
  59. "settable_per_meshgroup": false
  60. },
  61. "machine_end_gcode":
  62. {
  63. "label": "End G-code",
  64. "description": "G-code commands to be executed at the very end - separated by \\n.",
  65. "default_value": "M104 S0\nM140 S0\n;Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84",
  66. "type": "str",
  67. "settable_per_mesh": false,
  68. "settable_per_extruder": false,
  69. "settable_per_meshgroup": false
  70. },
  71. "material_guid":
  72. {
  73. "label": "Material GUID",
  74. "description": "GUID of the material. This is set automatically.",
  75. "default_value": "",
  76. "type": "str",
  77. "enabled": false
  78. },
  79. "material_type":
  80. {
  81. "label": "Material Type",
  82. "description": "The type of material used.",
  83. "default_value": "",
  84. "type": "str",
  85. "enabled": false
  86. },
  87. "material_brand":
  88. {
  89. "label": "Material Brand",
  90. "description": "The brand of material used.",
  91. "default_value": "",
  92. "type": "str",
  93. "enabled": false
  94. },
  95. "material_diameter":
  96. {
  97. "label": "Diameter",
  98. "description": "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament.",
  99. "unit": "mm",
  100. "type": "float",
  101. "default_value": 2.85,
  102. "minimum_value": "0.0001",
  103. "minimum_value_warning": "0.4",
  104. "maximum_value_warning": "3.5",
  105. "enabled": "machine_gcode_flavor != \"UltiGCode\"",
  106. "settable_per_mesh": false,
  107. "settable_per_extruder": true
  108. },
  109. "material_bed_temp_wait":
  110. {
  111. "label": "Wait for Build Plate Heatup",
  112. "description": "Whether to insert a command to wait until the build plate temperature is reached at the start.",
  113. "default_value": true,
  114. "type": "bool",
  115. "settable_per_mesh": false,
  116. "settable_per_extruder": false,
  117. "settable_per_meshgroup": false
  118. },
  119. "material_print_temp_wait":
  120. {
  121. "label": "Wait for Nozzle Heatup",
  122. "description": "Whether to wait until the nozzle temperature is reached at the start.",
  123. "default_value": true,
  124. "type": "bool",
  125. "enabled": "machine_nozzle_temp_enabled",
  126. "settable_per_mesh": false,
  127. "settable_per_extruder": false,
  128. "settable_per_meshgroup": false
  129. },
  130. "material_print_temp_prepend":
  131. {
  132. "label": "Include Material Temperatures",
  133. "description": "Whether to include nozzle temperature commands at the start of the gcode. When the start_gcode already contains nozzle temperature commands Cura frontend will automatically disable this setting.",
  134. "default_value": true,
  135. "type": "bool",
  136. "enabled": "machine_nozzle_temp_enabled",
  137. "settable_per_mesh": false,
  138. "settable_per_extruder": false,
  139. "settable_per_meshgroup": false
  140. },
  141. "material_bed_temp_prepend":
  142. {
  143. "label": "Include Build Plate Temperature",
  144. "description": "Whether to include build plate temperature commands at the start of the gcode. When the start_gcode already contains build plate temperature commands Cura frontend will automatically disable this setting.",
  145. "default_value": true,
  146. "type": "bool",
  147. "settable_per_mesh": false,
  148. "settable_per_extruder": false,
  149. "settable_per_meshgroup": false
  150. },
  151. "machine_width":
  152. {
  153. "label": "Machine Width",
  154. "description": "The width (X-direction) of the printable area.",
  155. "default_value": 100,
  156. "type": "float",
  157. "minimum_value": "0.001",
  158. "maximum_value": "2000000",
  159. "settable_per_mesh": false,
  160. "settable_per_extruder": false,
  161. "settable_per_meshgroup": false
  162. },
  163. "machine_depth":
  164. {
  165. "label": "Machine Depth",
  166. "description": "The depth (Y-direction) of the printable area.",
  167. "default_value": 100,
  168. "type": "float",
  169. "minimum_value": "0.001",
  170. "maximum_value": "2000000",
  171. "settable_per_mesh": false,
  172. "settable_per_extruder": false,
  173. "settable_per_meshgroup": false
  174. },
  175. "machine_height":
  176. {
  177. "label": "Machine Height",
  178. "description": "The height (Z-direction) of the printable area.",
  179. "default_value": 100,
  180. "type": "float",
  181. "settable_per_mesh": false,
  182. "settable_per_extruder": false,
  183. "settable_per_meshgroup": false
  184. },
  185. "machine_shape":
  186. {
  187. "label": "Build Plate Shape",
  188. "description": "The shape of the build plate without taking unprintable areas into account.",
  189. "default_value": "rectangular",
  190. "type": "enum",
  191. "options":
  192. {
  193. "rectangular": "Rectangular",
  194. "elliptic": "Elliptic"
  195. },
  196. "settable_per_mesh": false,
  197. "settable_per_extruder": false,
  198. "settable_per_meshgroup": false
  199. },
  200. "machine_buildplate_type":
  201. {
  202. "label": "Build Plate Material",
  203. "description": "The material of the build plate installed on the printer.",
  204. "default_value": "glass",
  205. "type": "enum",
  206. "options":
  207. {
  208. "glass": "Glass",
  209. "aluminum": "Aluminum"
  210. },
  211. "settable_per_mesh": false,
  212. "settable_per_extruder": false,
  213. "settable_per_meshgroup": false
  214. },
  215. "machine_heated_bed":
  216. {
  217. "label": "Has Heated Build Plate",
  218. "description": "Whether the machine has a heated build plate present.",
  219. "default_value": false,
  220. "type": "bool",
  221. "settable_per_mesh": false,
  222. "settable_per_extruder": false,
  223. "settable_per_meshgroup": false
  224. },
  225. "machine_heated_build_volume":
  226. {
  227. "label": "Has Build Volume Temperature Stabilization",
  228. "description": "Whether the machine is able to stabilize the build volume temperature.",
  229. "default_value": false,
  230. "type": "bool",
  231. "settable_per_mesh": false,
  232. "settable_per_extruder": false,
  233. "settable_per_meshgroup": false
  234. },
  235. "machine_always_write_active_tool":
  236. {
  237. "label": "Always Write Active Tool",
  238. "description": "Write active tool after sending temp commands to inactive tool. Required for Dual Extruder printing with Smoothie or other firmware with modal tool commands.",
  239. "default_value": false,
  240. "type": "bool",
  241. "settable_per_mesh": false,
  242. "settable_per_extruder": false,
  243. "settable_per_meshgroup": false
  244. },
  245. "machine_center_is_zero":
  246. {
  247. "label": "Is Center Origin",
  248. "description": "Whether the X/Y coordinates of the zero position of the printer is at the center of the printable area.",
  249. "default_value": false,
  250. "type": "bool",
  251. "settable_per_mesh": false,
  252. "settable_per_extruder": false,
  253. "settable_per_meshgroup": false
  254. },
  255. "machine_extruder_count":
  256. {
  257. "label": "Number of Extruders",
  258. "description": "Number of extruder trains. An extruder train is the combination of a feeder, bowden tube, and nozzle.",
  259. "default_value": 1,
  260. "minimum_value": "1",
  261. "maximum_value": "16",
  262. "type": "int",
  263. "settable_per_mesh": false,
  264. "settable_per_extruder": false,
  265. "settable_per_meshgroup": false
  266. },
  267. "extruders_enabled_count":
  268. {
  269. "label": "Number of Extruders That Are Enabled",
  270. "description": "Number of extruder trains that are enabled; automatically set in software",
  271. "value": "machine_extruder_count",
  272. "default_value": 1,
  273. "minimum_value": "1",
  274. "maximum_value": "16",
  275. "type": "int",
  276. "settable_per_mesh": false,
  277. "settable_per_extruder": false,
  278. "settable_per_meshgroup": false
  279. },
  280. "machine_nozzle_tip_outer_diameter":
  281. {
  282. "label": "Outer Nozzle Diameter",
  283. "description": "The outer diameter of the tip of the nozzle.",
  284. "unit": "mm",
  285. "default_value": 1,
  286. "type": "float",
  287. "settable_per_mesh": false,
  288. "settable_per_extruder": true,
  289. "settable_per_meshgroup": false,
  290. "settable_globally": false
  291. },
  292. "machine_nozzle_head_distance":
  293. {
  294. "label": "Nozzle Length",
  295. "description": "The height difference between the tip of the nozzle and the lowest part of the print head.",
  296. "unit": "mm",
  297. "default_value": 3,
  298. "type": "float",
  299. "settable_per_mesh": false,
  300. "settable_per_extruder": true,
  301. "settable_per_meshgroup": false
  302. },
  303. "machine_nozzle_expansion_angle":
  304. {
  305. "label": "Nozzle Angle",
  306. "description": "The angle between the horizontal plane and the conical part right above the tip of the nozzle.",
  307. "unit": "\u00b0",
  308. "type": "int",
  309. "default_value": 45,
  310. "maximum_value": "89",
  311. "minimum_value": "1",
  312. "settable_per_mesh": false,
  313. "settable_per_extruder": false,
  314. "settable_per_meshgroup": false
  315. },
  316. "machine_heat_zone_length":
  317. {
  318. "label": "Heat Zone Length",
  319. "description": "The distance from the tip of the nozzle in which heat from the nozzle is transferred to the filament.",
  320. "unit": "mm",
  321. "default_value": 16,
  322. "type": "float",
  323. "settable_per_mesh": false,
  324. "settable_per_extruder": true,
  325. "settable_per_meshgroup": false
  326. },
  327. "machine_nozzle_temp_enabled":
  328. {
  329. "label": "Enable Nozzle Temperature Control",
  330. "description": "Whether to control temperature from Cura. Turn this off to control nozzle temperature from outside of Cura.",
  331. "default_value": true,
  332. "value": "machine_gcode_flavor != \"UltiGCode\"",
  333. "type": "bool",
  334. "settable_per_mesh": false,
  335. "settable_per_extruder": true,
  336. "settable_per_meshgroup": false
  337. },
  338. "machine_nozzle_heat_up_speed":
  339. {
  340. "label": "Heat Up Speed",
  341. "description": "The speed (\u00b0C/s) by which the nozzle heats up averaged over the window of normal printing temperatures and the standby temperature.",
  342. "default_value": 2.0,
  343. "unit": "\u00b0C/s",
  344. "type": "float",
  345. "enabled": "machine_nozzle_temp_enabled",
  346. "settable_per_mesh": false,
  347. "settable_per_extruder": true
  348. },
  349. "machine_nozzle_cool_down_speed":
  350. {
  351. "label": "Cool Down Speed",
  352. "description": "The speed (\u00b0C/s) by which the nozzle cools down averaged over the window of normal printing temperatures and the standby temperature.",
  353. "default_value": 2.0,
  354. "unit": "\u00b0C/s",
  355. "type": "float",
  356. "enabled": "machine_nozzle_temp_enabled",
  357. "settable_per_mesh": false,
  358. "settable_per_extruder": true
  359. },
  360. "machine_min_cool_heat_time_window":
  361. {
  362. "label": "Minimal Time Standby Temperature",
  363. "description": "The minimal time an extruder has to be inactive before the nozzle is cooled. Only when an extruder is not used for longer than this time will it be allowed to cool down to the standby temperature.",
  364. "default_value": 50.0,
  365. "unit": "s",
  366. "type": "float",
  367. "enabled": "machine_nozzle_temp_enabled",
  368. "settable_per_mesh": false,
  369. "settable_per_extruder": true
  370. },
  371. "machine_gcode_flavor":
  372. {
  373. "label": "G-code Flavor",
  374. "description": "The type of g-code to be generated.",
  375. "type": "enum",
  376. "options":
  377. {
  378. "RepRap (Marlin/Sprinter)": "Marlin",
  379. "RepRap (Volumetric)": "Marlin (Volumetric)",
  380. "RepRap (RepRap)": "RepRap",
  381. "UltiGCode": "Ultimaker 2",
  382. "Griffin": "Griffin",
  383. "Makerbot": "Makerbot",
  384. "BFB": "Bits from Bytes",
  385. "MACH3": "Mach3",
  386. "Repetier": "Repetier"
  387. },
  388. "default_value": "RepRap (Marlin/Sprinter)",
  389. "settable_per_mesh": false,
  390. "settable_per_extruder": false,
  391. "settable_per_meshgroup": false
  392. },
  393. "machine_firmware_retract":
  394. {
  395. "label": "Firmware Retraction",
  396. "description": "Whether to use firmware retract commands (G10/G11) instead of using the E property in G1 commands to retract the material.",
  397. "type": "bool",
  398. "default_value": false,
  399. "value": "machine_gcode_flavor == 'RepRap (Volumetric)' or machine_gcode_flavor == 'UltiGCode' or machine_gcode_flavor == 'BFB'",
  400. "settable_per_mesh": false,
  401. "settable_per_extruder": false,
  402. "settable_per_meshgroup": false
  403. },
  404. "machine_extruders_share_heater":
  405. {
  406. "label": "Extruders Share Heater",
  407. "description": "Whether the extruders share a single heater rather than each extruder having its own heater.",
  408. "type": "bool",
  409. "default_value": false,
  410. "settable_per_mesh": false,
  411. "settable_per_extruder": false,
  412. "settable_per_meshgroup": false
  413. },
  414. "machine_extruders_share_nozzle":
  415. {
  416. "label": "Extruders Share Nozzle",
  417. "description": "Whether the extruders share a single nozzle rather than each extruder having its own nozzle. When set to true, it is expected that the printer-start gcode script properly sets up all extruders in an initial retraction state that is known and mutually compatible (either zero or one filament not retracted); in that case the initial retraction status is described, per extruder, by the 'machine_extruders_shared_nozzle_initial_retraction' parameter.",
  418. "type": "bool",
  419. "default_value": false,
  420. "settable_per_mesh": false,
  421. "settable_per_extruder": false,
  422. "settable_per_meshgroup": false
  423. },
  424. "machine_extruders_shared_nozzle_initial_retraction":
  425. {
  426. "label": "Shared Nozzle Initial Retraction",
  427. "description": "How much the filament of each extruder is assumed to have been retracted from the shared nozzle tip at the completion of the printer-start gcode script; the value should be equal to or greater than the length of the common part of the nozzle's ducts.",
  428. "unit": "mm",
  429. "default_value": 0,
  430. "minimum_value": "0",
  431. "type": "float",
  432. "enabled": "machine_extruders_share_nozzle",
  433. "settable_per_mesh": false,
  434. "settable_per_extruder": true,
  435. "settable_per_meshgroup": false
  436. },
  437. "machine_disallowed_areas":
  438. {
  439. "label": "Disallowed Areas",
  440. "description": "A list of polygons with areas the print head is not allowed to enter.",
  441. "type": "polygons",
  442. "default_value": [],
  443. "settable_per_mesh": false,
  444. "settable_per_extruder": false,
  445. "settable_per_meshgroup": false
  446. },
  447. "nozzle_disallowed_areas":
  448. {
  449. "label": "Nozzle Disallowed Areas",
  450. "description": "A list of polygons with areas the nozzle is not allowed to enter.",
  451. "type": "polygons",
  452. "default_value": [],
  453. "settable_per_mesh": false,
  454. "settable_per_extruder": false,
  455. "settable_per_meshgroup": false
  456. },
  457. "machine_head_with_fans_polygon":
  458. {
  459. "label": "Machine Head & Fan Polygon",
  460. "description": "The shape of the print head. These are coordinates relative to the position of the print head, which is usually the position of its first extruder. The dimensions left and in front of the print head must be negative coordinates.",
  461. "type": "polygon",
  462. "default_value": [
  463. [-20, 10],
  464. [10, 10],
  465. [10, -10],
  466. [-20, -10]
  467. ],
  468. "settable_per_mesh": false,
  469. "settable_per_extruder": false,
  470. "settable_per_meshgroup": false
  471. },
  472. "gantry_height":
  473. {
  474. "label": "Gantry Height",
  475. "description": "The height difference between the tip of the nozzle and the gantry system (X and Y axes).",
  476. "default_value": 99999999999,
  477. "value": "machine_height",
  478. "type": "float",
  479. "settable_per_mesh": false,
  480. "settable_per_extruder": false,
  481. "settable_per_meshgroup": false
  482. },
  483. "machine_nozzle_id":
  484. {
  485. "label": "Nozzle ID",
  486. "description": "The nozzle ID for an extruder train, such as \"AA 0.4\" and \"BB 0.8\".",
  487. "type": "str",
  488. "default_value": "unknown",
  489. "settable_per_mesh": false,
  490. "settable_per_extruder": true
  491. },
  492. "machine_nozzle_size":
  493. {
  494. "label": "Nozzle Diameter",
  495. "description": "The inner diameter of the nozzle. Change this setting when using a non-standard nozzle size.",
  496. "unit": "mm",
  497. "type": "float",
  498. "default_value": 0.4,
  499. "minimum_value": "0.001",
  500. "maximum_value_warning": "10",
  501. "settable_per_mesh": false,
  502. "settable_per_extruder": true
  503. },
  504. "machine_use_extruder_offset_to_offset_coords":
  505. {
  506. "label": "Offset with Extruder",
  507. "description": "Apply the extruder offset to the coordinate system. Affects all extruders.",
  508. "type": "bool",
  509. "default_value": true,
  510. "settable_per_mesh": false,
  511. "settable_per_extruder": false,
  512. "settable_per_meshgroup": false
  513. },
  514. "extruder_prime_pos_z":
  515. {
  516. "label": "Extruder Prime Z Position",
  517. "description": "The Z coordinate of the position where the nozzle primes at the start of printing.",
  518. "type": "float",
  519. "unit": "mm",
  520. "default_value": 0,
  521. "minimum_value_warning": "0",
  522. "maximum_value": "machine_height",
  523. "settable_per_mesh": false,
  524. "settable_per_extruder": true
  525. },
  526. "extruder_prime_pos_abs":
  527. {
  528. "label": "Absolute Extruder Prime Position",
  529. "description": "Make the extruder prime position absolute rather than relative to the last-known location of the head.",
  530. "type": "bool",
  531. "default_value": false,
  532. "settable_per_mesh": false,
  533. "settable_per_extruder": true
  534. },
  535. "machine_max_feedrate_x":
  536. {
  537. "label": "Maximum Speed X",
  538. "description": "The maximum speed for the motor of the X-direction.",
  539. "unit": "mm/s",
  540. "type": "float",
  541. "default_value": 299792458000,
  542. "settable_per_mesh": false,
  543. "settable_per_extruder": false,
  544. "settable_per_meshgroup": false
  545. },
  546. "machine_max_feedrate_y":
  547. {
  548. "label": "Maximum Speed Y",
  549. "description": "The maximum speed for the motor of the Y-direction.",
  550. "unit": "mm/s",
  551. "type": "float",
  552. "default_value": 299792458000,
  553. "settable_per_mesh": false,
  554. "settable_per_extruder": false,
  555. "settable_per_meshgroup": false
  556. },
  557. "machine_max_feedrate_z":
  558. {
  559. "label": "Maximum Speed Z",
  560. "description": "The maximum speed for the motor of the Z-direction.",
  561. "unit": "mm/s",
  562. "type": "float",
  563. "default_value": 299792458000,
  564. "settable_per_mesh": false,
  565. "settable_per_extruder": false,
  566. "settable_per_meshgroup": false
  567. },
  568. "machine_max_feedrate_e":
  569. {
  570. "label": "Maximum Speed E",
  571. "description": "The maximum speed of the filament.",
  572. "unit": "mm/s",
  573. "type": "float",
  574. "default_value": 299792458000,
  575. "settable_per_mesh": false,
  576. "settable_per_extruder": false,
  577. "settable_per_meshgroup": false
  578. },
  579. "machine_max_acceleration_x":
  580. {
  581. "label": "Maximum Acceleration X",
  582. "description": "Maximum acceleration for the motor of the X-direction",
  583. "unit": "mm/s\u00b2",
  584. "type": "float",
  585. "default_value": 9000,
  586. "settable_per_mesh": false,
  587. "settable_per_extruder": false,
  588. "settable_per_meshgroup": false
  589. },
  590. "machine_max_acceleration_y":
  591. {
  592. "label": "Maximum Acceleration Y",
  593. "description": "Maximum acceleration for the motor of the Y-direction.",
  594. "unit": "mm/s\u00b2",
  595. "type": "float",
  596. "default_value": 9000,
  597. "settable_per_mesh": false,
  598. "settable_per_extruder": false,
  599. "settable_per_meshgroup": false
  600. },
  601. "machine_max_acceleration_z":
  602. {
  603. "label": "Maximum Acceleration Z",
  604. "description": "Maximum acceleration for the motor of the Z-direction.",
  605. "unit": "mm/s\u00b2",
  606. "type": "float",
  607. "default_value": 100,
  608. "settable_per_mesh": false,
  609. "settable_per_extruder": false,
  610. "settable_per_meshgroup": false
  611. },
  612. "machine_max_acceleration_e":
  613. {
  614. "label": "Maximum Filament Acceleration",
  615. "description": "Maximum acceleration for the motor of the filament.",
  616. "unit": "mm/s\u00b2",
  617. "type": "float",
  618. "default_value": 10000,
  619. "settable_per_mesh": false,
  620. "settable_per_extruder": false,
  621. "settable_per_meshgroup": false
  622. },
  623. "machine_acceleration":
  624. {
  625. "label": "Default Acceleration",
  626. "description": "The default acceleration of print head movement.",
  627. "unit": "mm/s\u00b2",
  628. "type": "float",
  629. "default_value": 4000,
  630. "settable_per_mesh": false,
  631. "settable_per_extruder": false,
  632. "settable_per_meshgroup": false
  633. },
  634. "machine_max_jerk_xy":
  635. {
  636. "label": "Default X-Y Jerk",
  637. "description": "Default jerk for movement in the horizontal plane.",
  638. "unit": "mm/s",
  639. "type": "float",
  640. "default_value": 20.0,
  641. "minimum_value": "0",
  642. "settable_per_mesh": false,
  643. "settable_per_extruder": false,
  644. "settable_per_meshgroup": false
  645. },
  646. "machine_max_jerk_z":
  647. {
  648. "label": "Default Z Jerk",
  649. "description": "Default jerk for the motor of the Z-direction.",
  650. "unit": "mm/s",
  651. "type": "float",
  652. "default_value": 0.4,
  653. "minimum_value": "0",
  654. "settable_per_mesh": false,
  655. "settable_per_extruder": false,
  656. "settable_per_meshgroup": false
  657. },
  658. "machine_max_jerk_e":
  659. {
  660. "label": "Default Filament Jerk",
  661. "description": "Default jerk for the motor of the filament.",
  662. "unit": "mm/s",
  663. "type": "float",
  664. "default_value": 5.0,
  665. "minimum_value": "0",
  666. "settable_per_mesh": false,
  667. "settable_per_extruder": false,
  668. "settable_per_meshgroup": false
  669. },
  670. "machine_steps_per_mm_x":
  671. {
  672. "label": "Steps per Millimeter (X)",
  673. "description": "How many steps of the stepper motor will result in one millimeter of movement in the X direction.",
  674. "type": "float",
  675. "default_value": 50,
  676. "minimum_value": "0.0000001",
  677. "settable_per_mesh": false,
  678. "settable_per_extruder": true
  679. },
  680. "machine_steps_per_mm_y":
  681. {
  682. "label": "Steps per Millimeter (Y)",
  683. "description": "How many steps of the stepper motor will result in one millimeter of movement in the Y direction.",
  684. "type": "float",
  685. "default_value": 50,
  686. "minimum_value": "0.0000001",
  687. "settable_per_mesh": false,
  688. "settable_per_extruder": true
  689. },
  690. "machine_steps_per_mm_z":
  691. {
  692. "label": "Steps per Millimeter (Z)",
  693. "description": "How many steps of the stepper motor will result in one millimeter of movement in the Z direction.",
  694. "type": "float",
  695. "default_value": 50,
  696. "minimum_value": "0.0000001",
  697. "settable_per_mesh": false,
  698. "settable_per_extruder": true
  699. },
  700. "machine_steps_per_mm_e":
  701. {
  702. "label": "Steps per Millimeter (E)",
  703. "description": "How many steps of the stepper motors will result in moving the feeder wheel by one millimeter around its circumference.",
  704. "type": "float",
  705. "default_value": 1600,
  706. "minimum_value": "0.0000001",
  707. "settable_per_mesh": false,
  708. "settable_per_extruder": true
  709. },
  710. "machine_endstop_positive_direction_x":
  711. {
  712. "label": "X Endstop in Positive Direction",
  713. "description": "Whether the endstop of the X axis is in the positive direction (high X coordinate) or negative (low X coordinate).",
  714. "type": "bool",
  715. "default_value": false,
  716. "settable_per_mesh": false,
  717. "settable_per_extruder": true
  718. },
  719. "machine_endstop_positive_direction_y":
  720. {
  721. "label": "Y Endstop in Positive Direction",
  722. "description": "Whether the endstop of the Y axis is in the positive direction (high Y coordinate) or negative (low Y coordinate).",
  723. "type": "bool",
  724. "default_value": false,
  725. "settable_per_mesh": false,
  726. "settable_per_extruder": true
  727. },
  728. "machine_endstop_positive_direction_z":
  729. {
  730. "label": "Z Endstop in Positive Direction",
  731. "description": "Whether the endstop of the Z axis is in the positive direction (high Z coordinate) or negative (low Z coordinate).",
  732. "type": "bool",
  733. "default_value": true,
  734. "settable_per_mesh": false,
  735. "settable_per_extruder": true
  736. },
  737. "machine_minimum_feedrate":
  738. {
  739. "label": "Minimum Feedrate",
  740. "description": "The minimal movement speed of the print head.",
  741. "unit": "mm/s",
  742. "type": "float",
  743. "default_value": 0.0,
  744. "settable_per_mesh": false,
  745. "settable_per_extruder": false,
  746. "settable_per_meshgroup": false
  747. },
  748. "machine_feeder_wheel_diameter":
  749. {
  750. "label": "Feeder Wheel Diameter",
  751. "description": "The diameter of the wheel that drives the material in the feeder.",
  752. "unit": "mm",
  753. "type": "float",
  754. "default_value": 10.0,
  755. "settable_per_mesh": false,
  756. "settable_per_extruder": true
  757. },
  758. "machine_scale_fan_speed_zero_to_one":
  759. {
  760. "label": "Scale Fan Speed To 0-1",
  761. "description": "Scale the fan speed to be between 0 and 1 instead of between 0 and 256.",
  762. "type": "bool",
  763. "default_value": false,
  764. "settable_per_mesh": false,
  765. "settable_per_extruder": false,
  766. "settable_per_meshgroup": false
  767. }
  768. }
  769. },
  770. "resolution":
  771. {
  772. "label": "Quality",
  773. "type": "category",
  774. "icon": "PrintQuality",
  775. "description": "All settings that influence the resolution of the print. These settings have a large impact on the quality (and print time)",
  776. "children":
  777. {
  778. "layer_height":
  779. {
  780. "label": "Layer Height",
  781. "description": "The height of each layer in mm. Higher values produce faster prints in lower resolution, lower values produce slower prints in higher resolution.",
  782. "unit": "mm",
  783. "type": "float",
  784. "default_value": 0.1,
  785. "minimum_value": "0.001",
  786. "minimum_value_warning": "0.04",
  787. "maximum_value_warning": "0.8 * min(extruderValues('machine_nozzle_size'))",
  788. "settable_per_mesh": false,
  789. "settable_per_extruder": false
  790. },
  791. "layer_height_0":
  792. {
  793. "label": "Initial Layer Height",
  794. "description": "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier.",
  795. "unit": "mm",
  796. "type": "float",
  797. "default_value": 0.3,
  798. "resolve": "min(extruderValues('layer_height_0'))",
  799. "minimum_value": "0.001",
  800. "minimum_value_warning": "0.1",
  801. "maximum_value_warning": "0.8 * min(extruderValues('machine_nozzle_size'))",
  802. "settable_per_mesh": false,
  803. "settable_per_extruder": false
  804. },
  805. "line_width":
  806. {
  807. "label": "Line Width",
  808. "description": "Width of a single line. Generally, the width of each line should correspond to the width of the nozzle. However, slightly reducing this value could produce better prints.",
  809. "unit": "mm",
  810. "minimum_value": "0.001",
  811. "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size",
  812. "maximum_value_warning": "2 * machine_nozzle_size",
  813. "default_value": 0.4,
  814. "type": "float",
  815. "value": "machine_nozzle_size",
  816. "settable_per_mesh": true,
  817. "children":
  818. {
  819. "wall_line_width":
  820. {
  821. "label": "Wall Line Width",
  822. "description": "Width of a single wall line.",
  823. "unit": "mm",
  824. "minimum_value": "0.001",
  825. "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size",
  826. "maximum_value_warning": "2 * machine_nozzle_size",
  827. "value": "line_width",
  828. "default_value": 0.4,
  829. "type": "float",
  830. "limit_to_extruder": "wall_0_extruder_nr if wall_x_extruder_nr == wall_0_extruder_nr else -1",
  831. "settable_per_mesh": true,
  832. "children":
  833. {
  834. "wall_line_width_0":
  835. {
  836. "label": "Outer Wall Line Width",
  837. "description": "Width of the outermost wall line. By lowering this value, higher levels of detail can be printed.",
  838. "unit": "mm",
  839. "minimum_value": "0.001",
  840. "minimum_value_warning": "(0.1 + 0.4 * machine_nozzle_size) if inset_direction == \"outside_in\" else 0.1 * machine_nozzle_size",
  841. "maximum_value_warning": "2 * machine_nozzle_size",
  842. "default_value": 0.4,
  843. "value": "wall_line_width",
  844. "type": "float",
  845. "limit_to_extruder": "wall_0_extruder_nr",
  846. "settable_per_mesh": true
  847. },
  848. "wall_line_width_x":
  849. {
  850. "label": "Inner Wall(s) Line Width",
  851. "description": "Width of a single wall line for all wall lines except the outermost one.",
  852. "unit": "mm",
  853. "minimum_value": "0.001",
  854. "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size",
  855. "maximum_value_warning": "2 * machine_nozzle_size",
  856. "default_value": 0.4,
  857. "value": "wall_line_width",
  858. "type": "float",
  859. "limit_to_extruder": "wall_x_extruder_nr",
  860. "settable_per_mesh": true
  861. }
  862. }
  863. },
  864. "skin_line_width":
  865. {
  866. "label": "Top/Bottom Line Width",
  867. "description": "Width of a single top/bottom line.",
  868. "unit": "mm",
  869. "minimum_value": "0.001",
  870. "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size",
  871. "maximum_value_warning": "2 * machine_nozzle_size",
  872. "default_value": 0.4,
  873. "type": "float",
  874. "value": "line_width",
  875. "enabled": "top_layers > 0 or bottom_layers > 0",
  876. "limit_to_extruder": "top_bottom_extruder_nr",
  877. "settable_per_mesh": true
  878. },
  879. "infill_line_width":
  880. {
  881. "label": "Infill Line Width",
  882. "description": "Width of a single infill line.",
  883. "unit": "mm",
  884. "minimum_value": "0.001",
  885. "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size",
  886. "maximum_value_warning": "3 * machine_nozzle_size",
  887. "default_value": 0.4,
  888. "type": "float",
  889. "value": "line_width",
  890. "enabled": "infill_sparse_density > 0",
  891. "limit_to_extruder": "infill_extruder_nr",
  892. "settable_per_mesh": true
  893. },
  894. "skirt_brim_line_width":
  895. {
  896. "label": "Skirt/Brim Line Width",
  897. "description": "Width of a single skirt or brim line.",
  898. "unit": "mm",
  899. "minimum_value": "0.001",
  900. "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size",
  901. "maximum_value_warning": "3 * machine_nozzle_size",
  902. "default_value": 0.4,
  903. "type": "float",
  904. "value": "line_width",
  905. "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled')",
  906. "settable_per_mesh": false,
  907. "settable_per_extruder": true
  908. },
  909. "support_line_width":
  910. {
  911. "label": "Support Line Width",
  912. "description": "Width of a single support structure line.",
  913. "unit": "mm",
  914. "minimum_value": "0.001",
  915. "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size",
  916. "maximum_value_warning": "3 * machine_nozzle_size",
  917. "default_value": 0.4,
  918. "type": "float",
  919. "enabled": "(support_enable or support_meshes_present)",
  920. "value": "line_width",
  921. "limit_to_extruder": "support_infill_extruder_nr",
  922. "settable_per_mesh": false,
  923. "settable_per_extruder": true
  924. },
  925. "support_interface_line_width":
  926. {
  927. "label": "Support Interface Line Width",
  928. "description": "Width of a single line of support roof or floor.",
  929. "unit": "mm",
  930. "default_value": 0.4,
  931. "minimum_value": "0.001",
  932. "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size",
  933. "maximum_value_warning": "2 * machine_nozzle_size",
  934. "type": "float",
  935. "enabled": "(support_enable or support_meshes_present) and support_interface_enable",
  936. "limit_to_extruder": "support_interface_extruder_nr",
  937. "value": "line_width",
  938. "settable_per_mesh": false,
  939. "settable_per_extruder": true,
  940. "children":
  941. {
  942. "support_roof_line_width":
  943. {
  944. "label": "Support Roof Line Width",
  945. "description": "Width of a single support roof line.",
  946. "unit": "mm",
  947. "default_value": 0.4,
  948. "minimum_value": "0.001",
  949. "minimum_value_warning": "0.4 * machine_nozzle_size",
  950. "maximum_value_warning": "2 * machine_nozzle_size",
  951. "type": "float",
  952. "enabled": "(support_enable or support_meshes_present) and support_roof_enable",
  953. "limit_to_extruder": "support_roof_extruder_nr",
  954. "value": "extruderValue(support_roof_extruder_nr, 'support_interface_line_width')",
  955. "settable_per_mesh": false,
  956. "settable_per_extruder": true
  957. },
  958. "support_bottom_line_width":
  959. {
  960. "label": "Support Floor Line Width",
  961. "description": "Width of a single support floor line.",
  962. "unit": "mm",
  963. "default_value": 0.4,
  964. "minimum_value": "0.001",
  965. "minimum_value_warning": "0.4 * machine_nozzle_size",
  966. "maximum_value_warning": "2 * machine_nozzle_size",
  967. "type": "float",
  968. "enabled": "(support_enable or support_meshes_present) and support_bottom_enable",
  969. "limit_to_extruder": "support_bottom_extruder_nr",
  970. "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_line_width')",
  971. "settable_per_mesh": false,
  972. "settable_per_extruder": true
  973. }
  974. }
  975. },
  976. "prime_tower_line_width":
  977. {
  978. "label": "Prime Tower Line Width",
  979. "description": "Width of a single prime tower line.",
  980. "type": "float",
  981. "unit": "mm",
  982. "enabled": "prime_tower_enable",
  983. "default_value": 0.4,
  984. "value": "line_width",
  985. "minimum_value": "0.001",
  986. "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size",
  987. "maximum_value_warning": "2 * machine_nozzle_size",
  988. "settable_per_mesh": false,
  989. "settable_per_extruder": true
  990. }
  991. }
  992. },
  993. "initial_layer_line_width_factor":
  994. {
  995. "label": "Initial Layer Line Width",
  996. "description": "Multiplier of the line width on the first layer. Increasing this could improve bed adhesion.",
  997. "type": "float",
  998. "unit": "%",
  999. "default_value": 100.0,
  1000. "minimum_value": "0.001",
  1001. "maximum_value_warning": "150",
  1002. "settable_per_mesh": false,
  1003. "settable_per_extruder": true
  1004. }
  1005. }
  1006. },
  1007. "shell":
  1008. {
  1009. "label": "Walls",
  1010. "icon": "PrintShell",
  1011. "description": "Shell",
  1012. "type": "category",
  1013. "children":
  1014. {
  1015. "wall_extruder_nr":
  1016. {
  1017. "label": "Wall Extruder",
  1018. "description": "The extruder train used for printing the walls. This is used in multi-extrusion.",
  1019. "type": "optional_extruder",
  1020. "default_value": "-1",
  1021. "settable_per_mesh": false,
  1022. "settable_per_extruder": false,
  1023. "settable_per_meshgroup": true,
  1024. "settable_globally": true,
  1025. "enabled": "extruders_enabled_count > 1",
  1026. "children":
  1027. {
  1028. "wall_0_extruder_nr":
  1029. {
  1030. "label": "Outer Wall Extruder",
  1031. "description": "The extruder train used for printing the outer wall. This is used in multi-extrusion.",
  1032. "type": "optional_extruder",
  1033. "value": "wall_extruder_nr",
  1034. "default_value": "-1",
  1035. "settable_per_mesh": false,
  1036. "settable_per_extruder": false,
  1037. "settable_per_meshgroup": true,
  1038. "settable_globally": true,
  1039. "enabled": "extruders_enabled_count > 1"
  1040. },
  1041. "wall_x_extruder_nr":
  1042. {
  1043. "label": "Inner Wall Extruder",
  1044. "description": "The extruder train used for printing the inner walls. This is used in multi-extrusion.",
  1045. "type": "optional_extruder",
  1046. "value": "wall_extruder_nr",
  1047. "default_value": "-1",
  1048. "settable_per_mesh": false,
  1049. "settable_per_extruder": false,
  1050. "settable_per_meshgroup": true,
  1051. "settable_globally": true,
  1052. "enabled": "extruders_enabled_count > 1"
  1053. }
  1054. }
  1055. },
  1056. "wall_thickness":
  1057. {
  1058. "label": "Wall Thickness",
  1059. "description": "The thickness of the walls in the horizontal direction. This value divided by the wall line width defines the number of walls.",
  1060. "unit": "mm",
  1061. "default_value": 0.8,
  1062. "value": "wall_line_width_0 if magic_spiralize else 0.8",
  1063. "minimum_value": "0",
  1064. "minimum_value_warning": "line_width",
  1065. "maximum_value_warning": "10 * line_width",
  1066. "maximum_value": "999999 * line_width",
  1067. "type": "float",
  1068. "limit_to_extruder": "wall_x_extruder_nr",
  1069. "settable_per_mesh": true,
  1070. "children":
  1071. {
  1072. "wall_line_count":
  1073. {
  1074. "label": "Wall Line Count",
  1075. "description": "The number of walls. When calculated by the wall thickness, this value is rounded to a whole number.",
  1076. "default_value": 2,
  1077. "minimum_value": "0",
  1078. "minimum_value_warning": "1",
  1079. "maximum_value_warning": "10",
  1080. "maximum_value": "999999",
  1081. "type": "int",
  1082. "value": "1 if magic_spiralize else max(1, round((wall_thickness - wall_line_width_0) / wall_line_width_x) + 1) if wall_thickness != 0 else 0",
  1083. "limit_to_extruder": "wall_x_extruder_nr",
  1084. "settable_per_mesh": true
  1085. }
  1086. }
  1087. },
  1088. "wall_transition_length":
  1089. {
  1090. "label": "Wall Transition Length",
  1091. "description": "When transitioning between different numbers of walls as the part becomes thinner, a certain amount of space is allotted to split or join the wall lines.",
  1092. "type": "float",
  1093. "unit": "mm",
  1094. "default_value": 0.4,
  1095. "value": "line_width",
  1096. "minimum_value": "0.001",
  1097. "minimum_value_warning": "0.5 * line_width",
  1098. "maximum_value_warning": "2 * line_width",
  1099. "maximum_value": "min_bead_width * 3 * math.pi"
  1100. },
  1101. "wall_distribution_count":
  1102. {
  1103. "label": "Wall Distribution Count",
  1104. "description": "The number of walls, counted from the center, over which the variation needs to be spread. Lower values mean that the outer walls don't change in width.",
  1105. "type": "int",
  1106. "maximum_value": "999999",
  1107. "default_value": 1,
  1108. "minimum_value": "1"
  1109. },
  1110. "wall_transition_angle":
  1111. {
  1112. "label": "Wall Transitioning Threshold Angle",
  1113. "description": "When to create transitions between even and odd numbers of walls. A wedge shape with an angle greater than this setting will not have transitions and no walls will be printed in the center to fill the remaining space. Reducing this setting reduces the number and length of these center walls, but may leave gaps or overextrude.",
  1114. "type": "float",
  1115. "unit": "\u00b0",
  1116. "default_value": 10,
  1117. "minimum_value": "1",
  1118. "minimum_value_warning": "5",
  1119. "maximum_value_warning": "50",
  1120. "maximum_value": "59"
  1121. },
  1122. "wall_transition_filter_distance":
  1123. {
  1124. "label": "Wall Transitioning Filter Distance",
  1125. "description": "If it would be transitioning back and forth between different numbers of walls in quick succession, don't transition at all. Remove transitions if they are closer together than this distance.",
  1126. "type": "float",
  1127. "unit": "mm",
  1128. "value": "100",
  1129. "enabled": false,
  1130. "default_value": 100,
  1131. "minimum_value": "wall_transition_length",
  1132. "minimum_value_warning": "math.cos(wall_transition_angle / 180 * math.pi) * wall_line_width_x",
  1133. "maximum_value": "999999"
  1134. },
  1135. "wall_transition_filter_deviation":
  1136. {
  1137. "label": "Wall Transitioning Filter Margin",
  1138. "description": "Prevent transitioning back and forth between one extra wall and one less. This margin extends the range of line widths which follow to [Minimum Wall Line Width - Margin, 2 * Minimum Wall Line Width + Margin]. Increasing this margin reduces the number of transitions, which reduces the number of extrusion starts/stops and travel time. However, large line width variation can lead to under- or overextrusion problems.",
  1139. "type": "float",
  1140. "unit": "mm",
  1141. "default_value": 0.1,
  1142. "value": ".25 * machine_nozzle_size",
  1143. "minimum_value": "0",
  1144. "minimum_value_warning": ".01",
  1145. "maximum_value_warning": "machine_nozzle_size"
  1146. },
  1147. "wall_0_wipe_dist":
  1148. {
  1149. "label": "Outer Wall Wipe Distance",
  1150. "description": "Distance of a travel move inserted after the outer wall, to hide the Z seam better.",
  1151. "unit": "mm",
  1152. "type": "float",
  1153. "default_value": 0.2,
  1154. "value": "machine_nozzle_size / 2",
  1155. "minimum_value": "0",
  1156. "maximum_value_warning": "machine_nozzle_size * 2",
  1157. "limit_to_extruder": "wall_0_extruder_nr",
  1158. "settable_per_mesh": true
  1159. },
  1160. "wall_0_inset":
  1161. {
  1162. "label": "Outer Wall Inset",
  1163. "description": "Inset applied to the path of the outer wall. If the outer wall is smaller than the nozzle, and printed after the inner walls, use this offset to get the hole in the nozzle to overlap with the inner walls instead of the outside of the model.",
  1164. "unit": "mm",
  1165. "type": "float",
  1166. "default_value": 0.0,
  1167. "value": "(machine_nozzle_size - wall_line_width_0) / 2 if (wall_line_width_0 < machine_nozzle_size and inset_direction != \"outside_in\") else 0",
  1168. "minimum_value_warning": "0",
  1169. "maximum_value_warning": "machine_nozzle_size",
  1170. "limit_to_extruder": "wall_0_extruder_nr",
  1171. "settable_per_mesh": true
  1172. },
  1173. "optimize_wall_printing_order":
  1174. {
  1175. "label": "Optimize Wall Printing Order",
  1176. "description": "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization. First layer is not optimized when choosing brim as build plate adhesion type.",
  1177. "type": "bool",
  1178. "default_value": true,
  1179. "settable_per_mesh": true
  1180. },
  1181. "inset_direction":
  1182. {
  1183. "label": "Wall Ordering",
  1184. "description": "Determines the order in which walls are printed. Printing outer walls earlier helps with dimensional accuracy, as faults from inner walls cannot propagate to the outside. However printing them later allows them to stack better when overhangs are printed. When there is an uneven amount of total innner walls, the 'center last line' is always printed last.",
  1185. "type": "enum",
  1186. "options":
  1187. {
  1188. "inside_out": "Inside To Outside",
  1189. "outside_in": "Outside To Inside"
  1190. },
  1191. "default_value": "inside_out",
  1192. "settable_per_mesh": true
  1193. },
  1194. "alternate_extra_perimeter":
  1195. {
  1196. "label": "Alternate Extra Wall",
  1197. "description": "Prints an extra wall at every other layer. This way infill gets caught between these extra walls, resulting in stronger prints.",
  1198. "type": "bool",
  1199. "default_value": false,
  1200. "limit_to_extruder": "infill_extruder_nr",
  1201. "settable_per_mesh": true
  1202. },
  1203. "min_wall_line_width":
  1204. {
  1205. "label": "Minimum Wall Line Width",
  1206. "description": "For thin structures around once or twice the nozzle size, the line widths need to be altered to adhere to the thickness of the model. This setting controls the minimum line width allowed for the walls. The minimum line widths inherently also determine the maximum line widths, since we transition from N to N+1 walls at some geometry thickness where the N walls are wide and the N+1 walls are narrow. The widest possible wall line is twice the Minimum Wall Line Width.",
  1207. "unit": "mm",
  1208. "minimum_value_warning": ".5 * max(wall_line_width_0, wall_line_width_x)",
  1209. "maximum_value_warning": "min(wall_line_width_0, wall_line_width_x)",
  1210. "default_value": 0.3,
  1211. "value": "machine_nozzle_size * .85",
  1212. "type": "float",
  1213. "settable_per_mesh": true,
  1214. "children":
  1215. {
  1216. "min_even_wall_line_width":
  1217. {
  1218. "label": "Minimum Even Wall Line Width",
  1219. "description": "The minimum line width for normal polygonal walls. This setting determines at which model thickness we switch from printing a single thin wall line, to printing two wall lines. A higher Minimum Even Wall Line Width leads to a higher maximum odd wall line width. The maximum even wall line width is calculated as Outer Wall Line Width + 0.5 * Minimum Odd Wall Line Width.",
  1220. "unit": "mm",
  1221. "minimum_value_warning": ".5 * max(wall_line_width_0, wall_line_width_x)",
  1222. "maximum_value_warning": "min(wall_line_width_0, wall_line_width_x)",
  1223. "default_value": 0.3,
  1224. "value": "min_wall_line_width",
  1225. "type": "float",
  1226. "settable_per_mesh": true
  1227. },
  1228. "min_odd_wall_line_width":
  1229. {
  1230. "label": "Minimum Odd Wall Line Width",
  1231. "description": "The minimum line width for middle line gap filler polyline walls. This setting determines at which model thickness we switch from printing two wall lines, to printing two outer walls and a single central wall in the middle. A higher Minimum Odd Wall Line Width leads to a higher maximum even wall line width. The maximum odd wall line width is calculated as 2 * Minimum Even Wall Line Width.",
  1232. "unit": "mm",
  1233. "minimum_value_warning": ".5 * max(wall_line_width_0, wall_line_width_x)",
  1234. "maximum_value_warning": "min(wall_line_width_0, wall_line_width_x)",
  1235. "default_value": 0.3,
  1236. "value": "min_wall_line_width",
  1237. "type": "float",
  1238. "settable_per_mesh": true
  1239. }
  1240. }
  1241. },
  1242. "fill_outline_gaps":
  1243. {
  1244. "label": "Print Thin Walls",
  1245. "description": "Print pieces of the model which are horizontally thinner than the nozzle size.",
  1246. "type": "bool",
  1247. "default_value": true,
  1248. "limit_to_extruder": "wall_0_extruder_nr",
  1249. "settable_per_mesh": true
  1250. },
  1251. "min_feature_size":
  1252. {
  1253. "label": "Minimum Feature Size",
  1254. "description": "Minimum thickness of thin features. Model features that are thinner than this value will not be printed, while features thicker than the Minimum Feature Size will be widened to the Minimum Wall Line Width.",
  1255. "unit": "mm",
  1256. "default_value": 0.1,
  1257. "value": "wall_line_width_0 / 4",
  1258. "minimum_value": "0",
  1259. "maximum_value": "wall_line_width_0",
  1260. "type": "float",
  1261. "limit_to_extruder": "wall_0_extruder_nr",
  1262. "enabled": "fill_outline_gaps",
  1263. "settable_per_mesh": true
  1264. },
  1265. "min_bead_width":
  1266. {
  1267. "label": "Minimum Thin Wall Line Width",
  1268. "description": "Width of the wall that will replace thin features (according to the Minimum Feature Size) of the model. If the Minimum Wall Line Width is thinner than the thickness of the feature, the wall will become as thick as the feature itself.",
  1269. "unit": "mm",
  1270. "value": "min_wall_line_width",
  1271. "default_value": 0.2,
  1272. "minimum_value": "0.001",
  1273. "minimum_value_warning": "min_feature_size",
  1274. "maximum_value_warning": "wall_line_width_0",
  1275. "type": "float",
  1276. "limit_to_extruder": "wall_0_extruder_nr",
  1277. "enabled": "fill_outline_gaps",
  1278. "settable_per_mesh": true
  1279. },
  1280. "xy_offset":
  1281. {
  1282. "label": "Horizontal Expansion",
  1283. "description": "Amount of offset applied to all polygons in each layer. Positive values can compensate for too big holes; negative values can compensate for too small holes.",
  1284. "unit": "mm",
  1285. "type": "float",
  1286. "minimum_value_warning": "-1",
  1287. "maximum_value_warning": "1",
  1288. "default_value": 0,
  1289. "limit_to_extruder": "wall_0_extruder_nr",
  1290. "settable_per_mesh": true
  1291. },
  1292. "xy_offset_layer_0":
  1293. {
  1294. "label": "Initial Layer Horizontal Expansion",
  1295. "description": "Amount of offset applied to all polygons in the first layer. A negative value can compensate for squishing of the first layer known as \"elephant's foot\".",
  1296. "unit": "mm",
  1297. "type": "float",
  1298. "minimum_value_warning": "-1",
  1299. "maximum_value_warning": "1",
  1300. "default_value": 0,
  1301. "value": "xy_offset",
  1302. "limit_to_extruder": "wall_0_extruder_nr",
  1303. "settable_per_mesh": true
  1304. },
  1305. "hole_xy_offset":
  1306. {
  1307. "label": "Hole Horizontal Expansion",
  1308. "description": "When greater than zero, the Hole Horizontal Expansion is the amount of offset applied to all holes in each layer. Positive values increase the size of the holes, negative values reduce the size of the holes. When this setting is enabled it can be further tuned with Hole Horizontal Expansion Max Diameter.",
  1309. "unit": "mm",
  1310. "type": "float",
  1311. "minimum_value_warning": "-1",
  1312. "maximum_value_warning": "1",
  1313. "default_value": 0,
  1314. "limit_to_extruder": "wall_0_extruder_nr",
  1315. "settable_per_mesh": true
  1316. },
  1317. "hole_xy_offset_max_diameter":
  1318. {
  1319. "label": "Hole Horizontal Expansion Max Diameter",
  1320. "description": "When greater than zero, the Hole Horizontal Expansion is gradually applied on small holes (small holes are expanded more). When set to zero the Hole Horizontal Expansion will be applied to all holes. Holes larger than the Hole Horizontal Expansion Max Diameter are not expanded.",
  1321. "unit": "mm",
  1322. "type": "float",
  1323. "default_value": 0,
  1324. "minimum_value": "0",
  1325. "enabled": "hole_xy_offset > 0",
  1326. "limit_to_extruder": "wall_0_extruder_nr",
  1327. "settable_per_mesh": true
  1328. },
  1329. "z_seam_type":
  1330. {
  1331. "label": "Z Seam Alignment",
  1332. "description": "Starting point of each path in a layer. When paths in consecutive layers start at the same point a vertical seam may show on the print. When aligning these near a user specified location, the seam is easiest to remove. When placed randomly the inaccuracies at the paths' start will be less noticeable. When taking the shortest path the print will be quicker.",
  1333. "type": "enum",
  1334. "options":
  1335. {
  1336. "back": "User Specified",
  1337. "shortest": "Shortest",
  1338. "random": "Random",
  1339. "sharpest_corner": "Sharpest Corner"
  1340. },
  1341. "default_value": "sharpest_corner",
  1342. "limit_to_extruder": "wall_0_extruder_nr",
  1343. "settable_per_mesh": true
  1344. },
  1345. "z_seam_on_vertex":
  1346. {
  1347. "label": "Z Seam On Vertex",
  1348. "description": "Place the z-seam on a polygon vertex. Switching this off can place the seam between vertices as well. (Keep in mind that this won't override the restrictions on placing the seam on an unsupported overhang.)",
  1349. "type": "bool",
  1350. "default_value": true,
  1351. "settable_per_mesh": true,
  1352. "enabled": "z_seam_type == 'back' or z_seam_type == 'shortest'"
  1353. },
  1354. "z_seam_position":
  1355. {
  1356. "label": "Z Seam Position",
  1357. "description": "The position near where to start printing each part in a layer.",
  1358. "type": "enum",
  1359. "options":
  1360. {
  1361. "backleft": "Back Left",
  1362. "back": "Back",
  1363. "backright": "Back Right",
  1364. "right": "Right",
  1365. "frontright": "Front Right",
  1366. "front": "Front",
  1367. "frontleft": "Front Left",
  1368. "left": "Left"
  1369. },
  1370. "enabled": "z_seam_type == 'back'",
  1371. "default_value": "back",
  1372. "limit_to_extruder": "wall_0_extruder_nr",
  1373. "settable_per_mesh": true,
  1374. "children":
  1375. {
  1376. "z_seam_x":
  1377. {
  1378. "label": "Z Seam X",
  1379. "description": "The X coordinate of the position near where to start printing each part in a layer.",
  1380. "unit": "mm",
  1381. "type": "float",
  1382. "default_value": 100.0,
  1383. "value": "(0 if (z_seam_position == 'frontleft' or z_seam_position == 'left' or z_seam_position == 'backleft') else machine_width / 2 if (z_seam_position == 'front' or z_seam_position == 'back') else machine_width) - (machine_width / 2 if z_seam_relative or machine_center_is_zero else 0)",
  1384. "enabled": "z_seam_type == 'back'",
  1385. "limit_to_extruder": "wall_0_extruder_nr",
  1386. "settable_per_mesh": true
  1387. },
  1388. "z_seam_y":
  1389. {
  1390. "label": "Z Seam Y",
  1391. "description": "The Y coordinate of the position near where to start printing each part in a layer.",
  1392. "unit": "mm",
  1393. "type": "float",
  1394. "default_value": 100.0,
  1395. "value": "(0 if (z_seam_position == 'frontleft' or z_seam_position == 'front' or z_seam_position == 'frontright') else machine_depth / 2 if (z_seam_position == 'left' or z_seam_position == 'right') else machine_depth) - (machine_depth / 2 if z_seam_relative or machine_center_is_zero else 0)",
  1396. "enabled": "z_seam_type == 'back'",
  1397. "limit_to_extruder": "wall_0_extruder_nr",
  1398. "settable_per_mesh": true
  1399. }
  1400. }
  1401. },
  1402. "z_seam_corner":
  1403. {
  1404. "label": "Seam Corner Preference",
  1405. "description": "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate.",
  1406. "type": "enum",
  1407. "options":
  1408. {
  1409. "z_seam_corner_none": "None",
  1410. "z_seam_corner_inner": "Hide Seam",
  1411. "z_seam_corner_outer": "Expose Seam",
  1412. "z_seam_corner_any": "Hide or Expose Seam",
  1413. "z_seam_corner_weighted": "Smart Hiding"
  1414. },
  1415. "default_value": "z_seam_corner_inner",
  1416. "enabled": "z_seam_type != 'random'",
  1417. "limit_to_extruder": "wall_0_extruder_nr",
  1418. "settable_per_mesh": true
  1419. },
  1420. "z_seam_relative":
  1421. {
  1422. "label": "Z Seam Relative",
  1423. "description": "When enabled, the z seam coordinates are relative to each part's centre. When disabled, the coordinates define an absolute position on the build plate.",
  1424. "type": "bool",
  1425. "default_value": false,
  1426. "enabled": "z_seam_type == 'back'",
  1427. "limit_to_extruder": "wall_0_extruder_nr",
  1428. "settable_per_mesh": true
  1429. }
  1430. }
  1431. },
  1432. "top_bottom":
  1433. {
  1434. "label": "Top/Bottom",
  1435. "icon": "PrintTopBottom",
  1436. "description": "Top/Bottom",
  1437. "type": "category",
  1438. "children":
  1439. {
  1440. "roofing_extruder_nr":
  1441. {
  1442. "label": "Top Surface Skin Extruder",
  1443. "description": "The extruder train used for printing the top most skin. This is used in multi-extrusion.",
  1444. "type": "optional_extruder",
  1445. "default_value": "-1",
  1446. "value": "top_bottom_extruder_nr",
  1447. "settable_per_mesh": false,
  1448. "settable_per_extruder": false,
  1449. "settable_per_meshgroup": true,
  1450. "settable_globally": true,
  1451. "enabled": "extruders_enabled_count > 1 and max(extruderValues('roofing_layer_count')) > 0 and max(extruderValues('top_layers')) > 0"
  1452. },
  1453. "roofing_layer_count":
  1454. {
  1455. "label": "Top Surface Skin Layers",
  1456. "description": "The number of top most skin layers. Usually only one top most layer is sufficient to generate higher quality top surfaces.",
  1457. "default_value": 0,
  1458. "minimum_value": "0",
  1459. "maximum_value_warning": "top_layers - 1",
  1460. "type": "int",
  1461. "maximum_value": "999999",
  1462. "value": "0",
  1463. "limit_to_extruder": "roofing_extruder_nr",
  1464. "settable_per_mesh": true,
  1465. "enabled": "top_layers > 0",
  1466. "children":
  1467. {
  1468. "roofing_line_width":
  1469. {
  1470. "label": "Top Surface Skin Line Width",
  1471. "description": "Width of a single line of the areas at the top of the print.",
  1472. "unit": "mm",
  1473. "minimum_value": "0.001",
  1474. "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size",
  1475. "maximum_value_warning": "2 * machine_nozzle_size",
  1476. "default_value": 0.4,
  1477. "type": "float",
  1478. "value": "skin_line_width",
  1479. "limit_to_extruder": "roofing_extruder_nr",
  1480. "settable_per_mesh": true,
  1481. "enabled": "roofing_layer_count > 0 and top_layers > 0"
  1482. },
  1483. "roofing_pattern":
  1484. {
  1485. "label": "Top Surface Skin Pattern",
  1486. "description": "The pattern of the top most layers.",
  1487. "type": "enum",
  1488. "options":
  1489. {
  1490. "lines": "Lines",
  1491. "concentric": "Concentric",
  1492. "zigzag": "Zig Zag"
  1493. },
  1494. "default_value": "lines",
  1495. "value": "top_bottom_pattern",
  1496. "limit_to_extruder": "roofing_extruder_nr",
  1497. "settable_per_mesh": true,
  1498. "enabled": "roofing_layer_count > 0 and top_layers > 0"
  1499. },
  1500. "roofing_monotonic":
  1501. {
  1502. "label": "Monotonic Top Surface Order",
  1503. "description": "Print top surface lines in an ordering that causes them to always overlap with adjacent lines in a single direction. This takes slightly more time to print, but makes flat surfaces look more consistent.",
  1504. "type": "bool",
  1505. "value": true,
  1506. "default_value": true,
  1507. "enabled": "roofing_layer_count > 0 and top_layers > 0 and roofing_pattern != 'concentric'",
  1508. "limit_to_extruder": "roofing_extruder_nr",
  1509. "settable_per_mesh": true
  1510. },
  1511. "roofing_angles":
  1512. {
  1513. "label": "Top Surface Skin Line Directions",
  1514. "description": "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees).",
  1515. "type": "[int]",
  1516. "default_value": "[ ]",
  1517. "value": "skin_angles",
  1518. "enabled": "roofing_pattern != 'concentric' and roofing_layer_count > 0 and top_layers > 0",
  1519. "limit_to_extruder": "roofing_extruder_nr",
  1520. "settable_per_mesh": true
  1521. }
  1522. }
  1523. },
  1524. "top_bottom_extruder_nr":
  1525. {
  1526. "label": "Top/Bottom Extruder",
  1527. "description": "The extruder train used for printing the top and bottom skin. This is used in multi-extrusion.",
  1528. "type": "optional_extruder",
  1529. "default_value": "-1",
  1530. "settable_per_mesh": false,
  1531. "settable_per_extruder": false,
  1532. "settable_per_meshgroup": true,
  1533. "settable_globally": true,
  1534. "enabled": "extruders_enabled_count > 1"
  1535. },
  1536. "top_bottom_thickness":
  1537. {
  1538. "label": "Top/Bottom Thickness",
  1539. "description": "The thickness of the top/bottom layers in the print. This value divided by the layer height defines the number of top/bottom layers.",
  1540. "unit": "mm",
  1541. "default_value": 0.8,
  1542. "minimum_value": "0",
  1543. "minimum_value_warning": "0.6",
  1544. "maximum_value": "machine_height",
  1545. "type": "float",
  1546. "limit_to_extruder": "top_bottom_extruder_nr",
  1547. "settable_per_mesh": true,
  1548. "children":
  1549. {
  1550. "top_thickness":
  1551. {
  1552. "label": "Top Thickness",
  1553. "description": "The thickness of the top layers in the print. This value divided by the layer height defines the number of top layers.",
  1554. "unit": "mm",
  1555. "default_value": 0.8,
  1556. "minimum_value": "0",
  1557. "minimum_value_warning": "0.2 + resolveOrValue('layer_height')",
  1558. "maximum_value": "machine_height",
  1559. "type": "float",
  1560. "value": "top_bottom_thickness",
  1561. "limit_to_extruder": "top_bottom_extruder_nr",
  1562. "settable_per_mesh": true,
  1563. "children":
  1564. {
  1565. "top_layers":
  1566. {
  1567. "label": "Top Layers",
  1568. "description": "The number of top layers. When calculated by the top thickness, this value is rounded to a whole number.",
  1569. "default_value": 8,
  1570. "minimum_value": "0",
  1571. "maximum_value_warning": "100",
  1572. "maximum_value": "999999",
  1573. "type": "int",
  1574. "minimum_value_warning": "2",
  1575. "value": "0 if infill_sparse_density == 100 else math.ceil(round(top_thickness / resolveOrValue('layer_height'), 4))",
  1576. "limit_to_extruder": "top_bottom_extruder_nr",
  1577. "settable_per_mesh": true
  1578. }
  1579. }
  1580. },
  1581. "bottom_thickness":
  1582. {
  1583. "label": "Bottom Thickness",
  1584. "description": "The thickness of the bottom layers in the print. This value divided by the layer height defines the number of bottom layers.",
  1585. "unit": "mm",
  1586. "default_value": 0.6,
  1587. "minimum_value": "0",
  1588. "minimum_value_warning": "0.2 + resolveOrValue('layer_height')",
  1589. "type": "float",
  1590. "value": "top_bottom_thickness",
  1591. "maximum_value": "machine_height",
  1592. "limit_to_extruder": "top_bottom_extruder_nr",
  1593. "settable_per_mesh": true,
  1594. "children":
  1595. {
  1596. "bottom_layers":
  1597. {
  1598. "label": "Bottom Layers",
  1599. "description": "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number.",
  1600. "minimum_value": "0",
  1601. "minimum_value_warning": "2",
  1602. "default_value": 6,
  1603. "maximum_value": "999999",
  1604. "type": "int",
  1605. "value": "999999 if infill_sparse_density == 100 and not magic_spiralize else math.ceil(round(bottom_thickness / resolveOrValue('layer_height'), 4))",
  1606. "limit_to_extruder": "top_bottom_extruder_nr",
  1607. "settable_per_mesh": true
  1608. },
  1609. "initial_bottom_layers":
  1610. {
  1611. "label": "Initial Bottom Layers",
  1612. "description": "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number.",
  1613. "minimum_value": "0",
  1614. "minimum_value_warning": "2",
  1615. "maximum_value": "999999",
  1616. "default_value": 6,
  1617. "type": "int",
  1618. "value": "bottom_layers",
  1619. "limit_to_extruder": "top_bottom_extruder_nr",
  1620. "settable_per_mesh": true
  1621. }
  1622. }
  1623. }
  1624. }
  1625. },
  1626. "top_bottom_pattern":
  1627. {
  1628. "label": "Top/Bottom Pattern",
  1629. "description": "The pattern of the top/bottom layers.",
  1630. "type": "enum",
  1631. "options":
  1632. {
  1633. "lines": "Lines",
  1634. "concentric": "Concentric",
  1635. "zigzag": "Zig Zag"
  1636. },
  1637. "default_value": "lines",
  1638. "enabled": "top_layers > 0 or bottom_layers > 0",
  1639. "limit_to_extruder": "top_bottom_extruder_nr",
  1640. "settable_per_mesh": true
  1641. },
  1642. "top_bottom_pattern_0":
  1643. {
  1644. "label": "Bottom Pattern Initial Layer",
  1645. "description": "The pattern on the bottom of the print on the first layer.",
  1646. "type": "enum",
  1647. "options":
  1648. {
  1649. "lines": "Lines",
  1650. "concentric": "Concentric",
  1651. "zigzag": "Zig Zag"
  1652. },
  1653. "default_value": "lines",
  1654. "enabled": "top_layers > 0 or bottom_layers > 0",
  1655. "value": "top_bottom_pattern",
  1656. "limit_to_extruder": "top_bottom_extruder_nr",
  1657. "settable_per_mesh": true
  1658. },
  1659. "connect_skin_polygons":
  1660. {
  1661. "label": "Connect Top/Bottom Polygons",
  1662. "description": "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happen midway over infill this feature can reduce the top surface quality.",
  1663. "type": "bool",
  1664. "default_value": false,
  1665. "enabled": "((top_layers > 0 or bottom_layers > 0) and top_bottom_pattern == 'concentric') or (initial_bottom_layers > 0 and top_bottom_pattern_0 == 'concentric') or (roofing_layer_count > 0 and roofing_pattern == 'concentric')",
  1666. "limit_to_extruder": "top_bottom_extruder_nr",
  1667. "settable_per_mesh": true
  1668. },
  1669. "skin_monotonic":
  1670. {
  1671. "label": "Monotonic Top/Bottom Order",
  1672. "description": "Print top/bottom lines in an ordering that causes them to always overlap with adjacent lines in a single direction. This takes slightly more time to print, but makes flat surfaces look more consistent.",
  1673. "type": "bool",
  1674. "default_value": false,
  1675. "enabled": "(top_layers > 0 or bottom_layers > 0) and (top_bottom_pattern != 'concentric' or top_bottom_pattern_0 != 'concentric')",
  1676. "limit_to_extruder": "top_bottom_extruder_nr",
  1677. "settable_per_mesh": true
  1678. },
  1679. "skin_angles":
  1680. {
  1681. "label": "Top/Bottom Line Directions",
  1682. "description": "A list of integer line directions to use when the top/bottom layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees).",
  1683. "type": "[int]",
  1684. "default_value": "[ ]",
  1685. "enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'",
  1686. "limit_to_extruder": "top_bottom_extruder_nr",
  1687. "settable_per_mesh": true
  1688. },
  1689. "small_skin_width":
  1690. {
  1691. "label": "Small Top/Bottom Width",
  1692. "description": "Small top/bottom regions are filled with walls instead of the default top/bottom pattern. This helps to avoids jerky motions. Off for the topmost (air-exposed) layer by default (see 'Small Top/Bottom On Surface').",
  1693. "value": "skin_line_width * 2",
  1694. "default_value": 1,
  1695. "minimum_value": "0",
  1696. "maximum_value_warning": "skin_line_width * 10",
  1697. "type": "float",
  1698. "enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'",
  1699. "limit_to_extruder": "top_bottom_extruder_nr",
  1700. "settable_per_mesh": true,
  1701. "unit": "mm"
  1702. },
  1703. "small_skin_on_surface":
  1704. {
  1705. "label": "Small Top/Bottom On Surface",
  1706. "description": "Enable small (up to 'Small Top/Bottom Width') regions on the topmost skinned layer (exposed to air) to be filled with walls instead of the default pattern.",
  1707. "value": "False",
  1708. "default_value": false,
  1709. "type": "bool",
  1710. "enabled": "small_skin_width > 0 and top_layers > 0",
  1711. "limit_to_extruder": "top_bottom_extruder_nr",
  1712. "settable_per_mesh": true
  1713. },
  1714. "skin_no_small_gaps_heuristic":
  1715. {
  1716. "label": "No Skin in Z Gaps",
  1717. "description": "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air.",
  1718. "type": "bool",
  1719. "default_value": false,
  1720. "enabled": "top_layers > 0 or bottom_layers > 0",
  1721. "limit_to_extruder": "top_bottom_extruder_nr",
  1722. "settable_per_mesh": true
  1723. },
  1724. "skin_outline_count":
  1725. {
  1726. "label": "Extra Skin Wall Count",
  1727. "description": "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material.",
  1728. "value": "0 if top_bottom_pattern == 'concentric' and top_bottom_pattern_0 == 'concentric' and roofing_layer_count <= 0 else 1",
  1729. "default_value": 1,
  1730. "minimum_value": "0",
  1731. "maximum_value_warning": "10",
  1732. "maximum_value": "999999",
  1733. "type": "int",
  1734. "enabled": "(top_layers > 0 or bottom_layers > 0) and (top_bottom_pattern != 'concentric' or top_bottom_pattern_0 != 'concentric' or (roofing_layer_count > 0 and roofing_pattern != 'concentric'))",
  1735. "limit_to_extruder": "top_bottom_extruder_nr",
  1736. "settable_per_mesh": true
  1737. },
  1738. "ironing_enabled":
  1739. {
  1740. "label": "Enable Ironing",
  1741. "description": "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material.",
  1742. "type": "bool",
  1743. "default_value": false,
  1744. "limit_to_extruder": "top_bottom_extruder_nr",
  1745. "settable_per_mesh": true
  1746. },
  1747. "ironing_only_highest_layer":
  1748. {
  1749. "label": "Iron Only Highest Layer",
  1750. "description": "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish.",
  1751. "type": "bool",
  1752. "default_value": false,
  1753. "enabled": "ironing_enabled",
  1754. "limit_to_extruder": "top_bottom_extruder_nr",
  1755. "settable_per_mesh": true
  1756. },
  1757. "ironing_pattern":
  1758. {
  1759. "label": "Ironing Pattern",
  1760. "description": "The pattern to use for ironing top surfaces.",
  1761. "type": "enum",
  1762. "options":
  1763. {
  1764. "concentric": "Concentric",
  1765. "zigzag": "Zig Zag"
  1766. },
  1767. "default_value": "zigzag",
  1768. "enabled": "ironing_enabled",
  1769. "limit_to_extruder": "top_bottom_extruder_nr",
  1770. "settable_per_mesh": true
  1771. },
  1772. "ironing_monotonic":
  1773. {
  1774. "label": "Monotonic Ironing Order",
  1775. "description": "Print ironing lines in an ordering that causes them to always overlap with adjacent lines in a single direction. This takes slightly more time to print, but makes flat surfaces look more consistent.",
  1776. "type": "bool",
  1777. "default_value": false,
  1778. "enabled": "ironing_enabled and ironing_pattern != 'concentric'",
  1779. "limit_to_extruder": "top_bottom_extruder_nr",
  1780. "settable_per_mesh": true
  1781. },
  1782. "ironing_line_spacing":
  1783. {
  1784. "label": "Ironing Line Spacing",
  1785. "description": "The distance between the lines of ironing.",
  1786. "type": "float",
  1787. "unit": "mm",
  1788. "default_value": 0.1,
  1789. "minimum_value": "0.001",
  1790. "maximum_value_warning": "machine_nozzle_tip_outer_diameter",
  1791. "enabled": "ironing_enabled",
  1792. "limit_to_extruder": "top_bottom_extruder_nr",
  1793. "settable_per_mesh": true
  1794. },
  1795. "ironing_flow":
  1796. {
  1797. "label": "Ironing Flow",
  1798. "description": "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface.",
  1799. "type": "float",
  1800. "unit": "%",
  1801. "default_value": 10.0,
  1802. "minimum_value": "0",
  1803. "maximum_value_warning": "50",
  1804. "enabled": "ironing_enabled",
  1805. "limit_to_extruder": "top_bottom_extruder_nr",
  1806. "settable_per_mesh": true
  1807. },
  1808. "ironing_inset":
  1809. {
  1810. "label": "Ironing Inset",
  1811. "description": "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print.",
  1812. "type": "float",
  1813. "unit": "mm",
  1814. "default_value": 0.35,
  1815. "value": "wall_line_width_0 / 2 + (ironing_line_spacing - skin_line_width * (1.0 + ironing_flow / 100) / 2 if ironing_pattern == 'concentric' else skin_line_width * (1.0 - ironing_flow / 100) / 2)",
  1816. "minimum_value_warning": "0",
  1817. "maximum_value_warning": "wall_line_width_0",
  1818. "enabled": "ironing_enabled",
  1819. "limit_to_extruder": "top_bottom_extruder_nr",
  1820. "settable_per_mesh": true
  1821. },
  1822. "speed_ironing":
  1823. {
  1824. "label": "Ironing Speed",
  1825. "description": "The speed at which to pass over the top surface.",
  1826. "type": "float",
  1827. "unit": "mm/s",
  1828. "default_value": 20.0,
  1829. "value": "speed_topbottom * 20 / 30",
  1830. "minimum_value": "0.001",
  1831. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  1832. "maximum_value_warning": "100",
  1833. "enabled": "ironing_enabled",
  1834. "limit_to_extruder": "top_bottom_extruder_nr",
  1835. "settable_per_mesh": true
  1836. },
  1837. "acceleration_ironing":
  1838. {
  1839. "label": "Ironing Acceleration",
  1840. "description": "The acceleration with which ironing is performed.",
  1841. "unit": "mm/s\u00b2",
  1842. "type": "float",
  1843. "minimum_value": "0.1",
  1844. "minimum_value_warning": "100",
  1845. "maximum_value_warning": "10000",
  1846. "default_value": 3000,
  1847. "value": "acceleration_topbottom",
  1848. "enabled": "resolveOrValue('acceleration_enabled') and ironing_enabled",
  1849. "limit_to_extruder": "top_bottom_extruder_nr",
  1850. "settable_per_mesh": true
  1851. },
  1852. "jerk_ironing":
  1853. {
  1854. "label": "Ironing Jerk",
  1855. "description": "The maximum instantaneous velocity change while performing ironing.",
  1856. "unit": "mm/s",
  1857. "type": "float",
  1858. "minimum_value": "0",
  1859. "maximum_value_warning": "50",
  1860. "default_value": 20,
  1861. "value": "jerk_topbottom",
  1862. "enabled": "resolveOrValue('jerk_enabled') and ironing_enabled",
  1863. "limit_to_extruder": "top_bottom_extruder_nr",
  1864. "settable_per_mesh": true
  1865. },
  1866. "skin_overlap":
  1867. {
  1868. "label": "Skin Overlap Percentage",
  1869. "description": "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall.",
  1870. "unit": "%",
  1871. "type": "float",
  1872. "default_value": 5,
  1873. "minimum_value_warning": "-50",
  1874. "maximum_value_warning": "100",
  1875. "value": "5 if top_bottom_pattern != 'concentric' else 0",
  1876. "enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'",
  1877. "limit_to_extruder": "top_bottom_extruder_nr",
  1878. "settable_per_mesh": true,
  1879. "children":
  1880. {
  1881. "skin_overlap_mm":
  1882. {
  1883. "label": "Skin Overlap",
  1884. "description": "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall.",
  1885. "unit": "mm",
  1886. "type": "float",
  1887. "default_value": 0.02,
  1888. "minimum_value_warning": "-0.5 * machine_nozzle_size",
  1889. "maximum_value_warning": "machine_nozzle_size",
  1890. "value": "0.5 * (skin_line_width + (wall_line_width_x if wall_line_count > 1 else wall_line_width_0)) * skin_overlap / 100 if top_bottom_pattern != 'concentric' else 0",
  1891. "enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'",
  1892. "settable_per_mesh": true
  1893. }
  1894. }
  1895. },
  1896. "skin_preshrink":
  1897. {
  1898. "label": "Skin Removal Width",
  1899. "description": "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model.",
  1900. "unit": "mm",
  1901. "type": "float",
  1902. "default_value": 1,
  1903. "value": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x",
  1904. "minimum_value": "0",
  1905. "maximum_value_warning": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x",
  1906. "enabled": "top_layers > 0 or bottom_layers > 0",
  1907. "limit_to_extruder": "top_bottom_extruder_nr",
  1908. "settable_per_mesh": true,
  1909. "children":
  1910. {
  1911. "top_skin_preshrink":
  1912. {
  1913. "label": "Top Skin Removal Width",
  1914. "description": "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model.",
  1915. "unit": "mm",
  1916. "type": "float",
  1917. "default_value": 1,
  1918. "value": "skin_preshrink",
  1919. "maximum_value_warning": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x",
  1920. "minimum_value": "0",
  1921. "enabled": "top_layers > 0 or bottom_layers > 0",
  1922. "limit_to_extruder": "top_bottom_extruder_nr",
  1923. "settable_per_mesh": true
  1924. },
  1925. "bottom_skin_preshrink":
  1926. {
  1927. "label": "Bottom Skin Removal Width",
  1928. "description": "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model.",
  1929. "unit": "mm",
  1930. "type": "float",
  1931. "default_value": 1,
  1932. "value": "skin_preshrink",
  1933. "maximum_value_warning": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x",
  1934. "minimum_value": "0",
  1935. "enabled": "top_layers > 0 or bottom_layers > 0",
  1936. "limit_to_extruder": "top_bottom_extruder_nr",
  1937. "settable_per_mesh": true
  1938. }
  1939. }
  1940. },
  1941. "expand_skins_expand_distance":
  1942. {
  1943. "label": "Skin Expand Distance",
  1944. "description": "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used.",
  1945. "unit": "mm",
  1946. "type": "float",
  1947. "default_value": 1,
  1948. "value": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x",
  1949. "minimum_value": "-skin_preshrink",
  1950. "limit_to_extruder": "top_bottom_extruder_nr",
  1951. "enabled": "top_layers > 0 or bottom_layers > 0",
  1952. "settable_per_mesh": true,
  1953. "children":
  1954. {
  1955. "top_skin_expand_distance":
  1956. {
  1957. "label": "Top Skin Expand Distance",
  1958. "description": "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used.",
  1959. "unit": "mm",
  1960. "type": "float",
  1961. "default_value": 1,
  1962. "value": "expand_skins_expand_distance",
  1963. "minimum_value": "-top_skin_preshrink",
  1964. "enabled": "top_layers > 0 or bottom_layers > 0",
  1965. "limit_to_extruder": "top_bottom_extruder_nr",
  1966. "settable_per_mesh": true
  1967. },
  1968. "bottom_skin_expand_distance":
  1969. {
  1970. "label": "Bottom Skin Expand Distance",
  1971. "description": "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used.",
  1972. "unit": "mm",
  1973. "type": "float",
  1974. "default_value": 1,
  1975. "value": "expand_skins_expand_distance",
  1976. "minimum_value": "-bottom_skin_preshrink",
  1977. "enabled": "top_layers > 0 or bottom_layers > 0",
  1978. "limit_to_extruder": "top_bottom_extruder_nr",
  1979. "settable_per_mesh": true
  1980. }
  1981. }
  1982. },
  1983. "max_skin_angle_for_expansion":
  1984. {
  1985. "label": "Maximum Skin Angle for Expansion",
  1986. "description": "Top and/or bottom surfaces of your object with an angle larger than this setting, won't have their top/bottom skin expanded. This avoids expanding the narrow skin areas that are created when the model surface has a near vertical slope. An angle of 0\u00b0 is horizontal and will cause no skin to be expanded, while an angle of 90\u00b0 is vertical and will cause all skin to be expanded.",
  1987. "unit": "\u00b0",
  1988. "type": "float",
  1989. "minimum_value": "0",
  1990. "minimum_value_warning": "2",
  1991. "maximum_value": "90",
  1992. "default_value": 90,
  1993. "enabled": "(top_layers > 0 or bottom_layers > 0) and (top_skin_expand_distance > 0 or bottom_skin_expand_distance > 0)",
  1994. "limit_to_extruder": "top_bottom_extruder_nr",
  1995. "settable_per_mesh": true,
  1996. "children":
  1997. {
  1998. "min_skin_width_for_expansion":
  1999. {
  2000. "label": "Minimum Skin Width for Expansion",
  2001. "description": "Skin areas narrower than this are not expanded. This avoids expanding the narrow skin areas that are created when the model surface has a slope close to the vertical.",
  2002. "unit": "mm",
  2003. "type": "float",
  2004. "default_value": 0,
  2005. "value": "top_layers * layer_height / math.tan(math.radians(max_skin_angle_for_expansion))",
  2006. "minimum_value": "0",
  2007. "enabled": "(top_layers > 0 or bottom_layers > 0) and (top_skin_expand_distance > 0 or bottom_skin_expand_distance > 0)",
  2008. "limit_to_extruder": "top_bottom_extruder_nr",
  2009. "settable_per_mesh": true
  2010. }
  2011. }
  2012. }
  2013. }
  2014. },
  2015. "infill":
  2016. {
  2017. "label": "Infill",
  2018. "icon": "Infill1",
  2019. "description": "Infill",
  2020. "type": "category",
  2021. "children":
  2022. {
  2023. "infill_extruder_nr":
  2024. {
  2025. "label": "Infill Extruder",
  2026. "description": "The extruder train used for printing infill. This is used in multi-extrusion.",
  2027. "type": "optional_extruder",
  2028. "default_value": "-1",
  2029. "settable_per_mesh": false,
  2030. "settable_per_extruder": false,
  2031. "settable_per_meshgroup": true,
  2032. "settable_globally": true,
  2033. "enabled": "extruders_enabled_count > 1"
  2034. },
  2035. "infill_sparse_density":
  2036. {
  2037. "label": "Infill Density",
  2038. "description": "Adjusts the density of infill of the print.",
  2039. "unit": "%",
  2040. "type": "float",
  2041. "default_value": 20,
  2042. "minimum_value": "0",
  2043. "maximum_value_warning": "100",
  2044. "limit_to_extruder": "infill_extruder_nr",
  2045. "settable_per_mesh": true,
  2046. "children":
  2047. {
  2048. "infill_line_distance":
  2049. {
  2050. "label": "Infill Line Distance",
  2051. "description": "Distance between the printed infill lines. This setting is calculated by the infill density and the infill line width.",
  2052. "unit": "mm",
  2053. "type": "float",
  2054. "default_value": 2,
  2055. "minimum_value": "0",
  2056. "minimum_value_warning": "infill_line_width",
  2057. "value": "0 if infill_sparse_density == 0 else (infill_line_width * 100) / infill_sparse_density * (2 if infill_pattern == 'grid' else (3 if infill_pattern == 'triangles' or infill_pattern == 'trihexagon' or infill_pattern == 'cubic' or infill_pattern == 'cubicsubdiv' else (2 if infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' else (1 if infill_pattern == 'cross' or infill_pattern == 'cross_3d' else (1.6 if infill_pattern == 'lightning' else 1)))))",
  2058. "limit_to_extruder": "infill_extruder_nr",
  2059. "settable_per_mesh": true
  2060. }
  2061. }
  2062. },
  2063. "infill_pattern":
  2064. {
  2065. "label": "Infill Pattern",
  2066. "description": "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Gyroid, cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction. Lightning infill tries to minimize the infill, by only supporting the ceiling of the object.",
  2067. "type": "enum",
  2068. "options":
  2069. {
  2070. "grid": "Grid",
  2071. "lines": "Lines",
  2072. "triangles": "Triangles",
  2073. "trihexagon": "Tri-Hexagon",
  2074. "cubic": "Cubic",
  2075. "cubicsubdiv": "Cubic Subdivision",
  2076. "tetrahedral": "Octet",
  2077. "quarter_cubic": "Quarter Cubic",
  2078. "concentric": "Concentric",
  2079. "zigzag": "Zig Zag",
  2080. "cross": "Cross",
  2081. "cross_3d": "Cross 3D",
  2082. "gyroid": "Gyroid",
  2083. "lightning": "Lightning"
  2084. },
  2085. "default_value": "grid",
  2086. "enabled": "infill_line_distance > 0",
  2087. "value": "'lines' if infill_sparse_density > 25 else 'grid'",
  2088. "limit_to_extruder": "infill_extruder_nr",
  2089. "settable_per_mesh": true
  2090. },
  2091. "zig_zaggify_infill":
  2092. {
  2093. "label": "Connect Infill Lines",
  2094. "description": "Connect the ends where the infill pattern meets the inner wall using a line which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduce the effects of infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used.",
  2095. "type": "bool",
  2096. "default_value": false,
  2097. "value": "infill_pattern == 'cross' or infill_pattern == 'cross_3d'",
  2098. "enabled": "infill_pattern == 'lines' or infill_pattern == 'grid' or infill_pattern == 'triangles' or infill_pattern == 'trihexagon' or infill_pattern == 'cubic' or infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' or infill_pattern == 'cross' or infill_pattern == 'cross_3d' or infill_pattern == 'gyroid'",
  2099. "limit_to_extruder": "infill_extruder_nr",
  2100. "settable_per_mesh": true
  2101. },
  2102. "connect_infill_polygons":
  2103. {
  2104. "label": "Connect Infill Polygons",
  2105. "description": "Connect infill paths where they run next to each other. For infill patterns which consist of several closed polygons, enabling this setting greatly reduces the travel time.",
  2106. "type": "bool",
  2107. "default_value": true,
  2108. "value": "(infill_pattern == 'cross' or infill_pattern == 'cross_3d' or infill_multiplier % 2 == 0) and infill_wall_line_count > 0",
  2109. "enabled": "infill_pattern != 'lightning' and infill_pattern == 'cross' or infill_pattern == 'cross_3d' or infill_pattern == 'concentric' or infill_multiplier % 2 == 0 or infill_wall_line_count > 1",
  2110. "limit_to_extruder": "infill_extruder_nr",
  2111. "settable_per_mesh": true
  2112. },
  2113. "infill_angles":
  2114. {
  2115. "label": "Infill Line Directions",
  2116. "description": "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns).",
  2117. "type": "[int]",
  2118. "default_value": "[ ]",
  2119. "enabled": "infill_pattern not in ('concentric', 'cross', 'cross_3d', 'gyroid', 'lightning') and infill_sparse_density > 0",
  2120. "limit_to_extruder": "infill_extruder_nr",
  2121. "settable_per_mesh": true
  2122. },
  2123. "infill_offset_x":
  2124. {
  2125. "label": "Infill X Offset",
  2126. "description": "The infill pattern is moved this distance along the X axis.",
  2127. "unit": "mm",
  2128. "type": "float",
  2129. "default_value": 0,
  2130. "enabled": "infill_pattern != 'lightning' and infill_pattern == 'grid' or infill_pattern == 'lines' or infill_pattern == 'triangles' or infill_pattern == 'cubic' or infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' or infill_pattern == 'zigzag'",
  2131. "limit_to_extruder": "infill_extruder_nr",
  2132. "settable_per_mesh": true
  2133. },
  2134. "infill_offset_y":
  2135. {
  2136. "label": "Infill Y Offset",
  2137. "description": "The infill pattern is moved this distance along the Y axis.",
  2138. "unit": "mm",
  2139. "type": "float",
  2140. "default_value": 0,
  2141. "enabled": "infill_pattern != 'lightning' and infill_pattern == 'grid' or infill_pattern == 'lines' or infill_pattern == 'triangles' or infill_pattern == 'cubic' or infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' or infill_pattern == 'zigzag'",
  2142. "limit_to_extruder": "infill_extruder_nr",
  2143. "settable_per_mesh": true
  2144. },
  2145. "infill_randomize_start_location":
  2146. {
  2147. "label": "Randomize Infill Start",
  2148. "description": "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move.",
  2149. "type": "bool",
  2150. "default_value": false,
  2151. "warning_value": "True if infill_pattern not in ('grid', 'triangles', 'trihexagon', 'cubic', 'cubicsubdiv', 'tetrahedral', 'quarter_cubic') else None",
  2152. "enabled": "not (infill_pattern == 'lightning' or (infill_pattern == 'cross' and connect_infill_polygons) or infill_pattern == 'concentric')",
  2153. "limit_to_extruder": "infill_extruder_nr",
  2154. "settable_per_mesh": true
  2155. },
  2156. "infill_multiplier":
  2157. {
  2158. "label": "Infill Line Multiplier",
  2159. "description": "Convert each infill line to this many lines. The extra lines do not cross over each other, but avoid each other. This makes the infill stiffer, but increases print time and material usage.",
  2160. "default_value": 1,
  2161. "type": "int",
  2162. "maximum_value": "999999",
  2163. "minimum_value": "1",
  2164. "maximum_value_warning": "infill_line_distance / infill_line_width",
  2165. "enabled": "infill_sparse_density > 0 and infill_pattern != 'zigzag' and (gradual_infill_steps == 0 or not zig_zaggify_infill)",
  2166. "limit_to_extruder": "infill_extruder_nr",
  2167. "settable_per_mesh": true
  2168. },
  2169. "infill_wall_line_count":
  2170. {
  2171. "label": "Extra Infill Wall Count",
  2172. "description": "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\nThis feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right.",
  2173. "default_value": 0,
  2174. "type": "int",
  2175. "minimum_value": "0",
  2176. "maximum_value": "999999",
  2177. "enabled": "infill_sparse_density > 0",
  2178. "limit_to_extruder": "infill_extruder_nr",
  2179. "settable_per_mesh": true
  2180. },
  2181. "sub_div_rad_add":
  2182. {
  2183. "label": "Cubic Subdivision Shell",
  2184. "description": "An addition to the radius from the center of each cube to check for the boundary of the model, as to decide whether this cube should be subdivided. Larger values lead to a thicker shell of small cubes near the boundary of the model.",
  2185. "unit": "mm",
  2186. "type": "float",
  2187. "default_value": 0.4,
  2188. "value": "wall_line_width_x",
  2189. "minimum_value_warning": "-1 * infill_line_distance",
  2190. "maximum_value_warning": "5 * infill_line_distance",
  2191. "enabled": "infill_sparse_density > 0 and infill_pattern == 'cubicsubdiv'",
  2192. "limit_to_extruder": "infill_extruder_nr",
  2193. "settable_per_mesh": true
  2194. },
  2195. "infill_overlap":
  2196. {
  2197. "label": "Infill Overlap Percentage",
  2198. "description": "The amount of overlap between the infill and the walls as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill.",
  2199. "unit": "%",
  2200. "type": "float",
  2201. "default_value": 10,
  2202. "value": "10 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0",
  2203. "minimum_value_warning": "-50",
  2204. "maximum_value_warning": "100",
  2205. "enabled": "infill_sparse_density > 0 and infill_pattern != 'concentric'",
  2206. "limit_to_extruder": "infill_extruder_nr",
  2207. "settable_per_mesh": true,
  2208. "children":
  2209. {
  2210. "infill_overlap_mm":
  2211. {
  2212. "label": "Infill Overlap",
  2213. "description": "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill.",
  2214. "unit": "mm",
  2215. "type": "float",
  2216. "default_value": 0.04,
  2217. "minimum_value_warning": "-0.5 * machine_nozzle_size",
  2218. "maximum_value_warning": "machine_nozzle_size",
  2219. "value": "0.5 * (infill_line_width + (wall_line_width_x if wall_line_count > 1 else wall_line_width_0)) * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0",
  2220. "enabled": "infill_sparse_density > 0 and infill_pattern != 'concentric'",
  2221. "settable_per_mesh": true
  2222. }
  2223. }
  2224. },
  2225. "infill_wipe_dist":
  2226. {
  2227. "label": "Infill Wipe Distance",
  2228. "description": "Distance of a travel move inserted after every infill line, to make the infill stick to the walls better. This option is similar to infill overlap, but without extrusion and only on one end of the infill line.",
  2229. "unit": "mm",
  2230. "type": "float",
  2231. "default_value": 0.04,
  2232. "value": "wall_line_width_0 / 4 if wall_line_count == 1 else wall_line_width_x / 4",
  2233. "minimum_value_warning": "0",
  2234. "maximum_value_warning": "machine_nozzle_size",
  2235. "enabled": "infill_sparse_density > 0",
  2236. "limit_to_extruder": "infill_extruder_nr",
  2237. "settable_per_mesh": true
  2238. },
  2239. "infill_sparse_thickness":
  2240. {
  2241. "label": "Infill Layer Thickness",
  2242. "description": "The thickness per layer of infill material. This value should always be a multiple of the layer height and is otherwise rounded.",
  2243. "unit": "mm",
  2244. "type": "float",
  2245. "default_value": 0.1,
  2246. "minimum_value": "resolveOrValue('layer_height') / 2 if infill_line_distance > 0 else -999999",
  2247. "maximum_value_warning": "0.75 * machine_nozzle_size",
  2248. "maximum_value": "resolveOrValue('layer_height') * 8 if infill_line_distance > 0 else 999999",
  2249. "value": "resolveOrValue('layer_height')",
  2250. "enabled": "infill_sparse_density > 0",
  2251. "limit_to_extruder": "infill_extruder_nr",
  2252. "settable_per_mesh": true
  2253. },
  2254. "gradual_infill_steps":
  2255. {
  2256. "label": "Gradual Infill Steps",
  2257. "description": "Number of times to reduce the infill density by half when getting further below top surfaces. Areas which are closer to top surfaces get a higher density, up to the Infill Density.",
  2258. "default_value": 0,
  2259. "type": "int",
  2260. "minimum_value": "0",
  2261. "maximum_value_warning": "1 if (infill_pattern == 'cross' or infill_pattern == 'cross_3d' or infill_pattern == 'concentric') else 5",
  2262. "maximum_value": "999999 if infill_line_distance == 0 else (20 - math.log(infill_line_distance) / math.log(2))",
  2263. "enabled": "infill_sparse_density > 0 and infill_pattern not in ['cubicsubdiv', 'cross', 'cross_3d', 'lightning']",
  2264. "limit_to_extruder": "infill_extruder_nr",
  2265. "settable_per_mesh": true
  2266. },
  2267. "gradual_infill_step_height":
  2268. {
  2269. "label": "Gradual Infill Step Height",
  2270. "description": "The height of infill of a given density before switching to half the density.",
  2271. "unit": "mm",
  2272. "type": "float",
  2273. "default_value": 1.5,
  2274. "minimum_value": "0.0001",
  2275. "minimum_value_warning": "3 * resolveOrValue('layer_height')",
  2276. "enabled": "infill_sparse_density > 0 and gradual_infill_steps > 0 and infill_pattern not in ['cubicsubdiv', 'cross', 'cross_3d', 'lightning']",
  2277. "limit_to_extruder": "infill_extruder_nr",
  2278. "settable_per_mesh": true
  2279. },
  2280. "infill_before_walls":
  2281. {
  2282. "label": "Infill Before Walls",
  2283. "description": "Print the infill before printing the walls. Printing the walls first may lead to more accurate walls, but overhangs print worse. Printing the infill first leads to sturdier walls, but the infill pattern might sometimes show through the surface.",
  2284. "type": "bool",
  2285. "default_value": true,
  2286. "enabled": "infill_sparse_density > 0 and wall_x_extruder_nr == infill_extruder_nr",
  2287. "settable_per_mesh": true
  2288. },
  2289. "min_infill_area":
  2290. {
  2291. "label": "Minimum Infill Area",
  2292. "description": "Don't generate areas of infill smaller than this (use skin instead).",
  2293. "unit": "mm\u00b2",
  2294. "type": "float",
  2295. "minimum_value": "0",
  2296. "default_value": 0,
  2297. "limit_to_extruder": "infill_extruder_nr",
  2298. "settable_per_mesh": true
  2299. },
  2300. "infill_support_enabled":
  2301. {
  2302. "label": "Infill Support",
  2303. "description": "Print infill structures only where tops of the model should be supported. Enabling this reduces print time and material usage, but leads to ununiform object strength.",
  2304. "type": "bool",
  2305. "default_value": false,
  2306. "enabled": "infill_pattern != 'lightning' and infill_sparse_density > 0",
  2307. "limit_to_extruder": "infill_extruder_nr",
  2308. "settable_per_mesh": true
  2309. },
  2310. "infill_support_angle":
  2311. {
  2312. "label": "Infill Overhang Angle",
  2313. "description": "The minimum angle of internal overhangs for which infill is added. At a value of 0\u00b0 objects are totally filled with infill, 90\u00b0 will not provide any infill.",
  2314. "unit": "\u00b0",
  2315. "type": "float",
  2316. "minimum_value": "0",
  2317. "minimum_value_warning": "2",
  2318. "maximum_value": "90",
  2319. "default_value": 40,
  2320. "enabled": "infill_pattern != 'lightning' and infill_sparse_density > 0 and infill_support_enabled",
  2321. "limit_to_extruder": "infill_extruder_nr",
  2322. "settable_per_mesh": true
  2323. },
  2324. "skin_edge_support_thickness":
  2325. {
  2326. "label": "Skin Edge Support Thickness",
  2327. "description": "The thickness of the extra infill that supports skin edges.",
  2328. "unit": "mm",
  2329. "default_value": 0.8,
  2330. "minimum_value": "0",
  2331. "maximum_value": "machine_height",
  2332. "maximum_value_warning": "resolveOrValue('infill_sparse_thickness') * 10",
  2333. "type": "float",
  2334. "value": "0",
  2335. "limit_to_extruder": "infill_extruder_nr",
  2336. "enabled": "infill_sparse_density > 0",
  2337. "settable_per_mesh": true,
  2338. "children":
  2339. {
  2340. "skin_edge_support_layers":
  2341. {
  2342. "label": "Skin Edge Support Layers",
  2343. "description": "The number of infill layers that supports skin edges.",
  2344. "default_value": 4,
  2345. "minimum_value": "0",
  2346. "maximum_value_warning": "10",
  2347. "type": "int",
  2348. "maximum_value": "999999",
  2349. "value": "math.ceil(round(skin_edge_support_thickness / resolveOrValue('infill_sparse_thickness'), 4))",
  2350. "limit_to_extruder": "infill_extruder_nr",
  2351. "enabled": "infill_sparse_density > 0",
  2352. "settable_per_mesh": true
  2353. }
  2354. }
  2355. },
  2356. "lightning_infill_support_angle":
  2357. {
  2358. "label": "Lightning Infill Support Angle",
  2359. "description": "Determines when a lightning infill layer has to support anything above it. Measured in the angle given the thickness of a layer.",
  2360. "unit": "\u00b0",
  2361. "type": "float",
  2362. "minimum_value": "0",
  2363. "maximum_value": "90",
  2364. "maximum_value_warning": "75",
  2365. "default_value": 40,
  2366. "limit_to_extruder": "infill_extruder_nr",
  2367. "enabled": "infill_pattern == 'lightning'",
  2368. "settable_per_mesh": false,
  2369. "settable_per_extruder": true,
  2370. "children":
  2371. {
  2372. "lightning_infill_overhang_angle":
  2373. {
  2374. "label": "Lightning Infill Overhang Angle",
  2375. "description": "Determines when a lightning infill layer has to support the model above it. Measured in the angle given the thickness.",
  2376. "unit": "\u00b0",
  2377. "type": "float",
  2378. "minimum_value": "0",
  2379. "maximum_value": "90",
  2380. "maximum_value_warning": "75",
  2381. "default_value": 40,
  2382. "limit_to_extruder": "infill_extruder_nr",
  2383. "enabled": "infill_pattern == 'lightning'",
  2384. "settable_per_mesh": false,
  2385. "settable_per_extruder": true,
  2386. "value": "lightning_infill_support_angle"
  2387. },
  2388. "lightning_infill_prune_angle":
  2389. {
  2390. "label": "Lightning Infill Prune Angle",
  2391. "description": "The endpoints of infill lines are shortened to save on material. This setting is the angle of overhang of the endpoints of these lines.",
  2392. "unit": "\u00b0",
  2393. "type": "float",
  2394. "minimum_value": "0",
  2395. "maximum_value": "90",
  2396. "maximum_value_warning": "75",
  2397. "default_value": 40,
  2398. "limit_to_extruder": "infill_extruder_nr",
  2399. "enabled": "infill_pattern == 'lightning'",
  2400. "settable_per_mesh": false,
  2401. "settable_per_extruder": true,
  2402. "value": "lightning_infill_support_angle"
  2403. },
  2404. "lightning_infill_straightening_angle":
  2405. {
  2406. "label": "Lightning Infill Straightening Angle",
  2407. "description": "The infill lines are straightened out to save on printing time. This is the maximum angle of overhang allowed across the length of the infill line.",
  2408. "unit": "\u00b0",
  2409. "type": "float",
  2410. "minimum_value": "0",
  2411. "maximum_value": "90",
  2412. "maximum_value_warning": "75",
  2413. "default_value": 40,
  2414. "limit_to_extruder": "infill_extruder_nr",
  2415. "enabled": "infill_pattern == 'lightning'",
  2416. "settable_per_mesh": false,
  2417. "settable_per_extruder": true,
  2418. "value": "lightning_infill_support_angle"
  2419. }
  2420. }
  2421. }
  2422. }
  2423. },
  2424. "material":
  2425. {
  2426. "label": "Material",
  2427. "icon": "Spool",
  2428. "description": "Material",
  2429. "type": "category",
  2430. "children":
  2431. {
  2432. "default_material_print_temperature":
  2433. {
  2434. "label": "Default Printing Temperature",
  2435. "description": "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value",
  2436. "unit": "\u00b0C",
  2437. "type": "float",
  2438. "default_value": 210,
  2439. "minimum_value_warning": "0",
  2440. "maximum_value_warning": "285",
  2441. "maximum_value": "365",
  2442. "enabled": false,
  2443. "settable_per_extruder": true,
  2444. "settable_per_mesh": false,
  2445. "minimum_value": "-273.15"
  2446. },
  2447. "build_volume_temperature":
  2448. {
  2449. "label": "Build Volume Temperature",
  2450. "description": "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted.",
  2451. "unit": "\u00b0C",
  2452. "type": "float",
  2453. "default_value": 0,
  2454. "resolve": "min(extruderValues('build_volume_temperature'))",
  2455. "minimum_value": "-273.15",
  2456. "minimum_value_warning": "0",
  2457. "maximum_value_warning": "285",
  2458. "enabled": "machine_heated_build_volume",
  2459. "settable_per_mesh": false,
  2460. "settable_per_extruder": false
  2461. },
  2462. "material_print_temperature":
  2463. {
  2464. "label": "Printing Temperature",
  2465. "description": "The temperature used for printing.",
  2466. "unit": "\u00b0C",
  2467. "type": "float",
  2468. "default_value": 210,
  2469. "value": "default_material_print_temperature",
  2470. "minimum_value": "-273.15",
  2471. "minimum_value_warning": "0",
  2472. "maximum_value_warning": "285",
  2473. "maximum_value": "365",
  2474. "enabled": "machine_nozzle_temp_enabled",
  2475. "settable_per_mesh": false,
  2476. "settable_per_extruder": true
  2477. },
  2478. "material_print_temperature_layer_0":
  2479. {
  2480. "label": "Printing Temperature Initial Layer",
  2481. "description": "The temperature used for printing the first layer.",
  2482. "unit": "\u00b0C",
  2483. "type": "float",
  2484. "default_value": 215,
  2485. "value": "material_print_temperature",
  2486. "minimum_value": "-273.15",
  2487. "minimum_value_warning": "0",
  2488. "maximum_value_warning": "285",
  2489. "maximum_value": "365",
  2490. "enabled": "machine_nozzle_temp_enabled",
  2491. "settable_per_mesh": false,
  2492. "settable_per_extruder": true
  2493. },
  2494. "material_initial_print_temperature":
  2495. {
  2496. "label": "Initial Printing Temperature",
  2497. "description": "The minimal temperature while heating up to the Printing Temperature at which printing can already start.",
  2498. "unit": "\u00b0C",
  2499. "type": "float",
  2500. "default_value": 200,
  2501. "value": "max(-273.15, material_print_temperature - 10)",
  2502. "minimum_value": "-273.15",
  2503. "minimum_value_warning": "material_standby_temperature",
  2504. "maximum_value_warning": "material_print_temperature",
  2505. "maximum_value": "365",
  2506. "enabled": "machine_nozzle_temp_enabled and not machine_extruders_share_heater",
  2507. "settable_per_mesh": false,
  2508. "settable_per_extruder": true
  2509. },
  2510. "material_final_print_temperature":
  2511. {
  2512. "label": "Final Printing Temperature",
  2513. "description": "The temperature to which to already start cooling down just before the end of printing.",
  2514. "unit": "\u00b0C",
  2515. "type": "float",
  2516. "default_value": 195,
  2517. "value": "max(-273.15, material_print_temperature - 15)",
  2518. "minimum_value": "-273.15",
  2519. "minimum_value_warning": "material_standby_temperature",
  2520. "maximum_value_warning": "material_print_temperature",
  2521. "maximum_value": "365",
  2522. "enabled": "machine_nozzle_temp_enabled and not machine_extruders_share_heater",
  2523. "settable_per_mesh": false,
  2524. "settable_per_extruder": true
  2525. },
  2526. "material_extrusion_cool_down_speed":
  2527. {
  2528. "label": "Extrusion Cool Down Speed Modifier",
  2529. "description": "The extra speed by which the nozzle cools while extruding. The same value is used to signify the heat up speed lost when heating up while extruding.",
  2530. "unit": "\u00b0C/s",
  2531. "type": "float",
  2532. "default_value": 0.7,
  2533. "minimum_value": "0",
  2534. "maximum_value_warning": "10.0",
  2535. "maximum_value": "machine_nozzle_heat_up_speed",
  2536. "enabled": "extruders_enabled_count > 1 and material_final_print_temperature != material_print_temperature",
  2537. "settable_per_mesh": false,
  2538. "settable_per_extruder": true
  2539. },
  2540. "default_material_bed_temperature":
  2541. {
  2542. "label": "Default Build Plate Temperature",
  2543. "description": "The default temperature used for the heated build plate. This should be the \"base\" temperature of a build plate. All other print temperatures should use offsets based on this value",
  2544. "unit": "\u00b0C",
  2545. "type": "float",
  2546. "resolve": "max(extruderValues('default_material_bed_temperature'))",
  2547. "default_value": 60,
  2548. "minimum_value": "-273.15",
  2549. "minimum_value_warning": "build_volume_temperature",
  2550. "maximum_value_warning": "130",
  2551. "maximum_value": "200",
  2552. "enabled": false,
  2553. "settable_per_mesh": false,
  2554. "settable_per_extruder": false,
  2555. "settable_per_meshgroup": false
  2556. },
  2557. "material_bed_temperature":
  2558. {
  2559. "label": "Build Plate Temperature",
  2560. "description": "The temperature used for the heated build plate. If this is 0, the build plate is left unheated.",
  2561. "unit": "\u00b0C",
  2562. "type": "float",
  2563. "default_value": 60,
  2564. "value": "default_material_bed_temperature",
  2565. "resolve": "max(extruderValues('material_bed_temperature'))",
  2566. "minimum_value": "-273.15",
  2567. "minimum_value_warning": "build_volume_temperature",
  2568. "maximum_value_warning": "130",
  2569. "maximum_value": "200",
  2570. "enabled": "machine_heated_bed and machine_gcode_flavor != \"UltiGCode\"",
  2571. "settable_per_mesh": false,
  2572. "settable_per_extruder": false,
  2573. "settable_per_meshgroup": false
  2574. },
  2575. "material_bed_temperature_layer_0":
  2576. {
  2577. "label": "Build Plate Temperature Initial Layer",
  2578. "description": "The temperature used for the heated build plate at the first layer. If this is 0, the build plate is left unheated during the first layer.",
  2579. "unit": "\u00b0C",
  2580. "type": "float",
  2581. "resolve": "max(extruderValues('material_bed_temperature_layer_0'))",
  2582. "default_value": 60,
  2583. "value": "resolveOrValue('material_bed_temperature')",
  2584. "minimum_value": "-273.15",
  2585. "minimum_value_warning": "max(build_volume_temperature, max(extruderValues('material_bed_temperature')))",
  2586. "maximum_value_warning": "130",
  2587. "maximum_value": "200",
  2588. "enabled": "machine_heated_bed and machine_gcode_flavor != \"UltiGCode\"",
  2589. "settable_per_mesh": false,
  2590. "settable_per_extruder": false,
  2591. "settable_per_meshgroup": false
  2592. },
  2593. "material_adhesion_tendency":
  2594. {
  2595. "label": "Adhesion Tendency",
  2596. "description": "Surface adhesion tendency.",
  2597. "type": "int",
  2598. "default_value": 10,
  2599. "minimum_value": "0",
  2600. "maximum_value": "10",
  2601. "enabled": false,
  2602. "settable_per_mesh": false,
  2603. "settable_per_extruder": true
  2604. },
  2605. "material_surface_energy":
  2606. {
  2607. "label": "Surface Energy",
  2608. "description": "Surface energy.",
  2609. "unit": "%",
  2610. "type": "int",
  2611. "default_value": 100,
  2612. "minimum_value": "0",
  2613. "maximum_value": "100",
  2614. "enabled": false,
  2615. "settable_per_mesh": false,
  2616. "settable_per_extruder": true
  2617. },
  2618. "material_shrinkage_percentage":
  2619. {
  2620. "label": "Scaling Factor Shrinkage Compensation",
  2621. "description": "To compensate for the shrinkage of the material as it cools down, the model will be scaled with this factor.",
  2622. "unit": "%",
  2623. "type": "float",
  2624. "default_value": 100.0,
  2625. "enabled": true,
  2626. "minimum_value": "0.001",
  2627. "minimum_value_warning": "100",
  2628. "maximum_value_warning": "120",
  2629. "settable_per_mesh": false,
  2630. "settable_per_extruder": false,
  2631. "resolve": "max(extruderValues(\"material_shrinkage_percentage\")) if any(extruderValues('material_is_support_material')) else sum(extruderValues(\"material_shrinkage_percentage\")) / len(extruderValues(\"material_shrinkage_percentage\"))",
  2632. "children":
  2633. {
  2634. "material_shrinkage_percentage_xy":
  2635. {
  2636. "label": "Horizontal Scaling Factor Shrinkage Compensation",
  2637. "description": "To compensate for the shrinkage of the material as it cools down, the model will be scaled with this factor in the XY-direction (horizontally).",
  2638. "unit": "%",
  2639. "type": "float",
  2640. "default_value": 100.0,
  2641. "enabled": true,
  2642. "minimum_value": "0.001",
  2643. "minimum_value_warning": "100",
  2644. "maximum_value_warning": "120",
  2645. "settable_per_mesh": false,
  2646. "settable_per_extruder": false,
  2647. "resolve": "max(extruderValues(\"material_shrinkage_percentage\")) if any(extruderValues('material_is_support_material')) else sum(extruderValues(\"material_shrinkage_percentage_xy\")) / len(extruderValues(\"material_shrinkage_percentage_xy\"))",
  2648. "value": "material_shrinkage_percentage"
  2649. },
  2650. "material_shrinkage_percentage_z":
  2651. {
  2652. "label": "Vertical Scaling Factor Shrinkage Compensation",
  2653. "description": "To compensate for the shrinkage of the material as it cools down, the model will be scaled with this factor in the Z-direction (vertically).",
  2654. "unit": "%",
  2655. "type": "float",
  2656. "default_value": 100.0,
  2657. "enabled": true,
  2658. "minimum_value": "0.001",
  2659. "minimum_value_warning": "100",
  2660. "maximum_value_warning": "120",
  2661. "settable_per_mesh": false,
  2662. "settable_per_extruder": false,
  2663. "resolve": "max(extruderValues(\"material_shrinkage_percentage_z\")) if any(extruderValues('material_is_support_material')) else sum(extruderValues(\"material_shrinkage_percentage_z\")) / len(extruderValues(\"material_shrinkage_percentage_z\"))",
  2664. "value": "material_shrinkage_percentage"
  2665. }
  2666. }
  2667. },
  2668. "material_crystallinity":
  2669. {
  2670. "label": "Crystalline Material",
  2671. "description": "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?",
  2672. "type": "bool",
  2673. "default_value": false,
  2674. "enabled": false,
  2675. "settable_per_mesh": false,
  2676. "settable_per_extruder": true
  2677. },
  2678. "material_anti_ooze_retracted_position":
  2679. {
  2680. "label": "Anti-ooze Retracted Position",
  2681. "description": "How far the material needs to be retracted before it stops oozing.",
  2682. "type": "float",
  2683. "unit": "mm",
  2684. "default_value": -4,
  2685. "enabled": false,
  2686. "minimum_value_warning": "-switch_extruder_retraction_amount",
  2687. "maximum_value": "0",
  2688. "settable_per_mesh": false,
  2689. "settable_per_extruder": true
  2690. },
  2691. "material_anti_ooze_retraction_speed":
  2692. {
  2693. "label": "Anti-ooze Retraction Speed",
  2694. "description": "How fast the material needs to be retracted during a filament switch to prevent oozing.",
  2695. "type": "float",
  2696. "unit": "mm/s",
  2697. "default_value": 5,
  2698. "enabled": false,
  2699. "minimum_value": "0",
  2700. "maximum_value": "machine_max_feedrate_e",
  2701. "settable_per_mesh": false,
  2702. "settable_per_extruder": true
  2703. },
  2704. "material_break_preparation_retracted_position":
  2705. {
  2706. "label": "Break Preparation Retracted Position",
  2707. "description": "How far the filament can be stretched before it breaks, while heated.",
  2708. "type": "float",
  2709. "unit": "mm",
  2710. "default_value": -16,
  2711. "enabled": false,
  2712. "minimum_value_warning": "-retraction_amount * 4",
  2713. "maximum_value": "0",
  2714. "settable_per_mesh": false,
  2715. "settable_per_extruder": true
  2716. },
  2717. "material_break_preparation_speed":
  2718. {
  2719. "label": "Break Preparation Retraction Speed",
  2720. "description": "How fast the filament needs to be retracted just before breaking it off in a retraction.",
  2721. "type": "float",
  2722. "unit": "mm/s",
  2723. "default_value": 2,
  2724. "enabled": false,
  2725. "minimum_value": "0",
  2726. "maximum_value": "machine_max_feedrate_e",
  2727. "settable_per_mesh": false,
  2728. "settable_per_extruder": true
  2729. },
  2730. "material_break_preparation_temperature":
  2731. {
  2732. "label": "Break Preparation Temperature",
  2733. "description": "The temperature used to purge material, should be roughly equal to the highest possible printing temperature.",
  2734. "type": "float",
  2735. "unit": "\u00b0C",
  2736. "default_value": 50,
  2737. "value": "material_print_temperature",
  2738. "enabled": false,
  2739. "minimum_value": "-273.15",
  2740. "maximum_value_warning": "300",
  2741. "maximum_value": "365",
  2742. "settable_per_mesh": false,
  2743. "settable_per_extruder": true
  2744. },
  2745. "material_break_retracted_position":
  2746. {
  2747. "label": "Break Retracted Position",
  2748. "description": "How far to retract the filament in order to break it cleanly.",
  2749. "type": "float",
  2750. "unit": "mm",
  2751. "default_value": -50,
  2752. "enabled": false,
  2753. "minimum_value_warning": "-100",
  2754. "maximum_value": "0",
  2755. "settable_per_mesh": false,
  2756. "settable_per_extruder": true
  2757. },
  2758. "material_break_speed":
  2759. {
  2760. "label": "Break Retraction Speed",
  2761. "description": "The speed at which to retract the filament in order to break it cleanly.",
  2762. "type": "float",
  2763. "unit": "mm/s",
  2764. "default_value": 25,
  2765. "enabled": false,
  2766. "minimum_value": "0",
  2767. "maximum_value": "machine_max_feedrate_e",
  2768. "settable_per_mesh": false,
  2769. "settable_per_extruder": true
  2770. },
  2771. "material_break_temperature":
  2772. {
  2773. "label": "Break Temperature",
  2774. "description": "The temperature at which the filament is broken for a clean break.",
  2775. "type": "float",
  2776. "unit": "\u00b0C",
  2777. "default_value": 50,
  2778. "enabled": false,
  2779. "minimum_value": "-273.15",
  2780. "maximum_value": "365",
  2781. "maximum_value_warning": "300",
  2782. "settable_per_mesh": false,
  2783. "settable_per_extruder": true
  2784. },
  2785. "material_flush_purge_speed":
  2786. {
  2787. "label": "Flush Purge Speed",
  2788. "description": "How fast to prime the material after switching to a different material.",
  2789. "type": "float",
  2790. "default_value": 0.5,
  2791. "enabled": false
  2792. },
  2793. "material_flush_purge_length":
  2794. {
  2795. "label": "Flush Purge Length",
  2796. "description": "How much material to use to purge the previous material out of the nozzle (in length of filament) when switching to a different material.",
  2797. "type": "float",
  2798. "default_value": 60,
  2799. "enabled": false
  2800. },
  2801. "material_end_of_filament_purge_speed":
  2802. {
  2803. "label": "End of Filament Purge Speed",
  2804. "description": "How fast to prime the material after replacing an empty spool with a fresh spool of the same material.",
  2805. "type": "float",
  2806. "default_value": 0.5,
  2807. "enabled": false
  2808. },
  2809. "material_end_of_filament_purge_length":
  2810. {
  2811. "label": "End of Filament Purge Length",
  2812. "description": "How much material to use to purge the previous material out of the nozzle (in length of filament) when replacing an empty spool with a fresh spool of the same material.",
  2813. "type": "float",
  2814. "default_value": 20,
  2815. "enabled": false
  2816. },
  2817. "material_maximum_park_duration":
  2818. {
  2819. "label": "Maximum Park Duration",
  2820. "description": "How long the material can be kept out of dry storage safely.",
  2821. "type": "float",
  2822. "default_value": 300,
  2823. "enabled": false
  2824. },
  2825. "material_no_load_move_factor":
  2826. {
  2827. "label": "No Load Move Factor",
  2828. "description": "A factor indicating how much the filament gets compressed between the feeder and the nozzle chamber, used to determine how far to move the material for a filament switch.",
  2829. "type": "float",
  2830. "default_value": 0.940860215,
  2831. "enabled": false
  2832. },
  2833. "material_flow":
  2834. {
  2835. "label": "Flow",
  2836. "description": "Flow compensation: the amount of material extruded is multiplied by this value.",
  2837. "unit": "%",
  2838. "default_value": 100,
  2839. "type": "float",
  2840. "minimum_value": "0.0001",
  2841. "minimum_value_warning": "50",
  2842. "maximum_value_warning": "150",
  2843. "enabled": "machine_gcode_flavor != \"UltiGCode\"",
  2844. "settable_per_mesh": true,
  2845. "children":
  2846. {
  2847. "wall_material_flow":
  2848. {
  2849. "label": "Wall Flow",
  2850. "description": "Flow compensation on wall lines.",
  2851. "unit": "%",
  2852. "type": "float",
  2853. "default_value": 100,
  2854. "value": "material_flow",
  2855. "minimum_value": "0.0001",
  2856. "minimum_value_warning": "50",
  2857. "maximum_value_warning": "150",
  2858. "limit_to_extruder": "wall_0_extruder_nr if wall_x_extruder_nr == wall_0_extruder_nr else -1",
  2859. "settable_per_mesh": true,
  2860. "children":
  2861. {
  2862. "wall_0_material_flow":
  2863. {
  2864. "label": "Outer Wall Flow",
  2865. "description": "Flow compensation on the outermost wall line.",
  2866. "unit": "%",
  2867. "type": "float",
  2868. "default_value": 100,
  2869. "value": "wall_material_flow",
  2870. "minimum_value": "0.0001",
  2871. "minimum_value_warning": "50",
  2872. "maximum_value_warning": "150",
  2873. "limit_to_extruder": "wall_0_extruder_nr",
  2874. "settable_per_mesh": true
  2875. },
  2876. "wall_x_material_flow":
  2877. {
  2878. "label": "Inner Wall(s) Flow",
  2879. "description": "Flow compensation on wall lines for all wall lines except the outermost one.",
  2880. "unit": "%",
  2881. "type": "float",
  2882. "default_value": 100,
  2883. "value": "wall_material_flow",
  2884. "minimum_value": "0.0001",
  2885. "minimum_value_warning": "50",
  2886. "maximum_value_warning": "150",
  2887. "limit_to_extruder": "wall_x_extruder_nr",
  2888. "settable_per_mesh": true
  2889. },
  2890. "wall_0_material_flow_roofing":
  2891. {
  2892. "label": "Top Surface Outer Wall Flow",
  2893. "description": "Flow compensation on the top surface outermost wall line.",
  2894. "unit": "%",
  2895. "type": "float",
  2896. "default_value": 100,
  2897. "value": "wall_0_material_flow",
  2898. "minimum_value": "0.0001",
  2899. "minimum_value_warning": "50",
  2900. "maximum_value_warning": "150",
  2901. "limit_to_extruder": "wall_0_extruder_nr",
  2902. "settable_per_mesh": true
  2903. },
  2904. "wall_x_material_flow_roofing":
  2905. {
  2906. "label": "Top Surface Inner Wall(s) Flow",
  2907. "description": "Flow compensation on top surface wall lines for all wall lines except the outermost one.",
  2908. "unit": "%",
  2909. "type": "float",
  2910. "default_value": 100,
  2911. "value": "wall_x_material_flow",
  2912. "minimum_value": "0.0001",
  2913. "minimum_value_warning": "50",
  2914. "maximum_value_warning": "150",
  2915. "limit_to_extruder": "wall_x_extruder_nr",
  2916. "settable_per_mesh": true
  2917. }
  2918. }
  2919. },
  2920. "skin_material_flow":
  2921. {
  2922. "label": "Top/Bottom Flow",
  2923. "description": "Flow compensation on top/bottom lines.",
  2924. "unit": "%",
  2925. "type": "float",
  2926. "default_value": 100,
  2927. "value": "material_flow",
  2928. "minimum_value": "0.0001",
  2929. "minimum_value_warning": "50",
  2930. "maximum_value_warning": "150",
  2931. "enabled": "top_layers > 0 or bottom_layers > 0",
  2932. "limit_to_extruder": "top_bottom_extruder_nr",
  2933. "settable_per_mesh": true
  2934. },
  2935. "roofing_material_flow":
  2936. {
  2937. "label": "Top Surface Skin Flow",
  2938. "description": "Flow compensation on lines of the areas at the top of the print.",
  2939. "unit": "%",
  2940. "type": "float",
  2941. "default_value": 100,
  2942. "value": "skin_material_flow",
  2943. "minimum_value": "0.0001",
  2944. "minimum_value_warning": "50",
  2945. "maximum_value_warning": "150",
  2946. "limit_to_extruder": "roofing_extruder_nr",
  2947. "settable_per_mesh": true,
  2948. "enabled": "roofing_layer_count > 0 and top_layers > 0"
  2949. },
  2950. "infill_material_flow":
  2951. {
  2952. "label": "Infill Flow",
  2953. "description": "Flow compensation on infill lines.",
  2954. "unit": "%",
  2955. "type": "float",
  2956. "default_value": 100,
  2957. "value": "material_flow",
  2958. "minimum_value": "0.0001",
  2959. "minimum_value_warning": "50",
  2960. "maximum_value_warning": "150",
  2961. "enabled": "infill_sparse_density > 0",
  2962. "limit_to_extruder": "infill_extruder_nr",
  2963. "settable_per_mesh": true
  2964. },
  2965. "skirt_brim_material_flow":
  2966. {
  2967. "label": "Skirt/Brim Flow",
  2968. "description": "Flow compensation on skirt or brim lines.",
  2969. "unit": "%",
  2970. "type": "float",
  2971. "default_value": 100,
  2972. "value": "material_flow",
  2973. "minimum_value": "0.0001",
  2974. "minimum_value_warning": "50",
  2975. "maximum_value_warning": "150",
  2976. "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled')",
  2977. "settable_per_mesh": false,
  2978. "settable_per_extruder": true
  2979. },
  2980. "support_material_flow":
  2981. {
  2982. "label": "Support Flow",
  2983. "description": "Flow compensation on support structure lines.",
  2984. "unit": "%",
  2985. "type": "float",
  2986. "default_value": 100,
  2987. "value": "material_flow",
  2988. "minimum_value": "0.0001",
  2989. "minimum_value_warning": "50",
  2990. "maximum_value_warning": "150",
  2991. "enabled": "support_enable or support_meshes_present",
  2992. "limit_to_extruder": "support_infill_extruder_nr",
  2993. "settable_per_mesh": false,
  2994. "settable_per_extruder": true
  2995. },
  2996. "support_interface_material_flow":
  2997. {
  2998. "label": "Support Interface Flow",
  2999. "description": "Flow compensation on lines of support roof or floor.",
  3000. "unit": "%",
  3001. "type": "float",
  3002. "default_value": 100,
  3003. "value": "material_flow",
  3004. "minimum_value": "0.0001",
  3005. "minimum_value_warning": "50",
  3006. "maximum_value_warning": "150",
  3007. "enabled": "(support_enable or support_meshes_present) and support_interface_enable",
  3008. "limit_to_extruder": "support_interface_extruder_nr",
  3009. "settable_per_mesh": false,
  3010. "settable_per_extruder": true,
  3011. "children":
  3012. {
  3013. "support_roof_material_flow":
  3014. {
  3015. "label": "Support Roof Flow",
  3016. "description": "Flow compensation on support roof lines.",
  3017. "unit": "%",
  3018. "type": "float",
  3019. "default_value": 100,
  3020. "value": "extruderValue(support_roof_extruder_nr, 'support_interface_material_flow')",
  3021. "minimum_value": "0.0001",
  3022. "minimum_value_warning": "50",
  3023. "maximum_value_warning": "150",
  3024. "enabled": "(support_enable or support_meshes_present) and support_roof_enable",
  3025. "limit_to_extruder": "support_roof_extruder_nr",
  3026. "settable_per_mesh": false,
  3027. "settable_per_extruder": true
  3028. },
  3029. "support_bottom_material_flow":
  3030. {
  3031. "label": "Support Floor Flow",
  3032. "description": "Flow compensation on support floor lines.",
  3033. "unit": "%",
  3034. "type": "float",
  3035. "default_value": 100,
  3036. "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_material_flow')",
  3037. "minimum_value": "0.0001",
  3038. "minimum_value_warning": "50",
  3039. "maximum_value_warning": "150",
  3040. "enabled": "(support_enable or support_meshes_present) and support_bottom_enable",
  3041. "limit_to_extruder": "support_bottom_extruder_nr",
  3042. "settable_per_mesh": false,
  3043. "settable_per_extruder": true
  3044. }
  3045. }
  3046. },
  3047. "prime_tower_flow":
  3048. {
  3049. "label": "Prime Tower Flow",
  3050. "description": "Flow compensation on prime tower lines.",
  3051. "unit": "%",
  3052. "type": "float",
  3053. "default_value": 100,
  3054. "value": "material_flow",
  3055. "minimum_value": "0.0001",
  3056. "minimum_value_warning": "50",
  3057. "maximum_value_warning": "150",
  3058. "settable_per_mesh": false,
  3059. "settable_per_extruder": true
  3060. }
  3061. }
  3062. },
  3063. "material_flow_layer_0":
  3064. {
  3065. "label": "Initial Layer Flow",
  3066. "description": "Flow compensation for the first layer: the amount of material extruded on the initial layer is multiplied by this value.",
  3067. "unit": "%",
  3068. "default_value": 100,
  3069. "type": "float",
  3070. "minimum_value": "0.0001",
  3071. "minimum_value_warning": "50",
  3072. "maximum_value_warning": "150",
  3073. "settable_per_mesh": true
  3074. },
  3075. "wall_x_material_flow_layer_0":
  3076. {
  3077. "label": "Initial Layer Inner Wall Flow",
  3078. "description": "Flow compensation on wall lines for all wall lines except the outermost one, but only for the first layer",
  3079. "unit": "%",
  3080. "type": "float",
  3081. "default_value": 100,
  3082. "value": "material_flow_layer_0",
  3083. "minimum_value": "0.0001",
  3084. "minimum_value_warning": "50",
  3085. "maximum_value_warning": "150",
  3086. "limit_to_extruder": "wall_x_extruder_nr",
  3087. "settable_per_mesh": true
  3088. },
  3089. "wall_0_material_flow_layer_0":
  3090. {
  3091. "label": "Initial Layer Outer Wall Flow",
  3092. "description": "Flow compensation on the outermost wall line of the first layer.",
  3093. "unit": "%",
  3094. "type": "float",
  3095. "default_value": 100,
  3096. "value": "material_flow_layer_0",
  3097. "minimum_value": "0.0001",
  3098. "minimum_value_warning": "50",
  3099. "maximum_value_warning": "150",
  3100. "limit_to_extruder": "wall_0_extruder_nr",
  3101. "settable_per_mesh": true
  3102. },
  3103. "skin_material_flow_layer_0":
  3104. {
  3105. "label": "Initial Layer Bottom Flow",
  3106. "description": "Flow compensation on bottom lines of the first layer",
  3107. "unit": "%",
  3108. "type": "float",
  3109. "default_value": 100,
  3110. "value": "material_flow_layer_0",
  3111. "minimum_value": "0.0001",
  3112. "minimum_value_warning": "50",
  3113. "maximum_value_warning": "150",
  3114. "enabled": "bottom_layers > 0",
  3115. "limit_to_extruder": "top_bottom_extruder_nr",
  3116. "settable_per_mesh": true
  3117. },
  3118. "material_standby_temperature":
  3119. {
  3120. "label": "Standby Temperature",
  3121. "description": "The temperature of the nozzle when another nozzle is currently used for printing.",
  3122. "type": "float",
  3123. "unit": "\u00b0C",
  3124. "default_value": 150,
  3125. "minimum_value": "-273.15",
  3126. "minimum_value_warning": "0",
  3127. "maximum_value_warning": "260",
  3128. "maximum_value": "365",
  3129. "enabled": "extruders_enabled_count > 1 and machine_nozzle_temp_enabled",
  3130. "settable_per_mesh": false,
  3131. "settable_per_extruder": true
  3132. },
  3133. "material_is_support_material":
  3134. {
  3135. "label": "Is support material",
  3136. "description": "Is this material typically used as a support material during printing.",
  3137. "type": "bool",
  3138. "default_value": false,
  3139. "enabled": false,
  3140. "settable_per_mesh": false,
  3141. "settable_per_extruder": true
  3142. }
  3143. }
  3144. },
  3145. "speed":
  3146. {
  3147. "label": "Speed",
  3148. "icon": "SpeedOMeter",
  3149. "description": "Speed",
  3150. "type": "category",
  3151. "children":
  3152. {
  3153. "speed_print":
  3154. {
  3155. "label": "Print Speed",
  3156. "description": "The speed at which printing happens.",
  3157. "unit": "mm/s",
  3158. "type": "float",
  3159. "minimum_value": "0.1",
  3160. "maximum_value_warning": "150",
  3161. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3162. "default_value": 60,
  3163. "settable_per_mesh": true,
  3164. "children":
  3165. {
  3166. "speed_infill":
  3167. {
  3168. "label": "Infill Speed",
  3169. "description": "The speed at which infill is printed.",
  3170. "unit": "mm/s",
  3171. "type": "float",
  3172. "minimum_value": "0.1",
  3173. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3174. "maximum_value_warning": "150",
  3175. "default_value": 60,
  3176. "value": "speed_print",
  3177. "enabled": "infill_sparse_density > 0",
  3178. "limit_to_extruder": "infill_extruder_nr",
  3179. "settable_per_mesh": true
  3180. },
  3181. "speed_wall":
  3182. {
  3183. "label": "Wall Speed",
  3184. "description": "The speed at which the walls are printed.",
  3185. "unit": "mm/s",
  3186. "type": "float",
  3187. "minimum_value": "0.1",
  3188. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3189. "maximum_value_warning": "150",
  3190. "default_value": 30,
  3191. "value": "speed_print / 2",
  3192. "settable_per_mesh": true,
  3193. "children":
  3194. {
  3195. "speed_wall_0":
  3196. {
  3197. "label": "Outer Wall Speed",
  3198. "description": "The speed at which the outermost walls are printed. Printing the outer wall at a lower speed improves the final skin quality. However, having a large difference between the inner wall speed and the outer wall speed will affect quality in a negative way.",
  3199. "unit": "mm/s",
  3200. "type": "float",
  3201. "minimum_value": "0.1",
  3202. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3203. "maximum_value_warning": "150",
  3204. "default_value": 30,
  3205. "value": "speed_wall",
  3206. "limit_to_extruder": "wall_0_extruder_nr",
  3207. "settable_per_mesh": true
  3208. },
  3209. "speed_wall_x":
  3210. {
  3211. "label": "Inner Wall Speed",
  3212. "description": "The speed at which all inner walls are printed. Printing the inner wall faster than the outer wall will reduce printing time. It works well to set this in between the outer wall speed and the infill speed.",
  3213. "unit": "mm/s",
  3214. "type": "float",
  3215. "minimum_value": "0.1",
  3216. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3217. "maximum_value_warning": "150",
  3218. "default_value": 60,
  3219. "value": "speed_wall * 2",
  3220. "limit_to_extruder": "wall_x_extruder_nr",
  3221. "settable_per_mesh": true
  3222. },
  3223. "speed_wall_0_roofing":
  3224. {
  3225. "label": "Top Surface Outer Wall Speed",
  3226. "description": "The speed at which the top surface outermost wall is printed.",
  3227. "unit": "mm/s",
  3228. "type": "float",
  3229. "minimum_value": "0.1",
  3230. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3231. "maximum_value_warning": "150",
  3232. "default_value": 30,
  3233. "value": "speed_wall_0",
  3234. "limit_to_extruder": "wall_0_extruder_nr",
  3235. "settable_per_mesh": true
  3236. },
  3237. "speed_wall_x_roofing":
  3238. {
  3239. "label": "Top Surface Inner Wall Speed",
  3240. "description": "The speed at which the top surface inner walls are printed.",
  3241. "unit": "mm/s",
  3242. "type": "float",
  3243. "minimum_value": "0.1",
  3244. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3245. "maximum_value_warning": "150",
  3246. "default_value": 60,
  3247. "value": "speed_wall_x",
  3248. "limit_to_extruder": "wall_x_extruder_nr",
  3249. "settable_per_mesh": true
  3250. }
  3251. }
  3252. },
  3253. "speed_roofing":
  3254. {
  3255. "label": "Top Surface Skin Speed",
  3256. "description": "The speed at which top surface skin layers are printed.",
  3257. "unit": "mm/s",
  3258. "type": "float",
  3259. "minimum_value": "0.1",
  3260. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3261. "maximum_value_warning": "150",
  3262. "default_value": 25,
  3263. "value": "speed_topbottom",
  3264. "limit_to_extruder": "roofing_extruder_nr",
  3265. "settable_per_mesh": true,
  3266. "enabled": "roofing_layer_count > 0 and top_layers > 0"
  3267. },
  3268. "speed_topbottom":
  3269. {
  3270. "label": "Top/Bottom Speed",
  3271. "description": "The speed at which top/bottom layers are printed.",
  3272. "unit": "mm/s",
  3273. "type": "float",
  3274. "minimum_value": "0.1",
  3275. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3276. "maximum_value_warning": "150",
  3277. "default_value": 30,
  3278. "value": "speed_print / 2",
  3279. "limit_to_extruder": "top_bottom_extruder_nr",
  3280. "enabled": "top_layers > 0 or bottom_layers > 0",
  3281. "settable_per_mesh": true
  3282. },
  3283. "speed_support":
  3284. {
  3285. "label": "Support Speed",
  3286. "description": "The speed at which the support structure is printed. Printing support at higher speeds can greatly reduce printing time. The surface quality of the support structure is not important since it is removed after printing.",
  3287. "unit": "mm/s",
  3288. "type": "float",
  3289. "minimum_value": "0.1",
  3290. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3291. "maximum_value_warning": "150",
  3292. "default_value": 60,
  3293. "value": "speed_print",
  3294. "enabled": "support_enable or support_meshes_present",
  3295. "settable_per_mesh": false,
  3296. "limit_to_extruder": "support_extruder_nr",
  3297. "settable_per_extruder": true,
  3298. "children":
  3299. {
  3300. "speed_support_infill":
  3301. {
  3302. "label": "Support Infill Speed",
  3303. "description": "The speed at which the infill of support is printed. Printing the infill at lower speeds improves stability.",
  3304. "unit": "mm/s",
  3305. "type": "float",
  3306. "default_value": 60,
  3307. "minimum_value": "0.1",
  3308. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3309. "maximum_value_warning": "150",
  3310. "value": "speed_support",
  3311. "enabled": "support_enable or support_meshes_present",
  3312. "limit_to_extruder": "support_infill_extruder_nr",
  3313. "settable_per_mesh": false,
  3314. "settable_per_extruder": true
  3315. },
  3316. "speed_support_interface":
  3317. {
  3318. "label": "Support Interface Speed",
  3319. "description": "The speed at which the roofs and floors of support are printed. Printing them at lower speeds can improve overhang quality.",
  3320. "unit": "mm/s",
  3321. "type": "float",
  3322. "default_value": 40,
  3323. "minimum_value": "0.1",
  3324. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3325. "maximum_value_warning": "150",
  3326. "enabled": "support_interface_enable and (support_enable or support_meshes_present)",
  3327. "limit_to_extruder": "support_interface_extruder_nr",
  3328. "value": "speed_support / 1.5",
  3329. "settable_per_mesh": false,
  3330. "settable_per_extruder": true,
  3331. "children":
  3332. {
  3333. "speed_support_roof":
  3334. {
  3335. "label": "Support Roof Speed",
  3336. "description": "The speed at which the roofs of support are printed. Printing them at lower speeds can improve overhang quality.",
  3337. "unit": "mm/s",
  3338. "type": "float",
  3339. "default_value": 40,
  3340. "minimum_value": "0.1",
  3341. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3342. "maximum_value_warning": "150",
  3343. "enabled": "support_roof_enable and (support_enable or support_meshes_present)",
  3344. "limit_to_extruder": "support_roof_extruder_nr",
  3345. "value": "extruderValue(support_roof_extruder_nr, 'speed_support_interface')",
  3346. "settable_per_mesh": false,
  3347. "settable_per_extruder": true
  3348. },
  3349. "speed_support_bottom":
  3350. {
  3351. "label": "Support Floor Speed",
  3352. "description": "The speed at which the floor of support is printed. Printing it at lower speed can improve adhesion of support on top of your model.",
  3353. "unit": "mm/s",
  3354. "type": "float",
  3355. "default_value": 40,
  3356. "minimum_value": "0.1",
  3357. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3358. "maximum_value_warning": "150",
  3359. "enabled": "support_bottom_enable and (support_enable or support_meshes_present)",
  3360. "limit_to_extruder": "support_bottom_extruder_nr",
  3361. "value": "extruderValue(support_bottom_extruder_nr, 'speed_support_interface')",
  3362. "settable_per_mesh": false,
  3363. "settable_per_extruder": true
  3364. }
  3365. }
  3366. }
  3367. }
  3368. },
  3369. "speed_prime_tower":
  3370. {
  3371. "label": "Prime Tower Speed",
  3372. "description": "The speed at which the prime tower is printed. Printing the prime tower slower can make it more stable when the adhesion between the different filaments is suboptimal.",
  3373. "type": "float",
  3374. "unit": "mm/s",
  3375. "enabled": "prime_tower_enable",
  3376. "default_value": 60,
  3377. "value": "speed_print",
  3378. "minimum_value": "0.1",
  3379. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3380. "maximum_value_warning": "150",
  3381. "settable_per_mesh": false,
  3382. "settable_per_extruder": true
  3383. }
  3384. }
  3385. },
  3386. "speed_travel":
  3387. {
  3388. "label": "Travel Speed",
  3389. "description": "The speed at which travel moves are made.",
  3390. "unit": "mm/s",
  3391. "type": "float",
  3392. "default_value": 120,
  3393. "minimum_value": "0.1",
  3394. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3395. "maximum_value_warning": "300",
  3396. "value": "speed_print if magic_spiralize else 120",
  3397. "settable_per_mesh": false,
  3398. "settable_per_extruder": true
  3399. },
  3400. "speed_layer_0":
  3401. {
  3402. "label": "Initial Layer Speed",
  3403. "description": "The speed for the initial layer. A lower value is advised to improve adhesion to the build plate. Does not affect the build plate adhesion structures themselves, like brim and raft.",
  3404. "unit": "mm/s",
  3405. "type": "float",
  3406. "enabled": "speed_slowdown_layers > 0",
  3407. "default_value": 30,
  3408. "value": "speed_print * 30 / 60",
  3409. "minimum_value": "0.1",
  3410. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3411. "maximum_value_warning": "300",
  3412. "settable_per_mesh": true,
  3413. "children":
  3414. {
  3415. "speed_print_layer_0":
  3416. {
  3417. "label": "Initial Layer Print Speed",
  3418. "description": "The speed of printing for the initial layer. A lower value is advised to improve adhesion to the build plate.",
  3419. "unit": "mm/s",
  3420. "type": "float",
  3421. "enabled": "speed_slowdown_layers > 0",
  3422. "default_value": 30,
  3423. "value": "speed_layer_0",
  3424. "minimum_value": "0.1",
  3425. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3426. "maximum_value_warning": "300",
  3427. "settable_per_mesh": true
  3428. },
  3429. "speed_travel_layer_0":
  3430. {
  3431. "label": "Initial Layer Travel Speed",
  3432. "description": "The speed of travel moves in the initial layer. A lower value is advised to prevent pulling previously printed parts away from the build plate. The value of this setting can automatically be calculated from the ratio between the Travel Speed and the Print Speed.",
  3433. "unit": "mm/s",
  3434. "type": "float",
  3435. "enabled": "speed_slowdown_layers > 0",
  3436. "default_value": 60,
  3437. "value": "speed_layer_0 * speed_travel / speed_print",
  3438. "minimum_value": "0.1",
  3439. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3440. "maximum_value_warning": "300",
  3441. "settable_per_extruder": true,
  3442. "settable_per_mesh": false
  3443. }
  3444. }
  3445. },
  3446. "skirt_brim_speed":
  3447. {
  3448. "label": "Skirt/Brim Speed",
  3449. "description": "The speed at which the skirt and brim are printed. Normally this is done at the initial layer speed, but sometimes you might want to print the skirt or brim at a different speed.",
  3450. "unit": "mm/s",
  3451. "type": "float",
  3452. "default_value": 30,
  3453. "minimum_value": "0.1",
  3454. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  3455. "maximum_value_warning": "300",
  3456. "value": "speed_layer_0",
  3457. "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled')",
  3458. "settable_per_mesh": false,
  3459. "settable_per_extruder": true,
  3460. "limit_to_extruder": "skirt_brim_extruder_nr"
  3461. },
  3462. "speed_z_hop":
  3463. {
  3464. "label": "Z Hop Speed",
  3465. "description": "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move.",
  3466. "unit": "mm/s",
  3467. "type": "float",
  3468. "default_value": 10,
  3469. "minimum_value": "0",
  3470. "maximum_value": "machine_max_feedrate_z",
  3471. "settable_per_mesh": false,
  3472. "settable_per_extruder": true
  3473. },
  3474. "speed_slowdown_layers":
  3475. {
  3476. "label": "Number of Slower Layers",
  3477. "description": "The first few layers are printed slower than the rest of the model, to get better adhesion to the build plate and improve the overall success rate of prints. The speed is gradually increased over these layers.",
  3478. "type": "int",
  3479. "default_value": 2,
  3480. "resolve": "round(sum(extruderValues('speed_slowdown_layers')) / len(extruderValues('speed_slowdown_layers')))",
  3481. "minimum_value": "0",
  3482. "maximum_value": "999999",
  3483. "maximum_value_warning": "3.2 / resolveOrValue('layer_height')",
  3484. "settable_per_mesh": false,
  3485. "settable_per_extruder": false
  3486. },
  3487. "speed_equalize_flow_width_factor":
  3488. {
  3489. "label": "Flow Equalization Ratio",
  3490. "description": "Extrusion width based correction factor on the speed. At 0% the movement speed is kept constant at the Print Speed. At 100% the movement speed is adjusted so that the flow (in mm\u00b3/s) is kept constant, i.e. lines half the normal Line Width are printed twice as fast and lines twice as wide are printed half as fast. A value larger than 100% can help to compensate for the higher pressure required to extrude wide lines.",
  3491. "type": "float",
  3492. "unit": "%",
  3493. "default_value": 100.0,
  3494. "minimum_value": "0.0",
  3495. "maximum_value_warning": "200.0",
  3496. "settable_per_mesh": false,
  3497. "settable_per_extruder": true
  3498. },
  3499. "acceleration_enabled":
  3500. {
  3501. "label": "Enable Acceleration Control",
  3502. "description": "Enables adjusting the print head acceleration. Increasing the accelerations can reduce printing time at the cost of print quality.",
  3503. "type": "bool",
  3504. "default_value": false,
  3505. "resolve": "any(extruderValues('acceleration_enabled'))",
  3506. "settable_per_mesh": false,
  3507. "settable_per_extruder": false
  3508. },
  3509. "acceleration_travel_enabled":
  3510. {
  3511. "label": "Enable Travel Acceleration",
  3512. "description": "Use a separate acceleration rate for travel moves. If disabled, travel moves will use the acceleration value of the printed line at their destination.",
  3513. "type": "bool",
  3514. "default_value": true,
  3515. "resolve": "any(extruderValues('acceleration_travel_enabled'))",
  3516. "enabled": "acceleration_enabled",
  3517. "settable_per_mesh": false,
  3518. "settable_per_extruder": false
  3519. },
  3520. "acceleration_print":
  3521. {
  3522. "label": "Print Acceleration",
  3523. "description": "The acceleration with which printing happens.",
  3524. "unit": "mm/s\u00b2",
  3525. "type": "float",
  3526. "minimum_value": "0.1",
  3527. "minimum_value_warning": "100",
  3528. "maximum_value_warning": "10000",
  3529. "default_value": 3000,
  3530. "enabled": "resolveOrValue('acceleration_enabled')",
  3531. "settable_per_mesh": true,
  3532. "children":
  3533. {
  3534. "acceleration_infill":
  3535. {
  3536. "label": "Infill Acceleration",
  3537. "description": "The acceleration with which infill is printed.",
  3538. "unit": "mm/s\u00b2",
  3539. "type": "float",
  3540. "minimum_value": "0.1",
  3541. "minimum_value_warning": "100",
  3542. "maximum_value_warning": "10000",
  3543. "default_value": 3000,
  3544. "value": "acceleration_print",
  3545. "enabled": "resolveOrValue('acceleration_enabled') and infill_sparse_density > 0",
  3546. "limit_to_extruder": "infill_extruder_nr",
  3547. "settable_per_mesh": true
  3548. },
  3549. "acceleration_wall":
  3550. {
  3551. "label": "Wall Acceleration",
  3552. "description": "The acceleration with which the walls are printed.",
  3553. "unit": "mm/s\u00b2",
  3554. "type": "float",
  3555. "minimum_value": "0.1",
  3556. "minimum_value_warning": "100",
  3557. "maximum_value_warning": "10000",
  3558. "default_value": 3000,
  3559. "value": "acceleration_print",
  3560. "enabled": "resolveOrValue('acceleration_enabled')",
  3561. "settable_per_mesh": true,
  3562. "children":
  3563. {
  3564. "acceleration_wall_0":
  3565. {
  3566. "label": "Outer Wall Acceleration",
  3567. "description": "The acceleration with which the outermost walls are printed.",
  3568. "unit": "mm/s\u00b2",
  3569. "type": "float",
  3570. "minimum_value": "0.1",
  3571. "minimum_value_warning": "100",
  3572. "maximum_value_warning": "10000",
  3573. "default_value": 3000,
  3574. "value": "acceleration_wall",
  3575. "enabled": "resolveOrValue('acceleration_enabled')",
  3576. "limit_to_extruder": "wall_0_extruder_nr",
  3577. "settable_per_mesh": true
  3578. },
  3579. "acceleration_wall_x":
  3580. {
  3581. "label": "Inner Wall Acceleration",
  3582. "description": "The acceleration with which all inner walls are printed.",
  3583. "unit": "mm/s\u00b2",
  3584. "type": "float",
  3585. "minimum_value": "0.1",
  3586. "minimum_value_warning": "100",
  3587. "maximum_value_warning": "10000",
  3588. "default_value": 3000,
  3589. "value": "acceleration_wall",
  3590. "enabled": "resolveOrValue('acceleration_enabled')",
  3591. "limit_to_extruder": "wall_x_extruder_nr",
  3592. "settable_per_mesh": true
  3593. },
  3594. "acceleration_wall_0_roofing":
  3595. {
  3596. "label": "Top Surface Outer Wall Acceleration",
  3597. "description": "The acceleration with which the top surface outermost walls are printed.",
  3598. "unit": "mm/s\u00b2",
  3599. "type": "float",
  3600. "minimum_value": "0.1",
  3601. "minimum_value_warning": "100",
  3602. "maximum_value_warning": "10000",
  3603. "default_value": 3000,
  3604. "value": "acceleration_wall_0",
  3605. "enabled": "resolveOrValue('acceleration_enabled')",
  3606. "limit_to_extruder": "wall_0_extruder_nr",
  3607. "settable_per_mesh": true
  3608. },
  3609. "acceleration_wall_x_roofing":
  3610. {
  3611. "label": "Top Surface Inner Wall Acceleration",
  3612. "description": "The acceleration with which the top surface inner walls are printed.",
  3613. "unit": "mm/s\u00b2",
  3614. "type": "float",
  3615. "minimum_value": "0.1",
  3616. "minimum_value_warning": "100",
  3617. "maximum_value_warning": "10000",
  3618. "default_value": 3000,
  3619. "value": "acceleration_wall_x",
  3620. "enabled": "resolveOrValue('acceleration_enabled')",
  3621. "limit_to_extruder": "wall_x_extruder_nr",
  3622. "settable_per_mesh": true
  3623. }
  3624. }
  3625. },
  3626. "acceleration_roofing":
  3627. {
  3628. "label": "Top Surface Skin Acceleration",
  3629. "description": "The acceleration with which top surface skin layers are printed.",
  3630. "unit": "mm/s\u00b2",
  3631. "type": "float",
  3632. "minimum_value": "0.1",
  3633. "minimum_value_warning": "100",
  3634. "maximum_value_warning": "10000",
  3635. "default_value": 3000,
  3636. "value": "acceleration_topbottom",
  3637. "enabled": "resolveOrValue('acceleration_enabled') and roofing_layer_count > 0 and top_layers > 0",
  3638. "limit_to_extruder": "roofing_extruder_nr",
  3639. "settable_per_mesh": true
  3640. },
  3641. "acceleration_topbottom":
  3642. {
  3643. "label": "Top/Bottom Acceleration",
  3644. "description": "The acceleration with which top/bottom layers are printed.",
  3645. "unit": "mm/s\u00b2",
  3646. "type": "float",
  3647. "minimum_value": "0.1",
  3648. "minimum_value_warning": "100",
  3649. "maximum_value_warning": "10000",
  3650. "default_value": 3000,
  3651. "value": "acceleration_print",
  3652. "enabled": "resolveOrValue('acceleration_enabled')",
  3653. "limit_to_extruder": "top_bottom_extruder_nr",
  3654. "settable_per_mesh": true
  3655. },
  3656. "acceleration_support":
  3657. {
  3658. "label": "Support Acceleration",
  3659. "description": "The acceleration with which the support structure is printed.",
  3660. "unit": "mm/s\u00b2",
  3661. "type": "float",
  3662. "minimum_value": "0.1",
  3663. "minimum_value_warning": "100",
  3664. "maximum_value_warning": "10000",
  3665. "default_value": 3000,
  3666. "value": "acceleration_print",
  3667. "enabled": "resolveOrValue('acceleration_enabled') and (support_enable or support_meshes_present)",
  3668. "settable_per_mesh": false,
  3669. "limit_to_extruder": "support_extruder_nr",
  3670. "settable_per_extruder": true,
  3671. "children":
  3672. {
  3673. "acceleration_support_infill":
  3674. {
  3675. "label": "Support Infill Acceleration",
  3676. "description": "The acceleration with which the infill of support is printed.",
  3677. "unit": "mm/s\u00b2",
  3678. "type": "float",
  3679. "default_value": 3000,
  3680. "value": "acceleration_support",
  3681. "minimum_value": "0.1",
  3682. "minimum_value_warning": "100",
  3683. "maximum_value_warning": "10000",
  3684. "enabled": "resolveOrValue('acceleration_enabled') and (support_enable or support_meshes_present)",
  3685. "limit_to_extruder": "support_infill_extruder_nr",
  3686. "settable_per_mesh": false,
  3687. "settable_per_extruder": true
  3688. },
  3689. "acceleration_support_interface":
  3690. {
  3691. "label": "Support Interface Acceleration",
  3692. "description": "The acceleration with which the roofs and floors of support are printed. Printing them at lower acceleration can improve overhang quality.",
  3693. "unit": "mm/s\u00b2",
  3694. "type": "float",
  3695. "default_value": 3000,
  3696. "value": "acceleration_support",
  3697. "minimum_value": "0.1",
  3698. "minimum_value_warning": "100",
  3699. "maximum_value_warning": "10000",
  3700. "enabled": "resolveOrValue('acceleration_enabled') and support_interface_enable and (support_enable or support_meshes_present)",
  3701. "limit_to_extruder": "support_interface_extruder_nr",
  3702. "settable_per_mesh": false,
  3703. "settable_per_extruder": true,
  3704. "children":
  3705. {
  3706. "acceleration_support_roof":
  3707. {
  3708. "label": "Support Roof Acceleration",
  3709. "description": "The acceleration with which the roofs of support are printed. Printing them at lower acceleration can improve overhang quality.",
  3710. "unit": "mm/s\u00b2",
  3711. "type": "float",
  3712. "default_value": 3000,
  3713. "value": "extruderValue(support_roof_extruder_nr, 'acceleration_support_interface')",
  3714. "minimum_value": "0.1",
  3715. "minimum_value_warning": "100",
  3716. "maximum_value_warning": "10000",
  3717. "enabled": "acceleration_enabled and support_roof_enable and (support_enable or support_meshes_present)",
  3718. "limit_to_extruder": "support_roof_extruder_nr",
  3719. "settable_per_mesh": false,
  3720. "settable_per_extruder": true
  3721. },
  3722. "acceleration_support_bottom":
  3723. {
  3724. "label": "Support Floor Acceleration",
  3725. "description": "The acceleration with which the floors of support are printed. Printing them at lower acceleration can improve adhesion of support on top of your model.",
  3726. "unit": "mm/s\u00b2",
  3727. "type": "float",
  3728. "default_value": 3000,
  3729. "value": "extruderValue(support_bottom_extruder_nr, 'acceleration_support_interface')",
  3730. "minimum_value": "0.1",
  3731. "minimum_value_warning": "100",
  3732. "maximum_value_warning": "10000",
  3733. "enabled": "acceleration_enabled and support_bottom_enable and (support_enable or support_meshes_present)",
  3734. "limit_to_extruder": "support_bottom_extruder_nr",
  3735. "settable_per_mesh": false,
  3736. "settable_per_extruder": true
  3737. }
  3738. }
  3739. }
  3740. }
  3741. },
  3742. "acceleration_prime_tower":
  3743. {
  3744. "label": "Prime Tower Acceleration",
  3745. "description": "The acceleration with which the prime tower is printed.",
  3746. "unit": "mm/s\u00b2",
  3747. "type": "float",
  3748. "minimum_value": "0.1",
  3749. "minimum_value_warning": "100",
  3750. "maximum_value_warning": "10000",
  3751. "default_value": 3000,
  3752. "value": "acceleration_print",
  3753. "enabled": "prime_tower_enable and resolveOrValue('acceleration_enabled')",
  3754. "settable_per_mesh": false
  3755. }
  3756. }
  3757. },
  3758. "acceleration_travel":
  3759. {
  3760. "label": "Travel Acceleration",
  3761. "description": "The acceleration with which travel moves are made.",
  3762. "unit": "mm/s\u00b2",
  3763. "type": "float",
  3764. "default_value": 5000,
  3765. "minimum_value": "0.1",
  3766. "minimum_value_warning": "100",
  3767. "maximum_value_warning": "10000",
  3768. "value": "acceleration_print if magic_spiralize else 5000",
  3769. "enabled": "resolveOrValue('acceleration_enabled') and resolveOrValue('acceleration_travel_enabled')",
  3770. "settable_per_mesh": false
  3771. },
  3772. "acceleration_layer_0":
  3773. {
  3774. "label": "Initial Layer Acceleration",
  3775. "description": "The acceleration for the initial layer.",
  3776. "unit": "mm/s\u00b2",
  3777. "type": "float",
  3778. "default_value": 3000,
  3779. "value": "acceleration_print",
  3780. "minimum_value": "0.1",
  3781. "minimum_value_warning": "100",
  3782. "maximum_value_warning": "10000",
  3783. "enabled": "resolveOrValue('acceleration_enabled')",
  3784. "settable_per_mesh": true,
  3785. "children":
  3786. {
  3787. "acceleration_print_layer_0":
  3788. {
  3789. "label": "Initial Layer Print Acceleration",
  3790. "description": "The acceleration during the printing of the initial layer.",
  3791. "unit": "mm/s\u00b2",
  3792. "type": "float",
  3793. "default_value": 3000,
  3794. "value": "acceleration_layer_0",
  3795. "minimum_value": "0.1",
  3796. "minimum_value_warning": "100",
  3797. "maximum_value_warning": "10000",
  3798. "enabled": "resolveOrValue('acceleration_enabled')",
  3799. "settable_per_mesh": true
  3800. },
  3801. "acceleration_travel_layer_0":
  3802. {
  3803. "label": "Initial Layer Travel Acceleration",
  3804. "description": "The acceleration for travel moves in the initial layer.",
  3805. "unit": "mm/s\u00b2",
  3806. "type": "float",
  3807. "default_value": 3000,
  3808. "value": "acceleration_layer_0 * acceleration_travel / acceleration_print",
  3809. "minimum_value": "0.1",
  3810. "minimum_value_warning": "100",
  3811. "maximum_value_warning": "10000",
  3812. "enabled": "resolveOrValue('acceleration_enabled') and resolveOrValue('acceleration_travel_enabled')",
  3813. "settable_per_extruder": true,
  3814. "settable_per_mesh": false
  3815. }
  3816. }
  3817. },
  3818. "acceleration_skirt_brim":
  3819. {
  3820. "label": "Skirt/Brim Acceleration",
  3821. "description": "The acceleration with which the skirt and brim are printed. Normally this is done with the initial layer acceleration, but sometimes you might want to print the skirt or brim at a different acceleration.",
  3822. "unit": "mm/s\u00b2",
  3823. "type": "float",
  3824. "default_value": 3000,
  3825. "value": "acceleration_layer_0",
  3826. "minimum_value": "0.1",
  3827. "minimum_value_warning": "100",
  3828. "maximum_value_warning": "10000",
  3829. "enabled": "resolveOrValue('acceleration_enabled') and (resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled'))",
  3830. "settable_per_mesh": false,
  3831. "limit_to_extruder": "skirt_brim_extruder_nr"
  3832. },
  3833. "jerk_enabled":
  3834. {
  3835. "label": "Enable Jerk Control",
  3836. "description": "Enables adjusting the jerk of print head when the velocity in the X or Y axis changes. Increasing the jerk can reduce printing time at the cost of print quality.",
  3837. "type": "bool",
  3838. "default_value": false,
  3839. "resolve": "any(extruderValues('jerk_enabled'))",
  3840. "settable_per_mesh": false,
  3841. "settable_per_extruder": false
  3842. },
  3843. "jerk_travel_enabled":
  3844. {
  3845. "label": "Enable Travel Jerk",
  3846. "description": "Use a separate jerk rate for travel moves. If disabled, travel moves will use the jerk value of the printed line at their destination.",
  3847. "type": "bool",
  3848. "default_value": true,
  3849. "resolve": "any(extruderValues('jerk_travel_enabled'))",
  3850. "enabled": "jerk_enabled",
  3851. "settable_per_mesh": false,
  3852. "settable_per_extruder": false
  3853. },
  3854. "jerk_print":
  3855. {
  3856. "label": "Print Jerk",
  3857. "description": "The maximum instantaneous velocity change of the print head.",
  3858. "unit": "mm/s",
  3859. "type": "float",
  3860. "minimum_value": "0",
  3861. "maximum_value_warning": "50",
  3862. "default_value": 20,
  3863. "enabled": "resolveOrValue('jerk_enabled')",
  3864. "settable_per_mesh": true,
  3865. "children":
  3866. {
  3867. "jerk_infill":
  3868. {
  3869. "label": "Infill Jerk",
  3870. "description": "The maximum instantaneous velocity change with which infill is printed.",
  3871. "unit": "mm/s",
  3872. "type": "float",
  3873. "minimum_value": "0",
  3874. "maximum_value_warning": "50",
  3875. "default_value": 20,
  3876. "value": "jerk_print",
  3877. "enabled": "resolveOrValue('jerk_enabled') and infill_sparse_density > 0",
  3878. "limit_to_extruder": "infill_extruder_nr",
  3879. "settable_per_mesh": true
  3880. },
  3881. "jerk_wall":
  3882. {
  3883. "label": "Wall Jerk",
  3884. "description": "The maximum instantaneous velocity change with which the walls are printed.",
  3885. "unit": "mm/s",
  3886. "type": "float",
  3887. "minimum_value": "0",
  3888. "maximum_value_warning": "50",
  3889. "default_value": 20,
  3890. "value": "jerk_print",
  3891. "enabled": "resolveOrValue('jerk_enabled')",
  3892. "settable_per_mesh": true,
  3893. "children":
  3894. {
  3895. "jerk_wall_0":
  3896. {
  3897. "label": "Outer Wall Jerk",
  3898. "description": "The maximum instantaneous velocity change with which the outermost walls are printed.",
  3899. "unit": "mm/s",
  3900. "type": "float",
  3901. "minimum_value": "0",
  3902. "maximum_value_warning": "50",
  3903. "default_value": 20,
  3904. "value": "jerk_wall",
  3905. "enabled": "resolveOrValue('jerk_enabled')",
  3906. "limit_to_extruder": "wall_0_extruder_nr",
  3907. "settable_per_mesh": true
  3908. },
  3909. "jerk_wall_x":
  3910. {
  3911. "label": "Inner Wall Jerk",
  3912. "description": "The maximum instantaneous velocity change with which all inner walls are printed.",
  3913. "unit": "mm/s",
  3914. "type": "float",
  3915. "minimum_value": "0",
  3916. "maximum_value_warning": "50",
  3917. "default_value": 20,
  3918. "value": "jerk_wall",
  3919. "enabled": "resolveOrValue('jerk_enabled')",
  3920. "limit_to_extruder": "wall_x_extruder_nr",
  3921. "settable_per_mesh": true
  3922. },
  3923. "jerk_wall_0_roofing":
  3924. {
  3925. "label": "Top Surface Outer Wall Jerk",
  3926. "description": "The maximum instantaneous velocity change with which the top surface outermost walls are printed.",
  3927. "unit": "mm/s",
  3928. "type": "float",
  3929. "minimum_value": "0",
  3930. "maximum_value_warning": "50",
  3931. "default_value": 20,
  3932. "value": "jerk_wall_0",
  3933. "enabled": "resolveOrValue('jerk_enabled')",
  3934. "limit_to_extruder": "wall_0_extruder_nr",
  3935. "settable_per_mesh": true
  3936. },
  3937. "jerk_wall_x_roofing":
  3938. {
  3939. "label": "Top Surface Inner Wall Jerk",
  3940. "description": "The maximum instantaneous velocity change with which the top surface inner walls are printed.",
  3941. "unit": "mm/s",
  3942. "type": "float",
  3943. "minimum_value": "0",
  3944. "maximum_value_warning": "50",
  3945. "default_value": 20,
  3946. "value": "jerk_wall_x",
  3947. "enabled": "resolveOrValue('jerk_enabled')",
  3948. "limit_to_extruder": "wall_x_extruder_nr",
  3949. "settable_per_mesh": true
  3950. }
  3951. }
  3952. },
  3953. "jerk_roofing":
  3954. {
  3955. "label": "Top Surface Skin Jerk",
  3956. "description": "The maximum instantaneous velocity change with which top surface skin layers are printed.",
  3957. "unit": "mm/s",
  3958. "type": "float",
  3959. "minimum_value": "0",
  3960. "maximum_value_warning": "50",
  3961. "default_value": 20,
  3962. "value": "jerk_topbottom",
  3963. "enabled": "resolveOrValue('jerk_enabled') and roofing_layer_count > 0 and top_layers > 0",
  3964. "limit_to_extruder": "roofing_extruder_nr",
  3965. "settable_per_mesh": true
  3966. },
  3967. "jerk_topbottom":
  3968. {
  3969. "label": "Top/Bottom Jerk",
  3970. "description": "The maximum instantaneous velocity change with which top/bottom layers are printed.",
  3971. "unit": "mm/s",
  3972. "type": "float",
  3973. "minimum_value": "0",
  3974. "maximum_value_warning": "50",
  3975. "default_value": 20,
  3976. "value": "jerk_print",
  3977. "enabled": "(top_layers > 0 or bottom_layers > 0) and resolveOrValue('jerk_enabled')",
  3978. "limit_to_extruder": "top_bottom_extruder_nr",
  3979. "settable_per_mesh": true
  3980. },
  3981. "jerk_support":
  3982. {
  3983. "label": "Support Jerk",
  3984. "description": "The maximum instantaneous velocity change with which the support structure is printed.",
  3985. "unit": "mm/s",
  3986. "type": "float",
  3987. "minimum_value": "0",
  3988. "maximum_value_warning": "50",
  3989. "default_value": 20,
  3990. "value": "jerk_print",
  3991. "enabled": "resolveOrValue('jerk_enabled') and (support_enable or support_meshes_present)",
  3992. "settable_per_mesh": false,
  3993. "settable_per_extruder": true,
  3994. "limit_to_extruder": "support_extruder_nr",
  3995. "children":
  3996. {
  3997. "jerk_support_infill":
  3998. {
  3999. "label": "Support Infill Jerk",
  4000. "description": "The maximum instantaneous velocity change with which the infill of support is printed.",
  4001. "unit": "mm/s",
  4002. "type": "float",
  4003. "default_value": 20,
  4004. "value": "jerk_support",
  4005. "minimum_value": "0",
  4006. "maximum_value_warning": "50",
  4007. "enabled": "resolveOrValue('jerk_enabled') and (support_enable or support_meshes_present)",
  4008. "limit_to_extruder": "support_infill_extruder_nr",
  4009. "settable_per_mesh": false,
  4010. "settable_per_extruder": true
  4011. },
  4012. "jerk_support_interface":
  4013. {
  4014. "label": "Support Interface Jerk",
  4015. "description": "The maximum instantaneous velocity change with which the roofs and floors of support are printed.",
  4016. "unit": "mm/s",
  4017. "type": "float",
  4018. "default_value": 20,
  4019. "value": "jerk_support",
  4020. "minimum_value": "0",
  4021. "maximum_value_warning": "50",
  4022. "enabled": "resolveOrValue('jerk_enabled') and support_interface_enable and (support_enable or support_meshes_present)",
  4023. "limit_to_extruder": "support_interface_extruder_nr",
  4024. "settable_per_mesh": false,
  4025. "settable_per_extruder": true,
  4026. "children":
  4027. {
  4028. "jerk_support_roof":
  4029. {
  4030. "label": "Support Roof Jerk",
  4031. "description": "The maximum instantaneous velocity change with which the roofs of support are printed.",
  4032. "unit": "mm/s",
  4033. "type": "float",
  4034. "default_value": 20,
  4035. "value": "extruderValue(support_roof_extruder_nr, 'jerk_support_interface')",
  4036. "minimum_value": "0",
  4037. "maximum_value_warning": "50",
  4038. "enabled": "resolveOrValue('jerk_enabled') and support_roof_enable and (support_enable or support_meshes_present)",
  4039. "limit_to_extruder": "support_roof_extruder_nr",
  4040. "settable_per_mesh": false,
  4041. "settable_per_extruder": true
  4042. },
  4043. "jerk_support_bottom":
  4044. {
  4045. "label": "Support Floor Jerk",
  4046. "description": "The maximum instantaneous velocity change with which the floors of support are printed.",
  4047. "unit": "mm/s",
  4048. "type": "float",
  4049. "default_value": 20,
  4050. "value": "extruderValue(support_roof_extruder_nr, 'jerk_support_interface')",
  4051. "minimum_value": "0",
  4052. "maximum_value_warning": "50",
  4053. "enabled": "resolveOrValue('jerk_enabled') and support_bottom_enable and (support_enable or support_meshes_present)",
  4054. "limit_to_extruder": "support_bottom_extruder_nr",
  4055. "settable_per_mesh": false,
  4056. "settable_per_extruder": true
  4057. }
  4058. }
  4059. }
  4060. }
  4061. },
  4062. "jerk_prime_tower":
  4063. {
  4064. "label": "Prime Tower Jerk",
  4065. "description": "The maximum instantaneous velocity change with which the prime tower is printed.",
  4066. "unit": "mm/s",
  4067. "type": "float",
  4068. "minimum_value": "0",
  4069. "maximum_value_warning": "50",
  4070. "default_value": 20,
  4071. "value": "jerk_print",
  4072. "enabled": "prime_tower_enable and resolveOrValue('jerk_enabled')",
  4073. "settable_per_mesh": false
  4074. }
  4075. }
  4076. },
  4077. "jerk_travel":
  4078. {
  4079. "label": "Travel Jerk",
  4080. "description": "The maximum instantaneous velocity change with which travel moves are made.",
  4081. "unit": "mm/s",
  4082. "type": "float",
  4083. "default_value": 30,
  4084. "minimum_value": "0",
  4085. "maximum_value_warning": "50",
  4086. "value": "jerk_print if magic_spiralize else 30",
  4087. "enabled": "resolveOrValue('jerk_enabled') and resolveOrValue('jerk_travel_enabled')",
  4088. "settable_per_mesh": false
  4089. },
  4090. "jerk_layer_0":
  4091. {
  4092. "label": "Initial Layer Jerk",
  4093. "description": "The print maximum instantaneous velocity change for the initial layer.",
  4094. "unit": "mm/s",
  4095. "type": "float",
  4096. "default_value": 20,
  4097. "value": "jerk_print",
  4098. "minimum_value": "0",
  4099. "maximum_value_warning": "50",
  4100. "enabled": "resolveOrValue('jerk_enabled')",
  4101. "settable_per_mesh": true,
  4102. "children":
  4103. {
  4104. "jerk_print_layer_0":
  4105. {
  4106. "label": "Initial Layer Print Jerk",
  4107. "description": "The maximum instantaneous velocity change during the printing of the initial layer.",
  4108. "unit": "mm/s",
  4109. "type": "float",
  4110. "default_value": 20,
  4111. "value": "jerk_layer_0",
  4112. "minimum_value": "0",
  4113. "maximum_value_warning": "50",
  4114. "enabled": "resolveOrValue('jerk_enabled')",
  4115. "settable_per_mesh": true
  4116. },
  4117. "jerk_travel_layer_0":
  4118. {
  4119. "label": "Initial Layer Travel Jerk",
  4120. "description": "The acceleration for travel moves in the initial layer.",
  4121. "unit": "mm/s",
  4122. "type": "float",
  4123. "default_value": 20,
  4124. "value": "jerk_layer_0 * jerk_travel / jerk_print",
  4125. "minimum_value": "0",
  4126. "maximum_value_warning": "50",
  4127. "enabled": "resolveOrValue('jerk_enabled') and resolveOrValue('jerk_travel_enabled')",
  4128. "settable_per_extruder": true,
  4129. "settable_per_mesh": false
  4130. }
  4131. }
  4132. },
  4133. "jerk_skirt_brim":
  4134. {
  4135. "label": "Skirt/Brim Jerk",
  4136. "description": "The maximum instantaneous velocity change with which the skirt and brim are printed.",
  4137. "unit": "mm/s",
  4138. "type": "float",
  4139. "default_value": 20,
  4140. "minimum_value": "0",
  4141. "maximum_value_warning": "50",
  4142. "value": "jerk_layer_0",
  4143. "enabled": "resolveOrValue('jerk_enabled') and (resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled'))",
  4144. "settable_per_mesh": false,
  4145. "limit_to_extruder": "skirt_brim_extruder_nr"
  4146. }
  4147. }
  4148. },
  4149. "travel":
  4150. {
  4151. "label": "Travel",
  4152. "icon": "PrintTravel",
  4153. "description": "travel",
  4154. "type": "category",
  4155. "children":
  4156. {
  4157. "retraction_enable":
  4158. {
  4159. "label": "Enable Retraction",
  4160. "description": "Retract the filament when the nozzle is moving over a non-printed area.",
  4161. "type": "bool",
  4162. "default_value": true,
  4163. "settable_per_mesh": false,
  4164. "settable_per_extruder": true
  4165. },
  4166. "retract_at_layer_change":
  4167. {
  4168. "label": "Retract at Layer Change",
  4169. "description": "Retract the filament when the nozzle is moving to the next layer.",
  4170. "type": "bool",
  4171. "default_value": false,
  4172. "settable_per_mesh": false,
  4173. "settable_per_extruder": true
  4174. },
  4175. "retraction_amount":
  4176. {
  4177. "label": "Retraction Distance",
  4178. "description": "The length of material retracted during a retraction move.",
  4179. "unit": "mm",
  4180. "type": "float",
  4181. "default_value": 6.5,
  4182. "minimum_value_warning": "-0.0001",
  4183. "maximum_value_warning": "10.0",
  4184. "enabled": "retraction_enable and machine_gcode_flavor != \"UltiGCode\"",
  4185. "settable_per_mesh": false,
  4186. "settable_per_extruder": true
  4187. },
  4188. "retraction_speed":
  4189. {
  4190. "label": "Retraction Speed",
  4191. "description": "The speed at which the filament is retracted and primed during a retraction move.",
  4192. "unit": "mm/s",
  4193. "type": "float",
  4194. "default_value": 25,
  4195. "minimum_value": "0.0001",
  4196. "minimum_value_warning": "1",
  4197. "maximum_value": "machine_max_feedrate_e if retraction_enable else float('inf')",
  4198. "maximum_value_warning": "70",
  4199. "enabled": "retraction_enable and machine_gcode_flavor != \"UltiGCode\"",
  4200. "settable_per_mesh": true,
  4201. "settable_per_extruder": true,
  4202. "children":
  4203. {
  4204. "retraction_retract_speed":
  4205. {
  4206. "label": "Retraction Retract Speed",
  4207. "description": "The speed at which the filament is retracted during a retraction move.",
  4208. "unit": "mm/s",
  4209. "type": "float",
  4210. "default_value": 25,
  4211. "minimum_value": "0.0001",
  4212. "maximum_value": "machine_max_feedrate_e if retraction_enable else float('inf')",
  4213. "minimum_value_warning": "1",
  4214. "maximum_value_warning": "70",
  4215. "enabled": "retraction_enable and machine_gcode_flavor != \"UltiGCode\"",
  4216. "value": "retraction_speed",
  4217. "settable_per_mesh": true,
  4218. "settable_per_extruder": true
  4219. },
  4220. "retraction_prime_speed":
  4221. {
  4222. "label": "Retraction Prime Speed",
  4223. "description": "The speed at which the filament is primed during a retraction move.",
  4224. "unit": "mm/s",
  4225. "type": "float",
  4226. "default_value": 25,
  4227. "minimum_value": "0.0001",
  4228. "maximum_value": "machine_max_feedrate_e if retraction_enable else float('inf')",
  4229. "minimum_value_warning": "1",
  4230. "maximum_value_warning": "70",
  4231. "enabled": "retraction_enable and machine_gcode_flavor != \"UltiGCode\"",
  4232. "value": "retraction_speed",
  4233. "settable_per_mesh": true,
  4234. "settable_per_extruder": true
  4235. }
  4236. }
  4237. },
  4238. "retraction_extra_prime_amount":
  4239. {
  4240. "label": "Retraction Extra Prime Amount",
  4241. "description": "Some material can ooze away during a travel move, which can be compensated for here.",
  4242. "unit": "mm\u00b3",
  4243. "type": "float",
  4244. "default_value": 0,
  4245. "minimum_value_warning": "-0.0001",
  4246. "maximum_value_warning": "5.0",
  4247. "enabled": "retraction_enable",
  4248. "settable_per_mesh": true,
  4249. "settable_per_extruder": true
  4250. },
  4251. "retraction_min_travel":
  4252. {
  4253. "label": "Retraction Minimum Travel",
  4254. "description": "The minimum distance of travel needed for a retraction to happen at all. This helps to get fewer retractions in a small area.",
  4255. "unit": "mm",
  4256. "type": "float",
  4257. "default_value": 1.5,
  4258. "value": "line_width * 2",
  4259. "minimum_value": "0",
  4260. "minimum_value_warning": "line_width * 1.5",
  4261. "maximum_value_warning": "10",
  4262. "settable_per_mesh": true,
  4263. "settable_per_extruder": true
  4264. },
  4265. "retraction_count_max":
  4266. {
  4267. "label": "Maximum Retraction Count",
  4268. "description": "This setting limits the number of retractions occurring within the minimum extrusion distance window. Further retractions within this window will be ignored. This avoids retracting repeatedly on the same piece of filament, as that can flatten the filament and cause grinding issues.",
  4269. "default_value": 90,
  4270. "minimum_value": "0",
  4271. "maximum_value_warning": "100",
  4272. "maximum_value": 999999999,
  4273. "type": "int",
  4274. "enabled": "retraction_enable",
  4275. "settable_per_mesh": false,
  4276. "settable_per_extruder": true
  4277. },
  4278. "retraction_extrusion_window":
  4279. {
  4280. "label": "Minimum Extrusion Distance Window",
  4281. "description": "The window in which the maximum retraction count is enforced. This value should be approximately the same as the retraction distance, so that effectively the number of times a retraction passes the same patch of material is limited.",
  4282. "unit": "mm",
  4283. "type": "float",
  4284. "default_value": 4.5,
  4285. "minimum_value": "0",
  4286. "maximum_value_warning": "retraction_amount * 2",
  4287. "value": "retraction_amount",
  4288. "enabled": "retraction_enable",
  4289. "settable_per_mesh": false,
  4290. "settable_per_extruder": true
  4291. },
  4292. "retraction_combing":
  4293. {
  4294. "label": "Combing Mode",
  4295. "description": "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas or to only comb within the infill.",
  4296. "type": "enum",
  4297. "options":
  4298. {
  4299. "off": "Off",
  4300. "all": "All",
  4301. "no_outer_surfaces": "Not on Outer Surface",
  4302. "noskin": "Not in Skin",
  4303. "infill": "Within Infill"
  4304. },
  4305. "default_value": "all",
  4306. "value": "'no_outer_surfaces' if (any(extruderValues('skin_monotonic')) or any(extruderValues('ironing_enabled')) or (any(extruderValues('roofing_monotonic')) and any(extruderValues('roofing_layer_count')))) else 'all'",
  4307. "resolve": "'noskin' if 'noskin' in extruderValues('retraction_combing') else ('infill' if 'infill' in extruderValues('retraction_combing') else ('all' if 'all' in extruderValues('retraction_combing') else ('no_outer_surfaces' if 'no_outer_surfaces' in extruderValues('retraction_combing') else 'off')))",
  4308. "settable_per_mesh": false,
  4309. "settable_per_extruder": false
  4310. },
  4311. "retraction_combing_max_distance":
  4312. {
  4313. "label": "Max Comb Distance With No Retract",
  4314. "description": "When greater than zero, combing travel moves that are longer than this distance will use retraction. If set to zero, there is no maximum and combing moves will not use retraction.",
  4315. "unit": "mm",
  4316. "type": "float",
  4317. "default_value": 0,
  4318. "minimum_value": "0",
  4319. "enabled": "resolveOrValue('retraction_combing') != 'off'",
  4320. "settable_per_mesh": false,
  4321. "settable_per_extruder": true
  4322. },
  4323. "travel_retract_before_outer_wall":
  4324. {
  4325. "label": "Retract Before Outer Wall",
  4326. "description": "Always retract when moving to start an outer wall.",
  4327. "type": "bool",
  4328. "default_value": false,
  4329. "enabled": "retraction_enable",
  4330. "settable_per_mesh": false,
  4331. "settable_per_extruder": false
  4332. },
  4333. "travel_avoid_other_parts":
  4334. {
  4335. "label": "Avoid Printed Parts When Traveling",
  4336. "description": "The nozzle avoids already printed parts when traveling. This option is only available when combing is enabled.",
  4337. "type": "bool",
  4338. "default_value": true,
  4339. "enabled": "resolveOrValue('retraction_combing') != 'off'",
  4340. "settable_per_mesh": false,
  4341. "settable_per_extruder": true
  4342. },
  4343. "travel_avoid_supports":
  4344. {
  4345. "label": "Avoid Supports When Traveling",
  4346. "description": "The nozzle avoids already printed supports when traveling. This option is only available when combing is enabled.",
  4347. "type": "bool",
  4348. "default_value": false,
  4349. "enabled": "resolveOrValue('retraction_combing') != 'off' and travel_avoid_other_parts",
  4350. "settable_per_mesh": false,
  4351. "settable_per_extruder": true
  4352. },
  4353. "travel_avoid_distance":
  4354. {
  4355. "label": "Travel Avoid Distance",
  4356. "description": "The distance between the nozzle and already printed parts when avoiding during travel moves.",
  4357. "unit": "mm",
  4358. "type": "float",
  4359. "default_value": 0.625,
  4360. "value": "machine_nozzle_tip_outer_diameter / 2 * 1.25",
  4361. "minimum_value": "0",
  4362. "minimum_value_warning": "machine_nozzle_tip_outer_diameter * 0.5",
  4363. "maximum_value_warning": "machine_nozzle_tip_outer_diameter * 5",
  4364. "enabled": "resolveOrValue('retraction_combing') != 'off' and travel_avoid_other_parts",
  4365. "settable_per_mesh": false,
  4366. "settable_per_extruder": true
  4367. },
  4368. "layer_start_x":
  4369. {
  4370. "label": "Layer Start X",
  4371. "description": "The X coordinate of the position near where to find the part to start printing each layer.",
  4372. "unit": "mm",
  4373. "type": "float",
  4374. "default_value": 0.0,
  4375. "minimum_value": "machine_width / -2 if machine_center_is_zero else 0",
  4376. "settable_per_mesh": false,
  4377. "settable_per_extruder": true,
  4378. "settable_per_meshgroup": true
  4379. },
  4380. "layer_start_y":
  4381. {
  4382. "label": "Layer Start Y",
  4383. "description": "The Y coordinate of the position near where to find the part to start printing each layer.",
  4384. "unit": "mm",
  4385. "type": "float",
  4386. "default_value": 0.0,
  4387. "minimum_value": "machine_depth / -2 if machine_center_is_zero else 0",
  4388. "settable_per_mesh": false,
  4389. "settable_per_extruder": true,
  4390. "settable_per_meshgroup": true
  4391. },
  4392. "retraction_hop_enabled":
  4393. {
  4394. "label": "Z Hop When Retracted",
  4395. "description": "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate.",
  4396. "type": "bool",
  4397. "default_value": false,
  4398. "enabled": "retraction_enable",
  4399. "settable_per_mesh": false,
  4400. "settable_per_extruder": true
  4401. },
  4402. "retraction_hop_only_when_collides":
  4403. {
  4404. "label": "Z Hop Only Over Printed Parts",
  4405. "description": "Only perform a Z Hop when moving over printed parts which cannot be avoided by horizontal motion by Avoid Printed Parts when Traveling.",
  4406. "type": "bool",
  4407. "default_value": false,
  4408. "enabled": "retraction_enable and retraction_hop_enabled and travel_avoid_other_parts",
  4409. "settable_per_mesh": true,
  4410. "settable_per_extruder": true
  4411. },
  4412. "retraction_hop":
  4413. {
  4414. "label": "Z Hop Height",
  4415. "description": "The height difference when performing a Z Hop.",
  4416. "unit": "mm",
  4417. "type": "float",
  4418. "default_value": 1,
  4419. "minimum_value_warning": "0",
  4420. "maximum_value_warning": "10",
  4421. "enabled": "retraction_enable and retraction_hop_enabled",
  4422. "settable_per_mesh": true,
  4423. "settable_per_extruder": true
  4424. },
  4425. "retraction_hop_after_extruder_switch":
  4426. {
  4427. "label": "Z Hop After Extruder Switch",
  4428. "description": "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print.",
  4429. "type": "bool",
  4430. "default_value": true,
  4431. "enabled": "retraction_hop_enabled and extruders_enabled_count > 1",
  4432. "settable_per_mesh": false,
  4433. "settable_per_extruder": true
  4434. },
  4435. "retraction_hop_after_extruder_switch_height":
  4436. {
  4437. "label": "Z Hop After Extruder Switch Height",
  4438. "description": "The height difference when performing a Z Hop after extruder switch.",
  4439. "unit": "mm",
  4440. "type": "float",
  4441. "default_value": 1,
  4442. "value": "retraction_hop",
  4443. "minimum_value_warning": "0",
  4444. "maximum_value_warning": "10",
  4445. "enabled": "retraction_enable and retraction_hop_after_extruder_switch and extruders_enabled_count > 1",
  4446. "settable_per_mesh": false,
  4447. "settable_per_extruder": true
  4448. }
  4449. }
  4450. },
  4451. "cooling":
  4452. {
  4453. "label": "Cooling",
  4454. "icon": "Fan",
  4455. "description": "Cooling",
  4456. "type": "category",
  4457. "children":
  4458. {
  4459. "cool_fan_enabled":
  4460. {
  4461. "label": "Enable Print Cooling",
  4462. "description": "Enables the print cooling fans while printing. The fans improve print quality on layers with short layer times and bridging / overhangs.",
  4463. "type": "bool",
  4464. "default_value": true,
  4465. "settable_per_mesh": false,
  4466. "settable_per_extruder": true
  4467. },
  4468. "cool_fan_speed":
  4469. {
  4470. "label": "Fan Speed",
  4471. "description": "The speed at which the print cooling fans spin.",
  4472. "unit": "%",
  4473. "type": "float",
  4474. "minimum_value": "0",
  4475. "maximum_value": "100",
  4476. "default_value": 100,
  4477. "value": "100.0 if cool_fan_enabled else 0.0",
  4478. "enabled": "cool_fan_enabled",
  4479. "settable_per_mesh": false,
  4480. "settable_per_extruder": true,
  4481. "children":
  4482. {
  4483. "cool_fan_speed_min":
  4484. {
  4485. "label": "Regular Fan Speed",
  4486. "description": "The speed at which the fans spin before hitting the threshold. When a layer prints faster than the threshold, the fan speed gradually inclines towards the maximum fan speed.",
  4487. "unit": "%",
  4488. "type": "float",
  4489. "minimum_value": "0",
  4490. "maximum_value": "100",
  4491. "value": "cool_fan_speed",
  4492. "default_value": 100,
  4493. "enabled": "cool_fan_enabled",
  4494. "settable_per_mesh": false,
  4495. "settable_per_extruder": true
  4496. },
  4497. "cool_fan_speed_max":
  4498. {
  4499. "label": "Maximum Fan Speed",
  4500. "description": "The speed at which the fans spin on the minimum layer time. The fan speed gradually increases between the regular fan speed and maximum fan speed when the threshold is hit.",
  4501. "unit": "%",
  4502. "type": "float",
  4503. "minimum_value": "0",
  4504. "maximum_value": "100",
  4505. "default_value": 100,
  4506. "enabled": "cool_fan_enabled",
  4507. "value": "cool_fan_speed",
  4508. "settable_per_mesh": false,
  4509. "settable_per_extruder": true
  4510. }
  4511. }
  4512. },
  4513. "cool_min_layer_time_fan_speed_max":
  4514. {
  4515. "label": "Regular/Maximum Fan Speed Threshold",
  4516. "description": "The layer time which sets the threshold between regular fan speed and maximum fan speed. Layers that print slower than this time use regular fan speed. For faster layers the fan speed gradually increases towards the maximum fan speed.",
  4517. "unit": "s",
  4518. "type": "float",
  4519. "default_value": 10,
  4520. "maximum_value_warning": "600",
  4521. "settable_per_mesh": false,
  4522. "settable_per_extruder": true
  4523. },
  4524. "cool_fan_speed_0":
  4525. {
  4526. "label": "Initial Fan Speed",
  4527. "description": "The speed at which the fans spin at the start of the print. In subsequent layers the fan speed is gradually increased up to the layer corresponding to Regular Fan Speed at Height.",
  4528. "unit": "%",
  4529. "type": "float",
  4530. "minimum_value": "0",
  4531. "maximum_value": "100",
  4532. "default_value": 0,
  4533. "enabled": "cool_fan_enabled",
  4534. "settable_per_mesh": false,
  4535. "settable_per_extruder": true
  4536. },
  4537. "cool_fan_full_at_height":
  4538. {
  4539. "label": "Regular Fan Speed at Height",
  4540. "description": "The height at which the fans spin on regular fan speed. At the layers below the fan speed gradually increases from Initial Fan Speed to Regular Fan Speed.",
  4541. "unit": "mm",
  4542. "type": "float",
  4543. "default_value": 0.5,
  4544. "value": "0 if resolveOrValue('adhesion_type') == 'raft' else resolveOrValue('layer_height_0')",
  4545. "minimum_value": "0",
  4546. "maximum_value_warning": "10.0",
  4547. "settable_per_mesh": false,
  4548. "settable_per_extruder": true,
  4549. "children":
  4550. {
  4551. "cool_fan_full_layer":
  4552. {
  4553. "label": "Regular Fan Speed at Layer",
  4554. "description": "The layer at which the fans spin on regular fan speed. If regular fan speed at height is set, this value is calculated and rounded to a whole number.",
  4555. "type": "int",
  4556. "default_value": 2,
  4557. "minimum_value": "1",
  4558. "maximum_value_warning": "10 / resolveOrValue('layer_height')",
  4559. "value": "max(1, int(math.floor((cool_fan_full_at_height - resolveOrValue('layer_height_0')) / resolveOrValue('layer_height')) + 2))",
  4560. "settable_per_mesh": false,
  4561. "settable_per_extruder": true
  4562. }
  4563. }
  4564. },
  4565. "cool_min_layer_time":
  4566. {
  4567. "label": "Minimum Layer Time",
  4568. "description": "The minimum time spent in a layer. This forces the printer to slow down, to at least spend the time set here in one layer. This allows the printed material to cool down properly before printing the next layer. Layers may still take shorter than the minimal layer time if Lift Head is disabled and if the Minimum Speed would otherwise be violated.",
  4569. "unit": "s",
  4570. "type": "float",
  4571. "default_value": 5,
  4572. "minimum_value": "0",
  4573. "maximum_value_warning": "600",
  4574. "settable_per_mesh": false,
  4575. "settable_per_extruder": true
  4576. },
  4577. "cool_min_speed":
  4578. {
  4579. "label": "Minimum Speed",
  4580. "description": "The minimum print speed, despite slowing down due to the minimum layer time. When the printer would slow down too much, the pressure in the nozzle would be too low and result in bad print quality.",
  4581. "unit": "mm/s",
  4582. "type": "float",
  4583. "default_value": 10,
  4584. "minimum_value": "1",
  4585. "maximum_value_warning": "100",
  4586. "enabled": "cool_min_layer_time > 0",
  4587. "settable_per_mesh": false,
  4588. "settable_per_extruder": true
  4589. },
  4590. "cool_lift_head":
  4591. {
  4592. "label": "Lift Head",
  4593. "description": "When the minimum speed is hit because of minimum layer time, lift the head away from the print and wait the extra time until the minimum layer time is reached.",
  4594. "type": "bool",
  4595. "default_value": false,
  4596. "enabled": "cool_min_layer_time > 0",
  4597. "settable_per_mesh": false,
  4598. "settable_per_extruder": true
  4599. },
  4600. "cool_min_temperature":
  4601. {
  4602. "label": "Small Layer Printing Temperature",
  4603. "description": "Gradually reduce to this temperature when printing at reduced speeds because of minimum layer time.",
  4604. "unit": "\u00b0C",
  4605. "type": "float",
  4606. "value": "material_print_temperature",
  4607. "default_value": 0,
  4608. "enabled": "cool_min_layer_time > 0",
  4609. "minimum_value_warning": "max(material_final_print_temperature, material_initial_print_temperature)",
  4610. "maximum_value_warning": "material_print_temperature",
  4611. "minimum_value": "-273.15",
  4612. "maximum_value": "365",
  4613. "settable_per_mesh": false,
  4614. "settable_per_extruder": true
  4615. }
  4616. }
  4617. },
  4618. "support":
  4619. {
  4620. "label": "Support",
  4621. "type": "category",
  4622. "icon": "Support",
  4623. "description": "Support",
  4624. "children":
  4625. {
  4626. "support_enable":
  4627. {
  4628. "label": "Generate Support",
  4629. "description": "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing.",
  4630. "type": "bool",
  4631. "default_value": false,
  4632. "resolve": "any(extruderValues('support_enable'))",
  4633. "settable_per_mesh": true,
  4634. "settable_per_extruder": false
  4635. },
  4636. "support_extruder_nr":
  4637. {
  4638. "label": "Support Extruder",
  4639. "description": "The extruder train to use for printing the support. This is used in multi-extrusion.",
  4640. "type": "extruder",
  4641. "default_value": "0",
  4642. "enabled": "(support_enable or support_meshes_present) and extruders_enabled_count > 1",
  4643. "value": "int(anyExtruderWithMaterial('material_is_support_material'))",
  4644. "settable_per_mesh": false,
  4645. "settable_per_extruder": false,
  4646. "children":
  4647. {
  4648. "support_infill_extruder_nr":
  4649. {
  4650. "label": "Support Infill Extruder",
  4651. "description": "The extruder train to use for printing the infill of the support. This is used in multi-extrusion.",
  4652. "type": "extruder",
  4653. "default_value": "0",
  4654. "value": "support_extruder_nr",
  4655. "enabled": "(support_enable or support_meshes_present) and extruders_enabled_count > 1",
  4656. "settable_per_mesh": false,
  4657. "settable_per_extruder": false
  4658. },
  4659. "support_extruder_nr_layer_0":
  4660. {
  4661. "label": "First Layer Support Extruder",
  4662. "description": "The extruder train to use for printing the first layer of support infill. This is used in multi-extrusion.",
  4663. "type": "extruder",
  4664. "default_value": "0",
  4665. "value": "support_extruder_nr",
  4666. "enabled": "(support_enable or support_meshes_present) and extruders_enabled_count > 1",
  4667. "settable_per_mesh": false,
  4668. "settable_per_extruder": false
  4669. },
  4670. "support_interface_extruder_nr":
  4671. {
  4672. "label": "Support Interface Extruder",
  4673. "description": "The extruder train to use for printing the roofs and floors of the support. This is used in multi-extrusion.",
  4674. "type": "extruder",
  4675. "default_value": "0",
  4676. "value": "support_extruder_nr",
  4677. "enabled": "(support_enable or support_meshes_present) and extruders_enabled_count > 1 and support_interface_enable",
  4678. "resolve": "max(extruderValues('support_interface_extruder_nr'))",
  4679. "settable_per_mesh": false,
  4680. "settable_per_extruder": false,
  4681. "children":
  4682. {
  4683. "support_roof_extruder_nr":
  4684. {
  4685. "label": "Support Roof Extruder",
  4686. "description": "The extruder train to use for printing the roofs of the support. This is used in multi-extrusion.",
  4687. "type": "extruder",
  4688. "default_value": "0",
  4689. "value": "support_interface_extruder_nr",
  4690. "enabled": "(support_enable or support_meshes_present) and extruders_enabled_count > 1 and support_roof_enable",
  4691. "resolve": "max(extruderValues('support_roof_extruder_nr'))",
  4692. "settable_per_mesh": false,
  4693. "settable_per_extruder": false
  4694. },
  4695. "support_bottom_extruder_nr":
  4696. {
  4697. "label": "Support Floor Extruder",
  4698. "description": "The extruder train to use for printing the floors of the support. This is used in multi-extrusion.",
  4699. "type": "extruder",
  4700. "default_value": "0",
  4701. "value": "support_interface_extruder_nr",
  4702. "enabled": "(support_enable or support_meshes_present) and extruders_enabled_count > 1 and support_bottom_enable",
  4703. "resolve": "max(extruderValues('support_bottom_extruder_nr'))",
  4704. "settable_per_mesh": false,
  4705. "settable_per_extruder": false
  4706. }
  4707. }
  4708. }
  4709. }
  4710. },
  4711. "support_structure":
  4712. {
  4713. "label": "Support Structure",
  4714. "description": "Chooses between the techniques available to generate support. \"Normal\" support creates a support structure directly below the overhanging parts and drops those areas straight down. \"Tree\" support creates branches towards the overhanging areas that support the model on the tips of those branches, and allows the branches to crawl around the model to support it from the build plate as much as possible.",
  4715. "type": "enum",
  4716. "options":
  4717. {
  4718. "normal": "Normal",
  4719. "tree": "Tree"
  4720. },
  4721. "enabled": "support_enable",
  4722. "default_value": "normal",
  4723. "resolve": "extruderValue(support_extruder_nr, 'support_structure')",
  4724. "settable_per_mesh": false,
  4725. "settable_per_extruder": false
  4726. },
  4727. "support_tree_angle":
  4728. {
  4729. "label": "Maximum Branch Angle",
  4730. "description": "The maximum angle of the branches while they grow around the model. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach.",
  4731. "unit": "\u00b0",
  4732. "type": "float",
  4733. "minimum_value": "0",
  4734. "minimum_value_warning": "20",
  4735. "maximum_value": "89",
  4736. "maximum_value_warning": "85",
  4737. "default_value": 60,
  4738. "value": "max(min(support_angle, 85), 20)",
  4739. "limit_to_extruder": "support_infill_extruder_nr",
  4740. "enabled": "support_enable and support_structure=='tree'",
  4741. "settable_per_mesh": true,
  4742. "settable_per_extruder": true
  4743. },
  4744. "support_tree_branch_diameter":
  4745. {
  4746. "label": "Branch Diameter",
  4747. "description": "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this.",
  4748. "unit": "mm",
  4749. "type": "float",
  4750. "minimum_value": "support_tree_tip_diameter",
  4751. "minimum_value_warning": "support_line_width * 2",
  4752. "default_value": 5,
  4753. "limit_to_extruder": "support_infill_extruder_nr",
  4754. "enabled": "support_enable and support_structure=='tree'",
  4755. "settable_per_mesh": true,
  4756. "settable_per_extruder": true
  4757. },
  4758. "support_tree_max_diameter":
  4759. {
  4760. "label": "Trunk Diameter",
  4761. "description": "The diameter of the widest branches of tree support. A thicker trunk is more sturdy; a thinner trunk takes up less space on the build plate.",
  4762. "unit": "mm",
  4763. "type": "float",
  4764. "minimum_value": "support_tree_branch_diameter",
  4765. "minimum_value_warning": "support_line_width * 5",
  4766. "default_value": 25,
  4767. "limit_to_extruder": "support_infill_extruder_nr",
  4768. "enabled": "support_enable and support_structure=='tree'",
  4769. "settable_per_mesh": false,
  4770. "settable_per_extruder": true
  4771. },
  4772. "support_tree_branch_diameter_angle":
  4773. {
  4774. "label": "Branch Diameter Angle",
  4775. "description": "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support.",
  4776. "unit": "\u00b0",
  4777. "type": "float",
  4778. "minimum_value": "0",
  4779. "maximum_value": "89.9999",
  4780. "maximum_value_warning": "15",
  4781. "default_value": 7,
  4782. "limit_to_extruder": "support_infill_extruder_nr",
  4783. "enabled": "support_enable and support_structure=='tree'",
  4784. "settable_per_mesh": true,
  4785. "settable_per_extruder": true
  4786. },
  4787. "support_z_seam_away_from_model":
  4788. {
  4789. "label": "Support Z Seam Away from Model",
  4790. "description": "Manage the spatial relationship between the z seam of the support structure and the actual 3D model. This control is crucial as it allows users to ensure the seamless removal of support structures post-printing, without inflicting damage or leaving marks on the printed model.",
  4791. "type": "bool",
  4792. "default_value": true,
  4793. "enabled": "support_enable",
  4794. "settable_per_mesh": false,
  4795. "settable_per_extruder": true,
  4796. "settable_per_meshgroup": false,
  4797. "children":
  4798. {
  4799. "support_z_seam_min_distance":
  4800. {
  4801. "label": "Min Z Seam Distance from Model",
  4802. "description": "The distance between the model and its support structure at the z-axis seam.",
  4803. "unit": "mm",
  4804. "minimum_value": "0.001",
  4805. "value": "line_width * 2",
  4806. "default_value": 0.8,
  4807. "maximum_value_warning": "line_width * 4",
  4808. "type": "float",
  4809. "enabled": "support_z_seam_away_from_model and support_enable",
  4810. "settable_per_mesh": false,
  4811. "settable_per_extruder": true
  4812. }
  4813. }
  4814. },
  4815. "support_type":
  4816. {
  4817. "label": "Support Placement",
  4818. "description": "Adjusts the placement of the support structures. The placement can be set to touching build plate or everywhere. When set to everywhere the support structures will also be printed on the model.",
  4819. "type": "enum",
  4820. "options":
  4821. {
  4822. "buildplate": "Touching Buildplate",
  4823. "everywhere": "Everywhere"
  4824. },
  4825. "default_value": "everywhere",
  4826. "resolve": "'everywhere' if 'everywhere' in extruderValues('support_type') else 'buildplate'",
  4827. "enabled": "support_enable",
  4828. "settable_per_mesh": false,
  4829. "settable_per_extruder": false
  4830. },
  4831. "support_tree_angle_slow":
  4832. {
  4833. "label": "Preferred Branch Angle",
  4834. "description": "The preferred angle of the branches, when they do not have to avoid the model. Use a lower angle to make them more vertical and more stable. Use a higher angle for branches to merge faster.",
  4835. "unit": "\u00b0",
  4836. "type": "float",
  4837. "minimum_value": "0",
  4838. "minimum_value_warning": "10",
  4839. "maximum_value": "support_tree_angle",
  4840. "maximum_value_warning": "support_tree_angle-1",
  4841. "default_value": 50,
  4842. "value": "support_tree_angle * 2 / 3",
  4843. "limit_to_extruder": "support_infill_extruder_nr",
  4844. "enabled": "support_enable and support_structure=='tree'",
  4845. "settable_per_mesh": true,
  4846. "settable_per_extruder": true
  4847. },
  4848. "support_tree_max_diameter_increase_by_merges_when_support_to_model":
  4849. {
  4850. "label": "Diameter Increase To Model",
  4851. "description": "The most the diameter of a branch that has to connect to the model may increase by merging with branches that could reach the buildplate. Increasing this reduces print time, but increases the area of support that rests on model",
  4852. "unit": "mm",
  4853. "type": "float",
  4854. "minimum_value": "0",
  4855. "default_value": 1,
  4856. "limit_to_extruder": "support_infill_extruder_nr",
  4857. "enabled": "support_enable and support_structure=='tree' and resolveOrValue('support_type') == 'everywhere' ",
  4858. "settable_per_mesh": true,
  4859. "settable_per_extruder": true
  4860. },
  4861. "support_tree_min_height_to_model":
  4862. {
  4863. "label": "Minimum Height To Model",
  4864. "description": "How tall a branch has to be if it is placed on the model. Prevents small blobs of support. This setting is ignored when a branch is supporting a support roof.",
  4865. "unit": "mm",
  4866. "type": "float",
  4867. "minimum_value": "0",
  4868. "maximum_value_warning": "5",
  4869. "default_value": 3,
  4870. "limit_to_extruder": "support_infill_extruder_nr",
  4871. "enabled": "support_enable and support_structure=='tree' and resolveOrValue('support_type') == 'everywhere' ",
  4872. "settable_per_mesh": true,
  4873. "settable_per_extruder": true
  4874. },
  4875. "support_tree_bp_diameter":
  4876. {
  4877. "label": "Initial Layer Diameter",
  4878. "description": "Diameter every branch tries to achieve when reaching the buildplate. Improves bed adhesion.",
  4879. "unit": "mm",
  4880. "type": "float",
  4881. "minimum_value": "0",
  4882. "maximum_value_warning": "20",
  4883. "default_value": 7.5,
  4884. "limit_to_extruder": "support_infill_extruder_nr",
  4885. "enabled": "support_enable and support_structure=='tree'",
  4886. "settable_per_mesh": true,
  4887. "settable_per_extruder": true
  4888. },
  4889. "support_tree_top_rate":
  4890. {
  4891. "label": "Branch Density",
  4892. "description": "Adjusts the density of the support structure used to generate the tips of the branches. A higher value results in better overhangs, but the supports are harder to remove. Use Support Roof for very high values or ensure support density is similarly high at the top.",
  4893. "unit": "%",
  4894. "type": "float",
  4895. "minimum_value": "0.1",
  4896. "minimum_value_warning": "5",
  4897. "maximum_value_warning": "35",
  4898. "default_value": 15,
  4899. "value": "30 if support_roof_enable else 10",
  4900. "enabled": "support_enable and support_structure=='tree'",
  4901. "limit_to_extruder": "support_infill_extruder_nr",
  4902. "settable_per_mesh": true,
  4903. "settable_per_extruder": true
  4904. },
  4905. "support_tree_tip_diameter":
  4906. {
  4907. "label": "Tip Diameter",
  4908. "description": "The diameter of the top of the tip of the branches of tree support.",
  4909. "unit": "mm",
  4910. "type": "float",
  4911. "minimum_value": "min_wall_line_width",
  4912. "maximum_value": "support_tree_branch_diameter",
  4913. "default_value": 0.4,
  4914. "value": "support_line_width * 2",
  4915. "limit_to_extruder": "support_infill_extruder_nr",
  4916. "enabled": "support_enable and support_structure=='tree'",
  4917. "settable_per_mesh": true,
  4918. "settable_per_extruder": true
  4919. },
  4920. "support_tree_limit_branch_reach":
  4921. {
  4922. "label": "Limit Branch Reach",
  4923. "description": "Limit how far each branch should travel from the point it supports. This can make the support more sturdy, but will increase the amount of branches (and because of that material usage/print time)",
  4924. "type": "bool",
  4925. "default_value": true,
  4926. "enabled": "support_enable and support_structure=='tree'",
  4927. "settable_per_mesh": true
  4928. },
  4929. "support_tree_branch_reach_limit":
  4930. {
  4931. "label": "Optimal Branch Range",
  4932. "description": "A recomendation to how far branches can move from the points they support. Branches can violate this value to reach their destination (buildplate or a flat part of the model). Lowering this value will make the support more sturdy, but increase the amount of branches (and because of that material usage/print time) ",
  4933. "unit": "mm",
  4934. "type": "float",
  4935. "minimum_value": "1",
  4936. "minimum_value_warning": "10",
  4937. "default_value": 30,
  4938. "enabled": "support_enable and support_tree_limit_branch_reach and support_structure=='tree'",
  4939. "settable_per_mesh": true
  4940. },
  4941. "support_tree_rest_preference":
  4942. {
  4943. "label": "Rest Preference",
  4944. "description": "The preferred placement of the support structures. If structures can't be placed at the preferred location, they will be place elsewhere, even if that means placing them on the model.",
  4945. "type": "enum",
  4946. "options":
  4947. {
  4948. "buildplate": "On buildplate when possible",
  4949. "graceful": "On model if required"
  4950. },
  4951. "default_value": "buildplate",
  4952. "value": "'buildplate' if support_type == 'buildplate' else 'graceful'",
  4953. "resolve": "'buildplate' if 'buildplate' in extruderValues('support_tree_rest_preference') else 'graceful'",
  4954. "enabled": "support_enable and support_structure=='tree' and support_type == 'everywhere'",
  4955. "settable_per_mesh": true
  4956. },
  4957. "support_angle":
  4958. {
  4959. "label": "Support Overhang Angle",
  4960. "description": "The minimum angle of overhangs for which support is added. At a value of 0\u00b0 all overhangs are supported, 90\u00b0 will not provide any support.",
  4961. "unit": "\u00b0",
  4962. "type": "float",
  4963. "minimum_value": "0",
  4964. "maximum_value": "90",
  4965. "maximum_value_warning": "80",
  4966. "default_value": 50,
  4967. "limit_to_extruder": "support_roof_extruder_nr if support_roof_enable else support_infill_extruder_nr",
  4968. "enabled": "support_enable",
  4969. "settable_per_mesh": true
  4970. },
  4971. "support_pattern":
  4972. {
  4973. "label": "Support Pattern",
  4974. "description": "The pattern of the support structures of the print. The different options available result in sturdy or easy to remove support.",
  4975. "type": "enum",
  4976. "options":
  4977. {
  4978. "lines": "Lines",
  4979. "grid": "Grid",
  4980. "triangles": "Triangles",
  4981. "concentric": "Concentric",
  4982. "zigzag": "Zig Zag",
  4983. "cross": "Cross",
  4984. "gyroid": "Gyroid"
  4985. },
  4986. "default_value": "zigzag",
  4987. "enabled": "support_enable or support_meshes_present",
  4988. "limit_to_extruder": "support_infill_extruder_nr",
  4989. "settable_per_mesh": false,
  4990. "settable_per_extruder": true
  4991. },
  4992. "support_wall_count":
  4993. {
  4994. "label": "Support Wall Line Count",
  4995. "description": "The number of walls with which to surround support infill. Adding a wall can make support print more reliably and can support overhangs better, but increases print time and material used.",
  4996. "default_value": 1,
  4997. "minimum_value": "0",
  4998. "minimum_value_warning": "(1 if support_pattern == 'concentric' else 0) if support_structure == 'normal' else 1",
  4999. "maximum_value_warning": "0 if (support_skip_some_zags and support_pattern == 'zigzag') else 3",
  5000. "maximum_value": "999999",
  5001. "type": "int",
  5002. "value": "1 if support_enable and support_structure == 'tree' else (1 if (support_pattern == 'grid' or support_pattern == 'triangles' or support_pattern == 'concentric') else 0)",
  5003. "enabled": "support_enable or support_meshes_present",
  5004. "limit_to_extruder": "support_infill_extruder_nr",
  5005. "settable_per_mesh": false,
  5006. "settable_per_extruder": true
  5007. },
  5008. "support_interface_wall_count":
  5009. {
  5010. "label": "Support Interface Wall Line Count",
  5011. "description": "The number of walls with which to surround support interface. Adding a wall can make support print more reliably and can support overhangs better, but increases print time and material used.",
  5012. "default_value": 0,
  5013. "minimum_value": "0",
  5014. "minimum_value_warning": "0",
  5015. "maximum_value_warning": "0 if (support_skip_some_zags and support_interface_pattern == 'zigzag') else 3",
  5016. "maximum_value": "999999",
  5017. "type": "int",
  5018. "value": "1 if (support_interface_pattern == 'zigzag') else 0",
  5019. "enabled": "(support_enable and support_interface_enable) or support_meshes_present",
  5020. "limit_to_extruder": "support_interface_extruder_nr",
  5021. "settable_per_mesh": false,
  5022. "settable_per_extruder": true,
  5023. "children":
  5024. {
  5025. "support_roof_wall_count":
  5026. {
  5027. "label": "Support Roof Wall Line Count",
  5028. "description": "The number of walls with which to surround support interface roof. Adding a wall can make support print more reliably and can support overhangs better, but increases print time and material used.",
  5029. "default_value": 0,
  5030. "minimum_value": "0",
  5031. "minimum_value_warning": "0",
  5032. "maximum_value_warning": "0 if (support_skip_some_zags and support_interface_pattern == 'zigzag') else 3",
  5033. "maximum_value": "999999",
  5034. "type": "int",
  5035. "value": "support_interface_wall_count",
  5036. "enabled": "(support_enable and support_interface_enable) or support_meshes_present",
  5037. "limit_to_extruder": "support_interface_extruder_nr",
  5038. "settable_per_mesh": false,
  5039. "settable_per_extruder": true
  5040. },
  5041. "support_bottom_wall_count":
  5042. {
  5043. "label": "Support Bottom Wall Line Count",
  5044. "description": "The number of walls with which to surround support interface floor. Adding a wall can make support print more reliably and can support overhangs better, but increases print time and material used.",
  5045. "default_value": 0,
  5046. "minimum_value": "0",
  5047. "minimum_value_warning": "0",
  5048. "maximum_value_warning": "0 if (support_skip_some_zags and support_interface_pattern == 'zigzag') else 3",
  5049. "maximum_value": "999999",
  5050. "type": "int",
  5051. "value": "support_interface_wall_count",
  5052. "enabled": "(support_enable and support_interface_enable) or support_meshes_present",
  5053. "limit_to_extruder": "support_interface_extruder_nr",
  5054. "settable_per_mesh": false,
  5055. "settable_per_extruder": true
  5056. }
  5057. }
  5058. },
  5059. "zig_zaggify_support":
  5060. {
  5061. "label": "Connect Support Lines",
  5062. "description": "Connect the ends of the support lines together. Enabling this setting can make your support more sturdy and reduce underextrusion, but it will cost more material.",
  5063. "type": "bool",
  5064. "default_value": false,
  5065. "value": "support_pattern == 'cross' or support_pattern == 'gyroid'",
  5066. "enabled": "(support_enable or support_meshes_present) and (support_pattern == 'lines' or support_pattern == 'grid' or support_pattern == 'triangles' or support_pattern == 'cross' or support_pattern == 'gyroid')",
  5067. "limit_to_extruder": "support_infill_extruder_nr",
  5068. "settable_per_mesh": false,
  5069. "settable_per_extruder": true
  5070. },
  5071. "support_connect_zigzags":
  5072. {
  5073. "label": "Connect Support ZigZags",
  5074. "description": "Connect the ZigZags. This will increase the strength of the zig zag support structure.",
  5075. "type": "bool",
  5076. "default_value": true,
  5077. "enabled": "(support_enable or support_meshes_present) and support_pattern == 'zigzag'",
  5078. "limit_to_extruder": "support_infill_extruder_nr",
  5079. "settable_per_mesh": false,
  5080. "settable_per_extruder": true
  5081. },
  5082. "support_infill_rate":
  5083. {
  5084. "label": "Support Density",
  5085. "description": "Adjusts the density of the support structure. A higher value results in better overhangs, but the supports are harder to remove.",
  5086. "unit": "%",
  5087. "type": "float",
  5088. "minimum_value": "0",
  5089. "maximum_value_warning": "100",
  5090. "default_value": 15,
  5091. "value": "15 if support_enable and support_structure == 'normal' else 0 if support_enable and support_structure == 'tree' else 15",
  5092. "enabled": "support_enable or support_meshes_present",
  5093. "limit_to_extruder": "support_infill_extruder_nr",
  5094. "settable_per_mesh": false,
  5095. "settable_per_extruder": true,
  5096. "children":
  5097. {
  5098. "support_line_distance":
  5099. {
  5100. "label": "Support Line Distance",
  5101. "description": "Distance between the printed support structure lines. This setting is calculated by the support density.",
  5102. "unit": "mm",
  5103. "type": "float",
  5104. "minimum_value": "0",
  5105. "minimum_value_warning": "support_line_width",
  5106. "default_value": 2.66,
  5107. "enabled": "support_enable or support_meshes_present",
  5108. "value": "0 if support_infill_rate == 0 else (support_line_width * 100) / support_infill_rate * (2 if support_pattern == 'grid' else (3 if support_pattern == 'triangles' else 1))",
  5109. "limit_to_extruder": "support_infill_extruder_nr",
  5110. "settable_per_mesh": false,
  5111. "settable_per_extruder": true
  5112. },
  5113. "support_initial_layer_line_distance":
  5114. {
  5115. "label": "Initial Layer Support Line Distance",
  5116. "description": "Distance between the printed initial layer support structure lines. This setting is calculated by the support density.",
  5117. "unit": "mm",
  5118. "type": "float",
  5119. "minimum_value": "0",
  5120. "minimum_value_warning": "support_line_width",
  5121. "default_value": 2.66,
  5122. "enabled": "support_enable or support_meshes_present",
  5123. "value": "support_line_distance",
  5124. "limit_to_extruder": "support_infill_extruder_nr",
  5125. "settable_per_mesh": false,
  5126. "settable_per_extruder": true
  5127. }
  5128. }
  5129. },
  5130. "support_infill_angles":
  5131. {
  5132. "label": "Support Infill Line Directions",
  5133. "description": "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees.",
  5134. "type": "[int]",
  5135. "default_value": "[ ]",
  5136. "enabled": "(support_enable or support_meshes_present) and support_pattern != 'concentric' and support_infill_rate > 0",
  5137. "limit_to_extruder": "support_infill_extruder_nr",
  5138. "settable_per_mesh": false,
  5139. "settable_per_extruder": true
  5140. },
  5141. "support_brim_enable":
  5142. {
  5143. "label": "Enable Support Brim",
  5144. "description": "Generate a brim within the support infill regions of the first layer. This brim is printed underneath the support, not around it. Enabling this setting increases the adhesion of support to the build plate.",
  5145. "type": "bool",
  5146. "default_value": true,
  5147. "enabled": "support_enable or support_meshes_present",
  5148. "limit_to_extruder": "support_infill_extruder_nr",
  5149. "settable_per_mesh": false,
  5150. "settable_per_extruder": true
  5151. },
  5152. "support_brim_width":
  5153. {
  5154. "label": "Support Brim Width",
  5155. "description": "The width of the brim to print underneath the support. A larger brim enhances adhesion to the build plate, at the cost of some extra material.",
  5156. "type": "float",
  5157. "unit": "mm",
  5158. "default_value": 1.2,
  5159. "minimum_value": "0.0",
  5160. "maximum_value_warning": "50.0",
  5161. "value": "(skirt_brim_line_width * initial_layer_line_width_factor / 100.0) * 3",
  5162. "enabled": "(support_enable or support_meshes_present) and support_brim_enable",
  5163. "settable_per_mesh": false,
  5164. "settable_per_extruder": true,
  5165. "limit_to_extruder": "support_infill_extruder_nr",
  5166. "children":
  5167. {
  5168. "support_brim_line_count":
  5169. {
  5170. "label": "Support Brim Line Count",
  5171. "description": "The number of lines used for the support brim. More brim lines enhance adhesion to the build plate, at the cost of some extra material.",
  5172. "type": "int",
  5173. "default_value": 3,
  5174. "minimum_value": "0",
  5175. "maximum_value_warning": "50 / skirt_brim_line_width",
  5176. "value": "round(support_brim_width / (skirt_brim_line_width * initial_layer_line_width_factor / 100.0))",
  5177. "enabled": "(support_enable or support_meshes_present) and support_brim_enable",
  5178. "settable_per_mesh": false,
  5179. "settable_per_extruder": true,
  5180. "limit_to_extruder": "support_infill_extruder_nr"
  5181. }
  5182. }
  5183. },
  5184. "support_z_distance":
  5185. {
  5186. "label": "Support Z Distance",
  5187. "description": "Distance from the top/bottom of the support structure to the print. This gap provides clearance to remove the supports after the model is printed. The topmost support layer below the model might be a fraction of regular layers.",
  5188. "unit": "mm",
  5189. "type": "float",
  5190. "minimum_value": "0",
  5191. "maximum_value_warning": "5*layer_height",
  5192. "default_value": 0.1,
  5193. "limit_to_extruder": "support_interface_extruder_nr if support_interface_enable else support_infill_extruder_nr",
  5194. "enabled": "support_enable or support_meshes_present",
  5195. "settable_per_mesh": true,
  5196. "children":
  5197. {
  5198. "support_top_distance":
  5199. {
  5200. "label": "Support Top Distance",
  5201. "description": "Distance from the top of the support to the print.",
  5202. "unit": "mm",
  5203. "minimum_value": "0",
  5204. "maximum_value_warning": "machine_nozzle_size",
  5205. "default_value": 0.1,
  5206. "type": "float",
  5207. "enabled": "support_enable or support_meshes_present",
  5208. "value": "extruderValue(support_roof_extruder_nr if support_roof_enable else support_infill_extruder_nr, 'support_z_distance')",
  5209. "limit_to_extruder": "support_roof_extruder_nr if support_roof_enable else support_infill_extruder_nr",
  5210. "settable_per_mesh": true
  5211. },
  5212. "support_bottom_distance":
  5213. {
  5214. "label": "Support Bottom Distance",
  5215. "description": "Distance from the print to the bottom of the support. Note that this is rounded up to the next layer height.",
  5216. "unit": "mm",
  5217. "minimum_value": "0",
  5218. "maximum_value_warning": "machine_nozzle_size",
  5219. "default_value": 0.1,
  5220. "value": "extruderValue(support_bottom_extruder_nr if support_bottom_enable else support_infill_extruder_nr, 'support_z_distance') if support_type == 'everywhere' else 0",
  5221. "limit_to_extruder": "support_bottom_extruder_nr if support_bottom_enable else support_infill_extruder_nr",
  5222. "type": "float",
  5223. "enabled": "(support_enable or support_meshes_present) and resolveOrValue('support_type') == 'everywhere'",
  5224. "settable_per_mesh": true
  5225. }
  5226. }
  5227. },
  5228. "support_xy_distance":
  5229. {
  5230. "label": "Support X/Y Distance",
  5231. "description": "Distance of the support structure from the print in the X/Y directions.",
  5232. "unit": "mm",
  5233. "type": "float",
  5234. "minimum_value": "0",
  5235. "maximum_value_warning": "1.5 * machine_nozzle_tip_outer_diameter",
  5236. "default_value": 0.7,
  5237. "limit_to_extruder": "support_infill_extruder_nr",
  5238. "enabled": "support_enable or support_meshes_present",
  5239. "settable_per_mesh": true
  5240. },
  5241. "support_xy_overrides_z":
  5242. {
  5243. "label": "Support Distance Priority",
  5244. "description": "Whether the Support X/Y Distance overrides the Support Z Distance or vice versa. When X/Y overrides Z the X/Y distance can push away the support from the model, influencing the actual Z distance to the overhang. We can disable this by not applying the X/Y distance around overhangs.",
  5245. "type": "enum",
  5246. "options":
  5247. {
  5248. "xy_overrides_z": "X/Y overrides Z",
  5249. "z_overrides_xy": "Z overrides X/Y"
  5250. },
  5251. "default_value": "z_overrides_xy",
  5252. "limit_to_extruder": "support_infill_extruder_nr",
  5253. "enabled": "support_enable or support_meshes_present",
  5254. "settable_per_mesh": true
  5255. },
  5256. "support_xy_distance_overhang":
  5257. {
  5258. "label": "Minimum Support X/Y Distance",
  5259. "description": "Distance of the support structure from the overhang in the X/Y directions.",
  5260. "unit": "mm",
  5261. "type": "float",
  5262. "minimum_value": "0",
  5263. "minimum_value_warning": "support_xy_distance - support_line_width * 2",
  5264. "maximum_value_warning": "support_xy_distance",
  5265. "default_value": 0.2,
  5266. "value": "machine_nozzle_size / 2",
  5267. "limit_to_extruder": "support_infill_extruder_nr",
  5268. "enabled": "(support_enable or support_meshes_present) and support_xy_overrides_z == 'z_overrides_xy'",
  5269. "settable_per_mesh": true
  5270. },
  5271. "support_bottom_stair_step_height":
  5272. {
  5273. "label": "Support Stair Step Height",
  5274. "description": "The height of the steps of the stair-like bottom of support resting on the model. A low value makes the support harder to remove, but too high values can lead to unstable support structures. Set to zero to turn off the stair-like behaviour.",
  5275. "unit": "mm",
  5276. "type": "float",
  5277. "default_value": 0.3,
  5278. "value": "0 if support_bottom_enable else 0.3",
  5279. "limit_to_extruder": "support_bottom_extruder_nr if support_bottom_enable else support_infill_extruder_nr",
  5280. "minimum_value": "0",
  5281. "maximum_value_warning": "1.0",
  5282. "enabled": "(support_enable and support_structure == 'normal') or support_meshes_present",
  5283. "settable_per_mesh": true
  5284. },
  5285. "support_bottom_stair_step_width":
  5286. {
  5287. "label": "Support Stair Step Maximum Width",
  5288. "description": "The maximum width of the steps of the stair-like bottom of support resting on the model. A low value makes the support harder to remove, but too high values can lead to unstable support structures.",
  5289. "unit": "mm",
  5290. "type": "float",
  5291. "default_value": 5.0,
  5292. "limit_to_extruder": "support_interface_extruder_nr if support_bottom_enable else support_infill_extruder_nr",
  5293. "minimum_value": "0",
  5294. "maximum_value_warning": "10.0",
  5295. "enabled": "((support_enable and support_structure == 'normal') or support_meshes_present) and support_bottom_stair_step_height > 0",
  5296. "settable_per_mesh": true
  5297. },
  5298. "support_bottom_stair_step_min_slope":
  5299. {
  5300. "label": "Support Stair Step Minimum Slope Angle",
  5301. "description": "The minimum slope of the area for stair-stepping to take effect. Low values should make support easier to remove on shallower slopes, but really low values may result in some very counter-intuitive results on other parts of the model.",
  5302. "unit": "\u00b0",
  5303. "type": "float",
  5304. "default_value": 10.0,
  5305. "limit_to_extruder": "support_bottom_extruder_nr if support_bottom_enable else support_infill_extruder_nr",
  5306. "minimum_value": "0.01",
  5307. "maximum_value": "89.99",
  5308. "enabled": "((support_enable and support_structure == 'normal') or support_meshes_present) and support_bottom_stair_step_height > 0",
  5309. "settable_per_mesh": true
  5310. },
  5311. "support_join_distance":
  5312. {
  5313. "label": "Support Join Distance",
  5314. "description": "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one.",
  5315. "unit": "mm",
  5316. "type": "float",
  5317. "default_value": 2.0,
  5318. "limit_to_extruder": "support_infill_extruder_nr",
  5319. "minimum_value_warning": "0",
  5320. "maximum_value_warning": "10",
  5321. "enabled": "(support_enable and support_structure == 'normal') or support_meshes_present",
  5322. "settable_per_mesh": false,
  5323. "settable_per_extruder": true
  5324. },
  5325. "support_offset":
  5326. {
  5327. "label": "Support Horizontal Expansion",
  5328. "description": "Amount of offset applied to all support polygons in each layer. Positive values can smooth out the support areas and result in more sturdy support.",
  5329. "unit": "mm",
  5330. "type": "float",
  5331. "default_value": 0.8,
  5332. "value": "support_line_width + 0.4 if support_structure == 'normal' else 0.0",
  5333. "limit_to_extruder": "support_infill_extruder_nr",
  5334. "minimum_value_warning": "-1 * machine_nozzle_size",
  5335. "maximum_value_warning": "10 * machine_nozzle_size",
  5336. "enabled": "(support_enable or support_meshes_present) and support_structure == 'normal'",
  5337. "settable_per_mesh": false,
  5338. "settable_per_extruder": true
  5339. },
  5340. "support_infill_sparse_thickness":
  5341. {
  5342. "label": "Support Infill Layer Thickness",
  5343. "description": "The thickness per layer of support infill material. This value should always be a multiple of the layer height and is otherwise rounded.",
  5344. "unit": "mm",
  5345. "type": "float",
  5346. "default_value": 0.1,
  5347. "minimum_value": "resolveOrValue('layer_height')",
  5348. "maximum_value_warning": "0.75 * machine_nozzle_size",
  5349. "maximum_value": "resolveOrValue('layer_height') * 8",
  5350. "value": "resolveOrValue('layer_height')",
  5351. "enabled": "(support_enable or support_meshes_present) and support_infill_rate > 0",
  5352. "limit_to_extruder": "support_infill_extruder_nr",
  5353. "settable_per_mesh": false,
  5354. "settable_per_extruder": true
  5355. },
  5356. "gradual_support_infill_steps":
  5357. {
  5358. "label": "Gradual Support Infill Steps",
  5359. "description": "Number of times to reduce the support infill density by half when getting further below top surfaces. Areas which are closer to top surfaces get a higher density, up to the Support Infill Density.",
  5360. "default_value": 0,
  5361. "type": "int",
  5362. "minimum_value": "0",
  5363. "maximum_value_warning": "1 if (support_pattern == 'cross' or support_pattern == 'lines' or support_pattern == 'concentric') else 5",
  5364. "maximum_value": "(999999 if support_line_distance == 0 else (20 - math.log(support_line_distance) / math.log(2))) if support_structure != 'tree' else 0",
  5365. "enabled": "(support_enable or support_meshes_present) and support_infill_rate > 0",
  5366. "limit_to_extruder": "support_infill_extruder_nr",
  5367. "settable_per_mesh": false,
  5368. "settable_per_extruder": true
  5369. },
  5370. "gradual_support_infill_step_height":
  5371. {
  5372. "label": "Gradual Support Infill Step Height",
  5373. "description": "The height of support infill of a given density before switching to half the density.",
  5374. "unit": "mm",
  5375. "type": "float",
  5376. "default_value": 1,
  5377. "minimum_value": "0.0001",
  5378. "minimum_value_warning": "3 * resolveOrValue('layer_height')",
  5379. "enabled": "(support_enable or support_meshes_present) and support_infill_rate > 0 and gradual_support_infill_steps > 0",
  5380. "limit_to_extruder": "support_infill_extruder_nr",
  5381. "settable_per_mesh": false,
  5382. "settable_per_extruder": true
  5383. },
  5384. "minimum_support_area":
  5385. {
  5386. "label": "Minimum Support Area",
  5387. "description": "Minimum area size for support polygons. Polygons which have an area smaller than this value will not be generated.",
  5388. "unit": "mm\u00b2",
  5389. "type": "float",
  5390. "default_value": 0.0,
  5391. "minimum_value": "0",
  5392. "maximum_value_warning": "10 if support_structure == 'normal' else 0",
  5393. "enabled": "support_enable or support_meshes_present",
  5394. "limit_to_extruder": "support_infill_extruder_nr",
  5395. "settable_per_mesh": true
  5396. },
  5397. "support_interface_enable":
  5398. {
  5399. "label": "Enable Support Interface",
  5400. "description": "Generate a dense interface between the model and the support. This will create a skin at the top of the support on which the model is printed and at the bottom of the support, where it rests on the model.",
  5401. "type": "bool",
  5402. "default_value": false,
  5403. "limit_to_extruder": "support_interface_extruder_nr",
  5404. "enabled": "support_enable or support_meshes_present",
  5405. "settable_per_mesh": true,
  5406. "children":
  5407. {
  5408. "support_roof_enable":
  5409. {
  5410. "label": "Enable Support Roof",
  5411. "description": "Generate a dense slab of material between the top of support and the model. This will create a skin between the model and support.",
  5412. "type": "bool",
  5413. "default_value": false,
  5414. "value": "extruderValue(support_roof_extruder_nr, 'support_interface_enable')",
  5415. "limit_to_extruder": "support_roof_extruder_nr",
  5416. "enabled": "(support_enable or support_meshes_present) and support_interface_enable",
  5417. "settable_per_mesh": true
  5418. },
  5419. "support_bottom_enable":
  5420. {
  5421. "label": "Enable Support Floor",
  5422. "description": "Generate a dense slab of material between the bottom of the support and the model. This will create a skin between the model and support.",
  5423. "type": "bool",
  5424. "default_value": false,
  5425. "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_enable')",
  5426. "limit_to_extruder": "support_bottom_extruder_nr",
  5427. "enabled": "(support_enable or support_meshes_present) and support_interface_enable",
  5428. "settable_per_mesh": true
  5429. }
  5430. }
  5431. },
  5432. "support_interface_height":
  5433. {
  5434. "label": "Support Interface Thickness",
  5435. "description": "The thickness of the interface of the support where it touches with the model on the bottom or the top.",
  5436. "unit": "mm",
  5437. "type": "float",
  5438. "default_value": 1,
  5439. "minimum_value": "0",
  5440. "minimum_value_warning": "0.2 + layer_height",
  5441. "maximum_value_warning": "10",
  5442. "limit_to_extruder": "support_interface_extruder_nr",
  5443. "enabled": "support_interface_enable and (support_enable or support_meshes_present)",
  5444. "settable_per_mesh": true,
  5445. "children":
  5446. {
  5447. "support_roof_height":
  5448. {
  5449. "label": "Support Roof Thickness",
  5450. "description": "The thickness of the support roofs. This controls the amount of dense layers at the top of the support on which the model rests.",
  5451. "unit": "mm",
  5452. "type": "float",
  5453. "default_value": 1,
  5454. "minimum_value": "0",
  5455. "minimum_value_warning": "support_top_distance + layer_height",
  5456. "maximum_value_warning": "10",
  5457. "value": "extruderValue(support_roof_extruder_nr, 'support_interface_height')",
  5458. "limit_to_extruder": "support_roof_extruder_nr",
  5459. "enabled": "support_roof_enable and (support_enable or support_meshes_present)",
  5460. "settable_per_mesh": true
  5461. },
  5462. "support_bottom_height":
  5463. {
  5464. "label": "Support Floor Thickness",
  5465. "description": "The thickness of the support floors. This controls the number of dense layers that are printed on top of places of a model on which support rests.",
  5466. "unit": "mm",
  5467. "type": "float",
  5468. "default_value": 1,
  5469. "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_height')",
  5470. "minimum_value": "0",
  5471. "minimum_value_warning": "min(support_bottom_distance + layer_height, support_bottom_stair_step_height)",
  5472. "maximum_value_warning": "10",
  5473. "limit_to_extruder": "support_bottom_extruder_nr",
  5474. "enabled": "support_bottom_enable and (support_enable or support_meshes_present)",
  5475. "settable_per_mesh": true
  5476. }
  5477. }
  5478. },
  5479. "support_interface_density":
  5480. {
  5481. "label": "Support Interface Density",
  5482. "description": "Adjusts the density of the roofs and floors of the support structure. A higher value results in better overhangs, but the supports are harder to remove.",
  5483. "unit": "%",
  5484. "type": "float",
  5485. "default_value": 100,
  5486. "minimum_value": "0",
  5487. "maximum_value_warning": "100",
  5488. "limit_to_extruder": "support_interface_extruder_nr",
  5489. "enabled": "support_interface_enable and (support_enable or support_meshes_present)",
  5490. "settable_per_mesh": false,
  5491. "settable_per_extruder": true,
  5492. "children":
  5493. {
  5494. "support_roof_density":
  5495. {
  5496. "label": "Support Roof Density",
  5497. "description": "The density of the roofs of the support structure. A higher value results in better overhangs, but the supports are harder to remove.",
  5498. "unit": "%",
  5499. "type": "float",
  5500. "default_value": 100,
  5501. "minimum_value": "0",
  5502. "maximum_value": "100",
  5503. "limit_to_extruder": "support_roof_extruder_nr",
  5504. "enabled": "support_roof_enable and (support_enable or support_meshes_present)",
  5505. "value": "extruderValue(support_roof_extruder_nr, 'support_interface_density')",
  5506. "settable_per_mesh": false,
  5507. "settable_per_extruder": true,
  5508. "children":
  5509. {
  5510. "support_roof_line_distance":
  5511. {
  5512. "label": "Support Roof Line Distance",
  5513. "description": "Distance between the printed support roof lines. This setting is calculated by the Support Roof Density, but can be adjusted separately.",
  5514. "unit": "mm",
  5515. "type": "float",
  5516. "default_value": 0.4,
  5517. "minimum_value": "0",
  5518. "minimum_value_warning": "support_roof_line_width - 0.0001",
  5519. "value": "0 if support_roof_density == 0 else (support_roof_line_width * 100) / support_roof_density * (2 if support_roof_pattern == 'grid' else (3 if support_roof_pattern == 'triangles' else 1))",
  5520. "limit_to_extruder": "support_roof_extruder_nr",
  5521. "enabled": "support_roof_enable and (support_enable or support_meshes_present)",
  5522. "settable_per_mesh": false,
  5523. "settable_per_extruder": true
  5524. }
  5525. }
  5526. },
  5527. "support_bottom_density":
  5528. {
  5529. "label": "Support Floor Density",
  5530. "description": "The density of the floors of the support structure. A higher value results in better adhesion of the support on top of the model.",
  5531. "unit": "%",
  5532. "type": "float",
  5533. "default_value": 100,
  5534. "minimum_value": "0",
  5535. "maximum_value": "100",
  5536. "limit_to_extruder": "support_bottom_extruder_nr",
  5537. "enabled": "support_bottom_enable and (support_enable or support_meshes_present)",
  5538. "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_density')",
  5539. "settable_per_mesh": false,
  5540. "settable_per_extruder": true,
  5541. "children":
  5542. {
  5543. "support_bottom_line_distance":
  5544. {
  5545. "label": "Support Floor Line Distance",
  5546. "description": "Distance between the printed support floor lines. This setting is calculated by the Support Floor Density, but can be adjusted separately.",
  5547. "unit": "mm",
  5548. "type": "float",
  5549. "default_value": 0.4,
  5550. "minimum_value": "0",
  5551. "minimum_value_warning": "support_bottom_line_width - 0.0001",
  5552. "value": "0 if support_bottom_density == 0 else (support_bottom_line_width * 100) / support_bottom_density * (2 if support_bottom_pattern == 'grid' else (3 if support_bottom_pattern == 'triangles' else 1))",
  5553. "limit_to_extruder": "support_bottom_extruder_nr",
  5554. "enabled": "support_bottom_enable and (support_enable or support_meshes_present)",
  5555. "settable_per_mesh": false,
  5556. "settable_per_extruder": true
  5557. }
  5558. }
  5559. }
  5560. }
  5561. },
  5562. "support_interface_pattern":
  5563. {
  5564. "label": "Support Interface Pattern",
  5565. "description": "The pattern with which the interface of the support with the model is printed.",
  5566. "type": "enum",
  5567. "options":
  5568. {
  5569. "lines": "Lines",
  5570. "grid": "Grid",
  5571. "triangles": "Triangles",
  5572. "concentric": "Concentric",
  5573. "zigzag": "Zig Zag"
  5574. },
  5575. "default_value": "concentric",
  5576. "limit_to_extruder": "support_interface_extruder_nr",
  5577. "enabled": "support_interface_enable and (support_enable or support_meshes_present)",
  5578. "settable_per_mesh": false,
  5579. "settable_per_extruder": true,
  5580. "children":
  5581. {
  5582. "support_roof_pattern":
  5583. {
  5584. "label": "Support Roof Pattern",
  5585. "description": "The pattern with which the roofs of the support are printed.",
  5586. "type": "enum",
  5587. "options":
  5588. {
  5589. "lines": "Lines",
  5590. "grid": "Grid",
  5591. "triangles": "Triangles",
  5592. "concentric": "Concentric",
  5593. "zigzag": "Zig Zag"
  5594. },
  5595. "default_value": "concentric",
  5596. "value": "extruderValue(support_roof_extruder_nr, 'support_interface_pattern')",
  5597. "limit_to_extruder": "support_roof_extruder_nr",
  5598. "enabled": "support_roof_enable and (support_enable or support_meshes_present)",
  5599. "settable_per_mesh": false,
  5600. "settable_per_extruder": true
  5601. },
  5602. "support_bottom_pattern":
  5603. {
  5604. "label": "Support Floor Pattern",
  5605. "description": "The pattern with which the floors of the support are printed.",
  5606. "type": "enum",
  5607. "options":
  5608. {
  5609. "lines": "Lines",
  5610. "grid": "Grid",
  5611. "triangles": "Triangles",
  5612. "concentric": "Concentric",
  5613. "zigzag": "Zig Zag"
  5614. },
  5615. "default_value": "concentric",
  5616. "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_pattern')",
  5617. "limit_to_extruder": "support_bottom_extruder_nr",
  5618. "enabled": "support_bottom_enable and (support_enable or support_meshes_present)",
  5619. "settable_per_mesh": false,
  5620. "settable_per_extruder": true
  5621. }
  5622. }
  5623. },
  5624. "minimum_interface_area":
  5625. {
  5626. "label": "Minimum Support Interface Area",
  5627. "description": "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support.",
  5628. "unit": "mm\u00b2",
  5629. "type": "float",
  5630. "default_value": 1.0,
  5631. "minimum_value": "0",
  5632. "limit_to_extruder": "support_interface_extruder_nr",
  5633. "enabled": "support_interface_enable and (support_enable or support_meshes_present)",
  5634. "settable_per_mesh": true,
  5635. "children":
  5636. {
  5637. "minimum_roof_area":
  5638. {
  5639. "label": "Minimum Support Roof Area",
  5640. "description": "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support.",
  5641. "unit": "mm\u00b2",
  5642. "type": "float",
  5643. "default_value": 1.0,
  5644. "value": "extruderValue(support_roof_extruder_nr, 'minimum_interface_area')",
  5645. "minimum_value": "0",
  5646. "limit_to_extruder": "support_roof_extruder_nr",
  5647. "enabled": "support_roof_enable and (support_enable or support_meshes_present)",
  5648. "settable_per_mesh": true
  5649. },
  5650. "minimum_bottom_area":
  5651. {
  5652. "label": "Minimum Support Floor Area",
  5653. "description": "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support.",
  5654. "unit": "mm\u00b2",
  5655. "type": "float",
  5656. "default_value": 1.0,
  5657. "value": "extruderValue(support_bottom_extruder_nr, 'minimum_interface_area')",
  5658. "minimum_value": "0",
  5659. "limit_to_extruder": "support_bottom_extruder_nr",
  5660. "enabled": "support_bottom_enable and ((support_enable and support_structure == 'normal') or support_meshes_present)",
  5661. "settable_per_mesh": true
  5662. }
  5663. }
  5664. },
  5665. "support_interface_offset":
  5666. {
  5667. "label": "Support Interface Horizontal Expansion",
  5668. "description": "Amount of offset applied to the support interface polygons.",
  5669. "unit": "mm",
  5670. "type": "float",
  5671. "default_value": 0.0,
  5672. "maximum_value": "extruderValue(support_extruder_nr, 'support_offset') if support_structure == 'normal' else None",
  5673. "minimum_value_warning": "-1 * machine_nozzle_size",
  5674. "maximum_value_warning": "10 * machine_nozzle_size",
  5675. "limit_to_extruder": "support_interface_extruder_nr",
  5676. "enabled": "support_interface_enable and (support_enable or support_meshes_present)",
  5677. "settable_per_mesh": false,
  5678. "settable_per_extruder": true,
  5679. "children":
  5680. {
  5681. "support_roof_offset":
  5682. {
  5683. "label": "Support Roof Horizontal Expansion",
  5684. "description": "Amount of offset applied to the roofs of the support.",
  5685. "unit": "mm",
  5686. "type": "float",
  5687. "default_value": 0.0,
  5688. "value": "extruderValue(support_roof_extruder_nr, 'support_interface_offset')",
  5689. "maximum_value": "extruderValue(support_extruder_nr, 'support_offset') if support_structure == 'normal' else None",
  5690. "minimum_value_warning": "-1 * machine_nozzle_size",
  5691. "maximum_value_warning": "10 * machine_nozzle_size",
  5692. "limit_to_extruder": "support_roof_extruder_nr",
  5693. "enabled": "support_roof_enable and (support_enable or support_meshes_present)",
  5694. "settable_per_mesh": false,
  5695. "settable_per_extruder": true
  5696. },
  5697. "support_bottom_offset":
  5698. {
  5699. "label": "Support Floor Horizontal Expansion",
  5700. "description": "Amount of offset applied to the floors of the support.",
  5701. "unit": "mm",
  5702. "type": "float",
  5703. "default_value": 0.0,
  5704. "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_offset')",
  5705. "maximum_value": "extruderValue(support_extruder_nr, 'support_offset') if support_structure == 'normal' else None",
  5706. "minimum_value_warning": "-1 * machine_nozzle_size",
  5707. "maximum_value_warning": "10 * machine_nozzle_size",
  5708. "limit_to_extruder": "support_bottom_extruder_nr",
  5709. "enabled": "support_bottom_enable and (support_enable or support_meshes_present)",
  5710. "settable_per_mesh": false,
  5711. "settable_per_extruder": true
  5712. }
  5713. }
  5714. },
  5715. "support_interface_priority":
  5716. {
  5717. "label": "Support Interface Priority",
  5718. "description": "How support interface and support will interact when they overlap. Currently only implemented for support roof.",
  5719. "type": "enum",
  5720. "options":
  5721. {
  5722. "support_area_overwrite_interface_area": "Support preferred",
  5723. "interface_area_overwrite_support_area": "Interface preferred",
  5724. "support_lines_overwrite_interface_area": "Support lines preferred",
  5725. "interface_lines_overwrite_support_area": "Interface lines preferred",
  5726. "nothing": "Both overlap"
  5727. },
  5728. "default_value": "interface_area_overwrite_support_area",
  5729. "settable_per_extruder": false,
  5730. "enabled": "support_enable and support_structure=='tree' and support_roof_enable",
  5731. "settable_per_mesh": false
  5732. },
  5733. "support_interface_angles":
  5734. {
  5735. "label": "Support Interface Line Directions",
  5736. "description": "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees).",
  5737. "type": "[int]",
  5738. "default_value": "[ ]",
  5739. "limit_to_extruder": "support_interface_extruder_nr",
  5740. "enabled": "(support_enable or support_meshes_present) and support_interface_enable and support_interface_pattern != 'concentric'",
  5741. "settable_per_mesh": false,
  5742. "settable_per_extruder": true,
  5743. "children":
  5744. {
  5745. "support_roof_angles":
  5746. {
  5747. "label": "Support Roof Line Directions",
  5748. "description": "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees).",
  5749. "type": "[int]",
  5750. "default_value": "[ ]",
  5751. "value": "support_interface_angles",
  5752. "limit_to_extruder": "support_roof_extruder_nr",
  5753. "enabled": "(support_enable or support_meshes_present) and support_roof_enable and support_roof_pattern != 'concentric'",
  5754. "settable_per_mesh": false,
  5755. "settable_per_extruder": true
  5756. },
  5757. "support_bottom_angles":
  5758. {
  5759. "label": "Support Floor Line Directions",
  5760. "description": "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees).",
  5761. "type": "[int]",
  5762. "default_value": "[ ]",
  5763. "value": "support_interface_angles",
  5764. "limit_to_extruder": "support_bottom_extruder_nr",
  5765. "enabled": "(support_enable or support_meshes_present) and support_bottom_enable and support_bottom_pattern != 'concentric'",
  5766. "settable_per_mesh": false,
  5767. "settable_per_extruder": true
  5768. }
  5769. }
  5770. },
  5771. "support_fan_enable":
  5772. {
  5773. "label": "Fan Speed Override",
  5774. "description": "When enabled, the print cooling fan speed is altered for the skin regions immediately above the support.",
  5775. "type": "bool",
  5776. "default_value": false,
  5777. "enabled": "support_enable or support_meshes_present",
  5778. "settable_per_mesh": false
  5779. },
  5780. "support_supported_skin_fan_speed":
  5781. {
  5782. "label": "Supported Skin Fan Speed",
  5783. "description": "Percentage fan speed to use when printing the skin regions immediately above the support. Using a high fan speed can make the support easier to remove.",
  5784. "unit": "%",
  5785. "minimum_value": "0",
  5786. "maximum_value": "100",
  5787. "default_value": 100,
  5788. "type": "float",
  5789. "enabled": "(support_enable or support_meshes_present) and support_fan_enable",
  5790. "settable_per_mesh": false
  5791. },
  5792. "support_use_towers":
  5793. {
  5794. "label": "Use Towers",
  5795. "description": "Use specialized towers to support tiny overhang areas. These towers have a larger diameter than the region they support. Near the overhang the towers' diameter decreases, forming a roof.",
  5796. "type": "bool",
  5797. "default_value": true,
  5798. "limit_to_extruder": "support_infill_extruder_nr",
  5799. "enabled": "support_enable and support_structure == 'normal'",
  5800. "settable_per_mesh": true
  5801. },
  5802. "support_tower_diameter":
  5803. {
  5804. "label": "Tower Diameter",
  5805. "description": "The diameter of a special tower.",
  5806. "unit": "mm",
  5807. "type": "float",
  5808. "default_value": 3.0,
  5809. "limit_to_extruder": "support_infill_extruder_nr",
  5810. "minimum_value": "0",
  5811. "minimum_value_warning": "2 * machine_nozzle_size",
  5812. "maximum_value_warning": "20",
  5813. "enabled": "support_enable and support_structure == 'normal' and support_use_towers",
  5814. "settable_per_mesh": true
  5815. },
  5816. "support_tower_maximum_supported_diameter":
  5817. {
  5818. "label": "Maximum Tower-Supported Diameter",
  5819. "description": "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower.",
  5820. "unit": "mm",
  5821. "type": "float",
  5822. "default_value": 3.0,
  5823. "limit_to_extruder": "support_infill_extruder_nr",
  5824. "minimum_value": "0",
  5825. "minimum_value_warning": "2 * machine_nozzle_size",
  5826. "maximum_value_warning": "20",
  5827. "maximum_value": "support_tower_diameter",
  5828. "enabled": "support_enable and support_structure == 'normal' and support_use_towers",
  5829. "settable_per_mesh": true
  5830. },
  5831. "support_tower_roof_angle":
  5832. {
  5833. "label": "Tower Roof Angle",
  5834. "description": "The angle of a rooftop of a tower. A higher value results in pointed tower roofs, a lower value results in flattened tower roofs.",
  5835. "unit": "\u00b0",
  5836. "type": "int",
  5837. "minimum_value": "0",
  5838. "maximum_value": "90",
  5839. "default_value": 65,
  5840. "limit_to_extruder": "support_infill_extruder_nr",
  5841. "enabled": "support_enable and support_structure == 'normal' and support_use_towers",
  5842. "settable_per_mesh": true
  5843. },
  5844. "support_mesh_drop_down":
  5845. {
  5846. "label": "Drop Down Support Mesh",
  5847. "description": "Make support everywhere below the support mesh, so that there's no overhang in the support mesh.",
  5848. "type": "bool",
  5849. "default_value": true,
  5850. "enabled": "support_mesh",
  5851. "settable_per_mesh": true,
  5852. "settable_per_extruder": false,
  5853. "settable_per_meshgroup": false,
  5854. "settable_globally": false
  5855. },
  5856. "support_meshes_present":
  5857. {
  5858. "label": "Scene Has Support Meshes",
  5859. "description": "There are support meshes present in the scene. This setting is controlled by Cura.",
  5860. "type": "bool",
  5861. "default_value": false,
  5862. "enabled": false,
  5863. "settable_per_mesh": false,
  5864. "settable_per_extruder": false,
  5865. "settable_per_meshgroup": false
  5866. }
  5867. }
  5868. },
  5869. "platform_adhesion":
  5870. {
  5871. "label": "Build Plate Adhesion",
  5872. "type": "category",
  5873. "icon": "Adhesion",
  5874. "description": "Adhesion",
  5875. "children":
  5876. {
  5877. "prime_blob_enable":
  5878. {
  5879. "label": "Enable Prime Blob",
  5880. "description": "Whether to prime the filament with a blob before printing. Turning this setting on will ensure that the extruder will have material ready at the nozzle before printing. Printing Brim or Skirt can act like priming too, in which case turning this setting off saves some time.",
  5881. "type": "bool",
  5882. "default_value": false,
  5883. "settable_per_mesh": false,
  5884. "settable_per_extruder": true,
  5885. "enabled": false,
  5886. "warning_value": "True if resolveOrValue('print_sequence') == 'one_at_a_time' else None"
  5887. },
  5888. "extruder_prime_pos_x":
  5889. {
  5890. "label": "Extruder Prime X Position",
  5891. "description": "The X coordinate of the position where the nozzle primes at the start of printing.",
  5892. "type": "float",
  5893. "unit": "mm",
  5894. "default_value": 0,
  5895. "minimum_value_warning": "machine_width / -2 if machine_center_is_zero else 0",
  5896. "maximum_value_warning": "machine_width / 2 if machine_center_is_zero else machine_width",
  5897. "settable_per_mesh": false,
  5898. "settable_per_extruder": true,
  5899. "enabled": false
  5900. },
  5901. "extruder_prime_pos_y":
  5902. {
  5903. "label": "Extruder Prime Y Position",
  5904. "description": "The Y coordinate of the position where the nozzle primes at the start of printing.",
  5905. "type": "float",
  5906. "unit": "mm",
  5907. "default_value": 0,
  5908. "minimum_value_warning": "machine_depth / -2 if machine_center_is_zero else 0",
  5909. "maximum_value_warning": "machine_depth / 2 if machine_center_is_zero else machine_depth",
  5910. "settable_per_mesh": false,
  5911. "settable_per_extruder": true,
  5912. "enabled": false
  5913. },
  5914. "adhesion_type":
  5915. {
  5916. "label": "Build Plate Adhesion Type",
  5917. "description": "Different options that help to improve both priming your extrusion and adhesion to the build plate. Brim adds a single layer flat area around the base of your model to prevent warping. Raft adds a thick grid with a roof below the model. Skirt is a line printed around the model, but not connected to the model.",
  5918. "type": "enum",
  5919. "options":
  5920. {
  5921. "skirt": "Skirt",
  5922. "brim": "Brim",
  5923. "raft": "Raft",
  5924. "none": "None"
  5925. },
  5926. "default_value": "brim",
  5927. "resolve": "extruderValue(adhesion_extruder_nr, 'adhesion_type')",
  5928. "settable_per_mesh": false,
  5929. "settable_per_extruder": false
  5930. },
  5931. "adhesion_extruder_nr":
  5932. {
  5933. "label": "Build Plate Adhesion Extruder",
  5934. "description": "The extruder train to use for printing the skirt/brim/raft. This is used in multi-extrusion.",
  5935. "type": "optional_extruder",
  5936. "default_value": "-1",
  5937. "value": "int(defaultExtruderPosition()) if resolveOrValue('adhesion_type') == 'raft' else -1",
  5938. "enabled": "extruders_enabled_count > 1 and (resolveOrValue('adhesion_type') != 'none')",
  5939. "resolve": "max(extruderValues('adhesion_extruder_nr'))",
  5940. "settable_per_mesh": false,
  5941. "settable_per_extruder": false,
  5942. "children":
  5943. {
  5944. "skirt_brim_extruder_nr":
  5945. {
  5946. "label": "Skirt/Brim Extruder",
  5947. "description": "The extruder train to use for printing the skirt or brim. This is used in multi-extrusion.",
  5948. "type": "optional_extruder",
  5949. "default_value": "-1",
  5950. "value": "adhesion_extruder_nr",
  5951. "enabled": "extruders_enabled_count > 1 and (resolveOrValue('adhesion_type') in ['skirt', 'brim'])",
  5952. "resolve": "max(extruderValues('skirt_brim_extruder_nr'))",
  5953. "settable_per_mesh": false,
  5954. "settable_per_extruder": false
  5955. },
  5956. "raft_base_extruder_nr":
  5957. {
  5958. "label": "Raft Base Extruder",
  5959. "description": "The extruder train to use for printing the first layer of the raft. This is used in multi-extrusion.",
  5960. "type": "extruder",
  5961. "default_value": "0",
  5962. "value": "0 if adhesion_extruder_nr == -1 else adhesion_extruder_nr",
  5963. "enabled": "extruders_enabled_count > 1 and resolveOrValue('adhesion_type') == 'raft'",
  5964. "resolve": "max(extruderValues('raft_base_extruder_nr'))",
  5965. "settable_per_mesh": false,
  5966. "settable_per_extruder": false
  5967. },
  5968. "raft_interface_extruder_nr":
  5969. {
  5970. "label": "Raft Middle Extruder",
  5971. "description": "The extruder train to use for printing the middle layer of the raft. This is used in multi-extrusion.",
  5972. "type": "extruder",
  5973. "default_value": "0",
  5974. "value": "0 if adhesion_extruder_nr == -1 else adhesion_extruder_nr",
  5975. "enabled": "extruders_enabled_count > 1 and resolveOrValue('adhesion_type') == 'raft'",
  5976. "resolve": "max(extruderValues('raft_interface_extruder_nr'))",
  5977. "settable_per_mesh": false,
  5978. "settable_per_extruder": false
  5979. },
  5980. "raft_surface_extruder_nr":
  5981. {
  5982. "label": "Raft Top Extruder",
  5983. "description": "The extruder train to use for printing the top layer(s) of the raft. This is used in multi-extrusion.",
  5984. "type": "extruder",
  5985. "default_value": "0",
  5986. "value": "0 if adhesion_extruder_nr == -1 else adhesion_extruder_nr",
  5987. "enabled": "extruders_enabled_count > 1 and resolveOrValue('adhesion_type') == 'raft'",
  5988. "resolve": "max(extruderValues('raft_surface_extruder_nr'))",
  5989. "settable_per_mesh": false,
  5990. "settable_per_extruder": false
  5991. }
  5992. }
  5993. },
  5994. "skirt_line_count":
  5995. {
  5996. "label": "Skirt Line Count",
  5997. "description": "Multiple skirt lines help to prime your extrusion better for small models. Setting this to 0 will disable the skirt.",
  5998. "type": "int",
  5999. "default_value": 1,
  6000. "minimum_value": "0",
  6001. "maximum_value_warning": "10",
  6002. "maximum_value": "0.5 * min(machine_width, machine_depth) / skirt_brim_line_width",
  6003. "enabled": "resolveOrValue('adhesion_type') == 'skirt'",
  6004. "limit_to_extruder": "skirt_brim_extruder_nr",
  6005. "settable_per_mesh": false,
  6006. "settable_per_extruder": true
  6007. },
  6008. "skirt_height":
  6009. {
  6010. "label": "Skirt Height",
  6011. "description": "Printing the innermost skirt line with multiple layers makes it easy to remove the skirt.",
  6012. "type": "int",
  6013. "default_value": 3,
  6014. "value": "3 if resolveOrValue('skirt_gap') > 0.0 else 1",
  6015. "minimum_value": "1",
  6016. "maximum_value_warning": "10",
  6017. "maximum_value": "machine_height / layer_height",
  6018. "enabled": "resolveOrValue('adhesion_type') == 'skirt'",
  6019. "limit_to_extruder": "skirt_brim_extruder_nr",
  6020. "settable_per_mesh": false,
  6021. "settable_per_extruder": true
  6022. },
  6023. "skirt_gap":
  6024. {
  6025. "label": "Skirt Distance",
  6026. "description": "The horizontal distance between the skirt and the first layer of the print.\nThis is the minimum distance. Multiple skirt lines will extend outwards from this distance.",
  6027. "unit": "mm",
  6028. "type": "float",
  6029. "default_value": 3,
  6030. "minimum_value": "0",
  6031. "minimum_value_warning": "max(extruderValues('machine_nozzle_size'))",
  6032. "maximum_value_warning": "10",
  6033. "enabled": "resolveOrValue('adhesion_type') == 'skirt'",
  6034. "limit_to_extruder": "skirt_brim_extruder_nr",
  6035. "settable_per_mesh": false,
  6036. "settable_per_extruder": true
  6037. },
  6038. "skirt_brim_minimal_length":
  6039. {
  6040. "label": "Skirt/Brim Minimum Length",
  6041. "description": "The minimum length of the skirt or brim. If this length is not reached by all skirt or brim lines together, more skirt or brim lines will be added until the minimum length is reached. Note: If the line count is set to 0 this is ignored.",
  6042. "unit": "mm",
  6043. "type": "float",
  6044. "default_value": 250,
  6045. "minimum_value": "0",
  6046. "minimum_value_warning": "25",
  6047. "maximum_value_warning": "2500",
  6048. "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim'",
  6049. "limit_to_extruder": "skirt_brim_extruder_nr",
  6050. "settable_per_mesh": false,
  6051. "settable_per_extruder": true
  6052. },
  6053. "brim_width":
  6054. {
  6055. "label": "Brim Width",
  6056. "description": "The distance from the model to the outermost brim line. A larger brim enhances adhesion to the build plate, but also reduces the effective print area.",
  6057. "type": "float",
  6058. "unit": "mm",
  6059. "default_value": 8.0,
  6060. "minimum_value": "0.0",
  6061. "maximum_value_warning": "50.0",
  6062. "enabled": "resolveOrValue('adhesion_type') == 'brim'",
  6063. "limit_to_extruder": "skirt_brim_extruder_nr",
  6064. "settable_per_mesh": false,
  6065. "settable_per_extruder": true,
  6066. "children":
  6067. {
  6068. "brim_line_count":
  6069. {
  6070. "label": "Brim Line Count",
  6071. "description": "The number of lines used for a brim. More brim lines enhance adhesion to the build plate, but also reduces the effective print area.",
  6072. "type": "int",
  6073. "default_value": 20,
  6074. "minimum_value": "0",
  6075. "maximum_value_warning": "50 / skirt_brim_line_width",
  6076. "value": "math.ceil(brim_width / (skirt_brim_line_width * initial_layer_line_width_factor / 100.0))",
  6077. "enabled": "resolveOrValue('adhesion_type') == 'brim'",
  6078. "limit_to_extruder": "skirt_brim_extruder_nr",
  6079. "settable_per_mesh": false,
  6080. "settable_per_extruder": true
  6081. }
  6082. }
  6083. },
  6084. "brim_gap":
  6085. {
  6086. "label": "Brim Distance",
  6087. "description": "The horizontal distance between the first brim line and the outline of the first layer of the print. A small gap can make the brim easier to remove while still providing the thermal benefits.",
  6088. "unit": "mm",
  6089. "type": "float",
  6090. "default_value": 0,
  6091. "minimum_value": "-skirt_brim_line_width / 2",
  6092. "maximum_value_warning": "skirt_brim_line_width",
  6093. "enabled": "resolveOrValue('adhesion_type') == 'brim'",
  6094. "limit_to_extruder": "skirt_brim_extruder_nr",
  6095. "settable_per_mesh": false,
  6096. "settable_per_extruder": true
  6097. },
  6098. "brim_replaces_support":
  6099. {
  6100. "label": "Brim Replaces Support",
  6101. "description": "Enforce brim to be printed around the model even if that space would otherwise be occupied by support. This replaces some regions of the first layer of support by brim regions.",
  6102. "type": "bool",
  6103. "default_value": true,
  6104. "enabled": "resolveOrValue('adhesion_type') == 'brim' and (support_enable or support_meshes_present)",
  6105. "limit_to_extruder": "skirt_brim_extruder_nr",
  6106. "settable_per_mesh": false,
  6107. "settable_per_extruder": true
  6108. },
  6109. "brim_location":
  6110. {
  6111. "label": "Brim Location",
  6112. "description": "Print a brim on the outside of the model, inside, or both. Depending on the model, this helps reducing the amount of brim you need to remove afterwards, while ensuring a proper bed adhesion.",
  6113. "type": "enum",
  6114. "options":
  6115. {
  6116. "outside": "Outside Only",
  6117. "inside": "Inside Only",
  6118. "everywhere": "Everywhere"
  6119. },
  6120. "default_value": "outside",
  6121. "enabled": "resolveOrValue('adhesion_type') == 'brim'",
  6122. "limit_to_extruder": "skirt_brim_extruder_nr",
  6123. "settable_per_mesh": false,
  6124. "settable_per_extruder": true
  6125. },
  6126. "brim_inside_margin":
  6127. {
  6128. "label": "Brim Avoid Margin",
  6129. "description": "A brim around a model may touch an other model where you don't want it. This removes all brim within this distance from brimless models.",
  6130. "unit": "mm",
  6131. "type": "float",
  6132. "value": "line_width * 4",
  6133. "default_value": "1.6",
  6134. "minimum_value": "0",
  6135. "enabled": "resolveOrValue('adhesion_type') == 'brim'",
  6136. "limit_to_extruder": "skirt_brim_extruder_nr",
  6137. "settable_per_mesh": false,
  6138. "settable_per_extruder": true
  6139. },
  6140. "brim_smart_ordering":
  6141. {
  6142. "label": "Smart Brim",
  6143. "description": "Swap print order of the innermost and second innermost brim lines. This improves brim removal.",
  6144. "type": "bool",
  6145. "enabled": "resolveOrValue('adhesion_type') == 'brim'",
  6146. "default_value": true,
  6147. "limit_to_extruder": "skirt_brim_extruder_nr",
  6148. "settable_per_mesh": false,
  6149. "settable_per_extruder": true
  6150. },
  6151. "raft_margin":
  6152. {
  6153. "label": "Raft Extra Margin",
  6154. "description": "If the raft is enabled, this is the extra raft area around the model which is also given a raft. Increasing this margin will create a stronger raft while using more material and leaving less area for your print.",
  6155. "unit": "mm",
  6156. "type": "float",
  6157. "default_value": 15,
  6158. "minimum_value_warning": "raft_interface_line_width",
  6159. "maximum_value_warning": "20",
  6160. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6161. "limit_to_extruder": "adhesion_extruder_nr",
  6162. "settable_per_mesh": false,
  6163. "settable_per_extruder": true,
  6164. "children":
  6165. {
  6166. "raft_base_margin":
  6167. {
  6168. "label": "Raft Base Extra Margin",
  6169. "description": "If the raft base is enabled, this is the extra raft area around the model which is also given a raft. Increasing this margin will create a stronger raft while using more material and leaving less area for your print.",
  6170. "unit": "mm",
  6171. "type": "float",
  6172. "value": "raft_margin",
  6173. "default_value": 15,
  6174. "minimum_value_warning": "raft_interface_line_width",
  6175. "maximum_value_warning": "min(raft_interface_margin, 20)",
  6176. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6177. "limit_to_extruder": "raft_base_extruder_nr",
  6178. "settable_per_mesh": false,
  6179. "settable_per_extruder": true
  6180. },
  6181. "raft_interface_margin":
  6182. {
  6183. "label": "Raft Middle Extra Margin",
  6184. "description": "If the raft middle is enabled, this is the extra raft area around the model which is also given a raft. Increasing this margin will create a stronger raft while using more material and leaving less area for your print.",
  6185. "unit": "mm",
  6186. "type": "float",
  6187. "value": "raft_margin",
  6188. "default_value": 15,
  6189. "minimum_value_warning": "raft_interface_line_width",
  6190. "maximum_value_warning": "min(raft_surface_margin, 20)",
  6191. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6192. "limit_to_extruder": "raft_interface_extruder_nr",
  6193. "settable_per_mesh": false,
  6194. "settable_per_extruder": true
  6195. },
  6196. "raft_surface_margin":
  6197. {
  6198. "label": "Raft Top Extra Margin",
  6199. "description": "If the raft top is enabled, this is the extra raft area around the model which is also given a raft. Increasing this margin will create a stronger raft while using more material and leaving less area for your print.",
  6200. "unit": "mm",
  6201. "type": "float",
  6202. "value": "raft_margin",
  6203. "default_value": 15,
  6204. "minimum_value_warning": "raft_interface_line_width",
  6205. "maximum_value_warning": "20",
  6206. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6207. "limit_to_extruder": "raft_surface_extruder_nr",
  6208. "settable_per_mesh": false,
  6209. "settable_per_extruder": true
  6210. }
  6211. }
  6212. },
  6213. "raft_remove_inside_corners":
  6214. {
  6215. "label": "Remove Raft Inside Corners",
  6216. "description": "Remove inside corners from the raft, causing the raft to become convex.",
  6217. "type": "bool",
  6218. "default_value": false,
  6219. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6220. "resolve": "any(extruderValues('raft_remove_inside_corners'))",
  6221. "settable_per_mesh": false,
  6222. "settable_per_extruder": false,
  6223. "children":
  6224. {
  6225. "raft_base_remove_inside_corners":
  6226. {
  6227. "label": "Remove Raft Base Inside Corners",
  6228. "description": "Remove inside corners from the raft base, causing the raft to become convex.",
  6229. "type": "bool",
  6230. "value": "raft_remove_inside_corners",
  6231. "default_value": false,
  6232. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6233. "resolve": "any(extruderValues('raft_base_remove_inside_corners'))",
  6234. "settable_per_mesh": false,
  6235. "settable_per_extruder": false
  6236. },
  6237. "raft_interface_remove_inside_corners":
  6238. {
  6239. "label": "Remove Raft Middle Inside Corners",
  6240. "description": "Remove inside corners from the raft middle part, causing the raft to become convex.",
  6241. "type": "bool",
  6242. "value": "raft_remove_inside_corners",
  6243. "default_value": false,
  6244. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6245. "resolve": "any(extruderValues('raft_interface_remove_inside_corners'))",
  6246. "settable_per_mesh": false,
  6247. "settable_per_extruder": false
  6248. },
  6249. "raft_surface_remove_inside_corners":
  6250. {
  6251. "label": "Remove Raft Top Inside Corners",
  6252. "description": "Remove inside corners from the raft top part, causing the raft to become convex.",
  6253. "type": "bool",
  6254. "value": "raft_remove_inside_corners",
  6255. "default_value": false,
  6256. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6257. "resolve": "any(extruderValues('raft_surface_remove_inside_corners'))",
  6258. "settable_per_mesh": false,
  6259. "settable_per_extruder": false
  6260. }
  6261. }
  6262. },
  6263. "raft_smoothing":
  6264. {
  6265. "label": "Raft Smoothing",
  6266. "description": "This setting controls how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle.",
  6267. "unit": "mm",
  6268. "type": "float",
  6269. "default_value": 5,
  6270. "minimum_value": "0",
  6271. "minimum_value_warning": "raft_interface_line_width",
  6272. "enabled": "resolveOrValue('adhesion_type') == 'raft' and not raft_remove_inside_corners",
  6273. "settable_per_mesh": false,
  6274. "settable_per_extruder": false,
  6275. "children":
  6276. {
  6277. "raft_base_smoothing":
  6278. {
  6279. "label": "Raft Base Smoothing",
  6280. "description": "This setting controls how much inner corners in the raft base outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle.",
  6281. "unit": "mm",
  6282. "type": "float",
  6283. "value": "raft_smoothing",
  6284. "default_value": 5,
  6285. "minimum_value": "0",
  6286. "minimum_value_warning": "raft_interface_line_width",
  6287. "enabled": "resolveOrValue('adhesion_type') == 'raft' and not raft_base_remove_inside_corners",
  6288. "settable_per_mesh": false,
  6289. "settable_per_extruder": false
  6290. },
  6291. "raft_interface_smoothing":
  6292. {
  6293. "label": "Raft Middle Smoothing",
  6294. "description": "This setting controls how much inner corners in the raft middle outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle.",
  6295. "unit": "mm",
  6296. "type": "float",
  6297. "value": "raft_smoothing",
  6298. "default_value": 5,
  6299. "minimum_value": "0",
  6300. "minimum_value_warning": "raft_interface_line_width",
  6301. "enabled": "resolveOrValue('adhesion_type') == 'raft' and not raft_interface_remove_inside_corners",
  6302. "settable_per_mesh": false,
  6303. "settable_per_extruder": false
  6304. },
  6305. "raft_surface_smoothing":
  6306. {
  6307. "label": "Raft Top Smoothing",
  6308. "description": "This setting controls how much inner corners in the raft top outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle.",
  6309. "unit": "mm",
  6310. "type": "float",
  6311. "value": "raft_smoothing",
  6312. "default_value": 5,
  6313. "minimum_value": "0",
  6314. "minimum_value_warning": "raft_interface_line_width",
  6315. "enabled": "resolveOrValue('adhesion_type') == 'raft' and not raft_surface_remove_inside_corners",
  6316. "settable_per_mesh": false,
  6317. "settable_per_extruder": false
  6318. }
  6319. }
  6320. },
  6321. "raft_airgap":
  6322. {
  6323. "label": "Raft Air Gap",
  6324. "description": "The gap between the final raft layer and the first layer of the model. Only the first layer is raised by this amount to lower the bonding between the raft layer and the model. Makes it easier to peel off the raft.",
  6325. "unit": "mm",
  6326. "type": "float",
  6327. "default_value": 0.3,
  6328. "minimum_value": "0",
  6329. "maximum_value_warning": "min(extruderValues('machine_nozzle_size'))",
  6330. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6331. "settable_per_mesh": false,
  6332. "settable_per_extruder": true,
  6333. "limit_to_extruder": "raft_surface_extruder_nr"
  6334. },
  6335. "layer_0_z_overlap":
  6336. {
  6337. "label": "Initial Layer Z Overlap",
  6338. "description": "Make the first and second layer of the model overlap in the Z direction to compensate for the filament lost in the airgap. All models above the first model layer will be shifted down by this amount.\nIt may be noted that sometimes the second layer is printed below initial layer because of this setting. This is intended behavior",
  6339. "unit": "mm",
  6340. "type": "float",
  6341. "default_value": 0.22,
  6342. "value": "raft_airgap / 2",
  6343. "minimum_value": "0",
  6344. "maximum_value_warning": "raft_airgap",
  6345. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6346. "settable_per_mesh": false,
  6347. "settable_per_extruder": true,
  6348. "limit_to_extruder": "raft_surface_extruder_nr"
  6349. },
  6350. "raft_base_thickness":
  6351. {
  6352. "label": "Raft Base Thickness",
  6353. "description": "Layer thickness of the base raft layer. This should be a thick layer which sticks firmly to the printer build plate.",
  6354. "unit": "mm",
  6355. "type": "float",
  6356. "default_value": 0.3,
  6357. "value": "resolveOrValue('layer_height_0') * 1.2",
  6358. "minimum_value": "0.001",
  6359. "minimum_value_warning": "0.04",
  6360. "maximum_value_warning": "0.75 * raft_base_line_width",
  6361. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6362. "settable_per_mesh": false,
  6363. "settable_per_extruder": true,
  6364. "limit_to_extruder": "raft_base_extruder_nr"
  6365. },
  6366. "raft_base_line_width":
  6367. {
  6368. "label": "Raft Base Line Width",
  6369. "description": "Width of the lines in the base raft layer. These should be thick lines to assist in build plate adhesion.",
  6370. "unit": "mm",
  6371. "type": "float",
  6372. "default_value": 0.8,
  6373. "minimum_value": "0.001",
  6374. "value": "machine_nozzle_size * 2",
  6375. "minimum_value_warning": "machine_nozzle_size * 0.5",
  6376. "maximum_value_warning": "machine_nozzle_size * 3",
  6377. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6378. "settable_per_mesh": false,
  6379. "settable_per_extruder": true,
  6380. "limit_to_extruder": "raft_base_extruder_nr"
  6381. },
  6382. "raft_base_line_spacing":
  6383. {
  6384. "label": "Raft Base Line Spacing",
  6385. "description": "The distance between the raft lines for the base raft layer. Wide spacing makes for easy removal of the raft from the build plate.",
  6386. "unit": "mm",
  6387. "type": "float",
  6388. "default_value": 1.6,
  6389. "value": "raft_base_line_width * 2",
  6390. "minimum_value": "0",
  6391. "minimum_value_warning": "raft_base_line_width",
  6392. "maximum_value_warning": "100",
  6393. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6394. "settable_per_mesh": false,
  6395. "settable_per_extruder": true,
  6396. "limit_to_extruder": "raft_base_extruder_nr"
  6397. },
  6398. "raft_interface_layers":
  6399. {
  6400. "label": "Raft Middle Layers",
  6401. "description": "The number of layers between the base and the surface of the raft. These comprise the main thickness of the raft. Increasing this creates a thicker, sturdier raft.",
  6402. "type": "int",
  6403. "default_value": 1,
  6404. "minimum_value": "0",
  6405. "maximum_value_warning": "10",
  6406. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6407. "settable_per_mesh": false,
  6408. "settable_per_extruder": true,
  6409. "limit_to_extruder": "raft_interface_extruder_nr"
  6410. },
  6411. "raft_interface_thickness":
  6412. {
  6413. "label": "Raft Middle Thickness",
  6414. "description": "Layer thickness of the middle raft layer.",
  6415. "unit": "mm",
  6416. "type": "float",
  6417. "default_value": 0.15,
  6418. "value": "resolveOrValue('layer_height') * 1.5",
  6419. "minimum_value": "0.001",
  6420. "minimum_value_warning": "0.04",
  6421. "maximum_value_warning": "0.75 * machine_nozzle_size",
  6422. "enabled": "resolveOrValue('adhesion_type') == 'raft' and raft_interface_layers > 0",
  6423. "settable_per_mesh": false,
  6424. "settable_per_extruder": true,
  6425. "limit_to_extruder": "raft_interface_extruder_nr"
  6426. },
  6427. "raft_interface_line_width":
  6428. {
  6429. "label": "Raft Middle Line Width",
  6430. "description": "Width of the lines in the middle raft layer. Making the second layer extrude more causes the lines to stick to the build plate.",
  6431. "unit": "mm",
  6432. "type": "float",
  6433. "default_value": 0.7,
  6434. "value": "line_width * 2",
  6435. "minimum_value": "0.001",
  6436. "minimum_value_warning": "machine_nozzle_size * 0.5",
  6437. "maximum_value_warning": "machine_nozzle_size * 3",
  6438. "enabled": "resolveOrValue('adhesion_type') == 'raft' and raft_interface_layers > 0",
  6439. "settable_per_mesh": false,
  6440. "settable_per_extruder": true,
  6441. "limit_to_extruder": "raft_interface_extruder_nr"
  6442. },
  6443. "raft_interface_line_spacing":
  6444. {
  6445. "label": "Raft Middle Spacing",
  6446. "description": "The distance between the raft lines for the middle raft layer. The spacing of the middle should be quite wide, while being dense enough to support the top raft layers.",
  6447. "unit": "mm",
  6448. "type": "float",
  6449. "default_value": 0.9,
  6450. "value": "raft_interface_line_width + 0.2",
  6451. "minimum_value": "0",
  6452. "minimum_value_warning": "raft_interface_line_width",
  6453. "maximum_value_warning": "15.0",
  6454. "enabled": "resolveOrValue('adhesion_type') == 'raft' and raft_interface_layers > 0",
  6455. "settable_per_mesh": false,
  6456. "settable_per_extruder": true,
  6457. "limit_to_extruder": "raft_interface_extruder_nr"
  6458. },
  6459. "raft_surface_layers":
  6460. {
  6461. "label": "Raft Top Layers",
  6462. "description": "The number of top layers on top of the 2nd raft layer. These are fully filled layers that the model sits on. 2 layers result in a smoother top surface than 1.",
  6463. "type": "int",
  6464. "default_value": 2,
  6465. "minimum_value": "0",
  6466. "maximum_value_warning": "20",
  6467. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6468. "settable_per_mesh": false,
  6469. "settable_per_extruder": true,
  6470. "limit_to_extruder": "raft_surface_extruder_nr"
  6471. },
  6472. "raft_surface_thickness":
  6473. {
  6474. "label": "Raft Top Layer Thickness",
  6475. "description": "Layer thickness of the top raft layers.",
  6476. "unit": "mm",
  6477. "type": "float",
  6478. "default_value": 0.1,
  6479. "value": "resolveOrValue('layer_height')",
  6480. "minimum_value": "0.001",
  6481. "minimum_value_warning": "0.04",
  6482. "maximum_value_warning": "0.75 * machine_nozzle_size",
  6483. "enabled": "resolveOrValue('adhesion_type') == 'raft' and raft_surface_layers > 0",
  6484. "settable_per_mesh": false,
  6485. "settable_per_extruder": true,
  6486. "limit_to_extruder": "raft_surface_extruder_nr"
  6487. },
  6488. "raft_surface_line_width":
  6489. {
  6490. "label": "Raft Top Line Width",
  6491. "description": "Width of the lines in the top surface of the raft. These can be thin lines so that the top of the raft becomes smooth.",
  6492. "unit": "mm",
  6493. "type": "float",
  6494. "default_value": 0.4,
  6495. "value": "line_width",
  6496. "minimum_value": "0.001",
  6497. "minimum_value_warning": "machine_nozzle_size * 0.1",
  6498. "maximum_value_warning": "machine_nozzle_size * 2",
  6499. "enabled": "resolveOrValue('adhesion_type') == 'raft' and raft_surface_layers > 0",
  6500. "settable_per_mesh": false,
  6501. "settable_per_extruder": true,
  6502. "limit_to_extruder": "raft_surface_extruder_nr"
  6503. },
  6504. "raft_surface_line_spacing":
  6505. {
  6506. "label": "Raft Top Spacing",
  6507. "description": "The distance between the raft lines for the top raft layers. The spacing should be equal to the line width, so that the surface is solid.",
  6508. "unit": "mm",
  6509. "type": "float",
  6510. "default_value": 0.4,
  6511. "minimum_value": "0",
  6512. "minimum_value_warning": "raft_surface_line_width",
  6513. "maximum_value_warning": "raft_surface_line_width * 3",
  6514. "enabled": "resolveOrValue('adhesion_type') == 'raft' and raft_surface_layers > 0",
  6515. "value": "raft_surface_line_width",
  6516. "settable_per_mesh": false,
  6517. "settable_per_extruder": true,
  6518. "limit_to_extruder": "raft_surface_extruder_nr"
  6519. },
  6520. "raft_surface_monotonic":
  6521. {
  6522. "label": "Monotonic Raft Top Surface Order",
  6523. "description": "Print raft top surface lines in an ordering that causes them to always overlap with adjacent lines in a single direction. This takes slightly more time to print, but makes the surface look more consistent, which is also visible on the model bottom surface.",
  6524. "type": "bool",
  6525. "default_value": false,
  6526. "value": "skin_monotonic",
  6527. "enabled": "resolveOrValue('adhesion_type') == 'raft' and raft_surface_layers > 0",
  6528. "settable_per_mesh": false,
  6529. "settable_per_extruder": true,
  6530. "limit_to_extruder": "raft_surface_extruder_nr"
  6531. },
  6532. "raft_wall_count":
  6533. {
  6534. "label": "Raft Wall Count",
  6535. "description": "The number of contours to print around the linear pattern of the raft.",
  6536. "type": "int",
  6537. "default_value": 1,
  6538. "minimum_value": "0",
  6539. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6540. "settable_per_mesh": false,
  6541. "settable_per_extruder": false,
  6542. "children":
  6543. {
  6544. "raft_base_wall_count":
  6545. {
  6546. "label": "Raft Base Wall Count",
  6547. "description": "The number of contours to print around the linear pattern in the base layer of the raft.",
  6548. "type": "int",
  6549. "default_value": 1,
  6550. "value": "raft_wall_count",
  6551. "minimum_value": "0",
  6552. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6553. "settable_per_mesh": false,
  6554. "settable_per_extruder": false
  6555. },
  6556. "raft_interface_wall_count":
  6557. {
  6558. "label": "Raft Middle Wall Count",
  6559. "description": "The number of contours to print around the linear pattern in the middle layers of the raft.",
  6560. "type": "int",
  6561. "default_value": 0,
  6562. "minimum_value": "0",
  6563. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6564. "settable_per_mesh": false,
  6565. "settable_per_extruder": false
  6566. },
  6567. "raft_surface_wall_count":
  6568. {
  6569. "label": "Raft Top Wall Count",
  6570. "description": "The number of contours to print around the linear pattern in the top layers of the raft.",
  6571. "type": "int",
  6572. "default_value": 0,
  6573. "minimum_value": "0",
  6574. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6575. "settable_per_mesh": false,
  6576. "settable_per_extruder": false
  6577. }
  6578. }
  6579. },
  6580. "raft_speed":
  6581. {
  6582. "label": "Raft Print Speed",
  6583. "description": "The speed at which the raft is printed.",
  6584. "unit": "mm/s",
  6585. "type": "float",
  6586. "default_value": 20,
  6587. "minimum_value": "0.1",
  6588. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  6589. "maximum_value_warning": "200",
  6590. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6591. "value": "speed_print / 60 * 30",
  6592. "settable_per_mesh": false,
  6593. "settable_per_extruder": true,
  6594. "limit_to_extruder": "adhesion_extruder_nr",
  6595. "children":
  6596. {
  6597. "raft_base_speed":
  6598. {
  6599. "label": "Raft Base Print Speed",
  6600. "description": "The speed at which the base raft layer is printed. This should be printed quite slowly, as the volume of material coming out of the nozzle is quite high.",
  6601. "unit": "mm/s",
  6602. "type": "float",
  6603. "default_value": 15,
  6604. "minimum_value": "0.1",
  6605. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  6606. "maximum_value_warning": "200",
  6607. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6608. "value": "0.75 * raft_speed",
  6609. "settable_per_mesh": false,
  6610. "settable_per_extruder": true,
  6611. "limit_to_extruder": "raft_base_extruder_nr"
  6612. },
  6613. "raft_interface_speed":
  6614. {
  6615. "label": "Raft Middle Print Speed",
  6616. "description": "The speed at which the middle raft layer is printed. This should be printed quite slowly, as the volume of material coming out of the nozzle is quite high.",
  6617. "unit": "mm/s",
  6618. "type": "float",
  6619. "default_value": 15,
  6620. "value": "raft_speed * 0.75",
  6621. "minimum_value": "0.1",
  6622. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  6623. "maximum_value_warning": "150",
  6624. "enabled": "resolveOrValue('adhesion_type') == 'raft' and raft_interface_layers > 0",
  6625. "settable_per_mesh": false,
  6626. "settable_per_extruder": true,
  6627. "limit_to_extruder": "raft_interface_extruder_nr"
  6628. },
  6629. "raft_surface_speed":
  6630. {
  6631. "label": "Raft Top Print Speed",
  6632. "description": "The speed at which the top raft layers are printed. These should be printed a bit slower, so that the nozzle can slowly smooth out adjacent surface lines.",
  6633. "unit": "mm/s",
  6634. "type": "float",
  6635. "default_value": 20,
  6636. "minimum_value": "0.1",
  6637. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  6638. "maximum_value_warning": "100",
  6639. "enabled": "resolveOrValue('adhesion_type') == 'raft' and raft_surface_layers > 0",
  6640. "value": "raft_speed",
  6641. "settable_per_mesh": false,
  6642. "settable_per_extruder": true,
  6643. "limit_to_extruder": "raft_surface_extruder_nr"
  6644. }
  6645. }
  6646. },
  6647. "raft_acceleration":
  6648. {
  6649. "label": "Raft Print Acceleration",
  6650. "description": "The acceleration with which the raft is printed.",
  6651. "unit": "mm/s\u00b2",
  6652. "type": "float",
  6653. "default_value": 3000,
  6654. "minimum_value": "0.1",
  6655. "minimum_value_warning": "100",
  6656. "maximum_value_warning": "10000",
  6657. "value": "acceleration_print",
  6658. "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('acceleration_enabled')",
  6659. "settable_per_mesh": false,
  6660. "limit_to_extruder": "adhesion_extruder_nr",
  6661. "children":
  6662. {
  6663. "raft_base_acceleration":
  6664. {
  6665. "label": "Raft Base Print Acceleration",
  6666. "description": "The acceleration with which the base raft layer is printed.",
  6667. "unit": "mm/s\u00b2",
  6668. "type": "float",
  6669. "default_value": 3000,
  6670. "value": "raft_acceleration",
  6671. "minimum_value": "0.1",
  6672. "minimum_value_warning": "100",
  6673. "maximum_value_warning": "10000",
  6674. "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('acceleration_enabled')",
  6675. "settable_per_mesh": false,
  6676. "limit_to_extruder": "raft_base_extruder_nr"
  6677. },
  6678. "raft_interface_acceleration":
  6679. {
  6680. "label": "Raft Middle Print Acceleration",
  6681. "description": "The acceleration with which the middle raft layer is printed.",
  6682. "unit": "mm/s\u00b2",
  6683. "type": "float",
  6684. "default_value": 3000,
  6685. "value": "raft_acceleration",
  6686. "minimum_value": "0.1",
  6687. "minimum_value_warning": "100",
  6688. "maximum_value_warning": "10000",
  6689. "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('acceleration_enabled') and raft_interface_layers > 0",
  6690. "settable_per_mesh": false,
  6691. "limit_to_extruder": "raft_interface_extruder_nr"
  6692. },
  6693. "raft_surface_acceleration":
  6694. {
  6695. "label": "Raft Top Print Acceleration",
  6696. "description": "The acceleration with which the top raft layers are printed.",
  6697. "unit": "mm/s\u00b2",
  6698. "type": "float",
  6699. "default_value": 3000,
  6700. "value": "raft_acceleration",
  6701. "minimum_value": "0.1",
  6702. "minimum_value_warning": "100",
  6703. "maximum_value_warning": "10000",
  6704. "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('acceleration_enabled') and raft_surface_layers > 0",
  6705. "settable_per_mesh": false,
  6706. "limit_to_extruder": "raft_surface_extruder_nr"
  6707. }
  6708. }
  6709. },
  6710. "raft_jerk":
  6711. {
  6712. "label": "Raft Print Jerk",
  6713. "description": "The jerk with which the raft is printed.",
  6714. "unit": "mm/s",
  6715. "type": "float",
  6716. "default_value": 20,
  6717. "minimum_value": "0",
  6718. "minimum_value_warning": "5",
  6719. "maximum_value_warning": "50",
  6720. "value": "jerk_print",
  6721. "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')",
  6722. "settable_per_mesh": false,
  6723. "limit_to_extruder": "adhesion_extruder_nr",
  6724. "children":
  6725. {
  6726. "raft_base_jerk":
  6727. {
  6728. "label": "Raft Base Print Jerk",
  6729. "description": "The jerk with which the base raft layer is printed.",
  6730. "unit": "mm/s",
  6731. "type": "float",
  6732. "default_value": 20,
  6733. "value": "raft_jerk",
  6734. "minimum_value": "0",
  6735. "minimum_value_warning": "5",
  6736. "maximum_value_warning": "50",
  6737. "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')",
  6738. "settable_per_mesh": false,
  6739. "limit_to_extruder": "raft_base_extruder_nr"
  6740. },
  6741. "raft_interface_jerk":
  6742. {
  6743. "label": "Raft Middle Print Jerk",
  6744. "description": "The jerk with which the middle raft layer is printed.",
  6745. "unit": "mm/s",
  6746. "type": "float",
  6747. "default_value": 20,
  6748. "value": "raft_jerk",
  6749. "minimum_value": "0",
  6750. "minimum_value_warning": "5",
  6751. "maximum_value_warning": "50",
  6752. "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled') and raft_interface_layers > 0",
  6753. "settable_per_mesh": false,
  6754. "limit_to_extruder": "raft_interface_extruder_nr"
  6755. },
  6756. "raft_surface_jerk":
  6757. {
  6758. "label": "Raft Top Print Jerk",
  6759. "description": "The jerk with which the top raft layers are printed.",
  6760. "unit": "mm/s",
  6761. "type": "float",
  6762. "default_value": 20,
  6763. "value": "raft_jerk",
  6764. "minimum_value": "0",
  6765. "minimum_value_warning": "5",
  6766. "maximum_value_warning": "100",
  6767. "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled') and raft_surface_layers > 0",
  6768. "settable_per_mesh": false,
  6769. "limit_to_extruder": "raft_surface_extruder_nr"
  6770. }
  6771. }
  6772. },
  6773. "raft_fan_speed":
  6774. {
  6775. "label": "Raft Fan Speed",
  6776. "description": "The fan speed for the raft.",
  6777. "unit": "%",
  6778. "type": "float",
  6779. "minimum_value": "0",
  6780. "maximum_value": "100",
  6781. "default_value": 0,
  6782. "settable_per_mesh": false,
  6783. "settable_per_extruder": true,
  6784. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6785. "limit_to_extruder": "adhesion_extruder_nr",
  6786. "children":
  6787. {
  6788. "raft_base_fan_speed":
  6789. {
  6790. "label": "Raft Base Fan Speed",
  6791. "description": "The fan speed for the base raft layer.",
  6792. "unit": "%",
  6793. "type": "float",
  6794. "minimum_value": "0",
  6795. "maximum_value": "100",
  6796. "default_value": 0,
  6797. "value": "raft_fan_speed",
  6798. "enabled": "resolveOrValue('adhesion_type') == 'raft'",
  6799. "settable_per_mesh": false,
  6800. "settable_per_extruder": true,
  6801. "limit_to_extruder": "raft_base_extruder_nr"
  6802. },
  6803. "raft_interface_fan_speed":
  6804. {
  6805. "label": "Raft Middle Fan Speed",
  6806. "description": "The fan speed for the middle raft layer.",
  6807. "unit": "%",
  6808. "type": "float",
  6809. "minimum_value": "0",
  6810. "maximum_value": "100",
  6811. "default_value": 0,
  6812. "value": "raft_fan_speed",
  6813. "enabled": "resolveOrValue('adhesion_type') == 'raft' and raft_interface_layers > 0",
  6814. "settable_per_mesh": false,
  6815. "settable_per_extruder": true,
  6816. "limit_to_extruder": "raft_interface_extruder_nr"
  6817. },
  6818. "raft_surface_fan_speed":
  6819. {
  6820. "label": "Raft Top Fan Speed",
  6821. "description": "The fan speed for the top raft layers.",
  6822. "unit": "%",
  6823. "type": "float",
  6824. "minimum_value": "0",
  6825. "maximum_value": "100",
  6826. "default_value": 0,
  6827. "value": "raft_fan_speed",
  6828. "enabled": "resolveOrValue('adhesion_type') == 'raft' and raft_surface_layers > 0",
  6829. "settable_per_mesh": false,
  6830. "settable_per_extruder": true,
  6831. "limit_to_extruder": "raft_surface_extruder_nr"
  6832. }
  6833. }
  6834. }
  6835. }
  6836. },
  6837. "dual":
  6838. {
  6839. "label": "Dual Extrusion",
  6840. "type": "category",
  6841. "icon": "DualExtrusion",
  6842. "description": "Settings used for printing with multiple extruders.",
  6843. "children":
  6844. {
  6845. "prime_tower_enable":
  6846. {
  6847. "label": "Enable Prime Tower",
  6848. "description": "Print a tower next to the print which serves to prime the material after each nozzle switch.",
  6849. "type": "bool",
  6850. "enabled": "extruders_enabled_count > 1",
  6851. "default_value": false,
  6852. "resolve": "(extruders_enabled_count > 1) and any(extruderValues('prime_tower_enable'))",
  6853. "settable_per_mesh": false,
  6854. "settable_per_extruder": false
  6855. },
  6856. "prime_tower_mode":
  6857. {
  6858. "label": "Prime Tower Type",
  6859. "description": "<html>How to generate the prime tower:<ul><li><b>Normal:</b> create a bucket in which secondary materials are primed</li><li><b>Interleaved:</b> create a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other</li></ul></html>",
  6860. "type": "enum",
  6861. "resolve": "'interleaved' if all(mode == 'interleaved' for mode in extruderValues('prime_tower_mode')) else 'interleaved' if (all(material_type_var == extruderValues('material_type')[0] for material_type_var in extruderValues('material_type')) and all(material_brand_var == extruderValues('material_brand')[0] for material_brand_var in extruderValues('material_brand'))) else 'normal'",
  6862. "options":
  6863. {
  6864. "normal": "Normal",
  6865. "interleaved": "Interleaved"
  6866. },
  6867. "default_value": "normal",
  6868. "enabled": "prime_tower_enable",
  6869. "settable_per_mesh": false,
  6870. "settable_per_extruder": false
  6871. },
  6872. "prime_tower_size":
  6873. {
  6874. "label": "Prime Tower Size",
  6875. "description": "The width of the prime tower.",
  6876. "type": "float",
  6877. "unit": "mm",
  6878. "enabled": "prime_tower_enable",
  6879. "default_value": 20,
  6880. "resolve": "max(extruderValues('prime_tower_size'))",
  6881. "minimum_value": "0",
  6882. "maximum_value": "min(0.5 * machine_width, 0.5 * machine_depth)",
  6883. "minimum_value_warning": "max(extruderValues('prime_tower_line_width')) * 2",
  6884. "maximum_value_warning": "42",
  6885. "settable_per_mesh": false,
  6886. "settable_per_extruder": false
  6887. },
  6888. "prime_tower_min_volume":
  6889. {
  6890. "label": "Prime Tower Minimum Volume",
  6891. "description": "The minimum volume for each layer of the prime tower in order to purge enough material.",
  6892. "unit": "mm\u00b3",
  6893. "type": "float",
  6894. "default_value": 6,
  6895. "minimum_value": "0",
  6896. "maximum_value_warning": "(resolveOrValue('prime_tower_size') * 0.5) ** 2 * 3.14159 * resolveOrValue('layer_height') - sum(extruderValues('prime_tower_min_volume')) + prime_tower_min_volume",
  6897. "enabled": "prime_tower_enable",
  6898. "settable_per_mesh": false,
  6899. "settable_per_extruder": true
  6900. },
  6901. "prime_tower_max_bridging_distance":
  6902. {
  6903. "label": "Prime Tower Maximum Bridging Distance",
  6904. "description": "The maximum length of the branches which may be printed over the air.",
  6905. "unit": "mm",
  6906. "type": "float",
  6907. "default_value": 5,
  6908. "minimum_value": "line_width",
  6909. "maximum_value_warning": "10.0",
  6910. "enabled": "prime_tower_enable",
  6911. "settable_per_mesh": false,
  6912. "settable_per_extruder": true
  6913. },
  6914. "prime_tower_position_x":
  6915. {
  6916. "label": "Prime Tower X Position",
  6917. "description": "The x coordinate of the position of the prime tower.",
  6918. "type": "float",
  6919. "unit": "mm",
  6920. "enabled": "prime_tower_enable",
  6921. "default_value": 200,
  6922. "value": "((resolveOrValue('machine_width') / 2 + resolveOrValue('prime_tower_size') / 2) if resolveOrValue('machine_shape') == 'elliptic' else (resolveOrValue('machine_width') - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('machine_nozzle_offset_x')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_x'))), 1))) - (resolveOrValue('machine_width') / 2 if resolveOrValue('machine_center_is_zero') else 0)",
  6923. "maximum_value": "(machine_width / 2 if machine_center_is_zero else machine_width) - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0)",
  6924. "minimum_value": "resolveOrValue('prime_tower_size') + (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - (machine_width / 2 if machine_center_is_zero else 0)",
  6925. "settable_per_mesh": false,
  6926. "settable_per_extruder": false
  6927. },
  6928. "prime_tower_position_y":
  6929. {
  6930. "label": "Prime Tower Y Position",
  6931. "description": "The y coordinate of the position of the prime tower.",
  6932. "type": "float",
  6933. "unit": "mm",
  6934. "enabled": "prime_tower_enable",
  6935. "default_value": 200,
  6936. "value": "machine_depth - prime_tower_size - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('machine_nozzle_offset_y')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_y'))), 1) - (resolveOrValue('machine_depth') / 2 if resolveOrValue('machine_center_is_zero') else 0)",
  6937. "maximum_value": "(machine_depth / 2 - resolveOrValue('prime_tower_size') if machine_center_is_zero else machine_depth - resolveOrValue('prime_tower_size')) - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0)",
  6938. "minimum_value": "(machine_depth / -2 if machine_center_is_zero else 0) + (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0)",
  6939. "settable_per_mesh": false,
  6940. "settable_per_extruder": false
  6941. },
  6942. "prime_tower_wipe_enabled":
  6943. {
  6944. "label": "Wipe Inactive Nozzle on Prime Tower",
  6945. "description": "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower.",
  6946. "type": "bool",
  6947. "enabled": "prime_tower_enable",
  6948. "default_value": true,
  6949. "settable_per_mesh": false,
  6950. "settable_per_extruder": true
  6951. },
  6952. "prime_tower_brim_enable":
  6953. {
  6954. "value": "resolveOrValue('adhesion_type') in ['raft', 'brim']",
  6955. "label": "Prime Tower Base",
  6956. "description": "By enabling this setting, your prime-tower will get a brim, even if the model doesn't. If you want a sturdier base for a high tower, you can increase the base height.",
  6957. "type": "bool",
  6958. "enabled": "prime_tower_enable and resolveOrValue('adhesion_type') != 'raft'",
  6959. "default_value": false,
  6960. "settable_per_mesh": false,
  6961. "settable_per_extruder": false
  6962. },
  6963. "prime_tower_base_size":
  6964. {
  6965. "value": "resolveOrValue('raft_margin') if resolveOrValue('adhesion_type') == 'raft' else resolveOrValue('brim_width')",
  6966. "label": "Prime Tower Base Size",
  6967. "description": "The width of the prime tower brim/base. A larger base enhances adhesion to the build plate, but also reduces the effective print area.",
  6968. "type": "float",
  6969. "unit": "mm",
  6970. "enabled": "prime_tower_enable and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')",
  6971. "default_value": 1.2,
  6972. "minimum_value": "0",
  6973. "maximum_value": "min(0.5 * machine_width, 0.5 * machine_depth)",
  6974. "settable_per_mesh": false,
  6975. "settable_per_extruder": false
  6976. },
  6977. "prime_tower_base_height":
  6978. {
  6979. "value": "resolveOrValue('layer_height')",
  6980. "label": "Prime Tower Base Height",
  6981. "description": "The height of the prime tower base. Increasing this value will result in a more sturdy prime tower because the base will be wider. If this setting is too low, the prime tower will not have a sturdy base.",
  6982. "type": "float",
  6983. "unit": "mm",
  6984. "enabled": "prime_tower_enable and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')",
  6985. "default_value": 0,
  6986. "minimum_value": "0",
  6987. "maximum_value": "machine_height",
  6988. "settable_per_mesh": false,
  6989. "settable_per_extruder": false
  6990. },
  6991. "prime_tower_base_curve_magnitude":
  6992. {
  6993. "label": "Prime Tower Base Slope",
  6994. "description": "The magnitude factor used for the slope of the prime tower base. If you increase this value, the base will become slimmer. If you decrease it, the base will become thicker.",
  6995. "type": "float",
  6996. "enabled": "prime_tower_enable and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')",
  6997. "default_value": 4,
  6998. "minimum_value": "0",
  6999. "maximum_value": "10",
  7000. "settable_per_mesh": false,
  7001. "settable_per_extruder": false
  7002. },
  7003. "prime_tower_raft_base_line_spacing":
  7004. {
  7005. "label": "Prime Tower Raft Line Spacing",
  7006. "description": "The distance between the raft lines for the unique prime tower raft layer. Wide spacing makes for easy removal of the raft from the build plate.",
  7007. "unit": "mm",
  7008. "type": "float",
  7009. "default_value": 1.6,
  7010. "value": "raft_base_line_spacing",
  7011. "minimum_value": "0",
  7012. "minimum_value_warning": "raft_base_line_width",
  7013. "maximum_value_warning": "100",
  7014. "enabled": "prime_tower_enable and resolveOrValue('adhesion_type') == 'raft'",
  7015. "settable_per_mesh": false,
  7016. "settable_per_extruder": true,
  7017. "limit_to_extruder": "raft_base_extruder_nr"
  7018. },
  7019. "ooze_shield_enabled":
  7020. {
  7021. "label": "Enable Ooze Shield",
  7022. "description": "Enable exterior ooze shield. This will create a shell around the model which is likely to wipe a second nozzle if it's at the same height as the first nozzle.",
  7023. "type": "bool",
  7024. "resolve": "any(extruderValues('ooze_shield_enabled'))",
  7025. "enabled": "extruders_enabled_count > 1",
  7026. "default_value": false,
  7027. "settable_per_mesh": false,
  7028. "settable_per_extruder": false
  7029. },
  7030. "ooze_shield_angle":
  7031. {
  7032. "label": "Ooze Shield Angle",
  7033. "description": "The maximum angle a part in the ooze shield will have. With 0 degrees being vertical, and 90 degrees being horizontal. A smaller angle leads to less failed ooze shields, but more material.",
  7034. "type": "float",
  7035. "unit": "\u00b0",
  7036. "enabled": "resolveOrValue('ooze_shield_enabled')",
  7037. "default_value": 60,
  7038. "resolve": "min(extruderValues('ooze_shield_angle'))",
  7039. "minimum_value": "0",
  7040. "maximum_value": "90",
  7041. "settable_per_mesh": false,
  7042. "settable_per_extruder": false
  7043. },
  7044. "ooze_shield_dist":
  7045. {
  7046. "label": "Ooze Shield Distance",
  7047. "description": "Distance of the ooze shield from the print, in the X/Y directions.",
  7048. "type": "float",
  7049. "unit": "mm",
  7050. "enabled": "resolveOrValue('ooze_shield_enabled')",
  7051. "default_value": 2,
  7052. "resolve": "max(extruderValues('ooze_shield_dist'))",
  7053. "minimum_value": "0",
  7054. "maximum_value_warning": "20",
  7055. "settable_per_mesh": false,
  7056. "settable_per_extruder": false
  7057. },
  7058. "switch_extruder_retraction_amount":
  7059. {
  7060. "label": "Nozzle Switch Retraction Distance",
  7061. "description": "The amount of retraction when switching extruders. Set to 0 for no retraction at all. This should generally be the same as the length of the heat zone.",
  7062. "type": "float",
  7063. "unit": "mm",
  7064. "enabled": "retraction_enable and extruders_enabled_count > 1",
  7065. "default_value": 20,
  7066. "value": "machine_heat_zone_length",
  7067. "minimum_value_warning": "0",
  7068. "maximum_value_warning": "100",
  7069. "settable_per_mesh": false,
  7070. "settable_per_extruder": true
  7071. },
  7072. "switch_extruder_retraction_speeds":
  7073. {
  7074. "label": "Nozzle Switch Retraction Speed",
  7075. "description": "The speed at which the filament is retracted. A higher retraction speed works better, but a very high retraction speed can lead to filament grinding.",
  7076. "type": "float",
  7077. "unit": "mm/s",
  7078. "enabled": "retraction_enable and extruders_enabled_count > 1",
  7079. "default_value": 20,
  7080. "minimum_value": "0.1",
  7081. "minimum_value_warning": "1",
  7082. "maximum_value": "machine_max_feedrate_e if retraction_enable else float('inf')",
  7083. "maximum_value_warning": "70",
  7084. "settable_per_mesh": false,
  7085. "settable_per_extruder": true,
  7086. "children":
  7087. {
  7088. "switch_extruder_retraction_speed":
  7089. {
  7090. "label": "Nozzle Switch Retract Speed",
  7091. "description": "The speed at which the filament is retracted during a nozzle switch retract.",
  7092. "type": "float",
  7093. "unit": "mm/s",
  7094. "enabled": "retraction_enable and extruders_enabled_count > 1",
  7095. "default_value": 20,
  7096. "value": "switch_extruder_retraction_speeds",
  7097. "minimum_value": "0.1",
  7098. "minimum_value_warning": "1",
  7099. "maximum_value": "machine_max_feedrate_e if retraction_enable else float('inf')",
  7100. "maximum_value_warning": "70",
  7101. "settable_per_mesh": false,
  7102. "settable_per_extruder": true
  7103. },
  7104. "switch_extruder_prime_speed":
  7105. {
  7106. "label": "Nozzle Switch Prime Speed",
  7107. "description": "The speed at which the filament is pushed back after a nozzle switch retraction.",
  7108. "type": "float",
  7109. "unit": "mm/s",
  7110. "enabled": "retraction_enable and extruders_enabled_count > 1",
  7111. "default_value": 20,
  7112. "value": "switch_extruder_retraction_speeds",
  7113. "minimum_value": "0.1",
  7114. "minimum_value_warning": "1",
  7115. "maximum_value": "machine_max_feedrate_e if retraction_enable else float('inf')",
  7116. "maximum_value_warning": "70",
  7117. "settable_per_mesh": false,
  7118. "settable_per_extruder": true
  7119. }
  7120. }
  7121. },
  7122. "switch_extruder_extra_prime_amount":
  7123. {
  7124. "label": "Nozzle Switch Extra Prime Amount",
  7125. "description": "Extra material to prime after nozzle switching.",
  7126. "type": "float",
  7127. "unit": "mm\u00b3",
  7128. "default_value": 0,
  7129. "minimum_value_warning": "0",
  7130. "maximum_value_warning": "100",
  7131. "enabled": "retraction_enable and extruders_enabled_count > 1",
  7132. "settable_per_mesh": false,
  7133. "settable_per_extruder": true
  7134. }
  7135. }
  7136. },
  7137. "meshfix":
  7138. {
  7139. "label": "Mesh Fixes",
  7140. "type": "category",
  7141. "icon": "Bandage",
  7142. "description": "Make the meshes more suited for 3D printing.",
  7143. "children":
  7144. {
  7145. "meshfix_union_all":
  7146. {
  7147. "label": "Union Overlapping Volumes",
  7148. "description": "Ignore the internal geometry arising from overlapping volumes within a mesh and print the volumes as one. This may cause unintended internal cavities to disappear.",
  7149. "type": "bool",
  7150. "default_value": true,
  7151. "value": "magic_mesh_surface_mode != 'surface'",
  7152. "settable_per_mesh": true
  7153. },
  7154. "meshfix_union_all_remove_holes":
  7155. {
  7156. "label": "Remove All Holes",
  7157. "description": "Remove the holes in each layer and keep only the outside shape. This will ignore any invisible internal geometry. However, it also ignores layer holes which can be viewed from above or below.",
  7158. "type": "bool",
  7159. "default_value": false,
  7160. "value": "magic_spiralize",
  7161. "settable_per_mesh": true
  7162. },
  7163. "meshfix_extensive_stitching":
  7164. {
  7165. "label": "Extensive Stitching",
  7166. "description": "Extensive stitching tries to stitch up open holes in the mesh by closing the hole with touching polygons. This option can introduce a lot of processing time.",
  7167. "type": "bool",
  7168. "default_value": false,
  7169. "settable_per_mesh": true
  7170. },
  7171. "meshfix_keep_open_polygons":
  7172. {
  7173. "label": "Keep Disconnected Faces",
  7174. "description": "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper g-code.",
  7175. "type": "bool",
  7176. "default_value": false,
  7177. "settable_per_mesh": true
  7178. },
  7179. "multiple_mesh_overlap":
  7180. {
  7181. "label": "Merged Meshes Overlap",
  7182. "description": "Make meshes which are touching each other overlap a bit. This makes them bond together better.",
  7183. "type": "float",
  7184. "unit": "mm",
  7185. "default_value": 0.15,
  7186. "minimum_value": "0",
  7187. "maximum_value_warning": "1.0",
  7188. "limit_to_extruder": "wall_0_extruder_nr",
  7189. "settable_per_mesh": true
  7190. },
  7191. "carve_multiple_volumes":
  7192. {
  7193. "label": "Remove Mesh Intersection",
  7194. "description": "Remove areas where multiple meshes are overlapping with each other. This may be used if merged dual material objects overlap with each other.",
  7195. "type": "bool",
  7196. "default_value": true,
  7197. "value": "extruders_enabled_count > 1",
  7198. "enabled": "all(p != 'surface' for p in extruderValues('magic_mesh_surface_mode'))",
  7199. "settable_per_mesh": false,
  7200. "settable_per_extruder": false,
  7201. "settable_per_meshgroup": true
  7202. },
  7203. "alternate_carve_order":
  7204. {
  7205. "label": "Alternate Mesh Removal",
  7206. "description": "Switch to which mesh intersecting volumes will belong with every layer, so that the overlapping meshes become interwoven. Turning this setting off will cause one of the meshes to obtain all of the volume in the overlap, while it is removed from the other meshes.",
  7207. "type": "bool",
  7208. "default_value": true,
  7209. "enabled": "carve_multiple_volumes and all(p != 'surface' for p in extruderValues('magic_mesh_surface_mode'))",
  7210. "settable_per_mesh": false,
  7211. "settable_per_extruder": false,
  7212. "settable_per_meshgroup": true
  7213. },
  7214. "remove_empty_first_layers":
  7215. {
  7216. "label": "Remove Empty First Layers",
  7217. "description": "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle.",
  7218. "type": "bool",
  7219. "default_value": true,
  7220. "enabled": "not (support_enable or support_meshes_present)",
  7221. "settable_per_mesh": false,
  7222. "settable_per_extruder": false
  7223. },
  7224. "meshfix_maximum_resolution":
  7225. {
  7226. "label": "Maximum Resolution",
  7227. "description": "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway.",
  7228. "type": "float",
  7229. "unit": "mm",
  7230. "default_value": 0.5,
  7231. "minimum_value": "0.001",
  7232. "minimum_value_warning": "0.01",
  7233. "maximum_value_warning": "3",
  7234. "settable_per_mesh": true
  7235. },
  7236. "meshfix_maximum_travel_resolution":
  7237. {
  7238. "label": "Maximum Travel Resolution",
  7239. "description": "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate.",
  7240. "type": "float",
  7241. "unit": "mm",
  7242. "default_value": 1.0,
  7243. "value": "min(meshfix_maximum_resolution * speed_travel / speed_print, 2 * line_width)",
  7244. "minimum_value": "0.001",
  7245. "minimum_value_warning": "0.05",
  7246. "maximum_value_warning": "10",
  7247. "settable_per_mesh": false,
  7248. "settable_per_extruder": true
  7249. },
  7250. "meshfix_maximum_deviation":
  7251. {
  7252. "label": "Maximum Deviation",
  7253. "description": "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true.",
  7254. "type": "float",
  7255. "unit": "mm",
  7256. "default_value": 0.025,
  7257. "minimum_value": "0.001",
  7258. "minimum_value_warning": "0.01",
  7259. "maximum_value_warning": "0.3",
  7260. "settable_per_mesh": true
  7261. },
  7262. "meshfix_maximum_extrusion_area_deviation":
  7263. {
  7264. "label": "Maximum Extrusion Area Deviation",
  7265. "description": "The maximum extrusion area deviation allowed when removing intermediate points from a straight line. An intermediate point may serve as width-changing point in a long straight line. Therefore, if it is removed, it will cause the line to have a uniform width and, as a result, lose (or gain) a bit of extrusion area. If you increase this you may notice slight under- (or over-) extrusion in between straight parallel walls, as more intermediate width-changing points will be allowed to be removed. Your print will be less accurate, but the g-code will be smaller.",
  7266. "type": "float",
  7267. "unit": "\u03bcm\u00b2",
  7268. "default_value": 50000,
  7269. "minimum_value": "0",
  7270. "minimum_value_warning": "500",
  7271. "maximum_value_warning": "100000",
  7272. "settable_per_mesh": true
  7273. },
  7274. "meshfix_fluid_motion_enabled":
  7275. {
  7276. "label": "Enable Fluid Motion",
  7277. "description": "When enabled tool paths are corrected for printers with smooth motion planners. Small movements that deviate from the general tool path direction are smoothed to improve fluid motions.",
  7278. "type": "bool",
  7279. "default_value": true
  7280. },
  7281. "meshfix_fluid_motion_shift_distance":
  7282. {
  7283. "label": "Fluid Motion Shift Distance",
  7284. "description": "Distance points are shifted to smooth the path",
  7285. "enabled": "meshfix_fluid_motion_enabled",
  7286. "type": "float",
  7287. "unit": "mm",
  7288. "default_value": 0.1,
  7289. "minimum_value": "0.01",
  7290. "maximum_value": "1"
  7291. },
  7292. "meshfix_fluid_motion_small_distance":
  7293. {
  7294. "label": "Fluid Motion Small Distance",
  7295. "description": "Distance points are shifted to smooth the path",
  7296. "enabled": "meshfix_fluid_motion_enabled",
  7297. "unit": "mm",
  7298. "type": "float",
  7299. "default_value": 0.01,
  7300. "minimum_value": "0.01",
  7301. "maximum_value": "0.1"
  7302. },
  7303. "meshfix_fluid_motion_angle":
  7304. {
  7305. "label": "Fluid Motion Angle",
  7306. "description": "If a toolpath-segment deviates more than this angle from the general motion it is smoothed.",
  7307. "enabled": "meshfix_fluid_motion_enabled",
  7308. "type": "float",
  7309. "unit": "\u00b0",
  7310. "default_value": 15,
  7311. "maximum_value": "90",
  7312. "minimum_value": "0",
  7313. "minimum_value_warning": "1",
  7314. "maximum_value_warning": "35"
  7315. }
  7316. }
  7317. },
  7318. "blackmagic":
  7319. {
  7320. "label": "Special Modes",
  7321. "type": "category",
  7322. "icon": "BlackMagic",
  7323. "description": "Non-traditional ways to print your models.",
  7324. "children":
  7325. {
  7326. "print_sequence":
  7327. {
  7328. "label": "Print Sequence",
  7329. "description": "Whether to print all models one layer at a time or to wait for one model to finish, before moving on to the next. One at a time mode is possible if a) only one extruder is enabled and b) all models are separated in such a way that the whole print head can move in between and all models are lower than the distance between the nozzle and the X/Y axes.",
  7330. "type": "enum",
  7331. "options":
  7332. {
  7333. "all_at_once": "All at Once",
  7334. "one_at_a_time": "One at a Time"
  7335. },
  7336. "default_value": "all_at_once",
  7337. "enabled": "extruders_enabled_count == 1",
  7338. "settable_per_mesh": false,
  7339. "settable_per_extruder": false,
  7340. "settable_per_meshgroup": false
  7341. },
  7342. "user_defined_print_order_enabled":
  7343. {
  7344. "label": "Set Print Sequence Manually",
  7345. "description": "Allows you to order the object list to manually set the print sequence. First object from the list will be printed first.",
  7346. "type": "bool",
  7347. "default_value": false,
  7348. "settable_per_mesh": false,
  7349. "settable_per_extruder": false,
  7350. "enabled": "print_sequence == 'one_at_a_time'"
  7351. },
  7352. "infill_mesh":
  7353. {
  7354. "label": "Infill Mesh",
  7355. "description": "Use this mesh to modify the infill of other meshes with which it overlaps. Replaces infill regions of other meshes with regions for this mesh. It's suggested to only print one Wall and no Top/Bottom Skin for this mesh.",
  7356. "type": "bool",
  7357. "default_value": false,
  7358. "settable_per_mesh": true,
  7359. "settable_per_extruder": false,
  7360. "settable_per_meshgroup": false,
  7361. "settable_globally": false
  7362. },
  7363. "infill_mesh_order":
  7364. {
  7365. "label": "Mesh Processing Rank",
  7366. "description": "Determines the priority of this mesh when considering multiple overlapping infill meshes. Areas where multiple infill meshes overlap will take on the settings of the mesh with the highest rank. An infill mesh with a higher rank will modify the infill of infill meshes with lower rank and normal meshes.",
  7367. "default_value": 0,
  7368. "value": "1 if infill_mesh else 0",
  7369. "minimum_value_warning": "1",
  7370. "maximum_value_warning": "50",
  7371. "type": "int",
  7372. "settable_per_mesh": true,
  7373. "settable_per_extruder": false,
  7374. "settable_per_meshgroup": false,
  7375. "settable_globally": false
  7376. },
  7377. "cutting_mesh":
  7378. {
  7379. "label": "Cutting Mesh",
  7380. "description": "Limit the volume of this mesh to within other meshes. You can use this to make certain areas of one mesh print with different settings and with a whole different extruder.",
  7381. "type": "bool",
  7382. "default_value": false,
  7383. "settable_per_mesh": true,
  7384. "settable_per_extruder": false,
  7385. "settable_per_meshgroup": false,
  7386. "settable_globally": false
  7387. },
  7388. "mold_enabled":
  7389. {
  7390. "label": "Mold",
  7391. "description": "Print models as a mold, which can be cast in order to get a model which resembles the models on the build plate.",
  7392. "type": "bool",
  7393. "default_value": false,
  7394. "settable_per_mesh": true
  7395. },
  7396. "mold_width":
  7397. {
  7398. "label": "Minimal Mold Width",
  7399. "description": "The minimal distance between the outside of the mold and the outside of the model.",
  7400. "unit": "mm",
  7401. "type": "float",
  7402. "minimum_value_warning": "wall_line_width_0 * 2",
  7403. "maximum_value_warning": "100",
  7404. "default_value": 5,
  7405. "settable_per_mesh": true,
  7406. "enabled": "mold_enabled"
  7407. },
  7408. "mold_roof_height":
  7409. {
  7410. "label": "Mold Roof Height",
  7411. "description": "The height above horizontal parts in your model which to print mold.",
  7412. "unit": "mm",
  7413. "type": "float",
  7414. "minimum_value": "0",
  7415. "maximum_value_warning": "5",
  7416. "default_value": 0.5,
  7417. "settable_per_mesh": true,
  7418. "enabled": "mold_enabled"
  7419. },
  7420. "mold_angle":
  7421. {
  7422. "label": "Mold Angle",
  7423. "description": "The angle of overhang of the outer walls created for the mold. 0\u00b0 will make the outer shell of the mold vertical, while 90\u00b0 will make the outside of the model follow the contour of the model.",
  7424. "unit": "\u00b0",
  7425. "type": "float",
  7426. "minimum_value": "-89",
  7427. "minimum_value_warning": "0",
  7428. "maximum_value_warning": "support_angle",
  7429. "maximum_value": "90",
  7430. "default_value": 40,
  7431. "settable_per_mesh": true,
  7432. "enabled": "mold_enabled"
  7433. },
  7434. "support_mesh":
  7435. {
  7436. "label": "Support Mesh",
  7437. "description": "Use this mesh to specify support areas. This can be used to generate support structure.",
  7438. "type": "bool",
  7439. "default_value": false,
  7440. "settable_per_mesh": true,
  7441. "settable_per_extruder": false,
  7442. "settable_per_meshgroup": false,
  7443. "settable_globally": false
  7444. },
  7445. "anti_overhang_mesh":
  7446. {
  7447. "label": "Anti Overhang Mesh",
  7448. "description": "Use this mesh to specify where no part of the model should be detected as overhang. This can be used to remove unwanted support structure.",
  7449. "type": "bool",
  7450. "default_value": false,
  7451. "settable_per_mesh": true,
  7452. "settable_per_extruder": false,
  7453. "settable_per_meshgroup": false,
  7454. "settable_globally": false
  7455. },
  7456. "magic_mesh_surface_mode":
  7457. {
  7458. "label": "Surface Mode",
  7459. "description": "Treat the model as a surface only, a volume, or volumes with loose surfaces. The normal print mode only prints enclosed volumes. \"Surface\" prints a single wall tracing the mesh surface with no infill and no top/bottom skin. \"Both\" prints enclosed volumes like normal and any remaining polygons as surfaces.",
  7460. "type": "enum",
  7461. "options":
  7462. {
  7463. "normal": "Normal",
  7464. "surface": "Surface",
  7465. "both": "Both"
  7466. },
  7467. "default_value": "normal",
  7468. "settable_per_mesh": true
  7469. },
  7470. "magic_spiralize":
  7471. {
  7472. "label": "Spiralize Outer Contour",
  7473. "description": "Spiralize smooths out the Z move of the outer edge. This will create a steady Z increase over the whole print. This feature turns a solid model into a single walled print with a solid bottom. This feature should only be enabled when each layer only contains a single part.",
  7474. "type": "bool",
  7475. "default_value": false,
  7476. "settable_per_mesh": false,
  7477. "settable_per_extruder": false
  7478. },
  7479. "smooth_spiralized_contours":
  7480. {
  7481. "label": "Smooth Spiralized Contours",
  7482. "description": "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details.",
  7483. "type": "bool",
  7484. "default_value": true,
  7485. "enabled": "magic_spiralize",
  7486. "settable_per_mesh": false,
  7487. "settable_per_extruder": false
  7488. },
  7489. "relative_extrusion":
  7490. {
  7491. "label": "Relative Extrusion",
  7492. "description": "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the g-code. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any g-code script is output.",
  7493. "type": "bool",
  7494. "default_value": false,
  7495. "value": "machine_gcode_flavor==\"RepRap (RepRap)\"",
  7496. "settable_per_mesh": false,
  7497. "settable_per_extruder": false
  7498. }
  7499. }
  7500. },
  7501. "experimental":
  7502. {
  7503. "label": "Experimental",
  7504. "type": "category",
  7505. "icon": "Experiment",
  7506. "description": "Features that haven't completely been fleshed out yet.",
  7507. "children":
  7508. {
  7509. "slicing_tolerance":
  7510. {
  7511. "label": "Slicing Tolerance",
  7512. "description": "Vertical tolerance in the sliced layers. The contours of a layer are normally generated by taking cross sections through the middle of each layer's thickness (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the entire thickness of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Inclusive retains the most details, Exclusive makes for the best fit and Middle stays closest to the original surface.",
  7513. "type": "enum",
  7514. "options":
  7515. {
  7516. "middle": "Middle",
  7517. "exclusive": "Exclusive",
  7518. "inclusive": "Inclusive"
  7519. },
  7520. "default_value": "middle",
  7521. "settable_per_mesh": true
  7522. },
  7523. "infill_enable_travel_optimization":
  7524. {
  7525. "label": "Infill Travel Optimization",
  7526. "description": "When enabled, the order in which the infill lines are printed is optimized to reduce the distance travelled. The reduction in travel time achieved very much depends on the model being sliced, infill pattern, density, etc. Note that, for some models that have many small areas of infill, the time to slice the model may be greatly increased.",
  7527. "type": "bool",
  7528. "enabled": "resolveOrValue('retraction_combing') != 'off'",
  7529. "default_value": false,
  7530. "settable_per_mesh": true
  7531. },
  7532. "material_flow_temp_graph":
  7533. {
  7534. "label": "Flow Temperature Graph",
  7535. "description": "Data linking material flow (in mm3 per second) to temperature (degrees Celsius).",
  7536. "unit": "[[mm\u00b3,\u00b0C]]",
  7537. "type": "str",
  7538. "default_value": "[[3.5, 200],[7.0, 240]]",
  7539. "enabled": "False and machine_nozzle_temp_enabled",
  7540. "settable_per_mesh": false,
  7541. "settable_per_extruder": true
  7542. },
  7543. "minimum_polygon_circumference":
  7544. {
  7545. "label": "Minimum Polygon Circumference",
  7546. "description": "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details.",
  7547. "unit": "mm",
  7548. "type": "float",
  7549. "default_value": 1.0,
  7550. "minimum_value": "0",
  7551. "minimum_value_warning": "0.05",
  7552. "maximum_value_warning": "1.0",
  7553. "settable_per_mesh": true,
  7554. "settable_per_extruder": false
  7555. },
  7556. "interlocking_enable":
  7557. {
  7558. "label": "Generate Interlocking Structure",
  7559. "description": "At the locations where models touch, generate an interlocking beam structure. This improves the adhesion between models, especially models printed in different materials.",
  7560. "type": "bool",
  7561. "enabled": "extruders_enabled_count > 1",
  7562. "default_value": false,
  7563. "resolve": "(extruders_enabled_count > 1) and any(extruderValues('interlocking_enable'))",
  7564. "settable_per_mesh": false,
  7565. "settable_per_extruder": false
  7566. },
  7567. "interlocking_beam_width":
  7568. {
  7569. "label": "Interlocking Beam Width",
  7570. "description": "The width of the interlocking structure beams.",
  7571. "type": "float",
  7572. "unit": "mm",
  7573. "enabled": "extruders_enabled_count > 1 and resolveOrValue('interlocking_enable')",
  7574. "default_value": 0.8,
  7575. "value": "2 * wall_line_width_0",
  7576. "minimum_value": "min_odd_wall_line_width",
  7577. "maximum_value": "min(0.5 * machine_width, 0.5 * machine_depth)",
  7578. "maximum_value_warning": "max(extruderValues('wall_line_width_0')) * 6",
  7579. "settable_per_mesh": true,
  7580. "settable_per_extruder": true
  7581. },
  7582. "interlocking_orientation":
  7583. {
  7584. "label": "Interlocking Structure Orientation",
  7585. "description": "The height of the beams of the interlocking structure, measured in number of layers. Less layers is stronger, but more prone to defects.",
  7586. "unit": "\u00b0",
  7587. "type": "float",
  7588. "enabled": "extruders_enabled_count > 1 and resolveOrValue('interlocking_enable')",
  7589. "default_value": 22.5,
  7590. "minimum_value": "0",
  7591. "maximum_value": "360",
  7592. "resolve": "min(extruderValues('interlocking_orientation'))",
  7593. "settable_per_mesh": false,
  7594. "settable_per_extruder": false
  7595. },
  7596. "interlocking_beam_layer_count":
  7597. {
  7598. "label": "Interlocking Beam Layer Count",
  7599. "description": "The height of the beams of the interlocking structure, measured in number of layers. Less layers is stronger, but more prone to defects.",
  7600. "type": "int",
  7601. "enabled": "extruders_enabled_count > 1 and resolveOrValue('interlocking_enable')",
  7602. "default_value": 2,
  7603. "minimum_value": "1",
  7604. "maximum_value_warning": "50",
  7605. "resolve": "max(extruderValues('interlocking_beam_layer_count'))",
  7606. "settable_per_mesh": false,
  7607. "settable_per_extruder": false
  7608. },
  7609. "interlocking_depth":
  7610. {
  7611. "label": "Interlocking Depth",
  7612. "description": "The distance from the boundary between models to generate interlocking structure, measured in cells. Too few cells will result in poor adhesion.",
  7613. "type": "int",
  7614. "enabled": "extruders_enabled_count > 1 and resolveOrValue('interlocking_enable')",
  7615. "default_value": 2,
  7616. "minimum_value": "1",
  7617. "maximum_value": "10",
  7618. "maximum_value_warning": "5",
  7619. "resolve": "max(extruderValues('interlocking_depth'))",
  7620. "settable_per_mesh": false,
  7621. "settable_per_extruder": false
  7622. },
  7623. "interlocking_boundary_avoidance":
  7624. {
  7625. "label": "Interlocking Boundary Avoidance",
  7626. "description": "The distance from the outside of a model where interlocking structures will not be generated, measured in cells.",
  7627. "type": "int",
  7628. "enabled": "extruders_enabled_count > 1 and resolveOrValue('interlocking_enable')",
  7629. "default_value": 2,
  7630. "minimum_value": "0",
  7631. "minimum_value_warning": "resolveOrValue('interlocking_depth')",
  7632. "maximum_value": "10",
  7633. "maximum_value_warning": "5",
  7634. "resolve": "max(extruderValues('interlocking_boundary_avoidance'))",
  7635. "settable_per_mesh": false,
  7636. "settable_per_extruder": false
  7637. },
  7638. "support_skip_some_zags":
  7639. {
  7640. "label": "Break Up Support In Chunks",
  7641. "description": "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern.",
  7642. "type": "bool",
  7643. "default_value": false,
  7644. "enabled": "(support_enable or support_meshes_present) and support_pattern == 'zigzag'",
  7645. "limit_to_extruder": "support_infill_extruder_nr",
  7646. "settable_per_mesh": false,
  7647. "settable_per_extruder": true
  7648. },
  7649. "support_skip_zag_per_mm":
  7650. {
  7651. "label": "Support Chunk Size",
  7652. "description": "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away.",
  7653. "type": "float",
  7654. "unit": "mm",
  7655. "default_value": 20,
  7656. "minimum_value": "0",
  7657. "minimum_value_warning": "support_line_distance",
  7658. "enabled": "(support_enable or support_meshes_present) and support_pattern == 'zigzag' and support_skip_some_zags",
  7659. "limit_to_extruder": "support_infill_extruder_nr",
  7660. "settable_per_mesh": false,
  7661. "settable_per_extruder": true,
  7662. "children":
  7663. {
  7664. "support_zag_skip_count":
  7665. {
  7666. "label": "Support Chunk Line Count",
  7667. "description": "Skip one in every N connection lines to make the support structure easier to break away.",
  7668. "type": "int",
  7669. "default_value": 5,
  7670. "value": "0 if support_line_distance == 0 else round(support_skip_zag_per_mm / support_line_distance)",
  7671. "minimum_value": "1",
  7672. "minimum_value_warning": "3",
  7673. "enabled": "(support_enable or support_meshes_present) and support_pattern == 'zigzag' and support_skip_some_zags",
  7674. "limit_to_extruder": "support_infill_extruder_nr",
  7675. "settable_per_mesh": false,
  7676. "settable_per_extruder": true
  7677. }
  7678. }
  7679. },
  7680. "draft_shield_enabled":
  7681. {
  7682. "label": "Enable Draft Shield",
  7683. "description": "This will create a wall around the model, which traps (hot) air and shields against exterior airflow. Especially useful for materials which warp easily.",
  7684. "type": "bool",
  7685. "default_value": false,
  7686. "settable_per_mesh": false,
  7687. "settable_per_extruder": false
  7688. },
  7689. "draft_shield_dist":
  7690. {
  7691. "label": "Draft Shield X/Y Distance",
  7692. "description": "Distance of the draft shield from the print, in the X/Y directions.",
  7693. "unit": "mm",
  7694. "type": "float",
  7695. "minimum_value": "0",
  7696. "maximum_value_warning": "10",
  7697. "default_value": 10,
  7698. "resolve": "max(extruderValues('draft_shield_dist'))",
  7699. "enabled": "draft_shield_enabled",
  7700. "settable_per_mesh": false,
  7701. "settable_per_extruder": false
  7702. },
  7703. "draft_shield_height_limitation":
  7704. {
  7705. "label": "Draft Shield Limitation",
  7706. "description": "Set the height of the draft shield. Choose to print the draft shield at the full height of the model or at a limited height.",
  7707. "type": "enum",
  7708. "options":
  7709. {
  7710. "full": "Full",
  7711. "limited": "Limited"
  7712. },
  7713. "default_value": "full",
  7714. "resolve": "'full' if 'full' in extruderValues('draft_shield_height_limitation') else 'limited'",
  7715. "enabled": "draft_shield_enabled",
  7716. "settable_per_mesh": false,
  7717. "settable_per_extruder": false
  7718. },
  7719. "draft_shield_height":
  7720. {
  7721. "label": "Draft Shield Height",
  7722. "description": "Height limitation of the draft shield. Above this height no draft shield will be printed.",
  7723. "unit": "mm",
  7724. "type": "float",
  7725. "minimum_value": "0",
  7726. "maximum_value_warning": "9999",
  7727. "default_value": 10,
  7728. "value": "10",
  7729. "enabled": "draft_shield_enabled and draft_shield_height_limitation == 'limited'",
  7730. "settable_per_mesh": false,
  7731. "settable_per_extruder": false
  7732. },
  7733. "conical_overhang_enabled":
  7734. {
  7735. "label": "Make Overhang Printable",
  7736. "description": "Change the geometry of the printed model such that minimal support is required. Steep overhangs will become shallow overhangs. Overhanging areas will drop down to become more vertical.",
  7737. "type": "bool",
  7738. "default_value": false
  7739. },
  7740. "conical_overhang_angle":
  7741. {
  7742. "label": "Maximum Model Angle",
  7743. "description": "The maximum angle of overhangs after the they have been made printable. At a value of 0\u00b0 all overhangs are replaced by a piece of model connected to the build plate, 90\u00b0 will not change the model in any way.",
  7744. "unit": "\u00b0",
  7745. "type": "float",
  7746. "minimum_value": "-89",
  7747. "minimum_value_warning": "0",
  7748. "maximum_value": "89",
  7749. "default_value": 50,
  7750. "enabled": "conical_overhang_enabled"
  7751. },
  7752. "conical_overhang_hole_size":
  7753. {
  7754. "label": "Maximum Overhang Hole Area",
  7755. "description": "The maximum area of a hole in the base of the model before it's removed by Make Overhang Printable. Holes smaller than this will be retained. A value of 0 mm\u00b2 will fill all holes in the models base.",
  7756. "unit": "mm\u00b2",
  7757. "type": "float",
  7758. "minimum_value": "0",
  7759. "minimum_value_warning": "0",
  7760. "default_value": 0,
  7761. "enabled": "conical_overhang_enabled"
  7762. },
  7763. "coasting_enable":
  7764. {
  7765. "label": "Enable Coasting",
  7766. "description": "Coasting replaces the last part of an extrusion path with a travel path. The oozed material is used to print the last piece of the extrusion path in order to reduce stringing.",
  7767. "type": "bool",
  7768. "default_value": false,
  7769. "settable_per_mesh": false,
  7770. "settable_per_extruder": true
  7771. },
  7772. "coasting_volume":
  7773. {
  7774. "label": "Coasting Volume",
  7775. "description": "The volume otherwise oozed. This value should generally be close to the nozzle diameter cubed.",
  7776. "unit": "mm\u00b3",
  7777. "type": "float",
  7778. "default_value": 0.064,
  7779. "minimum_value": "0",
  7780. "maximum_value_warning": "machine_nozzle_size * 5",
  7781. "enabled": "coasting_enable",
  7782. "settable_per_mesh": false,
  7783. "settable_per_extruder": true
  7784. },
  7785. "coasting_min_volume":
  7786. {
  7787. "label": "Minimum Volume Before Coasting",
  7788. "description": "The smallest volume an extrusion path should have before allowing coasting. For smaller extrusion paths, less pressure has been built up in the bowden tube and so the coasted volume is scaled linearly. This value should always be larger than the Coasting Volume.",
  7789. "unit": "mm\u00b3",
  7790. "type": "float",
  7791. "default_value": 0.8,
  7792. "minimum_value": "0",
  7793. "maximum_value_warning": "10.0",
  7794. "enabled": "coasting_enable",
  7795. "settable_per_mesh": false,
  7796. "settable_per_extruder": true
  7797. },
  7798. "coasting_speed":
  7799. {
  7800. "label": "Coasting Speed",
  7801. "description": "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops.",
  7802. "unit": "%",
  7803. "type": "float",
  7804. "default_value": 90,
  7805. "minimum_value": "0.0001",
  7806. "maximum_value_warning": "100",
  7807. "enabled": "coasting_enable",
  7808. "settable_per_mesh": false,
  7809. "settable_per_extruder": true
  7810. },
  7811. "cross_infill_pocket_size":
  7812. {
  7813. "label": "Cross 3D Pocket Size",
  7814. "description": "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself.",
  7815. "unit": "mm",
  7816. "type": "float",
  7817. "default_value": 2.0,
  7818. "value": "infill_line_distance",
  7819. "minimum_value": "0",
  7820. "maximum_value_warning": "infill_line_distance * math.sqrt(2)",
  7821. "enabled": "infill_pattern == 'cross_3d'",
  7822. "limit_to_extruder": "infill_extruder_nr",
  7823. "settable_per_mesh": true
  7824. },
  7825. "cross_infill_density_image":
  7826. {
  7827. "label": "Cross Infill Density Image",
  7828. "description": "The file location of an image of which the brightness values determine the minimal density at the corresponding location in the infill of the print.",
  7829. "type": "str",
  7830. "default_value": "",
  7831. "enabled": "infill_pattern == 'cross' or infill_pattern == 'cross_3d'",
  7832. "limit_to_extruder": "infill_extruder_nr",
  7833. "settable_per_mesh": true
  7834. },
  7835. "cross_support_density_image":
  7836. {
  7837. "label": "Cross Fill Density Image for Support",
  7838. "description": "The file location of an image of which the brightness values determine the minimal density at the corresponding location in the support.",
  7839. "type": "str",
  7840. "default_value": "",
  7841. "enabled": "support_pattern == 'cross' or support_pattern == 'cross_3d'",
  7842. "limit_to_extruder": "support_infill_extruder_nr",
  7843. "settable_per_mesh": false,
  7844. "settable_per_extruder": true
  7845. },
  7846. "support_conical_enabled":
  7847. {
  7848. "label": "Enable Conical Support",
  7849. "description": "Make support areas smaller at the bottom than at the overhang.",
  7850. "type": "bool",
  7851. "default_value": false,
  7852. "enabled": "support_enable and support_structure != 'tree'",
  7853. "limit_to_extruder": "support_infill_extruder_nr",
  7854. "settable_per_mesh": true
  7855. },
  7856. "support_conical_angle":
  7857. {
  7858. "label": "Conical Support Angle",
  7859. "description": "The angle of the tilt of conical support. With 0 degrees being vertical, and 90 degrees being horizontal. Smaller angles cause the support to be more sturdy, but consist of more material. Negative angles cause the base of the support to be wider than the top.",
  7860. "unit": "\u00b0",
  7861. "type": "float",
  7862. "minimum_value": "-90",
  7863. "minimum_value_warning": "-45",
  7864. "maximum_value_warning": "45",
  7865. "maximum_value": "90",
  7866. "default_value": 30,
  7867. "enabled": "support_conical_enabled and support_enable and support_structure != 'tree'",
  7868. "limit_to_extruder": "support_infill_extruder_nr",
  7869. "settable_per_mesh": true
  7870. },
  7871. "support_conical_min_width":
  7872. {
  7873. "label": "Conical Support Minimum Width",
  7874. "description": "Minimum width to which the base of the conical support area is reduced. Small widths can lead to unstable support structures.",
  7875. "unit": "mm",
  7876. "default_value": 5.0,
  7877. "minimum_value": "0",
  7878. "minimum_value_warning": "machine_nozzle_size * 3",
  7879. "maximum_value_warning": "100.0",
  7880. "type": "float",
  7881. "enabled": "support_conical_enabled and support_enable and support_structure != 'tree' and support_conical_angle > 0",
  7882. "limit_to_extruder": "support_infill_extruder_nr",
  7883. "settable_per_mesh": true
  7884. },
  7885. "magic_fuzzy_skin_enabled":
  7886. {
  7887. "label": "Fuzzy Skin",
  7888. "description": "Randomly jitter while printing the outer wall, so that the surface has a rough and fuzzy look.",
  7889. "type": "bool",
  7890. "default_value": false,
  7891. "enabled": "not interlocking_enable",
  7892. "limit_to_extruder": "wall_0_extruder_nr",
  7893. "settable_per_mesh": true
  7894. },
  7895. "magic_fuzzy_skin_outside_only":
  7896. {
  7897. "label": "Fuzzy Skin Outside Only",
  7898. "description": "Jitter only the parts' outlines and not the parts' holes.",
  7899. "type": "bool",
  7900. "default_value": false,
  7901. "enabled": "magic_fuzzy_skin_enabled and not interlocking_enable",
  7902. "limit_to_extruder": "wall_0_extruder_nr",
  7903. "settable_per_mesh": true
  7904. },
  7905. "magic_fuzzy_skin_thickness":
  7906. {
  7907. "label": "Fuzzy Skin Thickness",
  7908. "description": "The width within which to jitter. It's advised to keep this below the outer wall width, since the inner walls are unaltered.",
  7909. "type": "float",
  7910. "unit": "mm",
  7911. "default_value": 0.3,
  7912. "minimum_value": "0.001",
  7913. "maximum_value_warning": "wall_line_width_0",
  7914. "enabled": "magic_fuzzy_skin_enabled and not interlocking_enable",
  7915. "limit_to_extruder": "wall_0_extruder_nr",
  7916. "settable_per_mesh": true
  7917. },
  7918. "magic_fuzzy_skin_point_density":
  7919. {
  7920. "label": "Fuzzy Skin Density",
  7921. "description": "The average density of points introduced on each polygon in a layer. Note that the original points of the polygon are discarded, so a low density results in a reduction of the resolution.",
  7922. "type": "float",
  7923. "unit": "1/mm",
  7924. "default_value": 1.25,
  7925. "minimum_value": "0.008",
  7926. "minimum_value_warning": "0.1",
  7927. "maximum_value_warning": "10",
  7928. "maximum_value": "2 / magic_fuzzy_skin_thickness",
  7929. "enabled": "magic_fuzzy_skin_enabled and not interlocking_enable",
  7930. "limit_to_extruder": "wall_0_extruder_nr",
  7931. "settable_per_mesh": true,
  7932. "children":
  7933. {
  7934. "magic_fuzzy_skin_point_dist":
  7935. {
  7936. "label": "Fuzzy Skin Point Distance",
  7937. "description": "The average distance between the random points introduced on each line segment. Note that the original points of the polygon are discarded, so a high smoothness results in a reduction of the resolution. This value must be higher than half the Fuzzy Skin Thickness.",
  7938. "type": "float",
  7939. "unit": "mm",
  7940. "default_value": 0.8,
  7941. "minimum_value": "magic_fuzzy_skin_thickness / 2",
  7942. "minimum_value_warning": "0.1",
  7943. "maximum_value_warning": "10",
  7944. "value": "10000 if magic_fuzzy_skin_point_density == 0 else 1 / magic_fuzzy_skin_point_density",
  7945. "enabled": "magic_fuzzy_skin_enabled and not interlocking_enable",
  7946. "limit_to_extruder": "wall_0_extruder_nr",
  7947. "settable_per_mesh": true
  7948. }
  7949. }
  7950. },
  7951. "flow_rate_max_extrusion_offset":
  7952. {
  7953. "label": "Flow Rate Compensation Max Extrusion Offset",
  7954. "description": "The maximum distance in mm to move the filament to compensate for changes in flow rate.",
  7955. "unit": "mm",
  7956. "type": "float",
  7957. "minimum_value": "0",
  7958. "maximum_value_warning": "10",
  7959. "default_value": 0,
  7960. "settable_per_mesh": false,
  7961. "settable_per_extruder": false,
  7962. "settable_per_meshgroup": false
  7963. },
  7964. "flow_rate_extrusion_offset_factor":
  7965. {
  7966. "label": "Flow Rate Compensation Factor",
  7967. "description": "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion.",
  7968. "unit": "%",
  7969. "type": "float",
  7970. "minimum_value": "0",
  7971. "maximum_value_warning": "100",
  7972. "default_value": 100,
  7973. "settable_per_mesh": false,
  7974. "settable_per_extruder": false,
  7975. "settable_per_meshgroup": false
  7976. },
  7977. "adaptive_layer_height_enabled":
  7978. {
  7979. "label": "Use Adaptive Layers",
  7980. "description": "Adaptive layers computes the layer heights depending on the shape of the model.",
  7981. "type": "bool",
  7982. "default_value": false,
  7983. "settable_per_mesh": false,
  7984. "settable_per_extruder": false,
  7985. "settable_per_meshgroup": false
  7986. },
  7987. "adaptive_layer_height_variation":
  7988. {
  7989. "label": "Adaptive Layers Maximum Variation",
  7990. "description": "The maximum allowed height different from the base layer height.",
  7991. "type": "float",
  7992. "enabled": "adaptive_layer_height_enabled",
  7993. "unit": "mm",
  7994. "default_value": 0.1,
  7995. "minimum_value": "0.0",
  7996. "settable_per_mesh": false,
  7997. "settable_per_extruder": false,
  7998. "settable_per_meshgroup": false
  7999. },
  8000. "adaptive_layer_height_variation_step":
  8001. {
  8002. "label": "Adaptive Layers Variation Step Size",
  8003. "description": "The difference in height of the next layer height compared to the previous one.",
  8004. "type": "float",
  8005. "enabled": "adaptive_layer_height_enabled",
  8006. "default_value": 0.01,
  8007. "unit": "mm",
  8008. "settable_per_mesh": false,
  8009. "minimum_value": "0.001",
  8010. "settable_per_extruder": false,
  8011. "settable_per_meshgroup": false
  8012. },
  8013. "adaptive_layer_height_threshold":
  8014. {
  8015. "label": "Adaptive Layers Topography Size",
  8016. "description": "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together.",
  8017. "type": "float",
  8018. "enabled": "adaptive_layer_height_enabled",
  8019. "default_value": 0.2,
  8020. "unit": "mm",
  8021. "settable_per_mesh": false,
  8022. "settable_per_extruder": false,
  8023. "settable_per_meshgroup": false
  8024. },
  8025. "wall_overhang_angle":
  8026. {
  8027. "label": "Overhanging Wall Angle",
  8028. "description": "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either.",
  8029. "unit": "\u00b0",
  8030. "type": "float",
  8031. "minimum_value": "0",
  8032. "minimum_value_warning": "2",
  8033. "maximum_value": "90",
  8034. "default_value": 90,
  8035. "settable_per_mesh": true
  8036. },
  8037. "seam_overhang_angle":
  8038. {
  8039. "label": "Seam Overhanging Wall Angle",
  8040. "description": "Try to prevent seams on walls that overhang more than this angle. When the value is 90, no walls will be treated as overhanging.",
  8041. "unit": "\u00b0",
  8042. "type": "float",
  8043. "minimum_value": "0",
  8044. "minimum_value_warning": "2",
  8045. "maximum_value": "90",
  8046. "default_value": 90,
  8047. "value": "wall_overhang_angle",
  8048. "settable_per_mesh": true
  8049. },
  8050. "wall_overhang_speed_factor":
  8051. {
  8052. "label": "Overhanging Wall Speed",
  8053. "description": "Overhanging walls will be printed at this percentage of their normal print speed.",
  8054. "unit": "%",
  8055. "type": "float",
  8056. "default_value": 100,
  8057. "minimum_value": "0.001",
  8058. "minimum_value_warning": "25",
  8059. "settable_per_mesh": true
  8060. },
  8061. "bridge_settings_enabled":
  8062. {
  8063. "label": "Enable Bridge Settings",
  8064. "description": "Detect bridges and modify print speed, flow and fan settings while bridges are printed.",
  8065. "type": "bool",
  8066. "default_value": false,
  8067. "resolve": "any(extruderValues('bridge_settings_enabled'))",
  8068. "settable_per_mesh": true,
  8069. "settable_per_extruder": false,
  8070. "settable_per_meshgroup": false
  8071. },
  8072. "bridge_wall_min_length":
  8073. {
  8074. "label": "Minimum Bridge Wall Length",
  8075. "description": "Unsupported walls shorter than this will be printed using the normal wall settings. Longer unsupported walls will be printed using the bridge wall settings.",
  8076. "unit": "mm",
  8077. "type": "float",
  8078. "minimum_value": "0",
  8079. "default_value": 5,
  8080. "value": "line_width + support_xy_distance + 1.0",
  8081. "enabled": "bridge_settings_enabled",
  8082. "settable_per_mesh": true,
  8083. "settable_per_extruder": false
  8084. },
  8085. "bridge_skin_support_threshold":
  8086. {
  8087. "label": "Bridge Skin Support Threshold",
  8088. "description": "If a skin region is supported for less than this percentage of its area, print it using the bridge settings. Otherwise it is printed using the normal skin settings.",
  8089. "unit": "%",
  8090. "default_value": 50,
  8091. "type": "float",
  8092. "minimum_value": "0",
  8093. "maximum_value": "100",
  8094. "enabled": "bridge_settings_enabled",
  8095. "settable_per_mesh": true
  8096. },
  8097. "bridge_sparse_infill_max_density":
  8098. {
  8099. "label": "Bridge Sparse Infill Max Density",
  8100. "description": "Maximum density of infill considered to be sparse. Skin over sparse infill is considered to be unsupported and so may be treated as a bridge skin.",
  8101. "unit": "%",
  8102. "type": "float",
  8103. "default_value": 0,
  8104. "minimum_value": "0",
  8105. "enabled": "bridge_settings_enabled",
  8106. "settable_per_mesh": true
  8107. },
  8108. "bridge_wall_coast":
  8109. {
  8110. "label": "Bridge Wall Coasting",
  8111. "description": "This controls the distance the extruder should coast immediately before a bridge wall begins. Coasting before the bridge starts can reduce the pressure in the nozzle and may produce a flatter bridge.",
  8112. "unit": "%",
  8113. "default_value": 100,
  8114. "type": "float",
  8115. "minimum_value": "0",
  8116. "maximum_value": "500",
  8117. "enabled": "bridge_settings_enabled",
  8118. "settable_per_mesh": true
  8119. },
  8120. "bridge_wall_speed":
  8121. {
  8122. "label": "Bridge Wall Speed",
  8123. "description": "The speed at which the bridge walls are printed.",
  8124. "unit": "mm/s",
  8125. "type": "float",
  8126. "minimum_value": "0",
  8127. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  8128. "maximum_value_warning": "300",
  8129. "default_value": 15,
  8130. "value": "max(cool_min_speed, speed_wall_0 / 2)",
  8131. "enabled": "bridge_settings_enabled",
  8132. "settable_per_mesh": true
  8133. },
  8134. "bridge_wall_material_flow":
  8135. {
  8136. "label": "Bridge Wall Flow",
  8137. "description": "When printing bridge walls, the amount of material extruded is multiplied by this value.",
  8138. "unit": "%",
  8139. "default_value": 50,
  8140. "type": "float",
  8141. "minimum_value": "5",
  8142. "minimum_value_warning": "50",
  8143. "maximum_value_warning": "250",
  8144. "enabled": "bridge_settings_enabled",
  8145. "settable_per_mesh": true
  8146. },
  8147. "bridge_skin_speed":
  8148. {
  8149. "label": "Bridge Skin Speed",
  8150. "description": "The speed at which bridge skin regions are printed.",
  8151. "unit": "mm/s",
  8152. "type": "float",
  8153. "minimum_value": "0",
  8154. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  8155. "maximum_value_warning": "300",
  8156. "default_value": 15,
  8157. "value": "max(cool_min_speed, speed_topbottom / 2)",
  8158. "enabled": "bridge_settings_enabled",
  8159. "settable_per_mesh": true
  8160. },
  8161. "bridge_skin_material_flow":
  8162. {
  8163. "label": "Bridge Skin Flow",
  8164. "description": "When printing bridge skin regions, the amount of material extruded is multiplied by this value.",
  8165. "unit": "%",
  8166. "default_value": 60,
  8167. "type": "float",
  8168. "minimum_value": "5",
  8169. "minimum_value_warning": "50",
  8170. "maximum_value_warning": "250",
  8171. "enabled": "bridge_settings_enabled",
  8172. "settable_per_mesh": true
  8173. },
  8174. "bridge_skin_density":
  8175. {
  8176. "label": "Bridge Skin Density",
  8177. "description": "The density of the bridge skin layer. Values less than 100 will increase the gaps between the skin lines.",
  8178. "unit": "%",
  8179. "default_value": 100,
  8180. "type": "float",
  8181. "minimum_value": "5",
  8182. "minimum_value_warning": "20",
  8183. "maximum_value_warning": "100",
  8184. "enabled": "bridge_settings_enabled",
  8185. "settable_per_mesh": true
  8186. },
  8187. "bridge_fan_speed":
  8188. {
  8189. "label": "Bridge Fan Speed",
  8190. "description": "Percentage fan speed to use when printing bridge walls and skin.",
  8191. "unit": "%",
  8192. "minimum_value": "0",
  8193. "maximum_value": "100",
  8194. "default_value": 100,
  8195. "type": "float",
  8196. "enabled": "bridge_settings_enabled",
  8197. "settable_per_mesh": true
  8198. },
  8199. "bridge_enable_more_layers":
  8200. {
  8201. "label": "Bridge Has Multiple Layers",
  8202. "description": "If enabled, the second and third layers above the air are printed using the following settings. Otherwise, those layers are printed using the normal settings.",
  8203. "type": "bool",
  8204. "default_value": true,
  8205. "enabled": "bridge_settings_enabled",
  8206. "settable_per_mesh": true
  8207. },
  8208. "bridge_skin_speed_2":
  8209. {
  8210. "label": "Bridge Second Skin Speed",
  8211. "description": "Print speed to use when printing the second bridge skin layer.",
  8212. "unit": "mm/s",
  8213. "type": "float",
  8214. "minimum_value": "0",
  8215. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  8216. "maximum_value_warning": "300",
  8217. "default_value": 25,
  8218. "value": "bridge_skin_speed",
  8219. "enabled": "bridge_settings_enabled and bridge_enable_more_layers",
  8220. "settable_per_mesh": true
  8221. },
  8222. "bridge_skin_material_flow_2":
  8223. {
  8224. "label": "Bridge Second Skin Flow",
  8225. "description": "When printing the second bridge skin layer, the amount of material extruded is multiplied by this value.",
  8226. "unit": "%",
  8227. "default_value": 100,
  8228. "type": "float",
  8229. "minimum_value": "0.0001",
  8230. "minimum_value_warning": "50",
  8231. "maximum_value_warning": "150",
  8232. "enabled": "bridge_settings_enabled and bridge_enable_more_layers",
  8233. "settable_per_mesh": true
  8234. },
  8235. "bridge_skin_density_2":
  8236. {
  8237. "label": "Bridge Second Skin Density",
  8238. "description": "The density of the second bridge skin layer. Values less than 100 will increase the gaps between the skin lines.",
  8239. "unit": "%",
  8240. "default_value": 75,
  8241. "type": "float",
  8242. "minimum_value": "0",
  8243. "minimum_value_warning": "20",
  8244. "maximum_value_warning": "100",
  8245. "enabled": "bridge_settings_enabled and bridge_enable_more_layers",
  8246. "settable_per_mesh": true
  8247. },
  8248. "bridge_fan_speed_2":
  8249. {
  8250. "label": "Bridge Second Skin Fan Speed",
  8251. "description": "Percentage fan speed to use when printing the second bridge skin layer.",
  8252. "unit": "%",
  8253. "minimum_value": "0",
  8254. "maximum_value": "100",
  8255. "default_value": 0,
  8256. "type": "float",
  8257. "enabled": "bridge_settings_enabled and bridge_enable_more_layers",
  8258. "settable_per_mesh": true
  8259. },
  8260. "bridge_skin_speed_3":
  8261. {
  8262. "label": "Bridge Third Skin Speed",
  8263. "description": "Print speed to use when printing the third bridge skin layer.",
  8264. "unit": "mm/s",
  8265. "type": "float",
  8266. "minimum_value": "0",
  8267. "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
  8268. "maximum_value_warning": "300",
  8269. "default_value": 15,
  8270. "value": "bridge_skin_speed",
  8271. "enabled": "bridge_settings_enabled and bridge_enable_more_layers",
  8272. "settable_per_mesh": true
  8273. },
  8274. "bridge_skin_material_flow_3":
  8275. {
  8276. "label": "Bridge Third Skin Flow",
  8277. "description": "When printing the third bridge skin layer, the amount of material extruded is multiplied by this value.",
  8278. "unit": "%",
  8279. "default_value": 110,
  8280. "type": "float",
  8281. "minimum_value": "0.001",
  8282. "minimum_value_warning": "50",
  8283. "maximum_value_warning": "150",
  8284. "enabled": "bridge_settings_enabled and bridge_enable_more_layers",
  8285. "settable_per_mesh": true
  8286. },
  8287. "bridge_skin_density_3":
  8288. {
  8289. "label": "Bridge Third Skin Density",
  8290. "description": "The density of the third bridge skin layer. Values less than 100 will increase the gaps between the skin lines.",
  8291. "unit": "%",
  8292. "default_value": 80,
  8293. "type": "float",
  8294. "minimum_value": "0",
  8295. "minimum_value_warning": "20",
  8296. "maximum_value_warning": "100",
  8297. "enabled": "bridge_settings_enabled and bridge_enable_more_layers",
  8298. "settable_per_mesh": true
  8299. },
  8300. "bridge_fan_speed_3":
  8301. {
  8302. "label": "Bridge Third Skin Fan Speed",
  8303. "description": "Percentage fan speed to use when printing the third bridge skin layer.",
  8304. "unit": "%",
  8305. "minimum_value": "0",
  8306. "maximum_value": "100",
  8307. "default_value": 0,
  8308. "type": "float",
  8309. "enabled": "bridge_settings_enabled and bridge_enable_more_layers",
  8310. "settable_per_mesh": true
  8311. },
  8312. "clean_between_layers":
  8313. {
  8314. "label": "Wipe Nozzle Between Layers",
  8315. "description": "Whether to include nozzle wipe G-Code between layers (maximum 1 per layer). Enabling this setting could influence behavior of retract at layer change. Please use Wipe Retraction settings to control retraction at layers where the wipe script will be working.",
  8316. "default_value": false,
  8317. "type": "bool",
  8318. "settable_per_mesh": false,
  8319. "settable_per_extruder": true,
  8320. "settable_per_meshgroup": false
  8321. },
  8322. "max_extrusion_before_wipe":
  8323. {
  8324. "label": "Material Volume Between Wipes",
  8325. "description": "Maximum material that can be extruded before another nozzle wipe is initiated. If this value is less than the volume of material required in a layer, the setting has no effect in this layer, i.e. it is limited to one wipe per layer.",
  8326. "default_value": 10,
  8327. "type": "float",
  8328. "unit": "mm\u00b3",
  8329. "enabled": "clean_between_layers",
  8330. "settable_per_mesh": false,
  8331. "settable_per_extruder": true,
  8332. "settable_per_meshgroup": false
  8333. },
  8334. "wipe_retraction_enable":
  8335. {
  8336. "label": "Wipe Retraction Enable",
  8337. "description": "Retract the filament when the nozzle is moving over a non-printed area.",
  8338. "type": "bool",
  8339. "default_value": true,
  8340. "value": "retraction_enable",
  8341. "enabled": "clean_between_layers",
  8342. "settable_per_mesh": false,
  8343. "settable_per_extruder": true,
  8344. "settable_per_meshgroup": false
  8345. },
  8346. "wipe_retraction_amount":
  8347. {
  8348. "label": "Wipe Retraction Distance",
  8349. "description": "Amount to retract the filament so it does not ooze during the wipe sequence.",
  8350. "unit": "mm",
  8351. "type": "float",
  8352. "default_value": 1,
  8353. "value": "retraction_amount",
  8354. "minimum_value_warning": "-0.0001",
  8355. "maximum_value_warning": "10.0",
  8356. "enabled": "wipe_retraction_enable and clean_between_layers",
  8357. "settable_per_mesh": true,
  8358. "settable_per_extruder": true,
  8359. "settable_per_meshgroup": false
  8360. },
  8361. "wipe_retraction_extra_prime_amount":
  8362. {
  8363. "label": "Wipe Retraction Extra Prime Amount",
  8364. "description": "Some material can ooze away during a wipe travel moves, which can be compensated for here.",
  8365. "unit": "mm\u00b3",
  8366. "type": "float",
  8367. "default_value": 0,
  8368. "value": "retraction_extra_prime_amount",
  8369. "minimum_value_warning": "-0.0001",
  8370. "maximum_value_warning": "10.0",
  8371. "enabled": "wipe_retraction_enable and clean_between_layers",
  8372. "settable_per_mesh": true,
  8373. "settable_per_extruder": true
  8374. },
  8375. "wipe_retraction_speed":
  8376. {
  8377. "label": "Wipe Retraction Speed",
  8378. "description": "The speed at which the filament is retracted and primed during a wipe retraction move.",
  8379. "unit": "mm/s",
  8380. "type": "float",
  8381. "default_value": 5,
  8382. "value": "retraction_speed",
  8383. "minimum_value": "0",
  8384. "minimum_value_warning": "1",
  8385. "maximum_value": "machine_max_feedrate_e",
  8386. "maximum_value_warning": "70",
  8387. "enabled": "wipe_retraction_enable and clean_between_layers",
  8388. "settable_per_mesh": false,
  8389. "settable_per_extruder": true,
  8390. "children":
  8391. {
  8392. "wipe_retraction_retract_speed":
  8393. {
  8394. "label": "Wipe Retraction Retract Speed",
  8395. "description": "The speed at which the filament is retracted during a wipe retraction move.",
  8396. "unit": "mm/s",
  8397. "type": "float",
  8398. "default_value": 3,
  8399. "minimum_value": "0",
  8400. "maximum_value": "machine_max_feedrate_e",
  8401. "minimum_value_warning": "1",
  8402. "maximum_value_warning": "70",
  8403. "enabled": "wipe_retraction_enable and clean_between_layers",
  8404. "value": "wipe_retraction_speed",
  8405. "settable_per_mesh": true,
  8406. "settable_per_extruder": true
  8407. },
  8408. "wipe_retraction_prime_speed":
  8409. {
  8410. "label": "Wipe Retraction Prime Speed",
  8411. "description": "The speed at which the filament is primed during a wipe retraction move.",
  8412. "unit": "mm/s",
  8413. "type": "float",
  8414. "default_value": 2,
  8415. "minimum_value": "0",
  8416. "maximum_value": "machine_max_feedrate_e",
  8417. "minimum_value_warning": "1",
  8418. "maximum_value_warning": "70",
  8419. "enabled": "wipe_retraction_enable and clean_between_layers",
  8420. "value": "wipe_retraction_speed",
  8421. "settable_per_mesh": true,
  8422. "settable_per_extruder": true
  8423. }
  8424. }
  8425. },
  8426. "wipe_pause":
  8427. {
  8428. "label": "Wipe Pause",
  8429. "description": "Pause after the unretract.",
  8430. "unit": "s",
  8431. "type": "float",
  8432. "default_value": 0,
  8433. "minimum_value": "0",
  8434. "enabled": "clean_between_layers",
  8435. "settable_per_mesh": true,
  8436. "settable_per_extruder": true,
  8437. "settable_per_meshgroup": false
  8438. },
  8439. "wipe_hop_enable":
  8440. {
  8441. "label": "Wipe Z Hop",
  8442. "description": "When wiping, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate.",
  8443. "type": "bool",
  8444. "default_value": true,
  8445. "value": "retraction_hop_enabled",
  8446. "enabled": "clean_between_layers",
  8447. "settable_per_mesh": false,
  8448. "settable_per_extruder": true,
  8449. "settable_per_meshgroup": false
  8450. },
  8451. "wipe_hop_amount":
  8452. {
  8453. "label": "Wipe Z Hop Height",
  8454. "description": "The height difference when performing a Z Hop.",
  8455. "unit": "mm",
  8456. "type": "float",
  8457. "default_value": 1,
  8458. "value": "retraction_hop",
  8459. "enabled": "wipe_hop_enable and clean_between_layers",
  8460. "settable_per_mesh": true,
  8461. "settable_per_extruder": true,
  8462. "settable_per_meshgroup": false
  8463. },
  8464. "wipe_hop_speed":
  8465. {
  8466. "label": "Wipe Hop Speed",
  8467. "description": "Speed to move the z-axis during the hop.",
  8468. "unit": "mm/s",
  8469. "type": "float",
  8470. "default_value": 10,
  8471. "value": "speed_z_hop",
  8472. "minimum_value": "0",
  8473. "minimum_value_warning": "1",
  8474. "enabled": "wipe_hop_enable and clean_between_layers",
  8475. "settable_per_mesh": true,
  8476. "settable_per_extruder": true,
  8477. "settable_per_meshgroup": false
  8478. },
  8479. "wipe_brush_pos_x":
  8480. {
  8481. "label": "Wipe Brush X Position",
  8482. "description": "X location where wipe script will start.",
  8483. "type": "float",
  8484. "unit": "mm",
  8485. "default_value": 100,
  8486. "minimum_value_warning": "0",
  8487. "enabled": "clean_between_layers",
  8488. "settable_per_mesh": false,
  8489. "settable_per_extruder": true,
  8490. "settable_per_meshgroup": false
  8491. },
  8492. "wipe_repeat_count":
  8493. {
  8494. "label": "Wipe Repeat Count",
  8495. "description": "Number of times to move the nozzle across the brush.",
  8496. "type": "int",
  8497. "minimum_value": "0",
  8498. "default_value": 5,
  8499. "enabled": "clean_between_layers",
  8500. "settable_per_mesh": true,
  8501. "settable_per_extruder": true,
  8502. "settable_per_meshgroup": false
  8503. },
  8504. "wipe_move_distance":
  8505. {
  8506. "label": "Wipe Move Distance",
  8507. "description": "The distance to move the head back and forth across the brush.",
  8508. "unit": "mm",
  8509. "type": "float",
  8510. "default_value": 20,
  8511. "enabled": "clean_between_layers",
  8512. "settable_per_mesh": true,
  8513. "settable_per_extruder": true,
  8514. "settable_per_meshgroup": false
  8515. },
  8516. "small_hole_max_size":
  8517. {
  8518. "label": "Small Hole Max Size",
  8519. "description": "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed.",
  8520. "unit": "mm",
  8521. "type": "float",
  8522. "minimum_value": "0",
  8523. "default_value": 0,
  8524. "settable_per_mesh": true,
  8525. "children":
  8526. {
  8527. "small_feature_max_length":
  8528. {
  8529. "label": "Small Feature Max Length",
  8530. "enabled": "small_hole_max_size > 0",
  8531. "description": "Feature outlines that are shorter than this length will be printed using Small Feature Speed.",
  8532. "unit": "mm",
  8533. "type": "float",
  8534. "minimum_value": "0",
  8535. "default_value": 0,
  8536. "value": "small_hole_max_size * math.pi",
  8537. "settable_per_mesh": true
  8538. }
  8539. }
  8540. },
  8541. "small_feature_speed_factor":
  8542. {
  8543. "label": "Small Feature Speed",
  8544. "enabled": "small_hole_max_size > 0",
  8545. "description": "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy.",
  8546. "unit": "%",
  8547. "type": "float",
  8548. "default_value": 50,
  8549. "minimum_value": "1",
  8550. "minimum_value_warning": "25",
  8551. "maximum_value_warning": "100",
  8552. "settable_per_mesh": true
  8553. },
  8554. "small_feature_speed_factor_0":
  8555. {
  8556. "label": "Small Feature Initial Layer Speed",
  8557. "enabled": "small_hole_max_size > 0",
  8558. "description": "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy.",
  8559. "unit": "%",
  8560. "type": "float",
  8561. "default_value": 50,
  8562. "value": "small_feature_speed_factor",
  8563. "minimum_value": "1",
  8564. "minimum_value_warning": "25",
  8565. "maximum_value_warning": "100",
  8566. "settable_per_mesh": true
  8567. },
  8568. "material_alternate_walls":
  8569. {
  8570. "label": "Alternate Wall Directions",
  8571. "description": "Alternate wall directions every other layer and inset. Useful for materials that can build up stress, like for metal printing.",
  8572. "type": "bool",
  8573. "default_value": false,
  8574. "enabled": true,
  8575. "settable_per_mesh": true,
  8576. "settable_per_extruder": true
  8577. },
  8578. "group_outer_walls":
  8579. {
  8580. "label": "Group Outer Walls",
  8581. "description": "Outer walls of different islands in the same layer are printed in sequence. When enabled the amount of flow changes is limited because walls are printed one type at a time, when disabled the number of travels between islands is reduced because walls in the same islands are grouped.",
  8582. "type": "bool",
  8583. "default_value": true,
  8584. "settable_per_mesh": true
  8585. }
  8586. }
  8587. },
  8588. "ppr":
  8589. {
  8590. "label": "Print Process Reporting",
  8591. "type": "category",
  8592. "icon": "DocumentFilled",
  8593. "description": "Reporting events that go out of set thresholds",
  8594. "enabled": false,
  8595. "children":
  8596. {
  8597. "ppr_enable":
  8598. {
  8599. "label": "Enable Print Process Reporting",
  8600. "description": "Enable print process reporting for setting threshold values for possible fault detection.",
  8601. "type": "bool",
  8602. "enabled": false,
  8603. "default_value": false,
  8604. "value": false,
  8605. "settable_per_mesh": false,
  8606. "settable_per_extruder": false
  8607. },
  8608. "flow_warn_limit":
  8609. {
  8610. "label": "Flow Warning",
  8611. "description": "Limit on the flow warning for detection.",
  8612. "default_value": 15.0,
  8613. "enabled": "ppr_enable",
  8614. "unit": "%",
  8615. "type": "float",
  8616. "settable_per_extruder": true,
  8617. "settable_per_mesh": false,
  8618. "settable_per_meshgroup": false
  8619. },
  8620. "flow_anomaly_limit":
  8621. {
  8622. "label": "Flow Limit",
  8623. "description": "Limit on flow anomaly for detection.",
  8624. "default_value": 25.0,
  8625. "enabled": "ppr_enable",
  8626. "unit": "%",
  8627. "type": "float",
  8628. "settable_per_extruder": true,
  8629. "settable_per_mesh": false,
  8630. "settable_per_meshgroup": false
  8631. },
  8632. "print_temp_warn_limit":
  8633. {
  8634. "label": "Print temperature Warning",
  8635. "description": "Limit on Print temperature warning for detection.",
  8636. "unit": "\u00b0C",
  8637. "type": "float",
  8638. "default_value": 3.0,
  8639. "enabled": "ppr_enable",
  8640. "settable_per_extruder": true,
  8641. "settable_per_mesh": false,
  8642. "settable_per_meshgroup": false
  8643. },
  8644. "print_temp_anomaly_limit":
  8645. {
  8646. "label": "Print temperature Limit",
  8647. "description": "Limit on Print Temperature anomaly for detection.",
  8648. "unit": "\u00b0C",
  8649. "type": "float",
  8650. "default_value": 7.0,
  8651. "enabled": "ppr_enable",
  8652. "settable_per_extruder": true,
  8653. "settable_per_mesh": false,
  8654. "settable_per_meshgroup": false
  8655. },
  8656. "bv_temp_warn_limit":
  8657. {
  8658. "label": "Build Volume temperature Warning",
  8659. "description": "Limit on Build Volume Temperature warning for detection.",
  8660. "unit": "\u00b0C",
  8661. "type": "float",
  8662. "default_value": 7.5,
  8663. "enabled": "ppr_enable",
  8664. "settable_per_extruder": false,
  8665. "settable_per_mesh": false,
  8666. "settable_per_meshgroup": false
  8667. },
  8668. "bv_temp_anomaly_limit":
  8669. {
  8670. "label": "Build Volume temperature Limit",
  8671. "description": "Limit on Build Volume temperature Anomaly for detection.",
  8672. "unit": "\u00b0C",
  8673. "type": "float",
  8674. "default_value": 10.0,
  8675. "enabled": "ppr_enable",
  8676. "settable_per_extruder": false,
  8677. "settable_per_mesh": false,
  8678. "settable_per_meshgroup": false
  8679. }
  8680. }
  8681. },
  8682. "command_line_settings":
  8683. {
  8684. "label": "Command Line Settings",
  8685. "description": "Settings which are only used if CuraEngine isn't called from the Cura frontend.",
  8686. "type": "category",
  8687. "enabled": false,
  8688. "children":
  8689. {
  8690. "center_object":
  8691. {
  8692. "description": "Whether to center the object on the middle of the build platform (0,0), instead of using the coordinate system in which the object was saved.",
  8693. "type": "bool",
  8694. "label": "Center Object",
  8695. "default_value": false,
  8696. "enabled": false
  8697. },
  8698. "mesh_position_x":
  8699. {
  8700. "description": "Offset applied to the object in the x direction.",
  8701. "type": "float",
  8702. "label": "Mesh Position X",
  8703. "default_value": 0,
  8704. "enabled": false
  8705. },
  8706. "mesh_position_y":
  8707. {
  8708. "description": "Offset applied to the object in the y direction.",
  8709. "type": "float",
  8710. "label": "Mesh Position Y",
  8711. "default_value": 0,
  8712. "enabled": false
  8713. },
  8714. "mesh_position_z":
  8715. {
  8716. "description": "Offset applied to the object in the z direction. With this you can perform what was used to be called 'Object Sink'.",
  8717. "type": "float",
  8718. "label": "Mesh Position Z",
  8719. "default_value": 0,
  8720. "enabled": false
  8721. },
  8722. "mesh_rotation_matrix":
  8723. {
  8724. "label": "Mesh Rotation Matrix",
  8725. "description": "Transformation matrix to be applied to the model when loading it from file.",
  8726. "type": "str",
  8727. "default_value": "[[1,0,0], [0,1,0], [0,0,1]]",
  8728. "enabled": false
  8729. }
  8730. }
  8731. }
  8732. }
  8733. }