[Inventor] iLogic Đặc trưng hình hoc

Thêm vào:nucek65 (06.05.2025 / 09:08)
Đánh giá:rating 308 article (0)
Lượt xem:56
Bình luận:Những ý kiến đóng
  1. Dim doc = ThisDoc.Document
  2. Dim oCD As ComponentDefinition = doc.ComponentDefinition
  3. Dim oCommandMgr As CommandManager = ThisApplication.CommandManager
  4.  
  5. ' Chọn mặt phẳng
  6. Dim oFace As Face = oCommandMgr.Pick(SelectionFilterEnum.kPartFacePlanarFilter, "Chọn mặt phẳng phẳng")
  7. If oFace Is Nothing Then Exit Sub
  8.  
  9. ' Tạo sketch trên mặt phẳng đã chọn
  10. Dim oSk As PlanarSketch = oCD.Sketches.Add(oFace)
  11. oSk.Edit()
  12.  
  13. ' Thực thi lệnh ProjectCutEdgesCmd
  14. oCommandMgr.ControlDefinitions("SketchProjectCutEdgesCmd").Execute()
  15.  
  16. ' Lấy profile và tính diện tích, các momen quán tính
  17. Dim oProfile As Profile = oSk.Profiles.AddForSolid
  18. Dim dArea_cm2 As Double = oProfile.RegionProperties.Area
  19.  
  20. Dim adPrincipalMoments(2) As Double
  21. oProfile.RegionProperties.PrincipalMomentsOfInertia( _
  22. adPrincipalMoments(0), _ ' Ix (Moment quán tính quanh trục X)
  23. adPrincipalMoments(1), _ ' Iy (Moment quán tính quanh trục Y)
  24. adPrincipalMoments(2)) ' Ixy (Moment quán tính chéo)
  25.  
  26. ' Tìm giới hạn x và y từ các điểm sketch
  27. Dim minX As Double = Double.MaxValue
  28. Dim maxX As Double = Double.MinValue
  29. Dim minY As Double = Double.MaxValue
  30. Dim maxY As Double = Double.MinValue
  31.  
  32. For Each pt As SketchPoint In oSk.SketchPoints
  33. If pt.Geometry.X < minX Then minX = pt.Geometry.X
  34. If pt.Geometry.X > maxX Then maxX = pt.Geometry.X
  35. If pt.Geometry.Y < minY Then minY = pt.Geometry.Y
  36. If pt.Geometry.Y > maxY Then maxY = pt.Geometry.Y
  37. Next
  38.  
  39. ' Tính tọa độ trọng tâm (centroid) và chuyển đổi sang mm
  40. Dim centroid As Point2d = oProfile.RegionProperties.Centroid
  41. Dim cX_cm As Double = centroid.X
  42. Dim cY_cm As Double = centroid.Y
  43. Dim cX_mm As Double = cX_cm * 10
  44. Dim cY_mm As Double = cY_cm * 10
  45.  
  46. ' Tính diện tích
  47. Dim dArea_mm2 As Double = dArea_cm2 * 100 ' cm² → mm²
  48. ' Tính khoảng cách từ trọng tâm đến điểm xa nhất theo trục X và Y
  49. 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)
  50. 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)
  51. ' Tính các momen quán tính theo mm² và mm⁴
  52. Dim Ix_mm4 As Double = adPrincipalMoments(0) * 10000 ' cm⁴ → mm⁴
  53. Dim Iy_mm4 As Double = adPrincipalMoments(1) * 10000 ' cm⁴ → mm⁴
  54. ' Tính momen kháng uốn Wx và Wy
  55. Dim Wx_mm3 As Double = Ix_mm4 / maxDistY ' mm³
  56. Dim Wy_mm3 As Double = Iy_mm4 / maxDistX ' mm³
  57.  
  58. ' Hiển thị kết quả trong hộp thoại
  59. MsgBox ("Diện tích: " & Round(dArea_mm2, 2) & " mm²" & vbCrLf & _
  60. "Tọa độ trọng tâm: (" & Round(cX_mm, 2) & ", " & Round(cY_mm, 2) & ") mm" & vbCrLf & _
  61. "Khoảng cách từ trục trung hòa:" & vbCrLf & _
  62. "- Tới điểm xa nhất theo trục X: " & Round(maxDistX, 2) & " mm" & vbCrLf & _
  63. "- Tới điểm xa nhất theo trục Y: " & Round(maxDistY, 2) & " mm" & vbCrLf & _
  64. "Ix: " & Round(Ix_mm4, 2) & " mm⁴" & vbCrLf & _
  65. "Iy: " & Round(Iy_mm4, 2) & " mm⁴" & vbCrLf & _
  66. "Wx: " & Round(Wx_mm3, 2) & " mm³" & vbCrLf & _
  67. "Wy: " & Round(Wy_mm3, 2) & " mm³",
  68. vbInformation, "iLogic Đặc trưng hình học:")