一
在ARX中禁用AutoCAD的某个命令
以LINE命令为例,在程序中加入下面的一句即可禁用LINE命令:
acedCommand(RTSTR,"undefine",
RTSTR,"line",
RTNONE);
下面的语句则可恢复LINE命令的定义:
acedCommand(RTSTR,"redefine",
RTSTR,"line",
RTNONE);
二在对话框中预览DWG文件
使用acdbDisplayPreviewFromDwg函数,具体的方法为:
charfileName[100];
strcpy(fileName,
"C:\\test.dwg");
bool
es;
HWND
pWnd;
CFrameWnd
*pFrame
=
(CFrameWnd*)GetDlgItem(IDC_PICTURE);
es
=
acdbDisplayPreviewFromDw
g(fileName,
pFrame->m_hWnd);
上面的代码将在一个Picture控件中显示指定的图形。
另外,需要包含“dbmain.h”头文件。
四获得当前数据库
在ARX编程中,经常需要使用当前数据库,例如需要获得当前图形中设置的文字样式、标注样式等。
要获得当前数据库,都可以直接使用下面的方法:
AcDbTextStyleTable*pTextStyleTAble;
AcDbObjectIdtextstyleId;
textstyleId=acdbHostApplicationServices()->workingDatabase()->textstyle();
如果用acadCurDwg来代替acdbHostApplicationServices()->workingDatabase(),也能得到同样的结果。
六在ARX打开文件
在AutoCAD中打开图形,并且显示在图形窗口中,可以使用acedSyncFileOpen()函数。需要注意的是,这个函数只能在单文档模式中工作,
用户可以在AutoCAD“选项”对话框的“系统”选项卡中进行设置,或者在主函数中添加下面的语句:
acrxDynamicLinker->registerAppNotMDIAware(pkt);
具体的函数如下:
//加载模板文件
voidLoadTemplate()
{
char
fname[50];
strcpy(fname,"E:\\TMCAD\\TMCADtukuang\\A3.DWG");
#ifndef_ACAD2000
Acad::ErrorStatuses;
es
=
acedSyncFileOpen(fname);
#else
acDocManager->appContextOpenDocument(fname);
#endif
}
下面的方法则打开指定位置的DWG文件。
voidOpenDoc(
void
*pData)
{
AcApDocument*
pDoc
=
acDocManager->curDocument();
if
(acDocManager->isApplicationContext())
{
acDocManager->appContextOpenDocument((const
char
*)pData);
}
else
{
acutPrintf("\nERROR
To
Open
Doc!\n");
}
}
//This
is
command
'OPEN1'
voidZffOPENopen1()
{
//
直接打开系统中存在的某个图形文件G:\AutoCAD图形\wen2.dwg
static
char
pData[]
=
"G:\\AutoCAD图形\\wen2.dwg";
acDocManager->executeInApplicationContext(OpenDoc,
(void
*)pData);
}
//
Function
name
:
SetCurLayer
//
Description
:
设置当前层
//
Return
type
:
Acad::ErrorStatus
//
Argument
:
const
char*
lpLayerName
//
Argument
:
AcDbDatabase*
pDb
Acad::ErrorStatus
SetCurLayer(
const
char
*
lpLayerName,
AcDbDatabase
*
pDb
)
{
AcDbDatabase
*
pCurDb
=
pDb;
if
(pCurDb
==
NULL)
pCurDb
=
acdbHostApplicationServi
ces()
->
workingDatabase();
AcDbLayerTableRecordPoin
ter
spRecord(lpLayerName,
pCurDb,
AcDb::kForRead);
Acad::ErrorStatus
es
=
spRecord.openStatus();
if
(es
==
Acad::eOk)
acedCommand(RTSTR,
RTSTR,
RTNONE);
下面的语句则可恢复LINE命令的定义:
acedCommand(RTSTR,
RTSTR,
RTNONE);
二
使用acdbDisplayPreviewFromDw
char
上面的代码将在一个Picture控件中显示指定的图形。
另外,需要包含“dbmain.h”头文件。
四
在ARX编程中,经常需要使用当前数据库,例如需要获得当前图形中设置的文字样式、标注样式等。
要获得当前数据库,都可以直接使用下面的方法:
AcDbTextStyleTable
AcDbObjectId
textstyleId=acdbHostApplicationServi
如果用acadCurDwg来代替acdbHostApplicationServi
六
在AutoCAD中打开图形,并且显示在图形窗口中,可以使用acedSyncFileOpen()函数。需要注意的是,这个函数只能在单文档模式中工作,
用户可以在AutoCAD“选项”对话框的“系统”选项卡中进行设置,或者在主函数中添加下面的语句:
acrxDynamicLinker->registerAppNotMDIAware(pkt);
具体的函数如下:
//加载模板文件
void
{
#ifndef
#else
#endif
}
下面的方法则打开指定位置的DWG文件。
void
{
}
//
void
{
acDocManager->executeInApplicationCont
}