Demonstrates creating a new sheet metal hem feature.
Before running: Open or create a sheet metal design in the DESIGN workspace, unless the script builds its own sheet metal body.
import adsk.core, adsk.fusion, traceback
def run(context):
ui = None
try:
app = adsk.core.Application.get()
ui = app.userInterface
# get active design
product = app.activeProduct
design = adsk.fusion.Design.cast(product)
# get the root component
rootComp = design.rootComponent
# get features
features = rootComp.features
hemFeatures = features.hemFeatures
# get geometry from body to create hems
brepBodies = rootComp.bRepBodies
body = brepBodies.item(0)
edges = body.edges
# get inputs for an open hem
gap = adsk.core.ValueInput.createByReal(0.2)
length = adsk.core.ValueInput.createByReal(2.0)
openHemFeatureInput = hemFeatures.createHemFeatureInput()
edge = edges.item(0)
isFlipped = False
bendPositionType = adsk.fusion.BendPositionTypes.StartEdgeBendPositionType;
# create an open hem using specified values
openHemFeatureInput.setOpenHem(edge, length, gap, isFlipped, bendPositionType)
hemFeature = hemFeatures.add(openHemFeatureInput)
# get inputs for a rolled hem
radius = adsk.core.ValueInput.createByReal(0.3)
angle = adsk.core.ValueInput.createByReal(4.5)
rolledHemFeatureInput = hemFeatures.createHemFeatureInput()
edge = edges.item(5)
# use same flip and bend position as before to create a rolled hem
rolledHemFeatureInput.setRolledHem(edge, radius, angle, isFlipped, bendPositionType)
hemFeature = hemFeatures.add(rolledHemFeatureInput)
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
#include <Core/Application/Application.h>
#include <Core/Application/Document.h>
#include <Core/Application/ValueInput.h>
#include <Core/UserInterface/UserInterface.h>
#include <Fusion/Components/Component.h>
#include <Fusion/BRep/BRepBodies.h>
#include <Fusion/BRep/BRepBody.h>
#include <Fusion/BRep/BRepEdge.h>
#include <Fusion/BRep/BRepEdges.h>
#include <Fusion/Features/Features.h>
#include <Fusion/SheetMetal/HemFeature.h>
#include <Fusion/SheetMetal/HemFeatureInput.h>
#include <Fusion/SheetMetal/HemFeatures.h>
#include <Fusion/Fusion/Design.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 active design
Ptr<Product> product = app->activeProduct();
if (!product)
return false;
Ptr<Design> design = product;
if (!design)
return false;
// Get root component in this design
Ptr<Component> rootComp = design->rootComponent();
if (!rootComp)
return false;
// Get hem features
Ptr<Features> features = rootComp->features();
if (!features)
return false;
Ptr<HemFeatures> hemFeatures = features->hemFeatures();
if (!hemFeatures)
return false;
Ptr<BRepBodies> bodies = rootComp->bRepBodies();
Ptr<BRepBody> body = bodies->item(0);
Ptr<BRepEdges> edges = body->edges();
// Create an open hem
Ptr<ValueInput> gap = ValueInput::createByReal(0.2);
Ptr<ValueInput> length = ValueInput::createByReal(2.0);
Ptr<HemFeatureInput> openHemFeatureInput = hemFeatures->createHemFeatureInput();
Ptr<BRepEdge> edge = edges->item(0);
bool isFlipped = false;
BendPositionTypes bendPositionType = BendPositionTypes::StartEdgeBendPositionType;
// Create the feature
Ptr<HemFeature> openHemFeature = hemFeatures->add(openHemFeatureInput);
// Create a rolled hem
Ptr<ValueInput> radius = ValueInput::createByReal(0.3);
Ptr<ValueInput> angle = ValueInput::createByReal(4.5);
Ptr<HemFeatureInput> rolledHemFeatureInput = hemFeatures->createHemFeatureInput();
edge = edges->item(5);
// Use same bend position and flip options as previous hem
// Create the feature
Ptr<HemFeature> rolledHemFeature = hemFeatures->add(rolledHemFeatureInput);
return true;
}
/** * Hem Feature Sample * Demonstrates creating sheet metal hem features (an open hem and a rolled hem). * * Requires APISampleSheetMetalFlange.f3d to be open. Edge indices are * specific to that 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 active design (the document is opened by the test harness) const product = app.activeProduct; if (!product) throw Error("No active product."); const design = product as adsk.fusion.Design; if (!design) throw Error("No active design."); // Get the root component const rootComp = design.rootComponent; if (!rootComp) throw Error("No root component."); // Get hem features const features = rootComp.features; if (!features) throw Error("No features."); const hemFeatures = features.hemFeatures; if (!hemFeatures) throw Error("No hem features."); // Get geometry from body to create hems const brepBodies = rootComp.bRepBodies; const body = brepBodies.item(0); const edges = body.edges; // Get inputs for an open hem const gap = adsk.core.ValueInput.createByReal(0.2); const length = adsk.core.ValueInput.createByReal(2.0); const openHemFeatureInput = hemFeatures.createHemFeatureInput(); let edge = edges.item(0); const isFlipped = false; const bendPositionType = adsk.fusion.BendPositionTypes.StartEdgeBendPositionType; // Create an open hem using the specified values openHemFeatureInput.setOpenHem(edge, length, gap, isFlipped, bendPositionType); hemFeatures.add(openHemFeatureInput); // Get inputs for a rolled hem const radius = adsk.core.ValueInput.createByReal(0.3); const angle = adsk.core.ValueInput.createByReal(4.5); const rolledHemFeatureInput = hemFeatures.createHemFeatureInput(); edge = edges.item(5); // Use the same flip and bend position as before to create a rolled hem rolledHemFeatureInput.setRolledHem(edge, radius, angle, isFlipped, bendPositionType); hemFeatures.add(rolledHemFeatureInput); } run();