Sub 插补()
PSet (z原点, x原点), vbRed
余数X = 0: 余数Y = 0: 余数Z = 0: 插补记录 = 0:
过象限标志 = 0: 跨象限数量 = 0
If Opt逆圆 = False Then
xx: 跨象限数量 = 跨象限数量 + 1
Select Case 象限标志
Case 1: '第一象限插补
过象限预处理
Do Until (x动点对圆心 - x终点对圆心) ^ 2 + (z动点对圆心 - z终点对圆心) ^ 2 <= 跨象限数量 ^ 2
If x动点对圆心 = 0 Then
象限标志 = 2:
过象限标志 = 1
GoTo xx
End If
插补公共
Line -Step(z步长 × 标志Z, -x步长 × 标志X), vbRed
Loop
过象限标志 = 0
Case 2: '第二象限插补
过象限预处理
Do Until (x动点对圆心 - x终点对圆心) ^ 2 + (z动点对圆心 - z终点对圆心) ^ 2 <= 跨象限数量 ^ 2
If x动点对圆心 = 0 Then
象限标志 = 3:
过象限标志 = 1
GoTo xx
End If
插补公共
Line -Step(-x步长 × 标志X, z步长 × 标志Z), vbRed
Loop
过象限标志 = 0
Case 3: '第三象限插补
过象限预处理
Do Until (x动点对圆心 - x终点对圆心) ^ 2 + (z动点对圆心 - z终点对圆心) ^ 2 <= 跨象限数量 ^ 2
If x动点对圆心 = 0 Then
象限标志 = 4:
过象限标志 = 1
GoTo xx
End If
插补公共
Line -Step(z步长 × 标志Z, -x步长 × 标志X), vbRed
Loop
过象限标志 = 0
Case 4: '第四象限插补
过象限预处理
Do Until (x动点对圆心 - x终点对圆心) ^ 2 + (z动点对圆心 - z终点对圆心) ^ 2 <= 跨象限数量 ^ 2
If x动点对圆心 = 0 Then
象限标志 = 1:
过象限标志 = 1
GoTo xx
End If
插补公共
Line -Step(-x步长 × 标志X, z步长 × 标志Z), vbRed
Loop
过象限标志 = 0
End Select
Else
xy: 跨象限数量 = 跨象限数量 + 1
Select Case 象限标志
Case 1: '第一象限插补
过象限预处理
Do Until (x动点对圆心 - x终点对圆心) ^ 2 + (z动点对圆心 - z终点对圆心) ^ 2 <= 跨象限数量 ^ 2
单步连续判断
If z动点对圆心 = 0 Then
象限标志 = 4:
过象限标志 = 1
GoTo xy
End If
插补公共
Line -Step(-z步长 × 标志Z, x步长 × 标志X), vbRed
Loop
过象限标志 = 0
Case 2: '第二象限插补
过象限预处理
Do Until (x动点对圆心 - x终点对圆心) ^ 2 + (z动点对圆心 - z终点对圆心) ^ 2 <= 跨象限数量 ^ 2
单步连续判断
If z动点对圆心 = 0 Then
象限标志 = 1:
过象限标志 = 1
GoTo xy
End If
插补公共
Line -Step(x步长 × 标志X, -z步长 × 标志Z), vbRed
Loop
过象限标志 = 0
Case 3: '第三象限插补
过象限预处理
Do Until (x动点对圆心 - x终点对圆心) ^ 2 + (z动点对圆心 - z终点对圆心) ^ 2 <= 跨象限数量 ^ 2
If z动点对圆心 = 0 Then
象限标志 = 2:
过象限标志 = 1
GoTo xy
End If
插补公共
Line -Step(-z步长 × 标志Z, x步长 × 标志X), vbRed
Loop
过象限标志 = 0
Case 4: '第四象限插补
过象限预处理
Do Until (x动点对圆心 - x终点对圆心) ^ 2 + (z动点对圆心 - z终点对圆心) ^ 2 <= 跨象限数量 ^ 2
If z动点对圆心 = 0 Then
象限标志 = 3:
过象限标志 = 1
GoTo xy
End If
插补公共
Line -Step(x步长 × 标志X, -z步长 × 标志Z), vbRed
Loop
过象限标志 = 0
End Select
cc: End If
End Sub