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.