import adsk.core, adsk.drawing, traceback
def run(context):
ui = None
try:
app = adsk.core.Application.get()
ui = app.userInterface
# The active document must be a saved Fusion 360 design.
doc = app.activeDocument
if not doc:
ui.messageBox('No active document. Please open a Fusion 360 design and try again.')
return
designDataFile = doc.dataFile
if not designDataFile:
ui.messageBox('The active design must be saved to the cloud before a drawing can be created.\nPlease save the document and try again.')
return
# Get the application-level DrawingManager.
drawingMgr = adsk.drawing.DrawingManager.get()
if not drawingMgr:
ui.messageBox('Failed to get the DrawingManager.')
return
# Create the input and specify AutomaticDrawingCreationMode at construction time.
drawingInput = drawingMgr.createDrawingInput(
designDataFile,
adsk.drawing.DrawingCreationModes.AutomaticDrawingCreationMode
)
if not drawingInput:
ui.messageBox('Failed to create the drawing input.')
return
# ── CreateDrawingInput ────────────────────────────────────────────────
drawingInput.baseDocumentType = adsk.drawing.BaseDocumentTypes.FromScratchBaseDocumentType
drawingInput.standard = adsk.drawing.DrawingStandardTypes.ASMEDrawingStandardType
drawingInput.units = adsk.drawing.DrawingUnitTypes.InchDrawingUnitType
drawingInput.sheetSize = adsk.drawing.SheetSizes.BASMESheetSize
drawingInput.orientationType = adsk.drawing.SheetOrientationTypes.LandscapeSheetOrientationType
drawingInput.sheetCreationType = adsk.drawing.SheetCreationTypes.AllLevelsSheetCreationType
# ── AutomationPreferences ─────────────────────────────────────────────
autoPrefs = drawingInput.automationPreferences
# GlobalPreferences — sheet-generation toggles and auto-dimension master switch
gp = autoPrefs.globalPreferences
gp.omitComponentsWithKeywords = 'Bolt,Screw,Nut,Washer'
gp.isDetectAndOmitFasteners = True
gp.isMainAssemblySheetGenerated = True
gp.isSubAssemblySheetGenerated = True
gp.isAnimationSheetGenerated = False
gp.isComponentSheetGenerated = True
gp.isFoldedModelSheetGenerated = True
gp.isFlatPatternSheetGenerated = True
gp.isAutoDimensionEnabled = True
# AssemblyPreferences (main assembly)
mainAsm = autoPrefs.mainAssemblyPreferences
# AssemblySheetPreferences — ISO view sheet
mainAsm.isoViewSheetPreferences.isSheetCreated = True
mainAsm.isoViewSheetPreferences.isPartsListIncluded = True
mainAsm.isoViewSheetPreferences.partsListLocationType = adsk.drawing.TableLocationTypes.TopRightTableLocationType
# AssemblySheetPreferences — orthogonal view sheet
mainAsm.orthogonalViewSheetPreferences.isSheetCreated = True
mainAsm.orthogonalViewSheetPreferences.isPartsListIncluded = False
# AutoDimensionBasePreferences
mainAsm.autoDimensionPreferences.isAutoDimensionEnabled = True
mainAsm.autoDimensionPreferences.dimensionStrategyType = adsk.drawing.DimensionStrategyTypes.OverallDimensionStrategyType
mainAsm.autoDimensionPreferences.holePreferencesType = adsk.drawing.HolePreferencesTypes.HoleAndThreadNoteHolePreferencesType
# DrawingViewPreferences
mainAsm.drawingViewPreferences.style = adsk.drawing.DrawingViewStyleTypes.VisibleEdgesDrawingViewStyleType
mainAsm.drawingViewPreferences.tangentEdgesType = adsk.drawing.TangentEdgeDisplayTypes.OffTangentEdgeDisplayType
mainAsm.drawingViewPreferences.isShowInterferenceEdges = True
mainAsm.drawingViewPreferences.isShowThreadEdges = True
mainAsm.drawingViewPreferences.centerMarkType = adsk.drawing.CenterMarkDisplayTypes.AllHolesCenterMarkDisplayType
mainAsm.drawingViewPreferences.centerLineType = adsk.drawing.CenterLineDisplayTypes.AllHolesCenterLineDisplayType
# AssemblyPreferences (sub-assembly)
subAsm = autoPrefs.subAssemblyPreferences
subAsm.isoViewSheetPreferences.isSheetCreated = True
subAsm.isoViewSheetPreferences.isPartsListIncluded = True
subAsm.orthogonalViewSheetPreferences.isSheetCreated = True
subAsm.autoDimensionPreferences.dimensionStrategyType = adsk.drawing.DimensionStrategyTypes.OverallDimensionStrategyType
subAsm.autoDimensionPreferences.holePreferencesType = adsk.drawing.HolePreferencesTypes.HoleAndThreadNoteHolePreferencesType
subAsm.drawingViewPreferences.style = adsk.drawing.DrawingViewStyleTypes.VisibleEdgesDrawingViewStyleType
subAsm.drawingViewPreferences.centerLineType = adsk.drawing.CenterLineDisplayTypes.AllHolesCenterLineDisplayType
# AnimationPreferences — DrawingViewPreferences
animPrefs = autoPrefs.animationPreferences
animPrefs.drawingViewPreferences.style = adsk.drawing.DrawingViewStyleTypes.ShadedWithVisibleEdgesDrawingViewStyleType
animPrefs.drawingViewPreferences.tangentEdgesType = adsk.drawing.TangentEdgeDisplayTypes.OffTangentEdgeDisplayType
# ComponentPreferences
compPrefs = autoPrefs.componentPreferences
# ComponentSheetViewPreferences
compPrefs.sheetViewPreferences.isOrthogonalViewAdded = True
compPrefs.sheetViewPreferences.isIsometricViewAdded = True
# AutoDimensionComponentPreferences (extends AutoDimensionBasePreferences)
compPrefs.autoDimensionPreferences.isAutoDimensionEnabled = True
compPrefs.autoDimensionPreferences.dimensionStrategyType = adsk.drawing.DimensionStrategyTypes.AutomaticDimensionStrategyType
compPrefs.autoDimensionPreferences.holePreferencesType = adsk.drawing.HolePreferencesTypes.HoleAndThreadNoteHolePreferencesType
compPrefs.autoDimensionPreferences.defaultOriginType = adsk.drawing.DefaultOriginTypes.BottomLeftDefaultOriginType
compPrefs.autoDimensionPreferences.isCircularPatternDimensionsIncluded = True
# DrawingViewPreferences
compPrefs.drawingViewPreferences.style = adsk.drawing.DrawingViewStyleTypes.VisibleEdgesDrawingViewStyleType
compPrefs.drawingViewPreferences.tangentEdgesType = adsk.drawing.TangentEdgeDisplayTypes.OffTangentEdgeDisplayType
compPrefs.drawingViewPreferences.centerMarkType = adsk.drawing.CenterMarkDisplayTypes.AllHolesCenterMarkDisplayType
compPrefs.drawingViewPreferences.centerLineType = adsk.drawing.CenterLineDisplayTypes.AllHolesCenterLineDisplayType
# FoldedModelPreferences (sheet metal — formed state)
foldedPrefs = autoPrefs.foldedModelPreferences
# ComponentSheetViewPreferences
foldedPrefs.sheetViewPreferences.isOrthogonalViewAdded = True
foldedPrefs.sheetViewPreferences.isIsometricViewAdded = True
# AutoDimensionComponentPreferences
foldedPrefs.autoDimensionPreferences.isAutoDimensionEnabled = True
foldedPrefs.autoDimensionPreferences.dimensionStrategyType = adsk.drawing.DimensionStrategyTypes.OverallDimensionStrategyType
foldedPrefs.autoDimensionPreferences.defaultOriginType = adsk.drawing.DefaultOriginTypes.ModelOriginDefaultOriginType
foldedPrefs.autoDimensionPreferences.isCircularPatternDimensionsIncluded = True
# DrawingViewPreferences
foldedPrefs.drawingViewPreferences.style = adsk.drawing.DrawingViewStyleTypes.VisibleAndHiddenEdgesDrawingViewStyleType
foldedPrefs.drawingViewPreferences.centerMarkType = adsk.drawing.CenterMarkDisplayTypes.AllHolesCenterMarkDisplayType
foldedPrefs.drawingViewPreferences.centerLineType = adsk.drawing.CenterLineDisplayTypes.AllHolesCenterLineDisplayType
# FlatPatternPreferences (sheet metal — unfolded state)
flatPrefs = autoPrefs.flatPatternPreferences
# FlatPatternOrthogonalViewPreferences
flatPrefs.orthogonalViewSheetPreferences.isFoldedModelIsometricViewAdded = True
flatPrefs.orthogonalViewSheetPreferences.isBendTableIncluded = True
flatPrefs.orthogonalViewSheetPreferences.bendTableLocation = adsk.drawing.TableLocationTypes.TopLeftTableLocationType
# AutoDimensionComponentPreferences
flatPrefs.autoDimensionPreferences.isAutoDimensionEnabled = True
flatPrefs.autoDimensionPreferences.dimensionStrategyType = adsk.drawing.DimensionStrategyTypes.OverallDimensionStrategyType
flatPrefs.autoDimensionPreferences.defaultOriginType = adsk.drawing.DefaultOriginTypes.BottomLeftDefaultOriginType
flatPrefs.autoDimensionPreferences.isCircularPatternDimensionsIncluded = True
# DrawingViewFlatPatternPreferences (extends DrawingViewPreferences)
flatPrefs.drawingViewPreferences.style = adsk.drawing.DrawingViewStyleTypes.VisibleAndHiddenEdgesDrawingViewStyleType
flatPrefs.drawingViewPreferences.centerLineType = adsk.drawing.CenterLineDisplayTypes.AllHolesCenterLineDisplayType
flatPrefs.drawingViewPreferences.isShowBendExtents = True
# Create the drawing. Returns the cloud DataFile when complete.
drawingDataFile = drawingMgr.createDrawing(drawingInput)
if drawingDataFile:
# Open the newly created drawing document.
app.documents.open(drawingDataFile)
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))