diff --git a/main.py b/main.py
index 421af8466c169ee345cd60ad293bed629c890a95..1798bc5b55accc7a04fbca13bae03988508aa66d 100644
--- a/main.py
+++ b/main.py
@@ -6,18 +6,20 @@ from prepare_data import reform_data
 #from bbox_2d import generate_2d_bbox
 #from instance_mask import generate_instance_mask
 from fps_alg import apply_fps
-from bbox_3d import generate_3d_bbox
+from bbox_3d import get_3D_bbox
 from compute_features import process_compute
+from utils import compute_categories_id, compute_id_good_occ
 import shutil
 import open3d as o3d
 # Import the library
 import argparse
+from scipy.spatial import distance
 
 def generate_folders(name, list_categories):
     is_exist = os.path.exists(name)
     if not is_exist:
         os.mkdir(name)
-    folders = ["RGB", "RGB_Gen", "RGB_resized", "Meta_Gen", "Depth", "Mask", "Meta", "Pose", "Bbox_2d", "Bbox_2d_loose", "Instance_Segmentation", "Semantic_Segmentation", "Instance_Mask", "Instance_Mask_resized", "Occlusion", "Models", "Pose_transformed", "Bbox", "FPS", "FPS_resized"]
+    folders = ["RGB", "RGB_Gen", "RGB_resized", "Meta_Gen", "Depth", "Mask", "Meta", "Pose", "Bbox_2d", "Bbox_2d_loose", "Bbox_3d", "Instance_Segmentation", "Semantic_Segmentation", "Instance_Mask", "Instance_Mask_resized", "Occlusion", "Models", "Pose_transformed", "Bbox", "FPS", "FPS_resized"]
     for f in folders:
         is_exist = os.path.exists(f"{name}/{f}")
         if not is_exist:
@@ -29,6 +31,22 @@ def generate_folders(name, list_categories):
                     if not is_exist2:
                         os.makedirs(f"{name}/Generated/{cat}/{f}")
 
+
+def calc_pts_diameter2(pts):
+    """Calculates the diameter of a set of 3D points (i.e. the maximum distance
+  between any two points in the set). Faster but requires more memory than
+  calc_pts_diameter.
+  :param pts: nx3 ndarray with 3D points.
+  :return: The calculated diameter.
+  """
+    dists = distance.cdist(pts, pts, 'euclidean')
+    diameter = np.max(dists)
+    return diameter
+
+
+
+
+
 if __name__ == '__main__':
     
     # Create the parser
@@ -58,22 +76,10 @@ if __name__ == '__main__':
     #Nb_world = 2
 
     generate_folders(dataset_name, list_categories)
-    for cat in list_categories:
-        src_bbox = f"Models/{cat}/{cat.lower()}.ply"
-        dst_bbox = f"{dataset_name}/Generated/{cat}/{cat.lower()}.ply"
-        shutil.copy(src_bbox, dst_bbox)
-
-    for categories in list_categories:
-        point_cloud = f'{dataset_name}/Generated/{categories}/{categories.lower()}.ply'
-        pcd = o3d.io.read_point_cloud(point_cloud)
-
-        #print("pcd", pcd)
-
-        fps_points = apply_fps(pcd, 8)
-        #print(fps_points)
-        np.savetxt(f'{dataset_name}/Generated/{categories}/{categories}_fps_3d.txt', fps_points)
-
-
+    # for cat in list_categories:
+    #     src_bbox = f"Models/{cat}/{cat.lower()}.ply"
+    #     dst_bbox = f"{dataset_name}/Generated/{cat}/{cat.lower()}.ply"
+    #     shutil.copy(src_bbox, dst_bbox)
 
 
 
@@ -98,6 +104,45 @@ if __name__ == '__main__':
 
     reform_data(dataset_src, dataset_name, dataset_type, Nb_camera, args.World_begin, args.Nb_worlds)
 
+
+    for categories in list_categories:
+        point_cloud = f"Models/{categories}/{categories.lower()}.ply"
+        pcd = o3d.io.read_point_cloud(point_cloud)
+
+        #print("pcd", pcd)
+
+        fps_points = apply_fps(pcd, 8)
+        #print(fps_points)
+        np.savetxt(f'{dataset_name}/Generated/{categories}/{categories}_fps_3d.txt', fps_points)
+
+        #point_cloud = f'/home/mahmoud/PycharmProjects/data/GUIMOD_low/Models/{obj}/{obj.lower()}.ply'
+        #pcd = o3d.io.read_point_cloud(point_cloud)
+        point_cloud_in_numpy = np.asarray(pcd.points)
+        dim = calc_pts_diameter2(point_cloud_in_numpy) * 100
+
+        print(dim)
+
+        np.savetxt(f'{dataset_name}/Generated/{categories}/{categories}_diameter.txt', np.array([dim]))
+
+
+        # catergories_instance_array_id_to_cat, catergories_instance_array_cat_to_id, catergories_label_to_id = compute_categories_id(dataset_name, 1)
+        # print(f'{dataset_name}/Bbox_3d/1.json')
+        # with open(f"{dataset_name}/Bbox_3d/1.json", 'r') as f:
+        #     data_Bbox_3d = json.load(f)
+
+        # catergories_occ_array = compute_id_good_occ(dataset_name, 1, catergories_instance_array_id_to_cat, catergories_instance_array_cat_to_id, 1)
+
+        # print(catergories_occ_array)
+        # for k in range(len(data_Bbox_3d)):
+
+        #     if data_Bbox_3d[k]['id'] in catergories_occ_array[categories]:
+        #         size_bb = data_Bbox_3d[k]["size"]
+        #         ext = [x / 2 for x in size_bb]
+        #         bbox = get_3D_bbox(ext)
+        #         np.savetxt(f'{dataset_name}/Generated/{categories}/{categories}_bbox_3d.txt', bbox)  # save
+        #         break
+
+
     process_compute(dataset_name, camera, new_camera, new_size, Nb_camera, args.World_begin, args.Nb_worlds, list_categories, occ_target, True)
     #transform_pose(dataset_name, Nb_camera, Nb_world, list_categories, occ_target)
     #generate_2d_bbox(dataset_name, Nb_camera, Nb_world, list_categories, occ_target)