 9a7d1d27c7
			
		
	
	9a7d1d27c7
	
	
	
		
			
			- UIControl 프로젝트 구조 변경 (CapCleaningControl → Sub/UIControl) - arAjinextek 라이브러리 통합 및 구조 개선 - 새로운 arAjinextek_Union 프로젝트 추가 - 솔루션 파일에 README.md 추가 - QR 모드에서 WMS RCV 태그 인식 기능 강화 - 데이터베이스 스키마 업데이트 및 관련 클래스 수정 - 프린터 및 바코드 장치 연동 로직 개선 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			96 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.ComponentModel;
 | |
| using System.Data;
 | |
| using System.Drawing;
 | |
| using System.Drawing.Drawing2D;
 | |
| using System.Linq;
 | |
| using System.Windows.Forms;
 | |
| 
 | |
| 
 | |
| namespace UIControl
 | |
| {
 | |
|     public partial class HMI
 | |
|     {
 | |
|         void Draw_PickerPrinter(Graphics g, RectangleF rect,
 | |
|             int motAxisY, int motAxisZ, bool reverse,
 | |
|             Boolean LockY, Boolean LockZ, Boolean ItemOn, Boolean ItemPickOK,
 | |
|             Boolean CylFW, Boolean CylBW)
 | |
|         {
 | |
|             //실제 로봇의 길이를 입력한다 (단위:mm)
 | |
|             var RealLenY = 400;
 | |
|             var RealLenZ = 250;
 | |
| 
 | |
|             g.FillRectangle(Brushes.DimGray, rect);
 | |
|             if (LockY) g.DrawRect(rect, Color.Blue, 5);
 | |
|             else g.DrawRect(rect, Color.White);
 | |
| 
 | |
|             var PXName = motAxisY == 2 ? arMotPosNameLM : arMotPosNameRM;
 | |
|             g.DrawString(PXName, this.arFont_MotPosName, Brushes.Black, rect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center, FormatFlags = StringFormatFlags.DirectionVertical });
 | |
| 
 | |
|             var RPosY = this.arMotorPosition[motAxisY];
 | |
|             var RPosZ = this.arMotorPosition[motAxisZ];
 | |
|             //RPosY = 0;
 | |
|             //RPosZ = 300;
 | |
| 
 | |
|             //모터의 실제 위치에 뭉치를 그린다.
 | |
| 
 | |
|             var PosY = (float)(rect.Top + (rect.Height - (rect.Height * RPosY / RealLenY)));
 | |
| 
 | |
|             //Y뭉치를 그린다
 | |
|             var rectYP = new RectangleF(rect.X - 1, PosY - (rect.Width / 2.0f), rect.Width + 2, rect.Width);
 | |
|             g.FillRectangle(Brushes.Yellow, rectYP);
 | |
|             g.DrawRect(rectYP, Color.Black, 2);
 | |
|             //g.DrawLine(Pens.Red, rect.X - 30, PosY, rect.Right + 130, PosY);
 | |
| 
 | |
| 
 | |
|             //Z축을 그린다.
 | |
|             RectangleF rectZ = RectangleF.Empty;
 | |
|             var zwidth = 60;
 | |
|             if (reverse) rectZ = new RectangleF(rect.X - zwidth, PosY - 10, zwidth, 20);
 | |
|             else rectZ = new RectangleF(rect.Right, PosY - 10, zwidth, 20);
 | |
| 
 | |
|             float PosZ = 0f;
 | |
|             if (reverse) PosZ = (float)(rectZ.Left + rectZ.Width - (rectZ.Width * RPosZ / RealLenZ));
 | |
|             else PosZ = (float)(rectZ.Left + rectZ.Width * RPosZ / RealLenZ);
 | |
| 
 | |
|             g.FillRectangle(Brushes.DimGray, rectZ);
 | |
|             if (LockZ) g.DrawRect(rectZ, Color.Blue, 5);
 | |
|             else g.DrawRect(rectZ, Color.White);
 | |
| 
 | |
|             //z축 포지션 이름
 | |
|             var ZposName = motAxisZ == 3 ? arMotPosNameLZ : arMotPosNameRZ;
 | |
|             g.DrawString(ZposName, this.arFont_MotPosName, Brushes.Black, rectZ, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
 | |
| 
 | |
|             //var CylStr = string.Format("FW:{0},BW:{1}", CylFW, CylBW);
 | |
|             //if (CylFW == true && CylFW != CylBW) CylStr = "FW";
 | |
|             //else if (CylBW == true && CylFW != CylBW) CylStr = "BW";
 | |
|             //g.DrawString(CylStr, this.arFont_MotPosName, Brushes.Red, rectZ.Left, rectZ.Top - 20);
 | |
| 
 | |
|             //Z뭉치를 그린다
 | |
|             var rectZP = new RectangleF(PosZ - (rectZ.Height / 2.0f), rectZ.Y - 1, rectZ.Height, rectZ.Height + 2);
 | |
|             if (ItemOn)
 | |
|             {
 | |
|                 g.FillRectangle(Brushes.Lime, rectZP);
 | |
|                 g.DrawRect(rectZP, Color.Black, 2);
 | |
| 
 | |
| 
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 g.FillRectangle(Brushes.SkyBlue, rectZP);
 | |
|                 g.DrawRect(rectZP, Color.Black, 2);
 | |
|             }
 | |
|             using (Font f = new Font("Consolas", 10, FontStyle.Bold))
 | |
|                 g.DrawString((ItemPickOK ? "O" : "X"), f, Brushes.Black, rectZP, new StringFormat
 | |
|                 {
 | |
|                     Alignment = StringAlignment.Center,
 | |
|                     LineAlignment = StringAlignment.Center
 | |
|                 });
 | |
| 
 | |
|             //g.DrawLine(Pens.Blue, PosZ, rectZ.Top - 30, PosZ, rectZ.Bottom + 100);
 | |
| 
 | |
|         }
 | |
|     }
 | |
| }
 |