Breaks linear objects where they cross boundaries.
int
map_dwgbreakobj(
ads_name sscut,
ads_name boundary,
short skiptopo,
short keepod,
ads_name ssreturn);
Returns RTNORM or RTERROR.
| sscut | Selection set of objects to cut. |
| boundary | Object name of a single object or a selection set of multiple objects. Valid objects: line, polyline, circle, arc. |
| skiptopo | Skip flag: 1 Skip objects referenced by a topology 0 Trim objects referenced by a topology |
| keepod | Keep flag that sets whether to keep object data of clipped objects in result object: 1 Retain all object data on any clipped object 0 Drop object data on any clipped object |
| ssreturn | A selection set of cut objects. |
This function cuts linear objects, such as lines, polylines, circles, and arcs, that cross the selected boundary. Unlike the map_dwgtrimobj function, this function does not delete the parts of the object on either side of the boundary. For example, you could mark a boundary and divide one map into two section maps along this boundary.
The following sample creates a filtered selection set of objects to be cut, (broken) and a filtered selection set containing one object to be used as the cutting edge. Map_dwgBreakObj() is called with all required parameters and if the operation is successful, the number of objects retained is reported. Resbufs are released as required and selection sets are freed.
struct resbuf* pFilteredCutObjsRb = acutBuildList(
RTDXF0, "LWPOLYLINE",
8, "Landbase",
0);
ads_name ssObjsToCut;
acedSSGet("_X", NULL, NULL, pFilteredCutObjsRb, ssObjsToCut);
struct resbuf* pFilteredObjsToCutRb = acutBuildList(
RTDXF0, "LWPOLYLINE",
8, "MapEdge",
0);
ads_name boundaryObj;
acedSSGet("X", NULL, NULL, pFilteredObjsToCutRb, boundaryObj);
short skipTopoObjs = 1; // Skip
short keepObjectData = 1; // Retain
ads_name ssObjsAreCut;
int resultCode = map_dwgBreakObj(
ssObjsToCut,
boundaryObj,
skipTopoObjs,
keepObjectData,
ssObjsAreCut);
if (RTNORM == resultCode){
long ssObjsAreCutLength;
acedSSLength(ssObjsAreCut, &ssObjsAreCutLength;);
acutPrintf(
"\n%d objects have been retained."
, ssObjsAreCutLength);
}
else {
acutPrintf(
"\nUnable to complete the boundary break.");
}
acutRelRb(pFilteredCutObjsRb);
acutRelRb(pFilteredObjsToCutRb);
resultCode = acedSSFree(boundaryObj);


