diff --git a/AMZ_TPA8_SYSDL_MCM02.csv b/AMZ_TPA8_SYSDL_MCM02.csv index 8e092e1..61a2fb4 100644 --- a/AMZ_TPA8_SYSDL_MCM02.csv +++ b/AMZ_TPA8_SYSDL_MCM02.csv @@ -1,194 +1,194 @@ -record_type,conveyor_key,sec,included,reason,has_tpe,has_epc,has_vfd,is_last_any,is_last_geom,start_x,start_y,end_x,end_y,tpe_name,tpe_x,tpe_y,tpe_rotation,tpe_distance -CONVEYOR,PS3_1,1,1,GEOMETRY,1,1,1,0,0,3087.489034,3048.565032,3159.132392,3024.713237 -CONVEYOR,PS3_2,2,1,GEOMETRY,1,0,1,0,0,3159.132392,3024.713237,3190.945812,3042.099631 -CONVEYOR,PS3_3,3,1,GEOMETRY,1,0,1,0,0,3190.945812,3042.099631,3478.820696,3249.442902 -CONVEYOR,PS3_5,5,1,GEOMETRY,1,0,1,0,0,3519.577701,3258.530860,4079.105653,3253.674982 -CONVEYOR,PS3_6,6,1,GEOMETRY,1,0,1,0,0,4079.105653,3253.674982,4784.946959,3257.612009 -CONVEYOR,PS3_7,7,1,GEOMETRY,1,0,1,0,0,5985.674639,3259.327631,5985.674639,3259.327631 -CONVEYOR,PS3_9,9,1,GEOMETRY,1,0,1,0,0,6060.483270,3193.853573,6060.789954,2741.579531 -CONVEYOR,PS3_10,10,1,GEOMETRY,1,0,1,0,0,6060.789954,2741.579531,6060.495376,2610.801360 -CONVEYOR,PS3_12,12,1,GEOMETRY,1,1,1,1,1,6007.382954,2569.962296,5948.039145,2529.928635 -CONVEYOR,UL8_1,1,1,GEOMETRY,1,1,1,0,0,632.618127,3188.888389,824.872344,3157.126582 -CONVEYOR,UL8_2,2,1,GEOMETRY,1,1,1,0,0,885.669058,3169.966906,1712.765129,3158.462454 -CONVEYOR,UL8_3,3,1,GEOMETRY,1,0,1,0,0,1712.765129,3158.462454,1817.953869,3155.934504 -CONVEYOR,UL8_5,5,1,GEOMETRY,1,0,1,0,0,1881.702530,3136.323730,1944.426945,3101.149921 -CONVEYOR,UL8_6,6,1,GEOMETRY,1,0,1,0,0,1944.426945,3101.149921,1978.682956,3086.062642 -CONVEYOR,UL8_7,7,1,GEOMETRY,1,0,1,0,0,1978.682956,3086.062642,2007.744900,3063.545268 -CONVEYOR,UL8_8,8,1,GEOMETRY,1,0,1,0,1,2007.744900,3063.545268,2040.663378,3048.333245 -CONVEYOR,UL10_1,1,1,GEOMETRY,1,1,1,0,0,632.900863,3592.147634,823.776601,3561.145597 -CONVEYOR,UL10_2,2,1,GEOMETRY,1,1,1,0,0,874.719154,3570.155999,1720.187324,3564.061477 -CONVEYOR,UL10_3,3,1,GEOMETRY,1,0,1,0,0,1720.187324,3564.061477,2083.996631,3560.766860 -CONVEYOR,UL10_4,4,1,GEOMETRY,1,0,1,0,0,2083.996631,3560.766860,2128.229940,3542.739063 -CONVEYOR,UL10_5,5,1,GEOMETRY,1,0,1,0,0,2128.229940,3542.739063,2164.812356,3542.467143 -CONVEYOR,UL10_6,6,1,GEOMETRY,1,0,1,0,0,2164.812356,3542.467143,2200.090761,3544.785276 -CONVEYOR,UL10_7,7,1,GEOMETRY,1,0,1,0,0,2200.090761,3544.785276,2236.861695,3544.527150 -CONVEYOR,UL10_9,9,1,GEOMETRY,1,0,1,0,1,2309.630704,3563.985881,2358.664691,3592.202752 -CONVEYOR,UL9_3,3,1,GEOMETRY,1,1,1,0,0,551.208873,3355.007428,907.467125,3324.238385 -CONVEYOR,UL9_4,4,1,GEOMETRY,1,1,1,0,0,907.467125,3324.238385,1700.371316,3323.415506 -CONVEYOR,UL9_5,5,1,GEOMETRY,1,0,1,0,0,1700.371316,3323.415506,1826.538319,3321.774338 -CONVEYOR,UL9_7,7,1,GEOMETRY,1,0,1,0,0,1891.501859,3302.098769,2212.651713,3118.960609 -CONVEYOR,UL9_8,8,1,GEOMETRY,1,0,1,0,0,2212.651713,3118.960609,2247.352179,3100.254070 -CONVEYOR,UL9_9,9,1,GEOMETRY,1,0,1,0,0,2247.352179,3100.254070,2277.803935,3081.192233 -CONVEYOR,UL9_10,10,1,GEOMETRY,1,0,1,0,0,2277.803935,3081.192233,2310.374208,3065.368059 -CONVEYOR,UL9_11,11,1,GEOMETRY,1,0,1,0,1,2310.374208,3065.368059,2343.399072,3047.086292 -CONVEYOR,UL11_3,3,1,GEOMETRY,1,1,1,0,0,548.752870,3692.802976,897.324015,3661.485774 -CONVEYOR,UL11_4,4,1,GEOMETRY,1,1,1,0,0,897.324015,3661.485774,1700.480744,3658.222070 -CONVEYOR,UL11_5,5,1,GEOMETRY,1,0,1,0,0,1700.480744,3658.222070,1844.529026,3653.231416 -CONVEYOR,UL11_6,6,1,GEOMETRY,1,0,1,0,0,1844.529026,3653.231416,1879.597360,3657.637923 -CONVEYOR,UL11_7,7,1,GEOMETRY,1,0,1,0,0,1879.597360,3657.637923,1917.029348,3658.582710 -CONVEYOR,UL11_8,8,1,GEOMETRY,1,0,1,0,0,1917.029348,3658.582710,1951.991891,3658.283856 -CONVEYOR,UL11_9,9,1,GEOMETRY,1,0,1,0,0,1951.991891,3658.283856,1988.780120,3658.283856 -CONVEYOR,UL11_10,10,1,GEOMETRY,1,1,1,0,0,2030.764864,3659.578691,2591.455783,3686.635164 -CONVEYOR,UL11_12,12,1,GEOMETRY,1,0,1,0,0,2750.134283,3691.074283,2845.387748,3690.854148 -CONVEYOR,UL11_13,13,1,GEOMETRY,1,0,1,0,0,2845.387748,3690.854148,2953.707982,3688.012958 -CONVEYOR,UL11_14,14,1,GEOMETRY,1,0,1,1,1,2971.430134,3668.918012,3155.997766,3671.874205 -CONVEYOR,UL12_3,3,1,GEOMETRY,1,1,1,0,0,543.627555,3859.294486,905.036450,3826.957213 -CONVEYOR,UL12_4,4,1,GEOMETRY,1,1,1,0,0,905.036450,3826.957213,1742.072614,3827.324144 -CONVEYOR,UL12_5,5,1,GEOMETRY,1,0,1,0,0,1742.072614,3827.324144,1842.084498,3824.815942 -CONVEYOR,UL12_7,7,1,GEOMETRY,1,0,1,0,0,1908.852330,3808.657056,1955.553412,3781.851714 -CONVEYOR,UL12_8,8,1,GEOMETRY,1,0,1,0,0,1955.553412,3781.851714,1986.689623,3761.398031 -CONVEYOR,UL12_9,9,1,GEOMETRY,1,0,1,0,0,1986.689623,3761.398031,2020.048027,3747.625802 -CONVEYOR,UL12_10,10,1,GEOMETRY,1,0,1,0,1,2020.048027,3747.625802,2049.673824,3728.878967 -CONVEYOR,UL7_3,3,1,GEOMETRY,1,1,1,0,0,551.742895,2956.847765,908.026025,2987.966131 -CONVEYOR,UL7_4,4,1,GEOMETRY,1,1,1,0,0,908.026025,2987.966131,1711.113463,2986.840411 -CONVEYOR,UL7_5,5,1,GEOMETRY,1,0,1,0,0,1711.113463,2986.840411,1817.542835,2987.029037 -CONVEYOR,UL7_6,6,1,GEOMETRY,1,0,1,0,0,1817.542835,2987.029037,1857.441282,2972.114781 -CONVEYOR,UL7_7,7,1,GEOMETRY,1,0,1,0,0,1857.441282,2972.114781,1893.692205,2973.612010 -CONVEYOR,UL7_8,8,1,GEOMETRY,1,0,1,0,0,1893.692205,2973.612010,1929.723023,2973.789916 -CONVEYOR,UL7_9,9,1,GEOMETRY,1,0,1,0,0,1929.723023,2973.789916,1965.806948,2973.254470 -CONVEYOR,UL7_10,10,1,GEOMETRY,1,1,1,0,0,1998.130873,2981.527148,2611.835876,2978.598409 -CONVEYOR,UL7_12,12,1,GEOMETRY,1,0,1,0,0,2766.420800,2995.096200,2863.133560,2992.295904 -CONVEYOR,UL7_13,13,1,GEOMETRY,1,0,1,0,0,2863.133560,2992.295904,2970.734203,2992.915446 -CONVEYOR,UL7_14,14,1,GEOMETRY,1,0,1,1,1,2985.330236,2984.624061,3159.803377,2984.151808 -CONVEYOR,PS4_2,2,1,GEOMETRY,1,0,1,0,0,3144.026193,3596.341132,3300.316069,3508.372989 -CONVEYOR,PS4_4,4,1,GEOMETRY,1,0,1,0,0,3310.573165,3523.337000,3352.239313,3524.485575 -CONVEYOR,PS4_5,5,1,GEOMETRY,1,0,1,0,0,3352.239313,3524.485575,4006.352329,3523.358120 -CONVEYOR,PS4_6,6,1,GEOMETRY,1,0,1,0,0,4006.352329,3523.358120,4688.607797,3525.782820 -CONVEYOR,PS4_7,7,1,GEOMETRY,1,0,1,0,0,4688.607797,3525.782820,5611.139091,3525.602719 -CONVEYOR,PS4_8,8,1,GEOMETRY,1,0,1,0,0,5611.139091,3525.602719,6274.851839,3521.438644 -CONVEYOR,PS4_10,10,1,GEOMETRY,1,0,1,0,0,6353.888615,3456.502166,6352.160013,2673.212430 -CONVEYOR,PS4_11,11,1,GEOMETRY,1,0,1,0,0,6352.160013,2673.212430,6349.468358,2155.105517 -CONVEYOR,PS4_12,12,1,GEOMETRY,1,0,1,0,0,6349.468358,2155.105517,6355.840289,1761.029836 -CONVEYOR,PS4_14,14,1,GEOMETRY,1,1,1,1,1,6272.313843,1688.457365,5949.215298,1690.378911 -CONVEYOR,UL11_11,11,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,, -CONVEYOR,PS4_1,1,0,VFD_ONLY_BEFORE_GEOM_END,0,1,1,0,0,,,, -CONVEYOR,PS4_3,3,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,, -CONVEYOR,PS3_4,4,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,, -CONVEYOR,PS4_9,9,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,, -CONVEYOR,PS3_8,8,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,, -CONVEYOR,PS3_11,11,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,, -CONVEYOR,PS4_13,13,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,, -CONVEYOR,UL7_11,11,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,, -CONVEYOR,UL8_4,4,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,, -CONVEYOR,UL8_9,9,0,VFD_ONLY_LAST_MAY_MERGE,0,0,1,1,0,,,, -CONVEYOR,UL9_6,6,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,, -CONVEYOR,UL12_6,6,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,, -CONVEYOR,UL9_12,12,0,VFD_ONLY_LAST_MAY_MERGE,0,0,1,1,0,,,, -CONVEYOR,UL10_8,8,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,, -CONVEYOR,UL10_10,10,0,VFD_ONLY_LAST_MAY_MERGE,0,0,1,1,0,,,, -CONVEYOR,UL12_11,11,0,VFD_ONLY_LAST_MAY_MERGE,0,0,1,1,0,,,, -TPE,PS3_1,,,,,,,,,,,,,PS3_1_TPE1,3159.132392,3024.713237,210.000000,45.785116 -TPE,PS3_5,,,,,,,,,,,,,PS3_5_TPE1,3519.577701,3258.530860,90.000000,45.785116 -TPE,PS3_5,,,,,,,,,,,,,PS3_5_TPE2,4079.105653,3253.674982,90.000000,55.323971 -TPE,PS3_3,,,,,,,,,,,,,PS3_3_TPE1,3478.820696,3249.442902,120.000000,45.785116 -TPE,PS3_2,,,,,,,,,,,,,PS3_2_TPE1,3190.945812,3042.099631,210.000000,45.785116 -TPE,UL7_3,,,,,,,,,,,,,UL7_3_TPE2,908.026025,2987.966131,90.000000,43.000000 -TPE,UL7_3,,,,,,,,,,,,,UL7_3_TPE1,612.253341,3029.621551,0.000000,49.667350 -TPE,UL7_5,,,,,,,,,,,,,UL7_5_TPE1,1817.542835,2987.029037,90.000000,46.605812 -TPE,UL7_6,,,,,,,,,,,,,UL7_6_TPE1,1857.441282,2972.114781,90.000000,62.276218 -TPE,UL7_7,,,,,,,,,,,,,UL7_7_TPE1,1893.692205,2973.612010,90.000000,62.276218 -TPE,UL7_4,,,,,,,,,,,,,UL7_4_TPE1,1711.113463,2986.840411,90.000000,45.064241 -TPE,UL7_8,,,,,,,,,,,,,UL7_8_TPE1,1929.723023,2973.789916,90.000000,62.276218 -TPE,UL7_12,,,,,,,,,,,,,UL7_12_TPE1,2766.420800,2995.096200,90.000000,49.855884 -TPE,UL7_12,,,,,,,,,,,,,UL7_12_TPE2,2863.133560,2992.295904,90.000000,49.242255 -TPE,UL7_13,,,,,,,,,,,,,UL7_13_TPE1,2970.734203,2992.915446,90.000000,49.057934 -TPE,PS3_6,,,,,,,,,,,,,PS3_6_TPE1,4784.946959,3257.612009,90.000000,45.785116 -TPE,PS3_7,,,,,,,,,,,,,PS3_7_TPE1,5985.674639,3259.327631,90.000000,45.785116 -TPE,PS3_9,,,,,,,,,,,,,PS3_9_TPE1,6060.483270,3193.853573,180.000000,45.785116 -TPE,PS3_9,,,,,,,,,,,,,PS3_9_TPE2,6060.789954,2741.579531,180.000000,45.785116 -TPE,PS3_10,,,,,,,,,,,,,PS3_10_TPE1,6060.495376,2610.801360,180.000000,45.785116 -TPE,PS3_12,,,,,,,,,,,,,PS3_12_TPE1,5987.261559,2530.050002,90.000000,45.785116 -TPE,PS3_12,,,,,,,,,,,,,PS3_12_TPE2,5948.039145,2529.928635,90.000000,45.785116 -TPE,UL8_1,,,,,,,,,,,,,UL8_1_TPE1,824.872344,3157.126582,90.000000,43.000000 -TPE,UL8_3,,,,,,,,,,,,,UL8_3_TPE1,1817.953869,3155.934504,90.000000,63.087627 -TPE,UL8_8,,,,,,,,,,,,,UL8_8_TPE1,2040.663378,3048.333245,60.000000,65.489640 -TPE,UL8_7,,,,,,,,,,,,,UL8_7_TPE1,2007.744900,3063.545268,60.000000,65.489640 -TPE,UL8_6,,,,,,,,,,,,,UL8_6_TPE1,1978.682956,3086.062642,60.000000,65.489640 -TPE,UL8_5,,,,,,,,,,,,,UL8_5_TPE2,1944.426945,3101.149921,60.000000,65.489640 -TPE,UL8_5,,,,,,,,,,,,,UL8_5_TPE1,1881.702530,3136.323730,58.094345,65.489640 -TPE,UL9_7,,,,,,,,,,,,,UL9_7_TPE1,1891.501859,3302.098769,60.000000,65.489640 -TPE,UL9_7,,,,,,,,,,,,,UL9_7_TPE2,2212.651713,3118.960609,58.094345,65.489640 -TPE,UL9_8,,,,,,,,,,,,,UL9_8_TPE1,2247.352179,3100.254070,58.094345,65.489640 -TPE,UL9_9,,,,,,,,,,,,,UL9_9_TPE1,2277.803935,3081.192233,58.094345,65.489640 -TPE,UL9_10,,,,,,,,,,,,,UL9_10_TPE1,2310.374208,3065.368059,58.094345,65.489640 -TPE,UL8_2,,,,,,,,,,,,,UL8_2_TPE1,885.669058,3169.966906,270.000000,49.667350 -TPE,UL8_2,,,,,,,,,,,,,UL8_2_TPE2,1712.765129,3158.462454,90.000000,43.000000 -TPE,UL9_3,,,,,,,,,,,,,UL9_3_TPE1,608.834305,3362.234637,0.000000,49.667350 -TPE,UL9_3,,,,,,,,,,,,,UL9_3_TPE2,907.467125,3324.238385,90.000000,43.000000 -TPE,UL9_4,,,,,,,,,,,,,UL9_4_TPE1,1700.371316,3323.415506,90.000000,43.000000 -TPE,UL10_1,,,,,,,,,,,,,UL10_1_TPE1,823.776601,3561.145597,90.000000,43.000000 -TPE,UL10_2,,,,,,,,,,,,,UL10_2_TPE1,874.719154,3570.155999,270.000000,49.667350 -TPE,UL10_2,,,,,,,,,,,,,UL10_2_TPE2,1720.187324,3564.061477,90.000000,43.000000 -TPE,UL10_4,,,,,,,,,,,,,UL10_4_TPE1,2128.229940,3542.739063,90.000000,62.276218 -TPE,UL10_5,,,,,,,,,,,,,UL10_5_TPE1,2164.812356,3542.467143,90.000000,62.276218 -TPE,UL10_6,,,,,,,,,,,,,UL10_6_TPE1,2200.090761,3544.785276,90.000000,62.276218 -TPE,UL10_3,,,,,,,,,,,,,UL10_3_TPE1,2083.996631,3560.766860,90.000000,45.064241 -TPE,UL10_7,,,,,,,,,,,,,UL10_7_TPE1,2236.861695,3544.527150,90.000000,62.276218 -TPE,UL10_9,,,,,,,,,,,,,UL10_9_TPE1,2309.630704,3563.985881,120.000000,63.276200 -TPE,UL10_9,,,,,,,,,,,,,UL10_9_TPE2,2358.664691,3592.202752,120.000000,62.276218 -TPE,UL11_3,,,,,,,,,,,,,UL11_3_TPE1,606.378302,3700.030184,0.000000,49.667350 -TPE,UL11_3,,,,,,,,,,,,,UL11_3_TPE2,897.324015,3661.485774,90.000000,43.000000 -TPE,UL11_5,,,,,,,,,,,,,UL11_5_TPE1,1844.529026,3653.231416,90.000000,49.642395 -TPE,UL11_6,,,,,,,,,,,,,UL11_6_TPE1,1879.597360,3657.637923,90.000000,62.276218 -TPE,UL11_7,,,,,,,,,,,,,UL11_7_TPE1,1917.029348,3658.582710,90.000000,62.276218 -TPE,UL11_4,,,,,,,,,,,,,UL11_4_TPE1,1700.480744,3658.222070,90.000000,45.064241 -TPE,UL11_8,,,,,,,,,,,,,UL11_8_TPE1,1951.991891,3658.283856,90.000000,62.276218 -TPE,UL11_10,,,,,,,,,,,,,UL11_10_TPE1,2030.764864,3659.578691,90.000000,62.276218 -TPE,UL11_10,,,,,,,,,,,,,UL11_10_TPE2,2198.528913,3659.525592,90.000000,62.276218 -TPE,UL11_10,,,,,,,,,,,,,UL11_10_TPE3,2325.765680,3684.433010,270.000000,62.276218 -TPE,UL11_10,,,,,,,,,,,,,UL11_10_TPE4,2487.792623,3686.690780,270.000000,62.276218 -TPE,UL11_10,,,,,,,,,,,,,UL11_10_TPE5,2591.455783,3686.635164,270.000000,62.276218 -TPE,UL11_12,,,,,,,,,,,,,UL11_12_TPE1,2750.134283,3691.074283,270.000000,54.406101 -TPE,UL11_12,,,,,,,,,,,,,UL11_12_TPE2,2845.387748,3690.854148,270.000000,54.406101 -TPE,UL11_13,,,,,,,,,,,,,UL11_13_TPE1,2953.707982,3688.012958,270.000000,47.542783 -TPE,UL12_3,,,,,,,,,,,,,UL12_3_TPE2,905.036450,3826.957213,90.000000,43.000000 -TPE,UL12_4,,,,,,,,,,,,,UL12_4_TPE1,1742.072614,3827.324144,90.000000,43.000000 -TPE,UL12_9,,,,,,,,,,,,,UL12_9_TPE1,2020.048027,3747.625802,58.094345,65.489640 -TPE,UL12_8,,,,,,,,,,,,,UL12_8_TPE1,1986.689623,3761.398031,58.094345,65.489640 -TPE,UL12_7,,,,,,,,,,,,,UL12_7_TPE2,1955.553412,3781.851714,58.094345,65.489640 -TPE,UL12_7,,,,,,,,,,,,,UL12_7_TPE1,1908.852330,3808.657056,58.094345,65.489640 -TPE,PS4_2,,,,,,,,,,,,,PS4_2_TPE1,3144.026193,3596.341132,329.554546,45.785116 -TPE,PS4_2,,,,,,,,,,,,,PS4_2_TPE2,3300.316069,3508.372989,329.554546,45.785116 -TPE,PS4_4,,,,,,,,,,,,,PS4_4_TPE1,3310.573165,3523.337000,90.000000,45.785116 -TPE,PS4_4,,,,,,,,,,,,,PS4_4_TPE2,3352.239313,3524.485575,90.000000,45.785116 -TPE,PS4_5,,,,,,,,,,,,,PS4_5_TPE1,4006.352329,3523.358120,90.000000,45.785116 -TPE,PS4_6,,,,,,,,,,,,,PS4_6_TPE1,4688.607797,3525.782820,90.000000,45.785116 -TPE,PS4_7,,,,,,,,,,,,,PS4_7_TPE1,5611.139091,3525.602719,90.000000,45.785116 -TPE,PS4_8,,,,,,,,,,,,,PS4_8_TPE1,6274.851839,3521.438644,90.000000,45.785116 -TPE,PS4_10,,,,,,,,,,,,,PS4_10_TPE1,6353.888615,3456.502166,180.000000,45.785116 -TPE,PS4_10,,,,,,,,,,,,,PS4_10_TPE2,6352.160013,2673.212430,180.000000,45.785116 -TPE,PS4_11,,,,,,,,,,,,,PS4_11_TPE1,6349.468358,2155.105517,180.000000,45.785116 -TPE,PS4_12,,,,,,,,,,,,,PS4_12_TPE1,6355.840289,1761.029836,180.000000,45.785116 -TPE,UL7_14,,,,,,,,,,,,,UL7_14_PE1,2985.330236,2984.624061,90.000000,62.276218 -TPE,UL7_14,,,,,,,,,,,,,UL7_14_PE2,2995.809571,2984.624061,90.000000,62.276218 -TPE,UL7_14,,,,,,,,,,,,,UL7_14_PE3,3006.611353,2984.624061,90.000000,62.276218 -TPE,UL7_14,,,,,,,,,,,,,UL7_14_PE4,3145.918252,2982.299275,90.000000,62.276218 -TPE,UL7_14,,,,,,,,,,,,,UL7_14_PE5,3159.803377,2984.151808,90.000000,62.276218 -TPE,UL11_14,,,,,,,,,,,,,UL11_14_PE1,2971.430134,3668.918012,90.000000,62.276218 -TPE,UL11_14,,,,,,,,,,,,,UL11_14_PE2,2981.909469,3668.918012,90.000000,62.276218 -TPE,UL11_14,,,,,,,,,,,,,UL11_14_PE3,2992.711251,3668.918012,90.000000,62.276218 -TPE,UL11_14,,,,,,,,,,,,,UL11_14_PE4,3140.122346,3669.955216,90.000000,62.276218 -TPE,UL11_14,,,,,,,,,,,,,UL11_14_PE5,3155.997766,3671.874205,90.000000,62.276218 -TPE,UL7_9,,,,,,,,,,,,,UL7_9_TPE1,1965.806948,2973.254470,90.000000,62.276218 -TPE,UL9_5,,,,,,,,,,,,,UL9_5_TPE1,1826.538319,3321.774338,90.000000,65.052088 -TPE,UL9_11,,,,,,,,,,,,,UL9_11_TPE1,2343.399072,3047.086292,58.094345,65.489640 -TPE,UL11_9,,,,,,,,,,,,,UL11_9_TPE1,1988.780120,3658.283856,90.000000,62.276218 -TPE,UL12_5,,,,,,,,,,,,,UL12_5_TPE1,1842.084498,3824.815942,90.000000,64.845569 -TPE,UL12_10,,,,,,,,,,,,,UL12_10_TPE1,2049.673824,3728.878967,58.094345,65.489640 -TPE,UL7_10,,,,,,,,,,,,,UL7_10_TPE2,2184.282561,2976.023749,90.000000,66.331837 -TPE,UL7_10,,,,,,,,,,,,,UL7_10_TPE4,2488.728147,2977.141287,90.000000,63.585604 -TPE,UL7_10,,,,,,,,,,,,,UL7_10_TPE5,2611.835876,2978.598409,90.000000,62.276218 -TPE,UL7_10,,,,,,,,,,,,,UL7_10_TPE1,1998.130873,2981.527148,90.000000,62.276218 -TPE,UL7_10,,,,,,,,,,,,,UL7_10_TPE3,2334.139704,2978.861146,90.000000,62.276218 -TPE,PS4_14,,,,,,,,,,,,,PS4_14_TPE1,6272.313843,1688.457365,90.000000,45.785116 -TPE,PS4_14,,,,,,,,,,,,,PS4_14_TPE2,5949.215298,1690.378911,90.000000,45.785116 +record_type,conveyor_key,sec,included,reason,has_tpe,has_epc,has_vfd,is_last_any,is_last_geom,start_x,start_y,end_x,end_y,tpe_name,tpe_x,tpe_y,tpe_rotation,tpe_block_rotation,tpe_distance +CONVEYOR,PS3_1,1,1,GEOMETRY,1,1,1,0,0,3087.489034,3048.565032,3159.132392,3024.713237,,,,,, +CONVEYOR,PS3_2,2,1,GEOMETRY,1,0,1,0,0,3159.132392,3024.713237,3190.945812,3042.099631,,,,,, +CONVEYOR,PS3_3,3,1,GEOMETRY,1,0,1,0,0,3190.945812,3042.099631,3478.820696,3249.442902,,,,,, +CONVEYOR,PS3_5,5,1,GEOMETRY,1,0,1,0,0,3519.577701,3258.53086,4079.105653,3253.674982,,,,,, +CONVEYOR,PS3_6,6,1,GEOMETRY,1,0,1,0,0,4079.105653,3253.674982,4784.946959,3257.612009,,,,,, +CONVEYOR,PS3_7,7,1,GEOMETRY,1,0,1,0,0,5985.674639,3259.327631,5985.674639,3259.327631,,,,,, +CONVEYOR,PS3_9,9,1,GEOMETRY,1,0,1,0,0,6060.48327,3193.853573,6060.789954,2741.579531,,,,,, +CONVEYOR,PS3_10,10,1,GEOMETRY,1,0,1,0,0,6060.789954,2741.579531,6060.495376,2610.80136,,,,,, +CONVEYOR,PS3_12,12,1,GEOMETRY,1,1,1,1,1,6007.382954,2569.962296,5948.039145,2529.928635,,,,,, +CONVEYOR,UL8_1,1,1,GEOMETRY,1,1,1,0,0,632.618127,3188.888389,824.872344,3157.126582,,,,,, +CONVEYOR,UL8_2,2,1,GEOMETRY,1,1,1,0,0,885.669058,3169.966906,1712.765129,3158.462454,,,,,, +CONVEYOR,UL8_3,3,1,GEOMETRY,1,0,1,0,0,1712.765129,3158.462454,1817.953869,3155.934504,,,,,, +CONVEYOR,UL8_5,5,1,GEOMETRY,1,0,1,0,0,1881.70253,3136.32373,1944.426945,3101.149921,,,,,, +CONVEYOR,UL8_6,6,1,GEOMETRY,1,0,1,0,0,1944.426945,3101.149921,1978.682956,3086.062642,,,,,, +CONVEYOR,UL8_7,7,1,GEOMETRY,1,0,1,0,0,1978.682956,3086.062642,2007.7449,3063.545268,,,,,, +CONVEYOR,UL8_8,8,1,GEOMETRY,1,0,1,0,1,2007.7449,3063.545268,2040.663378,3048.333245,,,,,, +CONVEYOR,UL10_1,1,1,GEOMETRY,1,1,1,0,0,632.900863,3592.147634,823.776601,3561.145597,,,,,, +CONVEYOR,UL10_2,2,1,GEOMETRY,1,1,1,0,0,874.719154,3570.155999,1720.187324,3564.061477,,,,,, +CONVEYOR,UL10_3,3,1,GEOMETRY,1,0,1,0,0,1720.187324,3564.061477,2083.996631,3560.76686,,,,,, +CONVEYOR,UL10_4,4,1,GEOMETRY,1,0,1,0,0,2083.996631,3560.76686,2128.22994,3542.739063,,,,,, +CONVEYOR,UL10_5,5,1,GEOMETRY,1,0,1,0,0,2128.22994,3542.739063,2164.812356,3542.467143,,,,,, +CONVEYOR,UL10_6,6,1,GEOMETRY,1,0,1,0,0,2164.812356,3542.467143,2200.090761,3544.785276,,,,,, +CONVEYOR,UL10_7,7,1,GEOMETRY,1,0,1,0,0,2200.090761,3544.785276,2236.861695,3544.52715,,,,,, +CONVEYOR,UL10_9,9,1,GEOMETRY,1,0,1,0,1,2309.630704,3563.985881,2358.664691,3592.202752,,,,,, +CONVEYOR,UL9_3,3,1,GEOMETRY,1,1,1,0,0,551.208873,3355.007428,907.467125,3324.238385,,,,,, +CONVEYOR,UL9_4,4,1,GEOMETRY,1,1,1,0,0,907.467125,3324.238385,1700.371316,3323.415506,,,,,, +CONVEYOR,UL9_5,5,1,GEOMETRY,1,0,1,0,0,1700.371316,3323.415506,1826.538319,3321.774338,,,,,, +CONVEYOR,UL9_7,7,1,GEOMETRY,1,0,1,0,0,1891.501859,3302.098769,2212.651713,3118.960609,,,,,, +CONVEYOR,UL9_8,8,1,GEOMETRY,1,0,1,0,0,2212.651713,3118.960609,2247.352179,3100.25407,,,,,, +CONVEYOR,UL9_9,9,1,GEOMETRY,1,0,1,0,0,2247.352179,3100.25407,2277.803935,3081.192233,,,,,, +CONVEYOR,UL9_10,10,1,GEOMETRY,1,0,1,0,0,2277.803935,3081.192233,2310.374208,3065.368059,,,,,, +CONVEYOR,UL9_11,11,1,GEOMETRY,1,0,1,0,1,2310.374208,3065.368059,2343.399072,3047.086292,,,,,, +CONVEYOR,UL11_3,3,1,GEOMETRY,1,1,1,0,0,548.75287,3692.802976,897.324015,3661.485774,,,,,, +CONVEYOR,UL11_4,4,1,GEOMETRY,1,1,1,0,0,897.324015,3661.485774,1700.480744,3658.22207,,,,,, +CONVEYOR,UL11_5,5,1,GEOMETRY,1,0,1,0,0,1700.480744,3658.22207,1844.529026,3653.231416,,,,,, +CONVEYOR,UL11_6,6,1,GEOMETRY,1,0,1,0,0,1844.529026,3653.231416,1879.59736,3657.637923,,,,,, +CONVEYOR,UL11_7,7,1,GEOMETRY,1,0,1,0,0,1879.59736,3657.637923,1917.029348,3658.58271,,,,,, +CONVEYOR,UL11_8,8,1,GEOMETRY,1,0,1,0,0,1917.029348,3658.58271,1951.991891,3658.283856,,,,,, +CONVEYOR,UL11_9,9,1,GEOMETRY,1,0,1,0,0,1951.991891,3658.283856,1988.78012,3658.283856,,,,,, +CONVEYOR,UL11_10,10,1,GEOMETRY,1,1,1,0,0,2030.764864,3659.578691,2591.455783,3686.635164,,,,,, +CONVEYOR,UL11_12,12,1,GEOMETRY,1,0,1,0,0,2750.134283,3691.074283,2845.387748,3690.854148,,,,,, +CONVEYOR,UL11_13,13,1,GEOMETRY,1,0,1,0,0,2845.387748,3690.854148,2953.707982,3688.012958,,,,,, +CONVEYOR,UL11_14,14,1,GEOMETRY,1,0,1,1,1,2971.430134,3668.918012,3155.997766,3671.874205,,,,,, +CONVEYOR,UL12_3,3,1,GEOMETRY,1,1,1,0,0,543.627555,3859.294486,905.03645,3826.957213,,,,,, +CONVEYOR,UL12_4,4,1,GEOMETRY,1,1,1,0,0,905.03645,3826.957213,1742.072614,3827.324144,,,,,, +CONVEYOR,UL12_5,5,1,GEOMETRY,1,0,1,0,0,1742.072614,3827.324144,1842.084498,3824.815942,,,,,, +CONVEYOR,UL12_7,7,1,GEOMETRY,1,0,1,0,0,1908.85233,3808.657056,1955.553412,3781.851714,,,,,, +CONVEYOR,UL12_8,8,1,GEOMETRY,1,0,1,0,0,1955.553412,3781.851714,1986.689623,3761.398031,,,,,, +CONVEYOR,UL12_9,9,1,GEOMETRY,1,0,1,0,0,1986.689623,3761.398031,2020.048027,3747.625802,,,,,, +CONVEYOR,UL12_10,10,1,GEOMETRY,1,0,1,0,1,2020.048027,3747.625802,2049.673824,3728.878967,,,,,, +CONVEYOR,UL7_3,3,1,GEOMETRY,1,1,1,0,0,551.742895,2956.847765,908.026025,2987.966131,,,,,, +CONVEYOR,UL7_4,4,1,GEOMETRY,1,1,1,0,0,908.026025,2987.966131,1711.113463,2986.840411,,,,,, +CONVEYOR,UL7_5,5,1,GEOMETRY,1,0,1,0,0,1711.113463,2986.840411,1817.542835,2987.029037,,,,,, +CONVEYOR,UL7_6,6,1,GEOMETRY,1,0,1,0,0,1817.542835,2987.029037,1857.441282,2972.114781,,,,,, +CONVEYOR,UL7_7,7,1,GEOMETRY,1,0,1,0,0,1857.441282,2972.114781,1893.692205,2973.61201,,,,,, +CONVEYOR,UL7_8,8,1,GEOMETRY,1,0,1,0,0,1893.692205,2973.61201,1929.723023,2973.789916,,,,,, +CONVEYOR,UL7_9,9,1,GEOMETRY,1,0,1,0,0,1929.723023,2973.789916,1965.806948,2973.25447,,,,,, +CONVEYOR,UL7_10,10,1,GEOMETRY,1,1,1,0,0,1998.130873,2981.527148,2611.835876,2978.598409,,,,,, +CONVEYOR,UL7_12,12,1,GEOMETRY,1,0,1,0,0,2766.4208,2995.0962,2863.13356,2992.295904,,,,,, +CONVEYOR,UL7_13,13,1,GEOMETRY,1,0,1,0,0,2863.13356,2992.295904,2970.734203,2992.915446,,,,,, +CONVEYOR,UL7_14,14,1,GEOMETRY,1,0,1,1,1,2985.330236,2984.624061,3159.803377,2984.151808,,,,,, +CONVEYOR,PS4_2,2,1,GEOMETRY,1,0,1,0,0,3144.026193,3596.341132,3300.316069,3508.372989,,,,,, +CONVEYOR,PS4_4,4,1,GEOMETRY,1,0,1,0,0,3310.573165,3523.337,3352.239313,3524.485575,,,,,, +CONVEYOR,PS4_5,5,1,GEOMETRY,1,0,1,0,0,3352.239313,3524.485575,4006.352329,3523.35812,,,,,, +CONVEYOR,PS4_6,6,1,GEOMETRY,1,0,1,0,0,4006.352329,3523.35812,4688.607797,3525.78282,,,,,, +CONVEYOR,PS4_7,7,1,GEOMETRY,1,0,1,0,0,4688.607797,3525.78282,5611.139091,3525.602719,,,,,, +CONVEYOR,PS4_8,8,1,GEOMETRY,1,0,1,0,0,5611.139091,3525.602719,6274.851839,3521.438644,,,,,, +CONVEYOR,PS4_10,10,1,GEOMETRY,1,0,1,0,0,6353.888615,3456.502166,6352.160013,2673.21243,,,,,, +CONVEYOR,PS4_11,11,1,GEOMETRY,1,0,1,0,0,6352.160013,2673.21243,6349.468358,2155.105517,,,,,, +CONVEYOR,PS4_12,12,1,GEOMETRY,1,0,1,0,0,6349.468358,2155.105517,6355.840289,1761.029836,,,,,, +CONVEYOR,PS4_14,14,1,GEOMETRY,1,1,1,1,1,6272.313843,1688.457365,5949.215298,1690.378911,,,,,, +CONVEYOR,UL11_11,11,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,,,,,,,, +CONVEYOR,PS4_1,1,0,VFD_ONLY_BEFORE_GEOM_END,0,1,1,0,0,,,,,,,,,, +CONVEYOR,PS4_3,3,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,,,,,,,, +CONVEYOR,PS3_4,4,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,,,,,,,, +CONVEYOR,PS4_9,9,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,,,,,,,, +CONVEYOR,PS3_8,8,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,,,,,,,, +CONVEYOR,PS3_11,11,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,,,,,,,, +CONVEYOR,PS4_13,13,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,,,,,,,, +CONVEYOR,UL7_11,11,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,,,,,,,, +CONVEYOR,UL8_4,4,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,,,,,,,, +CONVEYOR,UL8_9,9,0,VFD_ONLY_LAST_MAY_MERGE,0,0,1,1,0,,,,,,,,,, +CONVEYOR,UL9_6,6,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,,,,,,,, +CONVEYOR,UL12_6,6,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,,,,,,,, +CONVEYOR,UL9_12,12,0,VFD_ONLY_LAST_MAY_MERGE,0,0,1,1,0,,,,,,,,,, +CONVEYOR,UL10_8,8,0,VFD_ONLY_BEFORE_GEOM_END,0,0,1,0,0,,,,,,,,,, +CONVEYOR,UL10_10,10,0,VFD_ONLY_LAST_MAY_MERGE,0,0,1,1,0,,,,,,,,,, +CONVEYOR,UL12_11,11,0,VFD_ONLY_LAST_MAY_MERGE,0,0,1,1,0,,,,,,,,,, +TPE,PS3_1,,,,,,,,,,,,,PS3_1_TPE1,3159.132392,3024.713237,210,90,45.785116 +TPE,PS3_5,,,,,,,,,,,,,PS3_5_TPE1,3519.577701,3258.53086,90,0,45.785116 +TPE,PS3_5,,,,,,,,,,,,,PS3_5_TPE2,4079.105653,3253.674982,90,0,55.323971 +TPE,PS3_3,,,,,,,,,,,,,PS3_3_TPE1,3478.820696,3249.442902,120,0,45.785116 +TPE,PS3_2,,,,,,,,,,,,,PS3_2_TPE1,3190.945812,3042.099631,210,90,45.785116 +TPE,UL7_3,,,,,,,,,,,,,UL7_3_TPE2,908.026025,2987.966131,90,0,43 +TPE,UL7_3,,,,,,,,,,,,,UL7_3_TPE1,612.253341,3029.621551,0,270,49.66735 +TPE,UL7_5,,,,,,,,,,,,,UL7_5_TPE1,1817.542835,2987.029037,90,0,46.605812 +TPE,UL7_6,,,,,,,,,,,,,UL7_6_TPE1,1857.441282,2972.114781,90,0,62.276218 +TPE,UL7_7,,,,,,,,,,,,,UL7_7_TPE1,1893.692205,2973.61201,90,0,62.276218 +TPE,UL7_4,,,,,,,,,,,,,UL7_4_TPE1,1711.113463,2986.840411,90,0,45.064241 +TPE,UL7_8,,,,,,,,,,,,,UL7_8_TPE1,1929.723023,2973.789916,90,0,62.276218 +TPE,UL7_12,,,,,,,,,,,,,UL7_12_TPE1,2766.4208,2995.0962,90,0,49.855884 +TPE,UL7_12,,,,,,,,,,,,,UL7_12_TPE2,2863.13356,2992.295904,90,0,49.242255 +TPE,UL7_13,,,,,,,,,,,,,UL7_13_TPE1,2970.734203,2992.915446,90,0,49.057934 +TPE,PS3_6,,,,,,,,,,,,,PS3_6_TPE1,4784.946959,3257.612009,90,0,45.785116 +TPE,PS3_7,,,,,,,,,,,,,PS3_7_TPE1,5985.674639,3259.327631,90,0,45.785116 +TPE,PS3_9,,,,,,,,,,,,,PS3_9_TPE1,6060.48327,3193.853573,180,0,45.785116 +TPE,PS3_9,,,,,,,,,,,,,PS3_9_TPE2,6060.789954,2741.579531,180,0,45.785116 +TPE,PS3_10,,,,,,,,,,,,,PS3_10_TPE1,6060.495376,2610.80136,180,0,45.785116 +TPE,PS3_12,,,,,,,,,,,,,PS3_12_TPE1,5987.261559,2530.050002,90,0,45.785116 +TPE,PS3_12,,,,,,,,,,,,,PS3_12_TPE2,5948.039145,2529.928635,90,0,45.785116 +TPE,UL8_1,,,,,,,,,,,,,UL8_1_TPE1,824.872344,3157.126582,90,0,43 +TPE,UL8_3,,,,,,,,,,,,,UL8_3_TPE1,1817.953869,3155.934504,90,0,63.087627 +TPE,UL8_8,,,,,,,,,,,,,UL8_8_TPE1,2040.663378,3048.333245,60,0,65.48964 +TPE,UL8_7,,,,,,,,,,,,,UL8_7_TPE1,2007.7449,3063.545268,60,0,65.48964 +TPE,UL8_6,,,,,,,,,,,,,UL8_6_TPE1,1978.682956,3086.062642,60,0,65.48964 +TPE,UL8_5,,,,,,,,,,,,,UL8_5_TPE2,1944.426945,3101.149921,60,0,65.48964 +TPE,UL8_5,,,,,,,,,,,,,UL8_5_TPE1,1881.70253,3136.32373,58.094345,0,65.48964 +TPE,UL9_7,,,,,,,,,,,,,UL9_7_TPE1,1891.501859,3302.098769,60,0,65.48964 +TPE,UL9_7,,,,,,,,,,,,,UL9_7_TPE2,2212.651713,3118.960609,58.094345,0,65.48964 +TPE,UL9_8,,,,,,,,,,,,,UL9_8_TPE1,2247.352179,3100.25407,58.094345,0,65.48964 +TPE,UL9_9,,,,,,,,,,,,,UL9_9_TPE1,2277.803935,3081.192233,58.094345,0,65.48964 +TPE,UL9_10,,,,,,,,,,,,,UL9_10_TPE1,2310.374208,3065.368059,58.094345,0,65.48964 +TPE,UL8_2,,,,,,,,,,,,,UL8_2_TPE1,885.669058,3169.966906,270,0,49.66735 +TPE,UL8_2,,,,,,,,,,,,,UL8_2_TPE2,1712.765129,3158.462454,90,0,43 +TPE,UL9_3,,,,,,,,,,,,,UL9_3_TPE1,608.834305,3362.234637,270,0,49.66735 +TPE,UL9_3,,,,,,,,,,,,,UL9_3_TPE2,907.467125,3324.238385,90,0,43 +TPE,UL9_4,,,,,,,,,,,,,UL9_4_TPE1,1700.371316,3323.415506,90,0,43 +TPE,UL10_1,,,,,,,,,,,,,UL10_1_TPE1,823.776601,3561.145597,90,0,43 +TPE,UL10_2,,,,,,,,,,,,,UL10_2_TPE1,874.719154,3570.155999,270,0,49.66735 +TPE,UL10_2,,,,,,,,,,,,,UL10_2_TPE2,1720.187324,3564.061477,90,0,43 +TPE,UL10_4,,,,,,,,,,,,,UL10_4_TPE1,2128.22994,3542.739063,90,0,62.276218 +TPE,UL10_5,,,,,,,,,,,,,UL10_5_TPE1,2164.812356,3542.467143,90,0,62.276218 +TPE,UL10_6,,,,,,,,,,,,,UL10_6_TPE1,2200.090761,3544.785276,90,0,62.276218 +TPE,UL10_3,,,,,,,,,,,,,UL10_3_TPE1,2083.996631,3560.76686,90,0,45.064241 +TPE,UL10_7,,,,,,,,,,,,,UL10_7_TPE1,2236.861695,3544.52715,90,0,62.276218 +TPE,UL10_9,,,,,,,,,,,,,UL10_9_TPE1,2309.630704,3563.985881,120,0,62.276218 +TPE,UL10_9,,,,,,,,,,,,,UL10_9_TPE2,2358.664691,3592.202752,120,0,62.276218 +TPE,UL11_3,,,,,,,,,,,,,UL11_3_TPE1,606.378302,3700.030184,0,270,49.66735 +TPE,UL11_3,,,,,,,,,,,,,UL11_3_TPE2,897.324015,3661.485774,90,0,43 +TPE,UL11_5,,,,,,,,,,,,,UL11_5_TPE1,1844.529026,3653.231416,90,0,49.642395 +TPE,UL11_6,,,,,,,,,,,,,UL11_6_TPE1,1879.59736,3657.637923,90,0,62.276218 +TPE,UL11_7,,,,,,,,,,,,,UL11_7_TPE1,1917.029348,3658.58271,90,0,62.276218 +TPE,UL11_4,,,,,,,,,,,,,UL11_4_TPE1,1700.480744,3658.22207,90,0,45.064241 +TPE,UL11_8,,,,,,,,,,,,,UL11_8_TPE1,1951.991891,3658.283856,90,0,62.276218 +TPE,UL11_10,,,,,,,,,,,,,UL11_10_TPE1,2030.764864,3659.578691,90,0,62.276218 +TPE,UL11_10,,,,,,,,,,,,,UL11_10_TPE2,2198.528913,3659.525592,90,0,62.276218 +TPE,UL11_10,,,,,,,,,,,,,UL11_10_TPE3,2325.76568,3684.43301,270,0,62.276218 +TPE,UL11_10,,,,,,,,,,,,,UL11_10_TPE4,2487.792623,3686.69078,270,0,62.276218 +TPE,UL11_10,,,,,,,,,,,,,UL11_10_TPE5,2591.455783,3686.635164,270,0,62.276218 +TPE,UL11_12,,,,,,,,,,,,,UL11_12_TPE1,2750.134283,3691.074283,270,0,54.406101 +TPE,UL11_12,,,,,,,,,,,,,UL11_12_TPE2,2845.387748,3690.854148,270,0,54.406101 +TPE,UL11_13,,,,,,,,,,,,,UL11_13_TPE1,2953.707982,3688.012958,270,0,47.542783 +TPE,UL12_3,,,,,,,,,,,,,UL12_3_TPE2,905.03645,3826.957213,90,0,43 +TPE,UL12_4,,,,,,,,,,,,,UL12_4_TPE1,1742.072614,3827.324144,90,0,43 +TPE,UL12_9,,,,,,,,,,,,,UL12_9_TPE1,2020.048027,3747.625802,58.094345,0,65.48964 +TPE,UL12_8,,,,,,,,,,,,,UL12_8_TPE1,1986.689623,3761.398031,58.094345,0,65.48964 +TPE,UL12_7,,,,,,,,,,,,,UL12_7_TPE2,1955.553412,3781.851714,58.094345,0,65.48964 +TPE,UL12_7,,,,,,,,,,,,,UL12_7_TPE1,1908.85233,3808.657056,58.094345,0,65.48964 +TPE,PS4_2,,,,,,,,,,,,,PS4_2_TPE1,3144.026193,3596.341132,330,90,45.785116 +TPE,PS4_2,,,,,,,,,,,,,PS4_2_TPE2,3300.316069,3508.372989,329.554546,90,45.785116 +TPE,PS4_4,,,,,,,,,,,,,PS4_4_TPE1,3310.573165,3523.337,90,0,45.785116 +TPE,PS4_4,,,,,,,,,,,,,PS4_4_TPE2,3352.239313,3524.485575,90,0,45.785116 +TPE,PS4_5,,,,,,,,,,,,,PS4_5_TPE1,4006.352329,3523.35812,90,0,45.785116 +TPE,PS4_6,,,,,,,,,,,,,PS4_6_TPE1,4688.607797,3525.78282,90,0,45.785116 +TPE,PS4_7,,,,,,,,,,,,,PS4_7_TPE1,5611.139091,3525.602719,90,0,45.785116 +TPE,PS4_8,,,,,,,,,,,,,PS4_8_TPE1,6274.851839,3521.438644,90,0,45.785116 +TPE,PS4_10,,,,,,,,,,,,,PS4_10_TPE1,6353.888615,3456.502166,180,0,45.785116 +TPE,PS4_10,,,,,,,,,,,,,PS4_10_TPE2,6352.160013,2673.21243,180,0,45.785116 +TPE,PS4_11,,,,,,,,,,,,,PS4_11_TPE1,6349.468358,2155.105517,180,0,45.785116 +TPE,PS4_12,,,,,,,,,,,,,PS4_12_TPE1,6355.840289,1761.029836,180,0,45.785116 +TPE,UL7_14,,,,,,,,,,,,,UL7_14_PE1,2985.330236,2984.624061,90,0,62.276218 +TPE,UL7_14,,,,,,,,,,,,,UL7_14_PE2,2995.809571,2984.624061,90,0,62.276218 +TPE,UL7_14,,,,,,,,,,,,,UL7_14_PE3,3006.611353,2984.624061,90,0,62.276218 +TPE,UL7_14,,,,,,,,,,,,,UL7_14_PE4,3145.918252,2982.299275,90,0,62.276218 +TPE,UL7_14,,,,,,,,,,,,,UL7_14_PE5,3159.803377,2984.151808,90,0,62.276218 +TPE,UL11_14,,,,,,,,,,,,,UL11_14_PE1,2971.430134,3668.918012,90,0,62.276218 +TPE,UL11_14,,,,,,,,,,,,,UL11_14_PE2,2981.909469,3668.918012,90,0,62.276218 +TPE,UL11_14,,,,,,,,,,,,,UL11_14_PE3,2992.711251,3668.918012,90,0,62.276218 +TPE,UL11_14,,,,,,,,,,,,,UL11_14_PE4,3140.122346,3669.955216,90,0,62.276218 +TPE,UL11_14,,,,,,,,,,,,,UL11_14_PE5,3155.997766,3671.874205,90,0,62.276218 +TPE,UL7_9,,,,,,,,,,,,,UL7_9_TPE1,1965.806948,2973.25447,90,0,62.276218 +TPE,UL9_5,,,,,,,,,,,,,UL9_5_TPE1,1826.538319,3321.774338,90,0,65.052088 +TPE,UL9_11,,,,,,,,,,,,,UL9_11_TPE1,2343.399072,3047.086292,58.094345,0,65.48964 +TPE,UL11_9,,,,,,,,,,,,,UL11_9_TPE1,1988.78012,3658.283856,90,0,62.276218 +TPE,UL12_5,,,,,,,,,,,,,UL12_5_TPE1,1842.084498,3824.815942,90,0,64.845569 +TPE,UL12_10,,,,,,,,,,,,,UL12_10_TPE1,2049.673824,3728.878967,58.094345,0,65.48964 +TPE,UL7_10,,,,,,,,,,,,,UL7_10_TPE2,2184.282561,2976.023749,90,0,66.331837 +TPE,UL7_10,,,,,,,,,,,,,UL7_10_TPE4,2488.728147,2977.141287,90,0,63.585604 +TPE,UL7_10,,,,,,,,,,,,,UL7_10_TPE5,2611.835876,2978.598409,90,0,62.276218 +TPE,UL7_10,,,,,,,,,,,,,UL7_10_TPE1,1998.130873,2981.527148,90,0,62.276218 +TPE,UL7_10,,,,,,,,,,,,,UL7_10_TPE3,2334.139704,2978.861146,90,0,62.276218 +TPE,PS4_14,,,,,,,,,,,,,PS4_14_TPE1,6272.313843,1688.457365,90,0,45.785116 +TPE,PS4_14,,,,,,,,,,,,,PS4_14_TPE2,5949.215298,1690.378911,90,0,45.785116 diff --git a/add_devices.py b/add_devices.py new file mode 100644 index 0000000..890ee05 --- /dev/null +++ b/add_devices.py @@ -0,0 +1,309 @@ +import csv +import math +from pathlib import Path +import re + +# ----------------------- +# CONFIG +# ----------------------- +SCALE = 0.0254 +FIXED_Y = 2.4 +CONVEYOR_WIDTH = 1.524 +EDGE_CLEARANCE = 0.45 +BEAM_RANGE_ADJUSTMENT = 0.25 + +SCRIPT_DIR = Path(__file__).resolve().parent +csv_candidates = list(SCRIPT_DIR.glob("*.csv")) +if not csv_candidates: + raise RuntimeError("No CSV found in script directory.") +if len(csv_candidates) > 1: + raise RuntimeError( + "Multiple CSV files found. Please keep only ONE CSV in the folder:\n" + + "\n".join(c.name for c in csv_candidates) + ) +CSV_PATH = csv_candidates[0] + +SCENE_DIR = SCRIPT_DIR.parent +OUTPUT_DIR = SCRIPT_DIR / "with_devices" +OUTPUT_DIR.mkdir(exist_ok=True) + +SENSOR_SCENE_PATH = "res://parts/DiffuseSensor.tscn" +SENSOR_RES_ID = "auto_sensor" + +# ----------------------- +# LOAD CSV DEVICES +# ----------------------- +devices = [] +with open(CSV_PATH, newline="", encoding="utf-8") as f: + reader = csv.DictReader(f) + for row in reader: + if row.get("record_type") == "TPE": + devices.append(row) + +if not devices: + raise RuntimeError("No TPE records found in CSV.") + +devices_by_conveyor = {} +for d in devices: + key = (d.get("conveyor_key") or "").strip() + if key: + devices_by_conveyor.setdefault(key, []).append(d) + +# ----------------------- +# SELECT SCENE +# ----------------------- +scene_files = list(SCENE_DIR.glob("*.tscn")) +if not scene_files: + raise RuntimeError("No .tscn files found in parent directory.") + +print("\nAvailable scenes:") +for i, s in enumerate(scene_files, 1): + print(f"[{i}] {s.name}") + +choice = int(input("\nSelect scene number: ")) - 1 +if choice < 0 or choice >= len(scene_files): + raise RuntimeError("Invalid selection.") +SCENE_PATH = scene_files[choice] + +# ----------------------- +# READ SCENE +# ----------------------- +scene_text = SCENE_PATH.read_text(encoding="utf-8") +lines = scene_text.splitlines() + +# ----------------------- +# PARSE CONVEYORS +# ----------------------- +conveyors = {} + +node_name = None +has_size = False +pending_basis = None +pending_position = None +conveyor_width = CONVEYOR_WIDTH +conveyor_size = None + +for line in lines: + if line.startswith("[node name="): + if node_name and pending_basis and pending_position: + conveyors[node_name] = { + "basis": pending_basis, + "has_size": has_size, + "width": conveyor_width, + "position": pending_position, + "size": conveyor_size + } + + m = re.search(r'name="([^"]+)"', line) + node_name = m.group(1) if m else None + has_size = False + pending_basis = None + pending_position = None + conveyor_width = CONVEYOR_WIDTH + conveyor_size = None + continue + + if node_name and line.strip().startswith("transform = Transform3D"): + vals = [float(v) for v in re.search(r"\(([^)]+)\)", line).group(1).split(",")] + pending_basis = (vals[0], vals[2], vals[6], vals[8]) + pending_position = (vals[9], vals[10], vals[11]) + + if node_name and line.strip().startswith("size = Vector3"): + has_size = True + conveyor_size = tuple( + float(v) for v in re.search(r"\(([^)]+)\)", line).group(1).split(",") + ) + + if node_name and line.strip().startswith("conveyor_width ="): + conveyor_width = float(line.split("=")[1]) + +if node_name and pending_basis and pending_position: + conveyors[node_name] = { + "basis": pending_basis, + "has_size": has_size, + "width": conveyor_width, + "position": pending_position, + "size": conveyor_size + } + +# ----------------------- +# ENSURE SENSOR RESOURCE +# ----------------------- +if SENSOR_SCENE_PATH not in scene_text: + idx = max(i for i, l in enumerate(lines) if l.startswith("[ext_resource")) + lines.insert(idx + 1, + f'[ext_resource type="PackedScene" path="{SENSOR_SCENE_PATH}" id="{SENSOR_RES_ID}"]' + ) + +scene_text = "\n".join(lines) + "\n" + +# ----------------------- +# HELPERS +# ----------------------- +def yaw_from_x_axis(xx, xz): + return math.atan2(-xz, xx) + +def yaw_from_z_axis(zx, zz): + return math.atan2(zx, zz) + +def compute_sensor_position(info, yaw, idx, total): + px, _, pz = info["position"] + + if not info["size"]: + return None, None + + length = info["size"][0] + + if total == 1: + off = length / 2 + elif total == 2: + off = (-length / 2) if idx == 0 else (length / 2) + else: + return None, None + + return ( + px + math.cos(yaw) * off, + pz + math.sin(yaw) * off + ) + +def godot_yaw_from_cad(cad_deg: float) -> float: + """ + AutoCAD → Godot rotation conversion + + AutoCAD: + 0° = up + 90° = right + 180° = down + 270° = left + clockwise + + Godot: + 0° = +X + 90° = -Z + CCW + + With Y→-Z flip already applied in coordinates. + """ + return math.radians((270 - cad_deg) % 360) + + +def compute_edge_offset(sensor_yaw, width): + """ + Move sensor to the edge in the direction perpendicular to where it's pointing. + The sensor beam points in the sensor_yaw direction, so we offset perpendicular to that. + """ + # Perpendicular to sensor's facing direction (90° to the right of where it points) + side = sensor_yaw - math.pi / 2 + d = (width / 2) + EDGE_CLEARANCE + return math.cos(side) * d, math.sin(side) * d + +def sensor_yaw_from_csv(info, conveyor_yaw, csv_x, csv_z): + cx, _, cz = info["position"] + + # right perpendicular to conveyor forward + rx = math.cos(conveyor_yaw - math.pi / 2) + rz = math.sin(conveyor_yaw - math.pi / 2) + + vx = csv_x - cx + vz = csv_z - cz + + side = vx * rx + vz * rz + + if side >= 0: + return conveyor_yaw + math.pi / 2 + return conveyor_yaw - math.pi / 2 + +# ----------------------- +# APPEND DEVICES +# ----------------------- +node_blocks = [] + +for key in sorted(devices_by_conveyor.keys()): + devs = devices_by_conveyor[key] + + if key not in conveyors: + print(f"⚠ Conveyor not found: {key}") + continue + + info = conveyors[key] + + xx, xz, zx, zz = info["basis"] + width = info["width"] + + yaw = yaw_from_x_axis(xx, xz) if info["has_size"] else yaw_from_z_axis(zx, zz) + + for i, d in enumerate(devs): + name = f"{key}_TPE{i+1}" + tag = f"{name}_OIP" + + max_range = width + BEAM_RANGE_ADJUSTMENT + + x, z = compute_sensor_position(info, yaw, i, len(devs)) + + LONGITUDINAL_OFFSET = 0.15 + + if x is not None: + if len(devs) == 1: + x -= math.cos(yaw) * LONGITUDINAL_OFFSET + z -= math.sin(yaw) * LONGITUDINAL_OFFSET + elif len(devs) == 2: + if i == 0: + x += math.cos(yaw) * LONGITUDINAL_OFFSET + z += math.sin(yaw) * LONGITUDINAL_OFFSET + else: + x -= math.cos(yaw) * LONGITUDINAL_OFFSET + z -= math.sin(yaw) * LONGITUDINAL_OFFSET + else: + x = float(d["tpe_x"]) * SCALE + z = -float(d["tpe_y"]) * SCALE + + csv_x = float(d["tpe_x"]) * SCALE + csv_z = -float(d["tpe_y"]) * SCALE + + if "tpe_rotation" in d and d["tpe_rotation"] not in ("", None): + tpe_rot = float(d["tpe_rotation"]) + else: + tpe_rot = 0.0 + + if "tpe_block_rotation" in d and d["tpe_block_rotation"] not in ("", None): + blk_rot = float(d["tpe_block_rotation"]) + else: + blk_rot = 0.0 + + # If we have ANY rotation data (block or TPE), use it + if tpe_rot != 0.0 or blk_rot != 0.0: + # Combine both rotations in CAD space + cad_world_rot = (blk_rot + tpe_rot) % 360.0 + sensor_yaw = godot_yaw_from_cad(cad_world_rot) + else: + # fallback ONLY if both rotations are missing/zero + sensor_yaw = yaw + math.pi + + ox, oz = compute_edge_offset(sensor_yaw, width) + x += ox + z += oz + + c, s = math.cos(sensor_yaw), math.sin(sensor_yaw) + + transform = ( + f"Transform3D({c:.6f},0,{-s:.6f},0,1,0,{s:.6f},0,{c:.6f}," + f"{x:.6f},{FIXED_Y:.6f},{z:.6f})" + ) + + node_blocks.append( + f'\n[node name="{name}" parent="." instance=ExtResource("{SENSOR_RES_ID}")]\n' + f"transform = {transform}\n" + f"max_range = {max_range:.3f}\n" + f"enable_comms = true\n" + f'tag_name = "{tag}"\n' + ) + +scene_text += "".join(node_blocks) + +# ----------------------- +# WRITE OUTPUT +# ----------------------- +out_path = OUTPUT_DIR / f"{SCENE_PATH.stem}_devices{SCENE_PATH.suffix}" +out_path.write_text(scene_text, encoding="utf-8") + +print(f"\n✔ {len(node_blocks)} sensors added → {out_path}") diff --git a/generate_csv.lsp b/generate_csv.lsp index f334800..7e59401 100644 --- a/generate_csv.lsp +++ b/generate_csv.lsp @@ -174,6 +174,11 @@ ) ) +(defun block-rot-deg (blk / r) + (setq r (vla-get-rotation blk)) ; radians + (rad->deg r) +) + (defun c:EXPORT_CONVEYORS ( / ss i ent blk effName attList ptag parsed prefix section kind idx insPt xy key tpeMap epcMap vfdPresence @@ -208,9 +213,10 @@ (setq attList (vlax-invoke blk 'GetAttributes)) (setq ptag (getAttVal attList "P_TAG1")) ;; >>> ADDED: TPE-specific dynamic properties (Custom section) - (setq tpeRotRaw (getDynPropValNum blk "PE ROTATION")) ; numeric + (setq tpeRotRaw (getDynPropVal blk "PE ROTATION")) ; numeric (setq tpeRot (tpe-rot-deg tpeRotRaw)) (setq tpeDist (getDynPropVal blk "Distance1")) + (setq blkRot (block-rot-deg blk)) (setq parsed (parse-ptag1-anchor ptag)) @@ -229,7 +235,7 @@ (setq xy (list (car insPt) (cadr insPt))) (setq entries (cdr (assoc key tpeMap))) (if (not entries) (setq entries '())) - (setq entries (cons (list idx xy ptag tpeRot tpeDist) entries)) + (setq entries (cons (list idx xy ptag tpeRot blkRot tpeDist) entries)) (setq tpeMap (if (assoc key tpeMap) (subst (cons key entries) (assoc key tpeMap) tpeMap) @@ -387,7 +393,7 @@ (setq fh (open outPath "w")) ;; >>> ADDED: record_type + TPE columns (write-line - "record_type,conveyor_key,sec,included,reason,has_tpe,has_epc,has_vfd,is_last_any,is_last_geom,start_x,start_y,end_x,end_y,tpe_name,tpe_x,tpe_y,tpe_rotation,tpe_distance" + "record_type,conveyor_key,sec,included,reason,has_tpe,has_epc,has_vfd,is_last_any,is_last_geom,start_x,start_y,end_x,end_y,tpe_name,tpe_x,tpe_y,tpe_rotation,tpe_block_rotation,tpe_distance" fh) @@ -533,7 +539,8 @@ (setq xy (nth 1 it)) (setq tpeName (nth 2 it)) (setq tpeRot (nth 3 it)) - (setq tpeDist (nth 4 it)) + (setq blkRot (nth 4 it)) + (setq tpeDist (nth 5 it)) (write-line (strcat @@ -545,8 +552,9 @@ tpeName "," ;; tpe_name (rtos (car xy) 2 6) "," (rtos (cadr xy) 2 6) "," - (rtos (tpe-rot-deg tpeRot) 2 6) "," ;; tpe_rotation - (if tpeDist (rtos tpeDist 2 6) "") ;; tpe_distance + (rtos tpeRot 2 6) "," + (rtos blkRot 2 6) "," + (if tpeDist (rtos tpeDist 2 6) "") ) fh @@ -554,8 +562,6 @@ ) ) - - (close fh) (princ (strcat "\nExported conveyors to: " outPath)) (princ "\nIncluded=1 => geometry. Included=0 => VFD-only (no TPE geometry).") diff --git a/generate_scene.py b/generate_scene.py index c4dfe72..bad4f3d 100644 --- a/generate_scene.py +++ b/generate_scene.py @@ -39,6 +39,11 @@ CURVE_INNER_RADIUS = 0.5 BELT_WIDTH_DEFAULT = 1.524 # default size.z DEGEN_EPS = 0.001 # meters (true zero-length) +# FIX: curved asset forward-axis / pivot assumptions +# - If your curved assembly faces "backwards" compared to your straight conveyors, +# adding 180deg fixes that. +CURVE_ROT_OFFSET = math.pi # 180 degrees + # Gap stitching tolerance EPS = 0.05 # meters @@ -483,9 +488,37 @@ for name in sorted(straight.keys()): add_straight_node(lines, name, c["rot_y"], cx, cz, c["length"], width) written_straights.add(name) -# Spur logic (kept) +# Spur logic (MODIFIED: resilient neighbor lookup + FIXED curved placement + FIXED curved rotation) placed_spurs = set() +def find_prev_next(prefix, sec): + # Find nearest existing straight neighbors in this prefix if sec±1 isn't present + prev_key = f"{prefix}_{sec-1}" + next_key = f"{prefix}_{sec+1}" + + if prev_key not in straight: + k = sec - 1 + while k > 0: + cand = f"{prefix}_{k}" + if cand in straight: + prev_key = cand + break + k -= 1 + + if next_key not in straight: + k = sec + 1 + # hard cap to avoid infinite search on bad data + while k < sec + 200: + cand = f"{prefix}_{k}" + if cand in straight: + next_key = cand + break + k += 1 + + if prev_key not in straight or next_key not in straight: + return None, None + return prev_key, next_key + for spur in vfd_only: name = spur["name"] if name in straight: @@ -493,10 +526,9 @@ for spur in vfd_only: prefix = spur["prefix"] sec = spur["sec"] - prev_key = f"{prefix}_{sec-1}" - next_key = f"{prefix}_{sec+1}" - if prev_key not in straight or next_key not in straight: + prev_key, next_key = find_prev_next(prefix, sec) + if not prev_key or not next_key: continue prev = straight[prev_key] @@ -554,22 +586,41 @@ for spur in vfd_only: continue - # Curved spur placement uses width of prev belt for edge offset + # ----------------------- + # FIXED: Curved spur placement + 180° yaw offset + # + # Old logic assumed a pivot/tangent relationship that effectively used (width/2 - inner_radius), + # which is wrong for typical curved assets. + # + # New logic assumes the curved asset pivot is the CIRCLE CENTER of the BELT CENTERLINE: + # r_center = inner_radius + width/2 + # place = prev.end + inward * r_center + # and we also apply CURVE_ROT_OFFSET (pi) if the asset faces backwards. + # ----------------------- turn_sign = 1.0 if delta > 0 else -1.0 + rx, rz = unit_right(prev["rot_y"]) end_x, end_z = prev["end"] - prev_width = prev.get("width", BELT_WIDTH_DEFAULT) - edge_x = end_x + rx * (prev_width / 2) * turn_sign - edge_z = end_z + rz * (prev_width / 2) * turn_sign + # inward points from the tangent point toward the curve center inward_x = -rx * turn_sign inward_z = -rz * turn_sign - place_x = edge_x + inward_x * CURVE_INNER_RADIUS - place_z = edge_z + inward_z * CURVE_INNER_RADIUS + # centerline radius from inner edge + r_center = CURVE_INNER_RADIUS + (prev_width / 2.0) - add_curved_node(lines, name, prev["rot_y"], place_x, place_z, angle_deg) + place_x = end_x + inward_x * r_center + place_z = end_z + inward_z * r_center + + add_curved_node( + lines, + name, + prev["rot_y"] + CURVE_ROT_OFFSET, + place_x, + place_z, + angle_deg + ) placed_spurs.add(name) # -----------------------