diff --git a/AVVR/Assets/_Scripts/MeshDimension/MeshDimensionCalculator.cs b/AVVR/Assets/_Scripts/MeshDimension/MeshDimensionCalculator.cs
index 31920cbdb4d3303af9defcc22516e9647139a4ea..fc722efc7b0ee419b1048a370a69ac20306490de 100644
--- a/AVVR/Assets/_Scripts/MeshDimension/MeshDimensionCalculator.cs
+++ b/AVVR/Assets/_Scripts/MeshDimension/MeshDimensionCalculator.cs
@@ -142,6 +142,37 @@ public static class MeshDimensionCalculatorLogic
         targetObject.transform.localScale = Vector3.one;
         Debug.Log("Target object scale has been reset to (1, 1, 1).");
     }
+
+    public static Vector3 CalculateScaleFactorsForTargetDimensions(Vector3 currentDimensions, Vector3 targetDimensions)
+    {
+        if (currentDimensions == Vector3.zero)
+        {
+            Debug.LogError("Current dimensions are zero. Please calculate dimensions first!");
+            return Vector3.one;
+        }
+
+        return new Vector3(
+            targetDimensions.x / currentDimensions.x,
+            targetDimensions.y / currentDimensions.y,
+            targetDimensions.z / currentDimensions.z
+        );
+    }
+
+    public static void ScaleToTargetDimensions(GameObject targetObject, Vector3 currentDimensions, Vector3 targetDimensions)
+    {
+        if (targetObject == null)
+        {
+            Debug.LogError("Target object is not assigned!");
+            return;
+        }
+
+        Vector3 scaleFactors = CalculateScaleFactorsForTargetDimensions(currentDimensions, targetDimensions);
+        Undo.RecordObject(targetObject.transform, "Scale To Target Dimensions");
+        Vector3 currentScale = targetObject.transform.localScale;
+        Vector3 newScale = Vector3.Scale(currentScale, scaleFactors);
+        targetObject.transform.localScale = newScale;
+        Debug.Log($"Scaled object to target dimensions. New scale: {newScale}");
+    }
 }
 
 // MonoBehaviour Component
@@ -150,6 +181,7 @@ public class MeshDimensionCalculator : MonoBehaviour
     public GameObject targetObject;
     private DimensionResults results;
 
+    [SerializeField] private Vector3 targetDimensions = Vector3.one;
     [SerializeField] private Vector3 scaleFactors = Vector3.one;
     [SerializeField] private float uniformScaleFactor = 1f;
 
@@ -187,6 +219,17 @@ public class MeshDimensionCalculator : MonoBehaviour
     {
         MeshDimensionCalculatorLogic.ResetScale(targetObject);
     }
+
+    public void ScaleToTargetDimensions()
+    {
+        if (results == null || results.dimensions == Vector3.zero)
+        {
+            Debug.LogWarning("Please calculate dimensions first!");
+            return;
+        }
+
+        MeshDimensionCalculatorLogic.ScaleToTargetDimensions(targetObject, results.dimensions, targetDimensions);
+    }
 }
 
 // Inspector UI for the MonoBehaviour component
@@ -194,12 +237,14 @@ public class MeshDimensionCalculator : MonoBehaviour
 public class MeshDimensionCalculatorEditor : Editor
 {
     SerializedProperty targetObjectProperty;
+    SerializedProperty targetDimensionsProperty;
     SerializedProperty scaleFactorsProperty;
     SerializedProperty uniformScaleFactorProperty;
 
     private void OnEnable()
     {
         targetObjectProperty = serializedObject.FindProperty("targetObject");
+        targetDimensionsProperty = serializedObject.FindProperty("targetDimensions");
         scaleFactorsProperty = serializedObject.FindProperty("scaleFactors");
         uniformScaleFactorProperty = serializedObject.FindProperty("uniformScaleFactor");
     }
@@ -227,6 +272,15 @@ public class MeshDimensionCalculatorEditor : Editor
             calculator.ResetFloorToZero();
         }
 
+        EditorGUILayout.Space();
+        EditorGUILayout.LabelField("Target Dimensions", EditorStyles.boldLabel);
+        EditorGUILayout.PropertyField(targetDimensionsProperty, new GUIContent("Target Dimensions (X, Y, Z)"));
+        
+        if (GUILayout.Button("Scale To Target Dimensions"))
+        {
+            calculator.ScaleToTargetDimensions();
+        }
+
         EditorGUILayout.Space();
         EditorGUILayout.LabelField("Scaling Options", EditorStyles.boldLabel);
 
@@ -260,6 +314,7 @@ public class MeshDimensionCalculatorWindow : EditorWindow
 {
     private GameObject targetObject;
     private DimensionResults results;
+    private Vector3 targetDimensions = Vector3.one;
     private Vector3 scaleFactors = Vector3.one;
     private float uniformScaleFactor = 1f;
 
@@ -301,6 +356,22 @@ public class MeshDimensionCalculatorWindow : EditorWindow
             }
         }
 
+        EditorGUILayout.Space();
+        EditorGUILayout.LabelField("Target Dimensions", EditorStyles.boldLabel);
+        
+        targetDimensions = EditorGUILayout.Vector3Field("Target Dimensions (X, Y, Z)", targetDimensions);
+        if (GUILayout.Button("Scale To Target Dimensions"))
+        {
+            if (results != null)
+            {
+                MeshDimensionCalculatorLogic.ScaleToTargetDimensions(targetObject, results.dimensions, targetDimensions);
+            }
+            else
+            {
+                EditorUtility.DisplayDialog("Error", "Please calculate dimensions first!", "OK");
+            }
+        }
+
         EditorGUILayout.Space();
         EditorGUILayout.LabelField("Scaling Options", EditorStyles.boldLabel);