From 12a2caeb4e3f543d10d31873397c97d605a6ac48 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 2 Apr 2024 19:28:10 +0200 Subject: [PATCH 1/3] Removed check for running solver only on coincident constraints, new behaviour wil run the solver every time after a line segment has been created. [BUG] CAD Sketcher shows horizontal and vertical constraints on slanting lines. #429 --- operators/add_line_2d.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/operators/add_line_2d.py b/operators/add_line_2d.py index eca58bee..3c3099c4 100644 --- a/operators/add_line_2d.py +++ b/operators/add_line_2d.py @@ -83,8 +83,7 @@ def fini(self, context: Context, succeede: bool): logger.debug("Add: {}".format(self.target)) if succeede: - if self.has_coincident(): - solve_system(context, sketch=self.sketch) + solve_system(context, sketch=self.sketch) register, unregister = register_stateops_factory((View3D_OT_slvs_add_line2d,)) From afb57505d856bc7ae5a4d16a3d86e811838045c4 Mon Sep 17 00:00:00 2001 From: Tim Date: Thu, 4 Apr 2024 02:20:47 +0200 Subject: [PATCH 2/3] Added class variable to check horizontal or vertical constraint. --- operators/add_line_2d.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/operators/add_line_2d.py b/operators/add_line_2d.py index 3c3099c4..1b039036 100644 --- a/operators/add_line_2d.py +++ b/operators/add_line_2d.py @@ -20,6 +20,9 @@ class View3D_OT_slvs_add_line2d(Operator, Operator2d): """Add a line to the active sketch""" + def __init__(self): + self.has_alignment = False + bl_idname = Operators.AddLine2D bl_label = "Add Solvespace 2D Line" bl_options = {"REGISTER", "UNDO"} @@ -54,6 +57,7 @@ def main(self, context: Context): self.target.construction = True # auto vertical/horizontal constraint + self.has_alignment = False constraints = context.scene.sketcher.constraints vec_dir = self.target.direction_vec() if vec_dir.length: @@ -62,8 +66,10 @@ def main(self, context: Context): threshold = 0.1 if angle < threshold or angle > HALF_TURN - threshold: constraints.add_horizontal(self.target, sketch=self.sketch) + self.has_alignment = True elif (QUARTER_TURN - threshold) < angle < (QUARTER_TURN + threshold): constraints.add_vertical(self.target, sketch=self.sketch) + self.has_alignment = True ignore_hover(self.target) return True @@ -83,7 +89,8 @@ def fini(self, context: Context, succeede: bool): logger.debug("Add: {}".format(self.target)) if succeede: - solve_system(context, sketch=self.sketch) + if self.has_coincident() or self.has_alignment: + solve_system(context, sketch=self.sketch) register, unregister = register_stateops_factory((View3D_OT_slvs_add_line2d,)) From 3b11452ae3c6d6abb37a6eb174b040ff6d5f2016 Mon Sep 17 00:00:00 2001 From: David Friedli Date: Mon, 8 Apr 2024 09:59:49 +0200 Subject: [PATCH 3/3] Remove __init__ definition in line_2d operator --- operators/add_line_2d.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/operators/add_line_2d.py b/operators/add_line_2d.py index 1b039036..7e6da86b 100644 --- a/operators/add_line_2d.py +++ b/operators/add_line_2d.py @@ -19,9 +19,6 @@ class View3D_OT_slvs_add_line2d(Operator, Operator2d): """Add a line to the active sketch""" - - def __init__(self): - self.has_alignment = False bl_idname = Operators.AddLine2D bl_label = "Add Solvespace 2D Line"