assembly: reduce auto recompute transaction
This commit is contained in:
parent
c1be4f263c
commit
c6fa2c0931
13
assembly.py
13
assembly.py
|
@ -2310,6 +2310,7 @@ BuildShapeNames = (BuildShapeNone,BuildShapeCompound,
|
||||||
|
|
||||||
class Assembly(AsmGroup):
|
class Assembly(AsmGroup):
|
||||||
_Timer = QtCore.QTimer()
|
_Timer = QtCore.QTimer()
|
||||||
|
_TransID = 0
|
||||||
_PartMap = {} # maps part to assembly
|
_PartMap = {} # maps part to assembly
|
||||||
_PartArrayMap = {} # maps array part to assembly
|
_PartArrayMap = {} # maps array part to assembly
|
||||||
_ScheduleTimer = QtCore.QTimer()
|
_ScheduleTimer = QtCore.QTimer()
|
||||||
|
@ -2420,6 +2421,7 @@ class Assembly(AsmGroup):
|
||||||
if not cls._Timer.isSingleShot():
|
if not cls._Timer.isSingleShot():
|
||||||
cls._Timer.setSingleShot(True)
|
cls._Timer.setSingleShot(True)
|
||||||
cls._Timer.timeout.connect(Assembly.onSolverTimer)
|
cls._Timer.timeout.connect(Assembly.onSolverTimer)
|
||||||
|
cls._TransID = FreeCAD.getActiveTransaction()
|
||||||
logger.debug('auto solve scheduled on change of {}.{}'.format(
|
logger.debug('auto solve scheduled on change of {}.{}'.format(
|
||||||
objName(obj),prop),frame=1)
|
objName(obj),prop),frame=1)
|
||||||
cls._Timer.start(300)
|
cls._Timer.start(300)
|
||||||
|
@ -2434,12 +2436,17 @@ class Assembly(AsmGroup):
|
||||||
if not cls.canAutoSolve():
|
if not cls.canAutoSolve():
|
||||||
return
|
return
|
||||||
from . import solver
|
from . import solver
|
||||||
FreeCAD.setActiveTransaction('Assembly auto recompute')
|
trans = cls._TransID and cls._TransID==FreeCAD.getActiveTransaction()
|
||||||
|
if not trans:
|
||||||
|
cls._TransID = 0
|
||||||
|
FreeCAD.setActiveTransaction('Assembly auto recompute')
|
||||||
if not logger.catch('solver exception when auto recompute',
|
if not logger.catch('solver exception when auto recompute',
|
||||||
solver.solve, FreeCAD.ActiveDocument.Objects, True):
|
solver.solve, FreeCAD.ActiveDocument.Objects, True):
|
||||||
FreeCAD.closeActiveTransaction(True)
|
if not trans:
|
||||||
|
FreeCAD.closeActiveTransaction(True)
|
||||||
else:
|
else:
|
||||||
FreeCAD.closeActiveTransaction()
|
if not trans:
|
||||||
|
FreeCAD.closeActiveTransaction()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def scheduleDelete(cls,doc,names):
|
def scheduleDelete(cls,doc,names):
|
||||||
|
|
2
slvs
2
slvs
|
@ -1 +1 @@
|
||||||
Subproject commit 5794991d662c8b4321b20ac7fd289cfe06f3ad42
|
Subproject commit 8b66606ef0d30e3dc9038fa79bc8f1d46f96fed5
|
Loading…
Reference in New Issue
Block a user