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


[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Empty
Ton bloc notes
Derniers sujets
» [ SKETCHUP composants dynamiques ] Copies de copies
par simjoubert Hier à 10:14

» [ PRESENTATION ] Manutio
par Manutio Hier à 9:21

» [ ARTLANTIS ] Ca donne envie !
par fraid Ven 15 Mar 2024 - 7:44

» [ SKETCHUP généralité ] SÉLECTIONNER - Tuto 3/4 - 1ère TECHNIQUE INÉDITE
par JDD Mer 13 Mar 2024 - 10:39

» [ SKETCHUP plugins ] SketchUp et Menuiserie : Rencontre avec Artwood
par art wood concept Mer 13 Mar 2024 - 9:54

» [ ARCHICAD ] Zone - Menu déroulant
par Archi43 Mar 12 Mar 2024 - 16:29

» [ SKETCHUP tutos ] SÉLECTIONNER - Tuto 3/4 - 1ère TECHNIQUE INÉDITE
par jerryvento Mar 12 Mar 2024 - 8:48

» [ SKETCHUP LIVE COMPONENT ] table avec chaises
par tenrev Mar 12 Mar 2024 - 8:46

» [ SKETCHUP généralité ] Problème d'ouverture de SKP
par lionel Claude Lun 11 Mar 2024 - 18:14

» [ TWINMOTION ] Rotation des tuiles sur TM 2023 avec fichier issu de Allplan 2015
par Gaspard Hauser Lun 11 Mar 2024 - 13:48

» [ TWINMOTION ] CONSEIL FORMATION
par Marucia Lun 11 Mar 2024 - 13:29

» [ SKETCHUP plugins ] selection
par Gaspard Hauser Dim 10 Mar 2024 - 19:17

» [ TWINMOTION ] réduire le champs de travail ?
par Gaspard Hauser Dim 10 Mar 2024 - 19:13

» [ TWINMOTION ] eGPU / ralentissement Twinmotion important
par Gaspard Hauser Dim 10 Mar 2024 - 19:09

» [ SKETCHUP plugins ] sj_AddDCFunctions
par Miroslav Sam 9 Mar 2024 - 18:30

» [ SKETCHUP généralité ] Quel logiciel d'animation
par polo Sam 9 Mar 2024 - 17:35

» [ SKETCHUP tutos ] texture pour sketchup
par tenrev Ven 8 Mar 2024 - 9:25

» [ SKETCHUP LIVE COMPONENT ] les boucles Loop dans trimble creator
par tenrev Jeu 7 Mar 2024 - 10:21

» [ PRESENTATION ]
par Coulou Mer 6 Mar 2024 - 8:51

» [ SKETCHUP tutos ] SÉLECTIONNER - Tuto 2/4 - INVERSER LA SÉLECTION avec 2017
par jerryvento Lun 4 Mar 2024 - 10:28

» [ SKETCHUP généralité ] crash
par TF3 Sam 2 Mar 2024 - 17:51

» [ SKETCHUP composants dynamiques ] Hidden avec formule IF et OR imbriqué
par Samuel MATHIEU Ven 1 Mar 2024 - 20:28

» [ SKETCHUP LIVE COMPONENT ] doc en anglais
par tenrev Ven 1 Mar 2024 - 13:42

» [ SKETCHUP composants dynamiques ] Un bug que je ne comprend pas
par boulii Jeu 29 Fév 2024 - 21:37

» [ SKETCHUP SCRIPTS ] Help ! Par quoi ou comment remplacer l'ancienne methode "nitems" dans plugins anciens
par simjoubert Mer 28 Fév 2024 - 17:52

» [ SKETCHUP généralité ] Tuto 1/4 - Sélectionner - Les Techniques de Base
par jerryvento Mar 27 Fév 2024 - 11:58

» [ SKETCHUP tutos ] SÉLECTIONNER - Tuto 1/4 - Les Techniques de Base
par jerryvento Mar 27 Fév 2024 - 11:57

» [ TWINMOTION ] nouvelle version de Twinmotion 2023.2.2
par tenrev Mar 27 Fév 2024 - 9:18

» [ PRESENTATION ] Shakna
par Shakna Lun 26 Fév 2024 - 23:15

» [ PHOTOSHOP ] perdu l'outil redresement du filtre carera raw
par vick Lun 26 Fév 2024 - 11:34

» [ SKETCHUP objets ] IXLRLXI - 600v - Rust Shake même combats! :)
par tenrev Sam 24 Fév 2024 - 16:38

» [ SKETCHUP plugins ] tutos en plusieurs parties sur la généralité des plugins sketchup
par tenrev Sam 24 Fév 2024 - 16:27

» [ SKETCHUP LIVE COMPONENT ] Etagéres courbes configurables en live avec sketchup - explications
par tenrev Sam 24 Fév 2024 - 11:39

» [ SKETCHUP composants dynamiques ] Mon tuto complet de 6h30 - apprendre les composants dynamiques
par tenrev Ven 23 Fév 2024 - 11:26

» [ SKETCHUP composants dynamiques ] Plan de plantation
par Shakna Jeu 22 Fév 2024 - 23:58

Sondage

Chaine Twitch

[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c1029%[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c10 29% [ 11 ]
[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c1011%[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c10 11% [ 4 ]
[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c103%[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c10 3% [ 1 ]
[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% [ 3 ]
[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% [ 3 ]
[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% [ 3 ]
[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c1029%[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c10 29% [ 11 ]
[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c105%[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Poll_c10 5% [ 2 ]

Total des votes : 38

chaine sketchup.tv

[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 : 19741
Points : 34355
Age : 60
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 
1 PC fixe avec proc Rizen 9 3950X 32 threads - cg nvidia geforce RTX3080  - 64 go de ram DDssd 1To
1 PC portable Lenovo  écran 16''|win11 64 bits| i7 Quad core|ram 32go| CG GFORCE RTX3070 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 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 : 2803
Points : 6237
Age : 48
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 : 2803
Points : 6237
Age : 48
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 : 19741
Points : 34355
Age : 60
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 
1 PC fixe avec proc Rizen 9 3950X 32 threads - cg nvidia geforce RTX3080  - 64 go de ram DDssd 1To
1 PC portable Lenovo  écran 16''|win11 64 bits| i7 Quad core|ram 32go| CG GFORCE RTX3070 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 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 : 2803
Points : 6237
Age : 48
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 : 19741
Points : 34355
Age : 60
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 
1 PC fixe avec proc Rizen 9 3950X 32 threads - cg nvidia geforce RTX3080  - 64 go de ram DDssd 1To
1 PC portable Lenovo  écran 16''|win11 64 bits| i7 Quad core|ram 32go| CG GFORCE RTX3070 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 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 : 2803
Points : 6237
Age : 48
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 : 19741
Points : 34355
Age : 60
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 
1 PC fixe avec proc Rizen 9 3950X 32 threads - cg nvidia geforce RTX3080  - 64 go de ram DDssd 1To
1 PC portable Lenovo  écran 16''|win11 64 bits| i7 Quad core|ram 32go| CG GFORCE RTX3070 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 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 : 2803
Points : 6237
Age : 48
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 : 19741
Points : 34355
Age : 60
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 
1 PC fixe avec proc Rizen 9 3950X 32 threads - cg nvidia geforce RTX3080  - 64 go de ram DDssd 1To
1 PC portable Lenovo  écran 16''|win11 64 bits| i7 Quad core|ram 32go| CG GFORCE RTX3070 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 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 : 19741
Points : 34355
Age : 60
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 
1 PC fixe avec proc Rizen 9 3950X 32 threads - cg nvidia geforce RTX3080  - 64 go de ram DDssd 1To
1 PC portable Lenovo  écran 16''|win11 64 bits| i7 Quad core|ram 32go| CG GFORCE RTX3070 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 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 : 19741
Points : 34355
Age : 60
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 
1 PC fixe avec proc Rizen 9 3950X 32 threads - cg nvidia geforce RTX3080  - 64 go de ram DDssd 1To
1 PC portable Lenovo  écran 16''|win11 64 bits| i7 Quad core|ram 32go| CG GFORCE RTX3070 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 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 : 19741
Points : 34355
Age : 60
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 
1 PC fixe avec proc Rizen 9 3950X 32 threads - cg nvidia geforce RTX3080  - 64 go de ram DDssd 1To
1 PC portable Lenovo  écran 16''|win11 64 bits| i7 Quad core|ram 32go| CG GFORCE RTX3070 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 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 : 2803
Points : 6237
Age : 48
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 : 2803
Points : 6237
Age : 48
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 : 2803
Points : 6237
Age : 48
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 : 19741
Points : 34355
Age : 60
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 
1 PC fixe avec proc Rizen 9 3950X 32 threads - cg nvidia geforce RTX3080  - 64 go de ram DDssd 1To
1 PC portable Lenovo  écran 16''|win11 64 bits| i7 Quad core|ram 32go| CG GFORCE RTX3070 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 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 : 2803
Points : 6237
Age : 48
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 : 19741
Points : 34355
Age : 60
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 
1 PC fixe avec proc Rizen 9 3950X 32 threads - cg nvidia geforce RTX3080  - 64 go de ram DDssd 1To
1 PC portable Lenovo  écran 16''|win11 64 bits| i7 Quad core|ram 32go| CG GFORCE RTX3070 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 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 : 2803
Points : 6237
Age : 48
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 : 2803
Points : 6237
Age : 48
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 : 868
Points : 2450
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 : 868
Points : 2450
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 : 2803
Points : 6237
Age : 48
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

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