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 14835 topics pour un total de : 175875 posts - le record de membres connectés simultanément :853
Galerie


[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel - Page 2 Empty
Ton bloc notes
Derniers sujets
» [ SKETCHUP plugins ] Les bon plans Black Friday 2024
par simjoubert Hier à 16:19

» [ TWINMOTION ] Unreal Engine déménage sur Fab - DataSmith & Archicad
par simjoubert Hier à 16:04

» [ SKETCHUP généralité ] Tête de pilastre
par jerryvento Hier à 8:52

» [ CHALLENGE 2024 ] résultats du challenge
par Allansens Hier à 8:42

» [ ARCHICAD ] Paramétrage des coupes sur Archicad
par AK40Cess Jeu 21 Nov 2024 - 14:12

» [ FORUM ] astuce pour insérer facilement un tableau sur le forum
par tenrev Mer 20 Nov 2024 - 9:12

» [ SKETCHUP plugins ] une barre d’outils perso
par tenrev Lun 18 Nov 2024 - 15:05

» [ SKETCHUP généralité ] Orienter 1 Face, 1 Profil Normal (Perpendiculaire) à 1 Arête, 1 Trajectoire
par jerryvento Lun 18 Nov 2024 - 14:47

» [ SKETCHUP généralité ] Modéliser facilement 1 spirale en moins de 40 secondes
par jerryvento Lun 18 Nov 2024 - 14:47

» [ SKETCHUP généralité ] Modélise 1 Forme Hélicoïdale, en forme de spirale : main courante, rampe d'accès voitures...
par jerryvento Lun 18 Nov 2024 - 14:46

» [ SKETCHUP tutos ] Orienter 1 Face, 1 Profil Normal (Perpendiculaire) à 1 Arête, 1 Trajectoire
par jerryvento Lun 18 Nov 2024 - 14:45

» [ SKETCHUP tutos ] Modéliser facilement 1 spirale en moins de 40 secondes
par jerryvento Lun 18 Nov 2024 - 14:44

» [ SKETCHUP tutos ] Modélise 1 Forme Hélicoïdale, en forme de spirale : main courante, rampe d'accès voitures...
par jerryvento Lun 18 Nov 2024 - 14:43

» ColorMaker par Didier Bur[ SKETCHUP plugins ]
par JDD Dim 17 Nov 2024 - 20:56

» [ ARCHICAD ] Plus de format *atl dans Archicad
par Coulou Jeu 14 Nov 2024 - 8:26

» [ SKETCHUP tutos ] Créer des Bibliothèques et des livres aléatoires Facilement (2 Méthodes!)
par tenrev Mar 12 Nov 2024 - 11:31

» [ CHALLENGE 2024 ] les images finales du challenge
par tenrev Lun 11 Nov 2024 - 15:35

» [ 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 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

» [ 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

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 - Page 2 Poll_c1015%[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel - Page 2 Poll_c10 15% [ 2 ]
[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel - Page 2 Poll_c1031%[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel - Page 2 Poll_c10 31% [ 4 ]
[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel - Page 2 Poll_c1046%[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel - Page 2 Poll_c10 46% [ 6 ]
[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel - Page 2 Poll_c108%[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel - Page 2 Poll_c10 8% [ 1 ]
[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel - Page 2 Poll_c100%[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel - Page 2 Poll_c10 0% [ 0 ]
[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel - Page 2 Poll_c100%[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel - Page 2 Poll_c10 0% [ 0 ]

Total des votes : 13

chaine sketchup.tv
Serveur Discord
Le Deal du moment :
SSD interne Crucial BX500 2,5″ SATA – 500 ...
Voir le deal
29.99 €

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

Page 2 sur 4 Précédent  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 : 2920
Points : 6434
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

Messagesimjoubert Jeu 6 Mai 2021 - 14:51

Super, ca marche bien ! Maintenant j'ouvre mes neurones !

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

Messagesimjoubert Jeu 6 Mai 2021 - 15:12

Samuel Tallet-Sabathé a écrit: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.

Merci dans ton fichier j'ai pas vu ou tu déclarait le chemin pour ponter vers le bon repertoire
Code:
# Charger la traduction si elle est disponible pour les paramètres régionaux actuels.
    TRANSLATE  =  LanguageHandler . nouveau ( 'pmg.translation' )
    # Voir: "parametric_modeling / Resources / # {Sketchup.get_locale} /pmg.translation"

Ta dernière ligne est cotée et je ne vois pas où dans ton code tu l'a définit

-------------------------------------------------------------------------------------------------------------------------
"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 - 15:48

simjoubert a écrit:
Samuel Tallet-Sabathé a écrit: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.

dans ton fichier j'ai pas vu ou tu déclarait le chemin pour ponter vers le bon repertoire

Car c'est implicite. LanguageHandler ouvre le dossier Resources puis le sous-dossier correspondant au code de la langue courante (exemples : fr, es) pour charger le fichier de traduction...

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

Messagesimjoubert Jeu 6 Mai 2021 - 15:52

Ok je cherchais mais ne trouvais pas !
et la référence initiale est forcement l'anglais ou l'on peut inverser et dire recherche l'anglais depuis le français ?
Indiquer si pas trouver alors par défaut c'est GB

-------------------------------------------------------------------------------------------------------------------------
"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 - 16:09

simjoubert a écrit:
et la référence initiale est forcement l'anglais ou l'on peut inverser et dire recherche l'anglais depuis le français ?

En principe : tu peux définir tes chaînes de caractères de référence en français et ajouter une traduction en-US mais cela risque de compliquer le travail d'un traducteur espagnol, par exemple, qui sera contraint de traduire le français en espagnol... Et si SketchUp est en espagnol et que ton plugin n'est pas traduit en espagnol, alors il sera en français ! mdr5

-------------------------------------------------------------------------------------------------------------------------
Galerie | Plugins

simjoubert aime ce message

Rascal
Rascal
Administrateurs
Administrateurs
Masculin Humeur : Bonne en général, sauf quand ça ne va pas!
Date d'inscription : 28/08/2018
Nombre de messages : 2284
Points : 4746
Age : 45
Localisation : Pays Gallo
Emploi : Beaucoup trop en ce moment!!

MessageRascal Jeu 6 Mai 2021 - 19:12

fou2 Super Simon! Je rentre encore d'une session sans aucun contact avec le monde extérieur et je découvre ce beau nouveau joujou! Félicitation Simon bravo2 bravo2

Je passe un peu de temps en Famille et je regarde ça! fouet2

-------------------------------------------------------------------------------------------------------------------------
Il vaut mieux fermer sa gueule et passer pour un con,...
..... que l'ouvrir et ne laisser aucun doute à ce sujet clindoeil

simjoubert 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 : 19943
Points : 34784
Age : 61
Localisation : Dans la quatrieme dimension
Emploi : archi d'intérieur salarié
https://www.biblio3d.com

Messagetenrev Jeu 6 Mai 2021 - 20:08

Rascal a écrit:Je passe un peu de temps en Famille et je regarde ça!

comment ça Pascal ? tu fais passer ta famille avant le plugin de maitre Simon ?

bon, profites bien de ta famille ya que ça de vrai

-------------------------------------------------------------------------------------------------------------------------
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 - Page 2 575088biblio3d

simjoubert et Rascal aiment ce message

Rascal
Rascal
Administrateurs
Administrateurs
Masculin Humeur : Bonne en général, sauf quand ça ne va pas!
Date d'inscription : 28/08/2018
Nombre de messages : 2284
Points : 4746
Age : 45
Localisation : Pays Gallo
Emploi : Beaucoup trop en ce moment!!

MessageRascal Jeu 6 Mai 2021 - 21:10

Tu as raison Jack! Quel égoïste je fais !

-------------------------------------------------------------------------------------------------------------------------
Il vaut mieux fermer sa gueule et passer pour un con,...
..... que l'ouvrir et ne laisser aucun doute à ce sujet clindoeil
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 2920
Points : 6434
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

Messagesimjoubert Sam 8 Mai 2021 - 11:26

Hello Samuel


J'arrive à retrouver toutes les instances de composants du modèle ayant dans leur définitions l'attribut "ra_0" du dictionnaire "dynamic_attribues" après plusieurs itérations et filtrages depuis dliste_modele,  qui liste toutes les définitions de composants du modèle. Après filtrage j’obtiens un aray inst_rapport_modele qui contient tout les composant avec l'attribut "ra_0" dans le modèle

Code:
dliste= Sketchup.active_model.definitions

Je voudrai faire la même chose mais uniquement pour la sélection active et pas uniquement le premier rang mais à travers toutes les branches du dom

et avoir  array inst_rapport_selection

Comment je dois faire ? je n'arrive pas à utiliser Sketchup::instancePath. C'est bien dommage qu'il n'existe pas un selection.instances qui ferait le bouleau en deux mots ! rage

L'idée est de proposer le rapport uniquement pour la sélection. donc il faut que je récupère les instances et non les définitions car pour une définition il peut y avoir des instances non contenu dans a sélection.

Voicima méthode de filtrage. Pour info DCDICT est une constante qui renvoi lenom du dictionnaire "dynamic_attributes"
Code:

         def self.filtrage_selection (collection=nil)
                  # fitrage de la selection selon la collection passée en référence
                  
                  #Si la collection est vide ( aucune séléction)
                  if collection.nil?
                     #alors toutes les définitions du modèle
                     dlist = Sketchup::active_model.definitions
                     #on rejette les images (le ! indique sur la collection elle même)
                     dlist.reject! {|d| d.image? }
                     
                     # sinon si la collection n'est pas vide alors le contenu de la collection auquel on retire les images
                  elsif collection.all? {|o| o.is_a?(Sketchup::ComponentDefinition) }
                     dlist = collection.reject {|d| d.image? }
                     
                  else
                     insts = collection.grep(Sketchup::ComponentInstance)
                     groups = collection.grep(Sketchup::Group)
                     
                     #dlist = insts.map{|i| i.definition } + groups#.map{|g| g.definition }
                     dlist = insts.map{|i| i.definition } + groups.map{|g| g.definition }
                  
                     dlist.uniq!
                  end
                  
                  dcs = dlist.select {|d| d.attribute_dictionary(DCDICT,false) }
                  # selection uniquement des composant possédant l'attribut dynamique "ra_0_" dans le dictionnaire dynamic_attribut
                  dcrapport = dcs.select {|d| d.get_attribute(DCDICT,"ra_0_",false) }
               end

Je l’appel en passant dliste_modele en paramètre

Code:

modele = Sketchup.active_model
dliste_modele = model.definitions
dcrapport = Rapport.filtrage_selection (dlist_modele)

après je peu faire mes extractions d'attribut en faisant les itérations sur les définitions puis sur les instances pour chaque définition

Code:

# 2. Collecte des données par itération pour chaque composants trouvés
            dcrapport_modele.each {|d|
               #Pour chaque définiition on récupère le jeux d'instances
               insts = d.instances
               #Itération pour chaque instance
               insts.each {|inst|
                  #On récupère la définition de l'instance
                  inst_d = inst.definition
                  
                  #On récupère l'identifiant unique de l'instance il ne change jamais
                  id = inst.guid
                  
                  # sauf si l'attribut est abscent de l'instance
                  unless inst.get_attribute(DCDICT,"ra_1_poste",false)
                  #on prend celui de la définition
                     poste = inst_d.get_attribute(DCDICT,"ra_1_poste","")
                  else

                                              
                                                 ....


                  
               }#fin de l'itération des instances de la définition
            }#fin de l'itération des définitions


Un petit coupe de main ne serait pas de refus ! gentleman


Dernière édition par simjoubert le Sam 8 Mai 2021 - 14:49, édité 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
tenrev
tenrev
FONDATEUR DE BIBLIO3D
FONDATEUR DE BIBLIO3D
Masculin Humeur : excellente comme toujours
Date d'inscription : 19/01/2008
Nombre de messages : 19943
Points : 34784
Age : 61
Localisation : Dans la quatrieme dimension
Emploi : archi d'intérieur salarié
https://www.biblio3d.com

Messagetenrev Sam 8 Mai 2021 - 13:53

simjoubert a écrit: C'est bien dommage qu'il n'existe pas un selection.instances qui ferait le bouleau en deux mots !

sinon tu sais ce qui te reste à faire , en plus de Ruby te mettre au C++ 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 - Page 2 575088biblio3d
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 2920
Points : 6434
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

Messagesimjoubert Sam 8 Mai 2021 - 14:42

tenrev a écrit:
simjoubert a écrit: C'est bien dommage qu'il n'existe pas un selection.instances qui ferait le bouleau en deux mots !

sinon tu sais ce qui te reste à faire , en plus de Ruby te mettre au C++  rigole p-clin

C'est un peu le problème quand tu commence à mettre les mains dans l'engrenage !
Aujourdh'ui pour une simple boite de dialogue dans Sketchup il faut que tu touches aux codes Ruby, Html, Css, Javascript !
...
Mais le résultat est sympa !
Après l'exemple de Samuel j'ai réussi à sortir inside sketchup un tableau avec les attributs rapport.
Un clic sur les entêtes et tu fait le tri sur la colonne un champ de filtrage.
Il me reste à trouver pour faire des regroupements par poste ou fournisseur ou article avec le même nom et prix unitaire et elle sera pleinement fonctionnelle.
Temps de chargement 3 secondes pour extirper du modèle les 90 composants avec leur attributs et la somme du tout 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 et Samuel Tallet aiment ce message

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

Messagetenrev Sam 8 Mai 2021 - 15:10

bravo Simon

pour l'instant j'ai pas trop de temps , mais dés que je peux je testerai tes prochaines versions , promis

-------------------------------------------------------------------------------------------------------------------------
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 - Page 2 575088biblio3d
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 Sam 8 Mai 2021 - 18:30

Bonjour Simon,

Pour résoudre ce genre de problème, on peut utiliser une fonction récursive. C'est-à-dire une fonction qui s'appelle elle-même.

Tu trouveras ci-dessous une classe Ruby qui permet en principe* de récupérer tous les composants et sous-composants sélectionnés dans la fenêtre SketchUp.

Code:

# selection.rb
require 'sketchup'

module SimJoubert
    
  module AttributRapport
        
    class Selection
            
      def initialize

        @selection = Sketchup.active_model.selection
        @instances = []

      end
            
      def collecter_sous_instances(instance)

        @instances.push(instance)

        sous_instances = instance.definition.entities.grep(Sketchup::ComponentInstance)

        sous_instances.each do |sous_instance|
          collecter_sous_instances(sous_instance)
        end

      end

      def instances
        
        instances_a_la_racine = @selection.grep(Sketchup::ComponentInstance)

        instances_a_la_racine.each do |instance_a_la_racine|
          collecter_sous_instances(instance_a_la_racine)
        end

        @instances

      end
        
    end

  end
    
end

Une fois le code ci-dessus chargé, tu peux récupérer un tableau des (sous-)instances de la sélection comme ceci :

Code:

# Quelque part dans un sous-module du module AttributRapport...
selection = Selection.new
selection.instances

A partir de là, il ne te reste plus qu'à filtrer les instances qui ont l'attribut de dictionnaire qui t'intéresse.

(*) En principe, car j'ai écrit ce code sur mon téléphone portable et je ne l'ai pas testé sur mon ordinateur mdr5

-------------------------------------------------------------------------------------------------------------------------
Galerie | Plugins

tenrev et simjoubert aiment ce message

simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 2920
Points : 6434
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

Messagesimjoubert Sam 8 Mai 2021 - 23:45

Merci Samuel
Je vais tester et essayer de comprendre !
waah

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

Messagesimjoubert Dim 9 Mai 2021 - 12:47

Hello Samuel
Bon j'ai réussi à compilé ton code avec le mien
La class que as codée fonctionne mais elle ne rentre pas dans les groupes elle ne fouille que dans l'arbre composant >composant >...>composant
pas dans groupe>composant>
Si tu as un moment pour modifier le code ce serai super

Bon Dimanche
respect

Voici mon module
Code:

# encoding: UTF-8
#
# file "sj_attribut_rapport/RapportWeb.rb"

module SimJoubert
  module AttributRapport
    module RapportWeb

            #include SharedConstants # mixin the constant module
            DCDICT = "dynamic_attributes"
            extend self




            def self.rapport_dialogue_cmd

               model = Sketchup.active_model

               # #On indique le début de l'opération pour une éventuelle annulation
               model.start_operation('créer rapport attributs', true,true,false)
               
               sel = model.selection
               
               #si la selection est vide ?
               if sel.empty?
               
                  #afficher un message et demander si le rapport doit être fait sur tout le modèle
                  message = UI.messagebox("La sélection est vide ! Voulez-vous étendre le rapport à l'ensemble du modèle ?",MB_OKCANCEL)
                  
                  #Si l'utilisateur à cliqué sur le bouton ok =1
                  if message == 1
                  
                     RapportWeb.tableau_attribut_rapport()
                  
                  end
                  
               else
               
                  RapportWeb.tableau_attribut_rapport(sel)
                  
               end # fin if selection empty ?   
               
            end #fin commande rapport
            
            
            
            def self.filtrage_modele
               
               model = Sketchup.active_model
            
               dlist = model.definitions
               #on rejette les images (le ! indique sur la collection elle même)
               #dlist.reject! {|d| d.image? }
               dcs = dlist.select {|d| d.attribute_dictionary(DCDICT,false) }
               # selection uniquement des composant possédant l'attribut dynamique "ra_0_" dans le dictionnaire dynamic_attribut
               dcrapport = dcs.select {|d| d.get_attribute(DCDICT,"ra_0_",false) }
               
               instrapport = []
               i = 0
               
               dcrapport.each {|d|
                  #Pour chaque définiition on récupère le jeux d'instances
                  insts = d.instances
                  #Itération pour chaque instance
                  insts.each {|inst|
                     
                     instrapport[i] = inst
                     
                     i += 1
                     
                  }#itération instance de la définition
               }#fin itération sur les définitions
               
               return instrapport
               
            end#fin de filtrage_modele(collection)
            
            
            
            
            def self.filtrage_selection
            
               #On creer un objet de class Selection qui est un array de toutes les instantances dans la sélection
               selection = Selection.new
               sel_intances = selection.instances
                  
               dcs = sel_intances.select {|inst| inst.definition.attribute_dictionary(DCDICT,false) }
                  
               instrapport = dcs.select {|inst| inst.definition.get_attribute(DCDICT,"ra_0_",false) }
            
            end#fin de filtrage_selection(collection)
            
            
            
            
            def self.tableau_attribut_rapport(collection=nil)
               
               model = Sketchup.active_model
            
               if collection.nil?
                  textsel = "Le modèle"
                  instrapport = filtrage_modele
               else
                  textsel = "La séléction"
                  instrapport = filtrage_selection
               end
               
               if instrapport.empty?
                  message = UI.messagebox("#{textsel} ne contient pas de composants avec des attributs rapport",MB_OK)
               else
               
                  ### INITIIALISATION CODE HTML
            
                  # Préparation du code CSS (syntaxe HEREDOC).
                  css = <<-CSS
                     body,td,th {
                        font-family: "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", "DejaVu Sans", Verdana, sans-serif;
                        color: #000000;
                     }                  
                     body {
                        background-color: #FFFFFF;
                     }   
                     h3 span {
                     font-size: 22px;
                     color: #ff5400;
                     }
                     h3 input.search-input {
                        width: 300px;
                        margin-left: auto;
                        float: right
                     }
                     span.regroupement{
                        margin-left: 20%;
                        padding-bottom: 20px;
                        margin-bottom: 30px;
                     }
                     table{
                        margin-top: 20px;
                     }
                     .tableau_entete{
                        background-color: #0D437C;
                        font-weight: bold;
                        color: #FFFFFF;
                        font-size: 12px;
                     }
                     .tableau_data{
                        font-size: 12px;                  
                     }
                     .tableau_pied{
                        background-color: #6E8DAD;
                        font-weight: bold;
                        color: #F7F7F7;
                     }                  
                     .numerique,.devise{
                        text-align: right;   
                     }
                     .unite{
                        text-align: center;   
                     }
                     .tableau_pied+.devise{            
                     font-size: 18px;
                     }            
                  CSS
                  #fin heredoc CSS
                  
                  # Préparation du code JS (syntaxe HEREDOC).
                  js = <<-JS
                     const compare = function(ids, asc){
                        return function(row1, row2){
                           const tdValue = function(row, ids){
                              return row.children[ids].textContent;
                           }
                           const tri = function(v1, v2){
                              if (v1 !== '' && v2 !== '' && !isNaN(v1) && !isNaN(v2)){
                                 return v1 - v2;
                              }
                              else {
                                 return v1.toString().localeCompare(v2);
                              }
                              return v1 !== '' && v2 !== '' && !isNaN(v1) && !isNaN(v2) ? v1 - v2 : v1.toString().localeCompare(v2);
                           };
                           return tri(tdValue(asc ? row1 : row2, ids), tdValue(asc ? row2 : row1, ids));
                        }
                     }

                     const tbody = document.querySelector('tbody');
                     const thx = document.querySelectorAll('th');
                     const trxb = tbody.querySelectorAll('tr');
                     thx.forEach(function(th){
                        th.addEventListener('click', function(){
                           let classe = Array.from(trxb).sort(compare(Array.from(thx).indexOf(th), this.asc = !this.asc));
                           classe.forEach(function(tr){
                               tbody.appendChild(tr)
                           });
                        })
                     });   

                     (function(document) {
                           'use strict';

                           var TableFilter = (function(myArray) {
                                 var search_input;

                                 function _onInputSearch(e) {
                                       search_input = e.target;
                                       var tables = document.getElementsByClassName(search_input.getAttribute('data-table'));
                                       myArray.forEach.call(tables, function(table) {
                                             myArray.forEach.call(table.tBodies, function(tbody) {
                                                   myArray.forEach.call(tbody.rows, function(row) {
                                                         var text_content = row.textContent.toLowerCase();
                                                         var search_val = search_input.value.toLowerCase();
                                                         row.style.display = text_content.indexOf(search_val) > -1 ? '' : 'none';
                                                   });
                                             });
                                       });
                                 }

                                 return {
                                       init: function() {
                                             var inputs = document.getElementsByClassName('search-input');
                                             myArray.forEach.call(inputs, function(input) {
                                                   input.oninput = _onInputSearch;
                                             });
                                       }
                                 };
                           })(Array.prototype);

                           document.addEventListener('readystatechange', function() {
                                 if (document.readyState === 'complete') {
                                       TableFilter.init();
                                 }
                           });

                     })(document);                  
            
               JS
                  #fin heredoc JS javascript
               
               
               
                  #On declare l'array vide html_a qui va collecter tous le code generer entete boucle et pied
                  html_a = []
            
            
                  ### ENTETE
            
            
                  #On crer le code HTML Ouverture des balises parentes html +le css+les entete du tableau
                  html_a[0] = <<-HTML
                        <html>

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

                           <body>
                                 <div class="container">
                                    <h3>
                                       <span>Attribut <span style="color: #03369C">Rapport</span></span>
                                       <input type="search" placeholder="Rechercher..." class="form-control search-input" data-table="articles_liste"/>
                                    </h3>
                                    <span class="regroupement">Regroupement par
                                    <select id="Regroupement" name="Regroupement">
                                       <option value="ID" selected>ID</option>
                                       <option value="Article">Article</option>
                                       <option value="Poste">Poste</option>
                                       <option value="Fournisseur">Fournisseur</option>
                                    </select></span>
                              <table width="100%" border="1" cellspacing="0" cellpadding="5" class="table table-striped mt32 articles_liste">
                                 <thead>
                                    <tr>
                                       <th width="12%" scope="col" class="tableau_entete">Poste ↑↓</th>
                                       <th width="12%" scope="col"class="tableau_entete">Article ↑↓</th>
                                       <th width="9%" scope="col"class="tableau_entete">QTT ↑↓</th>
                                       <th width="9%" scope="col"class="tableau_entete">Unité ↑↓</th>
                                       <th width="12%" scope="col"class="tableau_entete">Prix Unitaire ↑↓</th>
                                       <th width="12%" scope="col"class="tableau_entete">Sous total ↑↓</th>
                                       <th width="12%" scope="col"class="tableau_entete">Fournisseur ↑↓</th>
                                       <th scope="col"class="tableau_entete">Commentaire ↑↓</th>
                                    </tr>
                                 </thead><tbody>
                  
                     HTML
                  #fin heredoc HTML
            
            
                  ### DATA
            
                  #on initialise une boucle
                  i = 1 #Compteur de boucle
                  st = 0 #Sous total
                  
                  #Itération pour chaque instance
                  instrapport.each {|inst|
                     #On récupère la définition de l'instance
                     inst_d = inst.definition
                     
                     #On récupère l'identifiant unique de l'instance il ne change jamais
                     id = inst.guid
                     
                     # sauf si l'attribut est abscent de l'instance
                     unless inst.get_attribute(DCDICT,"ra_1_poste",false)
                     #on prend celui de la définition
                        poste = inst_d.get_attribute(DCDICT,"ra_1_poste","")
                     else
                     #sinon celui de l'instance
                        poste = inst.get_attribute(DCDICT,"ra_1_poste","")
                     end
                     
                     unless inst.get_attribute(DCDICT,"ra_1_article",false)
                        article = inst_d.get_attribute(DCDICT,"ra_1_article","")
                     else
                        article = inst.get_attribute(DCDICT,"ra_1_article","")
                     end
                     
                     unless inst.get_attribute(DCDICT,"ra_4_qtt",false)
                        qtt = inst_d.get_attribute(DCDICT,"ra_4_qtt",0.0)
                     else
                        qtt = inst.get_attribute(DCDICT,"ra_4_qtt",0.0)
                     end
                     
                     unless inst.get_attribute(DCDICT,"ra_4_unite",false)
                        unite = inst_d.get_attribute(DCDICT,"ra_4_unite","")
                     else
                        unite = inst.get_attribute(DCDICT,"ra_4_unite","")
                     end
                     
                     unless inst.get_attribute(DCDICT,"ra_5_prix_unitaire",false)
                        prix_unitaire = inst_d.get_attribute(DCDICT,"ra_5_prix_unitaire",0.0)
                     else
                        prix_unitaire = inst.get_attribute(DCDICT,"ra_5_prix_unitaire",0.0)
                     end
                     
                     unless inst.get_attribute(DCDICT,"ra_5_sous_total",false)
                        sous_total = inst_d.get_attribute(DCDICT,"ra_5_sous_total",0.0)
                     else
                        sous_total = inst.get_attribute(DCDICT,"ra_5_sous_total",0.0)
                     end
                     
                     unless inst.get_attribute(DCDICT,"ra_1_fournisseur",false)
                        fournisseur = inst_d.get_attribute(DCDICT,"ra_1_fournisseur","")
                     else
                        fournisseur = inst.get_attribute(DCDICT,"ra_1_fournisseur","")
                     end
                     
                     unless inst.get_attribute(DCDICT,"ra_1_commentaire",false)
                        commentaire = inst_d.get_attribute(DCDICT,"ra_1_commentaire","")
                     else
                        commentaire = inst.get_attribute(DCDICT,"ra_1_commentaire","")
                     end
                  
                     #On ajoute la ligne numéro i au tableau html avec les valeur définit dans l'odre défini dans l'entête
                     pu = sprintf('%.2f', prix_unitaire)
                     soust = sprintf('%.2f',   sous_total)               
                     html_a[i] = <<-HTML
                           <tr>
                              <td class="tableau_data">#{poste}</td>
                              <td class="tableau_data">#{article}</td>
                              <td class="tableau_data numerique">#{qtt.to_f}</td>
                              <td class="tableau_data unite">#{unite}</td>
                              <td class="tableau_data devise">#{pu}</td>
                              <td class="tableau_data devise">#{soust}</td>
                              <td class="tableau_data">#{fournisseur}</td>
                              <td class="tableau_data">#{commentaire}</td>
                           </tr>                  
                        HTML
                     #fin heredoc HTML
                     
                     #On ajoute le sous total à la variable st
                     st = st + sous_total.to_f
                     #On incrémente le compteur i
                     i += 1
                  
                  }#fin de l'itération des instances instrapport
                  
                  ### PIED DE PAGE
            
               j = i-1   
               st = sprintf('%.2f',st)
               #On creer la suite du html Pied de tableau et fermeture balise HTML
               html_a[i] = <<-HTML
                           </tbody><tfoot>   
                              <tr>
                                 <td class="tableau_pied">Total</td>
                                 <td colspan="5"class="tableau_pied devise">#{st}</td>
                                 <td class="tableau_pied"> </td>
                                 <td class="tableau_pied numerique">#{j}</td>
                              </tr>
                           </tfoot>
                        </table>
                        </div>
                        <!-- Le JS aussi -->
                           <script>#{js}</script>
                     </body>
                  </html>
                  HTML
               #fin heredoc HTML
               
               
               ### COMPILATION PAGE WEB
               
               #On assemble l'array html_a en une seule chaine séparé par un retour de chariot
               html = html_a.join("\n")
               
               # Initialisation de la boîte de dialogue.
               dialog = UI::HtmlDialog.new(

                     dialog_title: "Tableau des attributs rapport du modèle",
                     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_UTILITY

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

               # Affichage de la boîte de dialogue.
               dialog.show_modal
                  
               # On indique la fin de l'opération pour l'annulation
               status = model.commit_operation
               
               
               
               end      
            
            end#fin de tableau_attribut_rapport(collection)
            
            
    end#fin sous module
  end#fin module plugin
end#fin module espace de nom

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

Messagesimjoubert Dim 9 Mai 2021 - 19:23

Hello
J'ai mis les mains de le cambouis de ta class
et j'ai rajouté un étage
voici le code de la class qui fouille la sélection à la recherche d'instances qu'elles soient à la racine de la sélection dans un groupe ou dans un composant !

Je suis très fier de moi ! fier
Merci Samuel de vérifier si c'est assez propre comme modification, en tout cas il fait le taf

Voici le code
Code:

# encoding: UTF-8
#
# file "sj_attribut_rapport/Selection.rb"
#
require 'sketchup'

module SimJoubert
        
  module AttributRapport
            
    class Selection
                
      def initialize

        @selection = Sketchup.active_model.selection
        @instances = []

      end # fin initialize
         
         
                
      def collecter_sous_instances(instance)
                  
        @instances.push(instance)
               
        sous_instances = instance.definition.entities.grep(Sketchup::ComponentInstance)

        sous_instances.each do |sous_instance|
               collecter_sous_instances(sous_instance)
            end   
                  
            sous_groups = instance.definition.entities.grep(Sketchup::Group)
            sous_groups.each do |sous_group|
               collecter_contenu_group(sous_group)
            end

      end # fin collecter_sous_instances
         
         
               
         def collecter_contenu_group(group)
            contenu_group = group.entities
                  
            sous_instances = contenu_group.grep(Sketchup::ComponentInstance)
            sous_instances.each do |sous_instance|
                collecter_sous_instances(sous_instance)
            end
                  
            sous_groups = contenu_group.grep(Sketchup::Group)
            sous_groups.each do |sous_group|                  
               collecter_contenu_group(sous_group)
            end   
            
         end#fin de collecter_contenu_group
         
         

      def instances
            
        instances_a_la_racine = @selection.grep(Sketchup::ComponentInstance)
            instances_a_la_racine.each do |instance_a_la_racine|
               collecter_sous_instances(instance_a_la_racine)
            end   
                  
            group_a_la_racine  = @selection.grep(Sketchup::Group)
            group_a_la_racine.each do |group_a_la_racine|                  
               collecter_contenu_group(group_a_la_racine)
        end

        @instances

      end #Fin de instances
            
    end # Fin Class

  end#fin module plugin
end#fin module espace de nom

-------------------------------------------------------------------------------------------------------------------------
"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 Dim 9 Mai 2021 - 20:12

Bonsoir Simon.

J'avais un code plus court en tête mais c'est déjà bien si le tien fonctionne sourire Félicitations !

-------------------------------------------------------------------------------------------------------------------------
Galerie | Plugins
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 2920
Points : 6434
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

Messagesimjoubert Dim 9 Mai 2021 - 21:51

Hello Samuel

Il vaut mieux créer le tableau avec ruby ou avec javascript !
j'ai construit ma table par itération ruby

Mais j'aimerai créer des regroupements dynamiques !

chaque row représente une instance
Je voudrais faire un regroupent par article
fusionner les instances ayant le même nom d'article et même prix unitaire avec la somme dynamique des quantités et  calcule dynamique du sous total

puis un regroupement par poste avec la somme des sous totaux

Que me conseilles tu ?

-------------------------------------------------------------------------------------------------------------------------
"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 Lun 10 Mai 2021 - 19:32

simjoubert a écrit:Hello Samuel

Il vaut mieux créer le tableau avec ruby ou avec javascript !
j'ai construit ma table par itération ruby

Mais j'aimerai créer des regroupements dynamiques !

chaque row représente une instance
Je voudrais faire un regroupent par article
fusionner les instances ayant le même nom d'article et même prix unitaire avec la somme dynamique des quantités et  calcule dynamique du sous total

puis un regroupement par poste avec la somme des sous totaux

Que me conseilles tu ?

Bonsoir Simon,

Des fois aussi, j'hésite entre coder un truc en Ruby ou en JavaScript... Tu peux :

- Prendre la solution de facilité, choisir le langage avec lequel tu es le plus à l'aise ou disposant des bibliothèques qui te permettront d'atteindre plus rapidement ton objectif.

- Chercher la performance peu importe le temps de développement nécessaire.

-------------------------------------------------------------------------------------------------------------------------
Galerie | Plugins
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 2920
Points : 6434
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

Messagesimjoubert Lun 10 Mai 2021 - 20:39

Salut Samuel
Il y a des librairie jquerry qui ont l'air sympa pour générer et jouer avec les tableaux HTML. on leur donne l'array des datas et zoup ! deux trois paramètres pour activer des options de filtres ou de tris.
Jquerry et les fenêtres sketchup c'est bien ? c'est compatible ?
Comme je pars de zéro en javascript autant me former sur un truc qui marche bien !
j'ai vu aussi Vu.js content
pour un débutant tes pistes ? l'idée c'est un truc fignoler mais simple à mettre en œuvre !

-------------------------------------------------------------------------------------------------------------------------
"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 Lun 10 Mai 2021 - 22:36

simjoubert a écrit:Salut Samuel
Il y a des librairie jquerry qui ont l'air sympa pour générer et jouer avec les tableaux HTML. on leur donne l'array des datas et zoup ! deux trois paramètres pour activer des options de filtres ou de tris.
Jquerry et les fenêtres sketchup c'est bien ? c'est compatible ?
Comme je pars de zéro en javascript autant me former sur un truc qui marche bien !
j'ai vu aussi Vu.js content
pour un débutant tes pistes ? l'idée c'est un truc fignoler mais simple à mettre en œuvre !

jQuery est compatible avec la classe Ruby UI::HtmlDialog mais il vaut mieux apprendre le JavaScript pur avant d'apprendre jQuery. En terme de performances, jQuery est mauvais. Je te conseille de rechercher en priorité dans Google "filtrable table pure javascript library" ou "filtrable table vanilla javascript library". Vanilla JS = Pure JS.

-------------------------------------------------------------------------------------------------------------------------
Galerie | Plugins
Pilou
Pilou
V.I.P.
V.I.P.
Masculin Date d'inscription : 30/05/2014
Nombre de messages : 6973
Points : 15268
http://moiscript.weebly.com/

MessagePilou Lun 10 Mai 2021 - 23:32

Où se trouve la dernière version ?

Peut-on tester sans ouvrir Excel ?

Y a-t-il un fichier de données d'exemple ?

Je testerais si c'est possible dans la 2017 Make! (sur PC)

Bravo pour être passé de l'autre côté!
J'avais essayé avec l'aide de TIG & Thomthom mais j'ai lâchement lâché l'affaire!

J'ai vite compris que ce langage n'était pas fait pour moi!  timide
C'est beaucoup plus facile d'être "testeur" sourire

Je pourrais corriger le texte en français! sourire

-------------------------------------------------------------------------------------------------------------------------
Petit site Galerie
Est beau ce qui plaît sans concept!
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 2920
Points : 6434
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

Messagesimjoubert Mar 11 Mai 2021 - 0:18

Pilou a écrit:Où se trouve la dernière version ?

Peut-on tester sans ouvrir Excel ?

Y a-t-il un fichier de données d'exemple ?

Je testerais si c'est possible dans la 2017 Make! (sur PC)

Bravo pour être passé de l'autre côté!
J'avais essayé avec l'aide de TIG & Thomthom mais j'ai lâchement lâché l'affaire!

J'ai vite compris que ce langage n'était pas fait pour moi!  timide
C'est beaucoup plus facile d'être "testeur" sourire

Je pourrais corriger le texte en français! sourire

Hello Pilou
Je suis en train de mettre la touche javascript pour réaliser les regroupement en mode webdialogue à l’intérieur de Sketchup pour une preview rapide sans Excel.
L'export vers Excel génère un fichier csv exploitable par d'autre logicielle comme OpenCalc .
J'ai pas encore implémenter le fichier de traduction.
Il reste encore du travail en plus du mien.
Cette après midi j'ai fais 70% de mon devis avec.

Restes à l’écoute je vous proposerai la version 6.6 bientôt ! et merci pour les encouragement.

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

Messagesimjoubert Mar 11 Mai 2021 - 0:23

Samuel Tallet-Sabathé a écrit:

jQuery est compatible avec la classe Ruby UI::HtmlDialog mais il vaut mieux apprendre le JavaScript pur avant d'apprendre jQuery. En terme de performances, jQuery est mauvais. Je te conseille de rechercher en priorité dans Google "filtrable table pure javascript library" ou "filtrable table vanilla javascript library". Vanilla JS = Pure JS.

Ok chef ! je vais regarder de plus prés le code javascript ! j'espère que cela ne fait pas mal ! arf

-------------------------------------------------------------------------------------------------------------------------
"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

simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 2920
Points : 6434
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

Messagesimjoubert Mar 11 Mai 2021 - 22:57

Hello
Voici la version 0.6.5 d'Attribut Rapport

Pour une plus grande compatibilité :
Icônes en .pdf pour SU MAC
Fichiers .Skp pour l'insertion de composant au format SU2014

Optimisation du code par découpe en plusieurs fichiers.

Nouvelles fonctionnalités :
Preview rapide dans une boite de dialogue du tableau des attributs rapport, avec colonnes triables par clic sur l'entête et un champ de recherche sur toutes les colonnes.

Export d'un fichier csv et ouverture dans Excel
Import de modifications depuis Excel dans sketchup

Rapport Excel ou preview rapide sur sélection uniquement ou tout le modèle si aucune sélection

Testé uniquement sur SU windows 2021!
J'attends vos retours et vos configurations (Mac PC)  et la version de Sketchup
Merci aux beta-testeurs
[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel - Page 2 Captur78
Fichiers joints
[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel - Page 2 Attachment
sj_attribut_rapport.v0.6.5.zip Vous n'avez pas la permission de télécharger les fichiers joints.(1 Mo) Téléchargé 6 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

Contenu sponsorisé

MessageContenu sponsorisé

Page 2 sur 4 Précédent  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