11-02-2007 03:33 AM
I receive this image after all manipulations with entities:
- coedge1: sense 0, linked with edge, partner with coedge2
- coedge2: sense 1, linked with edge, partner with coedge1
- edge: sense 0, linked with coedge 1. Bounding box of edge
found from the start and end points of intcurve underlying it.
This bound is using with loop also.
... and, as result I have Error: error in face loop (No periphery loop)
Tell me please about meaning of this error in my situation. It would
be nice if anyone show me how to make this bunch correctly.
11-19-2007 01:51 PM
11-21-2007 03:24 AM - edited 11-21-2007 03:26 AM
Yes, I'm trying to create topology by myself. It's very difficult operation, but I need to do that =)
At first, I want to create correct body represents a sphere. I have sperical surface equation (bs3_surface) and two parameter curves (coedges) as the input data.
I have a nice result with create topology like this: surface + coedge1<->edge1 + coedge2<->edge2, this body looks like sphere but it's not solid and I can't to do any boolean operations with it.
As next step I want to receive a body with coedge1<->edge<->coedge2.
Here is parts of my code:
1 - Create SURFACE with equation I have. Ok...
2 - Create PCURVE and then receive EDGE and COEDGE. Ok...
EDGE *edge = NULL;
intcurve *intcurv = ACIS_NEW intcurve(NULL, -1.0, surf->equation(), *(surface const*)NULL_REF, bs2curv, NULL, *(SPAinterval const*)NULL_REF, TRUE);
first_coedge = ACIS_NEW COEDGE(edge, FALSE, NULL, NULL);
3 - Trying to create second PCURVE and COEDGE pair:
// ... here I create PCURVE ... Ok...
coedge = ACIS_NEW COEDGE(first_coedge->edge(), TRUE, first_coedge, first_coedge); // take edge from first_coedge, set first_coedge as previous and next
coedge->set_geometry(pcrv); // give new PCURVE to coedge
pcrv->add_owner(coedge); // and set owner to PCURVE
coedge->set_partner(first_coedge); // set partner coedges
coedge->set_sense(!first_coedge->sense()); // set senses
ACISRETURN(coedge); // and returns new coedge
4 - Trying to create BODY from COEDGEs (in coedges_list) and SURFACE
LOOP *new_loop = NULL;
if (coedges_count > 0)
new_loop = ACIS_NEW LOOP(coedge_list, NULL);
for (n = 0; n < coedges_count; n++)
FACE *new_face = NULL;
if (coedges_count > 0)
new_face = ACIS_NEW FACE( new_loop, NULL, surf, FALSE );
new_face = ACIS_NEW FACE();
EDGE *edge = new_loop->start()->edge();
SPAbox *bound_box = edge->bound();
// make new body
SHELL *new_shell = ACIS_NEW SHELL( new_face, NULL, NULL );
LUMP *new_lump = ACIS_NEW LUMP( new_shell, NULL );
BODY *body = ACIS_NEW BODY(new_lump);
Thanks for any help!
Message Edited by Igorunius on 11-21-2007 02:26 PM