12-08-2016 08:52 AM
I have the object read from SAT file into several surfaces. In the attached figure, there is one surface (in red) created by trimming one surface by other two. I would like to extract the NURBS information of the intercepted one. Is there a method in ACIS exchange API to re-approximate the red surface with specified tolerance?
12-15-2016 06:50 AM
Do you mean you want to trim the surface by intersecting with others, or only re-approximate a complete surface?
It may be easier to answer your question if you also post the .sat file with the relevant entities in it.
12-15-2016 07:29 AM
In fact, the trimmed surface is more accurate. But I cannot extract the complete NURBS information (knots, control points, ...) from those. The best solution working for me is to reconstruct/re-approximate the surface by a NURBS one. In the attached file you can fine the SAT file I used to generate the figure.
12-15-2016 09:56 AM
I think you mean that you want the surface to be trimmed to match the face boundaries. If that is correct, then you probably want the trim_face() funtion.
In acis3dt, try this:
(define fl (entity:faces (car (part:entities))))
(bool:trim-faces (list-ref fl 0 ) "splines")
(bool:trim-faces (list-ref fl 1 ) "splines")
(bool:trim-faces (list-ref fl 2 ) "splines")
(bool:trim-faces (list-ref fl 3 ) "splines")
(bool:trim-faces (list-ref fl 4 ) "splines")
(bool:trim-faces (list-ref fl 5 ) "splines")
Then you can see how the surfaces get trimmed to match the face boundaries.
12-16-2016 02:55 AM
Thank you very much for the script. I saw in the result, the bottom surface is not trimmed correctly, or it's just display artifact? Can we dump the knots & control points of that surface in Scheme?
12-16-2016 08:54 AM
The surface is trimmed to the face boundary as tightly as possible (which means a rectangle in UV space) given the nurbs definition. To get the surface to exactly match the face boundary requires not trimming but creating a completely new surface with a different nurbs definition. 3D ACIS Modeler has surface construction tools like covering or skinning, but those are not available in ACIS Exchange.
The only possibility I can think for you would be to sample the face along a regular grid in UV space, then use construct a new face/surface using api_face_spl_apprx() or similar. Check the "Make a face/surface" section of this page for relevant APIs, then check if they are available in ACIS Exchange (listed in the "Products" entry of the reference doc for each API). Note that your new surface may not have the identical shape as the original, but you shouuld be able to get pretty close.