qcast-front/.claude/memory/project_aux_line_integrate_exclusion.md

1.4 KiB

name description type
auxiliaryLine integrateExtensionLines 제외 사용자가 그린 auxiliaryLine 은 ext 와 collinear 병합 대상에서 제외해야 split 정상 동작 project

useRoofAllocationSetting.js integrateExtensionLines sk-finder 에 if (sl.name === 'auxiliaryLine') return false 가드 필요.

Why:

  • integrateExtensionLines 는 SK auto-build 시 만들어지는 hip stub + extensionLine 의 1:1 통합용. 두 라인이 코너 끝점 공유 + collinear 일 때 단일 mergedLine 으로 합침.
  • 사용자가 그리는 auxiliaryLine 은 CanvasFrame.jsx 102-107 에서 이미 roof.innerLines 로 push 됨 (완전한 분할선 상태).
  • aux 가 ext 와 코너 끝점 공유 + 45° collinear 케이스에 sk-finder 가 aux 를 병합 후보로 잡음 → ext+aux 가 하나의 mergedLine 으로 합쳐지면서 코너 끝점 소실
  • 예) ext (992.1,394.4)→(1042.1,444.4) + aux (1042.1,444.4)→(792.1,194.4) = mergedLine (992.1,394.4)→(792.1,194.4) (코너 1042.1,444.4 손실)
  • 결과: splitPolygonWithLines 가 "경로 존재하나 3개 미만 좌표" 로 실패 → alloc 안 됨

How to apply:

  • aux 는 이미 완성된 분할선이므로 ext 와 합치면 안 됨.
  • sk 후보 필터에서 sl.name === 'auxiliaryLine' 를 명시적으로 제외.
  • ext 와 SK auto-build hip stub 간 1:1 통합 로직만 살리고 aux 는 그대로 split 에 사용.