bai_cai101 发表于 2005-5-12 15:12:00

如何自动新建一个DWG并置为当前!

我想让程序自动新建一个DWG文件并置为当前,然后我好以当前的acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlockTable, AcDb::kForRead);来用程序画图!在这个过程中不需要人机交互!!请问需要用哪些ARX函数啊?请各路神仙帮助!!!我找到了一个acapdocument类和acapdocmanager类,里面的几个函数都需要人机交互!!!有谁能给我一个例子吗????多谢了!!我的邮箱:bai_cai101@163.com

zhang007 发表于 2019-11-25 23:25:19

问题解决了没有,已经有人给出了答案。
http://bbs.mjtd.com/thread-79380-1-1.html

bai_cai101 发表于 2018-8-25 18:54:20

放弃了十三年后的今天,又碰到了这个问题。。。

bai_cai101 发表于 2005-5-17 22:09:00

哪位高手!!高抬贵手,帮帮我了!!!

王咣生 发表于 2005-5-18 07:52:00

回复

试试这个:AcApDocManager::newDocument (),<BR>我没有试,具体查帮助,或sdk中的例子.

bai_cai101 发表于 2005-5-18 22:07:00

谢谢大侠的注意,我查看过了的,那个newdocument函数会出再对话框的!我在网上找到了张帆老师发表的贴子!用于新建一个文件并置为当前,并且不需要出现对话框交互,但是现在又出了一个问题,就是我不知道怎么样得到新建的当前的文件数据为库据据指针!我用        AcDbDatabase *pdb =acdbHostApplicationServices()-&gt;workingDatabase();没有出错,但结果这个pdb是以前文件的指针!请高手指点!!我的程序如下:

bai_cai101 发表于 2005-5-18 22:09:00

//<BR>// ObjectARX defined commands, created by       , ,


#include "StdAfx.h"<BR>#include "StdArx.h"<BR>#include "dbsymtb.h"<BR>#include "dbents.h"


//-----------------------------------------------------------------------------<BR>// This is command 'NEWDOC, by       , , <BR>void ACADnewdoc()<BR>{<BR>#ifdef OARXWIZDEBUG<BR>        acutPrintf ("\nOARXWIZDEBUG - ACADnewdoc() called.");<BR>#endif // OARXWIZDEBUG


        // TODO: Implement the command<BR>        static char pData[] ="acad.dwt"; <BR>        acDocManager-&gt;executeInApplicationContext(CreateDoc, (void *)pData);


        AcDbDatabase *pdb =acdbHostApplicationServices()-&gt;workingDatabase();


        AcDbBlockTable *pBtbl;<BR>                       pdb-&gt;getSymbolTable(pBtbl, AcDb::kForRead);


                       AcDbBlockTableRecord *pBtblRcd;<BR>                       pBtbl-&gt;getAt(ACDB_MODEL_SPACE, pBtblRcd,<BR>                                                       AcDb::kForWrite);<BR>                       pBtbl-&gt;close();


                       AcDbCircle *pCir1 = new AcDbCircle(AcGePoint3d(1,1,1),<BR>                                                                                                                                                                                                                                                                                                               AcGeVector3d(0,0,1),<BR>                                                                                                                                                                                                                                                                                                               1.0),<BR>                                                                                                               *pCir2 = new AcDbCircle(AcGePoint3d(4,4,4),<BR>                                                                                                                                                                                                                                                                                                               AcGeVector3d(0,0,1),<BR>                                                                                                                                                                                                                                                                                                               2.0);<BR>                       pBtblRcd-&gt;appendAcDbEntity(pCir1);<BR>                       pCir1-&gt;close();<BR>                       <BR>                       pBtblRcd-&gt;appendAcDbEntity(pCir2);<BR>                       pCir2-&gt;close();<BR>                       pBtblRcd-&gt;close();


}


void CreateDoc( void *pData) <BR>{ <BR>        AcApDocument* pDoc = acDocManager-&gt;curDocument(); <BR>        if(acDocManager-&gt;isApplicationContext()) <BR>        {<BR>                acDocManager-&gt;appContextNewDocument((const char *)pData); <BR>        } <BR>        else<BR>                acutPrintf("\nERROR To Create Doc!\n");<BR>}

bai_cai101 发表于 2005-5-18 22:11:00

我用程序上传怎么传不上去啊!!一点击上传浏览按钮后发表按钮就会变成灰色,无法上传!!!!请问怎么上传文件啊???

bai_cai101 发表于 2005-5-24 08:25:00

哪位高手,帮下忙啊!!!!

pandoram 发表于 2005-5-25 17:25:00

...用filedia = 0把对话框关掉, 用newDocument建立新文件, 打开之后直接用AcApDocument的联系数据库功能就可以拿到和文件相应的数据库指针了. 数据库不是只有用workingDatabase才取得到的.


仔细看一下ARX Help里面关于AcApDocument的部分吧.

bai_cai101 发表于 2005-5-27 22:14:00

本帖最后由 作者 于 2005-5-30 19:39:22 编辑

唉,不行啊,大哥,filedia=0是什么参数啊?谁的参数啊!能给个例子吗?小弟驽钝,望先生指点!求大家了!!!

bai_cai101 发表于 2005-5-30 19:40:00

顶一下
页: [1] 2 3 4 5
查看完整版本: 如何自动新建一个DWG并置为当前!