From f0025568033c25392c669294e33ab93906a50519 Mon Sep 17 00:00:00 2001 From: Roy-043 <70520633+Roy-043@users.noreply.github.com> Date: Tue, 5 Oct 2021 15:56:22 +0200 Subject: [PATCH 1/7] Update Draft.py --- src/Mod/Draft/Draft.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Mod/Draft/Draft.py b/src/Mod/Draft/Draft.py index 5287778e8e..7dcef93c70 100644 --- a/src/Mod/Draft/Draft.py +++ b/src/Mod/Draft/Draft.py @@ -422,8 +422,8 @@ if App.GuiUp: from draftviewproviders.view_text import (ViewProviderText, ViewProviderDraftText) -from draftobjects.hatch import (Draft_Hatch_Object) -from draftmake.make_hatch import (make_hatch, makeHatch) +from draftobjects.hatch import (Hatch) +from draftmake.make_hatch import (make_hatch) if App.GuiUp: from draftviewproviders.view_hatch import (Draft_Hatch_ViewProvider) From 470f9307f1346c3e32bd5802c5da5c2bd1d21366 Mon Sep 17 00:00:00 2001 From: Roy-043 <70520633+Roy-043@users.noreply.github.com> Date: Tue, 5 Oct 2021 15:57:00 +0200 Subject: [PATCH 2/7] Update hatch.py --- src/Mod/Draft/draftobjects/hatch.py | 45 +++++++++++++++-------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/src/Mod/Draft/draftobjects/hatch.py b/src/Mod/Draft/draftobjects/hatch.py index 3e3eb3a8c3..aed15db243 100644 --- a/src/Mod/Draft/draftobjects/hatch.py +++ b/src/Mod/Draft/draftobjects/hatch.py @@ -30,7 +30,7 @@ from draftutils.translate import translate, QT_TRANSLATE_NOOP -class Draft_Hatch_Object: +class Hatch: def __init__(self,obj): @@ -41,12 +41,6 @@ class Draft_Hatch_Object: def setProperties(self,obj): pl = obj.PropertiesList - if not "Placement" in pl: - obj.addProperty("App::PropertyPlacement","Placement","Hatch", - QT_TRANSLATE_NOOP("App::Property","The placement of this object")) - if not "Shape" in pl: - obj.addProperty("Part::PropertyPartShape","Shape","Hatch", - QT_TRANSLATE_NOOP("App::Property","The shape of this object")) if not "Base" in pl: obj.addProperty("App::PropertyLink","Base","Hatch", QT_TRANSLATE_NOOP("App::Property","The base object used by this object")) @@ -103,23 +97,30 @@ class Draft_Hatch_Object: pla = obj.Placement shapes = [] for face in obj.Base.Shape.Faces: - face = face.copy() - if obj.Translate: - bpoint = face.CenterOfMass - norm = face.normalAt(0,0) - fpla = FreeCAD.Placement(bpoint,FreeCAD.Rotation(FreeCAD.Vector(0,0,1),norm)) - face.Placement = face.Placement.multiply(fpla.inverse()) - if obj.Rotation: - face.rotate(FreeCAD.Vector(),FreeCAD.Vector(0,0,1),obj.Rotation) - shape = TechDraw.makeGeomHatch(face,obj.Scale,obj.Pattern,obj.File) - if obj.Rotation: - shape.rotate(FreeCAD.Vector(),FreeCAD.Vector(0,0,1),-obj.Rotation) - if obj.Translate: - shape.Placement = shape.Placement.multiply(fpla) - shapes.append(shape) + if face.findPlane(): # Only planar faces. + face = face.copy() + if obj.Translate: + e = face.Edges[0] # Todo: check for almost zero-length edge. + sta = e.firstVertex().Point + end = e.lastVertex().Point + u = end.sub(sta).normalize() + w = face.normalAt(0, 0) + v = w.cross(u) + m = FreeCAD.Matrix(u.x, v.x, w.x, sta.x, + u.y, v.y, w.y, sta.y, + u.z, v.z, w.z, sta.z, + 0.0, 0.0, 0.0, 1.0) + face = face.transformGeometry(m.inverse()).Faces[0] + if obj.Rotation.Value: + face.rotate(FreeCAD.Vector(), FreeCAD.Vector(0,0,1), -obj.Rotation) + shape = TechDraw.makeGeomHatch(face, obj.Scale, obj.Pattern, obj.File) + if obj.Rotation.Value: + shape.rotate(FreeCAD.Vector(), FreeCAD.Vector(0,0,1), obj.Rotation) + if obj.Translate: + shape = shape.transformGeometry(m) + shapes.append(shape) if shapes: obj.Shape = Part.makeCompound(shapes) - obj.Placement = pla def getPatterns(self,filename): From 1f2a95f990de76350635df18735fa0c14b966fd6 Mon Sep 17 00:00:00 2001 From: Roy-043 <70520633+Roy-043@users.noreply.github.com> Date: Tue, 5 Oct 2021 15:58:09 +0200 Subject: [PATCH 3/7] Update gui_hatch.py --- src/Mod/Draft/draftguitools/gui_hatch.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Mod/Draft/draftguitools/gui_hatch.py b/src/Mod/Draft/draftguitools/gui_hatch.py index a853188a47..2f7f2a27a5 100644 --- a/src/Mod/Draft/draftguitools/gui_hatch.py +++ b/src/Mod/Draft/draftguitools/gui_hatch.py @@ -25,10 +25,11 @@ import os import FreeCAD +import draftguitools.gui_base as gui_base + from draftutils.translate import translate, QT_TRANSLATE_NOOP - -class Draft_Hatch: +class Draft_Hatch(gui_base.GuiCommandSimplest): def GetResources(self): @@ -36,7 +37,7 @@ class Draft_Hatch: return {'Pixmap' : "Draft_Hatch", 'MenuText': QT_TRANSLATE_NOOP("Draft_Hatch", "Hatch"), 'Accel': "H, A", - 'ToolTip' : QT_TRANSLATE_NOOP("Draft_Hatch", "Create hatches on selected faces")} + 'ToolTip' : QT_TRANSLATE_NOOP("Draft_Hatch", "Creates hatches on the faces of a selected object")} def Activated(self): @@ -89,7 +90,7 @@ class Draft_Hatch_TaskPanel: # create new hatch object FreeCAD.ActiveDocument.openTransaction("Create Hatch") FreeCADGui.addModule("Draft") - cmd = "Draft.makeHatch(" + cmd = "Draft.make_hatch(" cmd += "baseobject=FreeCAD.ActiveDocument.getObject(\""+self.baseobj.Name cmd += "\"),filename=\""+self.form.File.property("fileName") cmd += "\",pattern=\""+self.form.Pattern.currentText() From 30b784a59699c1c82f006413504226c4215421ad Mon Sep 17 00:00:00 2001 From: Roy-043 <70520633+Roy-043@users.noreply.github.com> Date: Tue, 5 Oct 2021 15:58:47 +0200 Subject: [PATCH 4/7] Update make_hatch.py --- src/Mod/Draft/draftmake/make_hatch.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/Mod/Draft/draftmake/make_hatch.py b/src/Mod/Draft/draftmake/make_hatch.py index 8f834f7767..fc3021e8ef 100644 --- a/src/Mod/Draft/draftmake/make_hatch.py +++ b/src/Mod/Draft/draftmake/make_hatch.py @@ -23,12 +23,12 @@ """This module contains FreeCAD commands for the Draft workbench""" import FreeCAD -from draftobjects.hatch import Draft_Hatch_Object +from draftobjects.hatch import Hatch from draftviewproviders.view_hatch import Draft_Hatch_ViewProvider -def makeHatch(baseobject, filename, pattern, scale, rotation): +def make_hatch(baseobject, filename, pattern, scale, rotation): - """makeHatch(baseobject, filename, pattern, scale, rotation): Creates and returns a + """make_hatch(baseobject, filename, pattern, scale, rotation): Creates and returns a hatch object made by applying the given pattern of the given PAT file to the faces of the given base object. Given scale and rotation factors are applied to the hatch object. The result is a Part-based object created in the active document.""" @@ -36,7 +36,7 @@ def makeHatch(baseobject, filename, pattern, scale, rotation): if not FreeCAD.ActiveDocument: return obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython", "Hatch") - Draft_Hatch_Object(obj) + Hatch(obj) obj.Base = baseobject obj.File = filename obj.Pattern = pattern @@ -44,5 +44,3 @@ def makeHatch(baseobject, filename, pattern, scale, rotation): obj.Rotation = rotation if FreeCAD.GuiUp: Draft_Hatch_ViewProvider(obj.ViewObject) - -make_hatch = makeHatch From 48761f4e7da714fd701424955d0069c6d7c47045 Mon Sep 17 00:00:00 2001 From: Roy-043 <70520633+Roy-043@users.noreply.github.com> Date: Thu, 7 Oct 2021 15:07:12 +0200 Subject: [PATCH 5/7] Draft_Hatch_ViewProvider -> ViewProviderDraftHatch --- src/Mod/Draft/Draft.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mod/Draft/Draft.py b/src/Mod/Draft/Draft.py index 7dcef93c70..992fb7c418 100644 --- a/src/Mod/Draft/Draft.py +++ b/src/Mod/Draft/Draft.py @@ -425,6 +425,6 @@ if App.GuiUp: from draftobjects.hatch import (Hatch) from draftmake.make_hatch import (make_hatch) if App.GuiUp: - from draftviewproviders.view_hatch import (Draft_Hatch_ViewProvider) + from draftviewproviders.view_hatch import (ViewProviderDraftHatch) ## @} From 059b3d46aa2620715dde4f33f1777706d6200189 Mon Sep 17 00:00:00 2001 From: Roy-043 <70520633+Roy-043@users.noreply.github.com> Date: Thu, 7 Oct 2021 15:08:06 +0200 Subject: [PATCH 6/7] Draft_Hatch_ViewProvider -> ViewProviderDraftHatch --- src/Mod/Draft/draftmake/make_hatch.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Mod/Draft/draftmake/make_hatch.py b/src/Mod/Draft/draftmake/make_hatch.py index fc3021e8ef..004082dd4a 100644 --- a/src/Mod/Draft/draftmake/make_hatch.py +++ b/src/Mod/Draft/draftmake/make_hatch.py @@ -24,7 +24,7 @@ import FreeCAD from draftobjects.hatch import Hatch -from draftviewproviders.view_hatch import Draft_Hatch_ViewProvider +from draftviewproviders.view_hatch import ViewProviderDraftHatch def make_hatch(baseobject, filename, pattern, scale, rotation): @@ -43,4 +43,4 @@ def make_hatch(baseobject, filename, pattern, scale, rotation): obj.Scale = scale obj.Rotation = rotation if FreeCAD.GuiUp: - Draft_Hatch_ViewProvider(obj.ViewObject) + ViewProviderDraftHatch(obj.ViewObject) From b6ec36fc3f10323dfd21da9dd86c43cfd99ff8f3 Mon Sep 17 00:00:00 2001 From: Roy-043 <70520633+Roy-043@users.noreply.github.com> Date: Thu, 7 Oct 2021 15:08:53 +0200 Subject: [PATCH 7/7] Draft_Hatch_ViewProvider -> ViewProviderDraftHatch --- src/Mod/Draft/draftviewproviders/view_hatch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mod/Draft/draftviewproviders/view_hatch.py b/src/Mod/Draft/draftviewproviders/view_hatch.py index 374cc06f3d..aa002cea04 100644 --- a/src/Mod/Draft/draftviewproviders/view_hatch.py +++ b/src/Mod/Draft/draftviewproviders/view_hatch.py @@ -27,7 +27,7 @@ import os import FreeCAD from draftguitools.gui_hatch import Draft_Hatch_TaskPanel -class Draft_Hatch_ViewProvider: +class ViewProviderDraftHatch: def __init__(self,vobj):