- Số lượng chi tiết sắp xếp ngược chiều trên tấm nj theo 3 tọa độ cực O1(x1,y1), O 2(x2,y2), O5(x3,y3) cĩ điểm khởi đầu là cực O3.
DANH MỤC CÁC CƠNG TRÌNH KHOA HỌC ĐÃ CƠNG BỐ
1.1. Giới thiệu một số hàm lập trình bổ sung
Trên cơ sở các giải thuật đã nghiên cứu và các yêu cầu của phần mềm cần xây dựng, phần mềm BK-Nesting được lập trình bằng ngôn ngữ Delphi 7.0. Ngoài một số hàm đã có sẵn trong ngôn ngữ lập trình, một số hàm khác được tạo ra và bổ sung để xây dựng phần mềm bao gồm:
- Hàm xác định tọa độ điểm cực trong polygon:
function GetCenterPoint(InPoints: PointArray): TPoint;
- Hàm xác định hình chữ nhật chứa vùng polygon:
function GetPolygonRect(InPoints: PointArray): TRect;
- Hàm xác định chiều rộng polygon:
function GetPolygonWidth(InPoints: PointArray): Integer;
- Hàm xác định chiều cao polygon:
function GetPolygonHeight(InPoints: PointArray): Integer;
- Hàm xác định tọa độ điểm trên đường biên:
function CreatePolygonIndirect(InPoints: PointArray): PointArray;
- Hàm xác định giao điểm của hai đường thẳng:
function PointAtIJ(DM1, DM2: PointArray; dmRect: TRect): Boolean;
- Hàm kiểm tra đường mút:
function TestDM(ArrS1, ArrS2, aDM: PointArray; pS1, pS2: TPoint): Boolean;
- Hàm xác định đường bao của Polygon:
function BoundingPolygon(tagData: TPolyDesc; angle: Integer): PointArray;
- Hàm dựng đường mút:
function CreateDM360(tagData: PPolyDesc; step, dx, idx: Integer; var state: Byte; flip: Boolean): TDMItemInfo;
- Hàm tạo đường mút của hai chi tiết S1 và S2:
function CreateDMIndirect(var pS1: TPoint; ArrS1, ArrS2: PointArray; step: Integer; LineOrientation: TLineOrientation): PointArray;
- Hàm tính khoảng cách dịch chuyển (Di, di) của hai chi tiết S1 và S2:
function DistanceF(ArrS1, ArrS2: PointArray; var _Do, _di: Integer): Integer;
- Hàm tính khoảng cách cực chi tiết S1 và S2:
function DistanceF2(ArrS1, ArrS2: PointArray; var _Do, _di: Integer): Integer;
- Hàm tính khoảng cách giữa các đường mút:
function DistanceFDM(ArrS1, ArrS2: PointArray; index: Integer; LineOrientation: TLineOrientation): Integer;
PL 4
function LookupPointByDM(fileBmp: string; ArrS1, ArrDM1, ArrDM2: PointArray; var Pt1, Pt2, Pt3, Pt4: TPoint; var PtInPoly: PointArray; Full: Boolean): TPoint;
- Hàm trích giao điểm của hai đường mút:
function CalcCoordsStruct(ArrDM: PointArray; Center: TPoint): PointArray;
- Hàm quét dòng trên polygon:
function RasterScanLine(InPoints: PointArray; step: Integer; Coords: Boolean = True): PointArray;
- Hàm tính diện tích chi tiết:
function CalculateEnclosedArea(InPoints: ArrayScanLine; LineFactor: Integer): LongWord;
- Hàm tìm đường biên nội suy vector chi tiết từ bitmap:
function MagicWandSelect(dstBitmap: TBitmap; StartPoint: TPoint): PointArray;
- Hàm tạo thông số quét dòng dùng để tính toán:
function CreateProfileLine(dstBitmap: TBitmap; cutBorder: Boolean; step: Integer): ArrayScanLine;
- Hàm kiểm tra điểm có nằm trong polygon:
function FindPolygons(InScanLine: ArrayScanLine; InPoints: PointArray; LineFactor: Integer): PointArray;
- Hàm dịch chuyển polygon theo khoảng cách AX và AY:
function TranslatePolygon(InPoints: PointArray; AX, AY: Integer): PointArray;
- Hàm dịch chuyển polygon về tọa độ mới:
function TransformCoordPt(var aPoints: PointArray; Center: TPoint): TSize;
- Hàm di chuyển đường mút đến khoảng cách AX, AY:
function TranslateDM(InPoints: PointArray; AX, AY: Integer): PointArray;
- Hàm xoay MagicPoint:
function RotateMagicPoints(phi: Integer; MagicPoints: PointArray; step: Integer): PointArray;
function RotateMagicPoints2(phi: Integer; pMG: TPoint; MagicPoints: PointArray; step: Integer; Coords: Boolean): PointArray;
- Hàm xoay polygon theo góc alpha:
function RotatePolygon(angle: extended; InPoints: PointArray; Center: TPoint): PointArray;
PL 5
function Rotate180Polygon(angle: extended; InPoints: PointArray; Center: TPoint): PointArray;
- Hàm phóng lớn polygon theo tỷ lệ:
function ZoomPolygon(Polygon: PointArray; const Center: TPoint; const Scale: Double): PointArray;
- Hàm dịch chuyển polygon đến tọa độ XY:
function MovePolygonXY(ArrSPointArray;pS, dz: TPoint): PointArray;
- Kiểm tra điểm nằm trong hay ngoài polygon:
function PtInPolygon(const Polygon: PointArray; const Pt: TPoint): Boolean;
- Các hàm xuất ra file DIG (Phục vụ cho việc debug thông số đường biên) procedure InputFromTDIG(fileName: string; var ArrS1, ArrS2: PointArray);
procedure OutputToTDIG(fileName:string; ArrS1, ArrS2: PointArray);
- Hàm tính khoảng các DX và DY:
procedure OffsetPt(var pt: TPoint; DX: Integer; DY: Integer);
- Hàm dịch chuyển offset theo khoảng cách Di, di:
procedure GetClippingRect(srcBitmap: TBitmap; var aRect: TRect);
- Hàm chuyển đổi hình true color thành hình đơn sắc:
procedure ConvertBitmapToMonochrome(SourceBmp: TBitmap; var TargetBmp: TBitmap; value: Byte);
- Hàm xử lý đảo màu từ hình màu sang đơn sắc (Trắng - Đen):
procedure BitmapInvertColor(SourceBmp: TBitmap; var TargetBmp: TBitmap);
- Hàm ghi log vào file (dùng cho qúa trình debug đối tượng):
procedure PointLogFile(filename: string; const InPoints: PointArray);
- Hàm xác định hướng của chi tiết:
PL 6