Merge branch 'master' of github.com:FreeCAD/FreeCAD

This commit is contained in:
Yorik van Havre
2020-07-23 14:16:47 +02:00
451 changed files with 14216 additions and 2330 deletions

View File

@@ -246,10 +246,10 @@ class _Axis:
obj.Shape = sh
obj.Placement = pl
#def onChanged(self,obj,prop):
def onChanged(self,obj,prop):
# if prop in ["Angles","Distances","Placement"]:
# self.execute(obj)
if prop in ["Angles","Distances","Placement"]:
obj.touch()
def __getstate__(self):

View File

@@ -1243,8 +1243,10 @@ class _Wall(ArchComponent.Component):
skPlacement = obj.Base.Placement # Get Sketch's placement to restore later
for i in skGeom:
if not i.Construction:
skGeomEdgesI = i.toShape()
skGeomEdges.append(skGeomEdgesI)
# support Line, Arc, Circle for Sketch as Base at the moment
if isinstance(i, (Part.LineSegment, Part.Circle, Part.ArcOfCircle)):
skGeomEdgesI = i.toShape()
skGeomEdges.append(skGeomEdgesI)
for cluster in Part.getSortedClusters(skGeomEdges):
clusterTransformed = []
for edge in cluster:
@@ -1262,11 +1264,23 @@ class _Wall(ArchComponent.Component):
normal = obj.Base.getGlobalPlacement().Rotation.multVec(FreeCAD.Vector(0,0,1))
else:
# self.basewires = obj.Base.Shape.Wires
self.basewires = []
for cluster in Part.getSortedClusters(obj.Base.Shape.Edges):
for c in Part.sortEdges(cluster):
self.basewires.append(Part.Wire(c))
self.basewires = obj.Base.Shape.Wires
# Found case that after sorting below, direction of
# edges sorted are not as 'expected' thus resulted in
# bug - e.g. a Dwire with edges/vertexes in clockwise
# order, 1st vertex is Forward as expected. After
# sorting below, edges sorted still in clockwise order
# - no problem, but 1st vertex of each edge become
# Reverse rather than Forward.
# See FC discussion -
# https://forum.freecadweb.org/viewtopic.php?f=23&t=48275&p=413745#p413745
#self.basewires = []
#for cluster in Part.getSortedClusters(obj.Base.Shape.Edges):
# for c in Part.sortEdges(cluster):
# self.basewires.append(Part.Wire(c))
# if not sketch, e.g. Dwire, can have wire which is 3d
# so not on the placement's working plane - below
# applied to Sketch not applicable here
@@ -1449,7 +1463,6 @@ class _Wall(ArchComponent.Component):
continue
sh.fix(0.1,0,1) # fixes self-intersecting wires
f = Part.Face(sh)
if baseface:

View File

@@ -60,7 +60,7 @@ WindowOpeningModes = ["None","Arc 90","Arc 90 inv","Arc 45","Arc 45 inv","Arc 18
WindowPresets = ArchWindowPresets.WindowPresets
def makeWindow(baseobj=None,width=None,height=None,parts=None,name="Window"):
def makeWindow(baseobj=None,width=None,height=None,parts=None,name=None):
'''makeWindow(baseobj,[width,height,parts,name]): creates a window based on the
given base 2D object (sketch or draft).'''
@@ -75,7 +75,10 @@ def makeWindow(baseobj=None,width=None,height=None,parts=None,name="Window"):
p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch")
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython","Window")
_Window(obj)
obj.Label = translate("Arch","Window")
if name:
obj.Label = name
else:
obj.Label = translate("Arch","Window")
if FreeCAD.GuiUp:
_ViewProviderWindow(obj.ViewObject)
#obj.ViewObject.Transparency=p.GetInt("WindowTransparency",85)
@@ -671,7 +674,8 @@ class _Window(ArchComponent.Component):
if proj.Length > 0:
#chord = p.sub(ev1.add(proj))
#p = v1.add(chord)
p = p.add(proj.negative())
p = p.sub(proj)
chord = p.sub(ev1)
# calculate symbols
v4 = p.add(DraftVecUtils.scale(enorm,0.5))
if omode == 1: # Arc 90

File diff suppressed because one or more lines are too long

View File

@@ -104,7 +104,7 @@ One object is the base object, the others are clones.</string>
<item>
<widget class="Gui::PrefSpinBox" name="spinBox">
<property name="toolTip">
<string>EXPERIMENTAL - The number of cores to use in multicore mode. Keep 0 to disable multicore mode, or 1 to use multicore mode in single-core mode (safer if you get crashes). Max value should be your number of cores - 1, ex: 3 if you have a quad-core CPU.</string>
<string>EXPERIMENTAL - The number of cores to use in multicore mode. Keep 0 to disable multicore mode, or 1 to use multicore mode in single-core mode (safer if you get crashes). Max value should be your number of cores subtracted by 1, ex: 3 if you have a quad-core CPU.</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>ifcMulticore</cstring>

View File

@@ -1273,7 +1273,7 @@ def insert(srcfile,docname,skip=[],only=[],root=None,preferences=None):
if preferences['DEBUG'] and layers: print("Creating layers...", end="")
# print(layers)
for layer_name, layer_objects in layers.items():
lay = Draft.makeLayer(layer_name)
lay = Draft.make_layer(layer_name)
lay_grp = []
for lobj_id in layer_objects:
if lobj_id in objects: