Тема: Выделение множества объектов.

Здравствуйте. Задача: выделять линии в акаде и импортировать координаты начала и конца в текстовый файл. Решена наполовину. Вызываю комманду (сделал кнопку в акаде-благо не трудно) - выбираю линию. Затем команду вызываю еще раз - выбираю другую линию. и т.д. Если линий много, то постоянно вызывать комманду замучаешься да и не правильно это. Как можно осуществить выбор нескольких объектов без завершения работы функции или даже рамкой.
И еще сразу вопрос, не подскажите как можно определить кроме линии заштрихованный контур. Если это обсуждалось - пошлите меня по ссылке. Спасибо.

Re: Выделение множества объектов.

Я так понимаю, что ты выбирал линии при помощи acedEntsel. Посмотри на функцию acedSSGet.

Re: Выделение множества объектов.

Вот мой код. Выбираю и добавляю в файл. Часть кода взята от Н.Н.Полещука
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) ;
    }

Re: Выделение множества объектов.

Ну и? На acedSSget посмотрел? И это что такое:

if (pLine == NULL) acedAlert(_T("Это не отрезок"));
pLine->getStartPoint(pStart); // начало

Если выберешь не отрезок - развал AutoCAD обеспечен.