Merge branch 'master' of github.com:FreeCAD/FreeCAD
This commit is contained in:
@@ -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):
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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
@@ -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>
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user