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


[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Empty
Ton bloc notes
Derniers sujets
» [ SKETCHUP généralité ] Tête de pilastre
par JDD Aujourd'hui à 11:49

» [ CHALLENGE 2024 ] résultats du challenge
par AK40Cess Hier à 13:27

» [ FORUM ] astuce pour insérer facilement un tableau sur le forum
par tenrev Hier à 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

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

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

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

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

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

Sondage

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

[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c1015%[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c10 15% [ 2 ]
[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c1031%[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c10 31% [ 4 ]
[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c1046%[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c10 46% [ 6 ]
[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c108%[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c10 8% [ 1 ]
[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c100%[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c10 0% [ 0 ]
[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c100%[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c10 0% [ 0 ]

Total des votes : 13

chaine sketchup.tv
Serveur Discord
Le Deal du moment : -30%
LEGO Icons 10318 – Le Concorde à ...
Voir le deal
139.99 €

[SKETCHUP composants dynamiques] récupérer date paramètre ombre

Page 3 sur 4 Précédent  1, 2, 3, 4  Suivant

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

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 Mer 12 Avr 2017 - 15:50

simjoubert a écrit:Moi dans les préférences de SketchUp CTRL + F4 plug in mettre à jour saison et CTRL + F5 Édition composants dynamique redraw

idem pour moi , j'ai créer les raccourcis , ca fonctionne bien

sinon tu as modifié le plugin pour mettre à jour l'heure ?

à plus

-------------------------------------------------------------------------------------------------------------------------
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 composants dynamiques] récupérer date paramètre ombre - Page 3 575088biblio3d
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

Messagesimjoubert Mer 12 Avr 2017 - 20:20

Pas encore je ferai ça demain matin j'espère !

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

Messagesimjoubert Mer 12 Avr 2017 - 20:26

Pour les spots je pense dans le calcule prendre en compte l'heure et d'un et sun élévation compris entre 160 et 20 degrés
Et plage horaire éteint entre 1h et 6h du matin ( pour les économies d'énergie) 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
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 Mer 12 Avr 2017 - 23:25

J ai hâte de voir ça bravo

-------------------------------------------------------------------------------------------------------------------------
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 composants dynamiques] récupérer date paramètre ombre - Page 3 575088biblio3d
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

Messagesimjoubert Sam 15 Avr 2017 - 19:43

Bonsoir à tous
Voici donc un petit plugin qui test si l'heure de l'ombre de sketchup est compris entre le sunrise et le sunset. avec l'ajout d'un offset de 30 min.
Ce test revoi 1 si c'est la nuit  et 0 si c'est le jour.
Créer ou met à jour un attribut de composant dynamique "spot_on_off"

lien vers le plugin : https://www.dropbox.com/s/j3qqb874mr0isl5/SpotsLightComponents.rbz?dl=0

Code:

# encoding: UTF-8

require "sketchup.rb"
require "pp"

module SimJoubert
  module SpotsLightComponents
  # Ce plugin permet de creer ou de mettre à jour l'attribut spotsonoff d'un composant dynamique d'éclairage qui prend la valeur 1 ou 0 selon lheure des ombres de sketchup.
  # Il prend en compte le lever et le coucher du soleil et une valeur OFFSET en minutes pour allonger l'etat "ON" apres le lever du soleil et avant le coucher du soleil.

    extend self
    
    @@context_menu_set ||= false
    @@debug ||= false
    
    MENU_TEXT = {
      :update => "Update spots_on_off DC attibuts",
      :create => "Create spots_on_off DC attibuts"
    }

    DICT = "dynamic_attributes"

    DC_ATTR = "spot_on_off"
 
 # declaration de la variable OFFSET nombre de minutes ou la lumière est encore allumée apres le lever du soleil et avantle couché du soleil
 OFFSET = 30


    def command_create(selset)
      return if selset.empty?
      # Make the definitions of selected components
      # or groups spots:
      create_dc_on_off_attribut(selset)
    end

    def command_update(selset)
      if selset.empty?
        # update ALL spots components
        update_dc_on_off_attribut(Sketchup::active_model.definitions)
      else
        # update ONLY selected spots components
        update_dc_on_off_attribut(selset)
      end
    end

    def debug
      @@debug
    end

    def debug=(arg)
      @@debug =( arg ? true : false )
    end

    def get_spots_dcs(collection=nil)
      # Filter the referenced collection
      if collection.nil?
        dlist = Sketchup::active_model.definitions
        dlist.reject! {|d| d.image? }
      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.uniq!
      end
      dcs = dlist.select {|d| d.attribute_dictionary(DICT,false) }
      # select only spots dynamic components
      spots = dcs.select {|d| d.attribute_dictionary(DICT,false).keys.include?(DC_ATTR)}
      if @@debug
        puts "#{Module::nesting[0].name}: debug is true."
        puts "The 'dlist' array:"
        pp dlist
        puts "The 'dcs' array:"
        pp dcs
        puts "The 'spots' array:"
        pp spots
      end
      return spots
    end


    def create_dc_on_off_attribut(selected)
      # 1. Retrieve data from shadowinfo into local variables,
      model = Sketchup.active_model
      shadowinfo = model.shadow_info
  
# 2. Calcul si on_off ombre est compris entre sunrise et sunset

      # Conversion en minute de sunrise
      sunrise = shadowinfo["SunRise"].to_s
  sunriseh = sunrise[11,2].to_i
  sunrisem = sunrise[14,2].to_i
  sunrise = sunriseh * 60 + sunrisem + OFFSET
  
  # Conversion en minute de sunset
      sunset = shadowinfo["SunSet"].to_s
  sunseth = sunset[11,2].to_i
  sunsetm = sunset[14,2].to_i
  sunset = sunseth * 60 + sunsetm - OFFSET
 
      # Conversion en minute de shadow time
      sun = shadowinfo["ShadowTime"].to_s
  sunh = sun[11,2].to_i
  sunm = sun[14,2].to_i
  sun = sunh * 60 + sunm
  
  if (sun < sunrise || sun > sunset)
    then value = 1
 else value = 0
      end
  
  #value =1 light ON / value = 0 light OFF  
      
      if @@debug
        puts "The 'spots' value:"
        pp value
        puts # blank line
      end
      # Writing the data into dictionary attributes.
      selected.each {|obj|
        next unless obj.respond_to?(:definition)
        obj.definition.set_attribute(DICT,DC_ATTR,value)
      }
    end

    def update_dc_on_off_attribut(collection)
      spots = get_spots_dcs(collection)
      # 1. Retrieve data from shadowinfo into local variables,
      model = Sketchup.active_model
      shadowinfo = model.shadow_info
  
  # 2. Calcul si on_off ombre est compris entre sunrise et sunset

      # Conversion en minute de sunrise
      sunrise = shadowinfo["SunRise"].to_s
  sunriseh = sunrise[11,2].to_i
  sunrisem = sunrise[14,2].to_i
  sunrise = sunriseh * 60 + sunrisem + OFFSET
  
  # Conversion en minute de sunset
      sunset = shadowinfo["SunSet"].to_s
  sunseth = sunset[11,2].to_i
  sunsetm = sunset[14,2].to_i
  sunset = sunseth * 60 + sunsetm - OFFSET
 
      # Conversion en minute de shadow time
      sun = shadowinfo["ShadowTime"].to_s
  sunh = sun[11,2].to_i
  sunm = sun[14,2].to_i
  sun = sunh * 60 + sunm
  
  if (sun < sunrise || sun > sunset)
    then value = 1
 else value = 0
      end
  
  #value =1 light ON / value = 0 light OFF  
 
  
      # 3. Iterate the spots component definitions
      #value =1 light ON / value = 0 light OFF
  
      if @@debug
        puts "The 'spots' value:"
        pp value
        puts # blank line
      end
      #    writing the data into dictionary attributes.
      spots.each {|d| d.set_attribute(DICT,DC_ATTR,value) }
    end

    # other code / methods here

    unless file_loaded?(__FILE__) || @@context_menu_set

      UI.add_context_menu_handler do |context_menu|
        selset = Sketchup::active_model.selection
        context_menu.add_item(MENU_TEXT[:update]) { command_update(selset) }
        unless selset.empty?
          context_menu.add_item(MENU_TEXT[:create]) { command_create(selset) }
        end
      end # context_menu_handler

      @@context_menu_set = true

    end

  end # plugin module
end # outer namespace module


Qu'en dites vous ?

Simon
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 15 Avr 2017 - 20:56

c est super , je teste des que possible

Et pour le composant dynamique spot , il te sert à quoi ?
Tu fais du rendu dans sketchup ?
Peux tu donner quelques explications ?

-------------------------------------------------------------------------------------------------------------------------
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 composants dynamiques] récupérer date paramètre ombre - Page 3 575088biblio3d
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

Messagesimjoubert Lun 17 Avr 2017 - 9:54

Mon composant spot est composer d'un spot d'éclairage et du cône de lumière de Thea render
Le cône de lumière possède un attribut "hidden " qui true dans la journée et false la nuit

-------------------------------------------------------------------------------------------------------------------------
"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 Lun 17 Avr 2017 - 15:50

je n'utilise pas thearender, mais OK j ai compris c'est bien vu
En tout cas je suis content que mon retour sur le forum ai permi de relancer le sujet et de trouver une solution, c est vraiment cool

-------------------------------------------------------------------------------------------------------------------------
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 composants dynamiques] récupérer date paramètre ombre - Page 3 575088biblio3d
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

Messagesimjoubert Lun 17 Avr 2017 - 21:10

surtout que maintenant on sait créer un attribut de composant dynamique
c'est mes débuts en ruby j'ai plein d'envies qui se bousculent pour automatiser quelques dessins.
je vais des que j'aurais du temps creuser la question de l'arrosage automatique.
merci de ta collaboration pour ce sujet et ta participation active sur ce forum
cordialement
Simon

-------------------------------------------------------------------------------------------------------------------------
"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 Mar 18 Avr 2017 - 8:22

simjoubert a écrit:surtout que maintenant on sait créer un attribut de composant dynamique
c'est mes débuts en ruby j'ai plein d'envies qui se bousculent pour automatiser quelques dessins.
je vais des que j'aurais du temps creuser la question de l'arrosage automatique.
merci de ta collaboration pour ce sujet et ta participation active sur ce forum
cordialement
Simon

idem pour moi , plein d'envie également , je potasse un peu tout ce que je trouve sur ruby , je ferai d’ailleurs prochainement edans la section ruby, un récap des liens intéressants vers des tutos que j'ai pu trouver

maintenant on attend de voir le résultat de ton avancée en image rigole

à plus

-------------------------------------------------------------------------------------------------------------------------
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 composants dynamiques] récupérer date paramètre ombre - Page 3 575088biblio3d
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 Mar 18 Avr 2017 - 8:43

il y a toujours sur le forum la section ruby et même si elle végète un peu , c'est déja une base pour démarrer

c'est ici

je vais essayer de corriger à l'occasion les liens morts et d'en ajouter d'autres
à plus

-------------------------------------------------------------------------------------------------------------------------
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 composants dynamiques] récupérer date paramètre ombre - Page 3 575088biblio3d
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 Mer 10 Mai 2017 - 16:21

je met en résolu ça n'empêche pas de continuer le fil rigole

-------------------------------------------------------------------------------------------------------------------------
je ne sais pas grand chose , mais le peu que je sache , je le partage/Salut Invité merci de consulter mon profil/PC fixe Rizen 9 3950 cg RTX3080-64 go de ram DDssd 1To/1 PC portable Lenovo  16'' w11 i7 32go-CG  RTX3070 8go/1casque meta Quest 3/1 casque VR Occulus Rift /1 PC portable Dell sous Linux Ubuntu-1 pc portable HP sous chromebook/Raspberry Pi - Arduino /  Modélisation :Sketchup-Rhino-Pconplanner-Rendu:Enscape-Keyshot-Unreal Engine-Twinmotion-Autres:Photoshop-Indesign-After Effect-Première pro-Intelligence artificielle -Chatgpt+-Midjourney-Suno-Elevenlabs-Canva
[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 575088biblio3d
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 Lun 15 Mai 2017 - 10:55

hello

est ce que tu as avancé sur tes composants dynamiques ?

à plus

-------------------------------------------------------------------------------------------------------------------------
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 composants dynamiques] récupérer date paramètre ombre - Page 3 575088biblio3d
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

Messagesimjoubert Lun 15 Mai 2017 - 20:46

non j'ai pas avancé comme je le voulais! colere
la saison des chantiers à repris m’éloignant de mon clavier.
j'ai commencer un nouveau bout de code ruby pour créer des attributs identiques pour toutes mes plantes.
Il faut que je reprenne mes plantes pour séparer fruit fleur feuillage tronc dans des groupe et des calques séparé. çà veux dire aussi refaire les proxy théa pour chaque...
Incorpore les teintes de feuillages printemps et automne en plus de celle de l'été.
Pour pouvoir interagir dessus de manière globale.
à suivre
j'ai vu que tu t'amusais à faire des trous ! sourire
bonne soirée
Simon
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

Messagesimjoubert Lun 15 Mai 2017 - 21:34

En attendant visite de mon prochain chantier !

Image de mon devis "aménagement jardinet entrée de maison."
Existant:
[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Ap_C_Existant

Projet:
[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Ap_C_VuePortail

[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Ap_C_VuePorte
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

Messagesimjoubert Lun 15 Mai 2017 - 21:41

une petite dernière la vue iso ouest
[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Ap_C_Vue_iso_ouest
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 Lun 15 Mai 2017 - 23:21

C est super bravo bien bravo

-------------------------------------------------------------------------------------------------------------------------
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 composants dynamiques] récupérer date paramètre ombre - Page 3 575088biblio3d
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 15 Mai 2017 - 23:51

C'est la porte du garage la façade la mieux exposée! clindoeil

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

Messagesimjoubert Lun 26 Mar 2018 - 23:48

Bon on reprend un peu le fil !
On a un plugin opérationnel

fonctionnalités existantes :

Créer attribut season avec la date de paramètre des ombres de SU.

Mettre à jour les composants ayant attribut season avec la date des ombres de SU.

Fonctionnalité à ajouter
Pour automatiser la création je voudrait rajouter d'autre attribut avec des valeurs de date standard de début et de fin pour apparition et chute des feuilles, des fleurs et de des fruits.
Si les branches subsiste pendant l'hiver la couleur automnal

Chaque plantes est construite sur le schema de 3darcstudiotree
4 niveaux  (Tronc, level1, level2, level3)
Pour Branches, Feuilles,Fruits,fleurs

donc je veux rajouter 32 attributs de type entier numérique (1=1er janvier...)

Syntax des nom attribut
BR0D,BR0F, BR1D,BR1F,BR2D,BR2F,BR3D,BR3F,  pour les branches BR
FE pour feuilles FL pour fleurs et FR pour fruit

une petite idée pour incorporer dans le plugin existant

Code:
# encoding: UTF-8

require "sketchup.rb"
require "pp"

module SimJoubert
  module SeasonalComponents

    extend self
    
    @@context_menu_set ||= false
    @@debug ||= false
    
    MENU_TEXT = {
      :update => "Update season DC attibuts",
      :create => "Create season DC attibuts"
    }

    DICT = "dynamic_attributes"

    SEASON_ATTR = "season"

    def command_create(selset)
      return if selset.empty?
      # Make the definitions of selected components
      # or groups seasonal:
      create_dc_date_attribut(selset)
    end

    def command_update(selset)
      if selset.empty?
        # update ALL seasonal components
        update_dc_date_attribut(Sketchup::active_model.definitions)
      else
        # update ONLY selected seasonal components
        update_dc_date_attribut(selset)
      end
    end

    def debug
      @@debug
    end

    def debug=(arg)
      @@debug =( arg ? true : false )
    end

    def get_seasonal_dcs(collection=nil)
      # Filter the referenced collection
      if collection.nil?
        dlist = Sketchup::active_model.definitions
        dlist.reject! {|d| d.image? }
      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.uniq!
      end
      dcs = dlist.select {|d| d.attribute_dictionary(DICT,false) }
      # select only seasonal dynamic components
      seasonal = dcs.select {|d| d.attribute_dictionary(DICT,false).keys.include?(SEASON_ATTR)}
      if @@debug
        puts "#{Module::nesting[0].name}: debug is true."
        puts "The 'dlist' array:"
        pp dlist
        puts "The 'dcs' array:"
        pp dcs
        puts "The 'seasonal' array:"
        pp seasonal
      end
      return seasonal
    end


    def create_dc_date_attribut(selected)
      # 1. Retrieve data from shadowinfo into local variables,
      model = Sketchup.active_model
      shadowinfo = model.shadow_info    
      value = shadowinfo["DayOfYear"]
      if @@debug
        puts "The 'day of year' value:"
        pp value
        puts # blank line
      end
      # Writing the data into dictionary attributes.
      selected.each {|obj|
        next unless obj.respond_to?(:definition)
        obj.definition.set_attribute(DICT,SEASON_ATTR,value)
      }
    end

    def update_dc_date_attribut(collection)
      seasonal = get_seasonal_dcs(collection)
      # 1. Retrieve data from shadowinfo into local variables,
      model = Sketchup.active_model
      shadowinfo = model.shadow_info
      
      # 2. Iterate the seasonal component definitions
      value = shadowinfo["DayOfYear"]
      if @@debug
        puts "The 'day of year' value:"
        pp value
        puts # blank line
      end
      #    writing the data into dictionary attributes.
      seasonal.each {|d| d.set_attribute(DICT,SEASON_ATTR,value) }
    end

    # other code / methods here

    unless file_loaded?(__FILE__) || @@context_menu_set

      UI.add_context_menu_handler do |context_menu|
        selset = Sketchup::active_model.selection
        context_menu.add_item(MENU_TEXT[:update]) { command_update(selset) }
        unless selset.empty?
          context_menu.add_item(MENU_TEXT[:create]) { command_create(selset) }
        end
      end # context_menu_handler

      @@context_menu_set = true

    end

  end # plugin module
end # outer namespace module
Merci
Simon
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 Mar 27 Mar 2018 - 10:10

c'est cool que tu t'y remettes , pour l'instant pas trop le temps , mais dés que c'est un peu plus calme , je jette un oeil
j'ai pour ma part pas encore trop compris l'interaction entre les CD et ruby et pas pris suffisamment de temps pour essayer de bien comprendre

tu as essayé sur le site Anglais ?

a+

-------------------------------------------------------------------------------------------------------------------------
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 composants dynamiques] récupérer date paramètre ombre - Page 3 575088biblio3d
simjoubert
simjoubert
Administrateurs
Administrateurs
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 2916
Points : 6424
Age : 49
Localisation : Val de Marne
Emploi : Paysagiste
https://www.sketchup.simjoubert.com/

Messagesimjoubert Mar 27 Mar 2018 - 11:45

J'avais avancée mais j'ai des erreurs
j'en suis là
Code:
# encodin10g: UTF-8
require "sketchup.rb"
require "pp"

module SimJoubert
  module AttributsVegetaux
  # Ce plugin permet de creer ou ou de mettre à jour les attributs de composants dynamique commun à tout les végétaux.
  extend self
   
    @@context_menu_set ||= false
    @@debug ||= false
   
    MENU_TEXT = {
      :update => "Mise à jour des attributs des végétaux selectionnés",
      :create => "Création des attributs des végétaux selectionnés"
    }
  # Déclaration de la variable de dictionnaire
  DICT = "dynamic_attributes"
 
  # Déclaration de variables de nom des attributs ATTR
  ATTR_00 = "aaaa"
  ATTR_01 = "av01_nom"
  ATTR_02 = "av02_type"
  ATTR_03 = "av03_persistant"
  ATTR_04 = "av04_printemps"
  ATTR_05 = "av05_printemps_d"
  ATTR_06 = "av06_printemps_f" 
  ATTR_07 = "av07_automne"
  ATTR_08 = "av08_automne_d"
  ATTR_09 = "av09_automne_f"
  ATTR_10 = "av10_fleur"
  ATTR_11 = "av11_fleur_d"
  ATTR_12 = "av12_fleur_f"
  ATTR_13 = "av13_fruit"
  ATTR_14 = "av14_fruit_d"
  ATTR_15 = "av15_fruit_f"
 
  # Déclaration des méthodes
    def command_create(selset)
      return if selset.empty?
      # Make the definitions of selected components
      # or groups vegetaux:
      create_dc_vegetaux_attribut(selset)
    end

    def command_update(selset)
      if selset.empty?
        # update ALL vegetaux components
        update_dc_vegetaux_attribut(Sketchup::active_model.definitions)
      else
        # update ONLY selected vegetaux components
        update_dc_vegetaux_attribut(selset)
      end
    end
   
   def get_vegetaux_dcs(collection=nil)
      # Filter the referenced collection
      if collection.nil?
        dlist = Sketchup::active_model.definitions
        dlist.reject! {|d| d.image? }
      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.uniq!
      end
      dcs = dlist.select {|d| d.attribute_dictionary(DICT,false) }
      # select only vegetaux dynamic components
      vegetaux = dcs.select {|d| d.attribute_dictionary(DICT,false).keys.include?(ATTR_00)}
     
      return vegetaux
    end
 
 
  def create_dc_vegetaux_attribut(selected)
    selected.each {|obj|
    next unless obj.respond_to?(:definition)
      a1 = obj.definition.get_attribute DICT, ATTR_01
     a2 = obj.definition.get_attribute DICT, ATTR_02
     a3 = obj.definition.get_attribute DICT, ATTR_03
     a4 = obj.definition.get_attribute DICT, ATTR_04
     a5 = obj.definition.get_attribute DICT, ATTR_05
     a6 = obj.definition.get_attribute DICT, ATTR_06
     a7 = obj.definition.get_attribute DICT, ATTR_07
     a8 = obj.definition.get_attribute DICT, ATTR_08
     a9 = obj.definition.get_attribute DICT, ATTR_09
     a10 = obj.definition.get_attribute DICT, ATTR_10
     a11 = obj.definition.get_attribute DICT, ATTR_11
     a12 = obj.definition.get_attribute DICT, ATTR_12
     a13 = obj.definition.get_attribute DICT, ATTR_13
     a14 = obj.definition.get_attribute DICT, ATTR_14
     a15 = obj.definition.get_attribute DICT, ATTR_15
     }
 
 
  # 1- Déclaration des variables de la boite de dialogue
 
  #Declarartion des libellés des champs de saisi
  prompts = ["Nom","Type","Feuillage persistant ?","Feuillage de Printemps particulier ?","Date de début(JJ/MM)","Date de fin (JJ/MM)","Feuillage d'Automne particulier ?","Date de début(JJ/MM)","Date de fin (JJ/MM)","Floraison ?","Date de début(JJ/MM)","Date de fin (JJ/MM)","Fructification","Date de début(JJ/MM)","Date de fin (JJ/MM)"]
 
  #Déclaration des valeurs par défaut (Optionel)
  defaults = [a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15]
 
  #Déclaration des valeurs des listes (Optionel)
  list = ["","Arbre|Arbuste|Vivace|Graminée|Bulbe","Persistant|Caduque","OUI|NON","","","OUI|NON","","","OUI|NON","","","OUI|NON","",""]
 
  # 2- Contruction de la boîte de dialogue
  input = UI.inputbox(prompts, defaults, list, "Renseignez les atributs de la plante.")
 
 
  # 3- Recuperation des valeurs renseigner dans des variables
  a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 =input
 
  # 4- Création des attributs pour les composants selectionné
 
    selected.each {|obj|
    next unless obj.respond_to?(:definition)
    obj.definition.set_attribute(DICT,ATTR_01,a1)
    obj.definition.set_attribute(DICT,ATTR_02,a2)
    obj.definition.set_attribute(DICT,ATTR_03,a3)   
    obj.definition.set_attribute(DICT,ATTR_04,a4)    
    obj.definition.set_attribute(DICT,ATTR_05,a5)
    obj.definition.set_attribute(DICT,ATTR_06,a6)   
    obj.definition.set_attribute(DICT,ATTR_07,a7)
    obj.definition.set_attribute(DICT,ATTR_08,a8)
    obj.definition.set_attribute(DICT,ATTR_09,a9)
    obj.definition.set_attribute(DICT,ATTR_10,a10)
    obj.definition.set_attribute(DICT,ATTR_11,a11)
    obj.definition.set_attribute(DICT,ATTR_12,a12)
    obj.definition.set_attribute(DICT,ATTR_13,a13)
    obj.definition.set_attribute(DICT,ATTR_14,a14)
    obj.definition.set_attribute(DICT,ATTR_15,a15)
    }
  end
 
  def update_dc_vegetaux_attribut(collection)
  # 1- Déclaration des variables de la boite de dialogue
 
  #Declarartion des libellés des champs de saisi
  prompts = ["Nom","Type","Feuillage persistant ?","Feuillage de Printemps particulier ?","Date de début(JJ/MM)","Date de fin (JJ/MM)","Feuillage d'Automne particulier ?","Date de début(JJ/MM)","Date de fin (JJ/MM)","Floraison ?","Date de début(JJ/MM)","Date de fin (JJ/MM)","Fructification","Date de début(JJ/MM)","Date de fin (JJ/MM)"]
 
  #Déclaration des valeurs par défaut (Optionel)
  defaults = ["Nom de la plante","Arbuste","Persistant","","","","","","","","","","","",""]
 
  #Déclaration des valeurs des listes (Optionel)
  list = ["","Arbre|Arbuste|Vivace|Graminée|Bulbe","Persistant|Caduque","OUI|NON","","","OUI|NON","","","OUI|NON","","","OUI|NON","",""]
 
  # 2- Contruction de la boîte de dialogue
  input = UI.inputbox(prompts, defaults, list, "Renseignez les atributs de la plante.")
 
 
  # 3- Recuperation des valeurs renseigner dans des variables
  a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 =input
 
  # 4- Mise à jour des attributs pour les composants selectionné
      vegetaux = get_vegetaux_dcs(collection)
      vegetaux.each {|d|
  d.set_attribute(DICT,DICT,ATTR_01,a1)
  d.set_attribute(DICT,DICT,ATTR_02,a2)
  d.set_attribute(DICT,DICT,ATTR_03,a3)
  d.set_attribute(DICT,DICT,ATTR_04,a4)
  d.set_attribute(DICT,DICT,ATTR_05,a5)
  d.set_attribute(DICT,DICT,ATTR_06,a6)
  d.set_attribute(DICT,DICT,ATTR_07,a7)
  d.set_attribute(DICT,DICT,ATTR_08,a8)
  d.set_attribute(DICT,DICT,ATTR_10,a10)
  d.set_attribute(DICT,DICT,ATTR_11,a11)
  d.set_attribute(DICT,DICT,ATTR_12,a12)
  d.set_attribute(DICT,DICT,ATTR_13,a13)
  d.set_attribute(DICT,DICT,ATTR_14,a14)
  d.set_attribute(DICT,DICT,ATTR_15,a15)
     }
    end
   
   # Création du menu contextuel
   unless file_loaded?(__FILE__) || @@context_menu_set

      UI.add_context_menu_handler do |context_menu|
        selset = Sketchup::active_model.selection
        context_menu.add_item(MENU_TEXT[:update]) { command_update(selset) }
        unless selset.empty?
          context_menu.add_item(MENU_TEXT[:create]) { command_create(selset) }
        end
      end # context_menu_handler

      @@context_menu_set = true

    end

  end # plugin module
end # outer namespace module

Bon j'ai reproduit le code de un pour plusieurs attribut mais il va me falloir'aide de Mr Dan il me semble en essayant de comprendre

Bonne journée pluvieuse
Simon

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

Messagesimjoubert Mar 27 Mar 2018 - 17:09

Bon voici déjà le code pour créer les attributs des végétaux pour le composant de rang0
Reste encore des attributs à ajouter mais c'est un début
il n'est pas encore sous la forme de menu il faut le copier dans la console ruby sur un composant existant.
Code:
# encoding: UTF-8
 # Module Définition attributs des végétaux
 # Auteur Simon Joubert
 
 ### Label Parametres Vegetaux
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_000", "PARAMETRES VEGETAUX"
    s.set_attribute "dynamic_attributes", "_vgtx_000_access","VIEW"
    s.set_attribute "dynamic_attributes","_vgtx_000_formlabel","***********"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end
  
  ### Nom de la plante
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_001", "Nom de la plante"
 s.set_attribute "dynamic_attributes","_vgtx001_units", "STRING"
    s.set_attribute "dynamic_attributes", "_vgtx_001_access","TEXTBOX"
    s.set_attribute "dynamic_attributes","_vgtx_001_formlabel","Nom"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end
  
  ### Type de plante
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_002", "Arbre"
 s.set_attribute "dynamic_attributes","_vgtx002_units", "STRING"
    s.set_attribute "dynamic_attributes", "_vgtx_002_access","LIST"
    s.set_attribute "dynamic_attributes","_vgtx_002_formlabel","Type de plante"
 s.set_attribute "dynamic_attributes","_vgtx_002_options", "Arbre=Arbre&Arbuste=Arbuste&Vivace=Vivace&Grimpante=Grimpante&Aquatique=Aquatique"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end
  
   ### Origine de la plante
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_003", "Existant"
 s.set_attribute "dynamic_attributes","_vgtx003_units", "STRING"
    s.set_attribute "dynamic_attributes", "_vgtx_003_access","LIST"
    s.set_attribute "dynamic_attributes","_vgtx_003_formlabel","Origine"
 s.set_attribute "dynamic_attributes","_vgtx_003_options", "Existant=Existant&Fourniture=Fourniture"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end
 
  ### *************************************************

 ### Label Parametres Saison
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_020", "PARAMETRES SAISON"
    s.set_attribute "dynamic_attributes", "_vgtx_020_access","VIEW"
    s.set_attribute "dynamic_attributes","_vgtx_020_formlabel","***********"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end
  
 ### Label Parametres Végétation annuelle
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_021", "DATE"
    s.set_attribute "dynamic_attributes", "_vgtx_021_access","VIEW"
    s.set_attribute "dynamic_attributes","_vgtx_021_formlabel","VEGETATION ANNUELLE"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end
  
  ### Végétation annuelle début
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_022","14"
 s.set_attribute "dynamic_attributes","_vgtx022_units", "STRING"
    s.set_attribute "dynamic_attributes", "_vgtx_022_access","LIST"
    s.set_attribute "dynamic_attributes","_vgtx_022_formlabel","Debut"
 s.set_attribute "dynamic_attributes","_vgtx_022_options","aucun=0&janvier=1&mi-janvier=15&fevrier=32&mi-fevrier=45&mars=60&mi-mars=74&avril=91&mi-avril=105&mai=121&mi-mai=135&juin=152&mi-juin=166&juillet=182&mi-juillet=196&aout=213&mi-aout=227&septembre=244&mi-septembre=258&octobre=274&mi-octobre=288&novembre=305&mi-novembre=319&decembre=335mi-decembre=349&fin decembre=365"
 $dc_observers.get_latest_class.redraw_with_undo(s)
  end
   ### Végétation annuelle fin
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_023","319"
 s.set_attribute "dynamic_attributes","_vgtx023_units", "STRING"
    s.set_attribute "dynamic_attributes", "_vgtx_023_access","LIST"
    s.set_attribute "dynamic_attributes","_vgtx_023_formlabel","Debut"
 s.set_attribute "dynamic_attributes","_vgtx_023_options","aucun=0&janvier=1&mi-janvier=15&fevrier=32&mi-fevrier=45&mars=60&mi-mars=74&avril=91&mi-avril=105&mai=121&mi-mai=135&juin=152&mi-juin=166&juillet=182&mi-juillet=196&aout=213&mi-aout=227&septembre=244&mi-septembre=258&octobre=274&mi-octobre=288&novembre=305&mi-novembre=319&decembre=335mi-decembre=349&fin decembre=365"
 $dc_observers.get_latest_class.redraw_with_undo(s)
  end
  
   ### Label Parametres Floraison
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_031", "DATE"
    s.set_attribute "dynamic_attributes", "_vgtx_031_access","VIEW"
    s.set_attribute "dynamic_attributes","_vgtx_031_formlabel","FLORAISON"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end
  
  ### Floraison début
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_032","152"
 s.set_attribute "dynamic_attributes","_vgtx032_units", "STRING"
    s.set_attribute "dynamic_attributes", "_vgtx_032_access","LIST"
    s.set_attribute "dynamic_attributes","_vgtx_032_formlabel","Debut"
 s.set_attribute "dynamic_attributes","_vgtx_032_options","aucun=0&janvier=1&mi-janvier=15&fevrier=32&mi-fevrier=45&mars=60&mi-mars=74&avril=91&mi-avril=105&mai=121&mi-mai=135&juin=152&mi-juin=166&juillet=182&mi-juillet=196&aout=213&mi-aout=227&septembre=244&mi-septembre=258&octobre=274&mi-octobre=288&novembre=305&mi-novembre=319&decembre=335mi-decembre=349&fin decembre=365"
 $dc_observers.get_latest_class.redraw_with_undo(s)
  end
   ### Floraison fin
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_033","196"
 s.set_attribute "dynamic_attributes","_vgtx033_units", "STRING"
    s.set_attribute "dynamic_attributes", "_vgtx_033_access","LIST"
    s.set_attribute "dynamic_attributes","_vgtx_033_formlabel","Debut"
 s.set_attribute "dynamic_attributes","_vgtx_033_options","aucun=0&janvier=1&mi-janvier=15&fevrier=32&mi-fevrier=45&mars=60&mi-mars=74&avril=91&mi-avril=105&mai=121&mi-mai=135&juin=152&mi-juin=166&juillet=182&mi-juillet=196&aout=213&mi-aout=227&septembre=244&mi-septembre=258&octobre=274&mi-octobre=288&novembre=305&mi-novembre=319&decembre=335mi-decembre=349&fin decembre=365"
 $dc_observers.get_latest_class.redraw_with_undo(s)
  end
  
  ### Label Parametres Fructification
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_041", "DATE"
    s.set_attribute "dynamic_attributes", "_vgtx_041_access","VIEW"
    s.set_attribute "dynamic_attributes","_vgtx_041_formlabel","FRUCTIFICATION"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end
  
  ### Fructification début
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_042","182"
 s.set_attribute "dynamic_attributes","_vgtx042_units", "STRING"
    s.set_attribute "dynamic_attributes", "_vgtx_042_access","LIST"
    s.set_attribute "dynamic_attributes","_vgtx_042_formlabel","Debut"
 s.set_attribute "dynamic_attributes","_vgtx_042_options","aucun=0&janvier=1&mi-janvier=15&fevrier=32&mi-fevrier=45&mars=60&mi-mars=74&avril=91&mi-avril=105&mai=121&mi-mai=135&juin=152&mi-juin=166&juillet=182&mi-juillet=196&aout=213&mi-aout=227&septembre=244&mi-septembre=258&octobre=274&mi-octobre=288&novembre=305&mi-novembre=319&decembre=335mi-decembre=349&fin decembre=365"
 $dc_observers.get_latest_class.redraw_with_undo(s)
  end
   ### Fructification fin
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_043","274"
 s.set_attribute "dynamic_attributes","_vgtx043_units", "STRING"
    s.set_attribute "dynamic_attributes", "_vgtx_043_access","LIST"
    s.set_attribute "dynamic_attributes","_vgtx_043_formlabel","Debut"
 s.set_attribute "dynamic_attributes","_vgtx_043_options","aucun=0&janvier=1&mi-janvier=15&fevrier=32&mi-fevrier=45&mars=60&mi-mars=74&avril=91&mi-avril=105&mai=121&mi-mai=135&juin=152&mi-juin=166&juillet=182&mi-juillet=196&aout=213&mi-aout=227&septembre=244&mi-septembre=258&octobre=274&mi-octobre=288&novembre=305&mi-novembre=319&decembre=335mi-decembre=349&fin decembre=365"
 $dc_observers.get_latest_class.redraw_with_undo(s)
  end

on progresse ? mojito

Simon
Samuel Tallet
Samuel Tallet
V.I.P.
V.I.P.
Masculin Date d'inscription : 15/04/2018
Nombre de messages : 873
Points : 2465
Age : 38
Localisation : Marseille, France
Emploi : Développeur Web

MessageSamuel Tallet Mer 18 Avr 2018 - 1:08

simjoubert a écrit:Bon voici déjà le code pour créer les attributs des végétaux pour le composant de rang0
Reste encore des attributs à ajouter mais c'est un début
il n'est pas encore sous la forme de menu il faut le copier dans la console ruby sur un composant existant.

Le sujet est marqué résolu. As-tu encore besoin d'aide par rapport à Ruby ?
Samuel Tallet
Samuel Tallet
V.I.P.
V.I.P.
Masculin Date d'inscription : 15/04/2018
Nombre de messages : 873
Points : 2465
Age : 38
Localisation : Marseille, France
Emploi : Développeur Web

MessageSamuel Tallet Mer 18 Avr 2018 - 1:21

Simon,

Une fois que j'aurai bien compris le but du plugin, je pourrai t'aider. Peux-tu me faire un petit briefing ?

Egalement, peux-tu me transmettre les scripts .rb et un .skp exemple pour faciliter le développement ?

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

Messagesimjoubert Mer 18 Avr 2018 - 2:35

Bonsoir Samuel
Le sujet est loin d'être résolu

Voici la dernière version de mon code réparti sur 3 scripts
season.rb
vegetation.rb
selectionenfant.rb

Prérequis : Un composant végétaux avec 4 sous-groupes
Persistant,Annuelle,Fleurs,Fruits

Première étape : Ce composant à été sélectionner et à été traité avec le code season.rb =>"Create Season DC Attribut"
un attribut season est ajouté au composant avec pour valeur le numéro du jour de l'année correspondant au paramètres d'ombre de sketchup.

deuxième étape
Le composant à nouveau sélectionné est traiter avec le code vegetation.rb =>"Creations des attributs des végétaux sélectionnés"

Troisième étape : La je bute sur la définition de l'attribut "Hidden" des sous-groupes dans le composant
Je voudrait ajouter une boucle qui sélectionne chaque sous groupe
Test du nom
si Annuelle alors Hidden = nomducomposant!vgtx_101
si Fleurs ...
si Fruits ...
c'est le code selection enfant.rb

quatrième étape
en changeant la date des ombres alors mise à jour de l'attribut season et recalculer les attribut Hidden des groupes
L'attribut Season se met à jour avec season.rb =>Update Season DC Attribut
la mise à jour des attributs vgtx  ( code pas encore fait ).

Donc voici les 3 codes :

season.rb
Code:
# encoding: UTF-8

require "sketchup.rb"
require "pp"

module SimJoubert
  module SeasonalComponents

    extend self
    
    @@context_menu_set ||= false
    @@debug ||= false
    
    MENU_TEXT = {
      :update => "Update season DC attibuts",
      :create => "Create season DC attibuts"
    }

    DICT = "dynamic_attributes"

    SEASON_ATTR = "season"
    SEASONOFF_ATTR = "seasonoff"

    def command_create(selset)
      return if selset.empty?
      # Make the definitions of selected components
      # or groups seasonal:
      create_dc_date_attribut(selset)
    end

    def command_update(selset)
      if selset.empty?
        # update ALL seasonal components
        update_dc_date_attribut(Sketchup::active_model.definitions)
      else
        # update ONLY selected seasonal components
        update_dc_date_attribut(selset)
      end
    end

    def debug
      @@debug
    end

    def debug=(arg)
      @@debug =( arg ? true : false )
    end

    def get_seasonal_dcs(collection=nil)
      # Filter the referenced collection
      if collection.nil?
        dlist = Sketchup::active_model.definitions
        dlist.reject! {|d| d.image? }
      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.uniq!
      end
      dcs = dlist.select {|d| d.attribute_dictionary(DICT,false) }
      # select only seasonal dynamic components
      seasonal = dcs.select {|d| d.attribute_dictionary(DICT,false).keys.include?(SEASON_ATTR)}
      if @@debug
        puts "#{Module::nesting[0].name}: debug is true."
        puts "The 'dlist' array:"
        pp dlist
        puts "The 'dcs' array:"
        pp dcs
        puts "The 'seasonal' array:"
        pp seasonal
      end
      return seasonal
    end


    def create_dc_date_attribut(selected)
      # 1. Retrieve data from shadowinfo into local variables,
      model = Sketchup.active_model
      shadowinfo = model.shadow_info    
      value = shadowinfo["DayOfYear"]
      if @@debug
        puts "The 'day of year' value:"
        pp value
        puts # blank line
      end
      # Writing the data into dictionary attributes.
      selected.each {|obj|
  next unless obj.respond_to?(:definition)
        obj.definition.set_attribute(DICT,SEASON_ATTR,value)
        obj.definition.set_attribute(DICT,SEASONOFF_ATTR,1)
 }
    end

    def update_dc_date_attribut(collection)
      seasonal = get_seasonal_dcs(collection)
      # 1. Retrieve data from shadowinfo into local variables,
      model = Sketchup.active_model
      shadowinfo = model.shadow_info
      
      # 2. Iterate the seasonal component definitions
      value = shadowinfo["DayOfYear"]
      if @@debug
        puts "The 'day of year' value:"
        pp value
        puts # blank line
      end
      #    writing the data into dictionary attributes.
      seasonal.each {|d| d.set_attribute(DICT,SEASON_ATTR,value) }
    end

    # other code / methods here

    unless file_loaded?(__FILE__) || @@context_menu_set

      UI.add_context_menu_handler do |context_menu|
        selset = Sketchup::active_model.selection
        context_menu.add_item(MENU_TEXT[:update]) { command_update(selset) }
        unless selset.empty?
          context_menu.add_item(MENU_TEXT[:create]) { command_create(selset) }
        end
      end # context_menu_handler

      @@context_menu_set = true

    end

  end # plugin module
end # outer namespace module

Le code Vegetation.rb

Code:
# First we pull in the standard API hooks.
require 'sketchup.rb'

# Show the Ruby Console at startup so we can
# see any programming errors we may make.
Sketchup.send_action "showRubyPanel:"

# Add a menu item to launch our plugin.
su_menu = UI.menu("Plugins").add_submenu(%Q(Simjoubert))
cmd = UI::Command.new("Attributs vegetaux") {
  UI.messagebox("Creation des attributs végétaux pour le composant selectionner")
  ### Label Parametres Vegetaux
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_000", "PARAMETRES VEGETAUX"
    s.set_attribute "dynamic_attributes", "_vgtx_000_access","VIEW"
    s.set_attribute "dynamic_attributes","_vgtx_000_formlabel","***********"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end
  
  ### Nom de la plante
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_001", "Nom de la plante"
 s.set_attribute "dynamic_attributes","_vgtx001_units", "STRING"
    s.set_attribute "dynamic_attributes", "_vgtx_001_access","TEXTBOX"
    s.set_attribute "dynamic_attributes","_vgtx_001_formlabel","Nom"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end
  
  ### Type de plante
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_002", "Arbre"
 s.set_attribute "dynamic_attributes","_vgtx002_units", "STRING"
    s.set_attribute "dynamic_attributes", "_vgtx_002_access","LIST"
    s.set_attribute "dynamic_attributes","_vgtx_002_formlabel","Type de plante"
 s.set_attribute "dynamic_attributes","_vgtx_002_options", "Arbre=Arbre&Arbuste=Arbuste&Vivace=Vivace&Grimpante=Grimpante&Aquatique=Aquatique"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end
  
   ### Origine de la plante
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_003", "Existant"
 s.set_attribute "dynamic_attributes","_vgtx003_units", "STRING"
    s.set_attribute "dynamic_attributes", "_vgtx_003_access","LIST"
    s.set_attribute "dynamic_attributes","_vgtx_003_formlabel","Origine"
 s.set_attribute "dynamic_attributes","_vgtx_003_options", "Existant=Existant&Fourniture=Fourniture"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end
 
  ### *************************************************

 ### Label Parametres Saison
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_020", "PARAMETRES SAISON"
    s.set_attribute "dynamic_attributes", "_vgtx_020_access","VIEW"
    s.set_attribute "dynamic_attributes","_vgtx_020_formlabel","***********"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end
  
 ### Label Parametres Végétation annuelle
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_021", "DATE"
    s.set_attribute "dynamic_attributes", "_vgtx_021_access","VIEW"
    s.set_attribute "dynamic_attributes","_vgtx_021_formlabel","VEGETATION ANNUELLE"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end
  
  ### Végétation annuelle début
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_022","14"
 s.set_attribute "dynamic_attributes","_vgtx022_units", "STRING"
    s.set_attribute "dynamic_attributes", "_vgtx_022_access","LIST"
    s.set_attribute "dynamic_attributes","_vgtx_022_formlabel","Debut"
 s.set_attribute "dynamic_attributes","_vgtx_022_options","aucun=0&janvier=1&mi-janvier=15&fevrier=32&mi-fevrier=45&mars=60&mi-mars=74&avril=91&mi-avril=105&mai=121&mi-mai=135&juin=152&mi-juin=166&juillet=182&mi-juillet=196&aout=213&mi-aout=227&septembre=244&mi-septembre=258&octobre=274&mi-octobre=288&novembre=305&mi-novembre=319&decembre=335&mi-decembre=349&fin decembre=365"
 $dc_observers.get_latest_class.redraw_with_undo(s)
  end
   ### Végétation annuelle fin
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_023","319"
 s.set_attribute "dynamic_attributes","_vgtx023_units", "STRING"
    s.set_attribute "dynamic_attributes", "_vgtx_023_access","LIST"
    s.set_attribute "dynamic_attributes","_vgtx_023_formlabel","Debut"
 s.set_attribute "dynamic_attributes","_vgtx_023_options","aucun=0&janvier=1&mi-janvier=15&fevrier=32&mi-fevrier=45&mars=60&mi-mars=74&avril=91&mi-avril=105&mai=121&mi-mai=135&juin=152&mi-juin=166&juillet=182&mi-juillet=196&aout=213&mi-aout=227&septembre=244&mi-septembre=258&octobre=274&mi-octobre=288&novembre=305&mi-novembre=319&decembre=335&mi-decembre=349&fin decembre=365"
 $dc_observers.get_latest_class.redraw_with_undo(s)
  end
  
   ### Label Parametres Floraison
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_031", "DATE"
    s.set_attribute "dynamic_attributes", "_vgtx_031_access","VIEW"
    s.set_attribute "dynamic_attributes","_vgtx_031_formlabel","FLORAISON"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end
  
  ### Floraison début
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_032","152"
 s.set_attribute "dynamic_attributes","_vgtx032_units", "STRING"
    s.set_attribute "dynamic_attributes", "_vgtx_032_access","LIST"
    s.set_attribute "dynamic_attributes","_vgtx_032_formlabel","Debut"
 s.set_attribute "dynamic_attributes","_vgtx_032_options","aucun=0&janvier=1&mi-janvier=15&fevrier=32&mi-fevrier=45&mars=60&mi-mars=74&avril=91&mi-avril=105&mai=121&mi-mai=135&juin=152&mi-juin=166&juillet=182&mi-juillet=196&aout=213&mi-aout=227&septembre=244&mi-septembre=258&octobre=274&mi-octobre=288&novembre=305&mi-novembre=319&decembre=335&mi-decembre=349&fin decembre=365"
 $dc_observers.get_latest_class.redraw_with_undo(s)
  end
   ### Floraison fin
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_033","196"
 s.set_attribute "dynamic_attributes","_vgtx033_units", "STRING"
    s.set_attribute "dynamic_attributes", "_vgtx_033_access","LIST"
    s.set_attribute "dynamic_attributes","_vgtx_033_formlabel","Fin"
 s.set_attribute "dynamic_attributes","_vgtx_033_options","aucun=0&janvier=1&mi-janvier=15&fevrier=32&mi-fevrier=45&mars=60&mi-mars=74&avril=91&mi-avril=105&mai=121&mi-mai=135&juin=152&mi-juin=166&juillet=182&mi-juillet=196&aout=213&mi-aout=227&septembre=244&mi-septembre=258&octobre=274&mi-octobre=288&novembre=305&mi-novembre=319&decembre=335&mi-decembre=349&fin decembre=365"
 $dc_observers.get_latest_class.redraw_with_undo(s)
  end
  
  ### Label Parametres Fructification
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_041", "DATE"
    s.set_attribute "dynamic_attributes", "_vgtx_041_access","VIEW"
    s.set_attribute "dynamic_attributes","_vgtx_041_formlabel","FRUCTIFICATION"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end
  
  ### Fructification début
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_042","182"
 s.set_attribute "dynamic_attributes","_vgtx042_units", "STRING"
    s.set_attribute "dynamic_attributes", "_vgtx_042_access","LIST"
    s.set_attribute "dynamic_attributes","_vgtx_042_formlabel","Debut"
 s.set_attribute "dynamic_attributes","_vgtx_042_options","aucun=0&janvier=1&mi-janvier=15&fevrier=32&mi-fevrier=45&mars=60&mi-mars=74&avril=91&mi-avril=105&mai=121&mi-mai=135&juin=152&mi-juin=166&juillet=182&mi-juillet=196&aout=213&mi-aout=227&septembre=244&mi-septembre=258&octobre=274&mi-octobre=288&novembre=305&mi-novembre=319&decembre=335&mi-decembre=349&fin decembre=365"
 $dc_observers.get_latest_class.redraw_with_undo(s)
  end
   ### Fructification fin
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_043","274"
 s.set_attribute "dynamic_attributes","_vgtx043_units", "STRING"
    s.set_attribute "dynamic_attributes", "_vgtx_043_access","LIST"
    s.set_attribute "dynamic_attributes","_vgtx_043_formlabel","Fin"
 s.set_attribute "dynamic_attributes","_vgtx_043_options","aucun=0&janvier=1&mi-janvier=15&fevrier=32&mi-fevrier=45&mars=60&mi-mars=74&avril=91&mi-avril=105&mai=121&mi-mai=135&juin=152&mi-juin=166&juillet=182&mi-juillet=196&aout=213&mi-aout=227&septembre=244&mi-septembre=258&octobre=274&mi-octobre=288&novembre=305&mi-novembre=319&decembre=335&mi-decembre=349&fin decembre=365"
 $dc_observers.get_latest_class.redraw_with_undo(s)
  end
  
  
  ### Label Parametres ETAT
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_100", "PARAMETRES"
    s.set_attribute "dynamic_attributes", "_vgtx_100_access","VIEW"
    s.set_attribute "dynamic_attributes","_vgtx_100_formlabel","AFFICHAGE"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end  
  ### Date Du Modele
  mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_101", "1 "
    s.set_attribute "dynamic_attributes", "_vgtx_101_access","LIST"
    s.set_attribute "dynamic_attributes","_vgtx_101_formlabel","Date du modele"
    s.set_attribute "dynamic_attributes","_vgtx_101_options","aucun=0&janvier=1&mi-janvier=15&fevrier=32&mi-fevrier=45&mars=60&mi-mars=74&avril=91&mi-avril=105&mai=121&mi-mai=135&juin=152&mi-juin=166&juillet=182&mi-juillet=196&aout=213&mi-aout=227&septembre=244&mi-septembre=258&octobre=274&mi-octobre=288&novembre=305&mi-novembre=319&decembre=335&mi-decembre=349&fin decembre=365"
    s.set_attribute "dynamic_attributes","_vgtx_101_formula","if(NEAREST(season,0,1,15,32,45,60,74,91,105,121,135,152,166,182,196,213,227,244,258,274,288,305,319,335,349,365)>season,NEAREST(season-15,0,1,15,32,45,60,74,91,105,121,135,152,166,182,196,213,227,244,258,274,288,305,319,335,349,365),NEAREST(season,0,1,15,32,45,60,74,91,105,121,135,152,166,182,196,213,227,244,258,274,288,305,319,335,349,365))"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end

      ### Végétation annuelle ETAT
   mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_102", "FALSE"
 s.set_attribute "dynamic_attributes","_vgtx_102_units", "BOOLEAN"
    s.set_attribute "dynamic_attributes", "_vgtx_102_access","VIEW"
    s.set_attribute "dynamic_attributes","_vgtx_102_formlabel","Fleurs"
    s.set_attribute "dynamic_attributes","_vgtx_102_formula", "if(OR(vgtx_023,vgtx_022)=0,TRUE,if(vgtx_023>vgtx_022,if(season>=vgtx_022,if(season<=vgtx_023,FALSE,TRUE),TRUE),if(season>=vgtx_023,FALSE,if(season<=vgtx_022,FALSE,TRUE))))"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end
   ### Floraison ETAT
   mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_103", "FALSE"
 s.set_attribute "dynamic_attributes","_vgtx_103_units", "BOOLEAN"
    s.set_attribute "dynamic_attributes", "_vgtx_103_access","VIEW"
    s.set_attribute "dynamic_attributes","_vgtx_103_formlabel","Fleurs"
    s.set_attribute "dynamic_attributes","_vgtx_103_formula", "if(OR(vgtx_033,vgtx_032)=0,TRUE,if(vgtx_033>vgtx_032,if(season>=vgtx_032,if(season<=vgtx_033,FALSE,TRUE),TRUE),if(season>=vgtx_033,FALSE,if(season<=vgtx_032,FALSE,TRUE))))"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end
   ### Fructification ETAT
   mod = Sketchup.active_model
  sel = mod.selection
  sel.grep(Sketchup::ComponentInstance).each do |s|
    s.set_attribute "dynamic_attributes","vgtx_104", "FALSE"
 s.set_attribute "dynamic_attributes","_vgtx_104_units", "BOOLEAN"
    s.set_attribute "dynamic_attributes", "_vgtx_104_access","VIEW"
    s.set_attribute "dynamic_attributes","_vgtx_104_formlabel","Fruits"
    s.set_attribute "dynamic_attributes","_vgtx_104_formula", "if(OR(vgtx_043,vgtx_042)=0,TRUE,if(vgtx_043>vgtx_042,if(season>=vgtx_042,if(season<=vgtx_043,FALSE,TRUE),TRUE),if(season>=vgtx_043,FALSE,if(season<=vgtx_042,FALSE,TRUE))))"
    $dc_observers.get_latest_class.redraw_with_undo(s)
  end
}
cmd.menu_text = "Attribut Vegetaux"
su_menu .add_item cmd

Le code Selectionenfant.rb pas fonctionnel

Code:
mod = Sketchup.active_model
ent = mod.active_entities
sel = mod.selection
SKETCHUP_CONSOLE.clear
cis = sel.grep(Sketchup::ComponentInstance)[0]
cis.each{|ci|
  c_parent = ci.definition.name; p c_parent
  groups = ci.definition.entities.grep(Sketchup::Group)
  groups.each{|g|
    case g.name
    when "Annuelle";p 'veg'
      g.set_attribute("Groups","Hidden","#{c_parent} vgtx_101")
    when "Fleurs";p 'flr'
      g.set_attribute("Groups","Hidden","#{c_parent} vgtx_102")
    when "Fruits";p 'fru'
      g.set_attribute("Groups","Hidden","#{c_parent} vgtx_103")
    end
  }
}
mod = Sketchup.active_model
ent = mod.active_entities
sel = mod.selection
sel.grep(Sketchup::ComponentInstance).each{|ci|
  c_parent = ci.definition.name; p c_parent
  groups = ci.definition.entities.grep(Sketchup::Group)
  groups.each{|g|
    case g.name
    when "Annuelle";p 'veg'
      g.set_attribute("dynamic_attributes","_hidden_formula","#{c_parent}!vgtx_101")
    when "Fleurs";p 'flr'
      g.set_attribute("dynamic_attributes","_hidden_formula","#{c_parent}!vgtx_102")
    when "Fruits";p 'fru'
      g.set_attribute("dynamic_attributes","_hidden_formula","#{c_parent}!vgtx_103")
    end
  }
}

mod = Sketchup.active_model
ent = mod.active_entities
sel = mod.selection
 s.set_attribute "dynamic_attributes","_vgtx_104_formula",

Mon fichier test arbre au format sketchup 2008 pour plus de compatibilité :
https://www.dropbox.com/s/mk9j863a5sus2ek/testVegetaux_sketchup2008skp.skp?dl=0

J'espère avoir été suffisamment clair dans mes explications ! lire arf

Merci du temps que tu pourra y consacrer.
Pour que je puisse apprendre merci de commenter un maximum svp
Je sais qu'en rubby il y des syntaxes courtes mais elles déroutent énormément le débutant, si tu pouvait dans un premier temps déboguer en mode didactique se serait super.

Mille mercis ange
SImon

-------------------------------------------------------------------------------------------------------------------------
"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
Contenu sponsorisé

MessageContenu sponsorisé

Page 3 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