'======================================================= ' Class_Lib '======================================================= Const PI = 3.14159265358979 Const P360 = PI * 2 Const P180 = PI Const P90 = PI / 2 Const P270 = ((PI * 3) / 2) '======================================================= ' ExtractFilePath '======================================================= Public Function ExtractFilepath(filename) Dim i, Text ExtractFilepath = "" Text = Replace(filename, "/", "\") i = InStrRev(Text, "\") If (i <= 1) Then Exit Function ExtractFilepath = Left(Text, i - 1) End Function '======================================================= ' ExtractFileName '======================================================= Public Function ExtractFileName(filename) Dim i, Text ExtractFileName = "" Text = Replace(filename, "/", "\") i = InStrRev(Text, "\") If (i <= 1) Then Exit Function ExtractFileName = Right(Text, Len(Text) - i) End Function '======================================================= ' ExtractFileNam '======================================================= Public Function ExtractFileNam(filename) ExtractFileNam = filename Text = ExtractFileName(filename) i = InStrRev(Text, ".") If i = 0 Then Exit Function ExtractFileNam = Left(Text, i - 1) End Function '======================================================= ' ExtractFileExt '======================================================= Public Function ExtractFileExt(filename) ExtractFileExt = "" Text = ExtractFileName(filename) i = InStrRev(Text, ".") If i = 0 Then Exit Function ExtractFileExt = Right(Text, Len(Text) - (i - 1)) End Function '======================================================= ' Angle '======================================================= Public Function Angle(p1 As IPoint, p2 As IPoint) As Variant Const esp = 0.0000001 Dim dx As Double Dim dy As Double Dim dir As Double Dim x1 As Double, y1 As Double, x2 As Double, y2 As Double x1 = p1.x y1 = p1.y x2 = p2.x y2 = p2.y dx = x2 - x1 dy = y2 - y1 If (Abs(dx) > esp) Then dir = Atn(dy / dx) If ((dx < 0) And (dy < 0)) Then dir = dir + PI If ((dx < 0) And (dy >= 0)) Then dir = dir + PI Else: dir = P270 If (y2 > y1) Then dir = P90 If (Abs(y2 - y1) < esp) Then dir = 0 End If If (dir < 0) Then dir = dir + P360 Angle = dir End Function '======================================================================== ' Length '======================================================================== Public Function Length(p1 As IPoint, p2 As IPoint) As Variant Dim dx, dy As Double dx = p1.x - p2.x dy = p1.y - p2.y Length = Sqr(dx * dx + dy * dy) End Function '======================================================================== ' RotatePoint '======================================================================== Public Sub RotatePoint(Point As IPoint, Angle As Double) Dim tx, ty As Double tx = (Point.x * Cos(Angle)) - (Point.y * Sin(Angle)) ty = (Point.x * Sin(Angle)) + (Point.y * Cos(Angle)) Point.x = tx Point.y = ty End Sub '======================================================================== ' MovePointToOrigin '======================================================================== Public Sub MovePointToOrigin(Point As IPoint, Origin As IPoint) Point.x = Point.x - Origin.x Point.y = Point.y - Origin.y End Sub '======================================================================== ' MovePointFromOrigin '======================================================================== Public Sub MovePointFromOrigin(Point As IPoint, Origin As IPoint) Point.x = Point.x + Origin.x Point.y = Point.y + Origin.y End Sub '======================================================================== ' Degree '======================================================================== Public Function Degree(Angle As Double) As Double Degree = Angle While (Degree < 0) Degree = Degree + P360 Wend Degree = Degree * 180 / PI End Function '======================================================================== ' Radian '======================================================================== Public Function Radian(Angle As Double) As Double Radian = Angle If (Radian < 0) Then Radian = Radian + 360 If (Radian >= 360) Then Radian = Radian - 360 Radian = Radian * PI / 180 End Function '======================================================================== ' R (2 Decimals) '======================================================================== Public Function R(Value As Double) As Double R = Round(Value, 2) End Function '======================================================================== ' Min '======================================================================== Public Function Min(A, b) As Double Min = A If (b < A) Then Min = b End Function '======================================================================== ' ReadAngle '======================================================================== Public Function ReadAngle(Angle) As Double ReadAngle = Angle If (ReadAngle < 0) Then ReadAngle = ReadAngle + P360 If (ReadAngle > P360) Then ReadAngle = ReadAngle - P360 If ((ReadAngle > Radian(110)) And (ReadAngle < Radian(280))) Then ReadAngle = ReadAngle - P180 End Function