cgma
|
#include "PartitionEngine.hpp"
#include "CompositeEngine.hpp"
#include "SubCurve.hpp"
#include "SubSurface.hpp"
#include "SegmentedCurve.hpp"
#include "PartitionPoint.hpp"
#include "PartitionCoEdge.hpp"
#include "PartitionLoop.hpp"
#include "PartitionSurface.hpp"
#include "PartitionLump.hpp"
#include "PartitionBody.hpp"
#include "PartPTCurve.hpp"
#include "PartitionShell.hpp"
#include "BodySM.hpp"
#include "GMem.hpp"
#include "GeometryQueryEngine.hpp"
#include "GeometryModifyEngine.hpp"
#include "GeometryModifyTool.hpp"
#include "VGLoopTool.hpp"
#include "FacetProjectTool.hpp"
#include "CubitFacetData.hpp"
#include "CubitFacetEdgeData.hpp"
#include "CubitPointData.hpp"
#include "TDVGFacetOwner.hpp"
#include "TDVGFacetSplit.hpp"
#include "FacetEvalTool.hpp"
#include "FacetDataUtil.hpp"
#include "PartSurfFacetTool.hpp"
#include "PartitionTool.hpp"
#include "CompositeSurface.hpp"
#include "CompositePoint.hpp"
#include "CompositeCurve.hpp"
#include "PartitionLumpImprint.hpp"
#include "GfxDebug.hpp"
#include "BridgeManager.hpp"
#include "CADefines.hpp"
#include <set>
#include "GeometryQueryTool.hpp"
#include "CubitTransformMatrix.hpp"
#include "CubitObservable.hpp"
#include "AppUtil.hpp"
#include "GeometryEvent.hpp"
Go to the source code of this file.
Functions | |
static CubitStatus | get_edge_replacements (std::vector< CubitFacetData * > &facet_list, std::vector< CubitFacetEdgeData * > replacement_edges[3]) |
static CubitFacetData * | find_facet (CubitFacetEdge *edge, bool sense, PartitionEntity *owner) |
static CubitFacetData * | find_facet (CubitPoint *pt, PartitionEntity *owner) |
static CubitFacetData * | other_facet (CubitFacetData *facet, int edge, PartitionEntity *owner) |
Variables | |
const char *const | PARTITION_GEOM_ATTRIB_NAME = "PARTITION_GEOM" |
static CubitFacetData* find_facet | ( | CubitFacetEdge * | edge, |
bool | sense, | ||
PartitionEntity * | owner | ||
) | [static] |
Definition at line 1762 of file PartitionEngine.cpp.
{ DLIList<CubitFacet*> facets(2); edge->facets(facets); facets.reset(); for ( int i = facets.size(); i--; ) { CubitFacet* facet = facets.get(); int edge_index = facet->edge_index(edge); assert(edge_index >= 0); bool forward = edge->point(0) == facet->point((edge_index+1)%3); if ( forward != sense || TDVGFacetOwner::get(facet) != owner ) facets.extract(); else facets.step(); } return facets.size() == 1 ? dynamic_cast<CubitFacetData*>(facets.get()) : 0; }
static CubitFacetData* find_facet | ( | CubitPoint * | pt, |
PartitionEntity * | owner | ||
) | [static] |
Definition at line 1793 of file PartitionEngine.cpp.
{ DLIList<CubitFacet*> facets; pt->facets(facets); facets.reset(); for ( int i = facets.size(); i--; ) { if ( TDVGFacetOwner::get(facets.get()) == owner ) facets.step(); else facets.extract(); } return facets.size() == 1 ? dynamic_cast<CubitFacetData*>(facets.get()) : 0; }
static CubitStatus get_edge_replacements | ( | std::vector< CubitFacetData * > & | facet_list, |
std::vector< CubitFacetEdgeData * > | replacement_edges[3] | ||
) | [static] |
Definition at line 5875 of file PartitionEngine.cpp.
{ // first facet is the facet to replace // make sure more than one facet to replace the first assert(facet_list.size() > 2); // make sure the lists of replacement edges are empty assert(replace_edge_lists[0].size() == 0); assert(replace_edge_lists[1].size() == 0); assert(replace_edge_lists[2].size() == 0); CubitFacetData* p_dead = facet_list[0]; // facet to be replaced // look for edges on the facet that are owned by curves int i; //int replace_edge = 0; // get the edges CubitFacetEdgeData *edges[3]; for (i=0; i<3; i++) { edges[i] = CAST_TO(p_dead->edge(i), CubitFacetEdgeData); assert(edges[i] != NULL); } PartitionEntity *p_owner; PartitionCurve *p_curve; // see if any are owned by a curve CubitBoolean b_boundary = CUBIT_FALSE; for (i=0; i<3 && !b_boundary; i++) { p_owner = TDVGFacetOwner::get(edges[i]); p_curve = CAST_TO(p_owner, PartitionCurve); if (p_curve) b_boundary = CUBIT_TRUE; } // if the facet has an edge on a curve, replace the edge with the edges of the // replacement facets and split the facet on the adjacent surface. if (b_boundary) { // make a list with just the new facets -- skip the first facet DLIList<CubitFacet*> new_facets(facet_list.size() - 1); for (unsigned u = 1; u < facet_list.size(); u++) new_facets.append(facet_list[u]); // get a point edge chain around the boundary of the replacement facets DLIList<FacetEntity*> point_edge_chain; FacetDataUtil::ordered_point_edge_bdry(new_facets, point_edge_chain); // for each edge on a curve get corresponding points and edges from the // replacement facets //std::vector<CubitFacetEdgeData*>::iterator eitor; for (i=0; i<3; i++) { p_owner = TDVGFacetOwner::get(edges[i]); p_curve = CAST_TO(p_owner, PartitionCurve); if (p_curve) { // fill the replacement list for this edge // add the edge to be replaced first //eitor = replace_edge_lists[i].begin(); // get the points from the edge of the dead facet - in the correct order CubitPoint* pt1; CubitPoint* pt2; p_dead->get_edge_pts(i, pt1, pt2); // get the corresponding chain of points and edges from the replacement facets DLIList<FacetEntity*> replacement_chain; CubitStatus res = FacetDataUtil::partial_chain(point_edge_chain, pt1, pt2, replacement_chain); if (CUBIT_FAILURE == res) return CUBIT_FAILURE; // there should be an odd number of list entries, since it includes points // and edges, beginning and ending with a point assert( (replacement_chain.size() % 2) == 1 ); // if only one replacement edge, it should be the same edge replacement_chain.reset(); if (replacement_chain.size() == 3) { assert(replacement_chain.next(1) == edges[i]); } else { // add the replacement edges to the list - edge to replace first //*eitor++ = edges[i]; replace_edge_lists[i].push_back(edges[i]); int j; CubitFacetEdgeData* p_edge; for (j=1; j<replacement_chain.size(); j+=2) { //replacement_chain.step(); p_edge = CAST_TO(replacement_chain.next(j), CubitFacetEdgeData); assert(p_edge != NULL); //*eitor++ = p_edge; replace_edge_lists[i].push_back(p_edge); } } } } } return CUBIT_SUCCESS; }
static CubitFacetData* other_facet | ( | CubitFacetData * | facet, |
int | edge, | ||
PartitionEntity * | owner | ||
) | [static] |
Definition at line 1819 of file PartitionEngine.cpp.
{ DLIList<CubitFacet*> facets; facet->shared_facets( facet->point((edge+1)%3), facet->point((edge+2)%3), facets ); for ( int i = facets.size(); i--; ) { CubitFacet* facet = facets.get(); if( TDVGFacetOwner::get(facet) != owner ) facets.extract(); else facets.step(); } return facets.size() == 1 ? dynamic_cast<CubitFacetData*>(facets.get()) : 0; }
const char* const PARTITION_GEOM_ATTRIB_NAME = "PARTITION_GEOM" |
Definition at line 65 of file PartitionEngine.cpp.