Hi @mcd8604 .
I gave it a try.
In order to reproduce the phenomenon, I made a sample like this.
# Fusion360API Python script
import traceback
import adsk.cam
import adsk.fusion
import adsk.core
def run(context):
ui: adsk.core.UserInterface = None
try:
app: adsk.core.Application = adsk.core.Application.get()
ui = app.userInterface
app.documents.add(adsk.core.DocumentTypes.FusionDesignDocumentType)
des: adsk.fusion.Design = app.activeProduct
des.designType = adsk.fusion.DesignTypes.ParametricDesignType
root: adsk.fusion.Component = des.rootComponent
# Create Temporary Box
tmpBox: adsk.fusion.BRepBody = initTempBox()
# Create CustomGraphics Box
cgGroup: adsk.fusion.CustomGraphicsGroup = root.customGraphicsGroups.add()
cgGroup.addBRepBody(tmpBox)
app.activeViewport.refresh()
ui.messageBox('Create CustomGraphics Box')
# Delete CustomGraphics Box
cgGroup.deleteMe()
ui.messageBox('Delete CustomGraphics Box')
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
def initTempBox():
bBox: adsk.core.OrientedBoundingBox3D = adsk.core.OrientedBoundingBox3D.create(
adsk.core.Point3D.create(0.0, 10.0, 0.0),
adsk.core.Vector3D.create(1.0, 0.0, 0.0),
adsk.core.Vector3D.create(0.0, 1.0, 0.0),
5.0,
6.0,
2.0
)
tmpMgr: adsk.fusion.TemporaryBRepManager = adsk.fusion.TemporaryBRepManager.get()
return tmpMgr.createBox(bBox)
It's not a very good method, but it's what I know how to do to create and abort a transaction.
https://github.com/kantoku-code/Fusion360_Small_Tools_for_Developers/blob/master/TextCommands/TextCo...
def run(context):
ui: adsk.core.UserInterface = None
try:
app: adsk.core.Application = adsk.core.Application.get()
ui = app.userInterface
app.documents.add(adsk.core.DocumentTypes.FusionDesignDocumentType)
des: adsk.fusion.Design = app.activeProduct
des.designType = adsk.fusion.DesignTypes.ParametricDesignType
root: adsk.fusion.Component = des.rootComponent
# Create Temporary Box
tmpBox: adsk.fusion.BRepBody = initTempBox()
# Transaction Start
transactionName = 'hoge'
app.executeTextCommand(u'Transaction.Start {}'.format(transactionName))
# Create CustomGraphics Box
cgGroup: adsk.fusion.CustomGraphicsGroup = root.customGraphicsGroups.add()
cgGroup.addBRepBody(tmpBox)
app.activeViewport.refresh()
ui.messageBox('Create CustomGraphics Box')
# Transaction Abort
app.executeTextCommand(u'Transaction.Abort')
ui.messageBox('Transaction Abort')
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
I think you need to make sure that no other process is involved, because it aborts everything between "Start" and "Abort".