This is a more detailed rework of a previous blog post.
"Feel the heat pushing you to decide
Feel the heat burning you up, ready or not
Some like it hot, and some sweat when the heat is on...
Some like it hot, so let's turn up the heat 'til we fry"
— "Some Like It Hot," Power Station, Power Station, 1985.
Let's say you've been an Autodesk customer for a long time. You've got decades of your intellectual property captured in AutoCAD drawings. If you'd like to leverage that data to showcase your work to your customers, then Autodesk Forge is for you.
Forge is our application program interface (API) platform and supporting materials (sample code, manuals) as well as a community of developers who uses those APIs. Although Forge is intended for our customers and 3rd party developers to be able to extend our web services, we use Forge for our development of the cloud-based services that we offer. You can leverage Forge in the same ways that we do.
Forge is defined by 4 groups of APIs:
-
Design Automation API
The Design Automation API gives you the ability to run scripts on your design files, leveraging the scale of the Forge Platform to automate repetitive tasks. The API currently works with DWG files, but we have plans to expand to file types generated by other design software. For example, this is a handy way to publish thousands of drawings to DWF or PDF. "Ordinarily, you would have to download all the files, run a script on them in the AutoCAD desktop software, and then potentially upload them all back to the cloud. Your efficiency would be bottlenecked by the processing power of your computer and your network bandwidth, and you would have to instrument logging and retry logic in your code to ensure that the entire job completed. With the Design Automation API, you can offload all that processing to the Forge Platform, which can process those scripts at a much greater scale and efficiency." [Forge]
The pieces of this part of the Forge API include:
- activity - action (e.g., plotting DWG to PDF file or updating a CAD standard) that can be executed by the AutoCAD Core Engine
- AppPackage - module (e.g., custom AutoLISP routine that extracts Xdata) referenced by an Activity to perform specific functions
- module file - AppPackage entity
- WorkItem - a job that you submit to be executed by the AutoCAD Core Engine
-
Data Management API
The Data Management API gives you a unified and consistent way for you to access your data across BIM 360 Team, Fusion Team, BIM 360 Docs, A360 Personal, and the Object Storage Service. The Object Storage Service allows your application to download and upload raw files (such as PDF, XLS, DWG, or RVT). Coupling this API with the Model Derivative API, you can accomplish a number of workflows, including accessing a Fusion model in Fusion Team and getting an ordered structure of items, IDs, and properties for generating a bill of materials in a 3rd-party process. Or, you might want to superimpose a Fusion model and a building model to use in the Viewer. [Forge]
The pieces of this part of the Forge API include:
- Project Service - your application can navigate to a project from BIM 360 Team hub, a Fusion Team hub, an A360 Personal hub, or a BIM 360 Docs account
- Data Service - your application can navigate and manage the BIM 360 Team, Fusion Team, BIM 360 Docs, or A360 Personal metadata in terms of folders, items, and versions, as well as the relationships between these entities
- Schema Service - lets your application understand the structure and semantics of extended data types, like Fusion designs
- Object Storage Service - your application can download and upload raw files that are managed by the Data Service
-
Model Derivative API
The Model Derivative API lets you represent and share your designs in different formats, as well as to extract valuable metadata into various object hierarchies. 60 different file input formats are supported.
The pieces of this part of the Forge API include:
- Metadata Extraction - your application can extract identifiable elements and properties from a source file
- Geometry Extraction - your application can identify various geometric representations
- File Translation - your application can translate source files into output files (derivatives) of different formats
With this API, you can translate your design into different formats, such as STL and OBJ, but the key one is that you can have it translate your designs into SVF for extracting data and for rendering files in the Viewer.
-
Viewer
The Viewer is a WebGL-based, JavaScript library for your use in 3D and 2D model rendering. The Viewer communicates natively with the Model Derivative API to fetch model data, complying with its authorization and security requirements. The Viewer requires a WebGL-canvas compatible browser:
- Chrome 50+
- Firefox 45+
- Opera 37+
- Safari 9+
- Microsoft Edge 20+
- Internet Explorer 11
The Model Derivative API provides a URN to the SVF file. A URN (Uniform Resource Name) is an internet resource with a name that, unlike a Uniform Resource Locator (URL), has persistent significance — that is, the owner of the URN can expect that another program will always be able to find the resource. A frequent problem in using the cloud is that web content is moved to a new site or a new page on the same site. Since hyperlinks reply on URLs, they no longer work when content is moved. URNs do not have this problem. The Viewer converts the SVF (Simple Vector Format) into WebGL that the browser can display natively without an additional plug-in.
Allowing Forge to render your files in the Viewer is a hassle-free way to share your company's data to your customers without having to deal with all of the peculiarities of these various browsers.
So regardless of the number of gigabytes of data you have in your design files, you can use these APIs to extract data, surface it, and allow your customers to view and interact with it on your own website. To forge is to make or shape a metal object by heating it in a fire or furnace or beating and hammering it. In terms of customer showcasing, your data is the metal, and our APIs are the heat. Feel the heat.
Heat is still alive in the lab.
Update: There is an updated version of this post that adds Authentication and Webhooks.