Función para calcular volumen de objetos
- dcapeletti
- Posts: 504
- Joined: Wed Jul 23, 2014 2:27 pm
Función para calcular volumen de objetos
Estimados,
estoy intentando sacar manualmente el volumen de esta tolva pero sería interesante que FreeCAD tenga dicha funcionalidad. ¿Alguien sabe dónde está si es que la tiene o si se podría considerar para el desarrollo?
OS: Trisquel GNU/Linux 7.0, Belenos
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.16.6712 (Git)
Build type: None
Branch: releases/FreeCAD-0-16
Hash: da2d364457257a7a8c6fb2137cea12c45becd71a
Python version: 2.7.6
Qt version: 4.8.6
Coin version: 4.0.0a
OCC version: 6.8.0.oce-0.17
Muchas gracias.
estoy intentando sacar manualmente el volumen de esta tolva pero sería interesante que FreeCAD tenga dicha funcionalidad. ¿Alguien sabe dónde está si es que la tiene o si se podría considerar para el desarrollo?
OS: Trisquel GNU/Linux 7.0, Belenos
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.16.6712 (Git)
Build type: None
Branch: releases/FreeCAD-0-16
Hash: da2d364457257a7a8c6fb2137cea12c45becd71a
Python version: 2.7.6
Qt version: 4.8.6
Coin version: 4.0.0a
OCC version: 6.8.0.oce-0.17
Muchas gracias.
- Attachments
-
- Tolva.png (15.76 KiB) Viewed 4212 times
Re: Función para calcular volumen de objetos
Si es un objeto sólido, si puedes calcularlo mediante Phyton o mediante una hoja de cálculo (importante: no uses valores de entrada y salida en una misma hoja de cálculo, usa dos separadas), hay una función que no recuerdo ahora, pero salía con autocompletar, no se si era nombre_objeto.shape.volume o algo similar.
Si es uno hueco puedes cerrarlo con el módulo Part y hacer el cálculo igualmente.
Si es uno hueco puedes cerrarlo con el módulo Part y hacer el cálculo igualmente.
Estudié ingeniería técnica industrial en España y sólo me ha servido para estar en el paro, no me contratan porque no tengo experiencia, y no tengo experiencia porque no me contratan. No debí estudiar esa carrera.
- dcapeletti
- Posts: 504
- Joined: Wed Jul 23, 2014 2:27 pm
Re: Función para calcular volumen de objetos
Estimado, muchas gracias por la información.
He probado cerrar el cuerpo y crear un sólido. El resultado de me devuelve App.ActiveDocument.getObject("Compound001").Shape.Volume es el siguiente:
2895244999.999999
Pero si hago uso de la formula de pirámide truncada para calcular el volumen V = (H/3) * ((L*l) + L² + l²) el resultado es:
4432000 cm³
Pero si hago el cálculo con un cubo primitivo si que calcula bien.
¿Por qué hay tal diferencia? ¿Hay algo que echo mal?
Gracias
He probado cerrar el cuerpo y crear un sólido. El resultado de me devuelve App.ActiveDocument.getObject("Compound001").Shape.Volume es el siguiente:
2895244999.999999
Pero si hago uso de la formula de pirámide truncada para calcular el volumen V = (H/3) * ((L*l) + L² + l²) el resultado es:
4432000 cm³
Pero si hago el cálculo con un cubo primitivo si que calcula bien.
¿Por qué hay tal diferencia? ¿Hay algo que echo mal?
Gracias
Re: Función para calcular volumen de objetos
saluto
good 4432000.0 cm³
or my macro Macro_FCInfo
mario
good 4432000.0 cm³
Code: Select all
sel = FreeCADGui.Selection.getSelection() # select object with getSelection()
volume_ = sel[0].Shape.Volume # Volume of the object
App.Console.PrintMessage("volume_ : "+str(volume_)+"\n\n")
mario
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Topological_data_scripting.
My macros on Gist.github here complete macros Wiki and forum.
My macros on Gist.github here complete macros Wiki and forum.
- dcapeletti
- Posts: 504
- Joined: Wed Jul 23, 2014 2:27 pm
Re: Función para calcular volumen de objetos
Muchas gracias, ha funcionado!!!
Me parece un módulo muy interesante para nivel usuario. Lo voy a instalar. De nuevo, muchísimas gracias.
Saludos
Me parece un módulo muy interesante para nivel usuario. Lo voy a instalar. De nuevo, muchísimas gracias.
Saludos
- dcapeletti
- Posts: 504
- Joined: Wed Jul 23, 2014 2:27 pm
Re: Función para calcular volumen de objetos
Estimado,
he instalado esta versión https://gist.github.com/mario52a/8d40ab6c018c2bde678f de FCInfo. Pero los botones Salir, Guardar no se muestran en el cuadro de díalogo de la macro. ¿Cuál puede ser su causa?. Adjunto imagen.
Saludos
he instalado esta versión https://gist.github.com/mario52a/8d40ab6c018c2bde678f de FCInfo. Pero los botones Salir, Guardar no se muestran en el cuadro de díalogo de la macro. ¿Cuál puede ser su causa?. Adjunto imagen.
Saludos
- Attachments
-
- FCInfo.png (160.6 KiB) Viewed 4143 times
Re: Función para calcular volumen de objetos
saluto
por favor, ¿cuál es la definición de su pantalla?
tal vez su pantalla es demasiado pequeña o la ventana FreeCAD es pequeña demasiadas barras de herramientas ?
también puede desmontar la macro ver aquí
(tal vez igual aquí)
(google translate)
please what is the definition of your screen ?
maybe your screen is too small or the FreeCAD window is small or many tool bar ?
you can also detach the macro see here
(maybe same here)
(google translate)
mario
por favor, ¿cuál es la definición de su pantalla?
tal vez su pantalla es demasiado pequeña o la ventana FreeCAD es pequeña demasiadas barras de herramientas ?
también puede desmontar la macro ver aquí
(tal vez igual aquí)
(google translate)
please what is the definition of your screen ?
maybe your screen is too small or the FreeCAD window is small or many tool bar ?
you can also detach the macro see here
(maybe same here)
(google translate)
mario
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Topological_data_scripting.
My macros on Gist.github here complete macros Wiki and forum.
My macros on Gist.github here complete macros Wiki and forum.
- dcapeletti
- Posts: 504
- Joined: Wed Jul 23, 2014 2:27 pm
Re: Función para calcular volumen de objetos
Gracias por la respuesta. Resolución 1366x768. Incluso si lo muevo no puedo ver los botones.
Estuve viendo el código fuente de su macro. Todos los objetos, Label y LineEdit se dibujan usando posición absoluta (QtCore.QRect(10, 10, 111, 16)) sobre el contenedor windows o scrollAreaWidgetContents_2. Esto es un gran trabajo y lo hace poco eficiente.
En lugar de eso, se podría usar paneles y Layouts verticales u horizontales para distribuir los objetos en pantalla y se olvida de su posición. Estos objetos hacen que los controles se adapten automáticamente a la resolución que tiene la pantalla del usuario, por ende, se puede olvidar de dichos problemas. Incluso si cambia el tamaño de la ventana, los layouts se recalculan automáticamente para dibujar los controles.
http://zetcode.com/gui/pysidetutorial/layoutmanagement/
https://srinikom.github.io/pyside-docs/ ... ayout.html
https://srinikom.github.io/pyside-docs/ ... ayout.html
https://srinikom.github.io/pyside-docs/ ... ayout.html
Con su permiso, intentaré jugar con los Layouts y vuelvo a comentar.
Sds
Estuve viendo el código fuente de su macro. Todos los objetos, Label y LineEdit se dibujan usando posición absoluta (QtCore.QRect(10, 10, 111, 16)) sobre el contenedor windows o scrollAreaWidgetContents_2. Esto es un gran trabajo y lo hace poco eficiente.
En lugar de eso, se podría usar paneles y Layouts verticales u horizontales para distribuir los objetos en pantalla y se olvida de su posición. Estos objetos hacen que los controles se adapten automáticamente a la resolución que tiene la pantalla del usuario, por ende, se puede olvidar de dichos problemas. Incluso si cambia el tamaño de la ventana, los layouts se recalculan automáticamente para dibujar los controles.
http://zetcode.com/gui/pysidetutorial/layoutmanagement/
https://srinikom.github.io/pyside-docs/ ... ayout.html
https://srinikom.github.io/pyside-docs/ ... ayout.html
https://srinikom.github.io/pyside-docs/ ... ayout.html
Con su permiso, intentaré jugar con los Layouts y vuelvo a comentar.
Sds
Last edited by dcapeletti on Tue Sep 19, 2017 12:38 am, edited 1 time in total.
- dcapeletti
- Posts: 504
- Joined: Wed Jul 23, 2014 2:27 pm
Re: Función para calcular volumen de objetos
Aquí he probado con éxito Layouts verticales y horizontales. Puede ver, como simplemente añadiendo uno con otros, se acomodan automáticamente. Con algo mas de tiempo, podría reescribir toda la GUI del macro.
Los botones bajo layouts verticales se alinean uno debajo del otro, ocupando todo el ancho del contenedor padre. Pero es posible establecer un tamaño mas pequeño si lo desea.
Los Label y QLineEdit los organizo horizontalmente. Como puede ver, adaptan automáticamente su tamaño de acuerdo al tamaño de ambos ocupando todo el ancho del contenedor padre. Pero es posible establecer un ancho o alto distinto de cada control si lo desea.
Los botones bajo layouts verticales se alinean uno debajo del otro, ocupando todo el ancho del contenedor padre. Pero es posible establecer un tamaño mas pequeño si lo desea.
Los Label y QLineEdit los organizo horizontalmente. Como puede ver, adaptan automáticamente su tamaño de acuerdo al tamaño de ambos ocupando todo el ancho del contenedor padre. Pero es posible establecer un ancho o alto distinto de cada control si lo desea.
Code: Select all
import PySide # PySide
from PySide import QtGui ,QtCore # PySide
from PySide.QtGui import QComboBox # PySide
from PySide.QtGui import QMessageBox # PySide
from PySide.QtGui import QTableWidget, QApplication # PySide
from PySide.QtGui import * # PySide
from PySide.QtCore import * # PySide
import Draft, Part, FreeCAD, math, PartGui, FreeCADGui
import Part
from math import sqrt, pi, sin, cos, asin, degrees, radians, tan
from FreeCAD import Base
import csv
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
self.window = MainWindow
#MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(370, 635)
MainWindow.setMaximumSize(QtCore.QSize(370, 635))
self.fontGlobal_08 = QtGui.QFont() # pour compatibilite Windows Linux pour tous les textes
self.fontGlobal_08.setFamily("Arial") # pour compatibilite Windows Linux pour tous les textes
self.fontGlobal_08.setPointSize(8.0) # pour compatibilite Windows Linux pour tous les textes
self.centralWidget = QtGui.QWidget(MainWindow)
self.button1 = QPushButton("One", self.centralWidget)
self.button2 = QPushButton("Two", self.centralWidget)
self.button3 = QPushButton("Three", self.centralWidget)
self.button4 = QPushButton("Four", self.centralWidget)
self.button5 = QPushButton("Five", self.centralWidget)
self.layout = QVBoxLayout() #Layout vertical
self.layout.addWidget(self.button1)
self.layout.addWidget(self.button2)
self.layout.addWidget(self.button3)
self.layout.addWidget(self.button4)
self.layout.addWidget(self.button5)
self.label_1 = QtGui.QLabel(self.centralWidget)
self.label_1.setText("Document name")
self.label_2 = QtGui.QLabel(self.centralWidget)
self.label_2.setText("Date")
self.lineEdit_1 = QtGui.QLineEdit(self.centralWidget)
self.lineEdit_2 = QtGui.QLineEdit(self.centralWidget)
self.layout2 = QHBoxLayout() #Layout horizontal
self.layout2.addWidget(self.label_1)
self.layout2.addWidget(self.lineEdit_1)
self.layout.addLayout(self.layout2) #I add one layout into another.
self.layout3 = QHBoxLayout() #Layout horizontal
self.layout3.addWidget(self.label_2)
self.layout3.addWidget(self.lineEdit_2)
self.layout.addLayout(self.layout3) #I add one layout into another.
self.centralWidget.setLayout(self.layout)
#self.window.setLayout(self.layout)
self.centralWidget.setGeometry(0, 0, 200, 200)
#########################################################################################################################
class SelObserver:
def addSelection(self,document, object, element, position): # Selection
global ui
global sel
global document_
global object_Label
global element_
global position0
global position1
global position2
sel = FreeCADGui.Selection.getSelection()
document_ = document
object_Label = object
element_ = element
position0 = position[0]
position1 = position[1]
position2 = position[2]
if len(sel)==0:
App.Console.PrintMessage("Select an object"+"\n")
errorDialog("Select an object")
else:
ff = myNewFreeCADWidget.ui
ff.on_pushButton_Raf_clicked()
#####################################################################################
sel = FreeCADGui.Selection.getSelection()
s=SelObserver()
FreeCADGui.Selection.addObserver(s) # install the function resident mode
myNewFreeCADWidget = QtGui.QDockWidget() # create a new dckwidget
myNewFreeCADWidget.ui = Ui_MainWindow() # myWidget_Ui() # load the Ui script
myNewFreeCADWidget.ui.setupUi(myNewFreeCADWidget) # setup the ui
FCmw = FreeCADGui.getMainWindow() # PySide # the active qt window, = the freecad window since we are inside it
FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewFreeCADWidget) # add the widget to the main window Right
- Attachments
-
- Example Layouts.png (119.81 KiB) Viewed 4099 times
Re: Función para calcular volumen de objetos
Saluto
si entiendo el sistema lo haré yo mismo y también estoy interesado en esta macro Macro_FCTreeView
(translate by google)
mario
Sospeché (je m'en doutais)dcapeletti wrote: ↑Mon Sep 18, 2017 10:46 pm Gracias por la respuesta. Resolución 1366x768. Incluso si lo muevo no puedo ver los botones.
muchas gracias, estoy interesado pero manteniendo la presentacióndcapeletti wrote: ↑Tue Sep 19, 2017 12:32 am Aquí he probado con éxito Layouts verticales y horizontales. Puede ver, como simplemente añadiendo uno con otros, se acomodan automáticamente. Con algo mas de tiempo, podría reescribir toda la GUI del macro.
Los botones bajo layouts verticales se alinean uno debajo del otro, ocupando todo el ancho del contenedor padre. Pero es posible establecer un tamaño mas pequeño si lo desea.
Los Label y QLineEdit los organizo horizontalmente. Como puede ver, adaptan automáticamente su tamaño de acuerdo al tamaño de ambos ocupando todo el ancho del contenedor padre. Pero es posible establecer un ancho o alto distinto de cada control si lo desea.
si entiendo el sistema lo haré yo mismo y también estoy interesado en esta macro Macro_FCTreeView
(translate by google)
mario
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Topological_data_scripting.
My macros on Gist.github here complete macros Wiki and forum.
My macros on Gist.github here complete macros Wiki and forum.