#简单模拟多段线绘制Pline命令过程的撤销功能
###这是关于多段线pline命令中的撤销功能的简单代码
代码使用了事务管理器来执行增加对象和撤销处理.
####代码
/// <summary>
/// 简单模拟多段线绘制过程的撤销功能.
/// code by edata 2020-3-11
/// </summary>
/// <remarks>简单模拟多段线绘制过程的_u撤销功能.仅考虑了UCS问题</remarks>
//设置坐标系转换缓冲区链表
resbuf ucs,wcs;
ucs.restype=RTSHORT;
ucs.resval.rint=1;
wcs.restype=RTSHORT;
wcs.resval.rint=0;
ads_point pt;
ads_point ptWcs;
if (RTNORM != acedGetPoint(NULL,_T("\n 选择起点: "),pt))
{
return;
}
acedTrans(pt,&ucs,&wcs,0,ptWcs);
AcGePoint3d p1=asPnt3d(ptWcs);
AcGePoint3d ptStart=p1;
AcDbPolyline *pPoly=NULL;
//开启事务管理器
AcTransaction *pTrans =actrTransactionManager->startTransaction();
while (true)
{
CString strPrompt=_T("\n 选择下一个点[(U)撤销]: ");
CString strKword=_T("Undo _ u");
if (pPoly!=NULL)
{
int nCount =pPoly->numV