TX_SDK开发的配置

首先下载TeighaViewer_vc10dll_3.09.1.msi和TX_SDK_3.09.0.0.zip, 下载地址参见http://blog.csdn.net/zhouschina/article/details/23423655

安装TeighaViewer_vc10dll_3.09.1.msi到系统中。由安装包可以看出,TeighaViewer版本为3.09.1,开发工具为Visual Studio 2010编译器。

解压TeighaViewerSDK开发包TX_SDK_3.09.0.0.zip到指定目录。这里我们主要关心的是lib文件夹和TD文件夹下的include文件夹,在本课后面将会使用。TD文件夹下的源码程序和Platforms文件夹下的示例工程在今后的学习中将接触到。

打开Visual Studio 2010编译器,新建空项目ODA_Demo工程。

下面配置开发环境。

1、首先设置头文件包含和库包含:

 

图 包含TX_SDK头文件

 

附加库文件目录

 

添加必要的依赖项

 

2、添加必要的预定义_WIN32;WIN32;_DEBUG;_TOOLKIT_IN_DLL_;

_TOOLKIT_IN_DLL_该宏是必须的,否则会引起应用程序加载失败。Teigha Viewer加载*.tx时,提示如下错误:

ODA Warning: Loading of "*_3.09_10.tx" was failed (Entry point is missing).

 

图4 设置预处理器

3、设置生成目标文件名

设置目标文件名为ODA_Demo_3.09_10

注意:目标文件名后缀必须是“_3.09_10” ,3.09为Teigha Viewer版本号,10为编译器版本号。后缀不正确会引起加载Apps(*.tx)失败。

设置目标文件扩展名为:.tx

设置配置类型为:动态库(.dll)

设置字符集为:使用Unicode字符集

 

设置生成目标文件名

4、设置启动命令

如图6所示,在配置属性—调试—命令项设置Teigha Viewer路径(以实际安装路径为准),例如:

D:\Program Files (x86)\ODA\Teigha Viewer 3.09.1\TeighaViewer.exe

 

设置启动命令

 

5、新建ODA_DemoModule.h和ODA_DemoModule.cpp文件。

在ODA_DemoModule.h中添加代码如下:

#pragma once
#include "RxModule.h"
#include "Ed/EdCommandStack.h"
#include "StaticRxObject.h"
#include "DbCommandContext.h"
 
// 自定义命令类
class textCmd : public OdEdCommand
{
public:
const OdString groupName() const { return OD_T("Demo"); }
const OdString globalName() const { return OD_T("InsertText"); }
void execute(OdEdCommandContext* pCmdCtx);
};
 
// 自定义模块类
class ODA_DemoModule : public OdRxModule
{
protected:
ODA_DemoModule();
 
void initApp();
 
void uninitApp();
 
public:
~ODA_DemoModule();
 
// 命令
OdStaticRxObject<textCmd> _textCmd;
};
 
typedef OdSmartPtr<ODA_DemoModule> ODA_DemoModulePtr;


在ODA_DemoModule.cpp中添加代码如下:

#include "OdaCommon.h"
#include "ODA_DemoModule.h"
#include "RxDynamicModule.h"
 
#if defined(_TOOLKIT_IN_DLL_) && defined(_MSC_VER) //  MacOS X dynamic library loading. //#ifdef _TOOLKIT_IN_DLL_
#define VC_EXTRALEAN
#include "windows.h"
// 动态库入口函数
extern "C" int APIENTRY DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID )
{
switch ( dwReason )
{
case DLL_PROCESS_ATTACH:
// remove this if you need per-thread initialization
DisableThreadLibraryCalls( (HMODULE)hInstance );
break;
}
return TRUE;
}
#endif  //_TOOLKIT_IN_DLL_ //  MacOS X dynamic library loading.
 
// 定义用户模块类
ODRX_DEFINE_DYNAMIC_MODULE(ODA_DemoModule);
 
 
ODA_DemoModule::ODA_DemoModule()
{
}
 
ODA_DemoModule::~ODA_DemoModule()
{
}
 
void ODA_DemoModule::initApp()
{
// 加载动态库初始化操作
odedRegCmds()->addCommand( &_textCmd ); //注册命令
}
 
void ODA_DemoModule::uninitApp()
{
// 卸载动态库时反初始化操作
odedRegCmds()->removeGroup( _textCmd.groupName() );
}
 
// 命令执行程序
#include "DbText.h"
#include "DbBlockTableRecord.h"
void textCmd::execute(OdEdCommandContext* pCmdCtx)
{
 OdDbCommandContextPtr pDbCmdCtx(pCmdCtx);
 OdDbUserIO* pIO = pDbCmdCtx->dbUserIO();
 OdGePoint3d point3d = pIO->getPoint(OD_T("请选择文字插入点位"));
 
 OdDbTextPtr pText = OdDbText::createObject();
 pText->setPosition(point3d);
 pText->setTextString(OD_T("Hello ODA!"));
 
 OdDbDatabase* pDatabase = pDbCmdCtx->database();
 OdDbBlockTableRecordPtr pMs = pDatabase->getModelSpaceId().safeOpenObject(OdDb::kForWrite);
 pMs->appendOdDbEntity(pText);
}


6、编译加载ODA_Demo_3.09_10.tx 程序

编译并成功生成ODA_Demo_3.09_10.tx,按F5启动调试。进入Tetgha Viewer界面,并打开一幅dwg文件,如下:

 

7 Teigha Viewer界面

加载ODA_Demo_3.09_10.tx程序。有两种加载方式:

1、 命令行输入:appload

2、 菜单:Tools—Load Application..., 如图8

 

 

菜单加载app方法

 

图 加载app界面

加载完成后,后在Registered Commands...菜单中添加了Demo子项菜单。

 

10 ODA_Demo_3.09_10.tx中命令加载到菜单中

运行命令,或者命令行输出inserttext命令。

屏幕选择插入文本位置。得到效果如图11

 

11 输出的Hello ODA字符串


DEMO下载地址:http://download.csdn.net/detail/zhouschina/7175749


  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值