Hi All,
Debugging the chain selection's data model I got the following information:
oper.contours: oper.parameters.itemByName("contours").value.getCurveSelections().count=1
0 <adsk.cam.ChainSelection; proxy of <Swig Object of type 'adsk::core::Ptr< adsk::cam::ChainSelection > *' at 0x000002526AEE4900> >
inputGeometry : <adsk.core.BaseVector; proxy of <Swig Object of type 'std::vector< adsk::core::Ptr< adsk::core::Base > > *' at 0x000002526AE2D7D0> >
startExtensionLength : -762.0
endExtensionLength : -762.0
hasError/hasWarning : False / False
isOpen : True
[iterable] len(cs.inputGeometry)=2
<adsk.fusion.BRepEdge; proxy of <Swig Object of type 'std::vector< adsk::core::Ptr< adsk::fusion::BRepEdge > >::value_type *' at 0x000002526AE2D710> >
length : 187.4519999999987
entityToken : /v4BAAAARlJLZXkAH4sIAAAAAAAA/62Su4oVQRCGQzNfwQZDKahbd1cHRt4iAxPBxKWvYiYivoD5piY+hU+ypr6DgZkgiN199hw4ycKKMwP9T/VX/0/XDDp2OG+aKx0U237TVQnu0+vLV9/uPaPL/uXXnav7dyfBToIbqhlDE5BkHbQUD2mQh1o1chvUUk3TY5IcC/pSCBrJJEdKYM1kki0nomEx1e04xBhLArKIoG3ClhLB8A21+24++8VZ86KRApAog+bA069EQB8a1kHW4s4dTFJqTsAxpplrCZJJBOol1qSsXeVwxkcvPn/88ef5w68/fz9+8P2K9/mng+QSsHQGTF5Ayc+kgAGwjJxRhnixOQ/9Dy60yOyLJw4VENcErBiY9QGZspqvXdXGzVltzaaZgXBfM/QdsucMODRRG12jHr73nJATz24uOptX/q4S7kvkpPik6KjQ9h+zQ/+hKd2+6fhz3qYNXW9v+sX7Xt++6xctf8juiTMHdP2we+oWN+US17WXB0R2jY+b59TyPuPkbPvUMLm/DBhcr2ADAAA=
startVertex : (3.8100009765626623, 3.174994873047055, 0.0)
endVertex : (3.8100009765626055, 190.62699487304576, 0.0)
assemblyContext : ROOF:2
nativeObject : <adsk.fusion.BRepEdge; proxy of <Swig Object of type 'std::vector< adsk::core::Ptr< adsk::fusion::BRepEdge > >::value_type *' at 0x000002526C015290> >
nativeObject -> entityToken : /v4BAAAARlJLZXkAH4sIAAAAAAAA/51QOwoCMRD1KNNLIJlJ1lhY+eksbGyXYLJiJyJexXt4EmvvYGEtiJPZD6zdOgnM4817b0I0IGg+hrupEXpGBmxmCphvrpfnZz27vd6L8eOOoqQCYnRko/eKMGllo0sqOAxKV3ZqYpXsxOZkyRj9lOzTIOssEJBD4GaZ5UvCGi1F1CHskGmR9hIlb/rDNB1uan9piE1DivtUntLucExlDOcAS/CgTHMRVpB1DDNouG0tIeGwHfZVObuno964M7DuC2US2W/pAQAA
<adsk.fusion.BRepEdge; proxy of <Swig Object of type 'std::vector< adsk::core::Ptr< adsk::fusion::BRepEdge > >::value_type *' at 0x000002526C0176F0> >
length : 187.4519999999987
entityToken : /v4BAAAARlJLZXkAH4sIAAAAAAAA/62Su4oVQRCGQzNfwQZDKahbd1cHRt4iAxPBxKWvYiYivoD5piY+hU+ypr6DgZkgiN199hw4ycKKMwP9T/VX/0/XDDp2OG+aKx0U237TVQnu0+vLV9/uPaPL/uXXnav7dyfBToIbqhlDE5BkHbQUD2mQh1o1chvUUk3TY5IcC/pSCBrJJEdKYM1kki0nomEx1e04xBhLArKIoG3ClhLB8A21+24++8VZ86KRApAog+bA069EQB8a1kHW4s4dTFJqTsAxpplrCZJJBOol1qSsXeVwxkcvPn/88ef5w68/fz9+8P2K9/mng+QSsHQGTF5Ayc+kgAGwjJxRhnixOQ/9Dy60yOyLJw4VENcErBiY9QGZspqvXdXGzVltzaaZgXBfM/QdsucMODRRG12jHr73nJATz24uOptX/q4S7kvkpPik6KjQ9h+zQ/+hKd2+6fhz3qYNXW9v+sX7Xt++6xctf8juiTMHdP2we+oWN+US17WXB0R2jY+b59TyPuPkbPvUMLm/DBhcr2ADAAA=
startVertex : (3.8100009765626623, 3.174994873047055, 0.0)
endVertex : (3.8100009765626055, 190.62699487304576, 0.0)
assemblyContext : ROOF:2
nativeObject : <adsk.fusion.BRepEdge; proxy of <Swig Object of type 'std::vector< adsk::core::Ptr< adsk::fusion::BRepEdge > >::value_type *' at 0x000002526AA04B10> >
nativeObject -> entityToken : /v4BAAAARlJLZXkAH4sIAAAAAAAA/51QOwoCMRD1KNNLIJlJ1lhY+eksbGyXYLJiJyJexXt4EmvvYGEtiJPZD6zdOgnM4817b0I0IGg+hrupEXpGBmxmCphvrpfnZz27vd6L8eOOoqQCYnRko/eKMGllo0sqOAxKV3ZqYpXsxOZkyRj9lOzTIOssEJBD4GaZ5UvCGi1F1CHskGmR9hIlb/rDNB1uan9piE1DivtUntLucExlDOcAS/CgTHMRVpB1DDNouG0tIeGwHfZVObuno964M7DuC2US2W/pAQAA
This is the configuration from the GUI I made to this test:
- A 2D-Contour operation
- A single chain selection on it
- A single edge in the chain selection

I can see in the data model for the chain selection that it contains TWO reference to the edge:
len(chainSelection.inputGeometry) is equal to 2
and that the edge is proxy from the occurrence it belongs (ROOF:2).
Comparing the already defined chain selection with the one I want to add with the API, they are the same:
x- outer_edge[EDGE]=<adsk.fusion.BRepEdge; proxy of <Swig Object of type 'std::vector< adsk::core::Ptr< adsk::fusion::BRepEdge > >::value_type *' at 0x000002526BFEDE00> >
length : 187.4519999999987
entityToken : /v4BAAAARlJLZXkAH4sIAAAAAAAA/51Qu04EMQz8FffIkmM7OW9BxaOjoKE9ZTcJokMI8Sv8x33J1fwDBTUSIsnerrQN0pFE8mg8M1ZMwED1ulrdjNgqcqCNCXB1//72+XN3efj6vr74OHJXSgCJY6AxM9LgBdV5RgsUkMYSI0kRLy2nKqMfveMwIdGOUG00NMsFo4tqfsqqVv6elZIXTWYonGtC8hmj54hUdHCpZN3p/AsFAfEMtWg1t/mdddSPyIp4RW5BZH0Pfeg/TMP5pmXl59gIcnrM+5c8PT3nfYqvEW7AAN3pMdxC01XYwIl7mCXSOV6aW1XL3uhk014NVfcLibEpjDYCAAA=
startVertex : (3.8100009765626623, 3.174994873047055, 0.0)
endVertex : (3.8100009765626055, 190.62699487304576, 0.0)
assemblyContext : ROOF:2
nativeObject : <adsk.fusion.BRepEdge; proxy of <Swig Object of type 'std::vector< adsk::core::Ptr< adsk::fusion::BRepEdge > >::value_type *' at 0x000002526BFEF660> >
nativeObject -> entityToken : /v4BAAAARlJLZXkAH4sIAAAAAAAA/51QOwoCMRD1KNNLIJlJ1lhY+eksbGyXYLJiJyJexXt4EmvvYGEtiJPZD6zdOgnM4817b0I0IGg+hrupEXpGBmxmCphvrpfnZz27vd6L8eOOoqQCYnRko/eKMGllo0sqOAxKV3ZqYpXsxOZkyRj9lOzTIOssEJBD4GaZ5UvCGi1F1CHskGmR9hIlb/rDNB1uan9piE1DivtUntLucExlDOcAS/CgTHMRVpB1DDNouG0tIeGwHfZVObuno964M7DuC2US2W/pAQAA
Both point to the same edge in the data model, both are a proxy, and also comparing their entityToken I can confirm it is the same object referenced.
Other tests I made with API code were:
- a design which does NOT contain a Manufacturing Model
- a design with a manually created Manufacturing Model which references the model (notice there were created 4 chain selections of 1 edge each), as shown in the following image:

So, how can I add a chain selection to 2D-Contour operation which setup is defined over a Manufacturing Model which contain a Nesting Study?
Regards,
Jorge Jaramillo