C#中如何绘制一个四分之一的圆锥

思路:在C#中有自带的绘制圆锥的方法,
ConeElement coneElementLeft = new ConeElement(DgnModel dgnModel, Element templateElement, double topRadius, double bottomRadius, DPoint3d topCenter, DPoint3d bottomCenter, DMatrix3d rotation, bool isCapped);(这个创建方法对应的是MicroStation CE版本)
可这是绘制一个标准的圆锥,不能直接绘制出一个四分之一的圆锥,我们要通过剪切的思想,将原形体剪切好再放置相应的位置即可。

1.首先剪切好四分之一圆锥

   //绘制圆锥BIM.SmartSolidElement Cone_L = app.SmartSolid.CreateCone(null, 0, boxStraightWingWallData.C2 * mm/ Session.Instance.GetActiveDgnModel().GetModelInfo().UorPerMaster, boxStraightWingWallData.C2 * mm / Session.Instance.GetActiveDgnModel().GetModelInfo().UorPerMaster);//绘制剪切圆锥的矩形体BIM.SmartSolidElement Slab_L = app.SmartSolid.CreateSlab(null, 2*boxStraightWingWallData.C2 * mm / Session.Instance.GetActiveDgnModel().GetModelInfo().UorPerMaster, 2*boxStraightWingWallData.C2 * mm / Session.Instance.GetActiveDgnModel().GetModelInfo().UorPerMaster, boxStraightWingWallData.C2 * mm / Session.Instance.GetActiveDgnModel().GetModelInfo().UorPerMaster);//将矩形体移到圆锥的一半位置BIM.Point3d p1 = app.Point3dFromXYZ(boxStraightWingWallData.C2 * mm / Session.Instance.GetActiveDgnModel().GetModelInfo().UorPerMaster, 0, 0);Slab_L.Move(p1);//剪切一半的圆锥BIM.SmartSolidElement Subtract_L = app.SmartSolid.SolidSubtract(Cone_L, Slab_L);//将矩形体移到一半圆锥的一半位置p1 = app.Point3dFromXYZ(-boxStraightWingWallData.C2 * mm / Session.Instance.GetActiveDgnModel().GetModelInfo().UorPerMaster, boxStraightWingWallData.C2 * mm / Session.Instance.GetActiveDgnModel().GetModelInfo().UorPerMaster, 0);Slab_L.Move(p1);//剪切一半的圆锥一半,Subtract_L即是四分之一圆锥Subtract_L = app.SmartSolid.SolidSubtract(Subtract_L, Slab_L);

注:这里绘制出的剪切体是以原点为坐标,在移动矩形体剪切的时候默认为其几何中心点作为移动点的初始点,绘制方法对应的是MicroStation V8i版本。

2.其次通过旋转变换放置相应位置

  //绕Z轴旋转法向量与Y轴的正方向的夹角BIM.Matrix3d ma_L = app.Matrix3dFromVectorAndRotationAngle(app.Point3dFromXYZ(0, 0, 1), angle.Radians);BIM.Transform3d ta_L = app.Transform3dFromMatrix3d(ma_L);Subtract_L.Transform(ta_L);//剪切体放置的位置点BIM.Point3d P1 = ceDpoint_v8Point(leftCircleCenterPt);Subtract_L.Move(P1);P1 = app.Point3dFromXYZ(0, 0, boxStraightWingWallData.C2 / 2 * mm / Session.Instance.GetActiveDgnModel().GetModelInfo().UorPerMaster);Subtract_L.Move(P1);app.ActiveModelReference.AddElement(Subtract_L);long id_L = Subtract_L.ID;ElementId elemid_L = new ElementId(ref id_L);Element temp_L = Session.Instance.GetActiveDgnModel().FindElementById(elemid_L);

注:ceDpoint_v8Point()这个方法是将CE的DPoint3d点转换为V8i的DPoint3d点,将绘制方法与放置位置点统一。

3.最后处理好的形体绘制在图纸上

  temp_L.AddToModel();

C#中如何绘制一个四分之一的圆锥相关推荐

  1. android小球移动代码,Android中如何绘制一个跟随手指移动的小球

    Android中如何绘制一个跟随手指移动的小球 发布时间:2020-11-07 16:22:43 来源:亿速云 阅读:82 作者:Leah 本篇文章为大家展示了Android中如何绘制一个跟随手指移动 ...

  2. 小猪佩奇python_「小猪佩奇头像」使用python中turtle绘制一个小猪佩奇的头像 - seo实验室...

    小猪佩奇头像 之前一直被佩奇的预告片刷屏,就想着用Python中的turtle模块来自己绘制一个海报目前完成了一个头,代码如下:之后会更新整幅图from turtle import * def eye ...

  3. canvas绘制四分之一圆_canvas中怎么绘制一个扇形?四分之一圆.

    2016-01-13 回答 在html5 canvas 中,我们可以通过 arc 方法来绘制圆形: // context.arc(x, y, r, sangle, eangle, counterclo ...

  4. MATLAB中如何绘制一个球

    在看到surf函数时,surf的MATLAB帮助文档中,有绘制一个球,所以想用MATLAB绘制一个球. 主要使用到sphere函数. sphere(n);绘制球的表面图,球由n*n个面组成. sphe ...

  5. 《Unity》如何在任意一条线段中心上绘制一个三角形。

    例如,绘制一个这种三角形,我这里不特定指出Unity Editor ,他是一种数学知识. 例如,如图,先求出线段中心点c,然后指定一个边长 = m, 沿线段方向增加m距离,得到第一个点v0,同理,反向 ...

  6. python中怎么画一个机器猫_如何用Python画一只机器猫?

    作者 | 人邮异步社区 责编 | 胡巍巍 出品 | CSDN博客 自信心是成功的源泉,对刚入门编程行业的初级程序员来说,多敲代码多做项目就是构建自信心的最好办法. 第一次学编程是在屏幕上敲出" ...

  7. Unity3D学习笔记1——绘制一个三角形

    文章目录 1. 绪论 2. 概述 3. 详论 3.1. 准备 3.2. 实现 3.3. 解析 3.3.1. 场景树对象 3.3.2. 绘制方法 4. 结果 1. 绪论 最近想学习一下Unity3d,无 ...

  8. 原生WebGL场景中绘制多个圆锥圆柱

    前几天解决了原生WebGL开发中的一个问题,就是在一个场景中绘制多个几何网格特征不同的模型,比如本文所做的绘制多个圆锥和圆柱在同一个场景中,今天抽空把解决的办法记录下来,同时也附上代码.首先声明,圆柱 ...

  9. python 子图_python 实现在一张图中绘制一个小的子图方法

    有时候为了直观展现图的信息,可以在大图中添加小子图的方式进行数据分析,如下图所示: 具体的代码如下:该图连接了数据库,当然重要的不是数据展示,而是添加子图的方法. import matplotlib. ...

最新文章

  1. 在linux系统下实现音视频即时通讯的部分代码
  2. Tech ED的课程和动手实验营讲义已经发布,需要的赶紧去下载
  3. matlab 着色算法,colorization_matlab着色 - 源码下载|图形图象|图形图像处理(光照,映射..)|源代码 - 源码中国...
  4. 数据结构实验之栈与队列五:下一较大值(一)
  5. AndroidStudio中提示:Couldn‘t find meta-data for provider with authority
  6. Javacript和AngularJS中的Promises
  7. Android布局延伸状态栏,Android沉浸式全屏讲解(状态栏、导航栏处理)
  8. YOLOv5的详细使用教程,以及使用yolov5训练自己的数据集
  9. 蒙版操作—利用图层蒙版换脸
  10. 计算机组成原理图ei,(完整版)计算机组成原理试题库(含答案)-
  11. 不断尝试,做更好的自己|Fabia,很高兴再认识你
  12. ghost系统安装无法启动服务器,手把手教你重装Ghost系统错误怎么办
  13. 【Pytorch】torch.Tensor.expand_as()与torch.Tensor.expand()使用与比较
  14. 2022年9月11日:人生第一次相亲记录
  15. CS5266替代AG9311设计TYPEC转HDMI带PD3.0音视频拓展坞方案
  16. HDHCMS模板建立与栏目绑定的方法
  17. 真正标准,规范的企业网站建设合同书
  18. C语言入门-基础知识
  19. Maven 环境配置
  20. 论文中著名会议和期刊的一些介绍(持续更新中)

热门文章

  1. Java中的异常总结详解(异常类型、声明异常、抛出异常、捕获异常)
  2. 超牛叉的外网渗透详细教程
  3. E泰勒级数展开近似sin(x)的值
  4. java识别雨滴_如何实现一个简单的雨滴动画?手把手告诉你
  5. PIP出现Fatal error in launcher:
  6. ubuntu部署新环境第三方库的绝招-requirement.txt,pur的使用
  7. 依然那么“橙”,木瓜移动品牌焕新升级于今日正式发布~
  8. java——IDEA集成开发工具的介绍、下载、安装(教育邮箱申请)
  9. 新研究训练小老鼠充当分类器,识别Deepfake假声音,比计算机更靠谱
  10. IOS-触摸简单应用-触摸移动按钮