Ajouter des informations de type d'ajustement de contrainte

Forum destiné aux questions et discussions en français
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Amal
Posts: 40
Joined: Sat Jul 04, 2020 9:48 am

Ajouter des informations de type d'ajustement de contrainte

Post by Amal »

Bonjour
J’ai essayé de rédiger un code pour spécifier le type d’ajustement de contrainte (serré, avec jeu ou incertain) lors de prise de sélection j’ai utilisé cette ligne de code

Code: Select all

obj = FreeCADGui.Selection.getSelection()[0]
le problème que les informations sont enregistrées que pour la première pièce lors de l'assemblage de deux pièces
Image
merci de m'aider :( :oops:
User avatar
papyblaise
Veteran
Posts: 7870
Joined: Thu Jun 13, 2019 4:28 pm
Location: France

Re: Ajouter des informations de type d'ajustement de contrainte

Post by papyblaise »

Je crois que c'est une grande enigme de Fc en ce moment , ya en effet un sacré chantier à ouvrir là
je ne peu que souhaiter bon courage à ceux qui s'y colleront
User avatar
Chris_G
Veteran
Posts: 2579
Joined: Tue Dec 31, 2013 4:10 pm
Location: France
Contact:

Re: Ajouter des informations de type d'ajustement de contrainte

Post by Chris_G »

Amal wrote: Mon Jul 27, 2020 11:38 am le problème que les informations sont enregistrées que pour la première pièce
C'est normal, tu ne stocke dans obj que la première des selections (le [0])
Si tu veux tous les objets sélectionnés, il faut parcourir la liste :

Code: Select all

sel = FreeCADGui.Selection.getSelection()
for obj in sel:
    print(obj.Label)

Amal
Posts: 40
Joined: Sat Jul 04, 2020 9:48 am

Re: Ajouter des informations de type d'ajustement de contrainte

Post by Amal »

Bonjour
Merci pour votre repense
J’ai essayé le code mais les informations sont enregistrées juste pour la deuxième pièce sélectionnée
Image
:( :oops:
openBrain
Veteran
Posts: 9034
Joined: Fri Nov 09, 2018 5:38 pm
Contact:

Re: Ajouter des informations de type d'ajustement de contrainte

Post by openBrain »

Amal wrote: Tue Jul 28, 2020 3:30 pm Bonjour
Merci pour votre repense
J’ai essayé le code mais les informations sont enregistrées juste pour la deuxième pièce sélectionnée
Image
:( :oops:
2/3 trucs. Attache ton code tel qu'il est maintenant, on ne peut pas deviner.
Ecrit en français sur les topics en français...
Pourquoi tu utilises 2 comptes différents ?
Amal
Posts: 40
Joined: Sat Jul 04, 2020 9:48 am

Re: Ajouter des informations de type d'ajustement de contrainte

Post by Amal »

Bonjour
Voici le code développé

Code: Select all

#created by Amal
import FreeCAD, Part
import FreeCAD as App
import FreeCADGui as Gui
from FreeCAD import Base , Console
import PySide
from PySide import QtCore, QtGui
from FreeCADGui import PySideUic as uic
import FreeCADGui
import Draft

doc = FreeCAD.ActiveDocument.Name                                    # Name of active Document
App.Console.PrintMessage("Active docu    : "+(doc)+"\n")

param = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macro")# macro path
path = param.GetString("MacroPath","") + "/"                        # macro path
path = path.replace("\\","/")

sel = FreeCADGui.Selection.getSelection()
for obj in sel:
    print(obj.Label)

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_MainWindow(object):

     def __init__(self, MainWindow):
        self.window = MainWindow

        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(600, 400)
        self.centralWidget = QtGui.QWidget(MainWindow)
        self.centralWidget.setObjectName(_fromUtf8("centralWidget"))

        self.label_0 = QtGui.QLabel(self.centralWidget)                                           # labels displayed on widget
        self.label_0.setGeometry(QtCore.QRect(100, 20, 100, 25))                                    # label coordinates 
        self.label_0.setObjectName(_fromUtf8("label_1"))

        self.label_1 = QtGui.QLabel(self.centralWidget)                                           # labels displayed on widget
        self.label_1.setGeometry(QtCore.QRect(100, 60, 100, 25))                                    # label coordinates 
        self.label_1.setObjectName(_fromUtf8("label_1"))

        self.label_2 = QtGui.QLabel(self.centralWidget)                                           # labels displayed on widget
        self.label_2.setGeometry(QtCore.QRect(100, 100, 100, 25))                                    # label coordinates 
        self.label_2.setObjectName(_fromUtf8("label_1"))

        self.label_3 = QtGui.QLabel(self.centralWidget)                                           # labels displayed on widget
        self.label_3.setGeometry(QtCore.QRect(100, 140, 100, 25))                                    # label coordinates 
        self.label_3.setObjectName(_fromUtf8("label_1"))

        self.label_4 = QtGui.QLabel(self.centralWidget)                                           # labels displayed on widget
        self.label_4.setGeometry(QtCore.QRect(100, 180, 100, 25))                                    # label coordinates 
        self.label_4.setObjectName(_fromUtf8("label_1"))

        self.label_5 = QtGui.QLabel(self.centralWidget)                                           # labels displayed on widget
        self.label_5.setGeometry(QtCore.QRect(100, 220, 100, 25))                                    # label coordinates 
        self.label_5.setObjectName(_fromUtf8("label_1"))

        self.lineEdit_0 = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_0.setGeometry(QtCore.QRect(200, 20, 300, 25))
        self.lineEdit_0.setObjectName(_fromUtf8("lineEdit"))
        self.lineEdit_0.returnPressed.connect(self.on_lineEdit_1clicked) #connection lineEdit

        self.lineEdit_1 = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_1.setGeometry(QtCore.QRect(200, 220, 300, 25))
        self.lineEdit_1.setObjectName(_fromUtf8("lineEdit"))
        self.lineEdit_1.returnPressed.connect(self.on_lineEdit_1clicked) #connection lineEdit

        self.checkBox_1 = QtGui.QCheckBox(self.centralWidget)
        self.checkBox_1.setGeometry(QtCore.QRect(200, 100, 90, 25))
        self.checkBox_1.setChecked(False)
        self.checkBox_1.setObjectName(_fromUtf8("checkBoxON"))
        self.checkBox_1.clicked.connect(self.on_checkBox_clicked) #connection checkBox

        self.checkBox_2 = QtGui.QCheckBox(self.centralWidget)
        self.checkBox_2.setGeometry(QtCore.QRect(200, 140, 90, 25))
        self.checkBox_2.setChecked(False)
        self.checkBox_2.setObjectName(_fromUtf8("checkBoxON"))
        self.checkBox_2.clicked.connect(self.on_checkBox_clicked) #connection checkBox

        self.checkBox_3 = QtGui.QCheckBox(self.centralWidget)
        self.checkBox_3.setGeometry(QtCore.QRect(200, 180, 90, 25))
        self.checkBox_3.setChecked(False)
        self.checkBox_3.setObjectName(_fromUtf8("checkBoxON"))
        self.checkBox_3.clicked.connect(self.on_checkBox_clicked) #connection checkBox

        self.pushButton = QtGui.QPushButton(self.centralWidget)
        self.pushButton.setGeometry(QtCore.QRect(400, 250, 100, 25))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton.clicked.connect(self.on_pushButton_clicked) #connection pushButton

        MainWindow.setCentralWidget(self.centralWidget)

        self.menuBar = QtGui.QMenuBar(MainWindow)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 400, 26))
        self.menuBar.setObjectName(_fromUtf8("menuBar"))
        MainWindow.setMenuBar(self.menuBar)

        self.mainToolBar = QtGui.QToolBar(MainWindow)
        self.mainToolBar.setObjectName(_fromUtf8("mainToolBar"))
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar)

        self.statusBar = QtGui.QStatusBar(MainWindow)
        self.statusBar.setObjectName(_fromUtf8("statusBar"))
        MainWindow.setStatusBar(self.statusBar)

        self.retranslateUi(MainWindow)

     def retranslateUi(self, MainWindow):
        MainWindow.setWindowFlags(PySide.QtCore.Qt.WindowStaysOnTopHint)
        MainWindow.setWindowTitle(_translate("MainWindow", "CAD ACT", None))
        self.label_0.setText(_translate("MainWindow", "Assembly name :", None))
        self.label_1.setText(_translate("MainWindow", "Specify fit type :", None))
        self.label_2.setText(_translate("MainWindow", "Tight fit :", None))
        self.label_3.setText(_translate("MainWindow", "Uncertain fit :", None))
        self.label_4.setText(_translate("MainWindow", "Loose fit :", None))
        self.label_5.setText(_translate("MainWindow", "Distance :", None))
        self.lineEdit_0.setText(_translate("MainWindow", (doc), None))
        self.lineEdit_1.setText(_translate("MainWindow", "", None))
        self.checkBox_1.setText(_translate("MainWindow", "", None))
        self.checkBox_2.setText(_translate("MainWindow", "", None))
        self.checkBox_3.setText(_translate("MainWindow", "", None))
        self.pushButton.setText(_translate("MainWindow", "save", None)) 

     def on_checkBox_clicked(self):
        if self.checkBox_1.checkState()==0:
            App.Console.PrintMessage(str()+"")
        else:     
            App.Console.PrintMessage(str()+" Fit type:Tight fit\r\n")
            obj.addProperty("App::PropertyString","Fit_Type").Fit_Type = "Tight fit"

        if self.checkBox_2.checkState()==0:
            App.Console.PrintMessage(str()+"")
        else: 
            App.Console.PrintMessage(str()+" Fit type:Unertain fit\r\n")
            obj.addProperty("App::PropertyString","Fit_Type").Fit_Type = "Uncertain"

        if  self.checkBox_3.checkState()==0:
            App.Console.PrintMessage(str()+"")
        else:  
            App.Console.PrintMessage(str()+" Fit type:Loose fit\r\n")
            obj.addProperty("App::PropertyString","Fit_Type").Fit_Type = "Loose fit"

     def on_lineEdit_1clicked(self):
#        if self.lineEdit.textChanged():
             Distance = self.lineEdit_1.text() 
             App.Console.PrintMessage(str("Distance :"+(Distance))+"\n")
             obj.addProperty("App::PropertyString","Distance").Distance = str(Distance)
             App.activeDocument().recompute()

     def on_pushButton_clicked(self):
        App.Console.PrintMessage("save\r\n")
        self.window.hide()

MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow(MainWindow)
MainWindow.show()
Merci de m’aider
Amal
openBrain
Veteran
Posts: 9034
Joined: Fri Nov 09, 2018 5:38 pm
Contact:

Re: Ajouter des informations de type d'ajustement de contrainte

Post by openBrain »

Il marche ce code. Il n'est pas optimal, un peu bizarre, et à la fin il ne fait rien à part écrire dans la console. Mais il marche.
Du coup c'est quoi le problème ? Et c'est quoi le rapport avec le titre ?
Amal
Posts: 40
Joined: Sat Jul 04, 2020 9:48 am

Re: Ajouter des informations de type d'ajustement de contrainte

Post by Amal »

Ce code est écrit pour ajouter des indications sur le type d'ajustement
Lors de l’ajout d’une contrainte entre un arbre et un moyeu le type d’ajustement sera utile pour la phase de montage des pièces dans l’industrie
Le problème que l’information ajoutée est écrite juste dans le tableau de propriétés d’une seule pièce alors que j’ai besoin qu’elle soit enregistrée dans les deux tableaux des deux pièces
User avatar
Chris_G
Veteran
Posts: 2579
Joined: Tue Dec 31, 2013 4:10 pm
Location: France
Contact:

Re: Ajouter des informations de type d'ajustement de contrainte

Post by Chris_G »

Le bout de code que j'ai posté était juste un exemple.
Ça sert à rien de le copier / coller tel quel.
Ce qu'il faut, c'est que tu remplaces toutes les lignes :

Code: Select all

obj.addProperty(...)
par

Code: Select all

for obj in FreeCADGui.Selection.getSelection():
    obj.addProperty(...)
User avatar
FaDa3D
Posts: 857
Joined: Tue Aug 08, 2017 8:21 am
Location: Savoie France

Re: Ajouter des informations de type d'ajustement de contrainte

Post by FaDa3D »

Bonjour, mon petit bémol sur cette amélioration utile cependant :
Amal wrote: Tue Jul 28, 2020 9:05 pm Lors de l’ajout d’une contrainte entre un arbre et un moyeu le type d’ajustement sera utile pour la phase de montage des pièces dans l’industrie
Le problème que l’information ajoutée est écrite juste dans le tableau de propriétés d’une seule pièce alors que j’ai besoin qu’elle soit enregistrée dans les deux tableaux des deux pièces
La valeur et la plage de tolérance d'une dimension de pièce se spécifient sur le dessin de détail de la pièce (qqfois dans le modèle avec retranscription automatique sur le dessin ; FC ne le fait pas à ma connaissance). Les tolérances d'un ajustement entre deux pièces assemblées se reportent sur le dessin d'assemblage comme information pour définir la méthode d'assemblage.
Je ne vois pas la nécessité d'avoir les informations d'une pièce sur le dessin ou les propriétés d'une autre fussent-elles destinées à s'assembler.
Slts.
Fada de 3D.
Linux Mint
Post Reply