Creation of a CircularPatternFeature of a component using the C++ API
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Why doesn't this work?
void makeCircularPattern(Ptr<Component> component, Ptr<Component> root) {
Ptr<ObjectCollection>inputEntites = adsk::core::ObjectCollection::create();
if (!inputEntites) return;
inputEntites->add(component);
Ptr<CircularPatternFeatures>circularFeats = root->features()->circularPatternFeatures();
if (!circularFeats) return;
Ptr<CircularPatternFeatureInput>circularFeatInput = circularFeats->createInput(inputEntites, component->yConstructionAxis());
if (!circularFeatInput) return;
circularFeatInput->quantity(ValueInput::createByReal(3));
circularFeatInput->totalAngle(ValueInput::createByString("360 deg"));
Ptr<CircularPatternFeature>circularFeat = circularFeats->add(circularFeatInput);
if (!circularFeat) return;
Application::get()->userInterface()->messageBox(""+circularFeat->quantity());
}There are some components in the document already, they're all created by API calls, so I have their handles easily. Since I want to make a bunch of circular patterns, the best thing to do is obviously to create a private void function in the CommandEventHandler.
I've tried various different ways of doing this, but the Ptr<CircularPatternFeature>circularFeat = circularFeats->add(circularFeatInput); would always return NULL. Even though there's no C++ sample for CircularPattern Feature API Sample API Sample, It looks pretty straight forward to generate the corresponding C++ sample. And it compiles with a breeze.
What I've tried:
- Use Ptr<CircularPatternFeatures>circularFeats = root->features()->circularPatternFeatures(); instead of Ptr<CircularPatternFeatures>circularFeats = component->features()->circularPatternFeatures(); also fails;
- Using bodies instead of components in inputEntites->add(body); works fine just like in the examples.
Everything else before works like a charm.
Any idea?
Thanks and greets.
