Forum Sketchup Artlantis Archicad
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Annonces
Bonjour Invité Bienvenue sur le forum biblio3d - le forum a été créé le Sam 19 Jan 2008 - 14:26- Nous avons enregistrés 14823 topics pour un total de : 175810 posts - le record de membres connectés simultanément :555
Galerie


[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Empty
Ton bloc notes
Derniers sujets
» [ CHALLENGE 2024 ] les images finales du challenge
par tenrev Hier à 23:20

» [ SKETCHUP généralité ] Tête de pilastre
par Lionscov Ven 8 Nov 2024 - 22:23

» [ ARCHICAD ] Plus de format *atl dans Archicad
par Coulou Ven 8 Nov 2024 - 8:27

» [ SKETCHUP composants dynamiques ] Formule IF
par Samuel MATHIEU Jeu 7 Nov 2024 - 21:12

» [ Challenge 2024] cHallenge archjtexture exterieur ou paysagiste-vick-sketchup-enscape
par vick Jeu 7 Nov 2024 - 10:23

» [ SKETCHUP plugins ] une barre d’outils perso
par tenrev Mer 6 Nov 2024 - 10:42

» [ SKETCHUP vray ]
par tenrev Mar 5 Nov 2024 - 21:19

» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste- Gaspard Hauser - Sketchup - D5 render
par tenrev Mar 5 Nov 2024 - 10:22

» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - JDD - SketchUp - Enscape
par tenrev Mar 5 Nov 2024 - 10:10

» [ ARCHICAD ] Murs paramétriques
par Coulou Lun 28 Oct 2024 - 10:28

» [ SKETCHUP généralité ] Aide pour SKP 2017
par PEGASE Sam 26 Oct 2024 - 18:36

» [ ARCHICAD ] Ajouter du lambris sur un mur
par Coulou Jeu 24 Oct 2024 - 10:43

» [ SKETCHUP généralité ] 1 Citrouille à imprimer pour Halloween
par jerryvento Jeu 24 Oct 2024 - 8:13

» [ SKETCHUP tutos ] 1 Citrouille à imprimer pour Halloween
par jerryvento Jeu 24 Oct 2024 - 8:11

» [ D5_RENDER] Petit exemple "hors sujet" ... D5
par Gaspard Hauser Mar 22 Oct 2024 - 19:59

» [ MATOS INFORM. ] [WINDOWS] Miniatures de prévisualisation pour les fichiers de modèle 3D au format .OBJ, .FBX, .STL, .3DS et +
par Gaspard Hauser Mar 22 Oct 2024 - 19:49

» [ SKETCHUP Layout ] Symboles Électriques sur Layout
par JDD Jeu 17 Oct 2024 - 9:44

» [ ARCHICAD ] gardes corps et profils complexe ?
par Christophe Fortineau Lun 14 Oct 2024 - 12:10

» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - allansens - cinema 4D
par Allansens Sam 12 Oct 2024 - 13:53

» [ ARTLANTIS ] Ca donne envie !
par Gaspard Hauser Jeu 10 Oct 2024 - 10:00

» [ TWINMOTION ] Unreal Engine déménage sur Fab - DataSmith & Archicad
par Coulou Jeu 10 Oct 2024 - 9:03

» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - AK40Cess - Archicad-Twinmotion
par Coulou Mar 8 Oct 2024 - 11:53

» [ TWINMOTION ] Unreal Engine déménage sur Fab - Assets de Megascan
par JDD Lun 7 Oct 2024 - 21:52

» [ CHALLENGE ARCHITECTURE EXTERIEURE OU PAYSAGISTE ] Démarrage du challenge 2024 - les régles
par tenrev Jeu 3 Oct 2024 - 14:58

» [ ARCHICAD ] Cotation d'ouverture sans hauteur
par Titou Jeu 3 Oct 2024 - 11:21

» [ ARCHICAD ] - Bardage à claire voie paramétrique
par Fred0079 Mer 2 Oct 2024 - 10:53

» [ SKETCHUP LIVE COMPONENT ] besoin de tuyaux sur les textures random
par simjoubert Lun 30 Sep 2024 - 0:45

» [ D5_RENDER ] Animation visualisation architecturale
par Gaspard Hauser Jeu 26 Sep 2024 - 16:49

» [ SKETCHUP LIVE COMPONENT ] Importer une liste de points dans son graphe via un input texte
par simjoubert Mer 25 Sep 2024 - 16:32

» [ ARCHICAD ] Extrémités de Poutres
par Coulou Mer 25 Sep 2024 - 9:54

» [ SKETCHUP LIVE COMPONENT ] chemin courbe défini dans sketchup
par simjoubert Ven 20 Sep 2024 - 20:07

» Bonjour à tous !
par tenrev Lun 16 Sep 2024 - 11:49

» Recherche un dessinateur pour mes produits
par tenrev Lun 16 Sep 2024 - 11:48

» [ SKETCHUP composants dynamiques ]
par simjoubert Dim 15 Sep 2024 - 9:37

» [ CHALLENGE 2024 ]Challenge architecture extérieure ou paysagiste - Nicolaco - Sketchup - Blender - Cycles (ABANDON)
par youyou40 Lun 9 Sep 2024 - 19:18

Sondage

êtes vous intéressé et prêt à participer à un challenge ?

[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Poll_c1015%[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Poll_c10 15% [ 2 ]
[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Poll_c1031%[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Poll_c10 31% [ 4 ]
[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Poll_c1046%[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Poll_c10 46% [ 6 ]
[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Poll_c108%[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Poll_c10 8% [ 1 ]
[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Poll_c100%[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Poll_c10 0% [ 0 ]
[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Poll_c100%[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel Poll_c10 0% [ 0 ]

Total des votes : 13

chaine sketchup.tv
Serveur Discord

[ 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 : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

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é 12 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 : 19936
Points : 34768
Age : 61
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/Salut Invité merci de consulter mon profil/PC fixe Rizen 9 3950 cg RTX3080-64 go de ram DDssd 1To/1 PC portable Lenovo  16'' w11 i7 32go-CG  RTX3070 8go/1casque meta Quest 3/1 casque VR Occulus Rift /1 PC portable Dell sous Linux Ubuntu-1 pc portable HP sous chromebook/Raspberry Pi - Arduino /  Modélisation :Sketchup-Rhino-Pconplanner-Rendu:Enscape-Keyshot-Unreal Engine-Twinmotion-Autres:Photoshop-Indesign-After Effect-Première pro-Intelligence artificielle -Chatgpt+-Midjourney-Suno-Elevenlabs-Canva
[ 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 : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

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 : 19936
Points : 34768
Age : 61
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/Salut Invité merci de consulter mon profil/PC fixe Rizen 9 3950 cg RTX3080-64 go de ram DDssd 1To/1 PC portable Lenovo  16'' w11 i7 32go-CG  RTX3070 8go/1casque meta Quest 3/1 casque VR Occulus Rift /1 PC portable Dell sous Linux Ubuntu-1 pc portable HP sous chromebook/Raspberry Pi - Arduino /  Modélisation :Sketchup-Rhino-Pconplanner-Rendu:Enscape-Keyshot-Unreal Engine-Twinmotion-Autres:Photoshop-Indesign-After Effect-Première pro-Intelligence artificielle -Chatgpt+-Midjourney-Suno-Elevenlabs-Canva
[ 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 : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

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 : 19936
Points : 34768
Age : 61
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/Salut Invité merci de consulter mon profil/PC fixe Rizen 9 3950 cg RTX3080-64 go de ram DDssd 1To/1 PC portable Lenovo  16'' w11 i7 32go-CG  RTX3070 8go/1casque meta Quest 3/1 casque VR Occulus Rift /1 PC portable Dell sous Linux Ubuntu-1 pc portable HP sous chromebook/Raspberry Pi - Arduino /  Modélisation :Sketchup-Rhino-Pconplanner-Rendu:Enscape-Keyshot-Unreal Engine-Twinmotion-Autres:Photoshop-Indesign-After Effect-Première pro-Intelligence artificielle -Chatgpt+-Midjourney-Suno-Elevenlabs-Canva
[ 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 : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

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 : 873
Points : 2465
Age : 38
Localisation : Marseille, France
Emploi : Développeur Web

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 : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

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 : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

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 : 873
Points : 2465
Age : 38
Localisation : Marseille, France
Emploi : Développeur Web

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 : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

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 : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

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 : 873
Points : 2465
Age : 38
Localisation : Marseille, France
Emploi : Développeur Web

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 : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

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 : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

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é 3 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 : 873
Points : 2465
Age : 38
Localisation : Marseille, France
Emploi : Développeur Web

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 : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

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 : 873
Points : 2465
Age : 38
Localisation : Marseille, France
Emploi : Développeur Web

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 : 873
Points : 2465
Age : 38
Localisation : Marseille, France
Emploi : Développeur Web

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 : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

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 : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

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 : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

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 : 873
Points : 2465
Age : 38
Localisation : Marseille, France
Emploi : Développeur Web

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 : 873
Points : 2465
Age : 38
Localisation : Marseille, France
Emploi : Développeur Web

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

Contenu sponsorisé

MessageContenu sponsorisé

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