20/02/2015
Используем геолокацию с помощью ObjectARX
Это пример кода работы с геолокацией в чертеже AutoCAD. Если вы ищете пример кода на .NET, тогда посмотрите эту статью.
Чтобы попробовать этот код, вы должны быть подписаны на использование Autodesk 360 внутри AutoCAD.
Код - C++: [Выделить]
- AcDbDatabase *pDb
- = acdbHostApplicationServices()->workingDatabase();
- AcDbBlockTable *pBlockTable;
- pDb->getSymbolTable(pBlockTable, AcDb::kForRead);
- AcDbObjectId msId = AcDbObjectId::kNull;
- pBlockTable->getAt(ACDB_MODEL_SPACE, msId);
- pBlockTable->close();
- AcDbGeoData *pGeoData = new AcDbGeoData();
- pGeoData->setBlockTableRecordId(msId);
- AcDbObjectId geodataId = AcDbObjectId::kNull;
- pGeoData->postToDb(geodataId);
- // Система координат
- pGeoData->setCoordinateSystem(ACRX_T("WORLD-MERCATOR" ));
- pGeoData->setCoordinateType(AcDbGeoData::kCoordTypGrid);
- // Получаем точку в пространстве модели для
- // Широты = 37.8109 и Долготы = -122.4776
- AcGePoint3d geoPoint(-122.4776, 37.8109, 0);
- AcGePoint3d drawingPt = AcGePoint3d::kOrigin;
- pGeoData->transformFromLonLatAlt(geoPoint, drawingPt);
- pGeoData->setHorizontalUnits(AcDb::UnitsValue::kUnitsMeters);
- pGeoData->setVerticalUnits(AcDb::UnitsValue::kUnitsMeters);
- // Устанавливаем точку пространства модели;
- pGeoData->setDesignPoint(drawingPt);
- // Устанавливаем геолокационную точку.
- pGeoData->setReferencePoint(geoPoint);
- pGeoData->close();
- AcApDocument *pDoc = acDocManager->document(
- acdbHostApplicationServices()->workingDatabase());
- ACHAR zoomWcommand[200];
- AcGePoint3d pt1 = drawingPt + AcGeVector3d(-5000.0, 5000.0, 0.0);
- AcGePoint3d pt2 = drawingPt + AcGeVector3d(5000.0, -5000.0, 0.0);
- acutSPrintf(zoomWcommand,
- ACRX_T("_.ZOOM _W %lf,%lf %lf,%lf " ), pt1.x, pt1.y, pt2.x, pt2.y);
- acDocManager->sendStringToExecute(pDoc, zoomWcommand,
- false , true , false );
- acDocManager->sendStringToExecute(pDoc,
- L"_GEOMAP _Road " ,
- false , true , false );
Широта и долгота точки, указанной в коде соответствует началу Моста Золотые Ворота.
А вот и картинка:
Источник: http://adndevblog.typepad.com/autocad/2015/02/attaching-geo-location-data-using-objectarx.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=1883
Опубликовано 20.02.2015Отредактировано 20.02.2015 в 16:17:21