Author Topic: Layer List in Intellicad  (Read 2718 times)

0 Members and 1 Guest are viewing this topic.

ramkumar

  • Guest
Layer List in Intellicad
« on: April 21, 2011, 08:14:49 AM »
Hi all

I am reading the layer table as follows

Code: [Select]
struct sds_resbuf *lays;
lays = sds_tblnext("Layer",1);

Now i have layer information in lays.
My question is how can i read the layer name form the result buffer (lays)?

Thanks,
Kumar.




It's Alive!

  • BricsCAD
  • Needs a day job
  • Posts: 6941
  • AKA Daniel
Re: Layer List in Intellicad
« Reply #1 on: April 28, 2011, 10:25:42 AM »
Here is an example, however Intellicad does not have the function acdbGroupCodeToType,
but it's simple enough to write one or just use the DXF codes you know

Code: [Select]
void doit(void)
    {
        resbuf *pRb = NULL;
        TCHAR *tablename[]=
        {
            _T("APPID"), _T("BLOCK"), _T("DIMSTYLE"),
            _T("STYLE"), _T("LAYER"),_T("LTYPE"),
            _T("UCS"), _T("VIEW"), _T("VPORT")
        };

        for (int types = 0; types < (sizeof(tablename)/sizeof(tablename[0])); types++)
        {
            ads_printf(_T("\n%s "),tablename[types]);

            for (pRb = ads_tblnext(tablename[types],1);
                 pRb != NULL;
                 pRb = ads_tblnext(tablename[types],0))
            {
                for(const resbuf *pRbTemp = pRb; pRbTemp != NULL; pRbTemp = pRbTemp->rbnext)
                {
                    switch(acdbGroupCodeToType(pRbTemp->restype))
                    {
                    case AcDb::kDwgText:
                        ads_printf(_T("%s "), pRbTemp->resval.rstring);
                        break;
                    case AcDb::kDwgInt16:
                        ads_printf(_T("%d "), pRbTemp->resval.rint);
                        break;
                    case AcDb::kDwgInt32:
                        ads_printf(_T("%ld "), pRbTemp->resval.rlong);
                        break;
                    case AcDb::kDwgReal:
                        ads_printf(_T("%f "), pRbTemp->resval.rreal);
                        break;
                    case AcDb::kDwg3Real:
                        ads_printf(_T("(%f,%f,%f) "),
                            pRbTemp->resval.rpoint[0],
                            pRbTemp->resval.rpoint[1],
                            pRbTemp->resval.rpoint[2]
                        );
                    case AcDb::kDwgHandle:
                    case AcDb::kDwgHardOwnershipId:
                    case AcDb::kDwgSoftOwnershipId:
                    case AcDb::kDwgHardPointerId:
                    case AcDb::kDwgSoftPointerId:
                        ads_printf(_T("%ld "),
                            pRbTemp->resval.rlname[0]);
                        break;
                    case AcDb::kDwgNotRecognized:
                         ads_printf(_T("*Not Recognized* "));
                        break;
                    }
                }
               ads_printf(_T("\n"));
               ads_relrb(pRb);
            }
        }
    }