manual IFC merge, forgot some points

git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@1030 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
pull/1/head
aramis_acg 2011-06-09 14:29:46 +00:00
parent 9edc0a9b8e
commit e479ca33d4
2 changed files with 14 additions and 32 deletions

View File

@ -259,18 +259,12 @@ struct TempMesh
aiVector3D vmin,vmax; aiVector3D vmin,vmax;
ArrayBounds(&*base, cnt ,vmin,vmax); ArrayBounds(&*base, cnt ,vmin,vmax);
<<<<<<< HEAD
const float epsilon = (vmax-vmin).SquareLength() / 1e9f, dotepsilon = 1e-7; const float epsilon = (vmax-vmin).SquareLength() / 1e9f, dotepsilon = 1e-7;
//// look for vertices that lie directly on the line between their predecessor and their //// look for vertices that lie directly on the line between their predecessor and their
//// successor and replace them with either of them. //// successor and replace them with either of them.
=======
const float epsilon = (vmax-vmin).SquareLength() / 1e9f;
//// look for vertices that lie directly on the line between their predecessor and their
//// successor and replace them with either of them.
//const float dotepsilon = 1e-7;
>>>>>>> 320a7a7a7e0422e4d8d9c2a22b74cb48f74b14ce
//for(size_t i = 0; i < cnt; ++i) { //for(size_t i = 0; i < cnt; ++i) {
// aiVector3D& v1 = *(base+i), &v0 = *(base+(i?i-1:cnt-1)), &v2 = *(base+(i+1)%cnt); // aiVector3D& v1 = *(base+i), &v0 = *(base+(i?i-1:cnt-1)), &v2 = *(base+(i+1)%cnt);
// const aiVector3D& d0 = (v1-v0), &d1 = (v2-v1); // const aiVector3D& d0 = (v1-v0), &d1 = (v2-v1);
@ -1154,28 +1148,20 @@ next_loop:
void ProcessConnectedFaceSet(const IFC::IfcConnectedFaceSet& fset, TempMesh& result, ConversionData& conv) void ProcessConnectedFaceSet(const IFC::IfcConnectedFaceSet& fset, TempMesh& result, ConversionData& conv)
{ {
BOOST_FOREACH(const IFC::IfcFace& face, fset.CfsFaces) { BOOST_FOREACH(const IFC::IfcFace& face, fset.CfsFaces) {
<<<<<<< HEAD
size_t ob = -1, cnt = 0;
=======
// size_t ob = -1, cnt = 0; // size_t ob = -1, cnt = 0;
>>>>>>> 320a7a7a7e0422e4d8d9c2a22b74cb48f74b14ce
TempMesh meshout; TempMesh meshout;
BOOST_FOREACH(const IFC::IfcFaceBound& bound, face.Bounds) { BOOST_FOREACH(const IFC::IfcFaceBound& bound, face.Bounds) {
// XXX implement proper merging for polygonal loops // XXX implement proper merging for polygonal loops
if(const IFC::IfcPolyLoop* const polyloop = bound.Bound->ToPtr<IFC::IfcPolyLoop>()) { if(const IFC::IfcPolyLoop* const polyloop = bound.Bound->ToPtr<IFC::IfcPolyLoop>()) {
if(ProcessPolyloop(*polyloop, meshout,conv)) { if(ProcessPolyloop(*polyloop, meshout,conv)) {
<<<<<<< HEAD
if(bound.ToPtr<IFC::IfcFaceOuterBound>()) {
ob = cnt;
}
++cnt;
=======
//if(bound.ToPtr<IFC::IfcFaceOuterBound>()) { //if(bound.ToPtr<IFC::IfcFaceOuterBound>()) {
// ob = cnt; // ob = cnt;
//} //}
//++cnt; //++cnt;
>>>>>>> 320a7a7a7e0422e4d8d9c2a22b74cb48f74b14ce
} }
} }
else { else {
@ -1654,11 +1640,8 @@ void InsertWindowContours(const std::vector< BoundingBox >& bbs,const std::vecto
} }
if (hit) { if (hit) {
<<<<<<< HEAD
if (last_hit != -1) {
=======
if (last_hit != (size_t)-1) { if (last_hit != (size_t)-1) {
>>>>>>> 320a7a7a7e0422e4d8d9c2a22b74cb48f74b14ce
const size_t old = curmesh.verts.size(); const size_t old = curmesh.verts.size();
size_t cnt = last_hit > n ? size-(last_hit-n) : n-last_hit; size_t cnt = last_hit > n ? size-(last_hit-n) : n-last_hit;
for(size_t a = last_hit, e = 0; e <= cnt; a=(a+1)%size, ++e) { for(size_t a = last_hit, e = 0; e <= cnt; a=(a+1)%size, ++e) {
@ -1750,11 +1733,9 @@ bool TryAddOpenings_Quadrulate(const std::vector<TempOpening>& openings,const st
continue; continue;
} }
<<<<<<< HEAD
const aiVector3D diff = t.extrusionDir;
=======
// const aiVector3D diff = t.extrusionDir; // const aiVector3D diff = t.extrusionDir;
>>>>>>> 320a7a7a7e0422e4d8d9c2a22b74cb48f74b14ce
const std::vector<aiVector3D>& va = t.profileMesh->verts; const std::vector<aiVector3D>& va = t.profileMesh->verts;
if(va.size() <= 2) { if(va.size() <= 2) {
continue; continue;

View File

@ -1867,11 +1867,12 @@ template <> size_t GenericFill<IfcColumn>(const DB& db, const LIST& params, IfcC
// this data structure is not used yet, so there is no code generated to fill its members // this data structure is not used yet, so there is no code generated to fill its members
return base; return base;
} }
// -----------------------------------------------------------------------------------------------------------
template <> size_t GenericFill<IfcObjectPlacement>(const DB& /*db*/, const LIST& params, IfcObjectPlacement* /*in*/) template <> size_t GenericFill<IfcObjectPlacement>(const DB& /*db*/, const LIST& params, IfcObjectPlacement* /*in*/)
>>>>>>> 320a7a7a7e0422e4d8d9c2a22b74cb48f74b14ce
{ {
size_t base = 0; size_t base = 0;
if (params.GetSize() < 0) { throw STEP::TypeError("expected 0 arguments to IfcObjectPlacement"); } return base; if (params.GetSize() < 0) { throw STEP::TypeError("expected 0 arguments to IfcObjectPlacement"); }
return base;
} }
// ----------------------------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------------------------
template <> size_t GenericFill<IfcGridPlacement>(const DB& db, const LIST& params, IfcGridPlacement* in) template <> size_t GenericFill<IfcGridPlacement>(const DB& db, const LIST& params, IfcGridPlacement* in)