feat: 2 m placeholder pattern zones on lining, station/pattern readout in viewer (Task 5)
No pattern-to-station data exists in the drawings. Per user decision (2026-10-21) the modelled range 4+745..5+480 is split into 2 m segments with arbitrary pattern names, marked placeholder in CSV, meta and viewer, to be replaced later. Ring step reduced to 1 m so that the 2 m segments align. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A5Cun3RHQKna9qxE6ybZ4A
This commit is contained in:
1 parent
c9de6f0ef3
commit
6c7e555c25
7 files changed
+2303
-10
No files matched your search
@@ -0,0 +1,369 @@
|
||||
seg_from,seg_to,pattern,status
|
||||
4745,4747,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4747,4749,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4749,4751,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4751,4753,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4753,4755,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4755,4757,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4757,4759,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4759,4761,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4761,4763,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4763,4765,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4765,4767,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4767,4769,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4769,4771,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4771,4773,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4773,4775,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4775,4777,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4777,4779,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4779,4781,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4781,4783,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4783,4785,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4785,4787,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4787,4789,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4789,4791,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4791,4793,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4793,4795,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4795,4797,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4797,4799,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4799,4801,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4801,4803,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4803,4805,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4805,4807,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4807,4809,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4809,4811,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4811,4813,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4813,4815,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4815,4817,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4817,4819,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4819,4821,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4821,4823,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4823,4825,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4825,4827,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4827,4829,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4829,4831,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4831,4833,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4833,4835,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4835,4837,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4837,4839,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4839,4841,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4841,4843,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4843,4845,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4845,4847,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4847,4849,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4849,4851,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4851,4853,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4853,4855,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4855,4857,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4857,4859,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4859,4861,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4861,4863,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4863,4865,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4865,4867,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4867,4869,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4869,4871,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4871,4873,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4873,4875,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4875,4877,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4877,4879,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4879,4881,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4881,4883,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4883,4885,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4885,4887,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4887,4889,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4889,4891,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4891,4893,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4893,4895,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4895,4897,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4897,4899,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4899,4901,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4901,4903,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4903,4905,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4905,4907,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4907,4909,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4909,4911,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4911,4913,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4913,4915,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4915,4917,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4917,4919,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4919,4921,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4921,4923,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4923,4925,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4925,4927,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4927,4929,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4929,4931,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4931,4933,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4933,4935,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4935,4937,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4937,4939,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4939,4941,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4941,4943,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4943,4945,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4945,4947,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4947,4949,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4949,4951,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4951,4953,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4953,4955,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4955,4957,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4957,4959,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4959,4961,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4961,4963,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4963,4965,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4965,4967,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4967,4969,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4969,4971,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4971,4973,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4973,4975,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4975,4977,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4977,4979,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4979,4981,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4981,4983,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4983,4985,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4985,4987,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4987,4989,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4989,4991,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4991,4993,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4993,4995,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4995,4997,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4997,4999,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
4999,5001,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5001,5003,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5003,5005,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5005,5007,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5007,5009,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5009,5011,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5011,5013,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5013,5015,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5015,5017,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5017,5019,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5019,5021,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5021,5023,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5023,5025,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5025,5027,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5027,5029,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5029,5031,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5031,5033,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5033,5035,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5035,5037,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5037,5039,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5039,5041,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5041,5043,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5043,5045,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5045,5047,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5047,5049,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5049,5051,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5051,5053,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5053,5055,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5055,5057,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5057,5059,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5059,5061,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5061,5063,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5063,5065,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5065,5067,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5067,5069,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5069,5071,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5071,5073,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5073,5075,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5075,5077,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5077,5079,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5079,5081,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5081,5083,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5083,5085,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5085,5087,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5087,5089,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5089,5091,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5091,5093,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5093,5095,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5095,5097,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5097,5099,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5099,5101,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5101,5103,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5103,5105,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5105,5107,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5107,5109,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5109,5111,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5111,5113,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5113,5115,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5115,5117,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5117,5119,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5119,5121,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5121,5123,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5123,5125,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5125,5127,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5127,5129,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5129,5131,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5131,5133,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5133,5135,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5135,5137,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5137,5139,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5139,5141,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5141,5143,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5143,5145,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5145,5147,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5147,5149,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5149,5151,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5151,5153,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5153,5155,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5155,5157,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5157,5159,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5159,5161,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5161,5163,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5163,5165,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5165,5167,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5167,5169,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5169,5171,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5171,5173,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5173,5175,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5175,5177,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5177,5179,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5179,5181,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5181,5183,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5183,5185,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5185,5187,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5187,5189,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5189,5191,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5191,5193,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5193,5195,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5195,5197,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5197,5199,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5199,5201,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5201,5203,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5203,5205,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5205,5207,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5207,5209,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5209,5211,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5211,5213,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5213,5215,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5215,5217,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5217,5219,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5219,5221,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5221,5223,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5223,5225,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5225,5227,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5227,5229,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5229,5231,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5231,5233,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5233,5235,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5235,5237,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5237,5239,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5239,5241,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5241,5243,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5243,5245,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5245,5247,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5247,5249,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5249,5251,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5251,5253,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5253,5255,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5255,5257,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5257,5259,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5259,5261,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5261,5263,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5263,5265,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5265,5267,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5267,5269,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5269,5271,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5271,5273,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5273,5275,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5275,5277,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5277,5279,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5279,5281,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5281,5283,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5283,5285,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5285,5287,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5287,5289,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5289,5291,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5291,5293,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5293,5295,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5295,5297,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5297,5299,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5299,5301,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5301,5303,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5303,5305,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5305,5307,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5307,5309,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5309,5311,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5311,5313,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5313,5315,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5315,5317,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5317,5319,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5319,5321,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5321,5323,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5323,5325,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5325,5327,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5327,5329,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5329,5331,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5331,5333,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5333,5335,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5335,5337,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5337,5339,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5339,5341,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5341,5343,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5343,5345,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5345,5347,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5347,5349,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5349,5351,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5351,5353,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5353,5355,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5355,5357,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5357,5359,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5359,5361,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5361,5363,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5363,5365,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5365,5367,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5367,5369,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5369,5371,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5371,5373,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5373,5375,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5375,5377,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5377,5379,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5379,5381,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5381,5383,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5383,5385,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5385,5387,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5387,5389,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5389,5391,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5391,5393,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5393,5395,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5395,5397,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5397,5399,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5399,5401,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5401,5403,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5403,5405,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5405,5407,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5407,5409,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5409,5411,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5411,5413,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5413,5415,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5415,5417,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5417,5419,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5419,5421,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5421,5423,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5423,5425,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5425,5427,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5427,5429,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5429,5431,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5431,5433,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5433,5435,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5435,5437,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5437,5439,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5439,5441,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5441,5443,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5443,5445,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5445,5447,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5447,5449,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5449,5451,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5451,5453,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5453,5455,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5455,5457,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5457,5459,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5459,5461,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5461,5463,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5463,5465,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5465,5467,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5467,5469,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5469,5471,NP-5AE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5471,5473,NP-5BE-1-WL-4,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5473,5475,NP-6A,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5475,5477,NP-6B,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5477,5479,NP-4AD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
5479,5480,NP-4BD-1-D-2,"임의 배정 (placeholder, 실제 구간 아님)"
|
||||
|
@@ -5,7 +5,17 @@
|
||||
"road_z_4745_m": 50.62,
|
||||
"road_z_5480_m": 67.311,
|
||||
"plan_chord_length_total_m (4+700..5+500)": 799.905,
|
||||
"station_range_modelled": "4745 .. 5480 (ring step 5.0 m, 148 rings)",
|
||||
"glb_bytes": 470416,
|
||||
"station_range_modelled": "4745 .. 5480 (ring step 1.0 m, 736 rings)",
|
||||
"pattern_zones (2 m, placeholder)": 368,
|
||||
"pattern_coverage_all_stations": true,
|
||||
"pattern_counts": {
|
||||
"NP-4AD-1-D-2": 62,
|
||||
"NP-4BD-1-D-2": 62,
|
||||
"NP-5AE-1-WL-4": 61,
|
||||
"NP-5BE-1-WL-4": 61,
|
||||
"NP-6A": 61,
|
||||
"NP-6B": 61
|
||||
},
|
||||
"glb_bytes": 2201764,
|
||||
"glb_reload_geometries": 5
|
||||
}
|
||||
Binary file not shown.
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Task 5 (user decision 2026-10-21): no pattern-station data exists. Create a
|
||||
PLACEHOLDER pattern table at 2 m segments over the modelled range 4+745..5+480,
|
||||
cycling the six pattern names. Every row is marked '임의 배정 (placeholder)'.
|
||||
The table is an editable CSV: replace the 'pattern' column later and rebuild.
|
||||
Output: data/pattern_zones_placeholder.csv (created only if absent; never overwritten)."""
|
||||
import csv
|
||||
import os
|
||||
import sys
|
||||
|
||||
ROOT = sys.argv[1]
|
||||
OUT = f"{ROOT}/data/pattern_zones_placeholder.csv"
|
||||
PATTERNS = ["NP-4AD-1-D-2", "NP-4BD-1-D-2", "NP-5AE-1-WL-4", "NP-5BE-1-WL-4", "NP-6A", "NP-6B"]
|
||||
S0, S1, SEG = 4745, 5480, 2
|
||||
if not os.path.exists(OUT):
|
||||
with open(OUT, "w", newline="", encoding="utf-8") as fh:
|
||||
w = csv.writer(fh)
|
||||
w.writerow(["seg_from", "seg_to", "pattern", "status"])
|
||||
for k, s in enumerate(range(S0, S1, SEG)):
|
||||
w.writerow([s, min(s + SEG, S1), PATTERNS[k % len(PATTERNS)], "임의 배정 (placeholder, 실제 구간 아님)"])
|
||||
print("pattern table:", OUT)
|
||||
@@ -30,7 +30,7 @@ R1, R_OUT, R_EX = 6.982, 7.282, 7.402 # m (mm / 1000)
|
||||
CROWN_A = 6.615 # m above road
|
||||
CENTRE_C = CROWN_A - R1 # arch centre height above road (m)
|
||||
S0, S1 = 4745, 5480 # modelled range (fully determined)
|
||||
DS = 5.0 # station step for rings (m)
|
||||
DS = 1.0 # station step for rings (m); pattern segments are 2 m
|
||||
ANG = np.radians(np.linspace(40.0, 140.0, 41)) # arch arc, right springline -> left
|
||||
|
||||
def read_centre():
|
||||
@@ -80,18 +80,33 @@ def ring_world(R, s):
|
||||
P = np.column_stack([x - ORIGIN[0] + xs * nx, y - ORIGIN[1] + xs * ny, zr + zs])
|
||||
return P
|
||||
|
||||
def make_band(R, color, name):
|
||||
PAL = {"NP-4AD-1-D-2": (231, 111, 81, 255), "NP-4BD-1-D-2": (244, 162, 97, 255),
|
||||
"NP-5AE-1-WL-4": (233, 196, 106, 255), "NP-5BE-1-WL-4": (138, 177, 125, 255),
|
||||
"NP-6A": (42, 157, 143, 255), "NP-6B": (38, 70, 83, 255)}
|
||||
ZONES = [(int(r["seg_from"]), int(r["seg_to"]), r["pattern"], r["status"])
|
||||
for r in csv.DictReader(open(f"{ROOT}/data/pattern_zones_placeholder.csv", encoding="utf-8"))]
|
||||
|
||||
def pattern_of(sta):
|
||||
for a, b, pat, _ in ZONES:
|
||||
if a <= sta < b:
|
||||
return pat
|
||||
return ZONES[-1][2]
|
||||
|
||||
def make_band_pattern(R, name):
|
||||
rings = [ring_world(R, s) for s in stations]
|
||||
n = len(rings[0]); m = len(rings)
|
||||
V = np.vstack(rings)
|
||||
F = []
|
||||
F, C = [], []
|
||||
for i in range(m - 1):
|
||||
col = PAL[pattern_of(stations[i])]
|
||||
for j in range(n - 1):
|
||||
a = i * n + j; b = a + 1; c = a + n; d = c + 1
|
||||
F += [[a, b, c], [b, d, c]]
|
||||
C += [col, col]
|
||||
mesh = trimesh.Trimesh(vertices=V, faces=np.array(F), process=False)
|
||||
mesh.visual.face_colors = np.tile(np.array(color, dtype=np.uint8), (len(F), 1))
|
||||
mesh.visual.face_colors = np.array(C, dtype=np.uint8)
|
||||
mesh.metadata["name"] = name
|
||||
mesh.metadata["ring_points"] = n
|
||||
return mesh
|
||||
|
||||
def make_ribbon(z_fn, half_w, color, name):
|
||||
@@ -111,9 +126,24 @@ def make_ribbon(z_fn, half_w, color, name):
|
||||
mesh.metadata["name"] = name
|
||||
return mesh
|
||||
|
||||
def make_band(R, color, name):
|
||||
"""uniform-colour band (excavation outline)."""
|
||||
rings = [ring_world(R, s) for s in stations]
|
||||
n = len(rings[0]); m = len(rings)
|
||||
V = np.vstack(rings)
|
||||
F = []
|
||||
for i in range(m - 1):
|
||||
for j in range(n - 1):
|
||||
a = i * n + j; b = a + 1; c = a + n; d = c + 1
|
||||
F += [[a, b, c], [b, d, c]]
|
||||
mesh = trimesh.Trimesh(vertices=V, faces=np.array(F), process=False)
|
||||
mesh.visual.face_colors = np.tile(np.array(color, dtype=np.uint8), (len(F), 1))
|
||||
mesh.metadata["name"] = name
|
||||
return mesh
|
||||
|
||||
parts = [
|
||||
make_band(R_OUT, (190, 190, 186, 255), "lining_outer_R7282"),
|
||||
make_band(R1, (235, 235, 230, 255), "lining_inner_R6982"),
|
||||
make_band_pattern(R_OUT, "lining_outer_R7282"),
|
||||
make_band_pattern(R1, "lining_inner_R6982"),
|
||||
make_band(R_EX, (150, 120, 90, 110), "excavation_R7402"),
|
||||
make_ribbon(lambda s: float(np.interp(s, dg_s, dg_v)), 5.0, (70, 70, 75, 255), "road_surface_계획고"),
|
||||
make_ribbon(lambda s: float(np.interp(s, gl_s, gl_v)), 20.0, (110, 150, 90, 200), "ground_GL_지반고"),
|
||||
@@ -138,6 +168,9 @@ checks["road_z_5480_m"] = round(float(np.interp(S1, dg_s, dg_v)), 3)
|
||||
L_chord = float(np.sum([math.dist(cn[i, 1:], cn[i + 1, 1:]) for i in range(len(cn) - 1)]))
|
||||
checks["plan_chord_length_total_m (4+700..5+500)"] = round(L_chord, 3)
|
||||
checks["station_range_modelled"] = f"{S0} .. {S1} (ring step {DS} m, {len(stations)} rings)"
|
||||
checks["pattern_zones (2 m, placeholder)"] = len(ZONES)
|
||||
checks["pattern_coverage_all_stations"] = bool(all(pattern_of(x) in PAL for x in stations))
|
||||
checks["pattern_counts"] = {k: sum(1 for z in ZONES if z[2] == k) for k in PAL}
|
||||
checks["glb_bytes"] = int(__import__("os").path.getsize(glb))
|
||||
reload = trimesh.load(glb)
|
||||
checks["glb_reload_geometries"] = len(reload.geometry)
|
||||
@@ -154,6 +187,9 @@ meta = {
|
||||
"centreline and grade linearly interpolated between nodes",
|
||||
"superelevation sign convention assumed (z += S/100 * x, x = left of tangent)"],
|
||||
"layers": [p.metadata["name"] for p in parts],
|
||||
"ring_step_m": DS, "ring_points": int(parts[0].metadata["ring_points"]), "first_station": S0,
|
||||
"pattern_status": "PLACEHOLDER: 2 m 임의 배정. 실제 측점 구간 아님 (사용자 결정 2026-10-21). data/pattern_zones_placeholder.csv 를 수정 후 재빌드",
|
||||
"patterns": [{"from": a, "to": b, "pattern": pat} for a, b, pat, _ in ZONES],
|
||||
"open": ["4+700~4+745 and 5+480~5+500 excluded ([미확정])", "pattern zones (03-003~008) pending Task 5",
|
||||
"lining details (04-004~009) pending Task 6"]
|
||||
}
|
||||
|
||||
+13
-2
@@ -96,8 +96,10 @@ loader.load(MODEL, (gltf) => {
|
||||
status.textContent = '로드 실패: 파일을 HTTP 서버로 여세요 (README 참조)';
|
||||
});
|
||||
|
||||
let M = null;
|
||||
fetch(META).then((r) => r.json()).then((m) => {
|
||||
info.textContent = '범위: ' + m.scope + ' (단위 ' + m.units + ')\n근사 항목:\n- ' + m.approximations.join('\n- ') + '\n미완:\n- ' + m.open.join('\n- ');
|
||||
M = m;
|
||||
info.textContent = '범위: ' + m.scope + ' (단위 ' + m.units + ')\n패턴: ' + m.pattern_status + '\n근사 항목:\n- ' + m.approximations.join('\n- ') + '\n미완:\n- ' + m.open.join('\n- ');
|
||||
}).catch(() => {});
|
||||
|
||||
const ray = new THREE.Raycaster();
|
||||
@@ -112,7 +114,16 @@ renderer.domElement.addEventListener('pointerup', (e) => {
|
||||
const hit = ray.intersectObjects(meshes.filter((m) => m.visible), false)[0];
|
||||
if (hit) {
|
||||
const key = hit.object.userData.key;
|
||||
info.textContent = (INFO[key] || key) + '\n교차점: x=' + hit.point.x.toFixed(2) + ' y=' + hit.point.y.toFixed(2) + ' z=' + hit.point.z.toFixed(2) + ' (m, 모델 좌표)';
|
||||
let extra = '';
|
||||
if (M && key.startsWith('lining') && hit.faceIndex != null) {
|
||||
const n = M.ring_points;
|
||||
const ring = Math.floor(hit.faceIndex / (2 * (n - 1)));
|
||||
const sta = M.first_station + ring * M.ring_step_m;
|
||||
const z = M.patterns.find((z) => sta >= z.from && sta < z.to);
|
||||
const km = Math.floor(sta / 1000), m = Math.round(sta % 1000);
|
||||
extra = '\n측점: ' + km + '+' + String(m).padStart(3, '0') + '\n패턴: ' + (z ? z.pattern : '-') + ' (임의 배정, 실제 구간 아님)';
|
||||
}
|
||||
info.textContent = (INFO[key] || key) + extra + '\n교차점: x=' + hit.point.x.toFixed(2) + ' y=' + hit.point.y.toFixed(2) + ' z=' + hit.point.z.toFixed(2) + ' (m, 모델 좌표)';
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in new issue
Block a user