旋转类三维实体的创建

旋转创建三维实体

 旋转类三维实体的创建  

旋转类三维实体的创建  

2010-12-06 16:48:45|  分类: AutoCAD.NET二次 |  标签:revolve  region   |字号大中小 订阅

前面介绍了通过对面域的创建实现了三维实体的拉伸,虽然这种方式能创建出很多比较复杂的三维实体,但显然还不够,许多零件,例如轴类,绝大部分都是用车床加工出来的,这类零件沿轴线方向上的图形是变化的,而且还不连续,这个时候采用拉升将是一个不明智的选择,因为这会涉及到多次创建面域及拉伸、并集的运算,如果采用旋转的方式将会大大简化模型创建。

采用旋转方式创建三维实体可以采用Solid3d类中的Revolve方法,该方法原型如下:

public virtual void Revolve(Region region, Point3d axisPoint, Vector3d axisDir, Double angleOfRevolution);

第一个参数是被旋转的面域,这再次说明面域的重要性,第二个参数是指定旋转轴上的一个点,第三个参数则是旋转轴的方向,最后一个参数则是旋转的角度。

       下面还是用一个实例来说明。如下图中的一个轴,各尺寸参数如下所示:

旋转类三维实体的创建 - 379910987 - 年轻,就要多折腾~~

现在如何创建这一实体呢?首先还是使用多义线由于可以使用旋转,我们只需要条母线上的关键点即可,各关键点标记位置如下图:

 

旋转类三维实体的创建 - 379910987 - 年轻,就要多折腾~~

 

设编号为1的点坐标为(0,0),则各点坐标分别如下:

编号

坐标

编号

坐标

1

(0,0)

11

(214,37)

2

(320,0)

12

(214,36)

3

(320,25)

13

(212,34)

4

(318,27)

14

(144,34)

5

(278,27)

15

(142,32)

6

(276,29)

16

(80,32)

7

(276,31)

17

(79,31)

8

(226,31)

18

(2,31)

9

(224,33)

19

(0,29)

10

(224,37)

 

 

实现代码如下:

[CommandMethod("SHAFT")]

public void Shaft()

{

    Document doc = Application.DocumentManager.MdiActiveDocument;

    Database db = doc.Database;

    Transaction trans = db.TransactionManager.StartTransaction();

    BlockTable bt = trans.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;

    BlockTableRecord btr = trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;

    double pi = Math.PI;

    Polyline p = new Polyline();

    p.AddVertexAt(0, new Point2d(0, 0), 0, 0, 0);

    p.AddVertexAt(1, new Point2d(320, 0), 0, 0, 0);

    p.AddVertexAt(2, new Point2d(320, 25), 0, 0, 0);

    p.AddVertexAt(3, new Point2d(318,27), 0, 0, 0);

    p.AddVertexAt(4, new Point2d(278, 27), -Math.Tan(pi / 8), 0, 0);

    p.AddVertexAt(5, new Point2d(276, 29), 0, 0, 0);

    p.AddVertexAt(6, new Point2d(276, 31), 0, 0, 0);

    p.AddVertexAt(7, new Point2d(226, 31), -Math.Tan(pi / 8), 0, 0);

    p.AddVertexAt(8, new Point2d(224, 33), 0, 0, 0);

    p.AddVertexAt(9, new Point2d(224, 37), 0, 0, 0);

    p.AddVertexAt(10, new Point2d(214, 37), 0, 0, 0);

    p.AddVertexAt(11, new Point2d(214, 36), -Math.Tan(pi/8), 0, 0);

    p.AddVertexAt(12, new Point2d(212, 34), 0, 0, 0);

    p.AddVertexAt(13, new Point2d(144, 34), -Math.Tan(pi / 8), 0, 0);

    p.AddVertexAt(14,new Point2d(142,32),0,0,0);

    p.AddVertexAt(15, new Point2d(80, 32), -Math.Tan(pi / 8), 0, 0);

    p.AddVertexAt(16, new Point2d(79, 31), 0, 0, 0);

    p.AddVertexAt(17,new Point2d(2,31),0,0,0);

    p.AddVertexAt(18,new Point2d(0,29),0,0,0);

    p.Closed = true;

    //创建面域

    DBObjectCollection dboc = new DBObjectCollection();

    dboc.Add(p);

    DBObjectCollection RegionCollection = Region.CreateFromCurves(dboc);

    Region reg = RegionCollection[0] as Region;

    Solid3d sol = new Solid3d();//实体

    //创建旋转实体

    sol.Revolve(reg, new Point3d(0, 0, 0), Vector3d.XAxis, 2 * pi);

    btr.AppendEntity(sol);

    trans.AddNewlyCreatedDBObject(sol, true);

    trans.Commit();

    trans.Dispose();

}

运行好输入“SHAFT”,用体着色方式并选择一种颜色,效果如下:

旋转类三维实体的创建 - 379910987 - 年轻,就要多折腾~~

 

您可能也喜欢:

 

【四轴飞行器】非线性三自由度四轴飞行器模拟器研究(Matlab代码实现)内容概要:本文围绕非线性三自由度四轴飞行器模拟器的研究展开,重点介绍基于Matlab代码实现的四轴飞行器动力学建模与仿真方法。研究构建了考虑非线性特性的飞行器数学模型,涵盖姿态动力学与运动学方程,实现了三自由度(滚转、俯仰、偏航)的精确模拟。文中详细阐述了系统建模过程、控制算法设计思路及仿真结果分析,帮助读者深入理解四轴飞行器的飞行动力学特性与控制机制;同时,该模拟器可用于算法验证、控制器设计与教学实验。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的高校学生、科研人员及无人机相关领域的工程技术人员,尤其适合从事飞行器建模、控制算法开发的研究生和初级研究人员。; 使用场景及目标:①用于四轴飞行器非线性动力学特性的学习与仿真验证;②作为控制器(如PID、LQR、MPC等)设计与测试的仿真平台;③支持无人机控制系统教学与科研项目开发,提升对姿态控制与系统仿真的理解。; 阅读建议:建议读者结合Matlab代码逐模块分析,重点关注动力学方程的推导与实现方式,动手运行并调试仿真程序,以加深对飞行器姿态控制过程的理解。同时可扩展为六自由度模型或加入外部干扰以增强仿真真实性。
基于分布式模型预测控制DMPC的多智能体点对点过渡轨迹生成研究(Matlab代码实现)内容概要:本文围绕“基于分布式模型预测控制(DMPC)的多智能体点对点过渡轨迹生成研究”展开,重点介绍如何利用DMPC方法实现多智能体系统在复杂环境下的协同轨迹规划与控制。文中结合Matlab代码实现,详细阐述了DMPC的基本原理、数学建模过程以及在多智能体系统中的具体应用,涵盖点对点转移、避障处理、状态约束与通信拓扑等关键技术环节。研究强调算法的分布式特性,提升系统的可扩展性与鲁棒性,适用于多无人机、无人车编队等场景。同时,文档列举了大量相关科研方向与代码资源,展示了DMPC在路径规划、协同控制、电力系统、信号处理等多领域的广泛应用。; 适合人群:具备一定自动化、控制理论或机器人学基础的研究生、科研人员及从事智能系统开发的工程技术人员;熟悉Matlab/Simulink仿真环境,对多智能体协同控制、优化算法有一定兴趣或研究需求的人员。; 使用场景及目标:①用于多智能体系统的轨迹生成与协同控制研究,如无人机集群、无人驾驶车队等;②作为DMPC算法学习与仿真实践的参考资料,帮助理解分布式优化与模型预测控制的结合机制;③支撑科研论文复现、毕业设计或项目开发中的算法验证与性能对比。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注DMPC的优化建模、约束处理与信息交互机制;按文档结构逐步学习,同时参考文中提及的路径规划、协同控制等相关案例,加深对分布式控制系统的整体理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值