From e5c06a57961d89968a2c3557f2bdd10ee0182548 Mon Sep 17 00:00:00 2001 From: Youen Date: Thu, 29 Dec 2022 18:05:28 +0100 Subject: [PATCH] Improved performances and fixed bugs --- ahb_cmd_new_step.py | 18 +++++++++++++-- ahb_cmd_view_annotate.py | 45 +++++++++++++++++++------------------- ahb_raster_view.py | 3 ++- ahb_techdraw_extensions.py | 5 ++--- 4 files changed, 43 insertions(+), 28 deletions(-) diff --git a/ahb_cmd_new_step.py b/ahb_cmd_new_step.py index 41a35a4..45a2cc4 100644 --- a/ahb_cmd_new_step.py +++ b/ahb_cmd_new_step.py @@ -32,7 +32,8 @@ class AHB_New_Step: if prev_view is None: step_number = 1 - keep_updated = False + keep_updated = True + raster_view = True template_file_name = freecad_path + '/share/Mod/TechDraw/Templates/A4_Landscape_blank.svg' parent_group = None else: @@ -41,6 +42,12 @@ class AHB_New_Step: if prev_page_group is not None: parent_group = prev_page_group.getParentGroup() keep_updated = prev_page.KeepUpdated + try: + raster_view = prev_page.Assembly_handbook_RasterView + except: + raster_view = True + if raster_view: + keep_updated = False template_file_name = prev_page.Template.Template numbers = re.findall(r'\d+', prev_page.Label) if len(numbers) == 0: prev_number = 0 @@ -65,6 +72,9 @@ class AHB_New_Step: view.Perspective = False view.addProperty("App::PropertyString", "Assembly_handbook_PreviousStepView", "Assembly_handbook") view.addProperty("App::PropertyBool", "Assembly_handbook_RasterView", "Assembly_handbook") + view.Assembly_handbook_RasterView = raster_view + if raster_view: + view.Visibility = False if prev_view is None: try: workbench.techDrawExtensions.setCurrentViewDirection(view) @@ -81,7 +91,11 @@ class AHB_New_Step: view.XSource = prev_view.XSource page.addView(view) - view.recompute() + + if raster_view: + view.purgeTouched() + else: + view.recompute() # search for views after the prev view to relink them after the new view (i.e. we insert the new view as an intermediate step) # TODO: re-number next steps if needed diff --git a/ahb_cmd_view_annotate.py b/ahb_cmd_view_annotate.py index 8af647f..19faf45 100644 --- a/ahb_cmd_view_annotate.py +++ b/ahb_cmd_view_annotate.py @@ -54,28 +54,29 @@ class AHB_View_Annotate: # Create a new balloon if needed if balloon is None: - partName = partLink.Name - - balloonName = partName + "_Balloon" - - balloon = doc.addObject("TechDraw::DrawViewBalloon", balloonName) - balloon.SourceView = overlay_view - - balloon.addProperty("App::PropertyXLink", "Assembly_handbook_Source", "Assembly_handbook") - balloon.Assembly_handbook_Source = (partLink, partLink.Name) - - balloon.addProperty("App::PropertyFloat", "Assembly_handbook_OriginOffsetX", "Assembly_handbook") - balloon.addProperty("App::PropertyFloat", "Assembly_handbook_OriginOffsetY", "Assembly_handbook") - - page.addView(balloon) - - workbench.techDrawExtensions.updateBalloon(balloon) - - balloon.X = int(balloon.OriginX) + 20 - balloon.Y = int(balloon.OriginY) + 20 - - if not workbench.techDrawExtensions.isNewPartInView(view, partLink): - balloon.ViewObject.Visibility = False + if workbench.techDrawExtensions.isNewPartInView(view, partLink): + partName = partLink.Name + + balloonName = partName + "_Balloon" + + balloon = doc.addObject("TechDraw::DrawViewBalloon", balloonName) + balloon.SourceView = overlay_view + + balloon.addProperty("App::PropertyXLink", "Assembly_handbook_Source", "Assembly_handbook") + balloon.Assembly_handbook_Source = (partLink, partLink.Name) + + balloon.addProperty("App::PropertyFloat", "Assembly_handbook_OriginOffsetX", "Assembly_handbook") + balloon.addProperty("App::PropertyFloat", "Assembly_handbook_OriginOffsetY", "Assembly_handbook") + + page.addView(balloon) + + workbench.techDrawExtensions.updateBalloon(balloon) + + balloon.X = int(balloon.OriginX) + 20 + balloon.Y = int(balloon.OriginY) + 20 + + if not workbench.techDrawExtensions.isNewPartInView(view, partLink): + balloon.ViewObject.Visibility = False else: workbench.techDrawExtensions.updateBalloon(balloon) diff --git a/ahb_raster_view.py b/ahb_raster_view.py index 30c0323..1792a91 100644 --- a/ahb_raster_view.py +++ b/ahb_raster_view.py @@ -183,7 +183,8 @@ class RasterView: self.image_view.Assembly_handbook_ViewVolumeHeight = viewVolume.getHeight() self.image_view.Assembly_handbook_ViewVolumeDepth = viewVolume.getDepth() - docView.saveImage(self.image_file_name, 4096, 4096, "#ffffff") + max_res = 4096 + docView.saveImage(self.image_file_name, int(min(max_res, viewVolume.getWidth() * view.Scale * 10)), int(min(max_res, viewVolume.getHeight() * view.Scale * 10)), "#ffffff") finally: for obj, props in objects_to_reset.items(): diff --git a/ahb_techdraw_extensions.py b/ahb_techdraw_extensions.py index e2423f5..eb93c92 100644 --- a/ahb_techdraw_extensions.py +++ b/ahb_techdraw_extensions.py @@ -150,7 +150,7 @@ class TechDrawExtensions: overlay_frame = App.ActiveDocument.addObject("Part::Part2DObjectPython", overlay_frame_name) Draft.Wire(overlay_frame) pos = raster_view.projectImageViewPointTo3D(App.Vector(0,0,0)) - pos2 = raster_view.projectImageViewPointTo3D(App.Vector(0,0.0001,1)) + pos2 = raster_view.projectImageViewPointTo3D(App.Vector(0.001,0.001,1)) overlay_frame.Points = [pos, pos2] Draft.ViewProviderWire(overlay_frame.ViewObject) overlay_frame.recompute() @@ -161,7 +161,7 @@ class TechDrawExtensions: overlay_frame2 = App.ActiveDocument.addObject("Part::Part2DObjectPython", overlay_frame2_name) Draft.Wire(overlay_frame2) pos = raster_view.projectImageViewPointTo3D(App.Vector(1,1,0)) - pos2 = raster_view.projectImageViewPointTo3D(App.Vector(1,1.0001,1)) + pos2 = raster_view.projectImageViewPointTo3D(App.Vector(1.001,1.001,1)) overlay_frame2.Points = [pos, pos2] Draft.ViewProviderWire(overlay_frame2.ViewObject) overlay_frame2.recompute() @@ -205,7 +205,6 @@ class TechDrawExtensions: balloon.ViewObject.Visibility = old_Visibility balloon.recompute() - page.KeepUpdated = True # once we have hidden the source view, there should be no performance issue overlay.recompute() page.recompute() else: