Từ khóa tìm kiếm

iLogic tính một số thông số đặc trưng hình học

admin
/ 0 Bình luận / 1 lượt xem
Dim doc = ThisDoc.Document
Dim oCD As ComponentDefinition = doc.ComponentDefinition
Dim oCommandMgr As CommandManager = ThisApplication.CommandManager

' Chọn mặt phẳng
Dim oFace As Face = oCommandMgr.Pick(SelectionFilterEnum.kPartFacePlanarFilter, "Chọn mặt phẳng phẳng")
If oFace Is Nothing Then Exit Sub

' Tạo sketch trên mặt phẳng đã chọn
Dim oSk As PlanarSketch = oCD.Sketches.Add(oFace)
oSk.Edit()

' Thực thi lệnh ProjectCutEdgesCmd
oCommandMgr.ControlDefinitions("SketchProjectCutEdgesCmd").Execute()

' Lấy profile và tính diện tích, các momen quán tính
Dim oProfile As Profile = oSk.Profiles.AddForSolid
Dim dArea_cm2 As Double = oProfile.RegionProperties.Area

Dim adPrincipalMoments(2) As Double
oProfile.RegionProperties.PrincipalMomentsOfInertia( _
    adPrincipalMoments(0), _  ' Ix (Moment quán tính quanh trục X)
    adPrincipalMoments(1), _  ' Iy (Moment quán tính quanh trục Y)
    adPrincipalMoments(2))   ' Ixy (Moment quán tính chéo)

' Tìm giới hạn x và y từ các điểm sketch
Dim minX As Double = Double.MaxValue
Dim maxX As Double = Double.MinValue
Dim minY As Double = Double.MaxValue
Dim maxY As Double = Double.MinValue

For Each pt As SketchPoint In oSk.SketchPoints
    If pt.Geometry.X < minX Then minX = pt.Geometry.X
    If pt.Geometry.X > maxX Then maxX = pt.Geometry.X
    If pt.Geometry.Y < minY Then minY = pt.Geometry.Y
    If pt.Geometry.Y > maxY Then maxY = pt.Geometry.Y
Next

' Tính tọa độ trọng tâm (centroid) và chuyển đổi sang mm
Dim centroid As Point2d = oProfile.RegionProperties.Centroid
Dim cX_cm As Double = centroid.X
Dim cY_cm As Double = centroid.Y
Dim cX_mm As Double = cX_cm * 10
Dim cY_mm As Double = cY_cm * 10

' Tính diện tích
Dim dArea_mm2 As Double = dArea_cm2 * 100 ' cm² → mm²
' Tính khoảng cách từ trọng tâm đến điểm xa nhất theo trục X và Y
Dim maxDistX As Double = Math.Max(Math.Abs(maxX - cX_cm), Math.Abs(minX - cX_cm)) * 10 ' Đoạn đường xa nhất theo trục X (mm)
Dim maxDistY As Double = Math.Max(Math.Abs(maxY - cY_cm), Math.Abs(minY - cY_cm)) * 10 ' Đoạn đường xa nhất theo trục Y (mm)
' Tính các momen quán tính theo mm² và mm⁴
Dim Ix_mm4 As Double = adPrincipalMoments(0) * 10000 ' cm⁴ → mm⁴
Dim Iy_mm4 As Double = adPrincipalMoments(1) * 10000 ' cm⁴ → mm⁴
' Tính momen kháng uốn Wx và Wy
Dim Wx_mm3 As Double = Ix_mm4 / maxDistY ' mm³
Dim Wy_mm3 As Double = Iy_mm4 / maxDistX ' mm³

' Hiển thị kết quả trong hộp thoại
MsgBox ("Diện tích: " & Round(dArea_mm2, 2) & " mm²" & vbCrLf & _
       "Tọa độ trọng tâm: (" & Round(cX_mm, 2) & ", " & Round(cY_mm, 2) & ") mm" & vbCrLf & _
       "Khoảng cách từ trục trung hòa:" & vbCrLf & _
       "- Tới điểm xa nhất theo trục X: " & Round(maxDistX, 2) & " mm" & vbCrLf & _
       "- Tới điểm xa nhất theo trục Y: " & Round(maxDistY, 2) & " mm" & vbCrLf & _
       "Ix: " & Round(Ix_mm4, 2) & " mm⁴" & vbCrLf & _
       "Iy: " & Round(Iy_mm4, 2) & " mm⁴" & vbCrLf & _
       "Wx: " & Round(Wx_mm3, 2) & " mm³" & vbCrLf & _
       "Wy: " & Round(Wy_mm3, 2) & " mm³",
       vbInformation, "iLogic Đặc trưng hình học:")
0

Bình luận

Admin đã tắt nhận xét trên tất cả các bài viết