par simjoubert Aujourd'hui à 8:35
» [ D5_RENDER ] Ballade au SOUK MARRAK'CH
par lagael Hier à 19:24
» [ SKETCHUP généralité ] Mon Challenge SketchUp-Enscape enfin concrétisé
par Rascal Lun 6 Fév 2023 - 14:27
» [ D5_RENDER ] Quelques Rendus D5 Render
par Yanosh HRDY Lun 6 Fév 2023 - 8:23
» [ SKETCHUP ] Tutoriel Vray pour sketchup en français
par bradi Dim 5 Fév 2023 - 17:36
» [ D5_RENDER ] Viens donc boire l'apéro ! Dans la maison en long...
par lagael Dim 5 Fév 2023 - 16:20
» [ FORUM ] + de 17 000 clics en 28 jours vers le forum lors de recherche sur google
par tenrev Ven 3 Fév 2023 - 14:31
» [ D5_RENDER ] Rénovation d'un Château D5Render
par tenrev Ven 3 Fév 2023 - 14:28
» [ D5_RENDER ] problème d'installation
par tenrev Ven 3 Fév 2023 - 11:46
» [ D5_RENDER ] Un peu de métal au milieu des bois....
par lagael Jeu 2 Fév 2023 - 9:51
» [ D5_RENDER ] JOUR ! NUIT ! votre choix? loin....
par Coulou Jeu 2 Fév 2023 - 9:40
» [ TWINMOTION ] la version 2023 vient de sortir
par Coulou Jeu 2 Fév 2023 - 9:38
» [ PRESENTATION ] présentation + hésitation + sollicitation !
par tenrev Mer 1 Fév 2023 - 9:34
» [ WIP ] travail de textures
par FILOU Mar 31 Jan 2023 - 15:19
» [ SKETCHUP composants dynamiques ] composant dynamique voiture proxy dans enscape avec phares
par simjoubert Mar 31 Jan 2023 - 9:52
» [ SKETCHUP composants dynamiques ] gestion proxy pour Enscape
par simjoubert Lun 30 Jan 2023 - 17:02
» [ D5_RENDER ] La Maison en "Long"
par lagael Lun 30 Jan 2023 - 15:59
» [ MATOS INFORM. ] rtx 4070ti et 3070ti annonce sur le forum utile?
par lagael Lun 30 Jan 2023 - 14:38
» [ SKETCHUP généralité ] Sketchup Viewer
par youyou40 Dim 29 Jan 2023 - 8:24
» [ D5_RENDER] Petit exemple "hors sujet" ... D5
par tenrev Sam 28 Jan 2023 - 21:06
» [ D5_RENDER] Etude sur l'éclairage extérieur
par lagael Sam 28 Jan 2023 - 19:15
» [ D5_RENDER] nouvelle section concernent le rendeur D5_render
par lagael Sam 28 Jan 2023 - 15:29
» [ WIP ] Comment BOOSTER du 3Dwarehouse médiocre avec D5 RENDER
par tenrev Sam 28 Jan 2023 - 15:10
» [ SKETCHUP tutos ] Spécial débutant TUTO N°1, prise en main, bien débuter...
par simjoubert Sam 28 Jan 2023 - 15:05
» [ UNREAL ENGINE ] D5 RENDER (moteur UNREAL)
par tenrev Sam 28 Jan 2023 - 14:56
» [ WIP ] Maison Contemporaine
par youyou40 Jeu 26 Jan 2023 - 17:59
» [ ARCHICAD ] Affichage des jonctions de murs
par Fred0079 Jeu 26 Jan 2023 - 16:11
» [ MATOS INFORM. ] 3D sur tablette
par tenrev Mer 25 Jan 2023 - 12:13
» [ THEA RENDER ] Matière Emitters (lumineuse)
par Duamtebag Mar 24 Jan 2023 - 18:21
» [ SKETCHUP plugins ] sj_AddDCAttribut création d'attribut sur une sélection d'instances de composants
par simjoubert Mar 24 Jan 2023 - 10:23
» [ TWINMOTION ] Créer instance
par Coulou Mar 24 Jan 2023 - 9:54
» [ SKETCHUP plugins ] sj_AddDCFunctions
par tenrev Lun 23 Jan 2023 - 14:53
» [ MATERIEL INFORMATIQUE ] Cochonnerie de Virus
par JDD Lun 23 Jan 2023 - 14:49
» [ SKETCHUP composants dynamiques ] Animation manège
par TF3 Lun 23 Jan 2023 - 12:09
» [ SKETCHUP composants dynamiques ] Composant Caisson Drag and drop
par tenrev Jeu 19 Jan 2023 - 11:52
[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
Page 2 sur 4 • 1, 2, 3, 4
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166157-------------------------------------------------------------------------------------------------------------------------
"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
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166158Samuel 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
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166159- Samuel TalletV.I.P.
-
Date d'inscription : 15/04/2018
Nombre de messages : 843
Points : 2387
Age : 37
Localisation : Marseille, France
Emploi : Développeur Web
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
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166160et 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
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166161- Samuel TalletV.I.P.
-
Date d'inscription : 15/04/2018
Nombre de messages : 843
Points : 2387
Age : 37
Localisation : Marseille, France
Emploi : Développeur Web
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 !

-------------------------------------------------------------------------------------------------------------------------
Galerie Plugins
simjoubert aime ce message
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166162- RascalAdministrateurs
-
Humeur : Bonne en général, sauf quand ça ne va pas!
Date d'inscription : 28/08/2018
Nombre de messages : 2203
Points : 4634
Age : 43
Localisation : Pays Gallo
Emploi : Beaucoup trop en ce moment!!



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

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

simjoubert aime ce message
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166164Rascal 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
1 PC fixe avec proc Rizen 9 3950X 32 threads - cg nvidia geforce RTX3080 - 64 go de ram DDssd 1To
1 PC portable MSI TITAN PRO écran 17''|win10 64 bits| i7 Quad core|ram 32go| CG GFORCE GTX1080 avec 8go
1 casque VR Occulus Rift - 1 vieux PC portable Dell sous Linux Ubuntu 18 1 vieux pc portable HP sous chromebook
Modélisation : Sketchup - Rhino - Pconplanner Rendu: Enscape - Keyshot - Unreal Engine - Artlantis - Twinmotion Autres: Photoshop - Illustrator - Indesign - Vidéostudio - After Effect - Première
![[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel - Page 2 575088biblio3d](https://2img.net/r/hpimg15/pics/575088biblio3d.gif)
simjoubert et Rascal aiment ce message
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166170- RascalAdministrateurs
-
Humeur : Bonne en général, sauf quand ça ne va pas!
Date d'inscription : 28/08/2018
Nombre de messages : 2203
Points : 4634
Age : 43
Localisation : Pays Gallo
Emploi : Beaucoup trop en ce moment!!
-------------------------------------------------------------------------------------------------------------------------
Il vaut mieux fermer sa gueule et passer pour un con,...
..... que l'ouvrir et ne laisser aucun doute à ce sujet

Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166191J'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 !

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 !

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
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166192simjoubert 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++


-------------------------------------------------------------------------------------------------------------------------
je ne sais pas grand chose , mais le peu que je sache , je le partage
1 PC fixe avec proc Rizen 9 3950X 32 threads - cg nvidia geforce RTX3080 - 64 go de ram DDssd 1To
1 PC portable MSI TITAN PRO écran 17''|win10 64 bits| i7 Quad core|ram 32go| CG GFORCE GTX1080 avec 8go
1 casque VR Occulus Rift - 1 vieux PC portable Dell sous Linux Ubuntu 18 1 vieux pc portable HP sous chromebook
Modélisation : Sketchup - Rhino - Pconplanner Rendu: Enscape - Keyshot - Unreal Engine - Artlantis - Twinmotion Autres: Photoshop - Illustrator - Indesign - Vidéostudio - After Effect - Première
![[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel - Page 2 575088biblio3d](https://2img.net/r/hpimg15/pics/575088biblio3d.gif)
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166193tenrev 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++![]()
![]()
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

-------------------------------------------------------------------------------------------------------------------------
"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
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166194pour 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
1 PC fixe avec proc Rizen 9 3950X 32 threads - cg nvidia geforce RTX3080 - 64 go de ram DDssd 1To
1 PC portable MSI TITAN PRO écran 17''|win10 64 bits| i7 Quad core|ram 32go| CG GFORCE GTX1080 avec 8go
1 casque VR Occulus Rift - 1 vieux PC portable Dell sous Linux Ubuntu 18 1 vieux pc portable HP sous chromebook
Modélisation : Sketchup - Rhino - Pconplanner Rendu: Enscape - Keyshot - Unreal Engine - Artlantis - Twinmotion Autres: Photoshop - Illustrator - Indesign - Vidéostudio - After Effect - Première
![[ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel - Page 2 575088biblio3d](https://2img.net/r/hpimg15/pics/575088biblio3d.gif)
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166195- Samuel TalletV.I.P.
-
Date d'inscription : 15/04/2018
Nombre de messages : 843
Points : 2387
Age : 37
Localisation : Marseille, France
Emploi : Développeur Web
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

-------------------------------------------------------------------------------------------------------------------------
Galerie Plugins
tenrev et simjoubert aiment ce message
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166196Je vais tester et essayer de comprendre !

-------------------------------------------------------------------------------------------------------------------------
"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
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166198Bon 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

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
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166202J'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 !

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
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166203- Samuel TalletV.I.P.
-
Date d'inscription : 15/04/2018
Nombre de messages : 843
Points : 2387
Age : 37
Localisation : Marseille, France
Emploi : Développeur Web
J'avais un code plus court en tête mais c'est déjà bien si le tien fonctionne

-------------------------------------------------------------------------------------------------------------------------
Galerie Plugins
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166207Il 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
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166234- Samuel TalletV.I.P.
-
Date d'inscription : 15/04/2018
Nombre de messages : 843
Points : 2387
Age : 37
Localisation : Marseille, France
Emploi : Développeur Web
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
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166235Il 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

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
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166236- Samuel TalletV.I.P.
-
Date d'inscription : 15/04/2018
Nombre de messages : 843
Points : 2387
Age : 37
Localisation : Marseille, France
Emploi : Développeur Web
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![]()
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
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166237Peut-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!

C'est beaucoup plus facile d'être "testeur"

Je pourrais corriger le texte en français!

-------------------------------------------------------------------------------------------------------------------------
Petit site Galerie
Est beau ce qui plaît sans concept!
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166240Pilou 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!
C'est beaucoup plus facile d'être "testeur"
Je pourrais corriger le texte en français!
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
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166241Samuel 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 !

-------------------------------------------------------------------------------------------------------------------------
"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
Re: [ SKETCHUP plugins ] Attribut_rapport : Rapport quantitatif et estimatif d'un modèle dans Excel
#166251Voici 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](https://i.servimg.com/u/f70/19/85/19/55/captur78.png)
- Fichiers joints
-------------------------------------------------------------------------------------------------------------------------
"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
Page 2 sur 4 • 1, 2, 3, 4
» [ SKETCHUP plugins ] SJ Components To Scenes - Isoler une copie d'un composant dans une scène dédiée
» [ SKETCHUP plugins ] Conversion en batch de fichiers SketchUp dans n'importe quelle version.
» [ SKETCHUP plugins ] Un peu de chaos dans vos projets! :)
» [ SKETCHUP plugins ] Didier Bur revient dans la course!
Créer un compte ou se connecter pour répondre
Vous devez être membre pour répondre.