diff --git a/src/Mod/Arch/ArchComponent.py b/src/Mod/Arch/ArchComponent.py index d0adea4a47..4ae43b4849 100644 --- a/src/Mod/Arch/ArchComponent.py +++ b/src/Mod/Arch/ArchComponent.py @@ -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): diff --git a/src/Mod/Arch/ArchSectionPlane.py b/src/Mod/Arch/ArchSectionPlane.py index a71f125aac..28d24e0998 100644 --- a/src/Mod/Arch/ArchSectionPlane.py +++ b/src/Mod/Arch/ArchSectionPlane.py @@ -258,6 +258,7 @@ def getSVG(section,allOn=False,renderMode="Wireframe",showHidden=False,showFill= if not techdraw: svg += '' # 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: diff --git a/src/Mod/Arch/ArchWindow.py b/src/Mod/Arch/ArchWindow.py index 2d2faca5ef..e19b8f3cda 100644 --- a/src/Mod/Arch/ArchWindow.py +++ b/src/Mod/Arch/ArchWindow.py @@ -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): diff --git a/src/Mod/Arch/importIFC.py b/src/Mod/Arch/importIFC.py index e36882d222..f26ad941d7 100644 --- a/src/Mod/Arch/importIFC.py +++ b/src/Mod/Arch/importIFC.py @@ -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)