bai_cai101
发表于 2005-11-20 16:05:00
<P>我顶!!问题解决不了我就不让它沉下去了!!板主!帮帮我了!????</P>
bai_cai101
发表于 2005-12-8 16:04:00
<P>我顶!!!</P>
lange
发表于 2005-12-12 13:53:00
//找到新建文件<BR>AcApDocument* pDoc=NULL;<BR>AcApDocumentIterator* pDocIter;<BR>pDocIter = acDocManager->newAcApDocumentIterator();<BR>for ( ; !pDocIter->done(); pDocIter->step())<BR>{<BR> if( !strcmp(pDocIter->document()->fileName(), "新建文件名") )<BR> {<BR> pDoc = pDocIter->document();<BR> break;<BR> }<BR>}<BR>delete pDocIter;<BR>//设成活动文档<BR>if( pDOC)<BR> acDocManager->activateDocument(pDoc);<BR>
pglyxq
发表于 2005-12-22 17:40:00
bai_cai101
发表于 2006-1-6 08:18:00
<P>我试了,怎么不行啊!我用的是VC6。0,ARX2000,编译通过,但在CAD2002中运行却没有一点反应!!!WHY??</P>
binbinxx
发表于 2006-1-10 21:04:00
<P class=signature>AcDbDatabase(</P>
<P class=signatureIn>bool buildDefaultDrawing = true,</P>
<P class=signatureInEnd>bool noDocument = false);</P>
<TABLE class=argumentList>
<TBODY>
<TR vAlign=baseline>
<TD class=argumentName>buildDefaultDrawing</TD>
<TD class=argumentDescription>Boolean specifying whether or not to build an empty object</TD></TR>
<TR vAlign=baseline>
<TD class=argumentName>noDocument</TD>
<TD class=argumentDescription>Boolean specifying whether or not to associate this database to the current document</TD></TR></TBODY></TABLE>第二个参数
zfbj
发表于 2006-1-19 16:02:00
<P>现在工作时间没法上网,偶然路过,发现这个问题居然让老弟如此伤神,实在不忍,特整理一个工程贴上来供参考,其实这个工程也没什么特别的,下面是创建该工程的过程。希望你能结合老金的文章好好理解,因为我再来看这个帖子的几率不大…</P>
<P>(1)使用ObjectARX向导创建一个新工程;<BR>(2)注册一个命令NewDoc,其实现函数为:<BR>void ZffTempNewDoc()<BR>{<BR> static char pData[] ="acad.dwt"; <BR> acDocManager->executeInApplicationContext(CreateDoc, (void *)pData); <BR>}<BR>(3)将下面的函数复制到ZffTempNewDoc函数的前面:<BR>void CreateDoc( void *pData) <BR>{ <BR> AcApDocument* pDoc = acDocManager->curDocument(); <BR> if (acDocManager->isApplicationContext()) <BR> { <BR> acDocManager->appContextNewDocument((const char *)pData); <BR> } <BR> else <BR> {<BR> acutPrintf("\nERROR To Create Doc!\n"); // 这一行老金有个笔误,后一个引号用了中文的,我已经改过来了<BR> }<BR>} <BR>(4)编译链接程序,启动AutoCAD 2002,执行NewDoc命令即可创建一个新文件,没有对话框的出现。</P>
glhu3
发表于 2006-2-6 13:42:00
//<BR>// ObjectARX defined commands, created by , ,
<P></P>
<P>#include "StdAfx.h"<BR>#include "StdArx.h"<BR>#include "dbsymtb.h"<BR>#include "dbents.h"</P>
<P>//-----------------------------------------------------------------------------<BR>// This is command 'NEWDOC, by , , <BR>void ACADnewdoc()<BR>{<BR>#ifdef OARXWIZDEBUG<BR> acutPrintf ("\nOARXWIZDEBUG - ACADnewdoc() called.");<BR>#endif // OARXWIZDEBUG</P>
<P> // TODO: Implement the command<BR> static char pData[] ="acad.dwt"; <BR> acDocManager->executeInApplicationContext(CreateDoc, (void *)pData);</P>
<P> AcDbDatabase *pdb =acdbHostApplicationServices()->workingDatabase();</P>
<P> AcDbBlockTable *pBtbl;<BR> pdb->getSymbolTable(pBtbl, AcDb::kForRead);</P>
<P> AcDbBlockTableRecord *pBtblRcd;<BR> pBtbl->getAt(ACDB_MODEL_SPACE, pBtblRcd,<BR> AcDb::kForWrite);<BR> pBtbl->close();</P>
<P> 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->appendAcDbEntity(pCir1);<BR> pCir1->close();<BR> <BR> pBtblRcd->appendAcDbEntity(pCir2);<BR> pCir2->close();<BR> pBtblRcd->close();</P>
<P>}</P>
<P>void CreateDoc( void *pData) <BR>{ <BR> AcApDocument* pDoc = acDocManager->curDocument(); <BR> if(acDocManager->isApplicationContext()) <BR> {<BR> acDocManager->appContextNewDocument((const char *)pData); <BR> } <BR> else<BR> acutPrintf("\nERROR To Create Doc!\n");<BR>}</P>
<P><BR><BR>----------------------------------------------<BR>QQ:224310836,bai_cai101@163.com!欢迎交流!! </P>
<P>----------------------------------------------------------------</P>
<P>上述代码执行后,圆并未画在新建出来的DWG文挡上,而画在了前一个DWG文挡上,这样新建的DWG并不是当前的WorkingDatabase</P>
glhu3
发表于 2006-2-6 13:59:00
//<BR>// ObjectARX defined commands, created by , ,
<P></P>
<P>#include "StdAfx.h"<BR>#include "StdArx.h"<BR>#include "dbsymtb.h"<BR>#include "dbents.h"</P>
<P>//-----------------------------------------------------------------------------<BR>// This is command 'NEWDOC, by , , <BR>void ACADnewdoc()<BR>{<BR>#ifdef OARXWIZDEBUG<BR> acutPrintf ("\nOARXWIZDEBUG - ACADnewdoc() called.");<BR>#endif // OARXWIZDEBUG</P>
<P> // TODO: Implement the command<BR> static char pData[] ="acad.dwt"; <BR> acDocManager->executeInApplicationContext(CreateDoc, (void *)pData);</P>
<P> AcDbDatabase *pdb =acdbHostApplicationServices()->workingDatabase();</P>
<P> AcDbBlockTable *pBtbl;<BR> pdb->getSymbolTable(pBtbl, AcDb::kForRead);</P>
<P> AcDbBlockTableRecord *pBtblRcd;<BR> pBtbl->getAt(ACDB_MODEL_SPACE, pBtblRcd,<BR> AcDb::kForWrite);<BR> pBtbl->close();</P>
<P> 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->appendAcDbEntity(pCir1);<BR> pCir1->close();<BR> <BR> pBtblRcd->appendAcDbEntity(pCir2);<BR> pCir2->close();<BR> pBtblRcd->close();</P>
<P>}</P>
<P>void CreateDoc( void *pData) <BR>{ <BR> AcApDocument* pDoc = acDocManager->curDocument(); <BR> if(acDocManager->isApplicationContext()) <BR> {<BR> acDocManager->appContextNewDocument((const char *)pData); <BR> } <BR> else<BR> acutPrintf("\nERROR To Create Doc!\n");<BR>}</P>
<P><BR><BR>----------------------------------------------<BR>QQ:224310836,bai_cai101@163.com!欢迎交流!!</P>
<P>---------------------------------------------------------------------</P>
<P>该例新建的DWG文挡不是当前的WorkingDatabase的指针,而是前一个。希望作者</P>
<P>或哪位高手解决一下这个问题。</P>
houlinbo
发表于 2007-8-15 11:28:00
Try<br/> Dim cadApp As AcadApplication = GetObject(, "AutoCAD.Application.17")<br/> Dim olDb As Database = HostApplicationServices.WorkingDatabase<br/> Dim db As Database = New Database(True, False)<br/> HostApplicationServices.WorkingDatabase = db<br/> Dim trans As Transaction = db.TransactionManager.StartTransaction()<br/> Dim bt As BlockTable = trans.GetObject(db.BlockTableId, OpenMode.ForWrite)<br/> Dim br As Circle = CreateCircle(db, bt)<br/> db.SaveAs("d:\ff.dwg", DwgVersion.AC1015)<br/> HostApplicationServices.WorkingDatabase = olDb<br/> trans.Commit()<br/> trans.Dispose()<br/> Dim cadDoc As AcadDocument = cadApp.Documents.Open("d:\ff.dwg")<br/> cadDoc.WindowState = Common.AcWindowState.acMax<br/> cadDoc.Application.ZoomExtents()<br/> Catch ex As Exception<br/><br/> End Try<br/> End Sub<br/>