shun 发表于 2004-7-13 17:24:00

在ARX中如何加载线型?

在acadiso.lin 中定义有mylinetype,


                                               在层中设定线型,使用AcDb2dPolyline()绘制二维多义线,但线型并没有按照指定的线型绘制线条,是否是在绘制前没有加载线型所致?线型又怎样加载呢?


先用createnewlayer() 并高定当前层,再画线:pNewPline = new AcDb2dPolyline(<BR>                                               AcDb::k2dSimplePoly,parr,0,Adesk::kFalse,0.2*kk,0.2*kk,NULL);


在层中高定线型:


void createNewlayer(char *layer,Adesk::UInt16 colorIndex,char* linetype)<BR>{<BR>        AcDbLayerTable *pLayerTable;<BR>        AcDbObjectId layerId;<BR>                       acdbHostApplicationServices()-&gt;workingDatabase()<BR>                -&gt;getSymbolTable(pLayerTable,AcDb::kForWrite);        <BR>        if(!pLayerTable-&gt;has(layer)){<BR>                               AcDbLayerTableRecord *pLayerTableRecord=new AcDbLayerTableRecord;<BR>                                                       pLayerTableRecord-&gt;setName(layer);<BR>                                                       pLayerTableRecord-&gt;setIsFrozen(0);//解冻层<BR>                pLayerTableRecord-&gt;setIsOff(0);//打开层<BR>                pLayerTableRecord-&gt;setVPDFLT(0);//视区为可见<BR>                pLayerTableRecord-&gt;setIsLocked(0);//解锁层<BR>                /////////////////////////////////<BR>                                                       AcCmColor color;<BR>                               color.setColorIndex(colorIndex);<BR>                                                       pLayerTableRecord-&gt;setColor(color);<BR>                       ///////////////////////////////////////////<BR>                                                       AcDbLinetypeTable *pLineTypeTbl;<BR>                               AcDbObjectId ltId;<BR>                                                       acdbHostApplicationServices()-&gt;workingDatabase()<BR>                                       -&gt;getSymbolTable(pLineTypeTbl,AcDb::kForRead);<BR>                                                       if((pLineTypeTbl-&gt;getAt(linetype,ltId))!=Acad::eOk)<BR>                {<BR>                                                                                       pLineTypeTbl-&gt;getAt("CONTINUOUS",ltId);<BR>                }<BR>                                                       pLineTypeTbl-&gt;close();


                               pLayerTableRecord-&gt;setLinetypeObjectId(ltId);<BR>                                                       pLayerTable-&gt;add(pLayerTableRecord);        <BR>                                                       pLayerTable-&gt;close();<BR>                               pLayerTableRecord-&gt;close();        <BR>        }<BR>        else{                                               <BR>                pLayerTable-&gt;close();        <BR>        }        <BR>}<BR>

jx_lgq 发表于 2004-7-24 21:35:00

BOOL CTableHanlder::LoadLinetypeToDatabase(const char *ltn, AcDbObjectId &amp;ltypeId)<BR>{                AcDbDatabase *pCurDb;<BR>        AcDbLinetypeTable *pltypeTb;<BR>        Acad::ErrorStatus es;<BR>        pCurDb=acdbHostApplicationServices()-&gt;workingDatabase();<BR>        es=pCurDb-&gt;getSymbolTable(pltypeTb,AcDb::kForRead);<BR>        if(es!=Acad::eOk)return FALSE;<BR>        BOOL bFindFlag=pltypeTb-&gt;has(ltn);<BR>        pltypeTb-&gt;close();//close table<BR>        /////////////////<BR>        //没有则从文件中加载线型<BR>        if(!bFindFlag)<BR>        {<BR>                CString strPath;<BR>                CCommonHanlder cmnHanlder;<BR>                if(!cmnHanlder.getLinetypePathStr (strPath))//这是我的线型库路径,如果要符合你的,自己搞定!<BR>                        return FALSE;<BR>                strPath+="linetype.lin";<BR>                if((es=pCurDb-&gt;loadLineTypeFile(ltn,strPath))!=Acad::eOk)<BR>                        return FALSE;<BR>        }<BR>        <BR>        /////////<BR>        es=pCurDb-&gt;getSymbolTable(pltypeTb,AcDb::kForRead);<BR>        if(es!=Acad::eOk)return FALSE;<BR>        es=pltypeTb-&gt;getAt(ltn,ltypeId);<BR>        pltypeTb-&gt;close();<BR>        if(es!=Acad::eOk)<BR>                return FALSE;<BR>        else<BR>                return TRUE;<BR>}


//////////////////////////////


看着改改可通用,我就不改了
页: [1]
查看完整版本: 在ARX中如何加载线型?