When using Output Contact Data in a milling operation the mom_contact_normal values are not as expected, compared to the documentation:
https://docs.plm.automation.siemens.com/tdoc/nx/1847/nx_help/#uid:id755569Solution
The mom_contact_normal vector is related to the machine tool coordinate system. To get the vector related to the MCS; mom_contact_vector should be used instead.
For example, we have a Variable Contour operation with Surface Area drive method and tool axis Normal to Drive:
When post processing this operation the result will be something like this:
145 mom_contact_normal(0) = -0.00000000000000000
146 mom_contact_normal(1) = -0.00000000000000461
147 mom_contact_normal(2) = 1.0000000000000002
148 ***
149 mom_contact_vector(0) = 0.00000000000000000
150 mom_contact_vector(1) = 0.38268343236508984
151 mom_contact_vector(2) = -0.92387953251128685
152 ***
153 mom_contact_point(0) = 0.00000000000002381
154 mom_contact_point(1) = -0.00000000000011546
155 mom_contact_point(2) = 25.000000000000004
156 ***
157 mom_contact_center(0) = 0.00000000000002381
158 mom_contact_center(1) = -0.00000000000018474
159 mom_contact_center(2) = 40.0
160 ***
161 Tool position X. mom_pos(0) = 0.00000000000002430
162 Tool position Y. mom_pos(1) = 9.5670858091272475
163 Tool position Z. mom_pos(2) = -23.096988312782173
164 ***
165 LN Y+0.0 NX0. NY0. NZ1. TX0. TY0.3826834 TZ-0.9238795
So mom_contact_normal is always pointing in the Z direction, because it's related to the coordinate system of the machine tool. Recalculated to the MCS this will be mom_contact_vector. In this case, beacuse the tool axis is normal to the surface, mom_contact_vector is identical to the tool axis.
If we now edit the operation and set the tool axis to Relative to Drive with a 30 degree tilt angle:
And post process again:
146 mom_contact_normal(0) = -0.48960977803747263
147 mom_contact_normal(1) = 0.10140150516679625
148 mom_contact_normal(2) = 0.86602540378444171
149 ***
150 mom_contact_vector(0) = 0.00000000000000000
151 mom_contact_vector(1) = 0.38268343236508989
152 mom_contact_vector(2) = -0.92387953251128685
153 ***
154 mom_contact_point(0) = -12.240244450936837
155 mom_contact_point(1) = 2.5350376291699108
156 mom_contact_point(2) = 21.65063509461103
157 ***
158 mom_contact_center(0) = -19.584391121498921
159 mom_contact_center(1) = 4.056060206671857
160 mom_contact_center(2) = 34.641016151377656
161 ***
162 Tool position X. mom_pos(0) = 7.500000000000016
163 Tool position Y. mom_pos(1) = 10.33613368406972
164 Tool position Z. mom_pos(2) = -24.953634122582489
165 ***
166 LN X-12.24 Y2.535 NX-0.4896098 NY0.1014015 NZ0.8660254 TX-0.5 TY0.3314136 TZ-0.8001031
Now mom_contact_normal and the tool axis will be different, but mom_contact_vector vector is still more or less the same as before, as expected. So in short; the solution in most use cases is to use mom_contact_vector.
Hardware/Software Configuration
Platform: all
OS: n/a
OS Version: n/a
Product: NX
Application: CAM
Version: V1859
Function: SURFACE_CONTOUR
Ref: 002-8013844