mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-28 19:27:10 +00:00
All generated drawing text now has classes so you can customise their style.
This commit is contained in:
@@ -49,6 +49,8 @@ text.header { /* 5mm */ font-size: 8.25px; }
|
|||||||
text.large { /* 3.5mm */ font-size: 5.78px; }
|
text.large { /* 3.5mm */ font-size: 5.78px; }
|
||||||
text.regular { /* 2.5mm */ font-size: 4.13px; }
|
text.regular { /* 2.5mm */ font-size: 4.13px; }
|
||||||
text.small { /* 1.8mm */ font-size: 2.97px; }
|
text.small { /* 1.8mm */ font-size: 2.97px; }
|
||||||
|
text.GRID { /* 5mm */ font-size: 8.25px; }
|
||||||
|
text.DIMENSION { /* 5mm */ font-size: 8.25px; fill: red; }
|
||||||
.material-blank { fill: white; }
|
.material-blank { fill: white; }
|
||||||
.material-diagonal1 { fill: url(#diagonal1); }
|
.material-diagonal1 { fill: url(#diagonal1); }
|
||||||
.material-diagonal2 { fill: url(#diagonal2); }
|
.material-diagonal2 { fill: url(#diagonal2); }
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ class SvgWriter:
|
|||||||
"alignment-baseline": "baseline",
|
"alignment-baseline": "baseline",
|
||||||
"dominant-baseline": "baseline",
|
"dominant-baseline": "baseline",
|
||||||
}
|
}
|
||||||
self.svg.add(self.svg.text(f"RL +{rl}", insert=tuple(text_position), **text_style))
|
self.svg.add(self.svg.text(f"RL +{rl}", insert=tuple(text_position), class_="SECTIONLEVEL", **text_style))
|
||||||
if tag:
|
if tag:
|
||||||
self.svg.add(self.svg.text(tag, insert=(text_position[0], text_position[1] - 5), **text_style))
|
self.svg.add(self.svg.text(tag, insert=(text_position[0], text_position[1] - 5), **text_style))
|
||||||
|
|
||||||
@@ -234,6 +234,7 @@ class SvgWriter:
|
|||||||
self.svg.text(
|
self.svg.text(
|
||||||
"UP",
|
"UP",
|
||||||
insert=tuple(text_position),
|
insert=tuple(text_position),
|
||||||
|
class_="STAIR",
|
||||||
**{
|
**{
|
||||||
"text-anchor": "middle",
|
"text-anchor": "middle",
|
||||||
"alignment-baseline": "middle",
|
"alignment-baseline": "middle",
|
||||||
@@ -266,6 +267,7 @@ class SvgWriter:
|
|||||||
self.svg.text(
|
self.svg.text(
|
||||||
axis_tag,
|
axis_tag,
|
||||||
insert=tuple(start * self.svg_scale),
|
insert=tuple(start * self.svg_scale),
|
||||||
|
class_="GRID",
|
||||||
**{
|
**{
|
||||||
"text-anchor": "middle",
|
"text-anchor": "middle",
|
||||||
"alignment-baseline": "middle",
|
"alignment-baseline": "middle",
|
||||||
@@ -277,6 +279,7 @@ class SvgWriter:
|
|||||||
self.svg.text(
|
self.svg.text(
|
||||||
axis_tag,
|
axis_tag,
|
||||||
insert=tuple(end * self.svg_scale),
|
insert=tuple(end * self.svg_scale),
|
||||||
|
class_="GRID",
|
||||||
**{
|
**{
|
||||||
"text-anchor": "middle",
|
"text-anchor": "middle",
|
||||||
"alignment-baseline": "middle",
|
"alignment-baseline": "middle",
|
||||||
@@ -419,8 +422,8 @@ class SvgWriter:
|
|||||||
"alignment-baseline": "middle",
|
"alignment-baseline": "middle",
|
||||||
"dominant-baseline": "middle",
|
"dominant-baseline": "middle",
|
||||||
}
|
}
|
||||||
self.svg.add(self.svg.text(reference_id, insert=(text_position[0], text_position[1] - 2.5), **text_style))
|
self.svg.add(self.svg.text(reference_id, insert=(text_position[0], text_position[1] - 2.5), class_="SECTION", **text_style))
|
||||||
self.svg.add(self.svg.text(sheet_id, insert=(text_position[0], text_position[1] + 2.5), **text_style))
|
self.svg.add(self.svg.text(sheet_id, insert=(text_position[0], text_position[1] + 2.5), class_="SECTION", **text_style))
|
||||||
|
|
||||||
def draw_elevation_annotation(self, obj):
|
def draw_elevation_annotation(self, obj):
|
||||||
x_offset = self.raw_width / 2
|
x_offset = self.raw_width / 2
|
||||||
@@ -450,8 +453,8 @@ class SvgWriter:
|
|||||||
"alignment-baseline": "middle",
|
"alignment-baseline": "middle",
|
||||||
"dominant-baseline": "middle",
|
"dominant-baseline": "middle",
|
||||||
}
|
}
|
||||||
self.svg.add(self.svg.text(reference_id, insert=(text_position[0], text_position[1] - 2.5), **text_style))
|
self.svg.add(self.svg.text(reference_id, insert=(text_position[0], text_position[1] - 2.5), class_="ELEVATION", **text_style))
|
||||||
self.svg.add(self.svg.text(sheet_id, insert=(text_position[0], text_position[1] + 2.5), **text_style))
|
self.svg.add(self.svg.text(sheet_id, insert=(text_position[0], text_position[1] + 2.5), class_="ELEVATION", **text_style))
|
||||||
|
|
||||||
def get_reference_and_sheet_id_from_annotation(self, element):
|
def get_reference_and_sheet_id_from_annotation(self, element):
|
||||||
reference_id = "-"
|
reference_id = "-"
|
||||||
@@ -613,6 +616,7 @@ class SvgWriter:
|
|||||||
self.svg.text(
|
self.svg.text(
|
||||||
"RL +{}".format(rl),
|
"RL +{}".format(rl),
|
||||||
insert=tuple(text_position),
|
insert=tuple(text_position),
|
||||||
|
class_="PLANLEVEL",
|
||||||
**{
|
**{
|
||||||
"text-anchor": text_anchor,
|
"text-anchor": text_anchor,
|
||||||
"alignment-baseline": "baseline",
|
"alignment-baseline": "baseline",
|
||||||
@@ -742,7 +746,7 @@ class SvgWriter:
|
|||||||
angle_text = abs(round(math.degrees(angle), 3))
|
angle_text = abs(round(math.degrees(angle), 3))
|
||||||
if is_reflex:
|
if is_reflex:
|
||||||
angle_text = 360 - angle_text
|
angle_text = 360 - angle_text
|
||||||
self.svg.add(self.svg.text(f"{angle_text}deg", insert=tuple(text_position), **text_style))
|
self.svg.add(self.svg.text(f"{angle_text}deg", insert=tuple(text_position), class_="ANGLE", **text_style))
|
||||||
|
|
||||||
# Draw SVG arc, see for details: http://xahlee.info/js/svg_circle_arc.html
|
# Draw SVG arc, see for details: http://xahlee.info/js/svg_circle_arc.html
|
||||||
arc_proj_end_pts = [self.project_point_onto_camera(v) for v in arc_end_pts]
|
arc_proj_end_pts = [self.project_point_onto_camera(v) for v in arc_end_pts]
|
||||||
@@ -809,7 +813,7 @@ class SvgWriter:
|
|||||||
radius = helper.format_distance(radius)
|
radius = helper.format_distance(radius)
|
||||||
tag = element.Description or f"R{radius}"
|
tag = element.Description or f"R{radius}"
|
||||||
|
|
||||||
self.svg.add(self.svg.text(tag, insert=tuple(text_position), **text_style))
|
self.svg.add(self.svg.text(tag, insert=tuple(text_position), class_="RADIUS", **text_style))
|
||||||
|
|
||||||
def draw_diameter_annotations(self, obj):
|
def draw_diameter_annotations(self, obj):
|
||||||
classes = self.get_attribute_classes(obj)
|
classes = self.get_attribute_classes(obj)
|
||||||
@@ -886,6 +890,7 @@ class SvgWriter:
|
|||||||
self.svg.text(
|
self.svg.text(
|
||||||
text,
|
text,
|
||||||
insert=tuple(text_position),
|
insert=tuple(text_position),
|
||||||
|
class_="DIMENSION",
|
||||||
**{
|
**{
|
||||||
"transform": "rotate({} {} {})".format(rotation, text_position.x, text_position.y),
|
"transform": "rotate({} {} {})".format(rotation, text_position.x, text_position.y),
|
||||||
"text-anchor": "middle",
|
"text-anchor": "middle",
|
||||||
|
|||||||
Reference in New Issue
Block a user