mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-23 20:06:29 +00:00
AddReferenceImage: fix regression with IFC2X3 support, refactor to no longer depend on add_representation or update_representation, remove legacy style updating functionality
* Enhance AddReferenceImage operator to use file browser instead of independent popup dialogue * Fix dimensions assertion in TestAddReferenceImage * Remove error in return in _execute (it is not execute) * Add IFC2X3 support to AddReferenceImage * Adde unit="LENGTH" to the x/y properties (every length dimension everywhere in the UI is in project length units. No need to say it explicitly) * Manually create the texture always, not just for IFC2X3 * Add poll method to AddReferenceImage operator to check for loaded IFC project * Refactor AddReferenceImage to add representation manually following pattern in root/operator.py's bim.add_element * Improve File explorer options between new and select from existing project Ifc Reference Images * Refactor get_existing_reference_images to use selector for filtering image annotations * No extra args needed after should_add_representation is False * Doing clean=True deletes everything * Don't manually add geometry and materials, don't call bpy.ops. Only create IFC data, then use preexisting loading functions to create geometry. * Black formatting, also now we can start to remove this operator as it becomes obsolete * Consolidate duplicate UV generation into Loader.load_generated_uv_map Replace 3 identical XY-UV baking blocks (create_object IMAGE, bm_add_image_plane, ImageScalingTool) with a single reusable classmethod in tool.Loader. * Fix IFC4 texture display in Solid viewport Texture mode IFC4 IfcTextureCoordinateGenerator Mode=COORD is used, load_texture_maps falls back to load_generated_uv_map to bake XY-UV data onto the mesh. * Fix IFC2X3 texture display * This looks wrong * Remove legacy override image feature, because we now have a proper styles and texture manager * Remove legacy override existing image element, because we now have a dedicated styles texture manager * Remove unnecessary roundtrip to bmesh and mesh --------- Co-authored-by: Dion Moult <dion@thinkmoult.com>
This commit is contained in:
@@ -3248,29 +3248,9 @@ class ImageScalingTool(bpy.types.Operator, PolylineOperator):
|
||||
|
||||
bmesh.ops.scale(bm, vec=(scale_factor, scale_factor, 1.0), verts=bm.verts)
|
||||
|
||||
if bm.loops.layers.uv:
|
||||
uv_layer = bm.loops.layers.uv.active
|
||||
|
||||
min_x = min(v.co.x for v in bm.verts)
|
||||
max_x = max(v.co.x for v in bm.verts)
|
||||
min_y = min(v.co.y for v in bm.verts)
|
||||
max_y = max(v.co.y for v in bm.verts)
|
||||
|
||||
width = max_x - min_x
|
||||
height = max_y - min_y
|
||||
|
||||
for face in bm.faces:
|
||||
for loop in face.loops:
|
||||
vert = loop.vert
|
||||
u = (vert.co.x - min_x) / width if width > 0 else 0.5
|
||||
v = (vert.co.y - min_y) / height if height > 0 else 0.5
|
||||
|
||||
u = max(0.0, min(1.0, u))
|
||||
v = max(0.0, min(1.0, v))
|
||||
loop[uv_layer].uv = (u, v)
|
||||
|
||||
bm.to_mesh(mesh)
|
||||
bm.free()
|
||||
tool.Loader.load_generated_uv_map(mesh)
|
||||
mesh.update()
|
||||
|
||||
element = tool.Ifc.get_entity(self.target_object)
|
||||
|
||||
Reference in New Issue
Block a user