objectarx用户交互_ObjectARX(C++)-ADSRX和用户交互-用户交互的实现(UserIntereaction)...

一,

(1)使用的ObjectARX向导创建新工程用户交互

3bf07aba6622b92b4c0d0db89bdda4f0.png

9f3ecb2ac51823916db91b404f8e98e5.png

(2)编译,如果出现以下错误:

错误C2338:/ RTCc拒绝符合代码,因此C ++标准库不支持它。删除此编译器选项,或定义_ALLOW_RTCc_IN_STL以确认您已收到此警告。

解决方法:

5a097d2ec8fd6279e6e25172cf778a17.png

(3)新建一个常见的过滤器:右键 - “添加筛选器

5e46e3eb5c59c4af004332a8842236a4.png

(4)在普通文件夹中新建相互作用文件夹

82ca29e8200b2f9ae63cff2b2bcf7bb4.png

(5)在交互文件夹中新建一个CGetInputUtil,用于获取用户的输入

fa72cd3ec699080d335222ed2391c1db.png

7695b2f36e5ab9020a5ae0d627ced662.png

(6)此时,将的.cpp文件拖入到筛选器中即可

d01e5e18a9d7e0bb6ada4d5c286daa86.png

打开项目的文件夹,发现头文件和源文件都在同一层级上,所以拖入到筛选器文件夹中不影响它的层级关系,筛选器文件夹只是给开发者起到一种分类作用

2fab50684f1a11976d461022fd5c9622.png (7)在其中新建一个成员函数GetPointReturnCode,指定基点的情况下提示用户拾取一个点,代码实现:

int CGetInputUtil::GetPointReturnCode(const AcGePoint3d &basePoint, const TCHAR* prompt, AcGePoint3d &point)

{

//将基点转换为UCS坐标

AcGePoint3d ucsBasePoint = CConvertUtil::WcsToUcsPoint(basePoint);

int nReturn = acedGetPoint(asDblArray(ucsBasePoint), prompt, asDblArray(point));

if (nReturn == RTNORM)

{

//acedGetPoint得到UCS坐标,转换为WCS

point = CConvertUtil::UcsToWcsPoint(point);

}

return nReturn;

}

(8)其中的CConvertUtil类:

ef0d920b0f3cfce73a9962601b6bcedf.png

在CConvertUtil类中添加成员函数:AcGePoint3d WcsToUcsPoint(const AcGePoint3d&point); 实现代码:

AcGePoint3d CConvertUtil::WcsToUcsPoint( const AcGePoint3d &point )

{

// 转换成世界坐标

AcGePoint3d pt;

struct resbuf rbFrom, rbTo;

rbFrom.restype = RTSHORT;

rbFrom.resval.rint = 0; // from WCS

rbTo.restype = RTSHORT;

rbTo.resval.rint = 1; // to UCS

acedTrans(asDblArray(point

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值