【CAD arx二次开发】Editor获取对象和用户交互

获取整数

	         int z;
			if (acedGetInt(TEXT("\n请输入一个实数:"), &z) == RTNORM)
			{
				acutPrintf(TEXT("\n输入的数值为%d:"), z);
			}

获取实数

             ads_real r;
			if (acedGetReal(TEXT("\n请输入一个实数"), &r) == RTNORM)
			{
				acutPrintf(TEXT("\n请输入一个实数%f:"), r);
			}

获取字符串

            AcString str;
			if (acedGetString(0, TEXT("\n请输入一个字符串"), str) == RTNORM)
			{
				acutPrintf(str);
			}

获取角度

           ads_point p = { 0,0,0 };
			ads_real r;
			if (acedGetAngle(p, TEXT("\n请输入一个角度"), &r) == RTNORM)
			{
				
				acutPrintf(TEXT("\n输入的角度是:%f"), r);//返回的是弧度
			}

获取区域

	    ads_point p = { 0,0,0 };
		ads_point res;
		if (acedGetCorner(p, TEXT("\n请拖动出一个区域:"), res) == RTNORM)
		{
				acutPrintf(_T("输入点的坐标是(%.2f, %.2f, %.2f)"), res[X], res[Y], res[Z]);
		}

获取距离

ads_point p = { 0,0,0 };
		ads_point res;
		if (acedGetDist(p, TEXT("\n请拖动出一个距离:"), res) == RTNORM)
		{
		acutPrintf(_T("输入点的坐标是(%.2f, %.2f, %.2f)"), res[X], res[Y], res[Z]);
		}

获取方向

	    ads_point p = { 0,0,0 };
		ads_real res;
		if (acedGetOrient(p, TEXT("\n请选择一个方向:"), &res) == RTNORM)
		{
			acutPrintf(TEXT("\n输入的角度是:%f"), res);//返回的是弧度
		}

获取点

	   ads_point p = { 0,0,0 };
		ads_point res;
		//有引线的选择点
		if (acedGetPoint(p, TEXT("\n请选择一个点:"), res) == RTNORM)
		{
			
				acutPrintf(_T("输入点的坐标是(%.2f, %.2f, %.2f)"), res[X], res[Y], res[Z]);
		}
		//无引线选择点
		if (acedGetPoint(NULL, TEXT("\n请选择一个点:"), res) == RTNORM)
		{
			acutPrintf(_T("输入点的坐标是(%.2f, %.2f, %.2f)"), res[X], res[Y], res[Z]);
		}

获取带关键字的点

		int rc; // 返回值
		TCHAR kword[20]; // 关键字
		ads_point pt;
		acedInitGet(RSG_NONULL, _T("Keyword1 keyWord2"));
		rc = acedGetPoint(NULL, _T("输入一个点或[Keyword1/keyWord2]:"), pt);
		switch (rc)
		{
		case RTKWORD: // 输入了关键字
			if (acedGetInput(kword) != RTNORM)
				return;
			if (_tcscmp(kword, _T("Keyword1")) == 0)
				acedAlert(_T("选择的关键字是Keyword1!"));
			else if (_tcscmp(kword, _T("keyWord2")) == 0)
				acedAlert(_T("选择的关键字是keyWord2!"));
			break;
		case RTNORM:
			acutPrintf(_T("输入点的坐标是(%.2f, %.2f, %.2f)"), pt[X], pt[Y], pt[Z]);
		} // switch
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ObjetArx2004+VS2002前提:安装好以上两种软件创建步骤:1. 新建项目 Visual C++项目->选择ObjectARX/DBX/OMF->键入"Demo"项目名称 ->MFC Support中勾选Enxtension Dll->using MFC Shared DLL,其他取默认值2. 删除文件 在“解决方案资源管理器”中删除向导生成的acrxEntryPoint.cpp,DocData.cpp,DocData.h文件 同时可以在文件夹下彻底删除文件,后续步骤并不需要用到这3个文件3. 添加Demo.h文件 同时在Demo.h文件中加入代码 #pragma once #include"resource.h"3. 创建一个普通对话框,基于CDialog类,并生成类CDlgDemo4. 打开Demo.cpp文件,对这个文件要进行比较多的操作 ·注释掉"AFX_EXTENSION_MODULE DemoExtDLL ={ NULL, NULL };"这一句 ·添加#include "DlgDemo.h"头文件 ·添加函数DlgDemo(),具体见附件源文件代码 ·添加initApp(),unloadApp() ·注释掉DllMain中的"_hdllInstance =hInstance ;" ·在文件的末尾添加acrxEntryPoint() 这里需要提醒一下的是关于AC_IMPLEMENT_EXTENSION_MODULE(DemoDLL)的使用 涉及到了Dll资源的使用,所以DemoDLL在这里相当于一个连接AutoCAD和MFC的纽带, 保持整个Demo.cpp中,DemoDLL的一致5. 项目设置 菜单"工具"->"选项"->"项目"->"包含文件"->添加ObjectARX2004的inc目录 ->"库文件"->添加ObjectARX2004的lib目录6. 生成解决方案 一切pass,有2个警告rxapi.lib(libinit.obj) : warning LNK4099: 未发现 PDB“msvc.pdb” acedapi.lib(acedstub.obj) : warning LNK4099: 未发现 PDB“corehdr.pdb” 不用去管它,ObjectARX开发文档已经说明了这个问题的存在,不影响使用#至此为止,我们已经生成了MarkDemo.arx,在Debug目录下可以找到,下面将继续介绍如何在 AutoCAD2004菜单中自动加载Demo对话框

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三好学生~张旺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值