Тема: Свойства выделенных примитивов.

Как получить свойства выделенных примитивов. Если можно код программы с коментариями. Нашёл на Delphi просто замечательный пример хотелось бы аналогичный на C++.
Очень надо. Спасибо.
var Acad:IAcadApplication;
    SelSet:IAcadSelectionSet;
    i:integer;
begin
  Acad:=GetActiveOleObject('AutoCAD.Application') as IAcadApplication;
  with Acad.ActiveDocument do
    begin
      for i:=0 to SelectionSets.Count-1 do
        if SelectionSets.Item(i).Name='SelSet' then
          begin
            SelectionSets.Item(i).Delete;
            Break;
          end;
      SelSet:=SelectionSets.Add('SelSet');
      SelSet.SelectOnScreen(EmptyParam,EmptyParam);
      Memo1.Clear;
      for i:=0 to SelSet.Count-1 do
        begin
          case SelSet.Item(i).EntityType of
          acLine:   with (SelSet.Item(i) as iAcadLine) do
                      begin
                          //работы с примитивом line
                      end;
          acCircle: with (SelSet.Item(i) as iAcadCircle) do
                      begin
                          //работы с примитивом Circle
                      end;
          end; //case
        end; //for
        SelSet.Delete;
    end; //with
    Acad:=nil;
end;

Re: Свойства выделенных примитивов.

> PetovicH
Этот код написан с использованием ActiveX обращения к AutoCAD. Тебе нужен именно такой код или, так как эту тему ты завел в разделе ObjectARX, то с использованием ObjectARX? Это две совершенно разных вещи.

Re: Свойства выделенных примитивов.

Вприндципе всё равно, нужно получить именно параметры выделенных примитивов. С помощью чего лучше будет? Просто в книге "AutoCad разр. прил. и адаптация" для СИ используют ObjectARX. Код нужен на C++ пишу в VS.NET.

Re: Свойства выделенных примитивов.

> PetovicH
Если приложение можно запускать как команду AutoCAD, то намного удобнее и проще с использованием ObjectARX. Если же это отдельный exe-файл, который должен связваться с AutoCAD, то необходимо использовать ActiveX.
Внимательнее читайте вышеназванную книгу и посмотрите примеры на CD.

Re: Свойства выделенных примитивов.

А можно всё таки примерчик, если не трудно, можно ли верхний пример в си перебить? Просмотрел книгу побыстрому, но видно время надо, его нет совсем, горю. Спасибо.

Re: Свойства выделенных примитивов.

> PetovicH
Ну, например:

void SelectEnt(void)
{
  ads_name ss;
  long nss = 0;
  // Выбираем на экране примитивы и вычисляем их количество
  if (acedSSGet(NULL,NULL,NULL,NULL,ss) == RTNORM && acedSSLength(ss,&nss) == RTNORM)
  {
    // Цикл по всем примитивам
    for (long i = 0; i < nss; i++)
    {
      ads_name en;
      if (acedSSName(ss,i,en) != RTNORM) continue;
      AcDbObjectId eid;
      if (acdbGetObjectId(eid,en) != Acad::eOk) continue;
      // Открываем примитив для получения его типа
      AcDbObjectPointer<AcDbEntity> pEnt(eid,AcDb::kForRead);
      if (pEnt.openStatus() != Acad::eOk) continue;
      acutPrintf("\nN=%d ",i);
      if (AcDbCircle::cast(pEnt.object()))
      {
        // Обрабатываем окружность
      }
      else if (AcDbLine::cast(pEnt.object()))
      {
        // Обрабатываем отрезок
      }
      else if (AcDbPolyline::cast(pEnt.object()))
      {
        // Обрабатываем полилинию
      }
      else
      {
        // Не обрабатываем другие примитивы
        acutPrintf("Класс: %s",pEnt.object()->isA()->name());
      }
    }
    acedSSFree(ss);
  }
}

Re: Свойства выделенных примитивов.

Спасибо большое. Я так понимаю нужно запустить данную функцию из под AutoCad?