ObjectARX编程--圆弧
创建圆弧
CCalculation.cpp
AcGePoint3d CCalculation::Pt2dTo3d(AcGePoint2d pt)
{ AcGePoint3d ptTemp(pt.x,pt.y,0);return ptTemp;
}
#include <math.h>
double CCalculation::PI()
{return* atan(1.0);
}
CreateEnt.cpp
//创建圆弧
AcDbObjectId CCreateEnt::CreateArc(AcGePoint3d ptCenter, AcGeVector3d vec, double radius, double starAngle, double endAngle)
{ AcDbArc *pArc = new AcDbArc(ptCenter, vec, radius, startAngle, endAngle);//(圆心,平面,半径,起点角度,终点角度)/*StartAngle和EndAngle并不是起终点的角度,StartAngle可以认为是个参考角,默认是0,如果将圆弧绕圆心旋转10度,那这个StartAngle就是10度,EndAngle始终不变,是圆弧的圆心角。*/AcDbObjectId arcId;arcId = CCreate::PostToModelSpace(pArc); return arcId;
}//创建位于XOY平面上的圆弧的函数
AcDbObjectId CCreateEnt::CreateArc(AcGePoint2d ptCenter, double radius, double startAngle, double endAngle)
{AcGeVector3d vec(0,0,1);return CCreateEnt::CreateArc(CCalculation::Pt2dTo3d(ptCenter),vec,radius,startAngle,endAngle);
}//三点法创建圆弧
AcDbObjectId CCreateEnt::CreateArc(AcGePoint2d ptStart, AcGePoint2d ptOnArc, AcGePoint2d ptEnd)
{//使用几何类获得圆心,半径AcGeCircArc2d geArc(ptStart, ptOnArc, ptEnd);AcGePoint2d ptCenter = geArc.center();double radius = geArc.radius();//计算起始和终止角度AcGeVector2d vecStart(ptStart.x - ptCenter.x, ptStart.y - ptCenter.y);AcGeVector2d vecEnd(ptEnd.x - ptCenter.x, ptEnd.y - ptCenter.y);double startAngle = vecStart.angle();double endAngle = vecEnd.angle(); /*AcGeVector2d 类用来表示一个二维空间中的矢量,其成员函数 angle 返回该矢量和 X 轴正半轴的角度(用弧度来表示)。*/return CCreateEnt::CreateArc(ptCenter, radius, startAngle, endAngle);
}//"起点,圆心,终点"创建圆弧
//这个函数的名称不再是 CreateArc,而是 CreateArcSCE,这是因为该函数的参数列表、返回值都与三点法的函数相同,无法实现函数的重载,就只能重新定义一个新的函数名称。
AcDbObjectId CCreateEnt::CreateArcSCE(AcGePoint2d ptStart, AcGePoint2d ptCenter, AcGePoint2d ptEnd)
{//计算半径double radius = ptCenter.distanceTo(ptStart);//计算起,终点角度AcGeVector2d vecStart(ptStart.x - ptCenter.x, ptStart.y - ptCenter.y);AcGeVector2d vecEnd(ptEnd.x - ptCenter.x, ptEnd.y - ptCenter.y);double startAngle = vecStart.angle();double endAngle = vecEnd.angle();//创建圆弧return CCreateEnt::CreateArc(ptCenter, radius, startAngle, endAngle);
}
//"起点,圆心,圆弧角度"创建圆弧
AcDbObjectId CCreateEnt::CreateArc(AcGePoint2d ptStart, AcGePoint2d ptCenter, double angle)
{//计算半径double radius = ptCenter.distanceTo(ptStart);//计算起点,终点角度AcGeVector2d vecStart(ptStart.x - ptCenter.x, ptStart.y - ptCenter.y);double startAngle = vecStart.angle();double endAngle = startAngle + angle;//创建圆弧return CCreateEnt::CreateArc(ptCenter, radius, startAngle, endAngle);
}
acrxEntryPoint.cpp
#include "Calculation.h"
static void MLMyGroupAddArc()
{// 创建位于XOY平面上的圆弧-AcGePoint2d ptCenter(50, 50); CCreateEnt::CreateArc(ptCenter, 100 * sqrt((double)2) / 2, 5 * CCalculation::PI() / 4, 7 * CCalculation::PI() / 4); // 三点法创建圆弧-右AcGePoint2d ptStart(100, 0); AcGePoint2d ptOnArc(120, 50); AcGePoint2d ptEnd(100, 100); CCreateEnt::CreateArc(ptStart, ptOnArc, ptEnd); // “起点、圆心、终点”创建圆弧ptStart.set(100, 100); ptCenter.set(50, 50); ptEnd.set(0, 100); CCreateEnt::CreateArcSCE(ptStart, ptCenter, ptEnd); // “起点、圆心、圆弧角度”创建圆弧ptStart.set(0, 100); ptCenter.set(50, 50); CCreateEnt::CreateArc(ptStart, ptCenter, CCalculation::PI() / 2);
}
实现效果
ObjectARX编程--圆弧相关推荐
- 数控铣编程圆弧中心坐标l'j'k的区别
圆弧中心坐标是指圆弧的中心在工件坐标系中的位置.'l'.'j'.'k'代表着圆弧中心在工件坐标系中的X.Y.Z轴上的坐标.在数控铣编程中,使用圆弧中心坐标可以更精确地控制加工过程,并使得加工的结果更加 ...
- ObjectARX编程(六) ------块和属性
1. 块的新增 cstring blkname; //获取当前图形数据库 AcDbBlockTable* pBlkTbl = NULL; acdbHostApplicationServices()-& ...
- ObjectARX编程--直线
最近在学习ObjectARX,于是想着把一些东西写到这里供个人和大家参考,博客中出现的问题我会尽快改正,全篇代码基于<[c++]ObjectARX开发实例教程>进行整理与扩展,至于能够做到 ...
- ObjectARX编程--圆
最近在学习ObjectARX,于是想着把一些东西写到这里供个人和大家参考,博客中出现的问题我会尽快改正,全篇代码基于<[c++]ObjectARX开发实例教程>进行整理与扩展,至于能够做到 ...
- ObjectARX编程工具所有版本下载地址(最新含ObjectARX 2017)
2015 (32位和64位版本)下载: http://download.autodesk.com/esd ... n_64_and_32_Bit.exe 2016 (32位和64位版本)下载: htt ...
- C++ CAD ObjectARX 2018介绍
ObjectARX 2018目前最新的版本是ObjectARX2018.它是开发AutoCAD的核心,是最为高效的开发AutoCAD的工具.通过支持XML,为ObjectARX开发网络协作应用提供了有 ...
- VC6.0中ObjectARX应用程序的加载与运行
使用 ObjectARX ,首先要确定你的目标平台,获得适当的开发环境.如果你是在 AutoCAD2002 平台上开发,你就需要具备下面的工具和软件: � AutoCAD 2002 中文版或英文版 ...
- (7)ObjectARX2015 + vs2012创建多段线以及实体的旋转移动放缩
提示:看之前的博客(1)和(4),那里已经分析了创建一个图形对象的基本过程,在之前的基础上本节开始就要将着眼点放在创建实体的参数上. (1)ObjectARX2015 + vs2012创建直线_qq_ ...
- (18)ObjectARX2015 + vs2012插入块参照
1. 说明 本例允许用户输入一个块参照的名称,指定块参照的插入点等参数,然后将块参照插 入到模型空间. 2. 思路 AutoCAD 有块定义和块参照两个概念.这两个概念 ...
最新文章
- 解决 python pip install安装速度慢| 版本低|跨过个别错误包
- Linux Centos7.x 安装部署Mysql5.7几种方式的操作手册
- Hihocoder-1135-Magic Box
- 【C++ Primer学习笔记】第2章:变量和基本类型
- 函数对象 函数嵌套 名称空间与作用域
- c程序在solaris与linux的不同,在Solaris上编译应用程序时,在Linux上使用Valgrind也会有所帮助吗?...
- 内核kconfig语法及原理
- pandas中dataframe的索引问题
- C# list使用方法
- SQLServer数据库备份与还原
- 天锐绿盾报税软件 银行软件 财务软件报错病毒解决
- 2021最新Node.js视频教程(基础+全栈项目)
- 树莓派29/100 - 树莓派接上Kindle的墨水屏是什么体验?
- 服务器安装固态硬盘的步骤,电脑安装固态硬盘及安装系统的详细教程
- 如何理解 图像傅里叶变换的频谱图
- 查询一整天的数据 0点0分0秒之后 23点59分59秒之前
- 密码疑云 (2)——RSA加密机制需要的数学知识
- java中设置基偶隔行换色_Excel2016中奇偶行填充不同颜色的方法
- 希尔排序(实现+总结)
- 微型计算机控制数字量输入输出,[工学]WX_微型计算机控制技术_第二章5.ppt