Forum Sketchup Artlantis Archicad
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Galerie


[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Empty
Ton bloc notes
Derniers sujets
» [ BLENDER ] Photogrammétrie et Blender (cours en Anglais $)
par tenrev Aujourd'hui à 21:25

» [ SKETCHUP composants dynamiques ] REDRAW() un ensemble de composants ?
par tenrev Aujourd'hui à 14:33

» [ ARCHICAD ] [ Pointcloud ] [ e57 ] [ ScantoBIM ]
par Christophe Fortineau Aujourd'hui à 13:43

» [ SKETCHUP plugins ] sj_RedrawCollection
par tenrev Aujourd'hui à 12:09

» [ ENSCAPE ] Astuce pour visionner les rendus mono panoramiques 3D 360°
par Pilou Hier à 16:59

» [ TWINMOTION ]sortie de la nouvelle version 2022 .1
par charlie974 Hier à 12:31

» [ AUTRES LOGICIELS ] Le rustique TinkerCad!
par Pilou Hier à 11:20

» [ WIP ] Rendu Loft
par REGIS Hier à 0:05

» [ SKETCHUP plugins ] SKIMP
par tenrev Dim 5 Déc 2021 - 23:37

» [LUMION]Probleme pour redimensionner les objets Autocad importer sur Lumion
par Jospin Kapwa Dim 5 Déc 2021 - 20:57

» [ SKETCHUP généralité ] création d'un assemblage pour porfile builder
par youyou40 Dim 5 Déc 2021 - 9:34

» [ BLENDER ] Blender 3 sorti !
par Pilou Sam 4 Déc 2021 - 15:39

» [ SKETCHUP plugins ] sj_AddDCAttribut création d'attribut sur une sélection d'instances de composants
par LAROCHELLE Sam 4 Déc 2021 - 14:53

» [ ARCHICAD ] gnnnnnn plantage !!! :( ac25 V4013
par freroil Ven 3 Déc 2021 - 16:10

» [ PRESENTATION ]
par Samuel Tallet Ven 3 Déc 2021 - 9:30

» [ SKETCHUP tutos ] Matériaux, Textures...pour versions différentes!
par Pilou Jeu 2 Déc 2021 - 12:42

» [ ENSCAPE ] Sortie de Enscape 3.2
par JDD Mer 1 Déc 2021 - 22:51

» [ SKETCHUP vray ] Rendu Vray - Certains objets en noir
par Lionscov Mer 1 Déc 2021 - 7:00

» [ SKETCHUP plugins ] sj_AddDCFunctions
par tenrev Lun 29 Nov 2021 - 11:39

» [ AUTRES LOGICIELS ] bibliothèques d'objets ArchitecPC
par Coulou Lun 29 Nov 2021 - 9:59

» [ SKETCHUP plugins ] Move Align Me by Fredo
par Pilou Ven 26 Nov 2021 - 17:50

» [ SKETCHUP composants dynamiques ] démo de composants dynamiques
par Pilou Ven 26 Nov 2021 - 11:53

» [ TWINMOTION ] résolution image de sortie
par Pistou Jeu 25 Nov 2021 - 15:34

» [ SKETCHUP plugins ] Skatter 2 disponible
par Pilou Jeu 25 Nov 2021 - 12:21

» [ SKETCHUP plugins ] Black friday -30 % à - 50% sur des plugins sketchup
par tenrev Mer 24 Nov 2021 - 13:13

» [ FORUM ] Compteur de visite d'un lien
par simjoubert Lun 22 Nov 2021 - 12:38

» [ SKETCHUP composants dynamiques ] placement composant dynamique
par tenrev Lun 22 Nov 2021 - 12:08

» [ AUTRES LOGICIELS ] SPline En ligne
par Pilou Ven 19 Nov 2021 - 17:37

» [AUTRES LOGICIELS] Moi3D beta 4.0 - 64 bits Mac / PC 27 Octobre 2020
par Pilou Ven 19 Nov 2021 - 10:14

» [ OBJETS ET BILLBOARDS ] 90 modèles de plantes 3D en téléchargement gratuit chez Maxtree
par jerryvento Jeu 18 Nov 2021 - 15:20

» [ UNREAL ENGINE ] Mise à jour de metahuman-creator en ligne pour Unreal
par tenrev Jeu 18 Nov 2021 - 9:57

» [ CORONA ] Corona 8 prévu en début d'année 2022
par tenrev Jeu 18 Nov 2021 - 9:05

» [ UNREAL ENGINE ] mise à jour de Faceware Studio 1.5 capture de mouvement facial
par tenrev Jeu 18 Nov 2021 - 9:03

» [ BLENDER ] Modificateur sur plusieurs maillages
par Farkas Mar 16 Nov 2021 - 21:59

» [ UNREAL ENGINE ] Tuto en français par Jack ???
par jerryvento Mar 16 Nov 2021 - 15:04

[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel

Page 1 sur 4 1, 2, 3, 4  Suivant

Voir le sujet précédent Voir le sujet suivant Aller en bas

simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1667
Points : 3850
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

Messagesimjoubert Lun 3 Mai 2021 - 18:04

Bonjour à tous !

Je suis pas peu fier de vous soumettre à débogage mon premier plugin "Attribut_rapport"

Vous allez me dire encore un !
Oui c'est vrai encore un ! Mais je vais vous expliquer Pourquoi !  lire

Un modèle n'est bien que s'il se transforme en devis accepté !
On est tous confronté au passage douloureux du quantitatif surtout, si je projet passe par de nombreuses versions.
Dans la réalité nous achetons des volumes des longueurs des unités de choses, de matériaux qui sur un devis se retrouvent tous dans une seule colonne "Quantité".
Le plugin vous propose d'ajouter des attributs universels :  Article, Quantité,Unité,Prix unitaire et sous total.

vous sélectionnez un composant que vous allez vendre au volume, clic sur le bouton attribut volume de la barre outil et les attributs se créent et se remplissent.

Votre devis n'est jamais une succession d'articles, il est souvent regroupé en poste, ce plugin vous permet d'ajouter un attribut poste sur forme de liste déroulante. cette liste se met à jour avec les valeurs sauvegardées dans un attribut du modèle.
Idem pour les fournisseurs, pour passer les commandes ou négocier les tarifs plus facilement, et ne rien oublier.

Envi d'appliquer un poste à des composant différents, Il y a un bouton pour cela.
Idem pour le nom de l'article, le prix le fournisseur.


Le but ultime est de sortir en clic un rapport compréhensible et exploitable.
en clic cous générez un csv lu par une copie d'un modèle de fichier Excel.
Le fichier csv et le fichier xlsm sont enregistrés dans un sous dossier portant le nom du modèle.

Dans ce Fichier Excel vous avez plusieurs tableaux issus de requêtes sur le fichier csv. Total postes, total fournisseur, total par articles, articles par postes, articles par fournisseurs... avec des segment pour filtrer facilement. des graphiques pour comprendre...
Vous avez besoin d'ajouter des feuilles de calculs c'est possible! quand vous mettez à jour le fichier csv le fichier xlsm n'est pas modifier! pour actualiser les valeurs ... il y a un bouton pour ça !

l'avantage d'utiliser les composants c'est que l'on peu les réutiliser dans d'autre modèle. lors de l'enregistrement du composant, les attributs rapport sont sauvegardés avec !

Le dernier point comble une lacune de nombreux plugin de rapport. La gestion des couts qui ne se dessinent pas ! Ajouter la main d’œuvre, les déplacement, les couts de livraisons... les vis sur une terrasse en bois... en un clic vous poser un composant "épingle" qui symbolisera la main d’œuvre avec les attributs correspondants. Ils sont placé automatiquement sur le caque balise ATR_Services
[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Main_d10


Et pour finir je vous dirais qu'il est gratuit !

Et gros bonus pour les apprentis sorcier j'ai commenter le code en Frenchy !

Voici quelques images du plugin en action.


[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Barre_10

De gauche à droite
Attributs génériques permet de tout faire ... volume, surface, longueur....
Attributs quantités saisies manuellement
les 3 suivants Longueur selon un axe du composant
longueur d'un profil extrudé (il doit posséder un volume = composant solide ) on rentre dans le composant on sélectionne la face du profil et on clic sur le bouton.
Attribut volume
Attribut masse volumique

Mise à jour par lot de l'attribut nom pour les composants sélectionnés
Mise à jour par lot de l'attribut prix unitaire pour les composants sélectionnés
Mise à jour par lot de l'attribut poste pour les composants sélectionnés
Mise à jour par lot de l'attribut fournisseur pour les composants sélectionnés

Gestion de la liste des postes
Gestion de la liste des fournisseurs

Transforme des groupes en composants uniques
Efface les attributs rapport pour la sélection
Export csv xlsm

Place un composant main d’œuvre
Place un composant mise en place (déplacement et préparation du matériel)
place un composant livraison
place un composant déchets verts
...
[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Rappor10
[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Total_10

N'étant pas encore un pro je ne sais pas si cela fonctionne en dehors de ma machine Windows. alors sur un autre os ?
fonctionne sur SU 2021 je ne sait pas pour les versions antérieures.

Par sécurité ne travailler pas sur des modèles originaux de production. le plugin en est à la version 0.6.3

Voici le fichier rbz . (dézipper pour accéder au rbz puis installation classique.)

J'attends vos commentaires et remontées de bugs !
Pour les pros du code, il y surement des redondances ! merci de m'éclairer !
Fichiers joints
[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Attachment
sj_attribut_rapport_v0.6.3.zip Vous n'avez pas la permission de télécharger les fichiers joints.(950 Ko) Téléchargé 5 fois

-------------------------------------------------------------------------------------------------------------------------
"Les voici en foule : élargis l'espace de ta tente,
Allonge tes cordages ! Renforce tes piquets !
Déploie pour l'autre la toile qui t'abrite !"
ISAÏE 54-2

tenrev aime ce message

tenrev
tenrev
FONDATEUR DE BIBLIO3D
FONDATEUR DE BIBLIO3D
Masculin Humeur : excellente comme toujours
Date d'inscription : 19/01/2008
Nombre de messages : 18245
Points : 31121
Age : 58
Localisation : Dans la quatrieme dimension
Emploi : archi d'intérieur salarié
https://www.biblio3d.com

Messagetenrev Lun 3 Mai 2021 - 20:36

salut Simon

c'est super , je viens de le télécharger , je vais étudier cela avec grand intérêt et je remonterai mes impressions

bravo Simon, ça fait plaisir d'avoir un deuxième codeur sur le forum bien

-------------------------------------------------------------------------------------------------------------------------
je ne sais pas grand chose , mais le peu que je sache , je le partage 
1 PC fixe avec proc Rizen 9 3950X 32 threads - cg nvidia geforce RTX3080  - 64 go de ram DDssd 1To
1 PC portable MSI TITAN PRO écran 17''|win10 64 bits| i7 Quad core|ram 32go| CG GFORCE GTX1080 avec 8go
1 casque VR Occulus Rift - 1 vieux PC portable Dell sous Linux Ubuntu 18    1 vieux pc portable HP sous chromebook
Modélisation : Sketchup - Rhino - Pconplanner   Rendu: Enscape - Keyshot - Unreal Engine - Artlantis - Twinmotion   Autres: Photoshop - Illustrator - Indesign - Vidéostudio - After Effect - Première

[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel 575088biblio3d
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1667
Points : 3850
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

Messagesimjoubert Lun 3 Mai 2021 - 21:16

Merci jack !
Pour appellation codeur on attendra d'arriver à la v1.0.0.[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel IPB_917
Je vous présente mon travail avec grande joie mais beaucoup d'humilité !
L’apprentissage par l'exemple est douloureux pour les non anglophones !
Donc à tâtons avec beaucoup d’échecs et d'incompréhension et un peu plus tard la compréhension des notions clefs , m'ont permis d'aller un peu plus loin. Et apprendre en créant  un plugin de a à z c'est formateur.

Certain grands noms comme TIG ThomTom on publié des plugins one action, simples, ouverts et modifiables. c'est une bonne base d’apprentissage. Et il y a eu un coup de main appréciable de Dan sur le forum de Su.
Il y a encore beaucoup d'amélioration de test si les actions de l’utilisateur sont conformes à l'attendu. Et il faut que j'arrive à comprendre les observateurs qui vont permettent de résoudre des actualisations de listes et de rafraichissement de données.

-------------------------------------------------------------------------------------------------------------------------
"Les voici en foule : élargis l'espace de ta tente,
Allonge tes cordages ! Renforce tes piquets !
Déploie pour l'autre la toile qui t'abrite !"
ISAÏE 54-2
tenrev
tenrev
FONDATEUR DE BIBLIO3D
FONDATEUR DE BIBLIO3D
Masculin Humeur : excellente comme toujours
Date d'inscription : 19/01/2008
Nombre de messages : 18245
Points : 31121
Age : 58
Localisation : Dans la quatrieme dimension
Emploi : archi d'intérieur salarié
https://www.biblio3d.com

Messagetenrev Lun 3 Mai 2021 - 23:17

@Simon a écrit:Il faut que j'arrive à comprendre les observateurs .
Moi je suis un observateur qui ne comprend pas mdr6 mdr5 rigole

-------------------------------------------------------------------------------------------------------------------------
je ne sais pas grand chose , mais le peu que je sache , je le partage 
1 PC fixe avec proc Rizen 9 3950X 32 threads - cg nvidia geforce RTX3080  - 64 go de ram DDssd 1To
1 PC portable MSI TITAN PRO écran 17''|win10 64 bits| i7 Quad core|ram 32go| CG GFORCE GTX1080 avec 8go
1 casque VR Occulus Rift - 1 vieux PC portable Dell sous Linux Ubuntu 18    1 vieux pc portable HP sous chromebook
Modélisation : Sketchup - Rhino - Pconplanner   Rendu: Enscape - Keyshot - Unreal Engine - Artlantis - Twinmotion   Autres: Photoshop - Illustrator - Indesign - Vidéostudio - After Effect - Première

[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel 575088biblio3d
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1667
Points : 3850
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

Messagesimjoubert Mar 4 Mai 2021 - 14:59

Hello Jack !
Tu as réussi à l'installé ou ça plante dés le début !?
si c'était pas assez didactique :
Il faut sélectionner au moins un composant avant chaque action.
la sélection peut être impure, seule les composants seront pris en compte les groupes recevront mais cela sera actif qu’âpres transformation en composant.

-------------------------------------------------------------------------------------------------------------------------
"Les voici en foule : élargis l'espace de ta tente,
Allonge tes cordages ! Renforce tes piquets !
Déploie pour l'autre la toile qui t'abrite !"
ISAÏE 54-2
tenrev
tenrev
FONDATEUR DE BIBLIO3D
FONDATEUR DE BIBLIO3D
Masculin Humeur : excellente comme toujours
Date d'inscription : 19/01/2008
Nombre de messages : 18245
Points : 31121
Age : 58
Localisation : Dans la quatrieme dimension
Emploi : archi d'intérieur salarié
https://www.biblio3d.com

Messagetenrev Mar 4 Mai 2021 - 15:18

@simjoubert a écrit:Hello Jack !
Tu as réussi à l'installé ou ça plante dés le début !?
si c'était pas assez didactique :
Il faut sélectionner au moins un composant avant chaque action.
la sélection peut être impure, seule les composants seront pris en compte les groupes recevront mais cela sera actif qu’âpres transformation en composant.

salut Simon

non pas encore installé , j'ai beaucoup de taf , donc pour l'instant je survole le forum , je prend , je note , mais pour l'instant juste en observateur rigole p-clin

-------------------------------------------------------------------------------------------------------------------------
je ne sais pas grand chose , mais le peu que je sache , je le partage 
1 PC fixe avec proc Rizen 9 3950X 32 threads - cg nvidia geforce RTX3080  - 64 go de ram DDssd 1To
1 PC portable MSI TITAN PRO écran 17''|win10 64 bits| i7 Quad core|ram 32go| CG GFORCE GTX1080 avec 8go
1 casque VR Occulus Rift - 1 vieux PC portable Dell sous Linux Ubuntu 18    1 vieux pc portable HP sous chromebook
Modélisation : Sketchup - Rhino - Pconplanner   Rendu: Enscape - Keyshot - Unreal Engine - Artlantis - Twinmotion   Autres: Photoshop - Illustrator - Indesign - Vidéostudio - After Effect - Première

[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel 575088biblio3d
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1667
Points : 3850
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

Messagesimjoubert Mar 4 Mai 2021 - 15:22

Des que tu peux , j'ai hâte de voir vos retours !
clindoeil

-------------------------------------------------------------------------------------------------------------------------
"Les voici en foule : élargis l'espace de ta tente,
Allonge tes cordages ! Renforce tes piquets !
Déploie pour l'autre la toile qui t'abrite !"
ISAÏE 54-2

tenrev aime ce message

Samuel Tallet
Samuel Tallet
V.I.P.
V.I.P.
Masculin Date d'inscription : 15/04/2018
Nombre de messages : 750
Points : 2151
Age : 35
Localisation : Marseille, France

MessageSamuel Tallet Mar 4 Mai 2021 - 16:56

Bravo pour ton premier plugin Simon ! Si j'ai des remarques à propos du code, je te dirais.

-------------------------------------------------------------------------------------------------------------------------
Galerie Plugins

simjoubert aime ce message

simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1667
Points : 3850
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

Messagesimjoubert Mar 4 Mai 2021 - 19:39

Samuel Tallet-Sabathé a écrit:Bravo pour ton premier plugin Simon ! Si j'ai des remarques à propos du code, je te dirais.

Je suis passé de l'autre coté : welcome to the backend ! [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel IPB_279

Des remarques il y en aura surement beaucoup !
On doit pouvoir simplifier en utilisant des class mais j'avais un peu de mal à transmettre les variables !
Il reste à gérer les observateurs pour fluidifier et les cas ou l’utilisateur lance sans qu'il ai de composants dans la sélection.
Pour un premier jet d'un peu plus de 2500 lignes dont la moitié de commentaire c'est pas mal ! au moins j'ai compris ce que j’écrivais !

merci d'avance

-------------------------------------------------------------------------------------------------------------------------
"Les voici en foule : élargis l'espace de ta tente,
Allonge tes cordages ! Renforce tes piquets !
Déploie pour l'autre la toile qui t'abrite !"
ISAÏE 54-2
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1667
Points : 3850
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

Messagesimjoubert Mar 4 Mai 2021 - 19:43

A l'étude la génération de tableaux pour import dans layout !
Il faux que je fabrique une macro pour exporter et mettre a jour un fichier en en xls ou xlsx. formats supportés par layout du coup on profite de la mise à jour depuis le panneau référence de layout.
Il faut que je prévois un triple export depuis sketchup un fichier csv un fichier xlsm sui collecte et se met à jour depuis le csv et un troisième xlsx qui est mis à jour depuis  le xlsm par querry. dedans pleins de petits tableaux pour placer dans layout

allez [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel IPB_917

-------------------------------------------------------------------------------------------------------------------------
"Les voici en foule : élargis l'espace de ta tente,
Allonge tes cordages ! Renforce tes piquets !
Déploie pour l'autre la toile qui t'abrite !"
ISAÏE 54-2

tenrev et Samuel Tallet aiment ce message

Samuel Tallet
Samuel Tallet
V.I.P.
V.I.P.
Masculin Date d'inscription : 15/04/2018
Nombre de messages : 750
Points : 2151
Age : 35
Localisation : Marseille, France

MessageSamuel Tallet Mer 5 Mai 2021 - 15:41

Bonjour Simon.

Voici quelques remarques subjectives à propos du code de ce plugin :

- Il y a beaucoup de commentaires. C'est une bonne chose bien

- Le fichier Attribut_rapport.rb est trop long (+2800 lignes) lire Ceci peut ralentir l'éditeur de code et rendre difficile la maintenance... La solution consiste à répartir les fonctions dans plusieurs modules, un module par fichier. Exemple :

Code:

# excel.rb
module SimJoubert
  module AttributRapport
    module Excel
      def self.generer_rapport
      # ...
      end
    end
  end
end

Code:

# barre_outils.rb
module SimJoubert
  module AttributRapport
    module BarreOutils
      def self.initialiser
      # ...
      Excel.generer_rapport
      # ...
      end
    end
  end
end

Pour partager des données entre les modules, il y a la solution "variable de module" mais je préfère utiliser la solution "constante de module" même si c'est aberrant de changer la valeur d'une constante langue Exemple :

Code:

# sj_attribut_rapport.rb
module SimJoubert
  module AttributRapport
    SESSION = Hash.new
  end
end

Code:

# excel.rb
module SimJoubert
  module AttributRapport
    module Excel
      def self.generer_rapport
      # ...
      SESSION[:chemin_rapport_xls] = 'fichier.xls'
      # ...
      end
    end
  end
end

- Tu aurais pu écrire le code et les commentaires en anglais puis traduire en français les chaînes de caractères grâce à un fichier de traduction. Après ça dépend si tu veux une portée internationale... ou pas beret

-------------------------------------------------------------------------------------------------------------------------
Galerie Plugins

simjoubert aime ce message

simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1667
Points : 3850
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

Messagesimjoubert Mer 5 Mai 2021 - 16:05

Merci Samuel
Pour le découpage en plusieurs sous modules Ok j'ai pigé. Il faut pas que j'oublie de les référencer dans le fichier load.

Pour ton histoire de liaison entre module la j'ai pas tout pigé.
ce code c'est à placer dans le fichier principal qui est directement dans le dossier Plugin !?
Code:

# sj_attribut_rapport.rb
module SimJoubert
  module AttributRapport
    SESSION = Hash.new
  end
end


A quelle endroit on déclare la variable session

Code:
require 'sketchup'
require 'extensions'

module SimJoubert

  # TODO:
  # Ajouter la détection si la sélection est un groupe et le transformer le cas écheant en composant en récupérant son nom, et le rendre unique si doublon.
  #
  # Ajouter des attributs regroupement avec le calcule du total des sous totaux des composants enfants
  # Ajouter un attribut Code pour faire la liaison avec une base de données
 
  # Ajouter un appercu rapide d'un rapport html
  # Ajouter une option paramètres pour ajouter de nouveaux composant dans la barre outils et changer les icones
  
  #BUGS Connus
  
  
  
  module AttributRapport

    # Inscrit et charge l'extension.

    extension = SketchupExtension.new(
      'Attribut Rapport',
      'sj_attribut_rapport/load.rb'
    )

    extension.version     = '0.6.3'
    extension.creator     = 'Simon Joubert'
    extension.copyright   = ":copyright: 2018 #{extension.creator}"

    # TODO: Ecrire une description.
    extension.description = 'Ajoute des attributs dynamiques pour l\'export de rapports chiffrés, basé sur des quantités issues des longueurs,surfaces ou volumes. permet d\'insèrer des composants avec des attributs rapport prédéfinis '

    Sketchup.register_extension(
      extension,
      true # load_at_start
    )

  end

end


Une fois le hash Session initialisé

Je suis dans un sous module qui déclare les commande UI comment je fais référence à une définition de méthode_cmd placer dans un autre sous module ?


ex
Code:
#rapport.rb
Module SimJoubert
  Module AttributsRapport
  Module Rapport

      def export_xls_cmd
        ...
      end
    end
  end
end

Code:
#command_menu_barreoutils.rb
Module SimJoubert
  Module AttributsRapport
    Module CommandeBarreOutilsMenu
      cmd32 = UI::Command.new("Export RapportAttributs.xls") {   export_xls_cmd()}
      cmd33 = UI::Command.new("Import mise à jour attribut rapport csv") {   import_csv_maj_attribibut_cmd()}
      ...
    end
  end
end

-------------------------------------------------------------------------------------------------------------------------
"Les voici en foule : élargis l'espace de ta tente,
Allonge tes cordages ! Renforce tes piquets !
Déploie pour l'autre la toile qui t'abrite !"
ISAÏE 54-2
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1667
Points : 3850
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

Messagesimjoubert Mer 5 Mai 2021 - 17:05

Pour la traduction on verra un peu plus tard déjà j'essaye de comprendre ce que j’écris ! sourire

-------------------------------------------------------------------------------------------------------------------------
"Les voici en foule : élargis l'espace de ta tente,
Allonge tes cordages ! Renforce tes piquets !
Déploie pour l'autre la toile qui t'abrite !"
ISAÏE 54-2

tenrev aime ce message

Samuel Tallet
Samuel Tallet
V.I.P.
V.I.P.
Masculin Date d'inscription : 15/04/2018
Nombre de messages : 750
Points : 2151
Age : 35
Localisation : Marseille, France

MessageSamuel Tallet Mer 5 Mai 2021 - 22:01

@simjoubert a écrit:
Merci Samuel

Il n'y a pas de soucis mon ami clindoeil

@simjoubert a écrit:
Pour ton histoire de liaison entre module la j'ai pas tout pigé. [...]

A quelle endroit on déclare la variable session

Code:

require 'sketchup'
require 'extensions'

module SimJoubert

  # TODO:
  # ...
  
  #BUGS Connus
  
  module AttributRapport

    # ICI, PAR EXEMPLE
    SESSION = Hash.new

    # Inscrit et charge l'extension.

    extension = SketchupExtension.new(
      'Attribut Rapport',
      'sj_attribut_rapport/load.rb'
    )

    extension.version     = '0.6.3'
    extension.creator     = 'Simon Joubert'
    extension.copyright   = ":copyright: 2018 #{extension.creator}"

    # TODO: Ecrire une description.
    extension.description = 'Ajoute des attributs dynamiques pour l\'export de rapports chiffrés, basé sur des quantités issues des longueurs,surfaces ou volumes. permet d\'insèrer des composants avec des attributs rapport prédéfinis '

    Sketchup.register_extension(
      extension,
      true # load_at_start
    )

  end

end

@simjoubert a écrit:
Je suis dans un sous module qui déclare les commande UI comment je fais référence à une définition de méthode_cmd placer dans un autre sous module ?

Code:

# rapport.rb
module SimJoubert

  module AttributsRapport

    module Rapport

      def self.export_xls_cmd

        # ...

      end

    end

  end

end

Code:

# command_menu_barreoutils.rb
module SimJoubert

  module AttributsRapport

    module CommandeBarreOutilsMenu

      cmd32 = UI::Command.new("Export RapportAttributs.xls") {

        # COMME CECI
        Rapport.export_xls_cmd()

      }
 
      # ...
 
    end

  end

end

-------------------------------------------------------------------------------------------------------------------------
Galerie Plugins

simjoubert aime ce message

simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1667
Points : 3850
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

Messagesimjoubert Mer 5 Mai 2021 - 22:38

Nickel !
Le plugin redémarre et les commandes fonctionnent ! bien  respect

Pour en revenir au hash session constante du module principale

Je peux dans un sous module ajouter une key value avec
Code:
SESSION[:Key] = value

Pour la récupérer dans un autre sous module
Code:
recuperer_valeur = SESSION[:key]

les syntaxes sont elles bonnes ou il faut utiliser des @ ou autre bidules choses? hmm


Merci

-------------------------------------------------------------------------------------------------------------------------
"Les voici en foule : élargis l'espace de ta tente,
Allonge tes cordages ! Renforce tes piquets !
Déploie pour l'autre la toile qui t'abrite !"
ISAÏE 54-2
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1667
Points : 3850
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

Messagesimjoubert Jeu 6 Mai 2021 - 0:25

Hello Tous !

Voici la mise à jour v0.6.4

Au programme optimisation du code en le fractionnant en plusieurs sous modules.
Merci Samuel

Ajout de la mise à jour depuis le tableau Excel

Petite Démo
[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Attribut_Rapport_demo01

Voici le fichier à décompresser pour accéder au rbz
Fichiers joints
[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Attachment
sj_attribut_rapport.v.0.6.4.zip Vous n'avez pas la permission de télécharger les fichiers joints.(973 Ko) Téléchargé 1 fois

-------------------------------------------------------------------------------------------------------------------------
"Les voici en foule : élargis l'espace de ta tente,
Allonge tes cordages ! Renforce tes piquets !
Déploie pour l'autre la toile qui t'abrite !"
ISAÏE 54-2

Samuel Tallet aime ce message

Samuel Tallet
Samuel Tallet
V.I.P.
V.I.P.
Masculin Date d'inscription : 15/04/2018
Nombre de messages : 750
Points : 2151
Age : 35
Localisation : Marseille, France

MessageSamuel Tallet Jeu 6 Mai 2021 - 7:59

@simjoubert a écrit:
Pour en revenir au hash session constante du module principale

Je peux dans un sous module ajouter une key value avec
Code:
SESSION[:Key] = value

Pour la récupérer dans un autre sous module
Code:
recuperer_valeur = SESSION[:key]

les syntaxes sont elles bonnes ou il faut utiliser des @ ou autre bidules choses? hmm

Les syntaxes sont bonnes à ceci près qu'il faut respecter la casse.

Code:

SESSION[:key]

ne pointe pas vers la même valeur que

Code:

SESSION[:Key]

Et nul besoin d'arobases avec la solution "constante de module" sourire

-------------------------------------------------------------------------------------------------------------------------
Galerie Plugins

simjoubert aime ce message

simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1667
Points : 3850
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

Messagesimjoubert Jeu 6 Mai 2021 - 8:28

Salut Samuel
Merci pour ta réponse

j'aimerais faire des boites de dialogues html plus ergonomique pour la saisies de valeurs et voir faire une preview du rapport .

en admettant que j'ai un array avec mes valeurs par défaut
comment je prérempli les input d'un formulaire html et comment je les récupère apres dans un autre array

Code:
#fichier ruby
defaut_value = ["abc", 1, "efg"]



#initialisation boite dialogue
dialog = UI::HtmlDialog.new(
  dialog_title: "Dialog Example",
  preferences_key: "my_name_my_extension_my_dialog",
  scrollable: true,
  resizable: true,
  width: 600,
  height: 400,
  left: 100,
  top: 100,
  min_width: 50,
  min_height: 50,
  max_width: 1000,
  max_height: 1000,
  style: UI::HtmlDialog::STYLE_DIALOG
)
dialog.set_file("c:/formulaire.html")
dialog.show



Code:
#fichier formulaire.html
 <FORM >
<TABLE BORDER=0>
<TR>
 <TD>Rubrique 1</TD>
 <TD>
 <INPUT type=text name="rubrique1">
 </TD>
</TR>
<TR>
 <TD>Rubrique 2</TD>
 <TD>
 <INPUT type=text name="rubrique2">
 </TD>
</TR>
<TR>
 <TD>Rubrique 3</TD>
 <TD>
 <INPUT type=text name="rubrique3">
 </TD>
</TR>
</TABLE>
</FORM>


Comment et ou je mets les codes javascript et les actions ruby de callback
pourcharger le formulaire avec mes valeurs par défaut et ensuite pour obtenir les valeurs réponses du formulaire

Code:
reponse = [input rubrique1, input rubrique2, input rubrique3]

j'arrive pas à comprendre ! rage donc je veux bien que tu corriges et complètes cet exemple tout simple pour bien comprendre la logique et la syntaxe correcte!

Merci sos ange

-------------------------------------------------------------------------------------------------------------------------
"Les voici en foule : élargis l'espace de ta tente,
Allonge tes cordages ! Renforce tes piquets !
Déploie pour l'autre la toile qui t'abrite !"
ISAÏE 54-2
Samuel Tallet
Samuel Tallet
V.I.P.
V.I.P.
Masculin Date d'inscription : 15/04/2018
Nombre de messages : 750
Points : 2151
Age : 35
Localisation : Marseille, France

MessageSamuel Tallet Jeu 6 Mai 2021 - 8:36

Mon cher Simon,

Si tu souhaites que ton extension soit également compatible à 100% avec macOS :

1. Convertis chaque icône SVG en PDF avec ce convertisseur en ligne par exemple.

2. Charges les SVG sous Windows et les PDF sous macOS avec du code. Exemple.

-------------------------------------------------------------------------------------------------------------------------
Galerie Plugins

tenrev et simjoubert aiment ce message

Samuel Tallet
Samuel Tallet
V.I.P.
V.I.P.
Masculin Date d'inscription : 15/04/2018
Nombre de messages : 750
Points : 2151
Age : 35
Localisation : Marseille, France

MessageSamuel Tallet Jeu 6 Mai 2021 - 9:45

@simjoubert a écrit:
j'aimerais faire des boites de dialogues html plus ergonomique pour la saisies de valeurs et voir faire une preview du rapport .

en admettant que j'ai un array avec mes valeurs par défaut
comment je prérempli les input d'un formulaire html et comment je les récupère apres dans un autre array

Comment et ou je mets les codes javascript et les actions ruby de callback
pourcharger le formulaire avec mes valeurs par défaut et ensuite pour obtenir les valeurs réponses du formulaire

Il y a plusieurs solutions. Au fil du temps, j'ai développé la mienne. Ma solution permet d'avoir un fichier .rhtml (mélange de Ruby et de HTML) et des fichiers .js et .css pour faciliter l'édition du code et l'accès aux données... Mais je ne vais pas t'embrouiller avec ça pour le moment. Je vais essayer de rester simple en reprenant ton exemple clindoeil

Code:

# Définition des valeurs par défaut.
default_values = {

    rubrique1: 'abc',
    rubrique2: 1,
    rubrique3: 'efg'

}

# Les valeurs saisies seront stockées là.
entered_values = {}

# Préparation du code CSS (syntaxe HEREDOC).
css = <<-CSS

    input {
        border: 1px solid #ddd;
        border-radius: 4px;
    }

    input:focus {
        outline: none;
    }

CSS

# Préparation du code JS (syntaxe HEREDOC).
js = <<-JS

    // Lorsque le document HTML est chargé :
    document.addEventListener('DOMContentLoaded', _event => {

        // Pour chaque élément HTML de type input :
        document.querySelectorAll('input').forEach(inputElement => {

            // Lorsque qu'une valeur est saisie :
            inputElement.addEventListener('input', event => {

                // On appelle le callback défini
                // en Ruby un peu plus bas...
                sketchup.enregistrerValeurSaisie(
                    event.currentTarget.name,
                    event.currentTarget.value
                )

            })

        })

    })

JS

# Préparation du code HTML (syntaxe HEREDOC).
html = <<-HTML
    <html>

        <head>
            <!-- Le CSS est inclus dans le HTML -->
            <style>#{css}</style>

            <!-- Le JS aussi -->
            <script>#{js}</script>
        </head>

        <body>
            <form>
                <table>
                    <tr>
                        <td>Rubrique 1</td>
                        <td>
                            <input type="text" name="rubrique1" value="#{default_values[:rubrique1]}" />
                        </td>
                    </tr>
                    <tr>
                        <td>Rubrique 2</td>
                        <td>
                            <input type="text" name="rubrique2" value="#{default_values[:rubrique2]}" />
                        </td>
                    </tr>
                    <tr>
                        <td>Rubrique 3</td>
                        <td>
                            <input type="text" name="rubrique3" value="#{default_values[:rubrique3]}" />
                        </td>
                    </tr>
                </table>
            </form>
        </body>
    </html>
HTML

# Initialisation de la boîte de dialogue.
dialog = UI::HtmlDialog.new(

    dialog_title: "Dialog Example",
    preferences_key: "my_name_my_extension_my_dialog",
    scrollable: true,
    resizable: true,
    width: 600,
    height: 400,
    left: 100,
    top: 100,
    min_width: 50,
    min_height: 50,
    max_width: 1000,
    max_height: 1000,
    style: UI::HtmlDialog::STYLE_DIALOG

)

# Paramétrage de la boîte de dialogue.
dialog.add_action_callback('enregistrerValeurSaisie') do |_contexte, cle, valeur|

    entered_values[cle.to_sym] = valeur

    # Affichage des valeurs saisies.
    UI.messagebox(entered_values)

end

# Remplissage de la boîte de dialogue.
dialog.set_html(html)

# Affichage de la boîte de dialogue.
dialog.show

-------------------------------------------------------------------------------------------------------------------------
Galerie Plugins

simjoubert aime ce message

simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1667
Points : 3850
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

Messagesimjoubert Jeu 6 Mai 2021 - 9:57

Chef c'est fait !
j'ai les icone en pdf pour contourner la limite des 10 par jour j'ai user de mon VPN content

Bon j'ai bien vu ton TRANSLATE[]
Tu la déclares comme la constante SESSION dans le fichier principal ?
Comment tu récupères la langue de l'utilisateur pour swicher de langue
et enfin comment tu charges l'array translate avec les valeur du fichier langue. c'est un hash ou un double array TRANSLATE[:texte1]= ["texte FR", "texte Anglais"]
commençons par un simple GB et FR

-------------------------------------------------------------------------------------------------------------------------
"Les voici en foule : élargis l'espace de ta tente,
Allonge tes cordages ! Renforce tes piquets !
Déploie pour l'autre la toile qui t'abrite !"
ISAÏE 54-2
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1667
Points : 3850
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

Messagesimjoubert Jeu 6 Mai 2021 - 10:03

Merci pour le code de la boite de dialogue il faut que je digère un peu!
mais c'est cool ! fou2

-------------------------------------------------------------------------------------------------------------------------
"Les voici en foule : élargis l'espace de ta tente,
Allonge tes cordages ! Renforce tes piquets !
Déploie pour l'autre la toile qui t'abrite !"
ISAÏE 54-2

Samuel Tallet aime ce message

simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1667
Points : 3850
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

Messagesimjoubert Jeu 6 Mai 2021 - 10:19

Il faut peut-être que je te laisse bosser , sourire
Mais au sujet de la boite de dialogue
pour que l'exemple puisse être complet peut tu rajouter 2 boutons OK et Cancel
pour ok récupère les valeurs de du hash entered_values = {}
Merci

-------------------------------------------------------------------------------------------------------------------------
"Les voici en foule : élargis l'espace de ta tente,
Allonge tes cordages ! Renforce tes piquets !
Déploie pour l'autre la toile qui t'abrite !"
ISAÏE 54-2
Samuel Tallet
Samuel Tallet
V.I.P.
V.I.P.
Masculin Date d'inscription : 15/04/2018
Nombre de messages : 750
Points : 2151
Age : 35
Localisation : Marseille, France

MessageSamuel Tallet Jeu 6 Mai 2021 - 13:30

@simjoubert a écrit:
j'ai les icone en pdf pour contourner la limite des 10 par jour j'ai user de mon VPN  content

content

@simjoubert a écrit:
Bon j'ai bien vu ton TRANSLATE[]
Tu la déclares comme la constante SESSION dans le fichier principal ?

Oui, le plus tôt possible, en tant que constante de module.

@simjoubert a écrit:
Comment tu récupères la langue de l'utilisateur pour swicher de langue et enfin comment tu charges l'array translate avec les valeur du fichier langue.

Par exemple : Quand tu instancies un objet LanguageHandler avec la chaîne de caractères plugin.translation, tu obtiens un objet avec une méthode crochet-crochet. Cette méthode te permet d'accéder aux chaines de caractères traduites pour la langue courante. Le fichier de traduction (plugin.translation) de la langue courante est automatiquement sélectionné. Tu trouveras des exemples de fichiers de traduction ici.

@simjoubert a écrit:
c'est un hash ou un double array

C'est un hash. Exemple d'utilisation :

Code:

extension.description = TRANSLATE['This plugin rocks!']

-------------------------------------------------------------------------------------------------------------------------
Galerie Plugins

simjoubert aime ce message

Samuel Tallet
Samuel Tallet
V.I.P.
V.I.P.
Masculin Date d'inscription : 15/04/2018
Nombre de messages : 750
Points : 2151
Age : 35
Localisation : Marseille, France

MessageSamuel Tallet Jeu 6 Mai 2021 - 14:33

@simjoubert a écrit:[...] au sujet de la boite de dialogue
pour que l'exemple puisse être complet peut tu rajouter 2 boutons OK et Cancel [...]

Bien sûr content

Code:


# Définition des valeurs par défaut.
default_values = {

    rubrique1: 'abc',
    rubrique2: 1,
    rubrique3: 'efg'

}

# Les valeurs saisies seront stockées là.
entered_values = {}

# Préparation du code CSS (syntaxe HEREDOC).
css = <<-CSS

    table tr {
        text-align: center;
    }

    input {
        border: 1px solid #ddd;
        border-radius: 4px;
    }

    input:focus {
        outline: none;
    }

CSS

# Préparation du code JS (syntaxe HEREDOC).
js = <<-JS

    // Mise en place d'un espace de noms pour éviter les conflits...
    SimJoubert = {}

    /**
     * Renvoie les valeurs saisies.
     *
     * @returns {object}
     */
    SimJoubert.obtenirValeursSaisies = () => {

        var valeursSaisies = {}

        // Pour chaque élément HTML de type input :
        document.querySelectorAll('input').forEach(elementInput => {
            valeursSaisies[elementInput.name] = elementInput.value
        })

        return valeursSaisies

    }

    // Gestion des évènements.

    // Dès que le document HTML est chargé :
    document.addEventListener('DOMContentLoaded', _evenement => {

        // Lors d'un clic sur le bouton OK :
        document.getElementById('bouton-ok').addEventListener('click', _evenement => {

            // On appelle le callback défini en Ruby un peu plus bas...
            sketchup.enregistrerValeursSaisies(SimJoubert.obtenirValeursSaisies())

        })

        // Lors d'un clic sur le bouton Annuler :
        document.getElementById('bouton-annuler').addEventListener('click', _evenement => {

            // On appelle le callback défini en Ruby un peu plus bas...
            sketchup.effacerValeursSaisies()

        })

    })

JS

# Préparation du code HTML (syntaxe HEREDOC).
html = <<-HTML
    <html>

        <head>
            <!-- Le CSS est inclus dans le HTML -->
            <style>#{css}</style>

            <!-- Le JS aussi -->
            <script>#{js}</script>
        </head>

        <body>
            <form>
                <table>
                    <tr>
                        <td>Rubrique 1</td>
                        <td>
                            <input type="text" name="rubrique1" value="#{default_values[:rubrique1]}" />
                        </td>
                    </tr>
                    <tr>
                        <td>Rubrique 2</td>
                        <td>
                            <input type="text" name="rubrique2" value="#{default_values[:rubrique2]}" />
                        </td>
                    </tr>
                    <tr>
                        <td>Rubrique 3</td>
                        <td>
                            <input type="text" name="rubrique3" value="#{default_values[:rubrique3]}" />
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <button id="bouton-ok">OK</button>
                        </td>
                        <td>
                            <button id="bouton-annuler">Annuler</button>
                        </td>
                    </tr>
                </table>
            </form>
        </body>
    </html>
HTML

# Initialisation de la boîte de dialogue.
dialog = UI::HtmlDialog.new(

    dialog_title: "Dialog Example",
    preferences_key: "my_name_my_extension_my_dialog",
    scrollable: true,
    resizable: true,
    width: 600,
    height: 400,
    left: 100,
    top: 100,
    min_width: 50,
    min_height: 50,
    max_width: 1000,
    max_height: 1000,
    style: UI::HtmlDialog::STYLE_DIALOG

)

# Paramétrage de la boîte de dialogue.

dialog.add_action_callback('enregistrerValeursSaisies') do |_contexte, valeurs_saisies|

    # Enregistrement des valeurs saisies.
    entered_values = valeurs_saisies

    # Fermeture de la boîte de dialogue.
    dialog.close

    # Affichage des valeurs saisies.
    UI.messagebox(entered_values)

end

dialog.add_action_callback('effacerValeursSaisies') do |_contexte|

    # Effacement des valeurs saisies.
    entered_values = {}

    # Fermeture de la boîte de dialogue.
    dialog.close

end

# Remplissage de la boîte de dialogue.
dialog.set_html(html)

# Affichage de la boîte de dialogue.
dialog.show


Dernière édition par Samuel Tallet-Sabathé le Jeu 6 Mai 2021 - 14:52, édité 1 fois

-------------------------------------------------------------------------------------------------------------------------
Galerie Plugins

simjoubert aime ce message

Page 1 sur 4 1, 2, 3, 4  Suivant

Voir le sujet précédent Voir le sujet suivant Revenir en haut

Créer un compte ou se connecter pour répondre

Vous devez être membre pour répondre.

S'enregistrer

Rejoignez notre communauté ! C'est facile !


S'enregistrer

Connexion

Vous êtes déjà membre ? Aucun soucis, cliquez ici pour vous connecter.


Connexion

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum