Arch: misc minor bugfixes

This commit is contained in:
Yorik van Havre
2017-03-08 15:55:07 -03:00
parent 002597b585
commit 94faa9dd2b
4 changed files with 24 additions and 16 deletions

View File

@@ -678,15 +678,17 @@ class ViewProviderComponent:
if obj.Base:
if obj.Base.isDerivedFrom("Part::Compound"):
if obj.ViewObject.DiffuseColor != obj.Base.ViewObject.DiffuseColor:
obj.ViewObject.DiffuseColor = obj.Base.ViewObject.DiffuseColor
obj.ViewObject.update()
self.onChanged(obj.ViewObject,"ShapeColor")
if len(obj.Base.ViewObject.DiffuseColor) > 1:
obj.ViewObject.DiffuseColor = obj.Base.ViewObject.DiffuseColor
obj.ViewObject.update()
#self.onChanged(obj.ViewObject,"ShapeColor")
elif prop == "CloneOf":
if obj.CloneOf and not(obj.BaseMaterial):
if obj.ViewObject.DiffuseColor != obj.CloneOf.ViewObject.DiffuseColor:
if len(obj.CloneOf.ViewObject.DiffuseColor) > 1:
obj.ViewObject.DiffuseColor = obj.CloneOf.ViewObject.DiffuseColor
obj.ViewObject.update()
self.onChanged(obj.ViewObject,"ShapeColor")
#self.onChanged(obj.ViewObject,"ShapeColor")
return
def getIcon(self):

View File

@@ -258,6 +258,7 @@ def getSVG(section,allOn=False,renderMode="Wireframe",showHidden=False,showFill=
if not techdraw:
svg += '</g>'
# add additional edge symbols from windows
cutwindows = []
if cutface and windows:
cutwindows = [w.Name for w in windows if w.Shape.BoundBox.intersect(cutface.BoundBox)]
if windows:

View File

@@ -999,10 +999,12 @@ class _ViewProviderWindow(ArchComponent.ViewProviderComponent):
def onChanged(self,vobj,prop):
if (prop == "DiffuseColor") and vobj.Object:
if len(vobj.DiffuseColor) < 2:
if vobj.Object.Shape:
if not vobj.Object.Shape.isNull():
self.colorize(vobj.Object)
if vobj.Object.Base:
if not vobj.Object.Base.Shape.Solids:
if len(vobj.DiffuseColor) < 2:
if vobj.Object.Shape:
if not vobj.Object.Shape.isNull():
self.colorize(vobj.Object)
ArchComponent.ViewProviderComponent.onChanged(self,vobj,prop)
def setEdit(self,vobj,mode):

View File

@@ -1750,14 +1750,17 @@ def getRepresentation(ifcfile,context,obj,forcebrep=False,subtraction=False,tess
for wire in fcface.Wires:
if wire.hashCode() != fcface.OuterWire.hashCode():
verts = [v.Point for v in wire.OrderedVertexes]
v1 = verts[0].sub(c)
v2 = verts[1].sub(c)
if DraftVecUtils.angle(v2,v1,DraftVecUtils.neg(n)) >= 0:
verts.reverse()
pts = [ifcfile.createIfcCartesianPoint(tuple(v)) for v in verts]
loop = ifcfile.createIfcPolyLoop(pts)
bound = ifcfile.createIfcFaceBound(loop,True)
loops.append(bound)
if len(verts) > 1:
v1 = verts[0].sub(c)
v2 = verts[1].sub(c)
if DraftVecUtils.angle(v2,v1,DraftVecUtils.neg(n)) >= 0:
verts.reverse()
pts = [ifcfile.createIfcCartesianPoint(tuple(v)) for v in verts]
loop = ifcfile.createIfcPolyLoop(pts)
bound = ifcfile.createIfcFaceBound(loop,True)
loops.append(bound)
else:
print ("Warning: wire with one/no vertex in ",obj.Label)
face = ifcfile.createIfcFace(loops)
faces.append(face)