//-------------------------------------短线检查---------------------------------------------------------- void CleanupShortLine() { SetCurLayer(_T("checklayer"),250); ade_id cleanupVarId = ADE_NULLID; // variable ID ade_id cleanupModelId = ADE_NULLID; // clean ID ade_id cleanupactionVarId = ADE_NULLID; //variable ID ads_name ss; // selection set long qty = 0; // quantity数量 long totalqty=0; //所有错误的总和 int type = 0; // clean error group type int subtype = 0; // clean error group subtype int done = 0; //是否完成清理工作 int resultCode = 0; CString str; //给cleanup变量分配内存,变量初始化为它们的缺省值,使用tpm_varalloc. cleanupVarId = tpm_varalloc(); cleanupactionVarId=tpm_varalloc(); //为cleanup模型分配内存,使用 tpm_cleanalloc. cleanupModelId = tpm_cleanalloc(); if( ! cleanupVarId || ! cleanupModelId ||!cleanupactionVarId) { acutPrintf(_T("\n内存分配失败.")); tpm_varfree(cleanupVarId); tpm_cleanfree(cleanupModelId); return; } tpm_cleanactionlistins(cleanupVarId,1,1,cleanupactionVarId);//必须在tpm_cleaninit前调用 tpm_cleanactionlistins(cleanupVarId,2,256,cleanupactionVarId);//必须在tpm_cleaninit前调用 if(acedSSGet(_T("X"),NULL,NULL,NULL,ss)!= RTNORM)//第一个参数为NULL为自由选,“X”为全选 { acutPrintf(_T("\n获取选择集失败!")); tpm_varfree(cleanupVarId); tpm_cleanfree(cleanupModelId); tpm_varfree(cleanupactionVarId); return; } // 初始化一个目标选择集命名为 ss进行清理工作 tpm_cleaninit(cleanupModelId, cleanupVarId, ss);//初始化清理模型 resultCode = tpm_cleanstart(cleanupModelId);//开始清理进程 if( resultCode != RTNORM ) { acutPrintf(_T("\n清理工作启动失败.")); tpm_varfree(cleanupVarId); tpm_varfree(cleanupactionVarId); tpm_cleanfree(cleanupModelId); return; } // Count errors by group type and subtype while ( ! done) { resultCode = tpm_cleangroupnext(cleanupModelId); if ( resultCode == RTNORM ) { if (tpm_cleancomplete(cleanupModelId) == TRUE ) { done = 1; } else { type = tpm_cleangrouptype(cleanupModelId); subtype = tpm_cleangroupsubtype(cleanupModelId); tpm_cleangroupqty(cleanupModelId, &qty); tpm_cleangroupmark(cleanupModelId); // tpm_cleangroupfix(cleanupModelId); if(qty>0) { acutPrintf(_T("\n组类型:%d,子类型:%d,错误数目:% d"),type,subtype,qty); totalqty+=qty; } } // else } // if else { acutPrintf(_T("\n没有要清理的对象")); } } // while resultCode = tpm_cleanend(cleanupModelId);//完成清理进程并更新图形,修复被tpm_cleanerrorfix指定的 要修复的错误 resultCode = acedSSFree(ss);//最后释放选择集 tpm_cleanfree(cleanupModelId);//释放清理模型 tpm_varfree(cleanupVarId);//释放配置变量 tpm_varfree(cleanupactionVarId);//释放配置变量 if(totalqty==0) str.Format(_T("\n恭喜!未找到任何错误。")); else str.Format(_T("短线错误%d处"),totalqty); acedAlert(str); }
|