From 6a13be395fac46570ab9dc67d8567f86c15d29d2 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 2196179cb15e498e2cd9ecf52e9dfcd1ec71baf3 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 812a0e787a3c8ac8a3c4cc744a28932a396a5dc8 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 5dd472aea0e1ea1f3bbd082070b4a91b6204f605 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 f10a6de031f27a98227a743de6de9b8e86740d7c 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 9b634a2a7540bbbc7409841c0091925b3f787614 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 b537a2351d617f09b8ee83bdae9dee3451309727 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):