Make constants.EPS modifiable
import { constants } from "@jscad/modeling/src/maths"; constants.EPS
Different projects have different precision requirements, it would be better if it could be modified.
@FishOrBear Long time no see!
I definitely agree with you. If you think that a configurable EPS is a good solution then a quick fix can be made.
However, most users just expect things to work. The EPS is super important inside the boolean tree calculations, and there’s a fix coming to calculate the EPS of shapes, and use that when performing the CSG operations. EPS is just a factor of boundaries to precision, and not costly.
Also, if you have a nice example of a failing design then please attach. It would really help.
It should also be worth considering to have the fixed EPS, but introduce notion of unit on the document level, so then export can be made in expected unit....
Definitely some different use-cases for different EPS should be made to be able to better consider the topic.
@FishOrBear feel free to join the discord channel https://discord.gg/AaqGskur93 there is a jscad channel on CadHub discord
@z3dev could you please change discord link to this one, I am not sure where it is set. Elmer server is too big and it has gotten complicated for new users, CadHub is a bit more code-cad specific, so less noise from other channels.
The intersection of these two is a very thin slice, usually I don't need this, I will judge its volume inside the program and filter it out.

{"polygons":[{"vertices":[[271,13,0],[280,13,4.996600151062012],[280,13,0]]},{"vertices":[[271,13,0],[271,13,4.996600151062012],[280,13,4.996600151062012]]},{"vertices":[[280,13,0],[280,172,4.996600151062012],[280,172,0]]},{"vertices":[[280,13,0],[280,13,4.996600151062012],[280,172,4.996600151062012]]},{"vertices":[[271,172,0],[271,13,4.996600151062012],[271,13,0]]},{"vertices":[[271,172,0],[271,172,4.996600151062012],[271,13,4.996600151062012]]},{"vertices":[[280,172,4.996600151062012],[271,13,4.996600151062012],[271,172,4.996600151062012]]},{"vertices":[[271,13,4.996600151062012],[280,172,4.996600151062012],[280,13,4.996600151062012]]},{"vertices":[[0,0,0],[300,0,0],[300,0,18]]},{"vertices":[[0,0,0],[300,0,18],[0,0,18]]},{"vertices":[[300,0,0],[300,172,0],[300,172,18]]},{"vertices":[[300,0,0],[300,172,18],[300,0,18]]},{"vertices":[[300,172,0],[280,172,0],[280,172,18]]},{"vertices":[[300,172,0],[280,172,18],[300,172,18]]},{"vertices":[[280,172,4.996600151062012],[271,172,4.996600151062012],[271,172,18]]},{"vertices":[[280,172,4.996600151062012],[271,172,18],[280,172,18]]},{"vertices":[[271,172,0],[0,172,0],[0,172,18]]},{"vertices":[[271,172,0],[0,172,18],[271,172,18]]},{"vertices":[[0,172,0],[0,0,0],[0,0,18]]},{"vertices":[[0,172,0],[0,0,18],[0,172,18]]},{"vertices":[[300,0,0],[280,172,0],[300,172,0]]},{"vertices":[[271,13,0],[0,172,0],[271,172,0]]},{"vertices":[[300,0,0],[280,13,0],[280,172,0]]},{"vertices":[[271,13,0],[0,0,0],[0,172,0]]},{"vertices":[[0,0,0],[280,13,0],[300,0,0]]},{"vertices":[[280,13,0],[0,0,0],[271,13,0]]},{"vertices":[[0,172,18],[0,0,18],[300,0,18]]},{"vertices":[[300,0,18],[300,172,18],[0,172,18]]}],"transforms":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}
{"polygons":[{"vertices":[[544.3300170898438,0,0],[0,0,0],[0,164,0]]},{"vertices":[[0,164,0],[544.3300170898438,164,0],[544.3300170898438,0,0]]},{"vertices":[[0,164,9],[0,0,9],[544.3300170898438,0,9]]},{"vertices":[[544.3300170898438,0,9],[544.3300170898438,164,9],[0,164,9]]},{"vertices":[[544.3300170898438,0,0],[544.3300170898438,164,0],[544.3300170898438,0,9]]},{"vertices":[[544.3300170898438,164,0],[544.3300170898438,164,9],[544.3300170898438,0,9]]},{"vertices":[[544.3300170898438,164,0],[0,164,0],[544.3300170898438,164,9]]},{"vertices":[[0,164,0],[0,164,9],[544.3300170898438,164,9]]},{"vertices":[[0,164,0],[0,0,0],[0,164,9]]},{"vertices":[[0,0,0],[0,0,9],[0,164,9]]},{"vertices":[[0,0,0],[544.3300170898438,0,0],[0,0,9]]},{"vertices":[[544.3300170898438,0,0],[544.3300170898438,0,9],[0,0,9]]}],"transforms":[0,0,1,0,0,1,0,0,-1,0,0,0,280,13,-539.3334000000032,1]}
Similar use case
{"polygons":[{"vertices":[[462,0,0],[462,1166.6700439453125,5.003333568572998],[462,1166.6700439453125,0]],"plane":[-0.9999999999999999,0,0,-461.99999999999994]},{"vertices":[[462,0,0],[462,0,5.003333568572998],[462,1166.6700439453125,5.003333568572998]],"plane":[-0.9999999999999999,0,0,-461.99999999999994]},{"vertices":[[453,1166.6700439453125,0],[453,0,5.003333568572998],[453,0,0]],"plane":[0.9999999999999999,0,0,452.99999999999994]},{"vertices":[[453,1166.6700439453125,0],[453,1166.6700439453125,5.003333568572998],[453,0,5.003333568572998]],"plane":[0.9999999999999999,0,0,452.99999999999994]},{"vertices":[[462,1166.6700439453125,5.003333568572998],[453,0,5.003333568572998],[453,1166.6700439453125,5.003333568572998]],"plane":[0,0,-1,-5.003333568572998]},{"vertices":[[453,0,5.003333568572998],[462,1166.6700439453125,5.003333568572998],[462,0,5.003333568572998]],"plane":[0,0,-1,-5.003333568572998]},{"vertices":[[462,0,13],[462,1166.6700439453125,18],[462,1166.6700439453125,13]],"plane":[-0.9999999999999999,0,0,-461.99999999999994]},{"vertices":[[462,0,13],[462,0,18],[462,1166.6700439453125,18]],"plane":[-0.9999999999999999,0,0,-461.99999999999994]},{"vertices":[[453,1166.6700439453125,13],[453,0,18],[453,0,13]],"plane":[0.9999999999999999,0,0,452.99999999999994]},{"vertices":[[453,1166.6700439453125,13],[453,1166.6700439453125,18],[453,0,18]],"plane":[0.9999999999999999,0,0,452.99999999999994]},{"vertices":[[462,1166.6700439453125,13],[453,1166.6700439453125,13],[453,0,13]],"plane":[0,0,1,13]},{"vertices":[[453,0,13],[462,0,13],[462,1166.6700439453125,13]],"plane":[0,0,1,13]},{"vertices":[[0,0,0],[453,0,0],[453,0,18]],"plane":[0,-0.9999999999999999,0,0]},{"vertices":[[0,0,0],[453,0,18],[0,0,18]],"plane":[0,-0.9999999999999999,0,0]},{"vertices":[[453,0,5.003333568572998],[462,0,5.003333568572998],[462,0,13]],"plane":[0,-1,0,0]},{"vertices":[[453,0,5.003333568572998],[462,0,13],[453,0,13]],"plane":[0,-1,0,0]},{"vertices":[[462,0,0],[480,0,0],[480,0,18]],"plane":[0,-1,0,0]},{"vertices":[[462,0,0],[480,0,18],[462,0,18]],"plane":[0,-1,0,0]},{"vertices":[[480,0,0],[480,1166.6700439453125,0],[480,1166.6700439453125,18]],"plane":[1,0,0,480]},{"vertices":[[480,0,0],[480,1166.6700439453125,18],[480,0,18]],"plane":[1,0,0,480]},{"vertices":[[480,1166.6700439453125,0],[462,1166.6700439453125,0],[462,1166.6700439453125,18]],"plane":[0,1,0,1166.6700439453125]},{"vertices":[[480,1166.6700439453125,0],[462,1166.6700439453125,18],[480,1166.6700439453125,18]],"plane":[0,1,0,1166.6700439453125]},{"vertices":[[462,1166.6700439453125,5.003333568572998],[453,1166.6700439453125,5.003333568572998],[453,1166.6700439453125,13]],"plane":[0,1,0,1166.6700439453125]},{"vertices":[[462,1166.6700439453125,5.003333568572998],[453,1166.6700439453125,13],[462,1166.6700439453125,13]],"plane":[0,1,0,1166.6700439453125]},{"vertices":[[453,1166.6700439453125,0],[0,1166.6700439453125,0],[0,1166.6700439453125,18]],"plane":[0,0.9999999999999999,0,1166.6700439453123]},{"vertices":[[453,1166.6700439453125,0],[0,1166.6700439453125,18],[453,1166.6700439453125,18]],"plane":[0,0.9999999999999999,0,1166.6700439453123]},{"vertices":[[0,1166.6700439453125,0],[0,0,0],[0,0,18]],"plane":[-1,0,0,0]},{"vertices":[[0,1166.6700439453125,0],[0,0,18],[0,1166.6700439453125,18]],"plane":[-1,0,0,0]},{"vertices":[[462,1166.6700439453125,0],[480,0,0],[462,0,0]],"plane":[0,0,-1,0]},{"vertices":[[480,0,0],[462,1166.6700439453125,0],[480,1166.6700439453125,0]],"plane":[0,0,-1,0]},{"vertices":[[0,1166.6700439453125,0],[453,0,0],[0,0,0]],"plane":[0,0,-1,0]},{"vertices":[[453,0,0],[0,1166.6700439453125,0],[453,1166.6700439453125,0]],"plane":[0,0,-1,0]},{"vertices":[[462,1166.6700439453125,18],[462,0,18],[480,0,18]],"plane":[0,0,1,18]},{"vertices":[[480,0,18],[480,1166.6700439453125,18],[462,1166.6700439453125,18]],"plane":[0,0,1,18]},{"vertices":[[0,1166.6700439453125,18],[0,0,18],[453,0,18]],"plane":[0,0,1,18]},{"vertices":[[453,0,18],[453,1166.6700439453125,18],[0,1166.6700439453125,18]],"plane":[0,0,1,18]}],"transforms":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}
{"polygons":[{"vertices":[[453,481.3299865722656,0],[462,481.3299865722656,5.002839088439941],[462,481.3299865722656,0]]},{"vertices":[[453,481.3299865722656,0],[453,481.3299865722656,5.002839088439941],[462,481.3299865722656,5.002839088439941]]},{"vertices":[[462,481.3299865722656,0],[462,1432,5.002839088439941],[462,1432,0]]},{"vertices":[[462,481.3299865722656,0],[462,481.3299865722656,5.002839088439941],[462,1432,5.002839088439941]]},{"vertices":[[453,1432,0],[453,481.3299865722656,5.002839088439941],[453,481.3299865722656,0]]},{"vertices":[[453,1432,0],[453,1432,5.002839088439941],[453,481.3299865722656,5.002839088439941]]},{"vertices":[[462,1432,5.002839088439941],[453,481.3299865722656,5.002839088439941],[453,1432,5.002839088439941]]},{"vertices":[[453,481.3299865722656,5.002839088439941],[462,1432,5.002839088439941],[462,481.3299865722656,5.002839088439941]]},{"vertices":[[462,0,0],[462,473.3333435058594,5.002839088439941],[462,473.3333435058594,0]]},{"vertices":[[462,0,0],[462,0,5.002839088439941],[462,473.3333435058594,5.002839088439941]]},{"vertices":[[462,473.3333435058594,0],[453,473.3333435058594,5.002839088439941],[453,473.3333435058594,0]]},{"vertices":[[462,473.3333435058594,0],[462,473.3333435058594,5.002839088439941],[453,473.3333435058594,5.002839088439941]]},{"vertices":[[453,473.3333435058594,0],[453,0,5.002839088439941],[453,0,0]]},{"vertices":[[453,473.3333435058594,0],[453,473.3333435058594,5.002839088439941],[453,0,5.002839088439941]]},{"vertices":[[462,473.3333435058594,5.002839088439941],[453,0,5.002839088439941],[453,473.3333435058594,5.002839088439941]]},{"vertices":[[453,0,5.002839088439941],[462,473.3333435058594,5.002839088439941],[462,0,5.002839088439941]]},{"vertices":[[0,0,0],[453,0,0],[453,0,18]]},{"vertices":[[0,0,0],[453,0,18],[0,0,18]]},{"vertices":[[453,0,5.002839088439941],[462,0,5.002839088439941],[462,0,18]]},{"vertices":[[453,0,5.002839088439941],[462,0,18],[453,0,18]]},{"vertices":[[462,0,0],[480,0,0],[480,0,18]]},{"vertices":[[462,0,0],[480,0,18],[462,0,18]]},{"vertices":[[480,0,0],[480,1432,0],[480,1432,18]]},{"vertices":[[480,0,0],[480,1432,18],[480,0,18]]},{"vertices":[[480,1432,0],[462,1432,0],[462,1432,18]]},{"vertices":[[480,1432,0],[462,1432,18],[480,1432,18]]},{"vertices":[[462,1432,5.002839088439941],[453,1432,5.002839088439941],[453,1432,18]]},{"vertices":[[462,1432,5.002839088439941],[453,1432,18],[462,1432,18]]},{"vertices":[[453,1432,0],[0,1432,0],[0,1432,18]]},{"vertices":[[453,1432,0],[0,1432,18],[453,1432,18]]},{"vertices":[[0,1432,0],[0,0,0],[0,0,18]]},{"vertices":[[0,1432,0],[0,0,18],[0,1432,18]]},{"vertices":[[0,1432,0],[453,0,0],[0,0,0]]},{"vertices":[[462,473.3333435058594,0],[480,0,0],[462,0,0]]},{"vertices":[[480,0,0],[462,1432,0],[480,1432,0]]},{"vertices":[[453,481.3299865722656,0],[0,1432,0],[453,1432,0]]},{"vertices":[[0,1432,0],[453,473.3333435058594,0],[453,0,0]]},{"vertices":[[480,0,0],[462,481.3299865722656,0],[462,1432,0]]},{"vertices":[[453,481.3299865722656,0],[453,473.3333435058594,0],[0,1432,0]]},{"vertices":[[462,473.3333435058594,0],[462,481.3299865722656,0],[480,0,0]]},{"vertices":[[462,481.3299865722656,0],[453,473.3333435058594,0],[453,481.3299865722656,0]]},{"vertices":[[453,473.3333435058594,0],[462,481.3299865722656,0],[462,473.3333435058594,0]]},{"vertices":[[0,1432,18],[0,0,18],[480,0,18]]},{"vertices":[[480,0,18],[480,1432,18],[0,1432,18]]}],"transforms":[1,0,0,0,0,0,-1,0,0,1,0,0,0,1166.6671609740006,486.33333333399787,1]}
{"polygons":[{"vertices":[[412,0,13],[412,769.3300170898438,18],[412,769.3300170898438,13]],"plane":[-0.9999999999999999,0,0,-411.99999999999994]},{"vertices":[[412,0,13],[412,0,18],[412,769.3300170898438,18]],"plane":[-0.9999999999999999,0,0,-411.99999999999994]},{"vertices":[[412,769.3300170898438,13],[403,769.3300170898438,18],[403,769.3300170898438,13]],"plane":[0,-1,0,-769.3300170898438]},{"vertices":[[412,769.3300170898438,13],[412,769.3300170898438,18],[403,769.3300170898438,18]],"plane":[0,-1,0,-769.3300170898438]},{"vertices":[[403,769.3300170898438,13],[403,0,18],[403,0,13]],"plane":[0.9999999999999999,0,0,402.99999999999994]},{"vertices":[[403,769.3300170898438,13],[403,769.3300170898438,18],[403,0,18]],"plane":[0.9999999999999999,0,0,402.99999999999994]},{"vertices":[[412,769.3300170898438,13],[403,769.3300170898438,13],[403,0,13]],"plane":[0,0,0.9999999999999999,12.999999999999998]},{"vertices":[[403,0,13],[412,0,13],[412,769.3300170898438,13]],"plane":[0,0,0.9999999999999999,12.999999999999998]},{"vertices":[[0,0,0],[403,0,0],[403,0,18]],"plane":[0,-1,0,0]},{"vertices":[[0,0,0],[403,0,18],[0,0,18]],"plane":[0,-1,0,0]},{"vertices":[[403,0,0],[412,0,0],[412,0,13]],"plane":[0,-1,0,0]},{"vertices":[[403,0,0],[412,0,13],[403,0,13]],"plane":[0,-1,0,0]},{"vertices":[[412,0,0],[430,0,0],[430,0,18]],"plane":[0,-1,0,0]},{"vertices":[[412,0,0],[430,0,18],[412,0,18]],"plane":[0,-1,0,0]},{"vertices":[[430,0,0],[430,782.3300170898438,0],[430,782.3300170898438,18]],"plane":[0.9999999999999999,0,0,429.99999999999994]},{"vertices":[[430,0,0],[430,782.3300170898438,18],[430,0,18]],"plane":[0.9999999999999999,0,0,429.99999999999994]},{"vertices":[[430,782.3300170898438,0],[0,782.3300170898438,0],[0,782.3300170898438,18]],"plane":[0,0.9999999999999999,0,782.3300170898436]},{"vertices":[[430,782.3300170898438,0],[0,782.3300170898438,18],[430,782.3300170898438,18]],"plane":[0,0.9999999999999999,0,782.3300170898436]},{"vertices":[[0,782.3300170898438,0],[0,0,0],[0,0,18]],"plane":[-0.9999999999999999,0,0,0]},{"vertices":[[0,782.3300170898438,0],[0,0,18],[0,782.3300170898438,18]],"plane":[-0.9999999999999999,0,0,0]},{"vertices":[[0,782.3300170898438,0],[430,0,0],[0,0,0]],"plane":[0,0,-1,0]},{"vertices":[[430,0,0],[0,782.3300170898438,0],[430,782.3300170898438,0]],"plane":[0,0,-1,0]},{"vertices":[[0,782.3300170898438,18],[0,0,18],[403,0,18]],"plane":[0,0,1,18]},{"vertices":[[412,769.3300170898438,18],[412,0,18],[430,0,18]],"plane":[0,0,0.9999999999999999,17.999999999999996]},{"vertices":[[0,782.3300170898438,18],[403,0,18],[403,769.3300170898438,18]],"plane":[0,0,1,18]},{"vertices":[[412,769.3300170898438,18],[430,0,18],[430,782.3300170898438,18]],"plane":[0,0,0.9999999999999999,17.999999999999996]},{"vertices":[[430,782.3300170898438,18],[0,782.3300170898438,18],[403,769.3300170898438,18]],"plane":[0,0,1,18]},{"vertices":[[403,769.3300170898438,18],[412,769.3300170898438,18],[430,782.3300170898438,18]],"plane":[0,0,1,18]}],"transforms":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}
{"polygons":[{"vertices":[[403,13.006667137145996,13],[412,13.006667137145996,18],[412,13.006667137145996,13]]},{"vertices":[[403,13.006667137145996,13],[403,13.006667137145996,18],[412,13.006667137145996,18]]},{"vertices":[[412,13.006667137145996,13],[412,816.336669921875,18],[412,816.336669921875,13]]},{"vertices":[[412,13.006667137145996,13],[412,13.006667137145996,18],[412,816.336669921875,18]]},{"vertices":[[412,816.336669921875,13],[403,816.336669921875,18],[403,816.336669921875,13]]},{"vertices":[[412,816.336669921875,13],[412,816.336669921875,18],[403,816.336669921875,18]]},{"vertices":[[403,816.336669921875,13],[403,13.006667137145996,18],[403,13.006667137145996,13]]},{"vertices":[[403,816.336669921875,13],[403,816.336669921875,18],[403,13.006667137145996,18]]},{"vertices":[[412,816.336669921875,13],[403,816.336669921875,13],[403,13.006667137145996,13]]},{"vertices":[[403,13.006667137145996,13],[412,13.006667137145996,13],[412,816.336669921875,13]]},{"vertices":[[403,824.3400268554688,13],[412,824.3400268554688,18],[412,824.3400268554688,13]]},{"vertices":[[403,824.3400268554688,13],[403,824.3400268554688,18],[412,824.3400268554688,18]]},{"vertices":[[412,824.3400268554688,13],[412,1602.6700439453125,18],[412,1602.6700439453125,13]]},{"vertices":[[412,824.3400268554688,13],[412,824.3400268554688,18],[412,1602.6700439453125,18]]},{"vertices":[[403,1602.6700439453125,13],[403,824.3400268554688,18],[403,824.3400268554688,13]]},{"vertices":[[403,1602.6700439453125,13],[403,1602.6700439453125,18],[403,824.3400268554688,18]]},{"vertices":[[412,1602.6700439453125,13],[403,1602.6700439453125,13],[403,824.3400268554688,13]]},{"vertices":[[403,824.3400268554688,13],[412,824.3400268554688,13],[412,1602.6700439453125,13]]},{"vertices":[[0,0,0],[430,0,0],[430,0,18]]},{"vertices":[[0,0,0],[430,0,18],[0,0,18]]},{"vertices":[[430,0,0],[430,1602.6700439453125,0],[430,1602.6700439453125,18]]},{"vertices":[[430,0,0],[430,1602.6700439453125,18],[430,0,18]]},{"vertices":[[430,1602.6700439453125,0],[412,1602.6700439453125,0],[412,1602.6700439453125,18]]},{"vertices":[[430,1602.6700439453125,0],[412,1602.6700439453125,18],[430,1602.6700439453125,18]]},{"vertices":[[412,1602.6700439453125,0],[403,1602.6700439453125,0],[403,1602.6700439453125,13]]},{"vertices":[[412,1602.6700439453125,0],[403,1602.6700439453125,13],[412,1602.6700439453125,13]]},{"vertices":[[403,1602.6700439453125,0],[0,1602.6700439453125,0],[0,1602.6700439453125,18]]},{"vertices":[[403,1602.6700439453125,0],[0,1602.6700439453125,18],[403,1602.6700439453125,18]]},{"vertices":[[0,1602.6700439453125,0],[0,0,0],[0,0,18]]},{"vertices":[[0,1602.6700439453125,0],[0,0,18],[0,1602.6700439453125,18]]},{"vertices":[[0,1602.6700439453125,0],[430,0,0],[0,0,0]]},{"vertices":[[430,0,0],[0,1602.6700439453125,0],[430,1602.6700439453125,0]]},{"vertices":[[0,0,18],[403,13.006667137145996,18],[403,816.336669921875,18]]},{"vertices":[[412,13.006667137145996,18],[403,13.006667137145996,18],[0,0,18]]},{"vertices":[[430,0,18],[430,1602.6700439453125,18],[412,1602.6700439453125,18]]},{"vertices":[[403,824.3400268554688,18],[403,1602.6700439453125,18],[0,1602.6700439453125,18]]},{"vertices":[[0,1602.6700439453125,18],[0,0,18],[403,816.336669921875,18]]},{"vertices":[[412,13.006667137145996,18],[0,0,18],[430,0,18]]},{"vertices":[[430,0,18],[412,1602.6700439453125,18],[412,824.3400268554688,18]]},{"vertices":[[403,824.3400268554688,18],[0,1602.6700439453125,18],[403,816.336669921875,18]]},{"vertices":[[412,816.336669921875,18],[412,13.006667137145996,18],[430,0,18]]},{"vertices":[[412,824.3400268554688,18],[403,824.3400268554688,18],[403,816.336669921875,18]]},{"vertices":[[412,816.336669921875,18],[430,0,18],[412,824.3400268554688,18]]},{"vertices":[[412,824.3400268554688,18],[403,816.336669921875,18],[412,816.336669921875,18]]}],"transforms":[1,0,0,0,0,1,0,0,0,0,1,0,0,782.3266666670097,0,1]}