diff --git a/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBox.xaml b/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBox.xaml
index 8be4b4f..872c539 100644
--- a/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBox.xaml
+++ b/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBox.xaml
@@ -92,6 +92,7 @@
+
@@ -118,6 +119,10 @@
+
diff --git a/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBoxViewModel.cs b/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBoxViewModel.cs
index 4d69a02..467c121 100644
--- a/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBoxViewModel.cs
+++ b/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBoxViewModel.cs
@@ -76,6 +76,10 @@ namespace WeldingCommon.Views
private bool _IsLaserReady;
public bool IsLaserReady { get => _IsLaserReady; set => SetProperty(ref _IsLaserReady, value); }
+ // NoLaser 모드: true면 Laser Control(BIT9/13)을 켜지 않음(false 유지) → 레이저 컨트롤러 OFF 상태로 Laser On 가능 (Cal/전압 측정용)
+ private bool _IsNoLaser;
+ public bool IsNoLaser { get => _IsNoLaser; set => SetProperty(ref _IsNoLaser, value); }
+
// Object Select Type
private bool _IsObjectSelectAll;
public bool IsObjectSelectAll { get => _IsObjectSelectAll; set => SetProperty(ref _IsObjectSelectAll, value); }
@@ -144,6 +148,7 @@ namespace WeldingCommon.Views
IsGuidBeam = false;
IsLaserReady = false;
+ IsNoLaser = false;
IsObjectSelectAll = true;
}
@@ -461,8 +466,10 @@ namespace WeldingCommon.Views
// 추후 Write bit 파라미터화 해야함
if(toggleIO)
{
- _IODevice._iOUnit.WriteDoBit(9, true);
- _IODevice._iOUnit.WriteDoBit(13, true);
+ // IsNoLaser면 레이저 컨트롤러(BIT9/13)를 켜지 않음(false 유지) → 발진 없이 Laser On 가능
+ bool ctrlOn = !IsNoLaser;
+ _IODevice._iOUnit.WriteDoBit(9, ctrlOn);
+ _IODevice._iOUnit.WriteDoBit(13, ctrlOn);
toggleIO = false;
}
else
diff --git a/docs/작업일지/2026_06_18.md b/docs/작업일지/2026_06_18.md
index 1e5b50d..e89aef8 100644
--- a/docs/작업일지/2026_06_18.md
+++ b/docs/작업일지/2026_06_18.md
@@ -71,3 +71,25 @@
- csproj 빌드 경로 TDC→PTOP (`_out_prismatic_rd_ptop`)
- sln에서 Scanner/Gun/CleanLaser 제거, 해당 머신 소스 폴더 삭제, 비-PTOP `_out` 아티팩트 정리 → **Machines에 PTOP만 남김** (참고본과 동일 구조)
- **주의:** 이 환경에선 실제 MSBuild 검증 불가 → VS에서 Clean→Rebuild 권장(obj 비워둠).
+
+## 11:34
+
+### Manual Laser Power Control — Watt 입력 GroupBox 숨김(Collapsed)
+
+- 마이그레이션 후 빌드 정상 확인 완료.
+- `UCScannerLaserControl.xaml`(WeldingCommon)의 Manual Laser Power Control 2영역(%, W) 중 **W 입력 영역은 주로 안 쓰므로** Grid.Row="1"(Watt 기준) GroupBox에 `Visibility="Collapsed"` 추가로 숨김 처리.
+- Percent(%) 영역만 노출, 공간도 미차지. ViewModel/바인딩(`CMD_LaserShotOnWatt` 등)은 변경 없음.
+- 관련 분석: `docs/분석/2026/06/18/102847_manual_laser_power_control_groupbox_analysis.md`
+- 커밋 `ad6cf68`로 커밋·푸시 완료.
+
+## 12:12
+
+### NoLaser 체크 — 레이저 컨트롤러(IO BIT9/13) 안 켜고 Laser On 가능
+
+- 발진(lasing)을 막는 실제 지점은 `LaserSignalOn`(RTC5 게이트)이 아니라 **IO Control DO9(`CoreLaser_Control`)/DO13(`RingLaser_Control`)** 를 true로 주는 부분이었음.
+- 위치: `UCScannerObjectTeachingControlBoxViewModel.PerformCmdLaserReadyCheck`(Laser Control GroupBox의 `Laser Ready` 버튼).
+- 처음엔 `UCScannerLaserControl`에 Analog Only(IsAnalogOnly)로 `LaserSignalOn` 가드를 넣었으나, 실제 IO는 다른 소스(ObjectTeachingControlBox)라 **그 변경은 원복**하고(Watt 숨김은 유지), 정확한 지점에 다시 구현.
+- 구현: ViewModel에 `IsNoLaser` 추가(기본 false). `Laser Ready` 버튼이 DO9/13을 켜는 분기에서 `ctrlOn = !IsNoLaser`로 적용 → **IsNoLaser=true면 DO9/13을 true로 안 켜고 false 유지** → 레이저 컨트롤러 OFF 상태로 Laser On 가능(Cal/전압 측정용).
+- XAML: Laser Control GroupBox에 `No Laser (전압만, 발진 안 함)` 체크박스 추가.
+- 디바이스 레이어(Scanner/RTC5) 무변경, IO 비트 9/13만 제어.
+- 커밋·푸시 진행.