Hi, Charles, thanks for your attention and patience!
>
> Hi Dalton,
>
> Sorry my github example wasn't clear. I'm not sure exactly what you sent
to
> TopoDS_face and BRepBuilderAPI_MakeFace, but I got it to work. I
> used the BSplineSurface in src/examples/Geometry/geometry_demos.py and
> successfully wrote a STEP file. My changes have a #CSS comment nearby.
> See below, particularly the topodsface line.
>
> I suspect you didn't use the .GetHandle() method or the .Shape() method,
> but I can't be sure without seeing your code.
>
> - Charles
I had already done almost everything you told me before you wrote. But,
even with the "add-ons", I still can't get it to work.
The piece of my code that is intend to write the STEP file is below. I
tried to explain/comment at most, to make it as clear as possible.
def arquivostep(melhor, parordem, arquivosaida):
### BEGIN: allocating variables
uknots = melhor[2]
vknots = melhor[3]
pesos = melhor[4]
ptosctrl = melhor[5]
# Defining the NURBS orders
k = int(parordem[0])
l = int(parordem[1])
# Casting uknots from np.array to TColStd_Array1OfReal
aux = np.unique(uknots)
tam = np.size(aux)
stepuknots = TColStd_Array1OfReal(0,tam-1)
for i in range(0,tam):
stepuknots.SetValue(i, aux[i])
# Defining UMults
stepumults = TColStd_Array1OfInteger(0,tam-1)
stepumults.SetValue(0,k)
stepumults.SetValue(tam-1,k)
for i in range(1,tam-1):
stepumults.SetValue(i,1)
# Casting vknots from np.array to TColStd_Array1OfReal
aux = np.unique(vknots)
tam = np.size(aux)
stepvknots = TColStd_Array1OfReal(0,tam-1)
for i in range(0,tam):
stepvknots.SetValue(i, aux[i])
# Defining VMults
stepvmults = TColStd_Array1OfInteger(0,tam-1)
stepvmults.SetValue(0,l)
stepvmults.SetValue(tam-1,l)
for i in range(1,tam-1):
stepvmults.SetValue(i,1)
# np.shape(pesos) = np.shape(ptosctrl)
[p,q] = np.shape(pesos)
# Casting pesos from np.array to TColStd_Array2OfReal
steppesos = TColStd_Array2OfReal(0,p-1,0,q-1)
for j in range(0,q):
for i in range(0,p):
steppesos.SetValue(i, j, pesos[i][j])
# Casting ptosctrl from np.array to TColgp_Array2OfPnt
stepptosctrl = TColgp_Array2OfPnt(0,p-1,0,q-1)
for j in range(0,q):
for i in range(0,p):
stepptosctrl.SetValue(i, j, gp_Pnt(ptosctrl[i][j]
[0], ptosctrl[i][j][1], ptosctrl[i][j][2]))
### END: allocating variables
### BEGIN: constructing NURBS surface
stepnurbs = Geom_BSplineSurface(stepptosctrl, steppesos, stepuknots,
stepvknots, stepumults, stepvmults, k-1, l-1, 0, 0)
TopoDS_Face(BRepBuilderAPI_MakeFace(stepnurbs.GetHandle(), 1e-
6).Shape())
### END: constructing NURBS surface
### BEGIN: writing STEP file
stepcontroller = STEPControl_Controller()
stepcontroller.Init()
stepwriter = STEPControl_Writer()
stepwriter.Transfer(steptopo, STEPControl_AsIs)
stepwriter.Write(arquivosaida)
### END: writing STEP file
Even then, I get the error
TypeError: in method 'new_TopoDS_Face', argument 1 of type 'TopoDS_Face
const'
I guess it is a detail my noobie eyes cannot figure out, but for you who
are experient it may be easy. :)
BR,
Dalton
_______________________________________________
Pythonocc-users mailing list
[email protected]
https://mail.gna.org/listinfo/pythonocc-users