Here is the code. Please mind the fact I'm using ETO, so some APIfunctions may look unfamiliar.
try
{
Render_Intentmodel();
Part topview = Get_TopView(Intent.IntentAPI.ActiveRoot);
Value[] dimensions_intent = topview.EvaluateExpression(new Source("GetChildrenOfType(me,{:ivlineardimension})")).ToList();
foreach (var dim_intent in dimensions_intent)
{
object dim_inventor = Intent.HostObjectFromPart(dim_intent);
if (dim_inventor == null)
((Part)dim_intent).SetRuleValue("visible?", new Value(false));
else
((Part)dim_intent).SetRuleValue("visible?", new Value(true));
}
DrawingDimensions dims = ((DrawingDocument)_Inventorapplication.ActiveDocument).ActiveSheet.DrawingDimensions;
LinearGeneralDimension dim;
foreach (var d in dims)
{
dim = d as LinearGeneralDimension;
string s = Intent.RefChainFromHostObject(dim);
Part p = Intent.IntentAPI.Utilities.GetPart(s);
if (p != null)
p.SetRuleValue("textOrigin", new Value(new Autodesk.Intent.Point(dim.Text.Origin.X * 10, dim.Text.Origin.Y * 10)));
else
{
////Dimensie bestaat niet in intent
dynamic oExtLine = default(LineSegment2d);
Point2d ptEnd;
oExtLine = dim.ExtensionLineOne;
ptEnd=oExtLine.EndPoint;
Autodesk.Intent.Parameters parameters = new Autodesk.Intent.Parameters(new Name("ivlineardimension"));
parameters.Add("origin", new Value((new Autodesk.Intent.Point(ptEnd.X * 10, ptEnd.Y * 10))));
parameters.Add("radius", new Value(1));
parameters.Add("Startangle", new Value(0));
parameters.Add("Endangle", new Value(360));
ChildRule cirkelExt1 = topview.GetDynamicRules().AddChild(Intent.IntentAPI.Utilities.UniqueName("Extensionpoint"), parameters);
oExtLine = dim.ExtensionLineTwo;
ptEnd = oExtLine.EndPoint;
parameters = new Autodesk.Intent.Parameters(new Name("IvSketchArc"));
parameters.Add("origin", new Value((new Autodesk.Intent.Point(ptEnd.X * 10, ptEnd.Y * 10))));
parameters.Add("radius", new Value(10));
parameters.Add("Startangle", new Value(0));
parameters.Add("Endangle", new Value(360));
ChildRule cirkelExt2 = topview.GetDynamicRules().AddChild(Intent.IntentAPI.Utilities.UniqueName("Extensionpoint"), parameters);
}
}
Render_Intentmodel();
}
catch (System.Exception ex)
{
DisplayMessage(ex.Message, System.Reflection.MethodBase.GetCurrentMethod().Name);
}
The code goes (raise an exception, see other posts) wrong when it reaches/executes the red colored line.
Cheers,
Mark