libredwg
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [libredwg] Re: libreDWG decode_3dsolid


From: Felipe Sanches
Subject: Re: [libredwg] Re: libreDWG decode_3dsolid
Date: Mon, 22 Feb 2010 19:43:58 -0300

fixed!
http://git.savannah.gnu.org/cgit/libredwg.git/commit/?id=f8b6e1acfdcb84869cf0ffb808c6fe13db76b755

Although testSVG.c does not output 3D solids since SVG is restricted
to 2D vector primitives.

Somebody should try to write a libredwg example application that uses
the SAT parser/importer from OpenCASCADE that Rodrigo mentioned to
export DWG to some 3D open CAD format (perhaps COLLADA? or STEP?).

Felipe Sanches (Juca)

On Mon, Feb 22, 2010 at 6:16 PM, Till Heuschmann
<address@hidden> wrote:
>
> You are right, passing the '++' to the FIELD_VECTOR macro results in an
> unexpected incrementation of variable i.
>
>
>> Timo,
>>
>> Please always send emails about LibreDWG with a copy to address@hidden
>> <mailto:address@hidden>.
>>
>> So, you think the issue is realloc ing too frequently?
>>
>> -Felipe
>>
>> 2010/2/22 Timo Lähde <address@hidden
>> <mailto:address@hidden>>
>>
>>    Hello!
>>
>>    I was testing testSVG.c with that example.dwg and it crash.
>>
>>    Variable 'i' isn't the problem, but it's usage in those macros
>>    because of those too many increments of 'i' in that loop.
>>    It should happen only once in reallocation in my opinion. After
>>    that correction that part of code goes past that error.
>>
>>    I have expanded all those macros to huge decode.c to debug that
>>    part of code.
>>
>>    if (_obj->version == 1)
>>    {
>>        do
>>        {
>>         _obj->sat_data = (char **)realloc(_obj->sat_data, (i + 1) *
>>    sizeof(char *));
>>         _obj->block_size = bit_read_BL(dat);
>>        if (3 >= 3)
>>        {
>>          fprintf((&__stderr), "block_size" ": " "%lu" "\n",
>>    _obj->block_size);
>>        };
>>        if (_obj->block_size > 0)
>>        {
>>         _obj->sat_data[i] = (char *)malloc(_obj->block_size *
>>    sizeof(char));
>>        for (vcount = 0; vcount < _obj->block_size; vcount++)
>>       {
>>        _obj->sat_data[i][vcount] = bit_read_RC(dat);
>>        if (3 >= 3)
>>        {
>>          fprintf((&__stderr), "sat_data[i++]" "[%d]: " "%2x" "\n",
>>    vcount, _obj->sat_data[i][vcount]);
>>        }
>>        }
>>        };
>>       i++;
>>       } while (_obj->block_size);
>>    }
>>    else
>>
>>    {
>>        fprintf((&__stderr), "TODO: Implement parsing of ACIS file in
>>    entities 37,38 and 39.\n");
>>    }
>>
>>    Timo
>>
>>    2010/2/22 Felipe Sanches <address@hidden
>>    <mailto:address@hidden>>
>>
>>        I agree that using this vriable is not the best thing to do.
>>        But decode3d is not working at all yet. If you want to give it
>>        a try, feel free. But if you do so, let us know what you're
>>        doing so that we dont duplicate efforts.
>>
>>        juca
>>
>>        PS: I forwarded your message to address@hidden
>>        <mailto:address@hidden>
>>
>>        2010/2/21 Timo Lähde <address@hidden
>>        <mailto:address@hidden>>
>>
>>            Hello!
>>
>>            Is this better way to do that, because of variable i :
>>
>>            dwg.spec line 1244:
>>
>>            if (FIELD_VALUE(version)==1)
>>                    {
>>                      do
>>                        {
>>                          //FIELD_VALUE(sat_data) = (BITCODE_RC**)
>>            realloc(FIELD_VALUE(sat_data), i * sizeof(BITCODE_RC*));
>>                         FIELD_VALUE(sat_data) = (BITCODE_RC**)
>>            realloc(FIELD_VALUE(sat_data), (i + 1) * sizeof(BITCODE_RC*));
>>                          FIELD_BL (block_size);
>>                          //FIELD_VECTOR (sat_data[i++], RC, block_size);
>>                          FIELD_VECTOR (sat_data[i], RC, block_size);
>>                          i++;
>>                        } while(FIELD_VALUE(block_size));
>>                    }
>>                  else
>>                    {
>>                      //TODO
>>                      fprintf(stderr, "TODO: Implement parsing of ACIS
>>            file in entities 37,38 and 39.\n");
>>                    }
>>
>>            regards Timo VJ Lähde
>>
>>
>>
>>
>>
>>
>>
>>
>
>
>
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]