获取Arc-G代码转换的中心点

时间:2014-03-18 07:03:01

标签: c# g-code

赫罗

这是我第一次在这里发帖 我是C#的新手,但是我遇到了困难

在你会发现的插图中 弧的坐标 所有积分均来自(0,0) X轴是水平的 Z轴是垂直的

http://i.stack.imgur.com/ycmdi.png

输入变量:

Xo,Zo =(529.819,343.509)
Xn,Zn =(529.26,343.678)
R(Radius) =(9.2)

我需要I,K的坐标(Centrer Point,参考0,0)

对我的回答,K是(I532.2,K352.396) 但我想知道如何计算这个

这将在G代码转换中使用 例如:

N8(3)X529.819Z343.509$
N9(4)X529.26Z343.678R9.2C0$

N8(3)X529.819Z343.509$
N9(4)X529.26Z343.678I532.2K352.396$

(C0& C1为CW& CCW)

1 个答案:

答案 0 :(得分:2)

我很久以前写过的一些VB6代码的复制/粘贴,它每天都在很多机器上运行。它通过将坐标系旋转两点之间的角度来工作,从而大大简化了数学运算。 Tangent()返回角度,Rotate()旋转一个点,Sqr()是C#中的Math.Sqrt():

  '--- Compute arc center from radius
  Dim tang#, w#
  tang = co1.Tangent(co2)
  co2.Rotate co1, -tang
  center.X = (co1.X + co2.X) / 2
  center.Y = 0
  w = center.X - co1.X
  If Abs(mModal.RWord) < w Then
    '--- R-word too small
    If mModal.ThrowErr And w - Abs(mModal.RWord) > 0.00
      Err.Raise 911, , "R-word too small"
    End If
  Else
    center.Y = -Sqr(mModal.RWord * mModal.RWord - w * w
  End If
  '--- Choose out of the 4 possible arcs
  If Not cw Then center.Y = -center.Y
  If mModal.RWord < 0 Then center.Y = -center.Y
  center.Y = center.Y + co1.Y
  center.Rotate co1, tang
  co2.Rotate co1, tang
  GetArcCenter = center