Problem code
static void MyGroupMyCommand1 () {
ads_name sset;
resbuf *rbList = acutBuildList(RTDXF0, _T("LINE"), RTNONE);
int result = acedSSGet(NULL, NULL, NULL, rbList, sset);
if (result != RTNORM) { return; }
Adesk::Int32 length = 0;
acedSSLength(sset, &length);
Acad::ErrorStatus es = Acad::eOk;
resbuf StartTime;
acedGetVar(_RXST("TDUSRTIMER"), &StartTime);
vector<AcGePoint3dArray> dat,dat2;
vector<AcGePoint3dArray> dattemp1;
AcGePoint3dArray dattemp,dat3;
for (int i = 0; i < length; i++)
{
ads_name ename;
acedSSName(sset, i, ename);
dattemp.removeAll();
AcDbObjectId objId = AcDbObjectId::kNull;
es = acdbGetObjectId(objId, ename);
if (es != Acad::eOk) { continue; }
AcDbEntity* pEnt = NULL;
es = acdbOpenObject(pEnt, objId, AcDb::kForRead);
if (es != Acad::eOk) { continue; }
if (pEnt->isKindOf(AcDbCurve::desc()))
{
AcDbCurve* pCurve = AcDbCurve::cast(pEnt);
AcGePoint3d staPt,entPt;
pCurve->getStartPoint(staPt);
pCurve->getEndPoint(entPt);
AcGePoint3dArray pa1;
pa1.append(staPt);
pa1.append(entPt);
dat2.push_back(pa1);
dat3.append(staPt);
dat3.append(entPt);
pa1.removeAll();
pCurve->close();
}
pEnt->close();
}
acedSSFree(sset);
AcGePoint3dArray dat4 =deletePoint(dat3,1e-7);
acutPrintf(_RXST("\ndat3: %d \n"), dat3.length());
acutPrintf(_RXST("\ndat4: %d \n"), dat4.length());
acutPrintf(_RXST("\ndat2: %d \n"), dat2.size());
map<int, AcGePoint3d> dats;
dats.clear();
for (int i = 1; i < dat4.length()+1; i++)
{
dats.insert(pair<int, AcGePoint3d>(i, dat4.at(i - 1)));
}
vector<vector<int>> dat5;
AcGePoint3d pp0,pp1;
for (int i = 0; i < dat2.size(); i++)
{
pp0=dat2.at(i).at(0);
pp1=dat2.at(i).at(1);
int k1,k2;
for(map<int, AcGePoint3d>::const_iterator it = dats.begin(); it != dats.end(); ++it)
{
if (pp0.distanceTo(it->second) < 1e-7)
{
k1=it->first;
}
if (pp1.distanceTo(it->second) < 1e-7)
{
k2=it->first;
}
}
vector<int> temp;
temp.push_back(k1);
temp.push_back(k2);
dat5.push_back(temp);
acutPrintf(_RXST("\n %d = %d _ %d"), i,k1,k2);
}
map<int, vector<int>> dat6;
for (int i = 1; i < dats.size(); i++)
{
vector<int> temp;
temp.clear();
for (int ii = 0; ii < dat5.size(); ii++)
{
if (dat5.at(ii).at(0) == i)
{
temp.push_back(dat5.at(ii).at(1));
}
if (dat5.at(ii).at(1) == i)
{
temp.push_back(dat5.at(ii).at(0));
}
}
dat6.insert(pair<int, vector<int>>(i, temp));
}
vector<int> temp,temp1,temp2,temp3;
vector<vector<int>> temps,temps1,temps2,temps3;
for (int i = 0; i < dat5.size(); i++)
{
int a1=dat5.at(i).at(0);
int a2=dat5.at(i).at(1);
temp.push_back(a1);
temp.push_back(a2);
temps.push_back(temp);
while (temps1.size() != 2)
{
temp3.clear();
for (int ii = 0; ii < temps.size(); ii++)
{
temp1=temps.at(ii);
int a3=temp1.back();
int a4=temp1.at(temp1.size() - 2);
auto it1 =dat6.find(a3);
vector<int> kk=it1->second;
for (int iii = 0; iii < kk.size(); iii++)
{
temp3=temp1;
int a5 = kk.at(iii);
if ( a5 != a4 )
{
temp3.push_back(kk.at(iii));
temps2.push_back(temp3);
}
if ( a5 = a1 || temp1.size() > 2)
{
temp3.push_back(a5);
temps1.push_back(temp3);
}
}
}
temps=temps2;
}
}
resbuf EndTime;
acedGetVar(_RXST("TDUSRTIMER"), &EndTime);
ads_real UserTime;
UserTime = 86400.0 * (EndTime.resval.rreal - StartTime.resval.rreal);
TCHAR ChTime[50];
acdbRToS(UserTime, 2, 8, ChTime);
acutPrintf(_RXST("\nTime: %s \n"), ChTime);
}