콘텐츠로 이동

고치기·진단

FreeCAD 에서 가장 시간을 잡아먹는 일이 “왜 빨간지” 찾는 것입니다. 제약 패널을 위아래로 훑고, Pad 를 하나씩 눌러 보고, 재계산을 반복합니다. AI 는 스케치 솔버 상태·형상 유효성·재계산 결과를 직접 읽으므로 원인을 바로 말해 줍니다. 고치는 것은 후보를 보여 주고 사용자가 고른 것만 합니다.

이렇게 말하면 무엇이 나오는가
“지금 열린 모델 구조 파악해줘” Body·피처·스케치 요약과 문제 객체 목록. 진단은 항상 여기서 시작
“Sketch003 왜 빨간지 봐줘” 충돌·중복 제약 번호(GUI 제약 패널 번호와 같음), 남은 자유도, 열린 끝점
“고쳐줘” 후보 번호 목록: 끝점 잇기, 빠진 수평·수직, 같음 제약, 중복·충돌 삭제, 남은 자유도용 치수. 각각 예상 효과와 확신도
“3번이랑 5번 적용해” 고른 것만 적용, 나빠지면 되돌림. 그사이 스케치가 바뀌었으면 거부
“Pad001 에러 원인 찾아서 고쳐줘” 원인 설명 → 무엇을 바꿀지 말함 → 수정 → 재계산 추적
“이 형상 뭔가 이상해” 유효성, 부피, 면 구성, 깨진 이유
“고친 뒤에 뭐가 풀렸고 뭐가 새로 깨졌어?” 재계산 전후 비교: resolved / new_errors / persistent
이렇게 말한다
Sketch003 이 빨개. 왜 그런지 진단하고 고칠 후보를 번호로 보여줘.
자동으로 고치지 말고 내가 고를게.

“40 이 맞아. 2, 3, 4 적용해” 라고 하면 적용하고 재계산해 “solve 0, DoF 0, 열린 끝점 0, 새로 깨진 객체 없음” 을 보고합니다.

  • 스케치: 솔버 상태, 남은 자유도, 충돌(conflicting)·중복(redundant)·잘못된(malformed) 제약 목록, 열린 끝점. 제약 번호는 GUI 제약 패널의 번호와 같으니 패널에서 바로 찾을 수 있습니다.
  • 형상: 유효성 검사 메시지, 부피, 면 종류별 개수. PartDesign 피처면 Body 누적 형상과 피처 자체 형상을 따로 봅니다.
  • 프로퍼티·수식: “Pad 의 Length 가 어디서 오는 값이야?” 에 스프레드시트 참조 수식까지 보여 줍니다.
  • 재계산 추적: 고친 뒤 무엇이 풀렸고(resolved) 무엇이 새로 깨졌는지(new_errors), 그대로인지(persistent).
  • 자동으로 고치지 않습니다. recommended 는 추천일 뿐입니다. 특히 “남은 자유도용 치수 추가” 는 현재 값을 치수로 굳히는 것이라 설계 치수인지 사용자만 압니다. 그래서 확신도가 low 로 나옵니다.
  • 충돌 제약 둘은 “둘 중 하나” 입니다. 같이 고르면 AI 가 거부합니다.
  • 스케치가 아닌 문제(Pad 가 스케치 밖, 참조 면 사라짐)는 AI 가 FreeCAD 안에서 Python 을 실행해 고칩니다. 수정 전에 무엇을 바꿀지 말하게 되어 있으니 그 설명을 읽고 “해” 라고 하세요.
  • 긴 수정 코드는 FreeCAD 를 멈춥니다. 메인 스레드에서 돌아 중단할 수 없습니다. 끝나길 기다리거나 FreeCAD 를 강제 종료해야 하니, 큰 작업은 나눠 시킵니다.
  • 재계산 후 Touched 가 남아 있어도 에러가 아닙니다. 판단은 Invalid 로 합니다.
기능 하는 일
get_document_graph 객체 트리·의존관계·문제 객체 — 진단의 시작점
get_sketch_diagnostics solve 상태, DoF, 충돌·중복·잘못된 제약, 열린 끝점
suggest_sketch_fixes · apply_sketch_fixes 후보(사본에서 효과 측정) → 고른 id 만 적용
analyze_shape · inspect_object 형상 유효성 / 프로퍼티·수식
execute_code · tracked_recompute 스케치 밖 문제 수정 / 고쳐진 것·새로 깨진 것