CAD坐标转换

CAD坐标转换

项目场景:

今天工作中遇到一个比较棘手的问题,客户给的CAD图纸有自己的坐标格网,而且实际的数据也是按照格网的坐标进行采集的,但是呢,我在构建模型的时候是用CAD的坐标进行构建的,这就导致数据不能正确放置到对应位置上
客户坐标格网
客户的坐标格网
客户坐标格网(坐标系)
在这里插入图片描述
CAD坐标

可以看出,俩者之间的差别还是挺大的,而且最致命的就是客户的坐标格网是倾斜的,而我们建模的CAD坐标是垂直的,所以这里就涉及到俩个坐标的对应关系,如何才能把俩个坐标上的点对应起来,如何才能把客户数据的坐标转换成我CAD的坐标


解决过程:

第一步:计算客户坐标系原点(0,0)对应CAD坐标系中的坐标

首先在图上找到一点,同时获取到他在客户坐标系和CAD坐标系下的坐标
在这里插入图片描述
一组对应点

在这里插入图片描述
对应点位置

坐标关系推演图如下所示:
在这里插入图片描述
由上图可以知道:
x0 = cadx - kxcosα +kysinα
y0 = cady - kxsinα - kycosα
带入之前获取的(cadx,cady)=>(37484241.92, 4426712.53) (kx,ky)=>16000,20500),我们就可以得到客户坐标系统原点(0,0)对应的CAD坐标是多少

获取客户坐标系统原点(0,0)对应的CAD坐标代码如下

//cad的x坐标
double cadx = 0;
//cad的y坐标
double cady = 0;
//矿上的本地的x坐标
double kuangx = 0;
//矿上的本地的y坐标
double kuangy = 0;
//转换后的矿上坐标的坐标原点对应的cad中的x
double x0 = 0;
//转换后的矿上坐标的坐标原点对应的cad中的y
double y0 = 0;
//矿上坐标与cad坐标在x方向上的夹角
double angle1 = 0;
if (programName.Contains("唐家会"))
{
    angle1 = 25 * Math.PI / 180;
    cadx = 37484241.92;
    cady = 4426712.53;
    kuangx = 16000;
    kuangy = 20500;
    //计算坐标原点
    double mx1 = cadx - kuangx * Math.Cos(angle1);
    double my1 = cady - kuangx * Math.Sin(angle1);
    x0 = mx1 + kuangy * Math.Sin(angle1);
    y0 = my1 - kuangy * Math.Cos(angle1);
}

第二步:通过计算出的坐标原点《客户坐标系原点(0,0)对应CAD坐标系中的坐标》(x0,y0),计算每一个数据在CAD坐标系下的坐标

坐标关系推演图如下所示:

在这里插入图片描述
由上图可知:
x = x0 + kxcosα - kysinα
y = y0 + kxsinα +kycosα
带入之前算出的(x0,y0)《客户坐标系原点(0,0)对应CAD坐标系中的坐标》,和当前客户数据的坐标(kx,ky),可以得出每一个点对应的CAD坐标

处理每一个点数据代码如下

double mx = double.Parse(x);
double my = double.Parse(y);
if(x0 != 0 && y0 != 0 && angle1 != 0 && mx != 0 && my != 0)
{ 
    //通过原点计算换算后的坐标
    double mx2 = x0 + mx * Math.Cos(angle1);
    double my2 = y0 + mx * Math.Sin(angle1);
    double rx = mx2 - my * Math.Sin(angle1);
    double ry = my2 + my * Math.Cos(angle1);
    x = rx.ToString();
    y = ry.ToString();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

生生不息0.o

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

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

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

打赏作者

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

抵扣说明:

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

余额充值