assembly: show axis for element with infinite shape

This commit is contained in:
Zheng, Lei 2019-05-09 20:09:20 +08:00
parent c99784e225
commit 134889c69c
2 changed files with 12 additions and 7 deletions

View File

@ -1004,19 +1004,17 @@ class ViewProviderAsmElement(ViewProviderAsmOnTop):
return return
if prop == 'Detach': if prop == 'Detach':
vobj.signalChangeIcon() vobj.signalChangeIcon()
elif prop in ('Placement','Shape','LinkedObject'): elif prop in ('Placement','Shape'):
self.setupAxis() self.setupAxis()
_AxisGroup = None _AxisGroup = None
_Axis = None _Axis = None
_AxisMap = {'X':0,'Y':1,'Z':2} _AxisMap = {'X':0,'Y':1,'Z':2}
def isCSVisible(self): def showCS(self):
if self.ViewObject.ShowCS or gui.AsmCmdManager.ShowElementCS: if self.ViewObject.ShowCS or gui.AsmCmdManager.ShowElementCS:
return True return True
obj = self.ViewObject.Object.getLinkedObject(True) return utils.isInfinite(self.ViewObject.Object.Shape)
return obj and \
obj.isDerivedFrom('PartDesign::ViewProviderDatumCoordinateSystem')
def getElementPicked(self,pp): def getElementPicked(self,pp):
vobj = self.ViewObject vobj = self.ViewObject
@ -1103,7 +1101,7 @@ class ViewProviderAsmElement(ViewProviderAsmOnTop):
def setupAxis(self): def setupAxis(self):
vobj = self.ViewObject vobj = self.ViewObject
switch = getattr(self,'axisNode',None) switch = getattr(self,'axisNode',None)
if not self.isCSVisible(): if not self.showCS():
if switch: if switch:
switch.whichChild = -1 switch.whichChild = -1
return return
@ -1115,7 +1113,7 @@ class ViewProviderAsmElement(ViewProviderAsmOnTop):
switch.addChild(node) switch.addChild(node)
trans = coin.SoTransform() trans = coin.SoTransform()
node.addChild(trans) node.addChild(trans)
node.addChild(self.getAxis()) node.addChild(ViewProviderAsmElement.getAxis())
self.axisNode = switch self.axisNode = switch
self.transNode = trans self.transNode = trans
vobj.RootNode.addChild(switch) vobj.RootNode.addChild(switch)

View File

@ -80,6 +80,13 @@ def deduceSelectedElement(obj,subname):
if count==1: if count==1:
return 'Vertex1' return 'Vertex1'
def isInfinite(shape):
# A face without edge or an edge without vertex is considered infinite
if shape.countElement('Face'):
return shape.countElement('Edge')
else:
return shape.countElement('Vertex')
def getElementShape(obj,tp=None,transform=False,noElementMap=True): def getElementShape(obj,tp=None,transform=False,noElementMap=True):
if not isinstance(obj,(tuple,list)): if not isinstance(obj,(tuple,list)):
shape = obj shape = obj