比方说你得到了一条类型为TopoDS_Edge的边,记为aEdge。你先把它转换为Geom_Curve,这一步可以参考文章https://blog.csdn.net/reyyy/article/details/107318800。然后从Geom_Curve向下类型转换为Geom_Circle,看看成不成功,成功的话转换为Geom_Circle,然后由Geom_Circle的方法Circ得到gp_Circ类型的圆,然后可以由gp_Circ类型的方法Radius和Location可以得到圆的半径和圆心。下面附上代码。
possible_circle = BRep_Tool.Curve(aEdge)[0] # 先把它转换为Geom_Curve
# print("possible_circle: ", possible_circle)
if not Geom_Circle.DownCast(possible_circle):
print("not Geom_Circle")
else:
possible_circle = Geom_Circle.DownCast(possible_circle) # 从Geom_Curve向下类型转换为Geom_Circle
circle_ = possible_circle.Circ() # 得到gp_Circ类型的圆
loc = circle_.Location() # 圆心, gp_Pnt 类型
radius = circle_.Radius() # 半径