With ARX, you can use Brep or AssocPersSubentIdPE, the later is a bit simpler to use.
 
	AssocPersSubentIdPE will get you the faces, edges, and vertices of the solid. In the case of a cuboid, simply get all the edges and map them to a vertex
 
	In this example each vertex should be mapped to three edges. You could then build a transformation matrix so you can accurately compute the dimensions.
 
	 
 
	It starts to get a lot harder with more complex shapes. There’s a few threads at the swamp discussing ideas how to work with I-beams, how to find the edge the run along the length
 
	 
 
	for reference
 
import traceback
from pyrx import Ap, Ax, Ge, Ed, Db, command
from collections import defaultdict
@command
def doit():
    ps, id, pnt = Ed.Editor.entSel("\nPick it: \n", Db.Solid3d.desc())
    solid = Db.Solid3d(id)
    pe = Db.AssocPersSubentIdPE(solid.queryX(Db.AssocPersSubentIdPE.desc()))
    edge_map = defaultdict(list[Ge.Curve3d])
    for vrt in pe.getAllSubentities(solid, Db.SubentType.kVertexSubentType):
        edge_map[pe.getVertexSubentityGeometry(solid, vrt)]
        
    for edge in pe.getAllSubentities(solid, Db.SubentType.kEdgeSubentType):
        crv = pe.getEdgeSubentityGeometry(solid, edge)
        edge_map[crv.getStartPoint()].append(crv)
        edge_map[crv.getEndPoint()].append(crv)
        
    for k, v in edge_map.items():
        for _crv in v:
            Ed.Core.grDraw(_crv.getStartPoint(), _crv.getEndPoint(), 1, 0)
        return