andycong 发表于 2004-3-5 09:39:00

[求助]怎样在图形中插入一个块!

我做了一个块NS700.dwg,怎样在新的图形中插入这个块.


thx!

yfy2003 发表于 2004-3-5 11:41:00

<A href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=5823" target="_blank" >http://bbs.mjtd.com/forum.php?mod=viewthread&tid=5823</A>

andycong 发表于 2004-3-5 14:16:00

thx

FLYFUN 发表于 2004-5-10 08:19:00

//插入块


void insertBlock(AcGePoint3d basePoint,char *blkname)<BR>{<BR>        AcDbObjectId blockId;<BR>        AcDbBlockTable *pBlockTable; <BR>        if(!hasThisBlock(blkname)){<BR>                AcDbDatabase *pDb = new AcDbDatabase(Adesk::kFalse);<BR>                pDb-&gt;readDwgFile(blkname);<BR>                acdbHostApplicationServices()-&gt;workingDatabase()-&gt;insert(blockId,blkname,pDb);<BR>                delete pDb;<BR>        }<BR>        else{<BR>                acdbHostApplicationServices()-&gt;workingDatabase()<BR>                        -&gt;getSymbolTable(pBlockTable, AcDb::kForRead);<BR>                pBlockTable-&gt;getAt(blkname,blockId);<BR>        }<BR>                       AcDbBlockReference *pBlkRef = new AcDbBlockReference;<BR>                       pBlkRef-&gt;setBlockTableRecord(blockId);


                       struct resbuf to, from;<BR>                       from.restype = RTSHORT;<BR>                       from.resval.rint = 1; // UCS<BR>                       to.restype = RTSHORT;<BR>                       to.resval.rint = 0; // WCS<BR>                       AcGeVector3d normal(0.0, 0.0, 1.0);<BR>                       acedTrans(&amp;(normal.x), &amp;from, &amp;to, Adesk::kTrue, &amp;(normal.x));<BR>                       pBlkRef-&gt;setPosition(basePoint);<BR>                       pBlkRef-&gt;setRotation(0.0);<BR>                       pBlkRef-&gt;setNormal(normal);


        AcDbObjectId newEntId;<BR>                       acdbHostApplicationServices()-&gt;workingDatabase()<BR>                                                       -&gt;getSymbolTable(pBlockTable, AcDb::kForRead);<BR>                       AcDbBlockTableRecord *pBlockTableRecord;<BR>                       pBlockTable-&gt;getAt(ACDB_MODEL_SPACE, pBlockTableRecord,AcDb::kForWrite);<BR>        pBlockTableRecord-&gt;appendAcDbEntity(newEntId, pBlkRef);


                       pBlockTableRecord-&gt;close();<BR>                       pBlockTable-&gt;close();


                       pBlkRef-&gt;close();<BR>        <BR>}


调用


char *block_name="c:\\arxprjmfc\\heada.dwg";<BR>char tbuf;               <BR>        AcGePoint3d pt1;


if(acedFindFile(head_name,tbuf)!=RTNORM) {       //在盘上查找图块<BR>                       sprintf(tbuf,"file &lt;%s&gt; not existed.",block_name);<BR>                acedAlert(tbuf);<BR>                return RTERROR;<BR>        }<BR>        else{<BR>                pt1=0.0;<BR>                pt1=0.0;<BR>                pt1=0.0;<BR>                insertBlock(pt1,head_name);<BR>        }
页: [1]
查看完整版本: [求助]怎样在图形中插入一个块!