This commit is contained in:
falken10vdl
2025-09-25 09:38:24 +02:00
committed by Bruno Perdigão
parent 587fc63843
commit 84d55d8969
+19 -18
View File
@@ -531,27 +531,21 @@ class PolylineDecorator:
continue continue
dim_text_pos = (Vector(self.polyline_points[i].position) + Vector(self.polyline_points[i - 1].position)) / 2 dim_text_pos = (Vector(self.polyline_points[i].position) + Vector(self.polyline_points[i - 1].position)) / 2
dim_text_coords = view3d_utils.location_3d_to_region_2d(region, rv3d, dim_text_pos) dim_text_coords = view3d_utils.location_3d_to_region_2d(region, rv3d, dim_text_pos)
if dim_text_coords: if dim_text_coords:
formatted_value = self.polyline_points[i].dim formatted_value = self.polyline_points[i].dim
text = "d: " + formatted_value text = "d: " + formatted_value
screen_coords[f"distance_{i}"] = (dim_text_coords, text) screen_coords[f"distance_{i}"] = (Vector(dim_text_coords), text)
# --- Show angles for polyline/poly area ---
if self.measure_type != "SINGLE" and len(self.polyline_points) > 2: if i == 1:
for i in range(len(self.polyline_points)):
if i == 0 or i == len(self.polyline_points) - 1:
continue continue
angle_text_pos = Vector(self.polyline_points[i].position) angle_text_pos = Vector(self.polyline_points[i - 1].position)
angle_text_coords = view3d_utils.location_3d_to_region_2d(region, rv3d, angle_text_pos) angle_text_coords = view3d_utils.location_3d_to_region_2d(region, rv3d, angle_text_pos)
if angle_text_coords: if angle_text_coords:
text = "a: " + self.polyline_points[i+1].angle text = "a: " + self.polyline_points[i].angle
screen_coords[f"angle_{i}"] = (angle_text_coords, text) screen_coords[f"angle_{i}"] = (Vector(angle_text_coords), text)
# --- Show XYZ axis values for single measurement ---
if self.measure_type == "SINGLE": if self.measure_type == "SINGLE":
axis_line, axis_line_center = self.calculate_measurement_x_y_and_z(context) axis_line, axis_line_center = self.calculate_measurement_x_y_and_z(context)
if axis_line and axis_line_center:
for i, dim_text_pos in enumerate(axis_line_center): for i, dim_text_pos in enumerate(axis_line_center):
dim_text_coords = view3d_utils.location_3d_to_region_2d(region, rv3d, dim_text_pos) dim_text_coords = view3d_utils.location_3d_to_region_2d(region, rv3d, dim_text_pos)
if dim_text_coords: if dim_text_coords:
@@ -562,14 +556,16 @@ class PolylineDecorator:
prefix = "xyz"[i] prefix = "xyz"[i]
formatted_value = tool.Polyline.format_input_ui_units(value) formatted_value = tool.Polyline.format_input_ui_units(value)
text = f"{prefix}: {formatted_value}" text = f"{prefix}: {formatted_value}"
screen_coords[f"xyz_{i}"] = (dim_text_coords, text) screen_coords[f"xyz_{i}"] = (Vector(dim_text_coords), text)
#Area and Length text # Area and Length text
polyline_verts = [Vector((p.x, p.y, p.z)) for p in self.polyline_points] polyline_verts = [Vector((p.x, p.y, p.z)) for p in self.polyline_points]
# Area # Area
if self.measure_type == "POLY_AREA" and self.polyline_data.area: if self.measure_type == "POLY_AREA" and self.polyline_data.area:
if len(polyline_verts) >= 3: if len(polyline_verts) < 3:
blf.disable(self.font_id, blf.SHADOW)
return
center = sum(polyline_verts, Vector()) / len(polyline_verts) center = sum(polyline_verts, Vector()) / len(polyline_verts)
if polyline_verts[0] == polyline_verts[-1]: if polyline_verts[0] == polyline_verts[-1]:
center = sum(polyline_verts[:-1], Vector()) / len(polyline_verts[:-1]) center = sum(polyline_verts[:-1], Vector()) / len(polyline_verts[:-1])
@@ -577,16 +573,21 @@ class PolylineDecorator:
if area_text_coords: if area_text_coords:
value = self.polyline_data.area value = self.polyline_data.area
text = f"area: {value}" text = f"area: {value}"
screen_coords["area"] = (area_text_coords, text) text_length = blf.dimensions(self.font_id, text)
area_text_coords = list(area_text_coords)
area_text_coords[0] -= text_length[0] / 2
screen_coords["area"] = (Vector(area_text_coords), text)
# Length # Length
if self.measure_type in {"POLYLINE", "POLY_AREA"}: if self.measure_type in {"POLYLINE", "POLY_AREA"}:
if len(polyline_verts) >= 3: if len(polyline_verts) < 3:
blf.disable(self.font_id, blf.SHADOW)
return
total_length_text_coords = view3d_utils.location_3d_to_region_2d(region, rv3d, polyline_verts[-1]) total_length_text_coords = view3d_utils.location_3d_to_region_2d(region, rv3d, polyline_verts[-1])
if total_length_text_coords: if total_length_text_coords:
value = self.polyline_data.total_length value = self.polyline_data.total_length
text = f"length: {value}" text = f"length: {value}"
screen_coords["length"] = (total_length_text_coords, text) screen_coords["length"] = (Vector(total_length_text_coords), text)
self.adjust_overlapping_labels(screen_coords) self.adjust_overlapping_labels(screen_coords)