Forum Sketchup Artlantis Archicad
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Galerie


[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 Empty
Ton bloc notes
Derniers sujets
» [ SKETCHUP tutos ] tuto sketchup , enscape , up for sketchup
par tenrev Hier à 20:28

» [AUTRES LOGICIELS] MagicaVoxel!
par Pilou Hier à 12:15

» [ SKETCHUP généralité ] Animation comme une gamme de montage, d'assemblage...
par tenrev Hier à 9:15

» [ SKETCHUP composants dynamiques ] Animation d'un balancier de pendule
par JDD Lun 20 Sep 2021 - 18:51

» [ TWINMOTION ] BUGS textures ? en direct link avec Archicad
par tenrev Jeu 16 Sep 2021 - 21:40

» [ SKETCHUP généralité ] mise à jour de sketchup 2021.1.332
par JDD Jeu 16 Sep 2021 - 21:18

» [AUTRES LOGICIELS] Moi3D beta 4.0 - 64 bits Mac / PC 27 Octobre 2020
par Pilou Mer 15 Sep 2021 - 21:57

» [ SKETCHUP plugins ] Accédez à tous les attributs d'un Composant Dynamique avec "Attribute Helper"
par JDD Mer 15 Sep 2021 - 18:01

» [ TWINMOTION ] plugin archicad 25
par Coulou Mer 15 Sep 2021 - 17:11

» [SKETCHUP GENERALITES] COMMENT FAIRE UN EFFET MIROIR SUR SKETCHUP AVEC TWILIGHT RENDER
par tenrev Mar 14 Sep 2021 - 11:52

» [ UNREAL ENGINE ] l'héroine de "Valley of the Ancient" disponible free comme personnage autonome pour Unreal Engine 4 et 5.
par tenrev Mar 14 Sep 2021 - 11:02

» [ ARCHICAD ] [TUTO] Création et gestion des modules liés
par Archi43 Mar 14 Sep 2021 - 10:55

» [ TWINMOTION ] Licence Archicad25/Twinmotion
par tenrev Mar 14 Sep 2021 - 10:09

» [ SKETCHUP plugins ] le plugin "up for sketchup" pour les décorateurs et archi d'intérieur
par tenrev Mar 14 Sep 2021 - 10:04

» [ MATOS INFORM. ] Station de travail / Que choisir ?
par freroil Lun 13 Sep 2021 - 11:28

» [ SKETCHUP généralité ] Problème de calques / scènes
par tenrev Dim 12 Sep 2021 - 10:19

» [ SKETCHUP tutos ] ASTUCE Faire apparaître les Ouvertures dans un mur entre 2 scènes
par tenrev Sam 11 Sep 2021 - 9:42

» [ UNREAL ENGINE ] Live Link VCAM, une application iOS gratuite pour le travail de production virtuelle qui permet de contrôler une caméra virtuelle dans une scène Unreal Engine
par tenrev Jeu 9 Sep 2021 - 20:55

» [ SKETCHUP généralité ] Rapport et unité
par Christophe Fortineau Jeu 9 Sep 2021 - 12:08

» [ SKETCHUP généralité ] BIM IFC en français
par Archi43 Jeu 9 Sep 2021 - 11:55

» [ UNREAL ENGINE ] Un de mes premiers essais avec Unreal 5 sur un petit projet
par tenrev Jeu 9 Sep 2021 - 10:47

» [ SKETCHUP composants dynamiques ] Plusieurs animations en un seul clic ?
par tist Mer 8 Sep 2021 - 16:45

» [ SKETCHUP plugins ] Sketch Plus : 30 plugs en un!
par tenrev Mer 8 Sep 2021 - 15:57

» [ UNREAL ENGINE ] un essai avec un asset gratuit ce mois ci (septembre 2021)
par tenrev Mer 8 Sep 2021 - 15:33

» [ SKETCHUP tutos ] Changer la Couleur des Arêtes, des traits d'un plan ou autre dessin très facilement
par JDD Mer 8 Sep 2021 - 11:18

» [ SKETCHUP généralité ] Changer la Couleur des Arêtes, des traits d'un plan ou autre dessin très facilement
par jerryvento Mar 7 Sep 2021 - 7:24

» [ AUTRES LOGICIELS ] Technologie SDF sortie! MagicaCSG!
par Pilou Lun 6 Sep 2021 - 11:00

» [ TWINMOTION ] Twinmotion 2021.1.4 est maintenant disponible
par tenrev Sam 4 Sep 2021 - 21:39

» [ ENSCAPE ] scintillement lors d'animations
par REGIS Sam 4 Sep 2021 - 14:25

» [ TWINMOTION ] Développer davantage les projets Twinmotion dans Unreal Engine | weninar en ligne
par tenrev Sam 4 Sep 2021 - 12:07

» [ UNREAL ENGINE ] de twinmotion vers unreal engine - vidéo webinar en anglais
par tenrev Sam 4 Sep 2021 - 12:05

» [ SKETCHUP généralité ] Calque, Balise LA MÉTHODE préconisée par Sketchup
par jerryvento Jeu 2 Sep 2021 - 18:51

» [ SKETCHUP généralité ] Autre problème d'impression
par jerryvento Mer 1 Sep 2021 - 18:01

» [ PRESENTATION ]
par freroil Mer 1 Sep 2021 - 9:54

» [ UNREAL ENGINE ] Nouveautés de la version 4.27
par tenrev Mar 31 Aoû 2021 - 15:36

[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 : 18037
Points : 30598
Age : 58
Localisation : Dans la quatrieme dimension
Emploi : archi d'intérieur salarié
https://www.biblio3d.com

Messagetenrev Mer 12 Avr 2017 - 15:50

[Vous devez être inscrit et connecté pour voir ce lien] 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 MSI TITAN PRO écran 17''|win10 64 bits| i7 Quad core|ram 32go| CG GFORCE GTX1080 avec 8go
1 casque VR Occulus Rift - 1 vieux PC portable Dell sous Linux Ubuntu 18    1 vieux pc portable HP sous chromebook
Modélisation : Sketchup - Rhino - Pconplanner   Rendu: Enscape - Keyshot - Unreal Engine - Artlantis - Twinmotion   Autres: Photoshop - Illustrator - Indesign - Vidéostudio - After Effect - Première

[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 575088biblio3d
simjoubert
simjoubert
V.I.P.
V.I.P.
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1504
Points : 3442
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

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
V.I.P.
V.I.P.
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1504
Points : 3442
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

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 : 18037
Points : 30598
Age : 58
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 MSI TITAN PRO écran 17''|win10 64 bits| i7 Quad core|ram 32go| CG GFORCE GTX1080 avec 8go
1 casque VR Occulus Rift - 1 vieux PC portable Dell sous Linux Ubuntu 18    1 vieux pc portable HP sous chromebook
Modélisation : Sketchup - Rhino - Pconplanner   Rendu: Enscape - Keyshot - Unreal Engine - Artlantis - Twinmotion   Autres: Photoshop - Illustrator - Indesign - Vidéostudio - After Effect - Première

[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 575088biblio3d
simjoubert
simjoubert
V.I.P.
V.I.P.
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1504
Points : 3442
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

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 : [Vous devez être inscrit et connecté pour voir ce lien]

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 : 18037
Points : 30598
Age : 58
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 MSI TITAN PRO écran 17''|win10 64 bits| i7 Quad core|ram 32go| CG GFORCE GTX1080 avec 8go
1 casque VR Occulus Rift - 1 vieux PC portable Dell sous Linux Ubuntu 18    1 vieux pc portable HP sous chromebook
Modélisation : Sketchup - Rhino - Pconplanner   Rendu: Enscape - Keyshot - Unreal Engine - Artlantis - Twinmotion   Autres: Photoshop - Illustrator - Indesign - Vidéostudio - After Effect - Première

[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 575088biblio3d
simjoubert
simjoubert
V.I.P.
V.I.P.
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1504
Points : 3442
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

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 : 18037
Points : 30598
Age : 58
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 MSI TITAN PRO écran 17''|win10 64 bits| i7 Quad core|ram 32go| CG GFORCE GTX1080 avec 8go
1 casque VR Occulus Rift - 1 vieux PC portable Dell sous Linux Ubuntu 18    1 vieux pc portable HP sous chromebook
Modélisation : Sketchup - Rhino - Pconplanner   Rendu: Enscape - Keyshot - Unreal Engine - Artlantis - Twinmotion   Autres: Photoshop - Illustrator - Indesign - Vidéostudio - After Effect - Première

[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 575088biblio3d
simjoubert
simjoubert
V.I.P.
V.I.P.
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1504
Points : 3442
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

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

Messagetenrev Mar 18 Avr 2017 - 8:22

[Vous devez être inscrit et connecté pour voir ce lien] 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 MSI TITAN PRO écran 17''|win10 64 bits| i7 Quad core|ram 32go| CG GFORCE GTX1080 avec 8go
1 casque VR Occulus Rift - 1 vieux PC portable Dell sous Linux Ubuntu 18    1 vieux pc portable HP sous chromebook
Modélisation : Sketchup - Rhino - Pconplanner   Rendu: Enscape - Keyshot - Unreal Engine - Artlantis - Twinmotion   Autres: Photoshop - Illustrator - Indesign - Vidéostudio - After Effect - Première

[SKETCHUP 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 : 18037
Points : 30598
Age : 58
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

[Vous devez être inscrit et connecté pour voir ce lien]

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 MSI TITAN PRO écran 17''|win10 64 bits| i7 Quad core|ram 32go| CG GFORCE GTX1080 avec 8go
1 casque VR Occulus Rift - 1 vieux PC portable Dell sous Linux Ubuntu 18    1 vieux pc portable HP sous chromebook
Modélisation : Sketchup - Rhino - Pconplanner   Rendu: Enscape - Keyshot - Unreal Engine - Artlantis - Twinmotion   Autres: Photoshop - Illustrator - Indesign - Vidéostudio - After Effect - Première

[SKETCHUP 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 : 18037
Points : 30598
Age : 58
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 MSI TITAN PRO écran 17''|win10 64 bits| i7 Quad core|ram 32go| CG GFORCE GTX1080 avec 8go
1 casque VR Occulus Rift - 1 vieux PC portable Dell sous Linux Ubuntu 18    1 vieux pc portable HP sous chromebook
Modélisation : Sketchup - Rhino - Pconplanner   Rendu: Enscape - Keyshot - Unreal Engine - Artlantis - Twinmotion   Autres: Photoshop - Illustrator - Indesign - Vidéostudio - After Effect - Première

[SKETCHUP 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 : 18037
Points : 30598
Age : 58
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 MSI TITAN PRO écran 17''|win10 64 bits| i7 Quad core|ram 32go| CG GFORCE GTX1080 avec 8go
1 casque VR Occulus Rift - 1 vieux PC portable Dell sous Linux Ubuntu 18    1 vieux pc portable HP sous chromebook
Modélisation : Sketchup - Rhino - Pconplanner   Rendu: Enscape - Keyshot - Unreal Engine - Artlantis - Twinmotion   Autres: Photoshop - Illustrator - Indesign - Vidéostudio - After Effect - Première

[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 575088biblio3d
simjoubert
simjoubert
V.I.P.
V.I.P.
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1504
Points : 3442
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

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
V.I.P.
V.I.P.
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1504
Points : 3442
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

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
V.I.P.
V.I.P.
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1504
Points : 3442
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

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 : 18037
Points : 30598
Age : 58
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 MSI TITAN PRO écran 17''|win10 64 bits| i7 Quad core|ram 32go| CG GFORCE GTX1080 avec 8go
1 casque VR Occulus Rift - 1 vieux PC portable Dell sous Linux Ubuntu 18    1 vieux pc portable HP sous chromebook
Modélisation : Sketchup - Rhino - Pconplanner   Rendu: Enscape - Keyshot - Unreal Engine - Artlantis - Twinmotion   Autres: Photoshop - Illustrator - Indesign - Vidéostudio - After Effect - Première

[SKETCHUP 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 : 6423
Points : 14446
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
V.I.P.
V.I.P.
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1504
Points : 3442
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

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 : 18037
Points : 30598
Age : 58
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 MSI TITAN PRO écran 17''|win10 64 bits| i7 Quad core|ram 32go| CG GFORCE GTX1080 avec 8go
1 casque VR Occulus Rift - 1 vieux PC portable Dell sous Linux Ubuntu 18    1 vieux pc portable HP sous chromebook
Modélisation : Sketchup - Rhino - Pconplanner   Rendu: Enscape - Keyshot - Unreal Engine - Artlantis - Twinmotion   Autres: Photoshop - Illustrator - Indesign - Vidéostudio - After Effect - Première

[SKETCHUP composants dynamiques] récupérer date paramètre ombre - Page 3 575088biblio3d
simjoubert
simjoubert
V.I.P.
V.I.P.
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1504
Points : 3442
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

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
V.I.P.
V.I.P.
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1504
Points : 3442
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

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 : 740
Points : 2123
Age : 35
Localisation : Marseille, France

MessageSamuel Tallet Mer 18 Avr 2018 - 1:08

[Vous devez être inscrit et connecté pour voir ce lien] 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 : 740
Points : 2123
Age : 35
Localisation : Marseille, France

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
V.I.P.
V.I.P.
Masculin Humeur : Des racines et des rêves !!!
Date d'inscription : 05/08/2012
Nombre de messages : 1504
Points : 3442
Age : 46
Localisation : Val de Marne
Emploi : Paysagiste

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é :
[Vous devez être inscrit et connecté pour voir ce lien]

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