|
[code]Acad::ErrorStatus AuPolyline::subIntersectWith(const AcDbEntity* pEnt,
AcDb::Intersect intType,
AcGePoint3dArray& points,
Adesk::GsMarker thisGsMarker,
Adesk::GsMarker otherGsMarker) const
{
if (thisGsMarker < 1000) {
return AcDbPolyline::subIntersectWith(pEnt, intType, points, thisGsMarker, otherGsMarker);
} else {
Acad::ErrorStatus es = Acad::eOk;
objArray::const_iterator it;
int gs = 1000;
for(it = m_Array.begin();it!=m_Array.end() && gs < thisGsMarker; it++, gs +=100);
if (it != m_Array.end() && gs == thisGsMarker)
{
AcRxObject* intPtr=0;
intPtr=(*it).second;
if (intPtr) {
AcDbEntity *pSubEnt = AcDbEntity::cast(intPtr);
if (pSubEnt) {
es = pSubEnt->intersectWith(pEnt, intType, points, 0 /* thisGsMarker */, otherGsMarker);
return es;
}
}
}
}
return Acad::eOk;
}
Acad::ErrorStatus AuPolyline::subIntersectWith(const AcDbEntity* pEnt,
AcDb::Intersect intType,
const AcGePlane& projPlane,
AcGePoint3dArray& points,
Adesk::GsMarker thisGsMarker,
Adesk::GsMarker otherGsMarker) const
{
if (thisGsMarker < 1000) {
return AcDbPolyline::subIntersectWith(pEnt, intType, projPlane, points, thisGsMarker, otherGsMarker);
} else {
Acad::ErrorStatus es = Acad::eOk;
objArray::const_iterator it;
int gs = 1000;
for(it=m_Array.begin();it!=m_Array.end() && gs < thisGsMarker;it++, gs +=100);
if (it != m_Array.end() && gs == thisGsMarker)
{
AcRxObject* intPtr=0;
intPtr=(*it).second;
if (intPtr) {
AcDbEntity *pSubEnt = AcDbEntity::cast(intPtr);
if (pSubEnt) {
es = pSubEnt->intersectWith(pEnt, intType, projPlane, points, 0 /* thisGsMarker */, otherGsMarker);
return es;
}
}
}
}
return Acad::eOk;
}[/code] |
|