mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2024-11-13 17:18:36 +05:00
progress bar on t_shape_builder plugin
This commit is contained in:
parent
bb7dc21716
commit
8fb7cb1a01
@ -21,7 +21,7 @@ ADD_SUBDIRECTORY(t_shape)
|
|||||||
|
|
||||||
# scripts / static
|
# scripts / static
|
||||||
SET(plugin_SCRIPTS
|
SET(plugin_SCRIPTS
|
||||||
geom_plugins.py
|
geom_plugins.py
|
||||||
)
|
)
|
||||||
|
|
||||||
# --- rules ---
|
# --- rules ---
|
||||||
|
@ -22,8 +22,9 @@
|
|||||||
import salome_pluginsmanager
|
import salome_pluginsmanager
|
||||||
|
|
||||||
def t_shape_fluid(context):
|
def t_shape_fluid(context):
|
||||||
from salome.geom.t_shape import t_shape_builder
|
#from salome.geom.t_shape import t_shape_builder
|
||||||
from salome.geom.t_shape import t_shape_dialog
|
from salome.geom.t_shape import t_shape_dialog
|
||||||
|
from salome.geom.t_shape import t_shape_progress
|
||||||
import xalome
|
import xalome
|
||||||
from PyQt4.QtGui import QMessageBox
|
from PyQt4.QtGui import QMessageBox
|
||||||
activeStudy = context.study
|
activeStudy = context.study
|
||||||
@ -37,7 +38,9 @@ def t_shape_fluid(context):
|
|||||||
if dialog.wasOk():
|
if dialog.wasOk():
|
||||||
r1, r2, h1, h2, thickness = dialog.getData()
|
r1, r2, h1, h2, thickness = dialog.getData()
|
||||||
#QMessageBox.about(None, "Building in progress", "building shape, please be patient")
|
#QMessageBox.about(None, "Building in progress", "building shape, please be patient")
|
||||||
shape = t_shape_builder.build_shape(activeStudy, r1, r2, h1, h2, thickness)
|
#shape = t_shape_builder.build_shape(activeStudy, r1, r2, h1, h2, thickness)
|
||||||
|
shapeBuilder = t_shape_progress.t_shape_progress()
|
||||||
|
shape = shapeBuilder.run(activeStudy, r1, r2, h1, h2, thickness)
|
||||||
entry = xalome.addToStudy(activeStudy, shape, "T_shape_fluid" )
|
entry = xalome.addToStudy(activeStudy, shape, "T_shape_fluid" )
|
||||||
xalome.displayShape(entry)
|
xalome.displayShape(entry)
|
||||||
#if dialog.wasOk():
|
#if dialog.wasOk():
|
||||||
|
@ -27,6 +27,7 @@ SET(plugin_SCRIPTS
|
|||||||
t_shape_builder.py
|
t_shape_builder.py
|
||||||
t_shape_dialog.py
|
t_shape_dialog.py
|
||||||
t_shape_dialog.ui
|
t_shape_dialog.ui
|
||||||
|
t_shape_progress.py
|
||||||
)
|
)
|
||||||
|
|
||||||
# uic files / to be processed by pyuic
|
# uic files / to be processed by pyuic
|
||||||
|
@ -111,7 +111,7 @@ def arcsProjetes(study, vf, face):
|
|||||||
pass
|
pass
|
||||||
return lord
|
return lord
|
||||||
|
|
||||||
def build_shape(study, r1, r2, h1, h2, solid_thickness=0):
|
def build_shape(study, r1, r2, h1, h2, solid_thickness=0, progressBar=None ):
|
||||||
""" Builds the final shape """
|
""" Builds the final shape """
|
||||||
|
|
||||||
if solid_thickness < 1e-7:
|
if solid_thickness < 1e-7:
|
||||||
@ -136,6 +136,9 @@ def build_shape(study, r1, r2, h1, h2, solid_thickness=0):
|
|||||||
# --- Creation of the jonction faces
|
# --- Creation of the jonction faces
|
||||||
[faci, sect45, arc1, l1, lord90, lord45, edges, arcextru] = jonction(study, r1, r2,\
|
[faci, sect45, arc1, l1, lord90, lord45, edges, arcextru] = jonction(study, r1, r2,\
|
||||||
h1, h2, a1)
|
h1, h2, a1)
|
||||||
|
if progressBar is not None:
|
||||||
|
progressBar.addSteps(1)
|
||||||
|
|
||||||
if with_solid:
|
if with_solid:
|
||||||
# The same code is executed again with different external radiuses in order
|
# The same code is executed again with different external radiuses in order
|
||||||
# to get the needed faces and edges to build the solid layer of the pipe
|
# to get the needed faces and edges to build the solid layer of the pipe
|
||||||
@ -150,11 +153,17 @@ def build_shape(study, r1, r2, h1, h2, solid_thickness=0):
|
|||||||
for i,l in enumerate(lord45):
|
for i,l in enumerate(lord45):
|
||||||
faces_jonction_ext.append(geompy.MakeQuad2Edges(lord45[i],lord45_ext[i]))
|
faces_jonction_ext.append(geompy.MakeQuad2Edges(lord45[i],lord45_ext[i]))
|
||||||
|
|
||||||
|
if progressBar is not None:
|
||||||
|
progressBar.addSteps(1)
|
||||||
|
|
||||||
# --- extrusion droite des faces de jonction, pour reconstituer les demi cylindres
|
# --- extrusion droite des faces de jonction, pour reconstituer les demi cylindres
|
||||||
if with_solid:
|
if with_solid:
|
||||||
sect45 = geompy.MakeCompound([sect45]+faces_jonction_ext[-3:])
|
sect45 = geompy.MakeCompound([sect45]+faces_jonction_ext[-3:])
|
||||||
sect45 = geompy.MakeGlueEdges(sect45, 1e-7)
|
sect45 = geompy.MakeGlueEdges(sect45, 1e-7)
|
||||||
|
|
||||||
|
if progressBar is not None:
|
||||||
|
progressBar.addSteps(1)
|
||||||
|
|
||||||
extru1 = geompy.MakePrismVecH(sect45, OX, h1+10)
|
extru1 = geompy.MakePrismVecH(sect45, OX, h1+10)
|
||||||
|
|
||||||
faces_coupe = faci[5:]
|
faces_coupe = faci[5:]
|
||||||
@ -163,6 +172,9 @@ def build_shape(study, r1, r2, h1, h2, solid_thickness=0):
|
|||||||
base2 = geompy.MakePartition(faces_coupe, [], [], [], geompy.ShapeType["FACE"], 0, [], 0, True)
|
base2 = geompy.MakePartition(faces_coupe, [], [], [], geompy.ShapeType["FACE"], 0, [], 0, True)
|
||||||
extru2 = geompy.MakePrismVecH(base2, OZ, h2)
|
extru2 = geompy.MakePrismVecH(base2, OZ, h2)
|
||||||
|
|
||||||
|
if progressBar is not None:
|
||||||
|
progressBar.addSteps(1)
|
||||||
|
|
||||||
# --- partition et coupe
|
# --- partition et coupe
|
||||||
|
|
||||||
if with_solid:
|
if with_solid:
|
||||||
@ -171,24 +183,36 @@ def build_shape(study, r1, r2, h1, h2, solid_thickness=0):
|
|||||||
demiDisque = geompy.MakeFaceWires([arc1, l1[0]], 1)
|
demiDisque = geompy.MakeFaceWires([arc1, l1[0]], 1)
|
||||||
demiCylindre = geompy.MakePrismVecH(demiDisque, OX, h1)
|
demiCylindre = geompy.MakePrismVecH(demiDisque, OX, h1)
|
||||||
|
|
||||||
|
if progressBar is not None:
|
||||||
|
progressBar.addSteps(1)
|
||||||
|
|
||||||
box = geompy.MakeBox(0, -2*(r1+h1), -2*(r1+h1), 2*(r1+h1), 2*(r1+h1), 2*(r1+h1))
|
box = geompy.MakeBox(0, -2*(r1+h1), -2*(r1+h1), 2*(r1+h1), 2*(r1+h1), 2*(r1+h1))
|
||||||
rot = geompy.MakeRotation(box, OY, 45*math.pi/180.0)
|
rot = geompy.MakeRotation(box, OY, 45*math.pi/180.0)
|
||||||
|
|
||||||
# NOTE: The following Cut takes almost half of the total execution time
|
# NOTE: The following Cut takes almost half of the total execution time
|
||||||
garder = geompy.MakeCutList(demiCylindre, [extru2, rot], True)
|
garder = geompy.MakeCutList(demiCylindre, [extru2, rot], True)
|
||||||
|
|
||||||
|
if progressBar is not None:
|
||||||
|
progressBar.addSteps(10)
|
||||||
|
|
||||||
faces_coupe = faci[:5]
|
faces_coupe = faci[:5]
|
||||||
if with_solid:
|
if with_solid:
|
||||||
faces_coupe.extend(faces_jonction_ext[-7:])
|
faces_coupe.extend(faces_jonction_ext[-7:])
|
||||||
raccord = geompy.MakePartition([garder], faces_coupe + [arcextru], [], [], geompy.ShapeType["SOLID"], 0, [], 0, True)
|
raccord = geompy.MakePartition([garder], faces_coupe + [arcextru], [], [], geompy.ShapeType["SOLID"], 0, [], 0, True)
|
||||||
assemblage = geompy.MakeCompound([raccord, extru1, extru2])
|
assemblage = geompy.MakeCompound([raccord, extru1, extru2])
|
||||||
assemblage = geompy.MakeGlueFaces(assemblage, 1e-7)
|
assemblage = geompy.MakeGlueFaces(assemblage, 1e-7)
|
||||||
|
|
||||||
|
if progressBar is not None:
|
||||||
|
progressBar.addSteps(2)
|
||||||
|
|
||||||
box = geompy.MakeBox(-1, -(r1+r2+2*solid_thickness), -1, h1, r1+r2+2*solid_thickness, h2)
|
box = geompy.MakeBox(-1, -(r1+r2+2*solid_thickness), -1, h1, r1+r2+2*solid_thickness, h2)
|
||||||
|
|
||||||
# NOTE: This operation takes about 1/4 of the total execution time
|
# NOTE: This operation takes about 1/4 of the total execution time
|
||||||
final = geompy.MakeCommonList([box, assemblage], True)
|
final = geompy.MakeCommonList([box, assemblage], True)
|
||||||
|
|
||||||
|
if progressBar is not None:
|
||||||
|
progressBar.addSteps(5)
|
||||||
|
|
||||||
# --- Partie inférieure
|
# --- Partie inférieure
|
||||||
|
|
||||||
v3, l3, arc3, part3 = demidisk(study, r1, a1, 180.0, solid_thickness)
|
v3, l3, arc3, part3 = demidisk(study, r1, a1, 180.0, solid_thickness)
|
||||||
@ -200,7 +224,10 @@ def build_shape(study, r1, r2, h1, h2, solid_thickness=0):
|
|||||||
plane = geompy.MakePlane(O,OX,2000)
|
plane = geompy.MakePlane(O,OX,2000)
|
||||||
compound_mirrored = geompy.MakeMirrorByPlane(compound, plane)
|
compound_mirrored = geompy.MakeMirrorByPlane(compound, plane)
|
||||||
final = geompy.MakeCompound([compound, compound_mirrored])
|
final = geompy.MakeCompound([compound, compound_mirrored])
|
||||||
|
|
||||||
|
if progressBar is not None:
|
||||||
|
progressBar.addSteps(1)
|
||||||
|
|
||||||
return final
|
return final
|
||||||
|
|
||||||
|
|
||||||
|
39
src/Tools/t_shape/t_shape_progress.py
Normal file
39
src/Tools/t_shape/t_shape_progress.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (C) 2010-2014 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
|
#
|
||||||
|
# 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, 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
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this library; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
#
|
||||||
|
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
#
|
||||||
|
# Author : Renaud Nédélec (OpenCascade S.A.S)
|
||||||
|
|
||||||
|
from salome.geom.t_shape import t_shape_builder
|
||||||
|
from PyQt4.QtGui import QProgressDialog
|
||||||
|
|
||||||
|
class t_shape_progress(QProgressDialog):
|
||||||
|
_totSteps = 0
|
||||||
|
_nmaxSteps = 20
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
QProgressDialog.__init__(self, "t_shape fluid build", "stop", 0, self._nmaxSteps)
|
||||||
|
|
||||||
|
def run(self, activeStudy, r1, r2, h1, h2, thickness):
|
||||||
|
shape = t_shape_builder.build_shape(activeStudy, r1, r2, h1, h2, thickness, self)
|
||||||
|
self.setValue(self._nmaxSteps)
|
||||||
|
return shape
|
||||||
|
|
||||||
|
def addSteps(self, nbSteps):
|
||||||
|
self._totSteps += nbSteps
|
||||||
|
self.setValue(self._totSteps)
|
Loading…
Reference in New Issue
Block a user