FreeCAD_assembly3/gui.py
2017-10-31 04:08:23 +08:00

68 lines
1.5 KiB
Python

from future.utils import with_metaclass
import FreeCAD, FreeCADGui
from asm3.utils import logger,objName,addIconToFCAD
from asm3.assembly import Assembly,AsmConstraint
from asm3.proxy import ProxyType
class AsmCmdType(ProxyType):
def register(cls):
super(AsmCmdType,cls).register()
if cls._id >= 0:
FreeCADGui.addCommand(cls.getName(),cls())
class AsmCmdBase(with_metaclass(AsmCmdType,object)):
_id = -1
_active = True
@classmethod
def getName(cls):
return 'asm3'+cls.__name__[3:]
@classmethod
def GetResources(cls):
return {
'Pixmap':addIconToFCAD(cls._iconName),
'MenuText':cls.getMenuText(),
'ToolTip':cls.getToolTip()
}
@classmethod
def getMenuText(cls):
return cls._menuText
@classmethod
def getToolTip(cls):
return getattr(cls,'_tooltip',cls.getMenuText())
@classmethod
def IsActive(cls):
if FreeCAD.ActiveDocument and cls._active:
return True
class AsmCmdNew(AsmCmdBase):
_id = 0
_menuText = 'Create a new assembly'
_iconName = 'Assembly_New_Assembly.svg'
def Activated(self):
Assembly.make()
class AsmCmdSolve(AsmCmdBase):
_id = 1
_menuText = 'Solve the constraints of assembly(s)'
_iconName = 'AssemblyWorkbench.svg'
def Activated(self):
import asm3.solver as solver
solver.solve()
class AsmCmdMove(AsmCmdBase):
_id = 2
_menuText = 'Move assembly'
_iconName = 'Assembly_Move.svg'
def Activated(self):
pass