Ajouter des informations de type d'ajustement de contrainte

Forum destiné aux questions et discussions en français
Forum rules
Règles du forum et informations utiles.

VEUILLEZ LIRE CECI AVANT DE DEMANDER DE L'AIDE
Amal
Posts: 21
Joined: Sat Jul 04, 2020 9:48 am

Ajouter des informations de type d'ajustement de contrainte

Postby Amal » Mon Jul 27, 2020 11:38 am

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
Posts: 2434
Joined: Thu Jun 13, 2019 4:28 pm
Location: France

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

Postby papyblaise » Mon Jul 27, 2020 12:00 pm

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
Posts: 1476
Joined: Tue Dec 31, 2013 4:10 pm
Location: France
Contact:

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

Postby Chris_G » Mon Jul 27, 2020 12:41 pm

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: 21
Joined: Sat Jul 04, 2020 9:48 am

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

Postby Amal » 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:
openBrain
Posts: 4621
Joined: Fri Nov 09, 2018 5:38 pm

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

Postby openBrain » Tue Jul 28, 2020 3:42 pm

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: 21
Joined: Sat Jul 04, 2020 9:48 am

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

Postby Amal » Tue Jul 28, 2020 3:56 pm

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
Posts: 4621
Joined: Fri Nov 09, 2018 5:38 pm

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

Postby openBrain » Tue Jul 28, 2020 5:00 pm

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: 21
Joined: Sat Jul 04, 2020 9:48 am

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

Postby Amal » Tue Jul 28, 2020 9:05 pm

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
Posts: 1476
Joined: Tue Dec 31, 2013 4:10 pm
Location: France
Contact:

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

Postby Chris_G » Wed Jul 29, 2020 8:00 am

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(...)
FaDa3D
Posts: 344
Joined: Tue Aug 08, 2017 8:21 am
Location: Savoie France

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

Postby FaDa3D » Wed Jul 29, 2020 12:49 pm

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