Home

Modify Entities
[Constructors APIs]

Collaboration diagram for Modify Entities:
Defined at <cstrapi.hxx>, SPAcstr. More...

Classes

class  chamfer_wire_options
 Set specific options for api_chamfer_wire_vertex

Limitations: Not implemented yet. More...

Functions

outcome api_accurate_bs3_approximation (FACE *face, double requested_tol, bs3_surface &fit_sur=*(bs3_surface *) NULL_REF, AcisOptions *ao=NULL)
 Recomputes the 3D B-spline surface approximation, using the newer algorithm.
outcome api_body_to_1d (BODY *body, logical fix_normals, const ENTITY_LIST &ref_faces=*(ENTITY_LIST *) NULL_REF, AcisOptions *ao=NULL)
 Converts a double-sided body to a single-sided body.
outcome api_body_to_2d (BODY *body, AcisOptions *ao=NULL)
 Converts single-sided faces to double-sided faces.
outcome api_chamfer_wire_vertex (VERTEX *ver, double offset, chamfer_wire_options *co=NULL, AcisOptions *ao=NULL)
 Chamfers a wire at a given vertex.
outcome api_enclose_void (FACE *face, REVBIT sense, logical lumps, AcisOptions *ao=NULL)
 Modifies an enclosing set of faces from void bounding to material bounding.
outcome api_fillet_vertex (VERTEX *vert, double radius, EDGE *edge1=NULL, EDGE *edge2=NULL, AcisOptions *ao=NULL)
 Fillets a wire at a given vertex.
outcome api_modify_ellipse (EDGE *ell, const SPAposition &center, const SPAunit_vector &normal, const SPAvector &major_axis, double radius_ratio, double start_angle, double end_angle, AcisOptions *ao=NULL)
 Modifies an elliptical edge.
outcome api_modify_line (EDGE *line, const SPAposition &st_pt, const SPAposition &end_pt, AcisOptions *ao=NULL)
 Modifies a linear edge to pass through two given points.
outcome api_orient_wire (COEDGE *coed, AcisOptions *ao=NULL)
 Checks the wire and reorients it to make the given coedge the starting coedge in case of good closed wire.
outcome api_reset_bs3_approximation (FACE *face, double &achieved_tol, double requested_tol, bs3_surface &fit_sur=*(bs3_surface *) NULL_REF, logical force_regeneration=FALSE, AcisOptions *ao=NULL)
 Recomputes the bs3_surface approximation, using the default algorithm.
outcome api_reverse_body (BODY *body, AcisOptions *ao=NULL)
 Reverses the orientations of all coedges in the body.
outcome api_reverse_face (FACE *&face, AcisOptions *ao=NULL)
 Reverses the sense of a face.
outcome api_reverse_wire (WIRE *wire, AcisOptions *ao=NULL)
 Reverses the direction (sense) of a wire.
outcome api_reverse_wire (ENTITY *body, AcisOptions *ao=NULL)
 Reverses the direction (sense) of a wire body.
outcome api_set_pcurve_tightness (COEDGE *coed, double tol, bs2_curve &fit_cur=*(bs2_curve *) NULL_REF, logical use_approx_surf=FALSE, logical force_regeneration=FALSE, AcisOptions *ao=NULL)
 Recalculates pcurve on a coedge so that bs2_curve has a given tolerance.
outcome api_trim_2curves (const entity_with_ray &crv1, const entity_with_ray &crv2, AcisOptions *ao=NULL)
 Trims two edges to their intersection.
outcome api_trim_chain (int num_crv, const entity_with_ray *crvs, logical close, ENTITY_LIST &trimmed_crvs, AcisOptions *ao=NULL)
 Trims a list of edges so that they form a contiguous chain.
outcome api_trim_curve (const entity_with_ray &eray1, const SPAposition *trim_pt, const entity_with_ray *eray2, AcisOptions *ao=NULL)
 Trims one end of an edge at a given position or at the intersection with another edge.
outcome api_trim_middle (const entity_with_ray &crv, const SPAposition *trim_pt1, const entity_with_ray *trimr1, const SPAposition *trim_pt2, const entity_with_ray *trimr2, EDGE *&edge, AcisOptions *ao=NULL)
 Trims the middle of an edge.

Detailed Description

Defined at <cstrapi.hxx>, SPAcstr.


Function Documentation

outcome api_accurate_bs3_approximation ( FACE face,
double  requested_tol,
bs3_surface fit_sur = *(bs3_surface *) NULL_REF,
AcisOptions ao = NULL 
)

Recomputes the 3D B-spline surface approximation, using the newer algorithm.



Role: Recomputes the 3D B-spline surface approximation (to a requested tolerance), always using the newer, more robust approach. It also removes internal double knots whenever possible. If the requested tolerance is non-positive, SPAresfit is used.

The 3D B-spline surface is returned, if requested. It is still owned by the face's surface, however.

Effect: Changes model

Journal: Not Available

Product(s): 3D ACIS Exchange, 3D Viz Exchange, 3D ACIS Modeler

Parameters:
face input spline face.
requested_tol requested fit tolerance.
fit_sur output bs3_surface.
ao ACIS options.

include <cstrapi.hxx>

outcome api_body_to_1d ( BODY body,
logical  fix_normals,
const ENTITY_LIST ref_faces = *(ENTITY_LIST *) NULL_REF,
AcisOptions ao = NULL 
)

Converts a double-sided body to a single-sided body.



Role: When fix_normals is set to FALSE, this function merely marks the faces as single-sided, without checking to see if the faces on the resulting single-sided body have consistent normal directions. For performance purposes, the user may want to use this setting when confident that no such inconsistencies exist. To guard against the creation of an invalid body; however, we recommend that this flag be set to TRUE. In that case, the user may provide a list of faces (one on each shell of the body) via the argument ref_faces, which specifies those faces whose normals are to remain unchanged if any face normals are found to have an inconsistent orientation. If this argument is not provided, or if any of the body's shells is not represented in the list, this function uses the first face on each of the unrepresented shells to determine the orientation of the result.

Note: Support for the fix_normals option does not extend to either non-manifold bodies or to non-orientable manifold sheets (for example, a Moebius strip). If this option is nevertheless used in conjunction with such objects, undesirable results can occur. In the case of non-manifold bodies, face normals may be partially adjusted; in the case of non-orientable sheets, a system error (UNSUPPORTED_TOPOLOGY) will be thrown.

Limitations: The fix_normals option is not supported for non-manifold bodies or for non-orientable sheets.

Errors: The pointer to the body is NULL, one of more of the entities in ref_faces is not a face, one or more of the faces in ref_faces is owned by another body, or two or more of the faces in ref_faces belong to the same shell.

Effect: Changes model

Journal: Available

Product(s): 3D ACIS Exchange, 3D Viz Exchange, 3D ACIS Modeler

Parameters:
body the body to be modified.
fix_normals flag to check and fix inconsistent face normals.
ref_faces optional list of faces whose normals are to remain unchanged by the operation.
ao ACIS options.

include <cstrapi.hxx>

outcome api_body_to_2d ( BODY body,
AcisOptions ao = NULL 
)

Converts single-sided faces to double-sided faces.



Role: This API function converts every single-sided face in the given body into a double-sided face; that is, a sheet face. Each shell will be owned by a separate lump.

Effect: Changes model

Journal: Available

Product(s): 3D ACIS Exchange, 3D Viz Exchange, 3D ACIS Modeler

Parameters:
body body to be converted.
ao ACIS options.

include <cstrapi.hxx>

outcome api_chamfer_wire_vertex ( VERTEX ver,
double  offset,
chamfer_wire_options co = NULL,
AcisOptions ao = NULL 
)

Chamfers a wire at a given vertex.



Role: Replaces a vertex with a linear edge at a given offset. The offset is calculated relative to the incoming pair of edges, not the vertex. The new edge and vertices will meet the two edges that are connected to the given vertex.

Limitations: The vertex is connected to two edges.

The vertex is not smooth, i.e. the tangential directions of the edges are different.

Different offsets from the vertex are not supported.

The operation should be performed for one vertex at a time and only that vertex will be removed.

wire-body self-intersection is not detected.

Effect: Changes model

Journal: Available

Product(s): 3D ACIS Exchange, 3D Viz Exchange, 3D ACIS Modeler

Parameters:
ver vertex to chamfer.
offset offset of the chamfer.
co for future use, pass NULL if ao is passed.
ao ACIS options.

include <cstrapi.hxx>

outcome api_enclose_void ( FACE face,
REVBIT  sense,
logical  lumps,
AcisOptions ao = NULL 
)

Modifies an enclosing set of faces from void bounding to material bounding.



Role: This API function walks outward from the face along the closest radial enclosing faces until a volume is enclosed or NULL coedges are encountered. Changes the containment data on the faces that are detected so they no longer contain a void. A double-sided, OUTSIDE face is changed to single-sided (unless it is detected twice in the search) and a single-sided face is changed to double-sided, INSIDE. If the lumps argument is TRUE, search for lumps that contain or are contained by the face group detected, and change the face containment information to reflect a filling of the void. Does not change any lumps that are not directly contained or containing; i.e., are walled-off from the void, containment-wise, by another lump. Merges any changed lumps into the original lump. Requires no action if the side of the face given is already a material containing.

Errors: Pointer to face is NULL or not to a FACE.

Effect: Changes model

Journal: Not Available

Product(s): 3D ACIS Exchange, 3D Viz Exchange, 3D ACIS Modeler

Parameters:
face input face.
sense inside/outside sense with respect to the input face.
lumps search for lumps if TRUE.
ao ACIS options.

include <cstrapi.hxx>

outcome api_fillet_vertex ( VERTEX vert,
double  radius,
EDGE edge1 = NULL,
EDGE edge2 = NULL,
AcisOptions ao = NULL 
)

Fillets a wire at a given vertex.



Effect: Changes model

Journal: Available

Product(s): 3D ACIS Exchange, 3D Viz Exchange, 3D ACIS Modeler

Parameters:
vert vertex to fillet at.
radius radius of fillet.
edge1 for future use.
edge2 for future use.
ao ACIS options.

include <cstrapi.hxx>

outcome api_modify_ellipse ( EDGE ell,
const SPAposition center,
const SPAunit_vector normal,
const SPAvector major_axis,
double  radius_ratio,
double  start_angle,
double  end_angle,
AcisOptions ao = NULL 
)

Modifies an elliptical edge.



Role: Modifies an elliptical edge according to the given ellipse parameters. This involves changing the positions of the edge vertices as well as modifying the curve, which serves as the edge geometry.

Errors: The entity is not a elliptical edge.  The entity is not top level, i.e., it has an owner.


Effect: Changes model

Journal: Not Available

Product(s): 3D ACIS Exchange, 3D Viz Exchange, 3D ACIS Modeler

Parameters:
ell elliptical edge to modify.
center new center.
normal new normal.
major_axis new major axis.
radius_ratio radius ratio.
start_angle new start angle in radians.
end_angle new end angle in radians.
ao ACIS options.

include <cstrapi.hxx>

outcome api_modify_line ( EDGE line,
const SPAposition st_pt,
const SPAposition end_pt,
AcisOptions ao = NULL 
)

Modifies a linear edge to pass through two given points.



Role: Modifies a linear edge to pass through two given end points. This involves changing the positions of the two edge vertices as well as modifying the straight line, which serves as the edge geometry.

Errors: The entity is not a linear edge.  The entity is not top level, i.e., it has an owner.


Effect: Changes model

Journal: Not Available

Product(s): 3D ACIS Exchange, 3D Viz Exchange, 3D ACIS Modeler

Parameters:
line linear edge to modify.
st_pt new start position.
end_pt new end position.
ao ACIS options.

include <cstrapi.hxx>

outcome api_orient_wire ( COEDGE coed,
AcisOptions ao = NULL 
)

Checks the wire and reorients it to make the given coedge the starting coedge in case of good closed wire.



Role: Checks and orients wire from given coedge. For good open wires, nothing is modified. In case of good closed wire, then the wire is oriented so that the given coedge becomes the starting coedge. If the wire is branched or has bad start/end topology connections, appropriate error messages are thrown. However, the bad wire does not get fixed.

Limitations: For wires with branches or bad start/end topology connections, nothing is done to modify (fix) the wire.

Errors: If the wire is branched or has bad start/end topology connections.

Effect: Good closed wires are oriented such that given coedge is made the start pointer.

Journal: Available

Product(s): 3D ACIS Exchange, 3D Viz Exchange, 3D ACIS Modeler

Parameters:
coed the coedge to be checked.
ao ACIS options.

include <cstrapi.hxx>

outcome api_reset_bs3_approximation ( FACE face,
double &  achieved_tol,
double  requested_tol,
bs3_surface fit_sur = *(bs3_surface *) NULL_REF,
logical  force_regeneration = FALSE,
AcisOptions ao = NULL 
)

Recomputes the bs3_surface approximation, using the default algorithm.



Role: Recomputes the bs3_surface approximation (to a requested tolerance) using the default method for the particular spl_sur on the spline of the face. If a non-negative requested_tol is supplied, the new bs3_surface approximation will be computed to that fit tolerance, otherwise a default tolerance is used if there is not already an approximation there.

The fit tolerance of the bs3_surface approximation is returned. Also, the bs3_surface is returned, if requested. It is still owned by the face's surface, however. The achieved_tol is returned as -1 either if it failed to refit the entire B-spline to the requested tolerance, or if the fit was already good enough. The face's SURFACE is replaced if the B-spline was successfully refitted. This is so that applications can roll back to the state before the improved fit was created.

Effect: Changes model

Journal: Not Available

Product(s): 3D ACIS Exchange, 3D Viz Exchange, 3D ACIS Modeler

Parameters:
face input spline face.
achieved_tol achieved fit tolerance.
requested_tol requested fit tolerance.
fit_sur output bs3_surface.
force_regeneration always recompute.
ao ACIS options.

include <cstrapi.hxx>

outcome api_reverse_body ( BODY body,
AcisOptions ao = NULL 
)

Reverses the orientations of all coedges in the body.



Role: Also reverses face orientations and the orientation of loops within the faces.

Errors: Pointer to body is NULL or not to a BODY.

Effect: Changes model

Journal: Available

Product(s): 3D ACIS Exchange, 3D Viz Exchange, 3D ACIS Modeler

Parameters:
body body to be reversed.
ao ACIS options.

include <cstrapi.hxx>

outcome api_reverse_face ( FACE *&  face,
AcisOptions ao = NULL 
)

Reverses the sense of a face.



Role: This API function reverses the sense of a face; i.e., makes the face material void (flips the normal). Also, alters the senses of the coedges to avoid changing the shape of the face.

Errors: Pointer to face is NULL or not to a FACE.

Limitations: The function does not check to see if the face belongs to a solid, nor does it compensate for side effects caused by reversal of the face. The user must ensure that the function is called only for independent faces.

Effect: Changes model

Journal: Available

Product(s): 3D ACIS Exchange, 3D Viz Exchange, 3D ACIS Modeler

Parameters:
face same face is modified.
ao ACIS options.

include <cstrapi.hxx>

outcome api_reverse_wire ( WIRE wire,
AcisOptions ao = NULL 
)

Reverses the direction (sense) of a wire.



Role: This API function reverses the sense of a wire by negating the sense of each coedge. If the wire has no branches or loops, and the first coedge of the wire was the start of the chain of coedges, then the first coedge of the reversed wire will be the new start of the chain of coedges. Otherwise, the wire's first coedge will not be changed.

Errors: Entity NULL or not a wire.

Effect: Changes model

Journal: Available

Product(s): 3D ACIS Exchange, 3D Viz Exchange, 3D ACIS Modeler

Parameters:
wire wire to reverse.
ao ACIS options.

include <cstrapi.hxx>

outcome api_reverse_wire ( ENTITY body,
AcisOptions ao = NULL 
)

Reverses the direction (sense) of a wire body.



Role: This API function reverses the sense of a wire body by negating the sense of each coedge of each wire. If a wire has no branches or loops, and the first coedge of the wire was the start of the chain of coedges, then the first coedge of the reversed wire will be the new start of the chain of coedges. Otherwise, the wire's first coedge will not be changed.

Errors: Entity NULL or not a wire.

Effect: Changes model

Journal: Available

Product(s): 3D ACIS Exchange, 3D Viz Exchange, 3D ACIS Modeler

Parameters:
body wire body to reverse.
ao ACIS options.

include <cstrapi.hxx>

outcome api_set_pcurve_tightness ( COEDGE coed,
double  tol,
bs2_curve fit_cur = *(bs2_curve *) NULL_REF,
logical  use_approx_surf = FALSE,
logical  force_regeneration = FALSE,
AcisOptions ao = NULL 
)

Recalculates pcurve on a coedge so that bs2_curve has a given tolerance.



Role: Recalculates pcurve (or adds one if not present) on a given coedge so that the pcurve's bs2_curve lies within a specified fit tolerance. It is the caller's responsibility to delete the requested bs2_curve. When the logical force_regeneration is TRUE, a new pcurve will be created even when the fit tolerance of the original pcurve is zero. Otherwise, we assume pcurves with fit tolerance of zero are precise.

Effect: Changes model

Journal: Not Available

Product(s): 3D ACIS Exchange, 3D Viz Exchange, 3D ACIS Modeler

Parameters:
coed input coedge.
tol fit tolerance.
fit_cur output bs2_curve.
use_approx_surf use surface approx.
force_regeneration always recompute.
ao ACIS options.

include <cstrapi.hxx>

outcome api_trim_2curves ( const entity_with_ray crv1,
const entity_with_ray crv2,
AcisOptions ao = NULL 
)

Trims two edges to their intersection.



Role: This API function trims the two edges, crv1 and crv2, to the intersection that is the closest to the average of the two rays.

Effect: Changes model

Journal: Available

Product(s): 3D ACIS Exchange, 3D Viz Exchange, 3D ACIS Modeler

Parameters:
crv1 edge to trim and a position on the part to keep.
crv2 edge to trim and a position on the part to keep.
ao ACIS options.

include <cstrapi.hxx>

outcome api_trim_chain ( int  num_crv,
const entity_with_ray crvs,
logical  close,
ENTITY_LIST trimmed_crvs,
AcisOptions ao = NULL 
)

Trims a list of edges so that they form a contiguous chain.



Role: This API function adds all edges in the input list to the entity list trimmed_crvs. If an edge appears in the input list more than once, it is copied and the copy is added to trimmed_crvs. Each pair of edges is then trimmed using api_trim_2curves. If close is TRUE, the first and last edges are also trimmed.

Effect: Changes model

Journal: Available

Product(s): 3D ACIS Exchange, 3D Viz Exchange, 3D ACIS Modeler

Parameters:
num_crv number of edges.
crvs array of edges.
close whether to form a closed chain or not.
trimmed_crvs list of trimmed edges returned.
ao ACIS options.

include <cstrapi.hxx>

outcome api_trim_curve ( const entity_with_ray eray1,
const SPAposition trim_pt,
const entity_with_ray eray2,
AcisOptions ao = NULL 
)

Trims one end of an edge at a given position or at the intersection with another edge.



Role: The edge is trimmed either at a given position or at the intersection with another edge. To trim to a position, specify a position in trim_pt and NULL for eray2. The edge is trimmed to the normal projection of the position onto the edge's curve. To trim to the intersection with another edge, specify NULL for trim_pt and an entity_with_ray for eray2. The edge is trimmed to the intersection with the edge given in eray2 that is closest to the ray given in eray2.

Effect: Changes model

Journal: Available

Product(s): 3D ACIS Exchange, 3D Viz Exchange, 3D ACIS Modeler

Parameters:
eray1 edge to trim and a position on the part to keep.
trim_pt position to trim to or NULL.
eray2 edge to trim to or NULL returned.
ao ACIS options.

include <cstrapi.hxx>

outcome api_trim_middle ( const entity_with_ray crv,
const SPAposition trim_pt1,
const entity_with_ray trimr1,
const SPAposition trim_pt2,
const entity_with_ray trimr2,
EDGE *&  edge,
AcisOptions ao = NULL 
)

Trims the middle of an edge.



Role: Using the trim data, this API function computes two trim points on the edge to be trimmed. If trim_pt1 or trim_pt2 is non-NULL, the corresponding trim point is the normal projection of the position on the edge's curve; otherwise, the trim point is the intersection of the edges closest to the ray associated with trim_r1 or trim_r2. The action performed depends on whether the edge is closed and periodic.

For a closed periodic edge, only a single edge results from the trim. The part of the edge on which the pick was made is removed. The edge is NULL.

For a non-periodic edge, the part of the edge between the trim points is removed. If the trim points are both on the interior of the edge; i.e., they are not the start or end points, the trim results in two edges. The original edge is modified as the first edge, and the second edge is returned in edge. If one of the trim points is not in the interior of the edge, the original edge is modified, and edge is NULL.

Effect: Changes model

Journal: Available

Product(s): 3D ACIS Exchange, 3D Viz Exchange, 3D ACIS Modeler

Parameters:
crv edge to trim and a position on the part to keep.
trim_pt1 position to trim to or NULL.
trimr1 edge to trim to or NULL.
trim_pt2 position to trim to or NULL.
trimr2 edge to trim to or NULL.
edge newly created edge or NULL returned.
ao ACIS options.

include <cstrapi.hxx>