ce que vous avez toujours voulu sans jamais avoir osé le demander

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
User avatar
Forthman
Veteran
Posts: 2626
Joined: Fri Apr 27, 2018 11:23 am
Location: Tarn-et-Garonne (82)

Re: ce que vous avez toujours voulu sans jamais avoir osé le demander

Post by Forthman »

exactement ! c'est ce que je fais, merci à Mario52 pour toutes ses macros :D
yannick85
Posts: 14
Joined: Fri Aug 05, 2022 5:22 pm
Location: Vendée
Contact:

Re: ce que vous avez toujours voulu sans jamais avoir osé le demander

Post by yannick85 »

Hello, j'ai testé freecad avec mes élèves en collège, une des choses qui déroutent le débutant est :
la contrainte de coïncidence qui n'est pas affichée comme les autres et donc la suppression n'est pas évidente (même si j'ai découvert par hasard qu'il suffisait de supprimer le "point"), cela les perturbe énormément. Lié à ça, les arcs de cercles qui ne se connectent pas en mode tangent par défaut sur les segments de droite.
Me concernant, le problème de sélection de certaines contraintes (ex : dimensionnelle), on est souvent obligé d'aller dans la liste à gauche ce qui fait perdre du temps (la dimension ne devient pas jaune quand on survole).
Le problème de sélection des objets qui sont les uns sur les autres (être obligé de passer en mode filaire fait perdre du temps). L'idée, serait, comme dans Rhino, que le logiciel donne une liste des objets sous la souris (et on prend celui que l'on veut). C'est le cas en particulier pour les lignes de constructions ou les éléments extérieurs sous des objets standard.
Le problème de compatibilité entre les différents objets créés par les modules, ceci implique que si on fait des dev avec un module et que celui-ci n'est plus entrenu, le travail est perdu. Il y a beaucoup de choses redondantes par exemple entre part et partdesign.
Les messages pas toujours explicite dans la vue rapport (un sketch non fermé (soi-disant) mais on ne sais pas où).
Pas d'accrochage dans sketcher sur un point milieu (le premier truc que j'ai vu).
Des annulations qui n'annulent pas toujours (obligé de recharger le fichier).
Ma version : 0.20 rev 29177
Mon système : win 10 64 pro
Essaie, essaie encore, même si c'est pas bien, tu vas apprendre de tes erreurs ! Et un jour, tu réussiras !
User avatar
Shalmeneser
Veteran
Posts: 9443
Joined: Wed Dec 23, 2020 12:04 am
Location: Fr

Re: ce que vous avez toujours voulu sans jamais avoir osé le demander

Post by Shalmeneser »

yannick85 wrote: Fri Aug 05, 2022 5:37 pm Me concernant, le problème de sélection de certaines contraintes (ex : dimensionnelle), on est souvent obligé d'aller dans la liste à gauche ce qui fait perdre du temps (la dimension ne devient pas jaune quand on survole).
Des fois en appuyant sur le bouton [Mettre à jour] dans le sketcher on peut récupérer la sélection des dimensions (je ne sais pas s'il s'agit d'autosuggestion).
Lié à ça, les arcs de cercles qui ne se connectent pas en mode tangent par défaut sur les segments de droite.
L'outil Sketcher_CreatePolyline/fr +M permet de créer automatiquement ces tangences au fur et à mesure de l'ajout des lignes.
Et pourquoi faudrait-il une tangence par défaut ?
Pas d'accrochage dans sketcher sur un point milieu (le premier truc que j'ai vu).
Utiliser le milieu d'un segment est rare car cela créerait une jonction en T qui n'est pas extrudable dans PartDesign.
User avatar
Forthman
Veteran
Posts: 2626
Joined: Fri Apr 27, 2018 11:23 am
Location: Tarn-et-Garonne (82)

Re: ce que vous avez toujours voulu sans jamais avoir osé le demander

Post by Forthman »

un petit bug qui persiste, quand une cote ne change pas de couleur au survol, il faut survoler une ligne voisine dans le sketch
(ça peut même être un des axe X ou Y) et après ça se débloque

pour sélectionner une contrainte coïncidente, la meilleure solution que j'ai trouvé, est de faire une sélection par boite de la gauche vers la droite
- sélection de la gauche vers la droite ne sélectionne que les éléments qui sont entièrement dans la boite
- sélection de la droite vers la gauche sélectionne tous les éléments qui sont en contact avec la boite
User avatar
papyblaise
Veteran
Posts: 7795
Joined: Thu Jun 13, 2019 4:28 pm
Location: France

Re: ce que vous avez toujours voulu sans jamais avoir osé le demander

Post by papyblaise »

tout utilisateur de logiciel doit faire preuve d'un peu d'intelligence : de même une division par zéro dans un tableur provoquera un crash , un segment parasite dans un sketch peu provoquer un crash
exemple 1 :le sketch est contraint 100% et pourtant pas extrudable > ouvert à cause du trait de construction en bleu
exemple 2 : le même mais le trait de construction est si petit que invisible > toujours pas extrudable
je veux dire par là que l'on voit souvent ici des appel à l'aide pour des sketches où il y a des doublons de traits dont certains sont si petits que invisible à l'échelle normale de l'écran
Attachments
sketch.JPG
sketch.JPG (18.92 KiB) Viewed 1291 times
sketch2.JPG
sketch2.JPG (16.42 KiB) Viewed 1291 times
Laurent74
Posts: 2
Joined: Sun Aug 07, 2022 7:36 pm
Location: Montréal

Re: ce que vous avez toujours voulu sans jamais avoir osé le demander

Post by Laurent74 »

Salut,

Du texte à l'horizontale sur une contrainte vertical dans ''sketcher'' plutôt qu'a la vertical.
mario52
Veteran
Posts: 4672
Joined: Wed May 16, 2012 2:13 pm

Re: ce que vous avez toujours voulu sans jamais avoir osé le demander

Post by mario52 »

Bonsoir
Forthman wrote: Fri Aug 05, 2022 6:30 am pouvoir sélectionner une face dans la vue plan
j'ai fait cette macro (barre d'outil) pas de bouton magique, sélectionnez une vue et cliquez le bouton de votre choix

lancez la macro dans la page (la barre d'outils peut disparaître quand vous changez d'atelier , if faudra la réactiver)

la vue centrale ("Principale" reste toujours au même endroit)

les autres vues prennent la position désignées par TechDraw (Type)

pour désactiver Type (positionnement de la vue) désactivez la case à cocher

il y a une option pour changer le Label :

allez dans "User parameter:BaseApp/Preferences/Macros/FCMmacros/TechDrawProjView_ToolBar" mettez switchDisplayLineEdit à 1

TechDrawProjection_ToolBar00.gif
TechDrawProjection_ToolBar00.gif (235.06 KiB) Viewed 1223 times

Macro_D_Un_Jour_TechDrawProjView_ToolBar.FCMacro

Code: Select all

# -*- coding: utf-8 -*-
#
#Macro_D_Un_Jour_TechDrawProjView_ToolBar
#https://forum.freecadweb.org/viewtopic.php?f=3&t=50817
#
__title__   = "TechDrawProjView_ToolBar" # on ToolBar
__author__  = "Mario52"
__url__     = "https://forum.freecadweb.org/viewtopic.php?p=615228#p615228"
__wiki__    = ""
__icon__    = ""
__version__ = "00.01"
__date__    = "2022/08/09"    #YYYY/MM/DD

import FreeCAD, FreeCADGui
import TechDraw, TechDrawGui
App = FreeCAD
Gui = FreeCADGui

import PySide2
from PySide2 import (QtWidgets, QtCore, QtGui)
from PySide2.QtWidgets import (QWidget, QVBoxLayout, QStyle, QDockWidget, QToolBar, QDialog)
from PySide2.QtGui import (QColor, QIcon)
from PySide2.QtCore import QSize

##### Configuration begin ##############################################
#### for modify : go to : FreeCAD >Menu >Tools >Edit parameters... >BaseApp/Preferences/Macros/FCMmacros/FCInfo ####
##
FreeCAD.ParamGet(u"User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __title__).SetString(u"Version", __version__ + " (" + __date__ + ")")
##
global switchDisplayLineEdit # switchDisplayLineEdit   = 0   # display or not the lineEdit for label : False
switchDisplayLineEdit = FreeCAD.ParamGet(u"User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __title__).GetBool(u"switchDisplayLineEdit")
FreeCAD.ParamGet(u"User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __title__).SetBool(u"switchDisplayLineEdit", switchDisplayLineEdit)  #*True or False
##
global sizeIconX                # size X icon (if switchToolbarIconSize = 1)
global sizeIconY                # size Y icon (if switchToolbarIconSize = 1)

sizeIconX = sizeIconY = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/General").GetInt("ToolbarIconSize")         # FC preference
if sizeIconX == 0: sizeIconX = 24
if sizeIconY == 0: sizeIconY = 24
##### Configuration end ################################################

checkBox_ToolBar = QtWidgets.QCheckBox()
checkBox_ToolBar.setChecked(True)
checkBox_ToolBar.setText(u"Type")
checkBox_ToolBar.setToolTip(u"Type of Projection" + "\n"
                            u"Checked = Yes / No")
if switchDisplayLineEdit == True:
    lineEditLabel_ToolBar = QtWidgets.QLineEdit()
    lineEditLabel_ToolBar.setVisible(True)
    lineEditLabel_ToolBar.setToolTip(u"Label (option)" + "\n"
                                     u"Give the label before select select the Projection plane button" + "\n"
                                     u"If the LineEdit field is empty, the imposted name is restitued" + "\n\n"
                                     u"For display or not display this LineEdit :" + "\n"
                                     u"Go to : User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __title__ + "\n"
                                     u"check True or False")

def TechDraw_ProjFront():   # Front
    try:
        sel = Gui.Selection.getSelection()[0]
        FreeCAD.ActiveDocument.getObject(sel.Name).Direction = (0.0000, -1.0000, 0.0000)
        FreeCAD.ActiveDocument.getObject(sel.Name).XDirection = (1.0000, 0.0000, 0.0000)
        if checkBox_ToolBar.isChecked():
            sel.Type = u"Front"
        sel.Label = u"Front"
        if (switchDisplayLineEdit == True):
            if (lineEditLabel_ToolBar.text() != ""):
                sel.Label = lineEditLabel_ToolBar.text()  
                lineEditLabel_ToolBar.clear()
        App.activeDocument().recompute(None,True,True)
        #print("TechDraw_ProjFront ",sel.Name)
    except Exception: None

def TechDraw_ProjFrontBottomRight():
    try:
        sel = Gui.Selection.getSelection()[0]
        FreeCAD.ActiveDocument.getObject(sel.Name).Direction = (0.5774, -0.5774, -0.5774)
        FreeCAD.ActiveDocument.getObject(sel.Name).XDirection = (0.7071, 0.7071, 0.0000)
        if checkBox_ToolBar.isChecked():
            sel.Type = u"FrontBottomRight"
        sel.Label = u"FrontBottomRight"
        if (switchDisplayLineEdit == True):
            if (lineEditLabel_ToolBar.text() != ""):
                sel.Label = lineEditLabel_ToolBar.text()  
                lineEditLabel_ToolBar.clear()
        App.activeDocument().recompute(None,True,True)
        #print("TechDraw_ProjFrontBottomRight")
    except Exception: None

def TechDraw_ProjBottom():
    try:
        sel = Gui.Selection.getSelection()[0]
        FreeCAD.ActiveDocument.getObject(sel.Name).Direction = (0.0000, 0.0000, -1.0000)
        FreeCAD.ActiveDocument.getObject(sel.Name).XDirection = (1.0000, 0.0000, 0.0000)
        if checkBox_ToolBar.isChecked():
            sel.Type = u"Bottom"
        sel.Label = u"Bottom"
        if (switchDisplayLineEdit == True):
            if (lineEditLabel_ToolBar.text() != ""):
                sel.Label = lineEditLabel_ToolBar.text()  
                lineEditLabel_ToolBar.clear()
        App.activeDocument().recompute(None,True,True)
        #print("TechDraw_ProjBottom")
    except Exception: None

def TechDraw_ProjFrontBottomLeft():
    try:
        sel = Gui.Selection.getSelection()[0]
        FreeCAD.ActiveDocument.getObject(sel.Name).Direction = (-0.5774, -0.5774, -0.5774)
        FreeCAD.ActiveDocument.getObject(sel.Name).XDirection = (0.7071, -0.7071, 0.0000)
        if checkBox_ToolBar.isChecked():
            sel.Type = u"FrontBottomLeft"
        sel.Label = u"FrontBottomLeft"
        if (switchDisplayLineEdit == True):
            if (lineEditLabel_ToolBar.text() != ""):
                sel.Label = lineEditLabel_ToolBar.text()  
                lineEditLabel_ToolBar.clear()
        App.activeDocument().recompute(None,True,True)
        #print("TechDraw_ProjFrontBottomLeft")
    except Exception: None

def TechDraw_ProjLeft():    # Left
    try:
        sel = Gui.Selection.getSelection()[0]
        FreeCAD.ActiveDocument.getObject(sel.Name).Direction = (-1.0000, -1.0000, 0.0000)
        FreeCAD.ActiveDocument.getObject(sel.Name).XDirection = (0.0000, -1.0000, 0.0000)
        if checkBox_ToolBar.isChecked():
            sel.Type = u"Left"
        sel.Label = u"Left"
        if (switchDisplayLineEdit == True):
            if (lineEditLabel_ToolBar.text() != ""):
                sel.Label = lineEditLabel_ToolBar.text()  
                lineEditLabel_ToolBar.clear()
        App.activeDocument().recompute(None,True,True)
        #print("TechDraw_ProjLeft")
    except Exception: None

def TechDraw_ProjFrontTopLeft():
    try:
        sel = Gui.Selection.getSelection()[0]
        FreeCAD.ActiveDocument.getObject(sel.Name).Direction = (-0.5774, -0.5774, 0.5774)
        FreeCAD.ActiveDocument.getObject(sel.Name).XDirection = (0.7071, -0.7071, 0.0000)
        if checkBox_ToolBar.isChecked():
            sel.Type = u"FrontTopLeft"
        sel.Label = u"FrontTopLeft"
        if (switchDisplayLineEdit == True):
            if (lineEditLabel_ToolBar.text() != ""):
                sel.Label = lineEditLabel_ToolBar.text()  
                lineEditLabel_ToolBar.clear()
        App.activeDocument().recompute(None,True,True)
        #print("TechDraw_ProjFrontTopLeft")
    except Exception: None

def TechDraw_ProjTop(): # Top
    try:
        sel = Gui.Selection.getSelection()[0]
        FreeCAD.ActiveDocument.getObject(sel.Name).Direction = (0.0000, 0.0000, 1.0000)
        FreeCAD.ActiveDocument.getObject(sel.Name).XDirection = (1.0000, 0.0000, 0.0000)
        if checkBox_ToolBar.isChecked():
            sel.Type = u"Top"
        sel.Label = u"Top"
        if (switchDisplayLineEdit == True):
            if (lineEditLabel_ToolBar.text() != ""):
                sel.Label = lineEditLabel_ToolBar.text()  
            else:
                lineEditLabel_ToolBar.clear()
        App.activeDocument().recompute(None,True,True)
        #print("TechDraw_ProjTop")
    except Exception: None

def TechDraw_ProjFrontTopRight():
    try:
        sel = Gui.Selection.getSelection()[0]
        FreeCAD.ActiveDocument.getObject(sel.Name).Direction = (0.5774, -0.5774, 0.5774)
        FreeCAD.ActiveDocument.getObject(sel.Name).XDirection = (0.7071, 0.7071, 0.0000)
        if checkBox_ToolBar.isChecked():
            sel.Type = u"FrontTopRight"
        sel.Label = u"FrontTopRight"
        if (switchDisplayLineEdit == True):
            if (lineEditLabel_ToolBar.text() != ""):
                sel.Label = lineEditLabel_ToolBar.text()  
                lineEditLabel_ToolBar.clear()
        App.activeDocument().recompute(None,True,True)
        #print("TechDraw_ProjFrontTopRight")
    except Exception: None

def TechDraw_ProjRight():
    try:
        sel = Gui.Selection.getSelection()[0]
        FreeCAD.ActiveDocument.getObject(sel.Name).Direction = (1.0000, 0.0000, 0.0000)
        FreeCAD.ActiveDocument.getObject(sel.Name).XDirection = (0.0000, 1.0000, 0.0000)
        if checkBox_ToolBar.isChecked():
            sel.Type = u"Right"
        sel.Label = u"Right"
        if (switchDisplayLineEdit == True):
            if (lineEditLabel_ToolBar.text() != ""):
                sel.Label = lineEditLabel_ToolBar.text()  
                lineEditLabel_ToolBar.clear()
        App.activeDocument().recompute(None,True,True)
        #print("TechDraw_ProjRight")
    except Exception: None

def TechDraw_ProjRear():
    try:
        sel = Gui.Selection.getSelection()[0]
        FreeCAD.ActiveDocument.getObject(sel.Name).Direction = (0.0000, 1.0000, 0.0000)
        FreeCAD.ActiveDocument.getObject(sel.Name).XDirection = (-1.0000, 0.0000, 0.0000)
        if checkBox_ToolBar.isChecked():
            sel.Type = u"Rear"
        sel.Label = u"Rear"
        if (switchDisplayLineEdit == True):
            if (lineEditLabel_ToolBar.text() != ""):
                sel.Label = lineEditLabel_ToolBar.text()  
                lineEditLabel_ToolBar.clear()
        App.activeDocument().recompute(None,True,True)
        #print("TechDraw_ProjRear")
    except Exception: None


#############################################################################
class SelObserver:
    def addSelection(self, document, object, element, position):  # Selection
        global ui

        None
#############################################################################
####
mw = FreeCADGui.getMainWindow()
tb = mw.findChildren(QtWidgets.QToolBar)
switchtbar = 0

for i in tb:
    if str(i.objectName()) == __title__:
        FreeCAD.Console.PrintError(__title__ + " is already open" + "\n")
        switchtbar = 1
#        if i.isVisible():
#            i.setVisible(False)                    # visible False
#        else:
        i.setVisible(True)                     # visible True
        break

pageTCD = Gui.ActiveDocument.ActiveView

if str(pageTCD) == u"MDI view page":
    if switchtbar == 0:
        toolbar1 = QtWidgets.QToolBar()
        toolbar1.setObjectName(__title__)
        toolbar1.setWindowTitle(__title__)
        
        mw.addToolBar(toolbar1) 
        toolbar1.setIconSize(QSize(sizeIconX, sizeIconY))

        # Icon fromTheme FreeCAD
        toolbar1.addAction(QtGui.QIcon.fromTheme("TechDraw",QtGui.QIcon(":/icons/TechDraw_ProjFront.svg")), "Front", TechDraw_ProjFront)
        toolbar1.addAction(QtGui.QIcon.fromTheme("TechDraw",QtGui.QIcon(":/icons/TechDraw_ProjFrontBottomRight.svg")), "Front Bottom Right", TechDraw_ProjFrontBottomRight)
        toolbar1.addAction(QtGui.QIcon.fromTheme("TechDraw",QtGui.QIcon(":/icons/TechDraw_ProjBottom.svg")), "Bottom", TechDraw_ProjBottom)
        toolbar1.addAction(QtGui.QIcon.fromTheme("TechDraw",QtGui.QIcon(":/icons/TechDraw_ProjFrontBottomLeft.svg")), "Front Bottom Left", TechDraw_ProjFrontBottomLeft)
        toolbar1.addAction(QtGui.QIcon.fromTheme("TechDraw",QtGui.QIcon(":/icons/TechDraw_ProjLeft.svg")), "Left", TechDraw_ProjLeft)
        toolbar1.addAction(QtGui.QIcon.fromTheme("TechDraw",QtGui.QIcon(":/icons/TechDraw_ProjFrontTopLeft.svg")), "Front Top Left", TechDraw_ProjFrontTopLeft)
        toolbar1.addAction(QtGui.QIcon.fromTheme("TechDraw",QtGui.QIcon(":/icons/TechDraw_ProjTop.svg")), "Top", TechDraw_ProjTop)
        toolbar1.addAction(QtGui.QIcon.fromTheme("TechDraw",QtGui.QIcon(":/icons/TechDraw_ProjFrontTopRight.svg")), "Front Top Right", TechDraw_ProjFrontTopRight)
        toolbar1.addAction(QtGui.QIcon.fromTheme("TechDraw",QtGui.QIcon(":/icons/TechDraw_ProjRight.svg")), "Right", TechDraw_ProjRight)
        toolbar1.addAction(QtGui.QIcon.fromTheme("TechDraw",QtGui.QIcon(":/icons/TechDraw_ProjRear.svg")), "Rear", TechDraw_ProjRear)

        toolbar1.addWidget(checkBox_ToolBar)
        if (switchDisplayLineEdit == True):
            toolbar1.addWidget(lineEditLabel_ToolBar)
else:
    FreeCAD.Console.PrintError("Edit the TechDraw page (actual : " + str(pageTCD) + ")" + "\n")

########
dites moi si elle vaut la peine
Forthman wrote: Fri Aug 05, 2022 12:02 pm merci à Mario52 pour toutes ses macros
merci quelle(s) macro(s) sont/est intéressante(s) ?

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.
User avatar
Forthman
Veteran
Posts: 2626
Joined: Fri Apr 27, 2018 11:23 am
Location: Tarn-et-Garonne (82)

Re: ce que vous avez toujours voulu sans jamais avoir osé le demander

Post by Forthman »

mario52 wrote: Tue Aug 09, 2022 8:52 pm j'ai fait cette macro
Tu es conscient que c'est limite énervant ? :lol:

Merci Mario :D
User avatar
freecadjam
Veteran
Posts: 1994
Joined: Tue Jul 17, 2018 10:47 am
Contact:

Re: ce que vous avez toujours voulu sans jamais avoir osé le demander

Post by freecadjam »

suggestion 002

Par rapport à 29971 linux weekly

Augmenter le potentiel de PartDesign Pad jusqu'à la face,
qu'il soit possible d'actionner la symétrie par rapport au sketch, ce qui est actuellement bridé (voir symétrie false grisé dans les propriétés de Pad).
Ceci n'étant pas possible, on doit s'en occuper à la place de Pad en faisant un miroir par rapport au plan du sketch (XZ par exemple), chose impossible ensuite par rapport au plan YZ (car le miroir ne s'occupe que d'additif et de soustractif et pas d'ancien miroir), ce qui nous contraint, si on en a besoin, à dessiner une symétrie au départ.
Dans les paramètres, expliquer ce que vaut le paramètre Allow Multi Face, True/False SVP.
Attachments
pad droit jusqu'à la face.FCStd
(29.84 KiB) Downloaded 19 times
Capture d’écran_2022-08-10_10-39-34.png
Capture d’écran_2022-08-10_10-39-34.png (98.08 KiB) Viewed 1146 times
User avatar
Shalmeneser
Veteran
Posts: 9443
Joined: Wed Dec 23, 2020 12:04 am
Location: Fr

Re: ce que vous avez toujours voulu sans jamais avoir osé le demander

Post by Shalmeneser »

On peut aussi réutiliser ce sketch pour un Pad UpToFace d'une autre face.
Ici ça ne marchera pas car la face est circulaire et donc un Mirror est plus efficace.
Post Reply