X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FVISU_I%2FVISU_DumpPython.cc;h=38b1318d8878861529af5be5a4018321eb5235c7;hb=e7e2c50aba46c639191ce54d4b42ae4587abb652;hp=d782714ea228e6c4f880baed244ad8bad13c0b83;hpb=4056171343730e83feeac85d0caeb45fcf2bd0c9;p=modules%2Fvisu.git diff --git a/src/VISU_I/VISU_DumpPython.cc b/src/VISU_I/VISU_DumpPython.cc index d782714e..38b1318d 100644 --- a/src/VISU_I/VISU_DumpPython.cc +++ b/src/VISU_I/VISU_DumpPython.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // VISU OBJECT : interactive object for VISU entities implementation // File : VISU_DumpPython.cc // Author : Alexey PETROV @@ -35,6 +36,7 @@ #include "VISU_DeformedShape_i.hh" #include "VISU_CutPlanes_i.hh" #include "VISU_CutLines_i.hh" +#include "VISU_CutSegment_i.hh" #include "VISU_Vectors_i.hh" #include "VISU_StreamLines_i.hh" #include "VISU_Plot3D_i.hh" @@ -48,7 +50,7 @@ #include "utilities.h" #include -#include +#include #include #include @@ -211,6 +213,51 @@ namespace VISU theServant->GetOffset(x,y,z); theStr<GetMarkerType(); + if( aMarkerType != VISU::MT_NONE ) { + if( aMarkerType != VISU::MT_USER ) { + VISU::MarkerScale aMarkerScale = theServant->GetMarkerScale(); + std::string aParam1, aParam2; + switch( aMarkerType ) { + case MT_POINT: aParam1 = "MT_POINT"; break; + case MT_PLUS: aParam1 = "MT_PLUS"; break; + case MT_STAR: aParam1 = "MT_STAR"; break; + case MT_O: aParam1 = "MT_O"; break; + case MT_X: aParam1 = "MT_X"; break; + case MT_O_POINT: aParam1 = "MT_O_POINT"; break; + case MT_O_PLUS: aParam1 = "MT_O_PLUS"; break; + case MT_O_STAR: aParam1 = "MT_O_STAR"; break; + case MT_O_X: aParam1 = "MT_O_X"; break; + case MT_POINT_SPRITE: aParam1 = "MT_POINT_SPRITE"; break; + default: aParam1 = "MT_NONE"; break; + } + switch( aMarkerScale ) { + case MS_10: aParam2 = "MS_10"; break; + case MS_15: aParam2 = "MS_15"; break; + case MS_20: aParam2 = "MS_20"; break; + case MS_25: aParam2 = "MS_25"; break; + case MS_30: aParam2 = "MS_30"; break; + case MS_35: aParam2 = "MS_35"; break; + case MS_40: aParam2 = "MS_40"; break; + case MS_45: aParam2 = "MS_45"; break; + case MS_50: aParam2 = "MS_50"; break; + case MS_55: aParam2 = "MS_55"; break; + case MS_60: aParam2 = "MS_60"; break; + case MS_65: aParam2 = "MS_65"; break; + case MS_70: aParam2 = "MS_70"; break; + default: aParam2 = "MS_NONE"; break; + } + if( aMarkerType == MT_POINT_SPRITE ) + aParam2 = "MS_NONE"; + theStr<GetMarkerTexture(); + if( aMarkerTexture >= 0 ) + theStr<GetGaussMetric()){ + case AVERAGE: + aParam = "VISU.AVERAGE"; + break; + case MINIMUM: + aParam = "VISU.MINIMUM"; + break; + case MAXIMUM: + aParam = "VISU.MAXIMUM"; + break; + } + theStr<GetLinkColor(); + theStr<IsRangeFixed()) + theStr<GetMin()<<", "<GetMax()<<")"<GetPoint1(x1, y1, z1); + theServant->GetPoint2(x2, y2, z2); + theStr<IsUseAbsoluteLength(); + theStr<GetNbRows(); // push values and their indices into streams - strstream values, rows, columns; + stringstream values, rows, columns; string comma = ""; for(CORBA::Long i = 1; i <= aNbColumns; i++){ for(CORBA::Long j = aNbRows; j > 0; j--){ @@ -879,7 +976,7 @@ namespace VISU } } // push titles and units into streams - strstream rowUnits, rowTitles, colTitles; + stringstream rowUnits, rowTitles, colTitles; SALOMEDS::StringSeq_var aRowUnits = theTableAttr->GetRowUnits(); SALOMEDS::StringSeq_var aRowTitles = theTableAttr->GetRowTitles(); comma = ""; @@ -1358,6 +1455,25 @@ namespace VISU theStr<(GetServant(anObj).in())){ + TCreateFromResult aPrsFactory(theSObject, aServant, aName, "CutSegmentOnField", theArgumentName); + thePrefix = CutSegmentToPython(theSObject, aServant, theStr, aName, aPrsFactory, thePrefix); + + theArgumentName = aName; + DumpChildrenToPython(theStudy, + theIsPublished, + theIsValidScript, + theSObject, + theStr, + theName2EntryMap, + theEntry2NameMap, + theArgumentName, + thePrefix); + + theStr<(GetServant(anObj).in())) { TCreateFromResult aPrsFactory(theSObject, aServant, aName, "Plot3DOnField", theArgumentName); @@ -1448,16 +1564,21 @@ namespace VISU if(Curve_i* aServant = dynamic_cast(GetServant(anObj).in())) { bool withZ = aServant->GetZRow()>0; + bool isV2 = aServant->GetIsV2(); theStr << thePrefix << "aName2ObjectMap['" << aName << "'] = visu.CreateCurve"; - if( withZ ) + if( isV2 ) + theStr << "WithZExt"; + else if( withZ ) theStr << "WithZ"; theStr << "(" << theArgumentName<< // table - ", "<GetHRow()<< // H row - ", "<GetVRow(); // V row - if( withZ ) + ", "<GetHRow()<< // H row + ", "<GetVRow(); // V row + if( withZ || isV2 ) theStr << ", " << aServant->GetZRow(); // Z row + if( isV2 ) + theStr << ", " << aServant->GetIsV2(); // right axis theStr << ", '"<GetTitle()<<"'"; // title SALOMEDS::Color aColor = aServant->GetColor(); @@ -1592,8 +1713,17 @@ namespace VISU if (aTypeName == "ImportTables") { QString aFileName = VISU::Storable::FindValue(aMap,"myFileName",&anIsExist); if(anIsExist){ - std::string aName = GenerateName(theSObject,theName2EntryMap,theEntry2NameMap); - theStr<(aDevice)){ + CutSegmentToPython(aSObject, aServant, theStr, "aDevice", aPrsFactory, aPrefix3); + break; + } case VISU::TPLOT3D: if(Plot3D_i* aServant = dynamic_cast(aDevice)){ Plot3DToPython(aSObject, aServant, theStr, "aDevice", aPrsFactory, aPrefix3); @@ -1921,6 +2056,94 @@ namespace VISU } + //--------------------------------------------------------------------------- + void + DumpEvolutionsToPython(SALOMEDS::Study_ptr theStudy, + CORBA::Boolean theIsPublished, + CORBA::Boolean& theIsValidScript, + SALOMEDS::SObject_ptr theSObject, + std::ostream& theStr, + TName2EntryMap& theName2EntryMap, + TEntry2NameMap& theEntry2NameMap, + std::string thePrefix) + { + if(!theIsPublished) return; + + SALOMEDS::ChildIterator_var aChildItet = theStudy->NewChildIterator(theSObject); + for(aChildItet->InitEx(false); aChildItet->More(); aChildItet->Next()){ + SALOMEDS::SObject_var aSObject = aChildItet->Value(); + + SALOMEDS::GenericAttribute_var anAttr; + if (!aSObject->FindAttribute(anAttr, "AttributeString")) continue; + + SALOMEDS::AttributeString_var aStringAttr = SALOMEDS::AttributeString::_narrow(anAttr); + QString value (aStringAttr->Value()); + if(value.isEmpty()) continue; + + VISU::Storable::TRestoringMap aMap; + VISU::Storable::StringToMap(value, aMap); + bool isExist; + + QString aTypeName = VISU::Storable::FindValue(aMap,"myComment",&isExist); + if(!isExist || aTypeName != "EVOLUTION") continue; + + //EVOLUTION + theStr<GetName(); + theStr<NewChildIterator(aSObject); + for (anIter->Init(); anIter->More(); anIter->Next()) { + SALOMEDS::SObject_var anObj = anIter->Value(); + + //FIELD + theStr<FindAttribute(anAttr, "AttributeString")) { + aStringAttr = SALOMEDS::AttributeString::_narrow(anAttr); + theStr<Value()<<"')"<< endl; + } + + SALOMEDS::SObject_var refObj; + if(anObj->ReferencedObject(refObj)) { + SALOMEDS::SObject_var father = refObj->GetFather(); + value = refObj->GetName(); + QString path(theStudy->GetObjectPath(father)); + //The following code requierd as a field name can contain '/' character + theStr<GetName(); + if(!value.isEmpty()) theStr<NewChildIterator(anObj); + for(aChildItet->InitEx(false); aChildItet->More(); aChildItet->Next()){ + SALOMEDS::SObject_var aSObject = aChildItet->Value(); + + std::string anArgumentName = "fieldSO"; + DumpTableAttrToPython(theStudy, + theIsPublished, + theIsValidScript, + aSObject, + theStr, + theName2EntryMap, + theEntry2NameMap, + anArgumentName, + thePrefix); + } + } + + } + + theStr<StudyId()); + if(anIter == theMarkerMap.end()) + return; + + theStr<second; + VTK::MarkerMap::const_iterator aMarkerIter = aMarkerMap.begin(); + for(; aMarkerIter != aMarkerMap.end(); aMarkerIter++) { + int aMarkerId = aMarkerIter->first; + std::string aMarkerTexture = aMarkerIter->second.first; + theStr<