3d Rendering fix

This commit is contained in:
Sébastien Dante Ursini 2025-02-17 11:13:15 -03:00
parent db32cff704
commit a13e2a7399

View File

@ -1,14 +1,18 @@
include <BOSL2/std.scad> include <BOSL2/std.scad>
include <Typography/typo.scad>
A4_LANDSCAPE= [297,210]; A4_LANDSCAPE= [297,210];
debugging = false; title_block_debugging = false;
experimental = true;
module titleBlock( module titleBlock(
project, project,
title = undef,
description = "",
textSize=6, textSize=6,
date="2025-01-01", date="2025-01-01",
scale=1, scale=1,
@ -17,87 +21,164 @@ module titleBlock(
inset=10, inset=10,
anchor=CENTER, anchor=CENTER,
spin=0, spin=0,
orient=UP orient=UP,
color="Black",
strokeWidth = 0.5,
page="A4",
landscape = true,
//anchor=CENTER,spin=0,orient=LEFT //anchor=CENTER,spin=0,orient=LEFT
) { ) {
w = rect[0]; w = rect[0];
h = rect[1]; h = rect[1];
_inset = inset> 0 ? inset : h/20; _inset = inset> 0 ? inset : h/20;
echo("w",w); //path = rect([w,h], chamfer=0 /*, anchor=FRONT*/);
echo("h",h);
echo("inset",_inset);
// Border
path = rect([w,h], chamfer=0 /*, anchor=FRONT*/);
//color("Blue")
//back(-50/2)
//square(rect, center=true);
//attachable( anchor,orient,/*anchor, spin, orient,*/size=[w,h,0] /*,axis=RIGHT*/ ) {
attachable(anchor,spin,orient, size=[w,h,50]) { attachable(anchor,spin,orient, size=[w,h,50]) {
union() { color(color) union() {
stroke(path, closed=true); //recolor("Yellow") stroke(path, closed=true,width=strokeWidth);
rect_tube(size=[w,h], wall=0.5, h=0.1);
// Title // Title
translate([-w /2+_inset, h/2 - _inset ]) l1 = h/2 - _inset;
text(project, size=textSize,halign="left",anchor=TOP); // ************ Project ***************
// Revision translate([-w /2+_inset, l1 ])
translate([-w /2+_inset, -h/2 + _inset]) linear_extrude(0.1) text(project, size=textSize,halign="left",anchor=TOP,font="Saira Stencil One");
text(str("Revision:",revision), size=textSize*2/3/*,anchor=BOTTOM*/);
metrics = textmetrics(project, size=textSize, font="Saira Stencil One");
// Scale // Scale
translate([w/2-_inset, h/2 - _inset]) //translate([w/2-_inset, h/2 - _inset])
text(str("Scale: 1:",scale), size=textSize*2/3,halign="right",anchor=TOP); // ************ Scale ***************
// Date translate([w/2-_inset, l1])
linear_extrude(0.1) text(str("Scale: 1/",scale), size=textSize*2/5,halign="right",anchor=TOP);
// ************ Title ***************
l2 = l1 - metrics.size[1]- 2*_inset ;
if ( title )
translate([-w /2+_inset, l2 ])
linear_extrude(0.1) text( title, size=textSize*2/3,halign="left",anchor=TOP,font="Arial Black");
// ************ Description ***************
echo ("Description",description);
if ( description && false ) {
translate([ -8, l2 - _inset/2 ])
linear_extrude(0.1)
smartText(
description,
size=textSize*1/4,
halign="left",
font="Arial",
//style="italic",
max_width = 51
);
}
// ********** Horizontal line *********
h1 = h/2-2*_inset - metrics.size[1];
if (false) stroke([
[-w /2+_inset, h1],
[+w /2-_inset, h1]
],
width=0.2);
// Vertical sep
if (false) stroke([
[-w/2+3*_inset+metrics.size[0] ,h/2-_inset],
[-w/2+3*_inset+metrics.size[0] ,h/2-2*_inset - metrics.size[1]]]
,width=0.2);
// ************ Revision ***************
translate([-w /2+_inset, -h/2 + _inset])
linear_extrude(0.1) text(str("Revision:",revision), size=textSize*2/5/*,anchor=BOTTOM*/);
// ************ Date ***************
translate([w/2-_inset, -h/2 + _inset]) translate([w/2-_inset, -h/2 + _inset])
text(str("Date:",date), size=textSize*2/3,halign="right"); linear_extrude(0.1) text(str("Date:",date), size=textSize*2/5,halign="right");
}; };
children(); children();
}; };
} }
module A4( margin = 10, landscape = true, onlyMargin = true, anchor=CENTER, spin=0, orient=UP ){ module A4( margin = 10, landscape = true, onlyMargin = true, anchor=CENTER, spin=0, orient=UP, scale=1, strokeWidth=0.2 ){
//a4= [297,210];
w = A4_LANDSCAPE[0]; w = A4_LANDSCAPE[0];
h = A4_LANDSCAPE[1]; h = A4_LANDSCAPE[1];
marginW = w-2*margin; marginW = w-2*margin;
marginH = h-2*margin; marginH = h-2*margin;
contour = rect([w,h]);
//translate([w/2,h/2,0]) attachable(anchor,spin, orient, size=[marginW,marginH,50]) {
//attachable(size=[100,200,0] ) { projection( cut = false ) union(){
// attachable( /*anchor=anchor, , spin, orient,*/size=[marginW,marginH,0] ) { if (!onlyMargin)
attachable(anchor,spin,orient, size=[marginW,marginH,50]) { color("Orange")
rect_tube(size=[w,h], wall=0.5, h=0.1);
union(){ color("Red")
rect_tube(size=[marginW,marginH], wall=0.5, h=0.1);
if (!onlyMargin) color("Orange") stroke(contour, closed=true);
marginPath = rect([marginW,marginH]);
color("Red") stroke(marginPath, closed=true);
}; };
//} children();
children();
} }
} }
module plan(
project,
title = undef,
description = "",
textSize = 6,
date = "2025-01-01",
scale = 1,
revision = "1a",
page = "A4"
)
{
//rect=[90,30];
A4( onlyMargin = false, anchor=LEFT+FWD, scale=2 ) {
//align(align=TOP+LEFT+FWD,spin=[0, 0, 0],inside=true)
//attach(LEFT+FWD,/*RIGHT,inside=true*/)
//align(LEFT,inside=true)
align(FWD+RIGHT,inside=true) {
titleBlock(
project,
title = title,
description = description,
textSize = 7,
rect = [90,30],
inset = 2
);
};
align(BACK+LEFT,inside=true) {
children();
}
//cuboid([50,20,10],anchor=TOP);
//cube([100,100,100]);
//align(FWD+RIGHT,spin=[0, 0, 1],orient=UP) {
//}
}
}
if ( debugging ) { if ( title_block_debugging ) {
//titleBlock("My First Project"); //titleBlock("My First Project");
A4( onlyMargin = false,anchor=LEFT+FWD ) lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam at rutrum magna. Donec auctor euismod nulla ut congue.";
//align(align=TOP+LEFT+FWD,spin=[0, 0, 0],inside=true) plan(
//attach(LEFT+FWD,/*RIGHT,inside=true*/) "Title Block",
//align(LEFT,inside=true) title="Sub title",
align(FWD+RIGHT,inside=true) description=lorem,
titleBlock("Metal Desk",textSize=7,rect=[90,30],inset=2); textSize=7,
//cuboid([50,20,10],anchor=TOP); //spin = 0
//rect=[90,30],
//inset=2
) {
projection( cut = false ) cube([100,100,100]);
}
} }