X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHEXABLOCKGUI%2FHEXABLOCKGUI_DocumentModel.cxx;h=60b97c1334446406a722a75dadbea2e9b93dc755;hb=9c08f98c8b7b687f03b8994451a0cebdd5ca2fad;hp=317dd5a6a7872290f48d07935a09fb99cbddb528;hpb=624082b6806f6695a1e2f31ba595534e464f0f91;p=modules%2Fhexablock.git diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentModel.cxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentModel.cxx old mode 100755 new mode 100644 index 317dd5a..60b97c1 --- a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentModel.cxx +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentModel.cxx @@ -1,9 +1,9 @@ -// Copyright (C) 2009-2013 CEA/DEN, EDF R&D +// Copyright (C) 2009-2019 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -49,7 +49,10 @@ #include "HEXABLOCKGUI_VtkDocumentGraphicView.hxx" - +#include +#include +#include +#include //#define _DEVDEBUG_ @@ -168,7 +171,7 @@ HEXA_NS::EltBase* DocumentModel::getHexaPtr(const QModelIndex& iElt) case HEXA_TREE : elt = getHexaPtr(iElt); break; case VECTOR_TREE : elt = getHexaPtr(iElt); break; case ELEMENTS_TREE : elt = getHexaPtr(iElt); break; - case CROSSELEMENTS_TREE : elt = getHexaPtr(iElt); break; +// case CROSSELEMENTS_TREE : elt = getHexaPtr(iElt); break; case GEOMSHAPE_TREE: elt = getHexaPtr(iElt); break; case GEOMPOINT_TREE: elt = getHexaPtr(iElt); break; case GEOMEDGE_TREE: elt = getHexaPtr(iElt); break; @@ -238,6 +241,44 @@ int DocumentModel::getNbrUnusedElt(HEXA_NS::EnumElt eltType) return getNbrElt(eltType) - getNbrUsedElt(eltType); } +// compute the length of the given edge +double DocumentModel::getLength(const QModelIndex& iEdge) +{ + // * Get the pointer to the edge + HEXA_NS::Edge* edge = getHexaPtr(iEdge); + HEXA_NS::EdgeShape* geomEdge = getHexaPtr(iEdge); + + // * The edge can be from VTK or OCC View + if (edge != NULL) + return edge->getLength(); + else if (geomEdge != NULL) + return geomEdge->getLength(); + else + return 0.; +} + +// Compute the radius of the given edge +double DocumentModel::getRadius(const QModelIndex& iEdge) +{ + // * Get the pointer to the edge + // * In our case only an OCC edge can have a radius + HEXA_NS::EdgeShape* edge = getHexaPtr(iEdge); + if (edge == NULL) + return 0.; + + return edge->getRadius(); +} + +// Compute the angle of the given edge (internal angle) +double DocumentModel::getAngle(const QModelIndex& iEdge) +{ + // * Get the pointer to the edge + HEXA_NS::EdgeShape* edge = getHexaPtr(iEdge); + if (edge == NULL) + return 0.; + + return edge->getAngle(); +} //Load the current Document void DocumentModel::load() @@ -255,7 +296,7 @@ void DocumentModel::load( const QString& xmlFileName ) // Fill Data clearAll(); fillData(); - fillBuilder(); +// fillBuilder(); fillGeometry(); fillAssociation(); fillGroups(); @@ -313,7 +354,7 @@ void DocumentModel::refresh() clearAll(); fillData(); - fillBuilder(); +// fillBuilder(); fillGeometry(); fillAssociation(); fillGroups(); @@ -325,7 +366,7 @@ void DocumentModel::refresh() void DocumentModel::clearAll() { clearData(); - clearBuilder(); +// clearBuilder(); clearGeometry(); clearAssociation(); clearGroups(); @@ -338,16 +379,20 @@ void DocumentModel::clearData() _edgeDirItem->removeRows(0, _edgeDirItem->rowCount() ); _quadDirItem->removeRows(0, _quadDirItem->rowCount() ); _hexaDirItem->removeRows(0, _hexaDirItem->rowCount() ); -} - -void DocumentModel::clearBuilder() -{ _vectorDirItem->removeRows(0, _vectorDirItem->rowCount() ); _elementsDirItem->removeRows(0, _elementsDirItem->rowCount() ); _crossElementsDirItem->removeRows(0, _crossElementsDirItem->rowCount() ); } + +//void DocumentModel::clearBuilder() +//{ +// _vectorDirItem->removeRows(0, _vectorDirItem->rowCount() ); +// _elementsDirItem->removeRows(0, _elementsDirItem->rowCount() ); +// _crossElementsDirItem->removeRows(0, _crossElementsDirItem->rowCount() ); +//} + void DocumentModel::clearGeometry() { _explicitShapesDirItem->removeRows(0, _explicitShapesDirItem->rowCount() ); @@ -415,57 +460,100 @@ void DocumentModel::fillData() hItem = new HexaItem(h, _entry); _hexaDirItem->appendRow(hItem); } -} + // +++++ Builder ++++++++++++++++++++++++++++++ -void DocumentModel::fillBuilder() -{ - HEXA_NS::Vector *v = NULL; - VectorItem *vItem = NULL; + HEXA_NS::Vector *vec = NULL; + VectorItem *vecItem = NULL; int nbVector = _hexaDocument->countVector(); for ( int i=0; igetVector(i); - vItem = new VectorItem(v); - _vectorDirItem->appendRow(vItem); + vec = _hexaDocument->getVector(i); + vecItem = new VectorItem(vec); + _vectorDirItem->appendRow(vecItem); } //******* A VOIR AVEC ALAIN POUR LE REMPLISSAGE DE L'ARBRE ELEMENTS ET CROSSELEMENTS (ByCylinder) *******/ //******* OU SONT STOCKES LES ELEMENTS ET LES CROSSELEMENTS DANS LE DOCUMENT? ******/ // _cylinderDirItem -// HEXA_NS::Cylinder *c = NULL; -// HEXA_NS::Elements* c = NULL; -// CylinderItem *cItem = NULL; -// ElementsItem* cItem = NULL; -// int nbCylinder = _hexaDocument->countCylinder(); -// for ( int i=0; igetCylinder(i); -// cItem = new CylinderItem(c, _entry); -// cItem = new ElementsItem(c, _entry); -// _cylinderDirItem->appendRow(cItem); -// _elementsDirItem->appendRow(cItem); -// } + // HEXA_NS::Cylinder *c = NULL; + // HEXA_NS::Elements* c = NULL; + // CylinderItem *cItem = NULL; + // ElementsItem* cItem = NULL; + // int nbCylinder = _hexaDocument->countCylinder(); + // for ( int i=0; igetCylinder(i); + // cItem = new CylinderItem(c, _entry); + // cItem = new ElementsItem(c, _entry); + // _cylinderDirItem->appendRow(cItem); + // _elementsDirItem->appendRow(cItem); + // } // _pipeDirItem -// HEXA_NS::Pipe *p = NULL; -// HEXA_NS::Elements* p = NULL; -// PipeItem *pItem = NULL; -// ElementsItem* pItem = NULL; -// int nbPipe = _hexaDocument->countPipe(); -// for ( int i=0; igetPipe(i); -// pItem = new PipeItem(p); -// pItem = new ElementsItem(p, _entry); -// _pipeDirItem->appendRow(pItem); -// _elementsDirItem->appendRow(pItem); -// } + // HEXA_NS::Pipe *p = NULL; + // HEXA_NS::Elements* p = NULL; + // PipeItem *pItem = NULL; + // ElementsItem* pItem = NULL; + // int nbPipe = _hexaDocument->countPipe(); + // for ( int i=0; igetPipe(i); + // pItem = new PipeItem(p); + // pItem = new ElementsItem(p, _entry); + // _pipeDirItem->appendRow(pItem); + // _elementsDirItem->appendRow(pItem); + // } //******************************************************************************************************** } + +//void DocumentModel::fillBuilder() +//{ +// HEXA_NS::Vector *v = NULL; +// VectorItem *vItem = NULL; +// int nbVector = _hexaDocument->countVector(); +// for ( int i=0; igetVector(i); +// vItem = new VectorItem(v); +// _vectorDirItem->appendRow(vItem); +// } +// +// //******* A VOIR AVEC ALAIN POUR LE REMPLISSAGE DE L'ARBRE ELEMENTS ET CROSSELEMENTS (ByCylinder) *******/ +// //******* OU SONT STOCKES LES ELEMENTS ET LES CROSSELEMENTS DANS LE DOCUMENT? ******/ +// +// // _cylinderDirItem +//// HEXA_NS::Cylinder *c = NULL; +//// HEXA_NS::Elements* c = NULL; +//// CylinderItem *cItem = NULL; +//// ElementsItem* cItem = NULL; +//// int nbCylinder = _hexaDocument->countCylinder(); +//// for ( int i=0; igetCylinder(i); +//// cItem = new CylinderItem(c, _entry); +//// cItem = new ElementsItem(c, _entry); +//// _cylinderDirItem->appendRow(cItem); +//// _elementsDirItem->appendRow(cItem); +//// } +// +// // _pipeDirItem +//// HEXA_NS::Pipe *p = NULL; +//// HEXA_NS::Elements* p = NULL; +//// PipeItem *pItem = NULL; +//// ElementsItem* pItem = NULL; +//// int nbPipe = _hexaDocument->countPipe(); +//// for ( int i=0; igetPipe(i); +//// pItem = new PipeItem(p); +//// pItem = new ElementsItem(p, _entry); +//// _pipeDirItem->appendRow(pItem); +//// _elementsDirItem->appendRow(pItem); +//// } +// //******************************************************************************************************** +//} + void DocumentModel::fillGeometry() { PatternGeomSelectionModel* pgsm = HEXABLOCKGUI::currentDocGView->getPatternGeomSelectionModel(); - if (_hexaDocument == NULL || isEmpty() || pgsm == NULL) + if (_hexaDocument == NULL /*|| isEmpty()*/ || pgsm == NULL) return; HEXA_NS::NewShape* shape; @@ -828,6 +916,7 @@ void DocumentModel::allowElementsSelectionOnly() _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); } +/********************************************************** void DocumentModel::allowCrossElementsSelectionOnly() { _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); @@ -843,6 +932,7 @@ void DocumentModel::allowCrossElementsSelectionOnly() _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); } + ********************************************************** */ void DocumentModel::allowLawSelectionOnly() { @@ -987,19 +1077,30 @@ QModelIndex DocumentModel::addEdgeVertices (const QModelIndex &i_v0, const QMode return edgeIndex; } -QModelIndex DocumentModel::addEdgeVector ( const QModelIndex &i_v, const QModelIndex &i_vec ) +QModelIndex DocumentModel::addEdgeVector( const QModelIndex &i_v, const QModelIndex &i_vec ) { QModelIndex edgeIndex; - HEXA_NS::Vertex* hv0 = getHexaPtr(i_v); + HEXA_NS::Vertex* hv = getHexaPtr(i_v); HEXA_NS::Vector* hvec = getHexaPtr(i_vec); - HEXA_NS::Edge* he = _hexaDocument->addEdgeVector( hv0, hvec ); + if (hv == NULL || hvec == NULL) return edgeIndex; + + HEXA_NS::Edge* he = _hexaDocument->addEdgeVector( hv, hvec ); if ( BadElement(he) ) return edgeIndex; + HEXA_NS::Vertex* hv2 = he->getAval(); //the new vertex resulting from the creation of the edge + if (hv2 == NULL) return edgeIndex; + + //ADD the edge in the treeview EdgeItem* e = new EdgeItem(he, _entry); - _vectorDirItem->appendRow(e); + _edgeDirItem->appendRow(e); edgeIndex = e->index(); + + //The resulting Vertex + VertexItem* v = new VertexItem(hv2, _entry); + _vertexDirItem->appendRow(v); + emit patternDataChanged(); return edgeIndex; @@ -1402,8 +1503,6 @@ QModelIndex DocumentModel::makeScale( const QModelIndex& ielts, const QModelInde return iElts; } - - QModelIndex DocumentModel::makeRotation( const QModelIndex& ielts, const QModelIndex& iv, const QModelIndex& ivec, double angle ) @@ -1584,30 +1683,35 @@ bool DocumentModel::performSymmetryPlane( const QModelIndex& ielts, return false; } -QModelIndex DocumentModel::replace( const QModelIndexList& iquadsPattern, - const QModelIndex& ip1, const QModelIndex& ic1, - const QModelIndex& ip2, const QModelIndex& ic2, - const QModelIndex& ip3, const QModelIndex& ic3 ) +QModelIndex DocumentModel::replace( const QModelIndexList& iquads_source, + const QModelIndexList& iquads_dest, + const QModelIndex& ip1_source, const QModelIndex& ic1_dest, + const QModelIndex& ip2_source, const QModelIndex& ic2_dest) { QModelIndex ielts; - HEXA_NS::Vertex* hp1 = getHexaPtr(ip1); - HEXA_NS::Vertex* hc1 = getHexaPtr(ic1); - HEXA_NS::Vertex* hp2 = getHexaPtr(ip2); - HEXA_NS::Vertex* hc2 = getHexaPtr(ic2); - HEXA_NS::Vertex* hp3 = getHexaPtr(ip3); - HEXA_NS::Vertex* hc3 = getHexaPtr(ic3); + HEXA_NS::Vertex* hp1 = getHexaPtr(ip1_source); + HEXA_NS::Vertex* hp2 = getHexaPtr(ip2_source); + HEXA_NS::Vertex* hc1 = getHexaPtr(ic1_dest); + HEXA_NS::Vertex* hc2 = getHexaPtr(ic2_dest); - HEXA_NS::Quads hquads; + HEXA_NS::Quads hquads_source, hquads_dest; HEXA_NS::Quad* hquad = NULL; - foreach( const QModelIndex& iquad, iquadsPattern ){ + foreach( const QModelIndex& iquad, iquads_source ){ hquad = getHexaPtr(iquad); - hquads.push_back( hquad ); + hquads_source.push_back( hquad ); } - HEXA_NS::Elements* helts = _hexaDocument->replace( hquads, - hp1, hc1, hp2, hc2, hp3, hc3 ); - if ( BadElement(helts) ) return ielts; + foreach( const QModelIndex& iquad, iquads_dest) { + hquad = getHexaPtr(iquad); + hquads_dest.push_back(hquad); + } + + HEXA_NS::Elements* helts = _hexaDocument->replace( hquads_source, + hquads_dest, + hp1, hc1, hp2, hc2); + if ( BadElement(helts) ) + return ielts; updateData(); ElementsItem* eltsItem = new ElementsItem(helts); @@ -2125,9 +2229,10 @@ QString DocumentModel::documentEntry() PatternDataModel::PatternDataModel( QObject * parent ) : QSortFilterProxyModel( parent ) { - QString dataRegExp = QString("(%1|%2|%3|%4|%5|%6|%7|%8)"). - arg(VERTEX_TREE).arg(EDGE_TREE).arg(QUAD_TREE).arg(HEXA_TREE). - arg(VERTEX_DIR_TREE).arg(EDGE_DIR_TREE).arg(QUAD_DIR_TREE).arg(HEXA_DIR_TREE); + QString dataRegExp = QString("(%1|%2|%3|%4|%5|%6|%7|%8|%9|%10|%11|%12)"). + arg(VERTEX_TREE).arg(EDGE_TREE).arg(QUAD_TREE).arg(HEXA_TREE).arg(VECTOR_TREE).arg(ELEMENTS_TREE). + arg(VERTEX_DIR_TREE).arg(EDGE_DIR_TREE).arg(QUAD_DIR_TREE).arg(HEXA_DIR_TREE).arg(VECTOR_DIR_TREE). + arg(ELEMENTS_DIR_TREE); setFilterRole(HEXA_TREE_ROLE); setFilterRegExp ( QRegExp(dataRegExp) ); @@ -2206,50 +2311,50 @@ QStandardItem* PatternDataModel::itemFromIndex ( const QModelIndex & index ) con return item; } -PatternBuilderModel::PatternBuilderModel( QObject * parent ) : - QSortFilterProxyModel( parent ) -{ - QString builderRegExp =QString("(%1|%2|%3|%4|%5|%6)"). - arg(VECTOR_TREE).arg(ELEMENTS_TREE). - arg(CROSSELEMENTS_TREE).arg(VECTOR_DIR_TREE).arg(ELEMENTS_DIR_TREE).arg(CROSSELEMENTS_DIR_TREE); - - setFilterRole( HEXA_TREE_ROLE ); - setFilterRegExp ( QRegExp( builderRegExp ) ); -} - -PatternBuilderModel::~PatternBuilderModel() -{ -} +//PatternBuilderModel::PatternBuilderModel( QObject * parent ) : +// QSortFilterProxyModel( parent ) +//{ +// QString builderRegExp =QString("(%1|%2|%3|%4|%5|%6)"). +// arg(VECTOR_TREE).arg(ELEMENTS_TREE). +// arg(CROSSELEMENTS_TREE).arg(VECTOR_DIR_TREE).arg(ELEMENTS_DIR_TREE).arg(CROSSELEMENTS_DIR_TREE); +// +// setFilterRole( HEXA_TREE_ROLE ); +// setFilterRegExp ( QRegExp( builderRegExp ) ); +//} -Qt::ItemFlags PatternBuilderModel::flags(const QModelIndex &index) const -{ - Qt::ItemFlags flags; +//PatternBuilderModel::~PatternBuilderModel() +//{ +//} - DocumentModel *m = dynamic_cast( sourceModel() ); - if ( m != NULL ){ - flags = m->flags( mapToSource(index) ); - } - return flags; -} +//Qt::ItemFlags PatternBuilderModel::flags(const QModelIndex &index) const +//{ +// Qt::ItemFlags flags; +// +// DocumentModel *m = dynamic_cast( sourceModel() ); +// if ( m != NULL ){ +// flags = m->flags( mapToSource(index) ); +// } +// return flags; +//} -QVariant PatternBuilderModel::headerData ( int section, Qt::Orientation orientation, int role ) const -{ - if ( section == 0 && orientation == Qt::Horizontal && role == Qt::DisplayRole ){ - return QVariant( "Builder" ); - } else { - return QSortFilterProxyModel::headerData ( section, orientation, role ); - } -} +//QVariant PatternBuilderModel::headerData ( int section, Qt::Orientation orientation, int role ) const +//{ +// if ( section == 0 && orientation == Qt::Horizontal && role == Qt::DisplayRole ){ +// return QVariant( "Builder" ); +// } else { +// return QSortFilterProxyModel::headerData ( section, orientation, role ); +// } +//} -QStandardItem* PatternBuilderModel::itemFromIndex ( const QModelIndex & index ) const -{ - QStandardItem *item = NULL; - DocumentModel *m = dynamic_cast( sourceModel() ); - if ( m != NULL ){ - item = m->itemFromIndex( mapToSource(index) ); - } - return item; -} +//QStandardItem* PatternBuilderModel::itemFromIndex ( const QModelIndex & index ) const +//{ +// QStandardItem *item = NULL; +// DocumentModel *m = dynamic_cast( sourceModel() ); +// if ( m != NULL ){ +// item = m->itemFromIndex( mapToSource(index) ); +// } +// return item; +//} //==================================================================== // PatternGeomModel @@ -2493,7 +2598,7 @@ QModelIndex DocumentModel::makeCartesianUni(const QModelIndex& icenter, QModelIndex DocumentModel::makeCartesian(const QModelIndex& icenter, const QModelIndex& ibase, const QModelIndex& ivec, const QModelIndex& iaxis, - vector& radius, vector& angles, vector& heights) + std::vector& radius, std::vector& angles, std::vector& heights) { QModelIndex result; @@ -2551,7 +2656,7 @@ QModelIndex DocumentModel::makeSphereUni (QModelIndex& icenter, QModelIndex DocumentModel::makeSphere (QModelIndex& icenter, QModelIndex& ivec_x, QModelIndex& ivec_z, - vector& tray, vector& tang, vector& thaut) + std::vector& tray, std::vector& tang, std::vector& thaut) { QModelIndex result; @@ -2604,7 +2709,7 @@ QModelIndex DocumentModel::makeSphericalUni (QModelIndex& icenter, QModelIndex DocumentModel::makeSpherical (QModelIndex& icenter, QModelIndex& ivec_x, QModelIndex& ivec_z, - vector& rayon, + std::vector& rayon, int crit) { QModelIndex result; @@ -2661,7 +2766,7 @@ QModelIndex DocumentModel::makeRindUni (QModelIndex& icenter, QModelIndex DocumentModel::makeRind (QModelIndex& icenter, QModelIndex& ivec_x, QModelIndex& ivec_z, - vector& tray, vector& tang, vector& thaut) + std::vector& tray, std::vector& tang, std::vector& thaut) { QModelIndex result; @@ -2714,7 +2819,7 @@ QModelIndex DocumentModel::makeCylinderUni(QModelIndex& iorig, QModelIndex& ivec } QModelIndex DocumentModel::makeCylinder(QModelIndex& iorig, QModelIndex& ivecx, QModelIndex& ivecz, - vector& tray, vector& tang, vector& thaut) + std::vector& tray, std::vector& tang, std::vector& thaut) { QModelIndex result; @@ -2788,7 +2893,7 @@ QModelIndex DocumentModel::makePipeUni(QModelIndex& iorig, QModelIndex& ivecx, Q } QModelIndex DocumentModel::makePipe(QModelIndex& iorig, QModelIndex& ivecx, QModelIndex& ivecz, - vector& tray, vector& tang, vector& thaut) + std::vector& tray, std::vector& tang, std::vector& thaut) { QModelIndex result; @@ -2849,7 +2954,7 @@ QModelIndex DocumentModel::joinQuadUni(QModelIndex& istart, QModelIndex& idest, } QModelIndex DocumentModel::joinQuad(QModelIndex& istart, QModelIndex& idest, QModelIndex& iva1, QModelIndex& ivb1, - QModelIndex& iva2, QModelIndex& ivb2, vector& tlen) + QModelIndex& iva2, QModelIndex& ivb2, std::vector& tlen) { QModelIndex result; @@ -2895,7 +3000,7 @@ QModelIndex DocumentModel::joinQuadsUni(QModelIndexList& istarts, QModelIndex& i } QModelIndex DocumentModel::joinQuads(QModelIndexList& istarts, QModelIndex& idest, QModelIndex& iva1, QModelIndex& ivb1, - QModelIndex& iva2, QModelIndex& ivb2, vector& tlen) + QModelIndex& iva2, QModelIndex& ivb2, std::vector& tlen) { QModelIndex result; @@ -2939,7 +3044,7 @@ QModelIndex DocumentModel::revolutionQuadUni(QModelIndex& istart, QModelIndex& i } QModelIndex DocumentModel::revolutionQuad(QModelIndex& istart, QModelIndex& icenter, QModelIndex& iaxis, - vector& angles) + std::vector& angles) { QModelIndex result; @@ -2979,7 +3084,7 @@ QModelIndex DocumentModel::revolutionQuadsUni(QModelIndexList& istarts, QModelIn } QModelIndex DocumentModel::revolutionQuads(QModelIndexList& istarts, QModelIndex& icenter, QModelIndex& iaxis, - vector& angles) + std::vector& angles) { QModelIndex result; @@ -3032,7 +3137,7 @@ QModelIndex DocumentModel::extrudeQuadUni(QModelIndex& istart, QModelIndex& dv, return result; } -QModelIndex DocumentModel::extrudeQuad(QModelIndex& istart, QModelIndex& dv, vector& tlen) +QModelIndex DocumentModel::extrudeQuad(QModelIndex& istart, QModelIndex& dv, std::vector& tlen) { QModelIndex result; @@ -3083,7 +3188,7 @@ QModelIndex DocumentModel::extrudeQuadsUni (QModelIndexList& istarts, QModelInde return result; } -QModelIndex DocumentModel::extrudeQuads(QModelIndexList& istarts, QModelIndex& iaxis, vector& tlen) +QModelIndex DocumentModel::extrudeQuads(QModelIndexList& istarts, QModelIndex& iaxis, std::vector& tlen) { QModelIndex result; @@ -3117,7 +3222,7 @@ QModelIndex DocumentModel::cutUni(QModelIndex& iEdge, int nbre) return result; } -QModelIndex DocumentModel::cut(QModelIndex& iEdge, vector& tlen) +QModelIndex DocumentModel::cut(QModelIndex& iEdge, std::vector& tlen) { QModelIndex result;