fix(b06,b07): 표 위 CAD 배수관 원형 마크 — 아래 수직 지시선 없앰 (274-1)
- B06 상세 모달 표 위 CAD 미리 넣음(pipeMark)과 B07 짝(_pipe_mark) 모두 원 + 원 안 세 줄만 - 요구 169 원문 기록 · 시험 260 · 265 기대값 맞춤 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LLCk2y5xE8YGVgjbTntWsY
This commit is contained in:
@@ -190,7 +190,7 @@ function shape(type: string, shapeData: Record<string, unknown>): Record<string,
|
||||
}
|
||||
|
||||
/** 원형 마크 — 관이 이 측점에 **놓인**(주인) 배수관만 · 상자형(세월교 · 박스) · 숨은 관(독립 기슭막이) ·
|
||||
* 이웃 측점 = 없음 · 원 안 세 줄(배수관 / Φ관경 / L=관 길이 정수 · 없으면 빈칸) + 지시선. */
|
||||
* 이웃 측점 = 없음 · 원 안 세 줄(배수관 / Φ관경 / L=관 길이 정수 · 없으면 빈칸) · 지시선 없음(169). */
|
||||
function pipeMark(section: CrossSection): Record<string, unknown>[] {
|
||||
const culvert = section.culvert;
|
||||
if (!culvert || culvert.type !== "pipe" || culvert.body || culvert.hidden_pipe) return [];
|
||||
@@ -203,11 +203,7 @@ function pipeMark(section: CrossSection): Record<string, unknown>[] {
|
||||
`L=${wholeMetres(section.design?.pipe_length_m)}`,
|
||||
];
|
||||
return [
|
||||
shape("Circle", { center: { x: cx, y: cy }, radius }),
|
||||
shape("Line", {
|
||||
startPoint: { x: cx, y: cy - radius },
|
||||
endPoint: { x: cx, y: cy - radius - LINE },
|
||||
}),
|
||||
shape("Circle", { center: { x: cx, y: cy }, radius }), // 아래 수직 지시선 없음(169)
|
||||
...inside.map((line, index) =>
|
||||
textEntity(line, cx, cy + LINE * (1 - index), CULVERT_COLOR, "center"),
|
||||
),
|
||||
|
||||
@@ -177,17 +177,10 @@ def _pipe_mark(
|
||||
f"Φ{_js_round(float(culvert.get('diameter_m') or 0.0) * 1000)}m/m",
|
||||
f"L={_whole_metres(length)}",
|
||||
]
|
||||
return [
|
||||
_shape(0, "Circle", {"center": {"x": cx, "y": cy}, "radius": radius}),
|
||||
_shape(
|
||||
1,
|
||||
"Line",
|
||||
{
|
||||
"startPoint": {"x": cx, "y": cy - radius},
|
||||
"endPoint": {"x": cx, "y": cy - radius - _LINE},
|
||||
},
|
||||
),
|
||||
] + [_text(2 + i, line, cx, cy + _LINE * (1 - i), "center") for i, line in enumerate(inside)]
|
||||
# 원 + 원 안 세 줄 — 아래 수직 지시선 없음(요구 169)
|
||||
return [_shape(0, "Circle", {"center": {"x": cx, "y": cy}, "radius": radius})] + [
|
||||
_text(1 + i, line, cx, cy + _LINE * (1 - i), "center") for i, line in enumerate(inside)
|
||||
]
|
||||
|
||||
|
||||
def note_entities(
|
||||
|
||||
@@ -197,3 +197,4 @@
|
||||
166. (원문 · 10-11 · 브레인 보고 답) 1. CAD 미리넣는 기능에서 사용자가 어떻게 사용할지를 몰라서 일단은 좌측패널 옵션과 구조물조합이름을 다 넣어주면 내가 추가로 선정하겠음. 2. 상세 창 처음화면은 전체가 다안보여도 상관없어. 3. 표열 강조가 무슨의미인지 자기 측점이 없는게 있을수 있나 무슨 말인지 모름. 4. 깃 싱크해도됨. 5. B05/B06 좌측 패널의 구조물 리스트 상단에 정수 맞춤 버튼이 있는데 역할을 전방위 적으로 코드를 확인해줘. 내가 원하는 방향은 전처리과정에서 확보된 배관지점들을 결정할때 반올림하여 횡단배수들의 위치를 결정되어한다. 이후 사용자들이 조절을 하거나 다른 구조물 전체 중 어떤 걸 넣더라고 지정된 위치는 그냥 정수값을 받고 지정해야한다는 거야. 혹시 문제가 있는지 확인해줘. 그리고 만약 구조물 측점과 횡단도 측점이 같은 측점으로 뭉쳐진다면 상위인 구조물 측점이 존재하고 일반측점은 비활성화되어야해. 그리고 만약 구조물 측점을 옮기게 되면 비활성화된 일반측점은 활성화하고 구조물 측점을 이동하는거야. 이건 하이라이트 기능들과 많이 연동되어있어. 간혹 두가지 중첩된 상태로 보이는 상황이거든 정말 자세히 검토해줘. <<< 에게 왠지 3번 항목과 연관되지 않을까 생각됨.
|
||||
167. (원문 · 10-11 · 조사 AK 답) 너가 뭔가 오해한것 같음. 1. 현재 측점을 가지는 구조물들을 유지해 필요하면 내가 나중에 추가할 수도 있음. 2. 프로그램에서 측점의 수치를 중 '측점 + 거리' or 누가거리에서 소수점을 사용하지 않겠다는 의미야. m 단위로 결정한다는 말이지. 3. 단추는 필요없어. 그냥 소수가 아닌 정수로만 제어하겠다는 의미야. 그러니 옛데이터도 그렇게 되어야겠지. 겹침 개선해. 지금 개발하면서 반복적으로 발생되고 있는 문제야. 이게 아마 하나씩 구조물 측점을 하나씩 추가하면서 발생된 문제같은데 근본적으로 문제를 해결해줘. 현재 전체적인 로직과 개발 방향은 잡힌상태야. 기능 확장과 동일 요소에 적용같은 방향만 있을것같은데 근본적인 문제해결을 위해 리팩토링이 필요하다면 말해.
|
||||
168. (원문 · 10-11 · 272 뒤) 이상하네 B05와 B06은 하나의 페이지로 동작하게 만들어져 있어. 그렇다면 신규 추가나 이동에 대해 바로 반영이 되면 좋겠는데? 그리고 종단도에 다른 영역들의 선택에 따라 종단 그래프에서도 활성화가 잘되는데 이떄 해당지점으로 이동해주는 기능이 누락되었어. 이전 코드적용 가능한지 확인해봐. 조건을 측전 활성화 결과를 보고 해당지점으로 이동하게 하는게 좋을것같아. / 해당지점을 화면의 중간에 오면 더 좋고
|
||||
169. (원문 · 10-11) B06의 횡단도의 상세 모달창에서 모여주는 표위 cad에서 배수관의 경우 도형이 원과 하단 수직선으로 구성도 되는데 이때 하단 수직선은 필요없음.
|
||||
|
||||
@@ -104,7 +104,7 @@ def _labels(entities: list[dict]) -> list[str]:
|
||||
def test_관_유입_유출_도수로_한_벌(out):
|
||||
"""그림(162-21) 꼴 — 원 안 세 줄 · 오른쪽 측점 · 구조물 조합 줄(265-2)."""
|
||||
full = out["full"]
|
||||
assert [entity["type"] for entity in full[:2]] == ["Circle", "Line"]
|
||||
assert [entity["type"] for entity in full[:2]] == ["Circle", "Text"] # 지시선 없음(169)
|
||||
assert _labels(full) == [
|
||||
"배수관",
|
||||
"Φ1200m/m",
|
||||
@@ -114,7 +114,7 @@ def test_관_유입_유출_도수로_한_벌(out):
|
||||
"돌붙임 찰붙임",
|
||||
]
|
||||
# 원 안 = 가운데 맞춤 · 원 중심 x · 오른쪽 = 왼쪽 맞춤 · 줄 3.0 간격 · 붉은 계열 · 기본 층
|
||||
inside, right = full[2:5], full[5:]
|
||||
inside, right = full[1:4], full[4:]
|
||||
assert {(e["align"], e["x"]) for e in inside} == {("center", full[0]["x"])}
|
||||
assert [e["y"] for e in right] == [-1.5, -4.5, -7.5]
|
||||
assert {e["x"] for e in right} == {15}
|
||||
@@ -449,8 +449,8 @@ def test_칸_없음_만_미리_넣음_지운_칸_옛_글_설계없음_이웃은_
|
||||
assert seeded is not design and "structure_note_cad" not in design # 저장 설계는 안 바뀜
|
||||
labels = [e["shapeData"].get("label") for e in seeded["structure_note_cad"]["entities"]]
|
||||
# 관 조합 미지정 = 원형 마크 · 측점(배관은 조합 글 줄 없음) · 이어서 좌측 패널 옵션 줄(166-1)
|
||||
assert labels[2:6] == ["배수관", "Φ1200m/m", "L=22m", "NO.71+13"]
|
||||
assert labels[6].startswith("관: 관경 1200") and all(": " in line for line in labels[6:])
|
||||
assert labels[1:5] == ["배수관", "Φ1200m/m", "L=22m", "NO.71+13"]
|
||||
assert labels[5].startswith("관: 관경 1200") and all(": " in line for line in labels[5:])
|
||||
cleared = {**design, "structure_note_cad": {"entities": []}}
|
||||
assert with_structure_note(cleared, 1433.0, sources, "x") is cleared
|
||||
old = {**design, "structure_note": "옛 글"}
|
||||
|
||||
@@ -146,7 +146,7 @@ def test_구조물_여럿_글은_조합_이름_미지정_배관_본체_뺌_TS_
|
||||
full, bare, none = mirrored
|
||||
assert full["lines"] == _LINES
|
||||
# 배관 = 원형 마크(원 안 배수관 · Φ · L 정수) · 오른쪽 측점 + 조합 줄
|
||||
assert [e["type"] for e in full["entities"][:2]] == ["Circle", "Line"]
|
||||
assert [e["type"] for e in full["entities"][:2]] == ["Circle", "Text"] # 지시선 없음(169)
|
||||
assert _labels(full["entities"]) == ["배수관", "Φ800m/m", "L=9m", "NO.2", *_LINES]
|
||||
assert "흄관 1200" not in _labels(full["entities"])
|
||||
# 원형 마크 없음(관 없는 구조물 측점) = 측점 + 줄 · 구조물 없는 측점 = 빈 도면
|
||||
|
||||
Reference in New Issue
Block a user