mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
0027398: Integrate Qt Browser Widget to Open CASCADE Technology
The following implementation has been made: - CMake procedure is extended to compile Qt tools. This is optional and is handled by USE_QT_TOOLS option(OFF by default) - It is possible to build Qt tools using Qt5 or Qt4, it is settled with USE_QT4 option. - Sample of DFBrowser tool is available in samples/tools/TInspectorEXE. It is build with tools, executable is placed in binaries. To start the sample, use dfbrowser.bat command. - DFBrowser tool may be started from DRAW
This commit is contained in:
107
tools/DFBrowser/DFBrowser_OpenApplication.cxx
Normal file
107
tools/DFBrowser/DFBrowser_OpenApplication.cxx
Normal file
@@ -0,0 +1,107 @@
|
||||
// Created on: 2017-06-16
|
||||
// Created by: Natalia ERMOLAEVA
|
||||
// Copyright (c) 2017 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#include <DFBrowser_OpenApplication.hxx>
|
||||
|
||||
#include <BinDrivers.hxx>
|
||||
#include <BinLDrivers.hxx>
|
||||
#include <BinXCAFDrivers.hxx>
|
||||
#include <PCDM_ReadWriter.hxx>
|
||||
#include <Standard_Version.hxx>
|
||||
#include <StdDrivers.hxx>
|
||||
#include <StdLDrivers.hxx>
|
||||
#include <STEPCAFControl_Reader.hxx>
|
||||
#include <STEPCAFControl_Controller.hxx>
|
||||
#include <TPrsStd_DriverTable.hxx>
|
||||
#include <XCAFApp_Application.hxx>
|
||||
#include <XCAFPrs_Driver.hxx>
|
||||
#include <XmlDrivers.hxx>
|
||||
#include <XmlLDrivers.hxx>
|
||||
#include <XmlXCAFDrivers.hxx>
|
||||
#include <UTL.hxx>
|
||||
|
||||
//#define REQUIRE_OCAF_REVIEW:24
|
||||
namespace DFBrowser_OpenApplication
|
||||
{
|
||||
|
||||
// =======================================================================
|
||||
// function : OpenApplication
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
Handle(TDocStd_Application) OpenApplication (const TCollection_AsciiString& theFileName, bool& isSTEPFile)
|
||||
{
|
||||
Handle(TDocStd_Application) anApplication = CreateApplicationBySTEPFile (theFileName);
|
||||
if (!anApplication.IsNull())
|
||||
{
|
||||
isSTEPFile = true;
|
||||
return anApplication;
|
||||
}
|
||||
|
||||
#if OCC_VERSION_HEX > 0x060901
|
||||
// Load static variables for STEPCAF (ssv; 16.08.2012)
|
||||
STEPCAFControl_Controller::Init();
|
||||
|
||||
anApplication = new TDocStd_Application();
|
||||
// Initialize standard document formats at creation - they should
|
||||
// be available even if this DRAW plugin is not loaded by pload command
|
||||
StdLDrivers::DefineFormat (anApplication);
|
||||
BinLDrivers::DefineFormat (anApplication);
|
||||
XmlLDrivers::DefineFormat (anApplication);
|
||||
StdDrivers::DefineFormat (anApplication);
|
||||
BinDrivers::DefineFormat (anApplication);
|
||||
XmlDrivers::DefineFormat (anApplication);
|
||||
|
||||
// Initialize XCAF formats
|
||||
BinXCAFDrivers::DefineFormat (anApplication);
|
||||
XmlXCAFDrivers::DefineFormat (anApplication);
|
||||
|
||||
// Register driver in global table for displaying XDE documents
|
||||
// in 3d viewer using OCAF mechanics
|
||||
TPrsStd_DriverTable::Get()->AddDriver (XCAFPrs_Driver::GetID(), new XCAFPrs_Driver);
|
||||
|
||||
Handle(TDocStd_Document) aDocument;
|
||||
PCDM_ReaderStatus aStatus = anApplication->Open (theFileName, aDocument);
|
||||
if (aStatus != PCDM_RS_OK)
|
||||
return Handle(TDocStd_Application)();
|
||||
#endif
|
||||
return anApplication;
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : CreateApplicationBySTEPFile
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
Handle(TDocStd_Application) CreateApplicationBySTEPFile (const TCollection_AsciiString& theFileName)
|
||||
{
|
||||
if (!theFileName.EndsWith (".step") && !theFileName.EndsWith (".stp"))
|
||||
return Handle(TDocStd_Application)();
|
||||
|
||||
Handle(TDocStd_Application) aTmpApplication = XCAFApp_Application::GetApplication();
|
||||
STEPCAFControl_Reader aStepReader;
|
||||
|
||||
const TCollection_AsciiString aStr (theFileName);
|
||||
IFSelect_ReturnStatus aStatus = aStepReader.ReadFile (aStr.ToCString());
|
||||
if (aStatus != IFSelect_RetDone)
|
||||
return Handle(TDocStd_Application)();
|
||||
|
||||
aStepReader.SetColorMode (Standard_True);
|
||||
aStepReader.SetLayerMode (Standard_True);
|
||||
aStepReader.SetNameMode (Standard_True);
|
||||
|
||||
Handle(TDocStd_Document) aDocument;
|
||||
aTmpApplication->NewDocument ("BinOcaf", aDocument);
|
||||
return aStepReader.Transfer (aDocument) ? aTmpApplication : Handle(TDocStd_Application)();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user