Thanks Brian!
That working for me with collections like SketchLines, SketchCurves etc.
Follow-up question if I may. How can I make that works for objects in a generic ObjectCollection?
If I try something like objCol->item(0)->deleteMe();
I get the error: No member named 'deleteMe' in 'ask::core::Base'
In the code below I'm trying to delete the curves contained in the collection offsetCurves generated by the offset method in the sketch sketchIn.
Thanks!
Rod.
bool kerfSketch(Ptr<Sketch> sketchIn, Ptr<Sketch> sketchOut, double kerf, double xOffset, double yOffset, double zOffset)
{
// Compute profiles etc.
sketchIn->isComputeDeferred(true);
Ptr<SketchCurves> curvesIn = sketchIn->sketchCurves();
if (!curvesIn) return false;
// Do we need to flip the axis
double xInv = 1;
double yInv = 1;
Ptr<Vector3D> xVector = sketchIn->xDirection();
Ptr<Vector3D> yVector = sketchIn->yDirection();
if (std::min(std::min(xVector->x(),xVector->y()),xVector->z())<0) xInv = -1;
if (std::min(std::min(yVector->x(),yVector->y()),yVector->z())<0) yInv = -1;
// Get the Profiles collection
Ptr<Profiles> profiles = sketchIn->profiles();
Ptr<ObjectCollection> curvesForOffset = ObjectCollection::create();
Ptr<ObjectCollection> offsetCurves = ObjectCollection::create();
curvesForOffset = sketchIn->findConnectedCurves(curvesIn->item(0));
offsetCurves = sketchIn->offset(curvesForOffset, Point3D::create(100,100,100), kerf/2);
if (!offsetCurves) return false;
// Create a transform to do move
Ptr<Vector3D> vector = adsk::core::Vector3D::create(xOffset*xInv, yOffset*yInv, zOffset);
if(!vector)
return false;
Ptr<Matrix3D> transform = adsk::core::Matrix3D::create();
if(!transform)
return false;
transform->translation(vector);
sketchIn->copy(offsetCurves, transform, sketchOut);
sketchIn->isComputeDeferred(false);
return true;
}