На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Как сделать зарамочное оформление

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Как сделать зарамочное оформление
 
Добрый день.
В MapApi есть функция mapAddMarginalRepresentationSite для добавления зарамочного оформления. Вызываю ее таким образом:

int n;
HSITE Site;
MapView->MapFileName = "C:\\TMP\\3\\N3914.MAP";
// Пользоавтельская карта с классификатором frame.rsc
n = MapView->MapSites->Append("C:\\TMP\\3\\frame.sit");
Site = MapView->MapSites->MapSites[n]->SiteHandle;

DFRAME frame;
long int fres;
HINSTANCE dllInstance;
long int (WINAPI *proc)(HMAP hmap, HSITE hsite, const char *frmname, DFRAME *frame);

dllInstance = ::LoadLibrary( "C:\\Program Files\\Borland\\CBuilder6\\GisTool10\\Dll\\gisacces.dll") ;
(FARPROC&) proc = GetProcAddress(dllInstance, "mapAddMarginalRepresentationSite");

frame.X1 = 6010000;
frame.Y1 = 9390000;
frame.X2 = 6030000;
frame.Y2 = 9410000;

fres = (*proc)(MapView->MapHandle,Site, "C:\\TMP\\3\\_frame.frm", &frame);

::FreeLibrary(dllInstance);

При этом на пользовательскую карту не наносится вообще ничего. Подскажите, пожалуйста, где у меня ошибка или опубликуйте какой-нибудь пример нанесения зарамочного оформления.
 
Пример использования:
Код
// --------------------------------------------------------------
// Создать site с зарамочным оформлением
// при ошибке или отказе возвращает 0
// --------------------------------------------------------------
HSITE comMarginalRepresentationCreateSite
                     (HMAP hmap, TASKPARM *taskparm,
                      FRAMEPRINTPARAM *frameparam, MARGREPRESFILE *margrepres)
{
if (!taskparm || !hmap || !frameparam || !margrepres) return 0;

CREATESITE  createsite;
memset(&createsite,0,sizeof(CREATESITE));
createsite.Length = sizeof(CREATESITE);
strncpy(createsite.MapName,"ОФОРМЛЕНИЕ",sizeof(createsite.MapName)-1);
createsite.MapType = -1;                  // Обобщенный тип карты
createsite.MaterialProjection = -1;       // Проекция исх. материала
createsite.Scale = mapGetMapScale(hmap);  // Знаменатель масштаба карты

MAPREGISTER  mapreg;
LISTREGISTER sheetreg;
if (mapGetMapInfo(hmap,1,&mapreg,&sheetreg))
   {
   createsite.MapType             = mapreg.MapType;
   createsite.MaterialProjection  = mapreg.MaterialProjection;
   createsite.Scale               = mapreg.Scale;
   createsite.FirstMainParallel   = mapreg.FirstMainParallel;
   createsite.SecondMainParallel  = mapreg.SecondMainParallel;
   createsite.AxisMeridian        = mapreg.AxisMeridian;
   createsite.MainPointParallel   = mapreg.MainPointParallel;
   }

HSITE site = mapCreateAndAppendSite(hmap,margrepres->SitName,margrepres->RscName,&createsite);
if (!site) return 0;

// Строим Site с прямыми габаритами
int count =  mapGetSiteObjectCount(hmap,site);

// Сделать левый объект ненаклонный
HOBJ info = mapCreateSiteObject(hmap,site,IDDOUBLE2,0);
if (info)
   {
   mapRegisterDrawObject(info, 0, LOCAL_SQUARE);

   // Возврат к прежнему тексту (объект не отображался на печати) 
   IMGSQUARE parm;                                      // 16/04/08
   parm.Color = 0x0FFFFFF;
   mapAppendDraw(info, IMG_SQUARE, (const char *)&parm);

   mapAppendPointPlane(info,frameparam->PlaneFrame.X1,frameparam->PlaneFrame.Y1,0);
   mapAppendPointPlane(info,frameparam->PlaneFrame.X2,frameparam->PlaneFrame.Y1,0);
   mapAppendPointPlane(info,frameparam->PlaneFrame.X2,frameparam->PlaneFrame.Y2,0);
   mapAppendPointPlane(info,frameparam->PlaneFrame.X1,frameparam->PlaneFrame.Y2,0);
   mapAppendPointPlane(info,frameparam->PlaneFrame.X1,frameparam->PlaneFrame.Y1,0);
   if (mapCreateSubject(info))
      {
      mapAppendPointPlane(info,frameparam->PlaneFrame.X1,frameparam->PlaneFrame.Y1,1);
      mapAppendPointPlane(info,frameparam->PlaneFrame.X2,frameparam->PlaneFrame.Y1,1);
      mapAppendPointPlane(info,frameparam->PlaneFrame.X2,frameparam->PlaneFrame.Y2,1);
      mapAppendPointPlane(info,frameparam->PlaneFrame.X1,frameparam->PlaneFrame.Y2,1);
      mapAppendPointPlane(info,frameparam->PlaneFrame.X1,frameparam->PlaneFrame.Y1,1);
      }
   mapCommit(info);
   mapFreeObject(info);
   }

int endcount = mapGetSiteObjectCount(hmap,site);

if (mapAddMarginalRepresentationSiteEx(hmap,site,margrepres->FrmName,
                                       &frameparam->PlaneFrame,
                                       0,0))
   {
   // Расширенные габариты
   FRAMEPRINTPARAM frameparamex;
   frameparamex.PlaneFrame.Y1 = mapGetSiteY1(hmap,site);
   frameparamex.PlaneFrame.Y2 = mapGetSiteY2(hmap,site);
   frameparamex.PlaneFrame.X1 = mapGetSiteX1(hmap,site);
   frameparamex.PlaneFrame.X2 = mapGetSiteX2(hmap,site);

   HOBJ info = mapCreateSiteObject(hmap,site,IDDOUBLE2,0);
   if (info)
      {
      if (mapReadObjectByNumber(hmap,site,info,1,endcount))
         {
         mapUpdatePointPlane(info,frameparamex.PlaneFrame.X1,frameparamex.PlaneFrame.Y1,1,0);
         mapUpdatePointPlane(info,frameparamex.PlaneFrame.X2,frameparamex.PlaneFrame.Y1,2,0);
         mapUpdatePointPlane(info,frameparamex.PlaneFrame.X2,frameparamex.PlaneFrame.Y2,3,0);
         mapUpdatePointPlane(info,frameparamex.PlaneFrame.X1,frameparamex.PlaneFrame.Y2,4,0);
         mapUpdatePointPlane(info,frameparamex.PlaneFrame.X1,frameparamex.PlaneFrame.Y1,5,0);
         mapCommit(info);
         }
      mapFreeObject(info);
      }
   }
else
   return 0;

frameparam->SiteDecor = site;
return site;
}
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности