Всем привет!
1. Сначала возникла задача передавать между методами, анализировать и, наконец, хранить в БД мультиточку.
2. Далее метод HRESULT AddPoint(IPoint* inPoint,VARIANT* before,VARIANT* after) имея 2 последних параметра необязательными не захотел компилироваться без них (как я понял, необязательные параметры поддерживаются только в VB.Net), а с нулями вылетал в Exception. Это ладно, пришлось учить мат.часть, что привело к знакомству с System::Object *obj = System::Type:Missing;
После подстановки такой чтуковины во 2 и 3 параметры все заработало.
3. Затем стало понятно, что так как мы привыкли с IPointCollection и IGeometry плюс метод AddPoint(...) не работается - результат не сохраняется в мультиточке. Э-э-х, опять изучение мат.части, но у ArcObject. Оказалось, что и Help читаем сквозь пальцы, а там...
AddPoint(...) "Adds a vertex to a Path, Ring, Polyline, or Polygon; or adds a reference to the input point to a Multipoint, TriangleFan, or TriangleStrip." То есть, в мультиточку только ссылки пишем... Дальше по Чернышевскому: что делать? Пришлось насильно впихивать эту точку:
System::Object *obj;
ESRI::ArcGIS::Geometry::IGeometry *ipGeom;
ESRI::ArcGIS::Geometry::IPointCollection *ipPC;
ESRI::ArcGIS::Geometry::IPoint *ipP;
ESRI::ArcGIS::esriSystem::IClone *ipClone;
ipGeom = new ESRI::ArcGIS::Geometry::MultipointClass();
ipP = new ESRI::ArcGIS::Geometry::PointClass();
obj = System::Type::Missing;
// создание точки
ipPC = (ESRI::ArcGIS::Geometry::IPointCollection*)ipGeom;
ipP->set_X(10);
ipP->set_Y(10);
// добавление точки в коллекцию и, соответсвенно, в мультиточку
ipClone = (ESRI::ArcGIS::esriSystem::IClone*)ipP;
ipPC->AddPoint((ESRI::ArcGIS::Geometry::IPoint*)(ipClone->Clone()),&obj,&obj);
Так заработало, но...
4. Скорость выполнения программы упала в 2,5!!! раза. Ну, надо нам эдак 1,5 тыс. точек закатать в мультиточку... А клонирование (читай, копирование) просто тормозит не по-детски.
Вот и вопрос, кто-нибудь знает другие способы? Как увеличить производительность создания мультиточки?