Finding the "parent" of call-out text?

Hi folks,

I have a series of call-outs where when the text shape is selected, I want to figure out the "parent" call-out shape.

It doesn't help that I tend to find CustomShapes a bit opaque as it is, but I can't seem to identify a way to get the parent.  Any suggestions, or can I not get there from here?

Adjacent to that, is there a way to set the target on a Callout, or is that something handled internally by Designer?  I like how the call-out connects to the shape, but it's something I can't seem to reproduce in my code.

Thanks in advance!

  • My method is to use auxiliary line control segments instead of directly binding dimension objects.

  • Replying to myself, I think I may have figured out a solution to this, though I'm not sure this is the cleanest.

    With the text item in the call-out selected, I iterante through all the CustomShapes and check the location of their Custom.TextShape against my selection.  If the positions match then I consider that I have my candidate.

  • Connector, dimension, callout use SnapPoint to connect to a shape 

    [CgsAddInMacro]
          public void CreateConnector()
          {
              Layer l = corelApp.ActiveDocument.ActiveLayer;
              corelApp.ActiveDocument.BeginCommandGroup();
              Shape el = l.CreateEllipse2(005);
              Shape text = l.CreateArtisticText(2010"Ellipse");
     
              SnapPoint elP = el.SnapPoints.FindClosest(cdrPointType.cdrSnapPointObject, el.RightX, el.CenterY);
              SnapPoint textP = text.SnapPoints.FindClosest(cdrPointType.cdrSnapPointObject, text.LeftX, text.CenterY);
     
              Shape con = l.CreateConnector(elP, textP);
     
              corelApp.ActiveDocument.EndCommandGroup();
          }
          [CgsAddInMacro]
          public void CreateDimension()
          {
     
              Layer l = corelApp.ActiveDocument.ActiveLayer;
              corelApp.ActiveDocument.BeginCommandGroup();
     
              Shape polly = l.CreatePolygon2(0,0,20,3,0);
              l.CreateLinearDimension(cdrLinearDimensionType.cdrDimensionHorizontal, polly.SnapPoints[1], polly.SnapPoints[3],TextY: polly.TopY+5,TextSize:10d );
              l.CreateLinearDimension(cdrLinearDimensionType.cdrDimensionHorizontal, polly.SnapPoints[3], polly.SnapPoints[4],TextY: polly.TopY+25,TextSize:10d );
              SnapPoint sL = polly.SnapPoints.AddUserSnapPoint(polly.LeftX + 4, polly.BottomY + 4);
              SnapPoint sR = polly.SnapPoints.AddUserSnapPoint(polly.RightX - 4, polly.BottomY + 4);
              l.CreateLinearDimension(cdrLinearDimensionType.cdrDimensionHorizontal, sL, sR, TextY: polly.TopY + 15, TextSize: 10d);
     
              corelApp.ActiveDocument.EndCommandGroup();
          }