assembly: support dropObjectEx API changes
This commit is contained in:
parent
80bceefcc6
commit
508fcd7713
88
assembly.py
88
assembly.py
|
@ -183,7 +183,7 @@ class ViewProviderAsmPartGroup(ViewProviderAsmGroup):
|
||||||
def onDelete(self,_obj,_subs):
|
def onDelete(self,_obj,_subs):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def canDropObjectEx(self,obj,_owner,_subname):
|
def canDropObjectEx(self,obj,_owner,_subname,_elements):
|
||||||
return isTypeOf(obj,Assembly, True) or not isTypeOf(obj,AsmBase)
|
return isTypeOf(obj,Assembly, True) or not isTypeOf(obj,AsmBase)
|
||||||
|
|
||||||
def canDragObject(self,_obj):
|
def canDragObject(self,_obj):
|
||||||
|
@ -521,15 +521,18 @@ class ViewProviderAsmElement(ViewProviderAsmOnTop):
|
||||||
def getDefaultColor(self):
|
def getDefaultColor(self):
|
||||||
return (60.0/255.0,1.0,1.0)
|
return (60.0/255.0,1.0,1.0)
|
||||||
|
|
||||||
def canDropObjectEx(self,_obj,owner,subname):
|
def canDropObjectEx(self,_obj,owner,_subname,elements):
|
||||||
if not subname:
|
if not elements:
|
||||||
return False
|
return False
|
||||||
proxy = self.ViewObject.Object.Proxy
|
proxy = self.ViewObject.Object.Proxy
|
||||||
return proxy.getAssembly().getPartGroup()==owner
|
return proxy.getAssembly().getPartGroup()==owner
|
||||||
|
|
||||||
def dropObjectEx(self,vobj,_obj,owner,subname):
|
def dropObjectEx(self,vobj,_obj,owner,subname,elements):
|
||||||
|
if not elements:
|
||||||
|
return
|
||||||
|
for element in elements:
|
||||||
AsmElement.make(AsmElement.Selection(Element=vobj.Object,
|
AsmElement.make(AsmElement.Selection(Element=vobj.Object,
|
||||||
Group=owner, Subname=subname),undo=True)
|
Group=owner, Subname=subname+element),undo=True)
|
||||||
|
|
||||||
|
|
||||||
class AsmElementSketch(AsmElement):
|
class AsmElementSketch(AsmElement):
|
||||||
|
@ -907,16 +910,22 @@ class ViewProviderAsmElementLink(ViewProviderAsmOnTop):
|
||||||
from . import mover
|
from . import mover
|
||||||
return mover.movePart()
|
return mover.movePart()
|
||||||
|
|
||||||
def canDropObjectEx(self,_obj,owner,subname):
|
def canDropObjectEx(self,_obj,owner,subname,elements):
|
||||||
if logger.catchTrace('Cannot drop to AsmLink {}'.format(
|
if not elements:
|
||||||
objName(self.ViewObject.Object)),
|
elements = ['']
|
||||||
self.ViewObject.Object.Proxy.setLink,
|
obj = self.ViewObject.Object
|
||||||
owner, subname, True):
|
msg = 'Cannot drop to AsmLink {}'.format(objName(obj))
|
||||||
return True
|
for element in elements:
|
||||||
|
if not logger.catchTrace(msg, obj.Proxy.setLink,
|
||||||
|
owner,subname+element,True):
|
||||||
return False
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
def dropObjectEx(self,vobj,_obj,owner,subname):
|
def dropObjectEx(self,vobj,_obj,owner,subname,elements):
|
||||||
vobj.Object.Proxy.setLink(owner,subname)
|
if not elements:
|
||||||
|
elements = ['']
|
||||||
|
for element in elements:
|
||||||
|
vobj.Object.Proxy.setLink(owner,subname+element)
|
||||||
|
|
||||||
|
|
||||||
class AsmConstraint(AsmGroup):
|
class AsmConstraint(AsmGroup):
|
||||||
|
@ -1161,7 +1170,7 @@ class ViewProviderAsmConstraint(ViewProviderAsmGroup):
|
||||||
def getIcon(self):
|
def getIcon(self):
|
||||||
return Constraint.getIcon(self.ViewObject.Object)
|
return Constraint.getIcon(self.ViewObject.Object)
|
||||||
|
|
||||||
def _getSelection(self,owner,subname):
|
def _getSelection(self,owner,subname,elements):
|
||||||
if not owner:
|
if not owner:
|
||||||
raise RuntimeError('no owner')
|
raise RuntimeError('no owner')
|
||||||
parent = getattr(owner.Proxy,'parent',None)
|
parent = getattr(owner.Proxy,'parent',None)
|
||||||
|
@ -1177,19 +1186,24 @@ class ViewProviderAsmConstraint(ViewProviderAsmGroup):
|
||||||
subname = owner.Name + '.' + subname
|
subname = owner.Name + '.' + subname
|
||||||
obj = self.ViewObject.Object
|
obj = self.ViewObject.Object
|
||||||
mysub = parent.getConstraintGroup().Name + '.' + obj.Name + '.'
|
mysub = parent.getConstraintGroup().Name + '.' + obj.Name + '.'
|
||||||
sel = [Selection(Object=parent.Object,SubElementNames=[subname,mysub])]
|
sel = []
|
||||||
|
if not elements:
|
||||||
|
elements = ['']
|
||||||
|
elements = [subname+element for element in elements]
|
||||||
|
elements.append(mysub)
|
||||||
|
sel = [Selection(Object=parent.Object,SubElementNames=elements)]
|
||||||
typeid = Constraint.getTypeID(obj)
|
typeid = Constraint.getTypeID(obj)
|
||||||
return AsmConstraint.getSelection(typeid,sel)
|
return AsmConstraint.getSelection(typeid,sel)
|
||||||
|
|
||||||
def canDropObjectEx(self,_obj,owner,subname):
|
def canDropObjectEx(self,_obj,owner,subname,elements):
|
||||||
cstr = self.ViewObject.Object
|
cstr = self.ViewObject.Object
|
||||||
if logger.catchTrace('Cannot drop to AsmConstraint {}'.format(cstr),
|
if logger.catchTrace('Cannot drop to AsmConstraint '
|
||||||
self._getSelection,owner,subname):
|
'{}'.format(cstr),self._getSelection,owner,subname,elements):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def dropObjectEx(self,_vobj,_obj,owner,subname):
|
def dropObjectEx(self,_vobj,_obj,owner,subname,elements):
|
||||||
sel = self._getSelection(owner,subname)
|
sel = self._getSelection(owner,subname,elements)
|
||||||
cstr = self.ViewObject.Object
|
cstr = self.ViewObject.Object
|
||||||
typeid = Constraint.getTypeID(cstr)
|
typeid = Constraint.getTypeID(cstr)
|
||||||
sel = AsmConstraint.Selection(SelObject=None,
|
sel = AsmConstraint.Selection(SelObject=None,
|
||||||
|
@ -1282,26 +1296,28 @@ class ViewProviderAsmElementGroup(ViewProviderAsmGroup):
|
||||||
def onDelete(self,_obj,_subs):
|
def onDelete(self,_obj,_subs):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def canDropObjectEx(self,_obj,owner,subname):
|
def canDropObjectEx(self,_obj,owner,_subname,elements):
|
||||||
if not owner or not subname:
|
if not owner or not elements:
|
||||||
return False
|
return False
|
||||||
proxy = self.ViewObject.Object.Proxy
|
proxy = self.ViewObject.Object.Proxy
|
||||||
return proxy.getAssembly().getPartGroup()==owner
|
return proxy.getAssembly().getPartGroup()==owner
|
||||||
|
|
||||||
def dropObjectEx(self,vobj,_obj,owner,subname):
|
def dropObjectEx(self,vobj,_obj,owner,subname,elements):
|
||||||
element = AsmElement.make(AsmElement.Selection(
|
|
||||||
Element=None, Group=owner, Subname=subname))
|
|
||||||
if not element:
|
|
||||||
return
|
|
||||||
sels = FreeCADGui.Selection.getSelectionEx('*',False)
|
sels = FreeCADGui.Selection.getSelectionEx('*',False)
|
||||||
if len(sels)!=1 or len(sels[0].SubElementNames)!=1:
|
if len(sels)==1 and \
|
||||||
return
|
len(sels[0].SubElementNames)==1 and \
|
||||||
|
sels[0].Object.getSubObject(
|
||||||
|
sels[0].SubElementNames[0],1)==vobj.Object:
|
||||||
sel = sels[0]
|
sel = sels[0]
|
||||||
if sel.Object.getSubObject(sel.SubElementNames[0],1)==vobj.Object:
|
else:
|
||||||
|
sel = None
|
||||||
FreeCADGui.Selection.clearSelection()
|
FreeCADGui.Selection.clearSelection()
|
||||||
|
for element in elements:
|
||||||
|
obj = AsmElement.make(AsmElement.Selection(
|
||||||
|
Element=None, Group=owner, Subname=subname+element))
|
||||||
|
if obj and sel:
|
||||||
FreeCADGui.Selection.addSelection(sel.Object,
|
FreeCADGui.Selection.addSelection(sel.Object,
|
||||||
sel.SubElementNames[0]+element.Name+'.')
|
sel.SubElementNames[0]+obj.Name+'.')
|
||||||
FreeCADGui.runCommand('Std_TreeSelection')
|
|
||||||
|
|
||||||
|
|
||||||
BuildShapeNone = 'None'
|
BuildShapeNone = 'None'
|
||||||
|
@ -1706,11 +1722,11 @@ class ViewProviderAssembly(ViewProviderAsmGroup):
|
||||||
return
|
return
|
||||||
me = self.ViewObject.Object
|
me = self.ViewObject.Object
|
||||||
partGroup = me.Proxy.getPartGroup().ViewObject
|
partGroup = me.Proxy.getPartGroup().ViewObject
|
||||||
if sub == me.Name:
|
if sub[0] == me.Name:
|
||||||
return partGroup,partGroup,subname[len[sub]+1:]
|
return partGroup,partGroup,subname[len(sub[0])+1:]
|
||||||
return partGroup,owner,subname
|
return partGroup,owner,subname
|
||||||
|
|
||||||
def canDropObjectEx(self,obj,owner,subname):
|
def canDropObjectEx(self,obj,owner,subname,_elements):
|
||||||
info = self._convertSubname(owner,subname)
|
info = self._convertSubname(owner,subname)
|
||||||
if not info:
|
if not info:
|
||||||
return False
|
return False
|
||||||
|
@ -1720,7 +1736,7 @@ class ViewProviderAssembly(ViewProviderAsmGroup):
|
||||||
def canDragAndDropObject(self,_obj):
|
def canDragAndDropObject(self,_obj):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def dropObjectEx(self,_vobj,obj,owner,subname):
|
def dropObjectEx(self,_vobj,obj,owner,subname,_elements):
|
||||||
info = self._convertSubname(owner,subname)
|
info = self._convertSubname(owner,subname)
|
||||||
if not info:
|
if not info:
|
||||||
return False
|
return False
|
||||||
|
|
Loading…
Reference in New Issue
Block a user