C#,CAD二次开发,基于参考面参考点计算一个点的坐标
/// <summary>/// 计算坐标,返回List/// </summary>/// <param name="startPoint">参考坐标点</param>/// <param name="bottomLeft">参考面的左下角坐标点</param>/// <param name="point">要计算的点</param>/// <param name="angle">参考面的角度(角度)</param>/// <returns></returns>private List<double> PointLoc(Point3d startPoint, Point3d bottomLeft, Point3d point, double angle, EntityPmkModel pmkModel){List<double> pointLoc = new List<double>();if (startPoint.X == 0 || startPoint.Y == 0){_doc.PrintMessage("起点的水平和垂直坐标至少有一个为0");}if (point.X == 0 || point.Y == 0){_doc.PrintMessage("特征点的水平和垂直坐标至少有一个为0");}//得到相对的水平距离double length = point.X - bottomLeft.X;_doc.PrintMessage("顶高的水平距离是:" + length.ToString("F2"));//计算三角函数使用的是弧度制,angle = angle * Math.PI / 180;double x2 = 0.0;double y2 = 0.0;//起点X大于终点X,起点Y小于终点Y,(90,180)if (pmkModel.PmStartPointX > pmkModel.PmEndPointX && pmkModel.PmStartPointY < pmkModel.PmEndPointY){//根据给的起点计算坐标,CAD中坐标与现实中坐标是相反的x2 = startPoint.Y - length * Math.Sin(angle);y2 = startPoint.X - length * Math.Cos(angle);}//起点X小于等于终点X,起点Y小于等于终点Y,[0,90]else if (pmkModel.PmStartPointX <= pmkModel.PmEndPointX && pmkModel.PmStartPointY <= pmkModel.PmEndPointY){//根据给的起点计算坐标,CAD中坐标与现实中坐标是相反的x2 = startPoint.Y + length * Math.Sin(angle);y2 = startPoint.X + length * Math.Cos(angle);}//起点X小于等于终点X,起点Y大于等于终点Y,[270,360)else if (pmkModel.PmStartPointX <= pmkModel.PmEndPointX && pmkModel.PmStartPointY >= pmkModel.PmEndPointY){//根据给的起点计算坐标,CAD中坐标与现实中坐标是相反的x2 = startPoint.Y + length * Math.Sin(angle);y2 = startPoint.X + length * Math.Cos(angle);}//起点X大于终点X,起点Y大于终点Y,(180,270)else if (pmkModel.PmStartPointX > pmkModel.PmEndPointX && pmkModel.PmStartPointY > pmkModel.PmEndPointY){//根据给的起点计算坐标,CAD中坐标与现实中坐标是相反的x2 = startPoint.Y - length * Math.Sin(angle);y2 = startPoint.X - length * Math.Cos(angle);}//起点X大于终点X,起点Y等于终点Y,180else if (pmkModel.PmStartPointX > pmkModel.PmEndPointX && pmkModel.PmStartPointY > pmkModel.PmEndPointY){//根据给的起点计算坐标,CAD中坐标与现实中坐标是相反的x2 = startPoint.Y + length * Math.Sin(angle);y2 = startPoint.X + length * Math.Cos(angle);}//依次将点添加到List里面pointLoc.Add(x2);pointLoc.Add(y2);return pointLoc;}
C#,CAD二次开发,基于参考面参考点计算一个点的坐标相关推荐
- C# CAD二次开发——建筑结构墙体线荷载计算工具开发(一)
前言: 本人是一名建筑设计公司的结构设计人员,建筑业的势头显然没有前些年那般波涛汹涌.浪潮暂退的今天很多向我这样的结构设计从业人员倍感迷茫.行业沉寂的这些日子里我不断探索,希望在减隔震.BIM.钢结构 ...
- c#CAD二次开发全套视频目录
本人非专业编程人员,设计院画图民工一名.自学CAD编程,也写了一些小程序!初期学习lisp编程语言,基本了解CAD各中开发模块,写过一些程序!前段时间自学C#CAD二次开发,遍布网上无教学视频.经过自 ...
- C#进行CAD二次开发学习笔记--02
目录 Editor 拖动类EntityJig 选择集 Editor 在C#进行CAD二次开发时,Editor类是一个特别有用的类.它提供了大量常用的接口函数,比如: // 拖动相关接口 public ...
- 基于C#的中望CAD二次开发学习笔记(1)环境测试
目录 前言 一.ZRXSDK的安装使用 二.创建项目 三.编写环境测试代码 四.在ZWCAD中测试 参考资料 总结 前言 作为一个设计院搬砖人,和各种CAD打交道是必不可少的.当然,其中最为正统的是A ...
- Auto CAD二次开发:基于VBA语言的画圆软件开发
本文已经首发在个人微信公众号:工业机器人仿真与编程(微信号:IndRobSim),欢迎关注! 不仅是CATIA软件具有VBA二次开发接口,很多机械设计软件也都具有VBA二次开发接口.本期,就来为大家介 ...
- 引用:基于C#的中望CAD二次开发学习笔记
目录 前言 一.ZRXSDK的安装使用 二.创建项目 三.编写环境测试代码 四.在ZWCAD中测试 参考资料 总结 前言 作为一个设计院搬砖人,和各种CAD打交道是必不可少的.当然,其中最为正统的是A ...
- C#实战之CAD二次开发006:与python进行Socket传输文件
前言 前面介绍了与CAD相关的一些功能,本期介绍一下C#和python如何通过socket通信来进行文件的传输,建议不了解Socket的同学先去了解一下socket的通讯原理,这样看起来不会云里雾里的 ...
- cad二次开发程序的绿色安装
此问题的引入是因为一个cad二次开发软件,客户要求做成绿色安装.何为绿色安装呢?软件包copy到一台电脑上(已安装CAD),双击exe,打开的界面包含自定义的菜单.菜单的图标能正确显示.每个功能能使用 ...
- CAD二次开发资料汇总
欢迎加入建筑信息化开发交流群,获取开发资料 群号:711844216 一.背景 对工程出身的朋友来说,CAD就像一位朋友,常伴吾身,为了提高效率,于是小伙伴门开始尝试CAD二次开发,刚入门,资料去哪找 ...
最新文章
- Mac中MacPorts安装和使用
- java窗口怎么实现修改密码_【求助】Java中如何实现更改windows密码
- Python之单元测试
- C# 之浅拷贝与深拷贝问题拙见(一)
- 在windows7上的通过composer安装yii2
- UVA 11557 - Code Theft (KMP + HASH)
- python独立图形_在networkx中查找图形对象中的独立图形
- Python入门--特殊属性
- SysUtils.Trim、SysUtils.TrimLeft、SysUtils.TrimRight - 删除空格
- AC日记——A+B Problem(再升级) 洛谷 P1832
- 黑客常备十大编程语言,每一个都不容易学,但每一个又很有用
- oracle中聚合比较函数,Oracle 分析函数与聚合函数区别
- 企业部署WAPI无线网络的技术详析
- 【Java学习笔记】2023_03_10Java基础
- face_recognition IndexError: list index out of range
- 【ELK】02、ElasticSearch基础
- SQL语句 字段类型转换—文本型转换成数值型
- Linux应用编程和网络编程(3)------- Linux中文件的属性
- “代码差的程序员,90%输在了方法上!”骨灰级开发:其实都是瞎努力
- 月赚3000不是梦(谷歌广告联盟)