Вот мой код. Выбираю и добавляю в файл. Часть кода взята от Н.Н.Полещука
http://www.private.peterlink.ru/poleshc … Inters.htm
static int ads_imp(void)
{
//----- Remove the following line if you do not expect any argument for this ADS function
struct resbuf *pArgs =acedGetArgs () ;
// TODO: add your code here
int es1, es2;
ads_name ent1, ent2;
ads_point pt1, pt2;
AcDbObjectId entId1, entId2;
AcDbEntity* pEnt1 = NULL;
AcDbEntity* pEnt2 = NULL;
AcGePoint3dArray points;
AcGePoint3d pStart, pEnd;
int CountOtr=10;
char Str[256];
// Выбор первого объекта по запросу
es1 = acedEntSel(_T("\nУкажите объект 1: "), ent1, pt1);
// Вычисление ID для перехода от ads_name к AcDbObjectId
es1 = acdbGetObjectId(entId1, ent1);
// Вычисление указателя на AcDbEntity
es1 = acdbOpenAcDbEntity(pEnt1, entId1, AcDb::kForRead);
// Подсветка первого объекта
pEnt1->highlight();
AcDbLine * pLine = AcDbLine::cast(pEnt1);
if (pLine == NULL) acedAlert(_T("Это не отрезок"));
pLine->getStartPoint(pStart); // начало
pLine->getEndPoint(pEnd); // конец
pEnt1->close();
if ((fa=fopen("in000Sx.dat","a"))!=NULL)
{
sprintf(Str,"%10.0f%10.0f%10.0f%10.0f",pStart.x,-pStart.y,pEnd.x,-pEnd.y);
fprintf(fa,Str);
fprintf(fa,"\n");
fclose(fa);
}
// TODO: Replace the following line by your returned value if any
acedRetVoid () ;
return (RSRSLT) ;
}