bai_cai101 发表于 2005-8-22 09:12:00

<P>顶</P>

我的ARX 发表于 2005-8-22 15:59:00

<P>我试过上面给的程序,发现未知错误!!</P>
<P>怎么回事啊&nbsp;&nbsp; 还有 那个acad.dwt放在什么地方啊</P>

uusky 发表于 2005-8-27 13:19:00

<P>&nbsp;</P>
<P>文字</P>
<P>17楼斑竹的帖子为何打不开啊!</P>
<P>偶也很关系这个问题!希望斑竹不以善小而不为!</P>
<P>我在这里先谢谢了!</P>

bai_cai101 发表于 2005-8-27 19:27:00

<P>我是在ARX2002命令向导建立的程序上加入该函数的,另外,还有几个头文件我没有写出来,可以在调试的时候通过ARX帮助找出来,你可能是没有加入需要的头文件!!</P>

easypower 发表于 2005-9-19 12:46:00

<P>&nbsp;static char pData[] ="acad.dwt"; <BR>&nbsp;//acDocManager-&gt;executeInApplicationContext(CreateDoc, (void *)pData);<BR>//回调函数相当于开了一个新线程,和下面的程序是同步执行的,所以你得到的数据库就是原来的数据库了.<BR>&nbsp;if(acDocManager-&gt;isApplicationContext()) <BR>&nbsp;{<BR>&nbsp;&nbsp;acDocManager-&gt;appContextNewDocument((const char *)pData); <BR>&nbsp;} <BR>&nbsp;else<BR>&nbsp;{<BR>&nbsp;&nbsp;acutPrintf("\nERROR To Create Doc!\n");<BR>&nbsp;&nbsp;return;<BR>&nbsp;}<BR>&nbsp;//AcDbDatabase *pdb =acdbHostApplicationServices()-&gt;workingDatabase();<BR>//用这个也可以</P>
<P>&nbsp;AcApDocument *pDoc;<BR>&nbsp;pDoc=acDocManager-&gt;curDocument();<BR>&nbsp;AcDbDatabase *pdb = pDoc-&gt;database();</P>
<P>&nbsp;acDocManager-&gt;lockDocument(pDoc);&nbsp;//锁定文档</P>
<P><BR>&nbsp;AcDbBlockTable *pBtbl;<BR>&nbsp;Acad::ErrorStatus es = pdb-&gt;getSymbolTable(pBtbl, AcDb::kForRead);<BR>&nbsp;acutPrintf("es=%d\n",es);<BR>&nbsp;if (es != Acad::eOk)<BR>&nbsp;{<BR>&nbsp;&nbsp;return;<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;AcDbBlockTableRecord *pBtblRcd;<BR>&nbsp;es = pBtbl-&gt;getAt(ACDB_MODEL_SPACE, pBtblRcd,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AcDb::kForWrite);<BR>&nbsp;acutPrintf("es=%d\n",es);<BR>&nbsp;&nbsp;if (es != Acad::eOk)<BR>&nbsp;{<BR>&nbsp;&nbsp;pBtbl-&gt;close();<BR>&nbsp;&nbsp;return;<BR>&nbsp;}<BR>&nbsp;&nbsp;&nbsp; pBtbl-&gt;close();<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp; AcDbCircle *pCir1 = new AcDbCircle(AcGePoint3d(1,1,1),<BR>&nbsp;&nbsp;AcGeVector3d(0,0,1),<BR>&nbsp;&nbsp;1.0),<BR>&nbsp;&nbsp;*pCir2 = new AcDbCircle(AcGePoint3d(4,4,4),<BR>&nbsp;&nbsp;AcGeVector3d(0,0,1),<BR>&nbsp;&nbsp;2.0);<BR>&nbsp;&nbsp;&nbsp; pBtblRcd-&gt;appendAcDbEntity(pCir1);<BR>&nbsp;&nbsp;&nbsp; pCir1-&gt;close();<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; pBtblRcd-&gt;appendAcDbEntity(pCir2);<BR>&nbsp;&nbsp;&nbsp; pCir2-&gt;close();</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; pBtblRcd-&gt;close();</P>
<P>&nbsp;acDocManager-&gt;unlockDocument(pDoc);&nbsp;//解除文档锁定<BR></P>

bai_cai101 发表于 2005-10-16 20:59:00

<P>上面的程序我运行过了,不行哦!每次都是在旧文档的文本框中出现nERROR To Create Doc!实体也没有加入到任何一个文件中去!我用的VC6.0+ARX2002,在CAD2002中运行的!请高手指点一二!!!</P>

bai_cai101 发表于 2005-10-16 21:07:00

<P>#include "StdAfx.h"<BR>#include "StdArx.h"<BR>#include "dbsymtb.h"<BR>#include "dbents.h"<BR>//-----------------------------------------------------------------------------<BR>// This is command 'NEWDOC, by&nbsp; , , <BR>void ACADkaifanewdoc()<BR>{<BR>#ifdef OARXWIZDEBUG<BR>&nbsp;acutPrintf ("\nOARXWIZDEBUG - ACADkaifanewdoc() called.");<BR>#endif // OARXWIZDEBUG</P>
<P>&nbsp;// TODO: Implement the command<BR>&nbsp;static char pData[] ="acad.dwt"; <BR>acDocManager-&gt;executeInApplicationContext(CreateDoc, (void *)pData);</P>
<P>/*if(acDocManager-&gt;isApplicationContext()) <BR>&nbsp;{<BR>&nbsp; acDocManager-&gt;appContextNewDocument((const char *)pData); <BR>&nbsp;} <BR>&nbsp;else<BR>&nbsp;{<BR>&nbsp; acutPrintf("\nERROR To Create Doc!\n");<BR>&nbsp; return;<BR>&nbsp;}<BR>&nbsp;*/<BR>AcApDocument *pDoc;<BR>&nbsp;pDoc=acDocManager-&gt;curDocument();<BR>&nbsp;AcDbDatabase *pdb = pDoc-&gt;database();</P>
<P>&nbsp;acDocManager-&gt;lockDocument(pDoc); </P>
<P><BR>&nbsp;AcDbBlockTable *pBtbl;<BR>&nbsp;Acad::ErrorStatus es = pdb-&gt;getSymbolTable(pBtbl, AcDb::kForRead);<BR>&nbsp;acutPrintf("es=%d\n",es);<BR>&nbsp;if (es != Acad::eOk)<BR>&nbsp;{<BR>&nbsp; return;<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;AcDbBlockTableRecord *pBtblRcd;<BR>&nbsp;es = pBtbl-&gt;getAt(ACDB_MODEL_SPACE, pBtblRcd,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AcDb::kForWrite);<BR>&nbsp;acutPrintf("es=%d\n",es);<BR>&nbsp; if (es != Acad::eOk)<BR>&nbsp;{<BR>&nbsp; pBtbl-&gt;close();<BR>&nbsp; return;<BR>&nbsp;}<BR>&nbsp;&nbsp;&nbsp; pBtbl-&gt;close();<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp; AcDbCircle *pCir1 = new AcDbCircle(AcGePoint3d(1,1,1),<BR>&nbsp; AcGeVector3d(0,0,1),<BR>&nbsp; 1.0),<BR>&nbsp; *pCir2 = new AcDbCircle(AcGePoint3d(4,4,4),<BR>&nbsp; AcGeVector3d(0,0,1),<BR>&nbsp; 2.0);<BR>&nbsp;&nbsp;&nbsp; pBtblRcd-&gt;appendAcDbEntity(pCir1);<BR>&nbsp;&nbsp;&nbsp; pCir1-&gt;close();<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; pBtblRcd-&gt;appendAcDbEntity(pCir2);<BR>&nbsp;&nbsp;&nbsp; pCir2-&gt;close();</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; pBtblRcd-&gt;close();</P>
<P>&nbsp;acDocManager-&gt;unlockDocument(pDoc);</P>
<P>}</P>
<P>void CreateDoc( void *pData) <BR>{ <BR>AcApDocument* pDoc = acDocManager-&gt;curDocument(); <BR>if(acDocManager-&gt;isApplicationContext()) <BR>{<BR>&nbsp; acDocManager-&gt;appContextNewDocument((const char *)pData); <BR>} <BR>else<BR>&nbsp; acutPrintf("\nERROR To Create Doc!\n");</P>
<P>}<BR>我这样修改了一下!现在运行不错!但问题还是那样!加入的实体不在新建的文件中!而是在旧文件中!!!!</P>

bai_cai101 发表于 2005-10-23 22:25:00

<P>我顶!</P>

hulei_accp 发表于 2005-10-23 22:48:00

filedia是系统变量,管“是否显示对话框”。

bai_cai101 发表于 2005-11-1 17:47:00

<P>我顶!!就没有人帮帮我吗?</P>
页: 1 2 [3] 4 5
查看完整版本: 如何自动新建一个DWG并置为当前!