After having tried to use Python, due to the lack of Documentation, I've resolved to use C# and using Linux, the learning curve is not so fast, but after some years, i could say that it is not too hard.
Many things are easy, many are a little difficult, something involve the creation of intermediate objects.
At some point I managed to create this code:
// Test per personalize Tabs
List<HoldingTab> H_Tabs = new List<HoldingTab>();
Polyline PP;
HoldingTab H_Tab = new CamBam.CAM.HoldingTab();
int n_tabs = 5;
foreach (Entity ent in objects) {
for (int idx = 0; idx < n_tabs; idx++)
{
PP = ent as Polyline;
H_Tab = new CamBam.CAM.HoldingTab(ent.ID, 1.0f / idx, new Vector2F(0,-1));
H_Tabs.Add(H_Tab);
}
}
mop.Tabs = H_Tabs;
Where:
mop is the Profile MOP (I think it is the only useful operation for a tab)
objects are the entities of the MOP
The parametric point is a value between 0 and 1 indicating the point in the polyline as a fraction of perimeter I suppose, but this can be obtained using:
public double GetParametricPoint (Point2F p, ref Vector2F VNormal)
I suppose that the Vector2F returned could be used to feed the Vector2F parameter of the Holding Tab.
The main concern is the value of Vector2F, it seem the orientation of the Tab,
I'm working in a Plugin that given an Entity (Polyline) and some lines it extracts the intersection points and then trasform them in Tabs, but it is a rought work in progress.
In python is not so easy and making a Plugin is somewhat a more fast approach, and it is not too difficult to learn how to make a plugin.
Regards
Carlo D.