Spreadsheet

Forum destiné aux questions et discussions en français
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Post Reply
Marc Dubaï
Posts: 1
Joined: Tue Apr 28, 2020 9:35 am

Spreadsheet

Post by Marc Dubaï »

Bonjour,

J'ai créé un modèle paramétrable de vis CHc.
La feuille de calcul renseignée avec les "Alias" fonctionne parfaitement.
Après réouverture du document, la mise en forme de la feuille de calcul est perdue, ainsi que tous les "Alias" (les cases ne sont plus jaunes, les fusions de cellules sont perdues, ainsi que les couleurs des écritures blanches sur fond noir).
Je suis obligé de renseigner à nouveau tous les Alias pour faire un nouveau modèle de vis.
Y a t'il un mode ou un processus d'enregistrement pour réutiliser le modèle ?
Merci d'avance pour la réponse.

Salutations.

Marc Dubaï
chrisb
Veteran
Posts: 54293
Joined: Tue Mar 17, 2015 9:14 am

Re: Speadsheet

Post by chrisb »

Transferé vers le forum Français.
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
User avatar
freecadjam
Veteran
Posts: 1994
Joined: Tue Jul 17, 2018 10:47 am
Contact:

Re: Spreadsheet

Post by freecadjam »

il y a deux add-ons cinq macros à propos des alias, vous les utilisez déjà ? https://wiki.freecadweb.org/Macros_recipes/fr
Je n'ai pas de pratique assez poussée pour vous renseigner, je me résigne à nommer la cellule dans le formulaire, colonne A pour la désignation et colonne B pour les valeurs, ce que j'ai essayé par moi même sur les alias ne m'a pas convaincu, mais ils doivent être utiles pour la productivité je n'en doute pas après un bon apprentissage
Last edited by freecadjam on Fri May 01, 2020 6:32 am, edited 2 times in total.
lucrol
Posts: 23
Joined: Fri Mar 09, 2018 9:50 am
Location: Nîmes, FRANCE

Re: Spreadsheet

Post by lucrol »

Bonjour,

Je suis assez surpris de vos problèmes avec Spreadsheet.
Bien qu'encore plutôt novice dans FreeCAD, j'utilise systématiquement les tableaux pour toute conception de pièce et assez souvent des tableaux en cascade (paramètres généraux, paramètres de la pièces A, paramètres de la pièce B, etc ...).
Même en version 0.19 j'ai peu de problèmes sauf en ce qui concerne le formatage et les couleurs qui peuvent être assez facilement perdus lors de modifications, je les réserve donc pour la fin, lorsque la pièce est stabilisée.
J'utilise systématiquement les alias qui sont utilisés dans toutes mes cotes selon le principe :
ALIAS (col. 1) VALEUR (col. 2) DESIGNATION (col. 3) (je fais un copier coller du nom d'alias en colonne 1 pour définir l'alias en colonne 2)
Ainsi il est assez aisé de retrouver le nom d'un alias et ce à quoi il sert ...
J'organise mes tableaux en 2 parties :
- Les paramètres utilisateurs en premier, qui ne sont que des valeurs dimensionnelles sans aucun calcul;
- Les paramètres calculés ensuite, faisant référence aux précédents, évitant des calculs dans les cotes des pièces.
Depuis mes premiers essais en version 0.17 je n'ai jamais eu de dysfonctionnement dus aux alias.
Je n'ai pas trouvé compliqué leur mise en place, peut-être pourrais-je répondre à des questions plus précises ...
Cordialement.
User avatar
2cv001
Posts: 484
Joined: Wed Jan 01, 2020 9:30 am

Re: Spreadsheet

Post by 2cv001 »

Pareil, j'utilise sans arrêt les allias. Sans problème. (V FreeCad 1.9)
J'ai créé une macro qui me simplifie énormément la vie pour créer ce allias (en réalité, openBrain sur ce forum m'a beaucoup beaucoup aidé encore merci !):
dans une colonne, j’écris la description de ce que c'est par exemple "diametreDeLa pièce"
Avant de lancer la macro, je sélectionne une ou des descriptions et la macro retire les blancs et met en majuscule la première lettre
ici : "DiametreDeLapièce"
puis remplace l'ancienne description par ça ("DiametreDeLapièce" ), puis crée un allias sur la cellule juste à droite mais avec une minuscule en première lettre.
la macro :

Code: Select all

# -*- coding: utf-8 -*-

### On fait les imports qui vont bien
import FreeCAD as App
import FreeCADGui as Gui
from PySide import QtGui


aw = Gui.getMainWindow().centralWidget().activeSubWindow() # On stocke la fenêtre active
sheet = App.ActiveDocument.getObjectsByLabel(aw.windowTitle()) # On essaye de trouver la feuille correspondant à la fenêtre à partir du nom de la fenêtre

if len(sheet) == 0 and aw.windowTitle()[-3:] == '[*]': # Si aucune feuille correspondante n'a été trouvée...
	# ... On sait que FreeCAD ajoute au nom de la fenêtre les caractères "[*]" quand la feuille a été modifiée ...
	# ... et seulement dans le cas ou la feuille n'a jamais été renommée (!!!!!) ...
	sheet = App.ActiveDocument.getObjectsByLabel(aw.windowTitle()[:-3]) # ... Donc on réessaye sans les 3 derniers caractères

if len(sheet) != 1: # Si aucune feuille n'a été trouvée (ou plusieurs feuilles ont été trouvées)
	App.Console.PrintError("Can't find sheet : {}\n".format(aw.windowTitle())) # On imprime une erreur dans la rapport
else:

	sheet = sheet[0] # La feuille est la seule qui a été trouvée par la recherche précédente
	sel_items = aw.widget().findChild(QtGui.QTableView).selectedIndexes() # On récupère la liste complète de toutes les cellules sélectionnées
	proceed = True # Un petit drapeau qui indiquera si on doit vraiment procéder
	for item in sel_items: # On parcourt les cellules sélectionnées
		if item.column() != sel_items[0].column(): # Si une des cellules n'est pas dans la même colonne que la première
			### On affiche un dialogue demandant à l'utilisateur s'il est sûr de son coup
			if QtGui.QMessageBox.warning(Gui.getMainWindow(),
			"Warning","""Selected cells aren't all in the same column.
	Proceed anyway ?""",
			QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel) == QtGui.QMessageBox.Cancel: # Si l'utilisateur annule

				proceed = False # On ne procèdera pas aux changements

			break # Pas la peine de continuer à analyser les colonnes à partir du moment ou au moins 2 ne sont pas sur la même colonne
	
	if proceed: # Si on doit continuer à procéder

		### On définit une fonction qui renverra l'identifiant de la cellule à partir de ses numéros de ligne (r) et colonne (c)
		### Les numéros commencent à 0 pour la première ligne/colonne
		### On gère correctement les colonnes avec un identifiant à 2 lettres
		cellName = lambda r,c:'{}{}{}'.format(chr(c//26 + 64) if c//26 > 0 else '', chr(c%26+65), r+1)

		for item in sel_items: # On parcourt les cellules sélectionnées
			cell = cellName(item.row(),item.column()) # On récupère l'identifiant de la cellule
			next_cell = cellName(item.row(), item.column()+1) # On récupère l'identifiant de la cellule voisine à droite

			activeCellContenu=sheet.getContents(cell)
			activeCellContenu=activeCellContenu[:1].upper() + activeCellContenu[1:] # pour mettre ne majuscule la première letre
			activeCellContenu=activeCellContenu.replace(' ','')
			sheet.set(cell, activeCellContenu)

			alias = sheet.getContents(cell)[:1].lower() + sheet.getContents(cell)[1:] # On génère l'alias à la cellule de droite à partir du contenu de la cellule
			# Sur la ligne du dessus il y a une astuce. On utilise "[:1]" au lieu de "[0]", car ce dernier plante en cas de chaine vide (ce qui arrive si la cellule est vide)
	
			try: # Bloc try pour récupérer les erreurs
				sheet.setAlias(next_cell, alias) # On attribue l'alias à la cellule voisine de droite
			except ValueError: # Si une erreur "ValueError" est déclenchée (ce qui arrive quand l'alias n'est pas valide)
				App.Console.PrintWarning("Can't set alias for cell {} : {} isn't valid\n".format(next_cell, alias)) # On prévient l'utilisateur dans le rapport
testé en version 1.9
Macro Sketch Constraint From Spreadsheet :
https://wiki.freecad.org/Macro_Sketch_C ... adsheet/fr
User avatar
freecadjam
Veteran
Posts: 1994
Joined: Tue Jul 17, 2018 10:47 am
Contact:

Re: Spreadsheet

Post by freecadjam »

oui 2cv001 j'ai vu ce post https://forum.freecadweb.org/viewtopic. ... 9c2c8c6c36 et en le lisant je me disais que je connais ce type de transformation dans la fabrication de l'adresse web d'une page à partir du titre de la page dans le programme Google Sites, j'ignore comment sont codés les programmes Google Sites et si ce serait utilisable. Dans leurs programme, le titre est transformé en minuscules, certains espaces sont remplacés par des tirets d'autres par des coller et tous les caractères spéciaux sont "amoindris" probablement pour respecter un format adresse web
User avatar
2cv001
Posts: 484
Joined: Wed Jan 01, 2020 9:30 am

Re: Spreadsheet

Post by 2cv001 »

freecadjam wrote: Wed Apr 29, 2020 8:40 pm il y a deux add-ons cinq macros à propos des alias, vous les utilisez déjà ? https://wiki.freecadweb.org/Macros_recipes/fr
Je n'ai pas de pratique assez poussée pour vous renseigner, je me résigne à nommer la cellule dans le formulaire, colonne A pour la désignation et colonne B pour les valeurs, ce que j'ai essayé par moi même sur les alias ne m'a pas convaincu, mais ils doivent être utiles pour la productivité je n'en doute pas après un bon apprentissage
Effectivement, je viens de voir qu'il y a une macro qui fait en gros pareil que la mienne. Cela dit je ne regrette pas de l'avoir faite car ainsi j'apprends :D
Macro Sketch Constraint From Spreadsheet :
https://wiki.freecad.org/Macro_Sketch_C ... adsheet/fr
Post Reply