What's New For the July 2025 Release
Enhancements
-
Support for the New Assembly Constraints
The API has support for the equivalent of the new Constrain Components command which results in the creation of an assembly constraint to control the relationships between occurrences in an assembly. This is provided through the new AssemblyConstraints collection object. The new AssemblyConstraint acts as a group of GeometricRelationship objects. You'll see that it is currently designated as a "preview" feature, and we would appreciate feedback about the new functionality; both the interactive functionality and the API.
-
API Support for Mesh Modeling
The API to support the functionality available in the Mesh workspace is supported in this release. It is in preview state, so please try it out and let us know about your successes and any problems or suggestions you might have to make it better. To provide comments, you can create a new topic in the Fusion API and Scripts Forum. -
Assembly User Interface Changes
This release contains a major change to how the assembly functionality is provided in the user interface. However, it's still in a private preview state with the default being the existing user interface. When the user enables the new UI in their preferences they first see the dialog below, and if the user continues, the ASSEMBLE panel will be replaced by a new ASSEMBLY tab. All of the assembly-related functionality will be available in new panels within the new tab. This doesn't change the API, but it does change the layout of the user interface. If you currently add any of your custom commands into the ASSEMBLE panel, you'll need to update your code that adds your buttons to the user interface. There's still nothing you can do yet, but you need to watch for when this becomes available and be ready to make changes to your add-in.
The change you'll need is to get the ASSEMBLY toolbar tab and add your command to one of it's panels. You can get this tab using the code below. If the isVisible property is True, it means the user has enabled it. Currently, you can add your command to both the original ASSEMBLE panel and the new ASSEMBLY tab, so no matter which is active the user will have access to your commands. At some point, the ASSEMBLE panel will go away, so you'll want your code to be tolerance of that.
assemblyTab = ui.allToolbarTabs.itemById('AssemblyTab') if assemblyTab.isVisible: app.log('The new ASSEMBLY tab has been enabled.') else: app.log('The old ASSEMBLE panel is enabled.')
-
Part Number and Description Changes
As part of new functionality coming to support collaborative editing some changes have been made to Fusion and the API. The biggest change is that the part number and description properties of the Component object now get and save data on the cloud and not in the design. This change only applies to files that exist within a hub where concurrent editing has been enabled, so the impact is limited. You can check for this by using the new DataHub.isCollaborativeEditingEnabled property.When this is enabled, there are two things you'll likely notice. The first is a difference in performance when using the partNumber and description properties of the Component object. This is because getting and setting these values is no longer a local operation but uses the cloud to get and set them.
Another change is that the cloud data associated with a component, where this data is saved doesn't exist until the document that contains the component has been saved. The bigger change is that the part number and description can no longer be set until the document containing the component has been saved. These properties can't be set until the document is saved because the component and its properties aren't available on the cloud until it has been saved. You can read more about this in the new MFGDM API user manual topic.
-
Sheet Metal Refactoring
The API for sheet metal functionality was split between two different header files, Features.h and SheetMetal.h. The sheet metal specific features in Features.h have been moved to SheetMetal.h. Any existing C++ programs that used any of these features will need to reference SheetMetal.h and be recompiled. It was determined the impact of this change would be very minor because of the limited support of sheet metal features. This will provide a more logical organization for the future as more API support for sheet metal features is added. -
Selection Support of Custom Graphics Groups
A limitation with custom graphics was recently discovered. The problem is that when you set custom graphics to be selectable, the individual graphic entities can be selected, but not the group that owns them. The idea of a graphics group is to create more complex objects by combining many different primitive entities. For example, you might create a triad using multiple solid primitives and some text. It would be desirable to have the entire triad selected and not the individual entities that make it up. To support this a new isChildrenSelectable property is available on the GraphicsGroup object. When a new group is created, this default to true, indicating the entities within the group are selectable. However, when set to false, the entire group will be selected as a single object. -
Arrange Feature Statistics
The statistics about an arrangement are now available through the API by using the new arrangeStatistics property on the ArrangeFeature object. -
More Enhancements to Volumetric Modeling
The API for volumetric modeling was introduced in the last release. This has been enhanced with a couple of new capabilities in this release. The Graph object now supports the canEvaluateGraph property and the GraphNode Object has the hasValidProperties property. In addition, the BeamNetwork object has been added which is accessed through the GeometryGraphNodeProperty.beamNetwork property
CAM API Changes
-
API support for machine tool stations is now available through the MachineToolStationInput and MachineToolStation objects.
-
API support for the post processing machine element is now available through the newPostProcessingMachineElement object.
-
The tool change position can now set and modifed when creating and working with existing linear and rotary machine axes. Power, peak torque, and peak torque speed can also be set and modified for machine spindles.
Fixes
-
A problem was reported with the PhysicalProperties.getPrincipalMomentsOfInertia method where the result was returned relative to the base coordinate system. This has been corrected so it is now returned relative to the principal axes.
-
We had a report where the planarEntity property of a ConstructionPlaneTangentDefinition was failing instead of returning the entity the tangent plane is based on. This is now fixed.
-
shubham.shinde54DT9 reported a problem on the forum when working with TextBoxCommandInput objects within a TableCommandInput. This has been fixed.
Custom Features
Custom Features is a new functionality that is currently in a preview state. This release has nothing new for custom features, but you're still encouraged to try it and let us know your thoughts. You can learn more about it in the Custom Feature topic in the API User Manual. There are also two add-in samples referenced in that document you can use to see the functionality.
This functionality is provided as a preview of intended future API capabilities. You are encouraged to use it and report any problems or suggestions using the Custom Features pinned topic in the Fusion 360 API and Scripts forum. However, because this previews future functionality, it may change, breaking any existing programs that use it. Because of that, you should never deliver programs that use any preview capabilities.
New Objects
Name | Description |
AssemblyConstraint | Represents an assembly constraint. |
AssemblyConstraintInput | Defines all of the information required to create a new assembly constraint. This object provides equivalent functionality to the Assembly Relationships command dialog in that it gathers the required information to create an assembly constraint. |
AssemblyConstraints | The collection of assembly constraints in this component. This provides access to all existing assembly constraints and supports the ability to create new assembly constraints. |
BeamNetwork | A geometry reference property that defines a BeamNetwork object which is commonly used in discrete lattice structures. |
GeometricRelationship | This object represents a pair of entity inputs that are used when inferring a joint from geometry or for an assembly constraint. |
GeometricRelationships | This object represents a set of geometry relationships. They are used when creating a new inferred joint or assembly constraint and querying an existing one. |
MachineToolStation | Object representing a tool station on the machine |
MachineToolStationInput | Object representing the set of inputs required to create a new MachineToolStation. |
MeshConvertFeature | Object that represents an existing mesh convert feature in a design. To change the properties of this feature, you need to position the timeline marker to immediately before this feature. This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True) |
MeshConvertFeatureInput | This class defines the methods and properties that pertain to the definition of a mesh convert feature. |
MeshConvertFeatures | Collection that provides access to all of the existing mesh convert features in a component and supports the ability to create new mesh Convert features. |
MeshReverseNormalFeature | Object that represents an existing MeshReverseNormal feature in a design. To change the properties of this feature, you need to position the timeline marker to immediately before this feature. This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True) |
MeshReverseNormalFeatureInput | This class defines the methods and properties that pertain to the definition of a MeshReverseNormal feature. |
MeshReverseNormalFeatures | Collection that provides access to all of the existing MeshReverseNormal features in a component and supports the ability to create new MeshReverseNormal features. |
MeshSeparateFeature | Object that represents an existing MeshSeparate feature in a design. To change the properties of this feature, you need to position the timeline marker to immediately before this feature. This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True) |
MeshSeparateFeatureInput | This class defines the methods and properties that pertain to the definition of a MeshSeparate feature. |
MeshSeparateFeatures | Collection that provides access to all of the existing MeshSeparate features in a component and supports the ability to create new MeshSeparate features. |
MFGDMDataEvent | A MFGDMDataEvent represents an event related to the state of the MFGDM data structure. |
MFGDMDataEventArgs | The MFGDMDataEventArgs provides information associated with the MFGDM event. |
MFGDMDataEventHandler | The MFGDMDataEventHandler is a client implemented class that can be added as a handler to a MFGDMDataEvent. |
PostProcessingMachineElement | Machine element representing the post processor and post properties. |
New Methods, Properties and Events
Name | Description |
Application.mfgdmDataReady | The mfgdmDataReady event fires when the MFGDM data structure for a document has been updated and properties to IDs and structure from the data model is ready. |
ArrangeFeature.arrangeStatistics | Returns statistics about the arrangement in JSON format as a string. Each item in the JSON is identified with its English name, and the current localized name is also provided. The values follow the API rules, where all length values are in centimeters, and areas are in square centimeters. The returned JSON may include additional values in the future, so code consuming this output should be tolerant of new fields. |
Component.allAssemblyConstraints | Returns all assembly constraints in this component and any sub components. The assembly constraints returned are all in the context of this component so any joints in sub components will be proxies. This is primarily useful when used from the root component because Fusion flattens the assembly structure, including joints, when manipulating an assembly. |
Component.assemblyConstraints | Returns the collection of assembly constraints associated with this component. |
Component.mfgdmModelId | Returns the MFGDM model ID for this component. |
CustomGraphicsGroup.isChildrenSelectable | Defines if the child custom graphic entities are selectable or if the entire group is selected in the UI. By default this is true. If false, the isSelectable property defines if this group is selectable. If true, the isSelectable property of each child entity defines if it is selectable. |
DataComponent.component | Get the fusion.Component that corresponds to this data component. |
DataComponent.mfgdmModelId | Get the MFGDM model Id. |
DataComponent.timestamp | Get the resolution timestamp. |
DataHub.isCollaborativeEditingEnabled | Returns true if Concurrent Editing is enabled. |
DataHub.mfgdmId | Get the MFGDM ID for this hub. |
DataHub.version | Returns the version of the hub. |
Design.rootDataComponent | Get the root DataComponent in this design. This is only available for top level designs. |
FlatPatternComponent.allAssemblyConstraints | Returns all assembly constraints in this component and any sub components. The assembly constraints returned are all in the context of this component so any joints in sub components will be proxies. This is primarily useful when used from the root component because Fusion flattens the assembly structure, including joints, when manipulating an assembly. |
FlatPatternComponent.assemblyConstraints | Returns the collection of assembly constraints associated with this component. |
FlatPatternComponent.mfgdmModelId | Returns the MFGDM model ID for this component. |
FlatPatternProduct.rootDataComponent | Get the root DataComponent in this design. This is only available for top level designs. |
GeometryGraphNodeProperty.beamNetwork | Set the value of the property. The value should be a BeamNetwork object, which defines the geometry by defining vertices, beams and radii of the beams. |
Graph.canEvaluateGraph | Check if all the channels in the graph can be evaluated and in a good state. |
GraphNode.hasValidProperties | Check if the graph node properties are valid. |
Joint.geometricRelationships | Returns the set of geometric relationships that were used to infer this joint. This property is only valid when the jointType property returns InferredJointType. Otherwise, it returns null. |
LinearMachineAxis.toolChangePosition | Specifies the value that this axis returns to, prior to a tool change. Units are cm for linear axes or radians for rotary axes. Will return NaN if tool change position isn't set. |
LinearMachineAxisInput.toolChangePosition | Specifies the value that this axis returns to, prior to a tool change. Units are cm for linear axes or radians for rotary axes. |
Machine.hasSimulationModel | Returns true if the machine has a simulation model attached. |
MachineAxis.toolChangePosition | Specifies the value that this axis returns to, prior to a tool change. Units are cm for linear axes or radians for rotary axes. Will return NaN if tool change position isn't set. |
MachineAxisInput.toolChangePosition | Specifies the value that this axis returns to, prior to a tool change. Units are cm for linear axes or radians for rotary axes. |
MachinePart.toolStation | Get the tool station object for this part. Will return null if the part has no tool station assigned. |
MachinePartInput.createToolStationInput | Creates a new MachineToolStationInput object to be used to create a new MachineToolStation. |
MachinePartInput.toolStationInput | Gets or sets an tool station input object to create a new MachineToolStation with this part. Only valid when partType is not Axis. |
MachineSpindle.peakTorque | Specifies the peak torque (Nm) for this spindle. |
MachineSpindle.peakTorqueSpeed | Specifies the speed (rpm) at which this spindle reaches peak torque (Nm). |
MachineSpindle.power | Specifies the power (kW) for this spindle. |
MachineSpindleInput.peakTorque | Specifies the peak torque for this spindle. |
MachineSpindleInput.peakTorqueSpeed | Specifies the peak torque speed for this spindle. |
MachineSpindleInput.power | Specifies the power for this spindle. |
MeshBody.copy | Copies the mesh body to the clipboard. |
MeshBody.copyToComponent | Creates a copy of this mesh body into the specified target. |
MeshBody.cut | Cuts the mesh body to the clipboard. |
MeshBody.moveToComponent | Moves this mesh body from it's current component into the root component or the component owned by the specified occurrence. |
Occurrence.dataComponent | Gets the DataComponent for the target component in the source component's document. This only applies for Occurrence's with an assembly context whose source component is a top level opened design. |
RotaryMachineAxis.toolChangePosition | Specifies the value that this axis returns to, prior to a tool change. Units are cm for linear axes or radians for rotary axes. Will return NaN if tool change position isn't set. |
RotaryMachineAxisInput.toolChangePosition | Specifies the value that this axis returns to, prior to a tool change. Units are cm for linear axes or radians for rotary axes. |
WorkingModel.rootDataComponent | Get the root DataComponent in this design. This is only available for top level designs. |
Help created: Monday, July 14, 2025 8:23 PM