Import Manager API Sample

Description

Demonstrates ImportManager for IGES, STEP, SAT, SMT, Fusion archive (F3D), and DXF 2D import, including importToNewDocument, importToTarget, and ImportOptions.isViewFit.

Before running: The sample paths point at neutral-format test files under Core/Neutron/Test/APITest/ (for example APISampleImportNeutralIgs.igs). When you run the script yourself, either place equivalent files at those paths or edit the file paths in the sample. The automation test uses paths relative to the script via TestUtils. Imports create new documents or add to the active design depending on the section you run.

Code Samples

import adsk.core, adsk.fusion, traceback
import os.path, sys

def run(context):
    ui = None
    try:
        app = adsk.core.Application.get()
        ui  = app.userInterface
        
        # Get import manager
        importManager = app.importManager
        
        # Get iges import options
        igesFileName = 'C:\\APISampleImportNeutralIgs.igs'
        igesOptions = importManager.createIGESImportOptions(igesFileName)
        
        # Import iges file to new document
        importManager.importToNewDocument(igesOptions)
        
        # Get sat import options
        satFileName = 'C:\\APISampleImportNeutralSat.sat'
        satOptions = importManager.createSATImportOptions(satFileName)
        satOptions.isViewFit = False
        
        # Get active design
        product = app.activeProduct
        design = adsk.fusion.Design.cast(product)
        
        # Get root component
        rootComp = design.rootComponent
        
        # Import sat file to root component
        importManager.importToTarget(satOptions, rootComp)
        
        # Get smt import options
        smtFileName = 'C:\\APISampleImportNeutralSmt.smt'
        smtOptions = importManager.createSMTImportOptions(smtFileName)
        smtOptions.isViewFit = False
        
        # Import smt file to root component
        importManager.importToTarget(smtOptions, rootComp)
        
        # Get step import options
        stpFileName = 'C:\\APISampleImportNeutralStp.stp'
        stpOptions = importManager.createSTEPImportOptions(stpFileName)
        stpOptions.isViewFit = False
        
        # Import step file to root component
        importManager.importToTarget(stpOptions, rootComp)

        # Get dxf import options
        #dxfFileName = 'C:\\APISampleImportNeutralDxf2D.dxf'
        dxfOptions = importManager.createDXF2DImportOptions(dxfFileName, rootComp.xZConstructionPlane)
        dxfOptions.isViewFit = False
        
        # Import dxf file to root component
        importManager.importToTarget(dxfOptions, rootComp)
        
        dxfOptions = importManager.createDXF2DImportOptions(dxfFileName, rootComp.xZConstructionPlane)
        dxfOptions.isViewFit = False
        # Set the flag true to merge all the layers of DXF into single sketch.
        dxfOptions.isSingleSketchResult = True
        
        # Import dxf file to root component
        importManager.importToTarget(dxfOptions, rootComp)

        # Get archive import options
        archiveFileName = 'C:\\APISampleImportNeutralF3d2.f3d'
        archiveOptions = importManager.createFusionArchiveImportOptions(archiveFileName)
        
        # Import archive file to root component
        importManager.importToTarget(archiveOptions, rootComp)
        
        # Close the new created document
        doc = app.activeDocument
        doc.close(False)
    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
#include <Core/Application/Application.h>
#include <Core/Application/Document.h>
#include <Core/Application/ImportManager.h>
#include <Core/Application/FusionArchiveImportOptions.h>
#include <Core/Application/SATImportOptions.h>
#include <Core/Application/IGESImportOptions.h>
#include <Core/Application/SMTImportOptions.h>
#include <Core/Application/STEPImportOptions.h>
#include <Core/Application/DXF2DImportOptions.h>
#include <Core/UserInterface/UserInterface.h>
#include <Fusion/Fusion/Design.h>
#include <Fusion/Components/Component.h>
#include <Fusion/Construction/ConstructionPlane.h>

using namespace adsk::core;
using namespace adsk::fusion;

Ptr<UserInterface> ui;

extern "C" XI_EXPORT bool run(const char* context)
{
    Ptr<Application> app = Application::get();
    if (!app)
        return false;

    ui = app->userInterface();
    if (!ui)
        return false;

    // Get import manager
    Ptr<ImportManager> importManager = app->importManager();
    if (!importManager)
        return false;

    // Get iges import options
     const std::string igesFileName = "C:\\APISampleImportNeutralIgs.igs";
    Ptr<IGESImportOptions> igesOptions = importManager->createIGESImportOptions(igesFileName);

    // Import iges file to new document
    importManager->importToNewDocument(igesOptions);

    // Get sat import options
     const std::string satFileName = "C:\\APISampleImportNeutralSat.sat";
    Ptr<SATImportOptions> satOptions = importManager->createSATImportOptions(satFileName);
    if (!satOptions)
        return false;
    satOptions->isViewFit(false);

    // Get active design
    Ptr<Design> design = app->activeProduct();
    if (!design)
        return false;

    // Get root component
    Ptr<Component> rootComp = design->rootComponent();

    // Import sat file to root component
    importManager->importToTarget(satOptions, rootComp);

    // Get smt import options
     const std::string smtFileName = "C:\\APISampleImportNeutralSmt.smt";
    Ptr<STEPImportOptions> stpOptions = importManager->createSTEPImportOptions(stpFileName);
    if (!stpOptions)
        return false;
    stpOptions->isViewFit(false);

    // Import step file to root component
    importManager->importToTarget(stpOptions, rootComp);

    // Get dxf import options
     const std::string dxfFileName = "C:\\APISampleImportNeutralDxf2D.dxf";
    Ptr<DXF2DImportOptions> dxfOptions =
        importManager->createDXF2DImportOptions(dxfFileName, rootComp->xZConstructionPlane());
    if (!dxfOptions)
        return false;
    dxfOptions->isViewFit(false);

    // Import dxf file to root component
    importManager->importToTarget(dxfOptions, rootComp);

    Ptr<DXF2DImportOptions> dxfOptions =
        importManager->createDXF2DImportOptions(dxfFileName, rootComp->xZConstructionPlane());
    if (!dxfOptions)
        return false;
    dxfOptions->isViewFit(false);
    // Set the flag true to merge all the layers of DXF into single sketch.
    dxfOptions->isSingleSketchResult(true);

    // Import dxf file to root component
    importManager->importToTarget(dxfOptions, rootComp);

    // Get archive import options
     const std::string archiveFileName = "C:\\APISampleImportNeutralF3d2.f3d";
    Ptr<FusionArchiveImportOptions> archiveOptions = importManager->createFusionArchiveImportOptions(archiveFileName);

    // Import archive file to root component
    importManager->importToTarget(archiveOptions, rootComp);

    // Close the new created document
    Ptr<Document> doc = app->activeDocument();
    if (!doc)
        return false;
    doc->close(false);

    return true;
}
/**
 * Import Manager API Sample
 * Demonstrates how to import different formats to Fusion document
 */

import { adsk } from '@adsk/fusion';

function run() {

  // Get the Fusion API's application object
  const app = adsk.core.Application.get();
  if (!app) throw Error("No adsk.core.Application.");

  // Get import manager
  const importManager = app.importManager

  // Get iges import options
  const igesFileName = 'APISampleImportNeutralIgs.igs'
  const igesOptions = importManager.createIGESImportOptions(igesFileName)

  // Import iges file to new document
  importManager.importToNewDocument(igesOptions)

  // Get sat import options
  const satFileName = 'APISampleImportNeutralIgs.sat'
  const satOptions = importManager.createSATImportOptions(satFileName)
  satOptions.isViewFit = false

  // Get active design
  const product = app.activeProduct
  const design = app.activeProduct as adsk.fusion.Design;

  // Get root component
  const rootComp = design.rootComponent

  // Import sat file to root component
  importManager.importToTarget(satOptions, rootComp)

  // Get smt import options
  const smtFileName = 'APISampleImportNeutralIgs.f3d'
  const smtOptions = importManager.createSMTImportOptions(smtFileName)
  smtOptions.isViewFit = false

  // Import smt file to root component
  importManager.importToTarget(smtOptions, rootComp)

  // Get step import options
  const stpFileName = 'APISampleImportNeutralIgs.stp'
  const stpOptions = importManager.createSTEPImportOptions(stpFileName)
  stpOptions.isViewFit = false

  // Import step file to root component
  importManager.importToTarget(stpOptions, rootComp)

  // Get dxf import options
  const dxfFileName = 'APISampleImportNeutralIgs.dxf'
  const dxfOptions1 = importManager.createDXF2DImportOptions(dxfFileName, rootComp.xZConstructionPlane)
  dxfOptions1.isViewFit = false

  // Import dxf file to root component
  importManager.importToTarget(dxfOptions1, rootComp)

  const dxfOptions2 = importManager.createDXF2DImportOptions(dxfFileName, rootComp.xZConstructionPlane)
  dxfOptions2.isViewFit = false

  // Set the flag true to merge all the layers of DXF into single sketch.
  dxfOptions2.isSingleSketchResult = true

  // Import dxf file to root component
  importManager.importToTarget(dxfOptions2, rootComp)

  // Get archive import options
  const archiveFileName = 'APISampleImportNeutralIgs.f3d'
  const archiveOptions = importManager.createFusionArchiveImportOptions(archiveFileName)

  // Import archive file to root component
  importManager.importToTarget(archiveOptions, rootComp)

  // Close the new created document
  const doc = app.activeDocument
  doc.close(false)
}
run();