Re: Open new design file while seeing the actual one



Why don't you open the model using mdlWorkDgn_openFile and then call
mdlModelRef_getRange?

Saludos,
Juan

<grotero@xxxxxxxxxxxx> escribió en el mensaje
news:1153735377.894867.57170@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Can anybody tell me what's wrong in this code?
It fails when executing the line "mdlElement_extractRange(&vector,
&elDP->el);". The error is "Cancelation of MDL in line......."
What this function is trying to do is to obtain the yMax (the maximum
value "y" of a extern file).

Private double calculateYMax
(
FILE *f
)
{

Scanlist scanList;
ULong elemAddr[50], filePos;
int fileNum, i, j, numAddr, scanWords, currFile, numPoints;
int init_status, scan_status;
DPoint3d origin, end;
MSElement el;
double yMax = 0.0;
Dvector3d vector;


/*-----------------------------------------------------+
| initialize scan to start from begining of file |
+-----------------------------------------------------*/
mdlScan_initScanlist (&scanList);
mdlScan_setDrawnElements(&scanList);
mdlScan_noRangeCheck(&scanList);

for (i=0; i<4; i++)
scanList.levmask[i] = 0x0000;

scanList.typmask[0] = TMSK0_LINE|TMSK0_LINE_STRING|TMSK0_SHAPE;

scanList.typmask[1] = 0x0000;
scanList.typmask[2] = 0x0000;
scanList.typmask[3] = 0x0000;
scanList.typmask[4] = 0x0000;
scanList.typmask[5] = 0x0000;
scanList.typmask[6] = 0x0000;
scanList.typmask[7] = 0x0000;

scanList.scantype = ELEMTYPE;
scanList.extendedType = FILEPOS;

if (f!=NULL)
{
mdlScan_initOpenedFile (f, &scanList);
}
filePos = 0L;
fileNum = 0;
scanWords = 0;

if ((init_status = mdlScan_initialize (fileNum, &scanList)) ==
SUCCESS);
{

do
{
scan_status = mdlScan_file (elemAddr, &scanWords,
sizeof(elemAddr), &filePos);
numAddr = scanWords / sizeof(short);

for (i=0; i<numAddr; i++)
{
MSElementDescr *elDP=NULL;

mdlWorkDgn_read(&elDP,elemAddr[i],f,NULL,0);
mdlElmdscr_read (&elDP, elemAddr[i], f, FALSE, NULL);


/* THIS LINE IS THE ONE WHICH IS FAILING */
mdlElement_extractRange(&vector, &elDP->el);

origin = vector.org; end = vector.end; if
(origin.y > yMax)
yMax = origin.y; if (end.y > yMax)
yMax = end.y;
if(elDP) mdlElmdscr_freeAll(&elDP); }
} while (scan_status == BUFF_FULL);

}
return yMax;
}


Daniel MacNeil wrote:
The only way to see multiple files in the view windows at the same time
is to use refernce files.

Dan

grotero@xxxxxxxxxxxx wrote:
Is posible to open a new file and work with it while still seing the
actual one in the workspace?.
I hope you understand me.

Thanks.




.



Relevant Pages

  • Re: Open new design file while seeing the actual one
    ... What this function is trying to do is to obtain the yMax (the maximum ... ULong elemAddr, filePos; ... MSElement el; ... numAddr = scanWords / sizeof; ...
    (comp.cad.microstation.programmer)
  • Re: Open new design file while seeing the actual one
    ... That is V8, the call refers to older use of workdgn function in pre V8, ... What this function is trying to do is to obtain the yMax (the maximum ... ULong elemAddr, filePos; ... numAddr = scanWords / sizeof; ...
    (comp.cad.microstation.programmer)
  • Re: Open new design file while seeing the actual one
    ... What this function is trying to do is to obtain the yMax (the maximum ... ULong elemAddr, filePos; ... MSElement el; ... numAddr = scanWords / sizeof; ...
    (comp.cad.microstation.programmer)
  • Re: Open new design file while seeing the actual one
    ... What this function is trying to do is to obtain the yMax (the maximum ... ULong elemAddr, filePos; ... MSElement el; ... numAddr = scanWords / sizeof; ...
    (comp.cad.microstation.programmer)
  • Re: Open new design file while seeing the actual one
    ... If you scan a opened file, the file must be opened with f = ... mdlScan_initialize (fileNum, &scanList) by ... What this function is trying to do is to obtain the yMax (the maximum ... ULong elemAddr, filePos; ...
    (comp.cad.microstation.programmer)