Skip to content

How would you implement an exploded view (part translation) with IxMilia.Step? #21

@atmike

Description

@atmike

Hi there,

Thanks for maintaining this great project! 🙌

I’m working on a .NET-based tool using IxMilia.Step to load STEP files, modify them, and save them back. One feature I’m trying to implement is an exploded view, where each part (solid/body) of the STEP model is translated along a defined axis (e.g., Z+) to make assemblies more readable.

What I’ve done so far
I can successfully load and parse a .stp file using StepFile.Load(...).

I can enumerate StepRepresentationItems from model.Items.

I’ve written code that attempts to apply an offset to each part:

string inputPath = "CB880.014000  1M Unterschnittmesser RE.stp";
string outputPath = Path.Combine(
    Path.GetDirectoryName(inputPath)!,
    Path.GetFileNameWithoutExtension(inputPath) + "_exploid.stp"
);

var model = StepFile.Load(inputPath);

// Attempt to offset parts
int i = 0;
foreach (StepRepresentationItem item in model.Items)
{
    StepLine line = (StepLine)item; // Only works for StepLine as placeholder

    double offset = i++ * 50.0;

    // My idea was to assign a StepAxis2Placement3D to move parts
    var transform = new StepAxis2Placement3D(
        "", 
        new StepCartesianPoint("", 0.0, 0.0, offset),
        new StepDirection("", 0.0, 0.0, 1.0),
        new StepDirection("", 1.0, 0.0, 0.0)
    );

    // But at this point I don’t know how to assign the new transform to the part.
    // There's no MappingTarget property, and no MappedItem abstraction available.

    // So nothing happens to the geometry.
}

model.Save(outputPath);

What’s missing or unclear

  • I cannot find an equivalent to MappedItem or similar transformable entity in the IxMilia.Step model.
  • There is no way (that I can see) to assign a StepAxis2Placement3D to a geometric item after it’s been loaded.
  • I don’t know how to access or modify the placement of existing parts – if they are defined through ShapeRepresentations or ProductDefinitions, it’s unclear how to reach or transform them.

How would you go about implementing an exploded view using IxMilia.Step?
Specifically:

  • How can I identify and isolate individual solids/components?
  • Is there any way to apply a geometric transformation (e.g. translation)?
  • Are there plans to expose transformation-related structures like MappedItem, or is there a workaround?

Thanks again for your great work – any guidance or thoughts would be highly appreciated!

Best regards,
Michael

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions