I haven't used mdlScan_initOpenedFile(...) before, but looking at the
help it says that it ZEROS out the scanlist. It looks like it works the
same way as mdlScan_initScanlist(...) and should be used in its' place.
When you use it later in the code you are setting everything back to
default values.
In your _do loop_ check what element types are being returned.
Dan
grotero@[EMAIL PROTECTED]
wrote:
> 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@[EMAIL PROTECTED]
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.
>>>
>
>


|