/////////////////////////////////////////////////////////////////////////////////// // // Implementation of vtkToolScissors // /////////////////////////////////////////////////////////////////////////////////// #include "vtkToolScissors.h" #include "vtkOBB.h" #include "vtkObjectFactory.h" #include "MathGlobal.h" #include "vtkModeloHerramienta.h" #include "Tipoherramienta.h" #include "vtkTransform.h" #include "vtkAssembly.h" #include "vtkActorCollection.h" #include "vtkRenderer.h" #include "vtkRenderWindow.h" #include "vtk3DSImporterEsqui.h" #include "vtkObjectFactory.h" #include "vtkEsquiActorCollection.h" #include "vtkMatrix4x4.h" #include "vtkCellArray.h" #include "vtkPolyData.h" #include "vtkPoints.h" #include "vtkPolyDataMapper.h" #include "vtkActor.h" #include "vtkPolyDataReader.h" #include "vtkTransformPolyDataFilter.h" vtkCxxRevisionMacro(vtkToolScissors, "$Revision: 0.1 $"); vtkStandardNewMacro(vtkToolScissors); vtkToolScissors::vtkToolScissors():vtkTool(){ _bPossCut=false; } // // // vtkToolScissors::~vtkToolScissors(){} // // // void vtkToolScissors::InitializeTool3DSFile(){ vtkActorCollection *TempCollection; vtk3DSImporterEsqui *Importer = vtk3DSImporterEsqui::New(); Importer->SetFileName(this->PathToModel); Importer->SetRenderWindow(this->RenderWindow); Importer->ComputeNormalsOn(); Importer->SetFactorDeEscala(this->fRadius); TempCollection = Importer->GetActorCollection(); this->Pinza1 =static_cast ( TempCollection->GetItemAsObject(1)); this->Pinza2 = static_cast (TempCollection->GetItemAsObject(2)); this->Estaticas->AddPart(static_cast (TempCollection->GetItemAsObject(0))); this->Estaticas->AddPart(static_cast (TempCollection->GetItemAsObject(3))); Importer->Delete(); Importer = vtk3DSImporterEsqui::New(); Importer->SetFileName(this->PathToStick); Importer->ComputeNormalsOn(); Importer->SetFactorDeEscala(this->fRadius); Importer->SetRenderWindow(this->RenderWindow); this->Estaticas->AddPart(static_cast(Importer->GetActorCollection()->GetItemAsObject(0))); Importer->GetActorCollection()->Delete(); Importer->Delete(); this->ColeccionDeModelos->AddItem((vtkActor*) this->Estaticas); this->ColeccionDeModelos->AddItem((vtkActor*) this->Pinza2); this->ColeccionDeModelos->AddItem((vtkActor*) this->Pinza1); _pToolCModel = vtkModeloHerramienta::New(); /// Crear los objetos para el cálculo de colisiones... ////////////////////////////////////////////////////// _cajaPinza1 = vtkOBB::New(); _cajaPinza2 = vtkOBB::New(); _cajaPalo = vtkOBB::New(); double Bounds[6]; this->Pinza1->GetBounds(Bounds); this->_cajaPinza1->abajoDetrasIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPinza1->abajoDetrasIzquierda[1] = Bounds[2];//0.0f*fRadius; this->_cajaPinza1->abajoDetrasIzquierda[2] = Bounds[4];//-16.0f*fRadius; this->_cajaPinza1->abajoDetrasDerecha[0] = Bounds[2];//100.0f*fRadius; this->_cajaPinza1->abajoDetrasDerecha[1] = Bounds[4];//0.0f*fRadius; this->_cajaPinza1->abajoDetrasDerecha[2] = Bounds[5];//-16.0f*fRadius; this->_cajaPinza1->abajoFrenteIzquierda[0] = Bounds[0];//-100.0f*fRadius; this->_cajaPinza1->abajoFrenteIzquierda[1] = Bounds[2];//900.0f*fRadius; this->_cajaPinza1->abajoFrenteIzquierda[2] = Bounds[5];//-16.0f*fRadius; this->_cajaPinza1->abajoFrenteDerecha[0] = Bounds[1];//100.0f*fRadius; this->_cajaPinza1->abajoFrenteDerecha[1] = Bounds[2];//900.0f*fRadius; this->_cajaPinza1->abajoFrenteDerecha[2] = Bounds[5];//-16.0f*fRadius;; this->_cajaPinza1->arribaDetrasIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPinza1->arribaDetrasIzquierda[1] = Bounds[3];//0.0f*fRadius; this->_cajaPinza1->arribaDetrasIzquierda[2] = Bounds[4];//90.0f*fRadius; this->_cajaPinza1->arribaDetrasDerecha[0] = Bounds[1];//100.0f*fRadius ; this->_cajaPinza1->arribaDetrasDerecha[1] = Bounds[3];//0.0f*fRadius; this->_cajaPinza1->arribaDetrasDerecha[2] = Bounds[4];//90.0f*fRadius; this->_cajaPinza1->arribaFrenteIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPinza1->arribaFrenteIzquierda[1] = Bounds[3];//900.0f*fRadius; this->_cajaPinza1->arribaFrenteIzquierda[2] = Bounds[5];//90.0f*fRadius; this->_cajaPinza1->arribaFrenteDerecha[0] = Bounds[1];//100.0f*fRadius ; this->_cajaPinza1->arribaFrenteDerecha[1] = Bounds[3];//900.0f*fRadius; this->_cajaPinza1->arribaFrenteDerecha[2] = Bounds[5];//90.0f*fRadius; this->_cajaPinza1->id = _HOJA1; this->Pinza2->GetBounds(Bounds); //// this->_cajaPinza2->abajoDetrasIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPinza2->abajoDetrasIzquierda[1] = Bounds[2];//0.0f*fRadius; this->_cajaPinza2->abajoDetrasIzquierda[2] = Bounds[4];//-90.0f*fRadius; this->_cajaPinza2->abajoDetrasDerecha[0] = Bounds[2];//100.0f*fRadius; this->_cajaPinza2->abajoDetrasDerecha[1] = Bounds[4];//0.0f*fRadius; this->_cajaPinza2->abajoDetrasDerecha[2] = Bounds[5];//-90.0f*fRadius; this->_cajaPinza2->abajoFrenteIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPinza2->abajoFrenteIzquierda[1] = Bounds[2];//900.0f*fRadius; this->_cajaPinza2->abajoFrenteIzquierda[2] = Bounds[5];//-90.0f*fRadius; this->_cajaPinza2->abajoFrenteDerecha[0] = Bounds[1];//100.0f*fRadius; this->_cajaPinza2->abajoFrenteDerecha[1] = Bounds[2];//900.0f*fRadius; this->_cajaPinza2->abajoFrenteDerecha[2] = Bounds[5];//-90.0f*fRadius;; this->_cajaPinza2->arribaDetrasIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPinza2->arribaDetrasIzquierda[1] = Bounds[3];//0.0f*fRadius; this->_cajaPinza2->arribaDetrasIzquierda[2] = Bounds[4];//16.0f*fRadius; this->_cajaPinza2->arribaDetrasDerecha[0] = Bounds[1];//100.0f*fRadius ; this->_cajaPinza2->arribaDetrasDerecha[1] = Bounds[3];//0.0f*fRadius; this->_cajaPinza2->arribaDetrasDerecha[2] = Bounds[4];//16.0f*fRadius; this->_cajaPinza2->arribaFrenteIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPinza2->arribaFrenteIzquierda[1] = Bounds[3];//900.0f*fRadius; this->_cajaPinza2->arribaFrenteIzquierda[2] = Bounds[5];//16.0f*fRadius; this->_cajaPinza2->arribaFrenteDerecha[0] = Bounds[1];//100.0f*fRadius ; this->_cajaPinza2->arribaFrenteDerecha[1] = Bounds[3];//900.0f*fRadius; this->_cajaPinza2->arribaFrenteDerecha[2] = Bounds[5];//16.0f*fRadius; this->_cajaPinza2->id = _HOJA2; this->Estaticas->GetBounds(Bounds); //// this->_cajaPalo->abajoDetrasIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPalo->abajoDetrasIzquierda[1] = Bounds[2];//-4800.0f*fRadius; this->_cajaPalo->abajoDetrasIzquierda[2] = Bounds[4];//-100.0f*fRadius; this->_cajaPalo->abajoDetrasDerecha[0] = Bounds[2];//100.0f*fRadius; this->_cajaPalo->abajoDetrasDerecha[1] = Bounds[4];//-4800.0f*fRadius; this->_cajaPalo->abajoDetrasDerecha[2] = Bounds[5];//-100.0f*fRadius; this->_cajaPalo->abajoFrenteIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPalo->abajoFrenteIzquierda[1] = Bounds[2];//0.0f*fRadius; this->_cajaPalo->abajoFrenteIzquierda[2] = Bounds[5];//-100.0f*fRadius; this->_cajaPalo->abajoFrenteDerecha[0] = Bounds[1];//100.0f*fRadius; this->_cajaPalo->abajoFrenteDerecha[1] = Bounds[2];//0.0f*fRadius; this->_cajaPalo->abajoFrenteDerecha[2] = Bounds[5];//-100.0f*fRadius; this->_cajaPalo->arribaDetrasIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPalo->arribaDetrasIzquierda[1] = Bounds[3];//-4800.0f*fRadius; this->_cajaPalo->arribaDetrasIzquierda[2] = Bounds[4];//100.0f*fRadius; this->_cajaPalo->arribaDetrasDerecha[0] = Bounds[1];//100.0f*fRadius ; this->_cajaPalo->arribaDetrasDerecha[1] = Bounds[3];//-4800.0f*fRadius; this->_cajaPalo->arribaDetrasDerecha[2] = Bounds[4];//100.0f*fRadius; this->_cajaPalo->arribaFrenteIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPalo->arribaFrenteIzquierda[1] = Bounds[3];//0.0f*fRadius; this->_cajaPalo->arribaFrenteIzquierda[2] = Bounds[5];//100.0f*fRadius; this->_cajaPalo->arribaFrenteDerecha[0] = Bounds[1];//100.0f*fRadius ; this->_cajaPalo->arribaFrenteDerecha[1] = Bounds[3];//0.0f*fRadius; this->_cajaPalo->arribaFrenteDerecha[2] = Bounds[5];//100.0f*fRadius; this->_cajaPalo->id = 0; this->InitialTransform3DS(); this->MatrizTx(this->Pinza1->GetMatrix(),this->_cajaPinza1->matriz); this->MatrizTx(this->Pinza2->GetMatrix(),this->_cajaPinza2->matriz); this->MatrizTx(this->Estaticas->GetMatrix(),this->_cajaPalo->matriz); _pToolCModel->VectorDeCajas.reserve(3); _pToolCModel->VectorDeCajas.push_back(*_cajaPinza1); _pToolCModel->VectorDeCajas.push_back(*_cajaPinza2); _pToolCModel->VectorDeCajas.push_back(*_cajaPalo); } void vtkToolScissors::InitializeToolVTKFile(){ vtkPolyDataReader *Reader; // Lectura de los archivos .vtk Reader = vtkPolyDataReader::New(); Reader->SetFileName(this->PathToPinza1); Reader->SetOutput(this->PolyPinza1); Reader->Delete(); Reader = vtkPolyDataReader::New(); Reader->SetFileName(this->PathToPinza2); Reader->SetOutput(this->PolyPinza2); Reader->Delete(); Reader = vtkPolyDataReader ::New(); Reader->SetFileName(this->PathToStick); Reader->SetOutput(this->PolyStatic); Reader->Delete(); ////////////////////////////////////////////////// // Filtro para las transformaciones de los polydata // de las piezas dinámicas de la herramienta (pinzas) // y de la parte estática de las herramientas. this->TransformPinza1->Translate(0, 0, -5.5); this->TransformPinza2->Translate(0, 0, -5.5); this->TransformStatic->Translate(0, 0, -5.5); vtkTransformPolyDataFilter *Filter1; vtkTransformPolyDataFilter *Filter2; Filter1 = vtkTransformPolyDataFilter::New(); Filter2 = vtkTransformPolyDataFilter::New(); Filter1->SetInput(this->PolyPinza1); Filter1->SetTransform(this->TransformPinza1); Filter2->SetInput(this->PolyPinza2); Filter2->SetTransform(this->TransformPinza2); this->MapperPinza1->SetInput(Filter1->GetOutput()); this->MapperPinza2->SetInput(Filter2->GetOutput()); this->Pinza1->SetMapper(this->MapperPinza1); this->Pinza2->SetMapper(this->MapperPinza2); vtkTransformPolyDataFilter *FilterStatic = vtkTransformPolyDataFilter::New(); FilterStatic->SetInput(this->PolyStatic); FilterStatic->SetTransform(this->TransformStatic); this->MapperStatic->SetInput(FilterStatic->GetOutput()); this->ActorStatic->SetMapper(this->MapperStatic); this->Estaticas->AddPart(this->ActorStatic); this->ColeccionDeModelos->AddItem((vtkActor*) this->ActorStatic); this->ColeccionDeModelos->AddItem((vtkActor*) this->Pinza2); this->ColeccionDeModelos->AddItem((vtkActor*) this->Pinza1); this->ToolTransform->AddItem(this->TransformPinza1); this->ToolTransform->AddItem(this->TransformPinza2); this->ToolTransform->AddItem(this->TransformStatic); /// Crear los objetos para el cálculo de colisiones... ////////////////////////////////////////////////////// this->_pToolCModel = vtkModeloHerramienta::New(); this->_cajaPinza1 = vtkOBB::New(); this->_cajaPinza2 = vtkOBB::New(); this->_cajaPalo = vtkOBB::New(); double Bounds[6]; this->Pinza1->GetBounds(Bounds); this->_cajaPinza1->abajoDetrasIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPinza1->abajoDetrasIzquierda[1] = Bounds[2];//0.0f*fRadius; this->_cajaPinza1->abajoDetrasIzquierda[2] = Bounds[4];//-16.0f*fRadius; this->_cajaPinza1->abajoDetrasDerecha[0] = Bounds[2];//100.0f*fRadius; this->_cajaPinza1->abajoDetrasDerecha[1] = Bounds[4];//0.0f*fRadius; this->_cajaPinza1->abajoDetrasDerecha[2] = Bounds[5];//-16.0f*fRadius; this->_cajaPinza1->abajoFrenteIzquierda[0] = Bounds[0];//-100.0f*fRadius; this->_cajaPinza1->abajoFrenteIzquierda[1] = Bounds[2];//900.0f*fRadius; this->_cajaPinza1->abajoFrenteIzquierda[2] = Bounds[5];//-16.0f*fRadius; this->_cajaPinza1->abajoFrenteDerecha[0] = Bounds[1];//100.0f*fRadius; this->_cajaPinza1->abajoFrenteDerecha[1] = Bounds[2];//900.0f*fRadius; this->_cajaPinza1->abajoFrenteDerecha[2] = Bounds[5];//-16.0f*fRadius;; this->_cajaPinza1->arribaDetrasIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPinza1->arribaDetrasIzquierda[1] = Bounds[3];//0.0f*fRadius; this->_cajaPinza1->arribaDetrasIzquierda[2] = Bounds[4];//90.0f*fRadius; this->_cajaPinza1->arribaDetrasDerecha[0] = Bounds[1];//100.0f*fRadius ; this->_cajaPinza1->arribaDetrasDerecha[1] = Bounds[3];//0.0f*fRadius; this->_cajaPinza1->arribaDetrasDerecha[2] = Bounds[4];//90.0f*fRadius; this->_cajaPinza1->arribaFrenteIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPinza1->arribaFrenteIzquierda[1] = Bounds[3];//900.0f*fRadius; this->_cajaPinza1->arribaFrenteIzquierda[2] = Bounds[5];//90.0f*fRadius; this->_cajaPinza1->arribaFrenteDerecha[0] = Bounds[1];//100.0f*fRadius ; this->_cajaPinza1->arribaFrenteDerecha[1] = Bounds[3];//900.0f*fRadius; this->_cajaPinza1->arribaFrenteDerecha[2] = Bounds[5];//90.0f*fRadius; this->_cajaPinza1->id = _HOJA1; this->Pinza2->GetBounds(Bounds); //// this->_cajaPinza2->abajoDetrasIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPinza2->abajoDetrasIzquierda[1] = Bounds[2];//0.0f*fRadius; this->_cajaPinza2->abajoDetrasIzquierda[2] = Bounds[4];//-90.0f*fRadius; this->_cajaPinza2->abajoDetrasDerecha[0] = Bounds[2];//100.0f*fRadius; this->_cajaPinza2->abajoDetrasDerecha[1] = Bounds[4];//0.0f*fRadius; this->_cajaPinza2->abajoDetrasDerecha[2] = Bounds[5];//-90.0f*fRadius; this->_cajaPinza2->abajoFrenteIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPinza2->abajoFrenteIzquierda[1] = Bounds[2];//900.0f*fRadius; this->_cajaPinza2->abajoFrenteIzquierda[2] = Bounds[5];//-90.0f*fRadius; this->_cajaPinza2->abajoFrenteDerecha[0] = Bounds[1];//100.0f*fRadius; this->_cajaPinza2->abajoFrenteDerecha[1] = Bounds[2];//900.0f*fRadius; this->_cajaPinza2->abajoFrenteDerecha[2] = Bounds[5];//-90.0f*fRadius;; this->_cajaPinza2->arribaDetrasIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPinza2->arribaDetrasIzquierda[1] = Bounds[3];//0.0f*fRadius; this->_cajaPinza2->arribaDetrasIzquierda[2] = Bounds[4];//16.0f*fRadius; this->_cajaPinza2->arribaDetrasDerecha[0] = Bounds[1];//100.0f*fRadius ; this->_cajaPinza2->arribaDetrasDerecha[1] = Bounds[3];//0.0f*fRadius; this->_cajaPinza2->arribaDetrasDerecha[2] = Bounds[4];//16.0f*fRadius; this->_cajaPinza2->arribaFrenteIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPinza2->arribaFrenteIzquierda[1] = Bounds[3];//900.0f*fRadius; this->_cajaPinza2->arribaFrenteIzquierda[2] = Bounds[5];//16.0f*fRadius; this->_cajaPinza2->arribaFrenteDerecha[0] = Bounds[1];//100.0f*fRadius ; this->_cajaPinza2->arribaFrenteDerecha[1] = Bounds[3];//900.0f*fRadius; this->_cajaPinza2->arribaFrenteDerecha[2] = Bounds[5];//16.0f*fRadius; this->_cajaPinza2->id = _HOJA2; this->Estaticas->GetBounds(Bounds); //// this->_cajaPalo->abajoDetrasIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPalo->abajoDetrasIzquierda[1] = Bounds[2];//-4800.0f*fRadius; this->_cajaPalo->abajoDetrasIzquierda[2] = Bounds[4];//-100.0f*fRadius; this->_cajaPalo->abajoDetrasDerecha[0] = Bounds[2];//100.0f*fRadius; this->_cajaPalo->abajoDetrasDerecha[1] = Bounds[4];//-4800.0f*fRadius; this->_cajaPalo->abajoDetrasDerecha[2] = Bounds[5];//-100.0f*fRadius; this->_cajaPalo->abajoFrenteIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPalo->abajoFrenteIzquierda[1] = Bounds[2];//0.0f*fRadius; this->_cajaPalo->abajoFrenteIzquierda[2] = Bounds[5];//-100.0f*fRadius; this->_cajaPalo->abajoFrenteDerecha[0] = Bounds[1];//100.0f*fRadius; this->_cajaPalo->abajoFrenteDerecha[1] = Bounds[2];//0.0f*fRadius; this->_cajaPalo->abajoFrenteDerecha[2] = Bounds[5];//-100.0f*fRadius; this->_cajaPalo->arribaDetrasIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPalo->arribaDetrasIzquierda[1] = Bounds[3];//-4800.0f*fRadius; this->_cajaPalo->arribaDetrasIzquierda[2] = Bounds[4];//100.0f*fRadius; this->_cajaPalo->arribaDetrasDerecha[0] = Bounds[1];//100.0f*fRadius ; this->_cajaPalo->arribaDetrasDerecha[1] = Bounds[3];//-4800.0f*fRadius; this->_cajaPalo->arribaDetrasDerecha[2] = Bounds[4];//100.0f*fRadius; this->_cajaPalo->arribaFrenteIzquierda[0] = Bounds[0];//-100.0f*fRadius ; this->_cajaPalo->arribaFrenteIzquierda[1] = Bounds[3];//0.0f*fRadius; this->_cajaPalo->arribaFrenteIzquierda[2] = Bounds[5];//100.0f*fRadius; this->_cajaPalo->arribaFrenteDerecha[0] = Bounds[1];//100.0f*fRadius ; this->_cajaPalo->arribaFrenteDerecha[1] = Bounds[3];//0.0f*fRadius; this->_cajaPalo->arribaFrenteDerecha[2] = Bounds[5];//100.0f*fRadius; this->_cajaPalo->id = 0; // INDICAMOS LAS CARAS DE LAS CAJAS A LAS QUE NO PODEMOS LLEVAR UN VERTICE (SON CARAS RESTRINGIDAS) _cajaPinza1->bCaraRestringida[CaraFrontal] = false; _cajaPinza1->bCaraRestringida[CaraTrasera] = true; _cajaPinza1->bCaraRestringida[CaraDerecha] = false; _cajaPinza1->bCaraRestringida[CaraIzquierda] = false; _cajaPinza1->bCaraRestringida[CaraSuperior] = false; _cajaPinza1->bCaraRestringida[CaraInferior] = false; _cajaPinza2->bCaraRestringida[CaraFrontal] = false; _cajaPinza2->bCaraRestringida[CaraTrasera] = true; _cajaPinza2->bCaraRestringida[CaraDerecha] = false; _cajaPinza2->bCaraRestringida[CaraIzquierda] = false; _cajaPinza2->bCaraRestringida[CaraSuperior] = false; _cajaPinza2->bCaraRestringida[CaraInferior] = false; _cajaPalo->bCaraRestringida[CaraFrontal] = true; _cajaPalo->bCaraRestringida[CaraTrasera] = true; _cajaPalo->bCaraRestringida[CaraDerecha] = false; _cajaPalo->bCaraRestringida[CaraIzquierda] = false; _cajaPalo->bCaraRestringida[CaraSuperior] = false; _cajaPalo->bCaraRestringida[CaraInferior] = false; ///*******************************_________***************************** this->InitialTransformVTK(); this->MatrizTx(this->Pinza1->GetMatrix(),this->_cajaPinza1->matriz); this->MatrizTx(this->Pinza2->GetMatrix(),this->_cajaPinza2->matriz); this->MatrizTx(this->Estaticas->GetMatrix(),this->_cajaPalo->matriz); this->_pToolCModel->VectorDeCajas.reserve(3); this->_pToolCModel->VectorDeCajas.push_back(*_cajaPinza1); this->_pToolCModel->VectorDeCajas.push_back(*_cajaPinza2); this->_pToolCModel->VectorDeCajas.push_back(*_cajaPalo); } // // // void vtkToolScissors::updateCollisionModel(){ float vector[3]; /// Actualizamos el vector desplazamiento para saber como se ha movido la herramienta con la matriz anterior MG::multPM(_cajaPinza1->arribaFrenteIzquierda,_cajaPinza1->matriz,vector); this->MatrizTx(this->Pinza1->GetMatrix(),this->_cajaPinza1->matriz); MG::multPM(_cajaPinza1->arribaFrenteIzquierda,_cajaPinza1->matriz,vector); this->_pToolCModel->VectorDeCajas[0]=(*_cajaPinza1); //Quito Sam :S if ((this->Apertura<0.1f)) /// La pinza está cerrada, no deben enviarse los vértices a las caras internas _cajaPinza2->bCaraRestringida[CaraSuperior] = true; else _cajaPinza2->bCaraRestringida[CaraSuperior] = false; this->MatrizTx(this->Pinza2->GetMatrix(),this->_cajaPinza2->matriz); this->_pToolCModel->VectorDeCajas[1]=(*_cajaPinza2); this->MatrizTx(this->Estaticas->GetMatrix(),this->_cajaPalo->matriz); _pToolCModel->VectorDeCajas[2]=(*_cajaPalo); } bool vtkToolScissors::possibleCut(){ return _bPossCut; } void vtkToolScissors::PrintSelf(ostream& os,vtkIndent indent) { this->Superclass::PrintSelf(os,indent); }