Ton bloc notes
Derniers sujets
» [ SKETCHUP généralité ] Tête de pilastre
par JDD Aujourd'hui à 11:49
» [ CHALLENGE 2024 ] résultats du challenge
par AK40Cess Hier à 13:27
» [ FORUM ] astuce pour insérer facilement un tableau sur le forum
par tenrev Hier à 9:12
» [ SKETCHUP plugins ] une barre d’outils perso
par tenrev Lun 18 Nov 2024 - 15:05
» [ SKETCHUP généralité ] Orienter 1 Face, 1 Profil Normal (Perpendiculaire) à 1 Arête, 1 Trajectoire
par jerryvento Lun 18 Nov 2024 - 14:47
» [ SKETCHUP généralité ] Modéliser facilement 1 spirale en moins de 40 secondes
par jerryvento Lun 18 Nov 2024 - 14:47
» [ SKETCHUP généralité ] Modélise 1 Forme Hélicoïdale, en forme de spirale : main courante, rampe d'accès voitures...
par jerryvento Lun 18 Nov 2024 - 14:46
» [ SKETCHUP tutos ] Orienter 1 Face, 1 Profil Normal (Perpendiculaire) à 1 Arête, 1 Trajectoire
par jerryvento Lun 18 Nov 2024 - 14:45
» [ SKETCHUP tutos ] Modéliser facilement 1 spirale en moins de 40 secondes
par jerryvento Lun 18 Nov 2024 - 14:44
» [ SKETCHUP tutos ] Modélise 1 Forme Hélicoïdale, en forme de spirale : main courante, rampe d'accès voitures...
par jerryvento Lun 18 Nov 2024 - 14:43
» ColorMaker par Didier Bur[ SKETCHUP plugins ]
par JDD Dim 17 Nov 2024 - 20:56
» [ ARCHICAD ] Plus de format *atl dans Archicad
par Coulou Jeu 14 Nov 2024 - 8:26
» [ SKETCHUP tutos ] Créer des Bibliothèques et des livres aléatoires Facilement (2 Méthodes!)
par tenrev Mar 12 Nov 2024 - 11:31
» [ CHALLENGE 2024 ] les images finales du challenge
par tenrev Lun 11 Nov 2024 - 15:35
» [ SKETCHUP composants dynamiques ] Formule IF
par Samuel MATHIEU Jeu 7 Nov 2024 - 21:12
» [ Challenge 2024] cHallenge archjtexture exterieur ou paysagiste-vick-sketchup-enscape
par vick Jeu 7 Nov 2024 - 10:23
» [ SKETCHUP vray ]
par tenrev Mar 5 Nov 2024 - 21:19
» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste- Gaspard Hauser - Sketchup - D5 render
par tenrev Mar 5 Nov 2024 - 10:22
» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - JDD - SketchUp - Enscape
par tenrev Mar 5 Nov 2024 - 10:10
» [ ARCHICAD ] Murs paramétriques
par Coulou Lun 28 Oct 2024 - 10:28
» [ SKETCHUP généralité ] Aide pour SKP 2017
par PEGASE Sam 26 Oct 2024 - 18:36
» [ ARCHICAD ] Ajouter du lambris sur un mur
par Coulou Jeu 24 Oct 2024 - 10:43
» [ SKETCHUP généralité ] 1 Citrouille à imprimer pour Halloween
par jerryvento Jeu 24 Oct 2024 - 8:13
» [ SKETCHUP tutos ] 1 Citrouille à imprimer pour Halloween
par jerryvento Jeu 24 Oct 2024 - 8:11
» [ D5_RENDER] Petit exemple "hors sujet" ... D5
par Gaspard Hauser Mar 22 Oct 2024 - 19:59
» [ MATOS INFORM. ] [WINDOWS] Miniatures de prévisualisation pour les fichiers de modèle 3D au format .OBJ, .FBX, .STL, .3DS et +
par Gaspard Hauser Mar 22 Oct 2024 - 19:49
» [ SKETCHUP Layout ] Symboles Électriques sur Layout
par JDD Jeu 17 Oct 2024 - 9:44
» [ ARCHICAD ] gardes corps et profils complexe ?
par Christophe Fortineau Lun 14 Oct 2024 - 12:10
» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - allansens - cinema 4D
par Allansens Sam 12 Oct 2024 - 13:53
» [ ARTLANTIS ] Ca donne envie !
par Gaspard Hauser Jeu 10 Oct 2024 - 10:00
» [ TWINMOTION ] Unreal Engine déménage sur Fab - DataSmith & Archicad
par Coulou Jeu 10 Oct 2024 - 9:03
» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - AK40Cess - Archicad-Twinmotion
par Coulou Mar 8 Oct 2024 - 11:53
» [ TWINMOTION ] Unreal Engine déménage sur Fab - Assets de Megascan
par JDD Lun 7 Oct 2024 - 21:52
» [ CHALLENGE ARCHITECTURE EXTERIEURE OU PAYSAGISTE ] Démarrage du challenge 2024 - les régles
par tenrev Jeu 3 Oct 2024 - 14:58
» [ ARCHICAD ] Cotation d'ouverture sans hauteur
par Titou Jeu 3 Oct 2024 - 11:21
par JDD Aujourd'hui à 11:49
» [ CHALLENGE 2024 ] résultats du challenge
par AK40Cess Hier à 13:27
» [ FORUM ] astuce pour insérer facilement un tableau sur le forum
par tenrev Hier à 9:12
» [ SKETCHUP plugins ] une barre d’outils perso
par tenrev Lun 18 Nov 2024 - 15:05
» [ SKETCHUP généralité ] Orienter 1 Face, 1 Profil Normal (Perpendiculaire) à 1 Arête, 1 Trajectoire
par jerryvento Lun 18 Nov 2024 - 14:47
» [ SKETCHUP généralité ] Modéliser facilement 1 spirale en moins de 40 secondes
par jerryvento Lun 18 Nov 2024 - 14:47
» [ SKETCHUP généralité ] Modélise 1 Forme Hélicoïdale, en forme de spirale : main courante, rampe d'accès voitures...
par jerryvento Lun 18 Nov 2024 - 14:46
» [ SKETCHUP tutos ] Orienter 1 Face, 1 Profil Normal (Perpendiculaire) à 1 Arête, 1 Trajectoire
par jerryvento Lun 18 Nov 2024 - 14:45
» [ SKETCHUP tutos ] Modéliser facilement 1 spirale en moins de 40 secondes
par jerryvento Lun 18 Nov 2024 - 14:44
» [ SKETCHUP tutos ] Modélise 1 Forme Hélicoïdale, en forme de spirale : main courante, rampe d'accès voitures...
par jerryvento Lun 18 Nov 2024 - 14:43
» ColorMaker par Didier Bur[ SKETCHUP plugins ]
par JDD Dim 17 Nov 2024 - 20:56
» [ ARCHICAD ] Plus de format *atl dans Archicad
par Coulou Jeu 14 Nov 2024 - 8:26
» [ SKETCHUP tutos ] Créer des Bibliothèques et des livres aléatoires Facilement (2 Méthodes!)
par tenrev Mar 12 Nov 2024 - 11:31
» [ CHALLENGE 2024 ] les images finales du challenge
par tenrev Lun 11 Nov 2024 - 15:35
» [ SKETCHUP composants dynamiques ] Formule IF
par Samuel MATHIEU Jeu 7 Nov 2024 - 21:12
» [ Challenge 2024] cHallenge archjtexture exterieur ou paysagiste-vick-sketchup-enscape
par vick Jeu 7 Nov 2024 - 10:23
» [ SKETCHUP vray ]
par tenrev Mar 5 Nov 2024 - 21:19
» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste- Gaspard Hauser - Sketchup - D5 render
par tenrev Mar 5 Nov 2024 - 10:22
» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - JDD - SketchUp - Enscape
par tenrev Mar 5 Nov 2024 - 10:10
» [ ARCHICAD ] Murs paramétriques
par Coulou Lun 28 Oct 2024 - 10:28
» [ SKETCHUP généralité ] Aide pour SKP 2017
par PEGASE Sam 26 Oct 2024 - 18:36
» [ ARCHICAD ] Ajouter du lambris sur un mur
par Coulou Jeu 24 Oct 2024 - 10:43
» [ SKETCHUP généralité ] 1 Citrouille à imprimer pour Halloween
par jerryvento Jeu 24 Oct 2024 - 8:13
» [ SKETCHUP tutos ] 1 Citrouille à imprimer pour Halloween
par jerryvento Jeu 24 Oct 2024 - 8:11
» [ D5_RENDER] Petit exemple "hors sujet" ... D5
par Gaspard Hauser Mar 22 Oct 2024 - 19:59
» [ MATOS INFORM. ] [WINDOWS] Miniatures de prévisualisation pour les fichiers de modèle 3D au format .OBJ, .FBX, .STL, .3DS et +
par Gaspard Hauser Mar 22 Oct 2024 - 19:49
» [ SKETCHUP Layout ] Symboles Électriques sur Layout
par JDD Jeu 17 Oct 2024 - 9:44
» [ ARCHICAD ] gardes corps et profils complexe ?
par Christophe Fortineau Lun 14 Oct 2024 - 12:10
» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - allansens - cinema 4D
par Allansens Sam 12 Oct 2024 - 13:53
» [ ARTLANTIS ] Ca donne envie !
par Gaspard Hauser Jeu 10 Oct 2024 - 10:00
» [ TWINMOTION ] Unreal Engine déménage sur Fab - DataSmith & Archicad
par Coulou Jeu 10 Oct 2024 - 9:03
» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - AK40Cess - Archicad-Twinmotion
par Coulou Mar 8 Oct 2024 - 11:53
» [ TWINMOTION ] Unreal Engine déménage sur Fab - Assets de Megascan
par JDD Lun 7 Oct 2024 - 21:52
» [ CHALLENGE ARCHITECTURE EXTERIEURE OU PAYSAGISTE ] Démarrage du challenge 2024 - les régles
par tenrev Jeu 3 Oct 2024 - 14:58
» [ ARCHICAD ] Cotation d'ouverture sans hauteur
par Titou Jeu 3 Oct 2024 - 11:21
formulaire/diaporama
chaine sketchup.tv
Serveur Discord
[SKETCHUP composants dynamiques] récupérer date paramètre ombre
Page 3 sur 4 • Partagez
Page 3 sur 4 • 1, 2, 3, 4
simjoubert a écrit:Moi dans les préférences de SketchUp CTRL + F4 plug in mettre à jour saison et CTRL + F5 Édition composants dynamique redraw
idem pour moi , j'ai créer les raccourcis , ca fonctionne bien
sinon tu as modifié le plugin pour mettre à jour l'heure ?
à plus
-------------------------------------------------------------------------------------------------------------------------
je ne sais pas grand chose , mais le peu que je sache , je le partage/Salut Invité merci de consulter mon profil/PC fixe Rizen 9 3950 cg RTX3080-64 go de ram DDssd 1To/1 PC portable Lenovo 16'' w11 i7 32go-CG RTX3070 8go/1casque meta Quest 3/1 casque VR Occulus Rift /1 PC portable Dell sous Linux Ubuntu-1 pc portable HP sous chromebook/Raspberry Pi - Arduino / Modélisation :Sketchup-Rhino-Pconplanner-Rendu:Enscape-Keyshot-Unreal Engine-Twinmotion-Autres:Photoshop-Indesign-After Effect-Première pro-Intelligence artificielle -Chatgpt+-Midjourney-Suno-Elevenlabs-Canva
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
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)
Et plage horaire éteint entre 1h et 6h du matin ( pour les économies d'énergie)
-------------------------------------------------------------------------------------------------------------------------
"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
J ai hâte de voir ça
-------------------------------------------------------------------------------------------------------------------------
je ne sais pas grand chose , mais le peu que je sache , je le partage/Salut Invité merci de consulter mon profil/PC fixe Rizen 9 3950 cg RTX3080-64 go de ram DDssd 1To/1 PC portable Lenovo 16'' w11 i7 32go-CG RTX3070 8go/1casque meta Quest 3/1 casque VR Occulus Rift /1 PC portable Dell sous Linux Ubuntu-1 pc portable HP sous chromebook/Raspberry Pi - Arduino / Modélisation :Sketchup-Rhino-Pconplanner-Rendu:Enscape-Keyshot-Unreal Engine-Twinmotion-Autres:Photoshop-Indesign-After Effect-Première pro-Intelligence artificielle -Chatgpt+-Midjourney-Suno-Elevenlabs-Canva
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
Qu'en dites vous ?
Simon
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
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 ?
Et pour le composant dynamique spot , il te sert à quoi ?
Tu fais du rendu dans sketchup ?
Peux tu donner quelques explications ?
-------------------------------------------------------------------------------------------------------------------------
je ne sais pas grand chose , mais le peu que je sache , je le partage/Salut Invité merci de consulter mon profil/PC fixe Rizen 9 3950 cg RTX3080-64 go de ram DDssd 1To/1 PC portable Lenovo 16'' w11 i7 32go-CG RTX3070 8go/1casque meta Quest 3/1 casque VR Occulus Rift /1 PC portable Dell sous Linux Ubuntu-1 pc portable HP sous chromebook/Raspberry Pi - Arduino / Modélisation :Sketchup-Rhino-Pconplanner-Rendu:Enscape-Keyshot-Unreal Engine-Twinmotion-Autres:Photoshop-Indesign-After Effect-Première pro-Intelligence artificielle -Chatgpt+-Midjourney-Suno-Elevenlabs-Canva
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
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
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
En tout cas je suis content que mon retour sur le forum ai permi de relancer le sujet et de trouver une solution, c est vraiment cool
-------------------------------------------------------------------------------------------------------------------------
je ne sais pas grand chose , mais le peu que je sache , je le partage/Salut Invité merci de consulter mon profil/PC fixe Rizen 9 3950 cg RTX3080-64 go de ram DDssd 1To/1 PC portable Lenovo 16'' w11 i7 32go-CG RTX3070 8go/1casque meta Quest 3/1 casque VR Occulus Rift /1 PC portable Dell sous Linux Ubuntu-1 pc portable HP sous chromebook/Raspberry Pi - Arduino / Modélisation :Sketchup-Rhino-Pconplanner-Rendu:Enscape-Keyshot-Unreal Engine-Twinmotion-Autres:Photoshop-Indesign-After Effect-Première pro-Intelligence artificielle -Chatgpt+-Midjourney-Suno-Elevenlabs-Canva
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
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
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
à plus
-------------------------------------------------------------------------------------------------------------------------
je ne sais pas grand chose , mais le peu que je sache , je le partage/Salut Invité merci de consulter mon profil/PC fixe Rizen 9 3950 cg RTX3080-64 go de ram DDssd 1To/1 PC portable Lenovo 16'' w11 i7 32go-CG RTX3070 8go/1casque meta Quest 3/1 casque VR Occulus Rift /1 PC portable Dell sous Linux Ubuntu-1 pc portable HP sous chromebook/Raspberry Pi - Arduino / Modélisation :Sketchup-Rhino-Pconplanner-Rendu:Enscape-Keyshot-Unreal Engine-Twinmotion-Autres:Photoshop-Indesign-After Effect-Première pro-Intelligence artificielle -Chatgpt+-Midjourney-Suno-Elevenlabs-Canva
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
c'est ici
je vais essayer de corriger à l'occasion les liens morts et d'en ajouter d'autres
à plus
-------------------------------------------------------------------------------------------------------------------------
je ne sais pas grand chose , mais le peu que je sache , je le partage/Salut Invité merci de consulter mon profil/PC fixe Rizen 9 3950 cg RTX3080-64 go de ram DDssd 1To/1 PC portable Lenovo 16'' w11 i7 32go-CG RTX3070 8go/1casque meta Quest 3/1 casque VR Occulus Rift /1 PC portable Dell sous Linux Ubuntu-1 pc portable HP sous chromebook/Raspberry Pi - Arduino / Modélisation :Sketchup-Rhino-Pconplanner-Rendu:Enscape-Keyshot-Unreal Engine-Twinmotion-Autres:Photoshop-Indesign-After Effect-Première pro-Intelligence artificielle -Chatgpt+-Midjourney-Suno-Elevenlabs-Canva
je met en résolu ça n'empêche pas de continuer le fil
-------------------------------------------------------------------------------------------------------------------------
je ne sais pas grand chose , mais le peu que je sache , je le partage/Salut Invité merci de consulter mon profil/PC fixe Rizen 9 3950 cg RTX3080-64 go de ram DDssd 1To/1 PC portable Lenovo 16'' w11 i7 32go-CG RTX3070 8go/1casque meta Quest 3/1 casque VR Occulus Rift /1 PC portable Dell sous Linux Ubuntu-1 pc portable HP sous chromebook/Raspberry Pi - Arduino / Modélisation :Sketchup-Rhino-Pconplanner-Rendu:Enscape-Keyshot-Unreal Engine-Twinmotion-Autres:Photoshop-Indesign-After Effect-Première pro-Intelligence artificielle -Chatgpt+-Midjourney-Suno-Elevenlabs-Canva
hello
est ce que tu as avancé sur tes composants dynamiques ?
à plus
est ce que tu as avancé sur tes composants dynamiques ?
à plus
-------------------------------------------------------------------------------------------------------------------------
je ne sais pas grand chose , mais le peu que je sache , je le partage/Salut Invité merci de consulter mon profil/PC fixe Rizen 9 3950 cg RTX3080-64 go de ram DDssd 1To/1 PC portable Lenovo 16'' w11 i7 32go-CG RTX3070 8go/1casque meta Quest 3/1 casque VR Occulus Rift /1 PC portable Dell sous Linux Ubuntu-1 pc portable HP sous chromebook/Raspberry Pi - Arduino / Modélisation :Sketchup-Rhino-Pconplanner-Rendu:Enscape-Keyshot-Unreal Engine-Twinmotion-Autres:Photoshop-Indesign-After Effect-Première pro-Intelligence artificielle -Chatgpt+-Midjourney-Suno-Elevenlabs-Canva
non j'ai pas avancé comme je le voulais!
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 !
bonne soirée
Simon
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 !
bonne soirée
Simon
En attendant visite de mon prochain chantier !
Image de mon devis "aménagement jardinet entrée de maison."
Existant:
Projet:
Image de mon devis "aménagement jardinet entrée de maison."
Existant:
Projet:
C est super bravo
-------------------------------------------------------------------------------------------------------------------------
je ne sais pas grand chose , mais le peu que je sache , je le partage/Salut Invité merci de consulter mon profil/PC fixe Rizen 9 3950 cg RTX3080-64 go de ram DDssd 1To/1 PC portable Lenovo 16'' w11 i7 32go-CG RTX3070 8go/1casque meta Quest 3/1 casque VR Occulus Rift /1 PC portable Dell sous Linux Ubuntu-1 pc portable HP sous chromebook/Raspberry Pi - Arduino / Modélisation :Sketchup-Rhino-Pconplanner-Rendu:Enscape-Keyshot-Unreal Engine-Twinmotion-Autres:Photoshop-Indesign-After Effect-Première pro-Intelligence artificielle -Chatgpt+-Midjourney-Suno-Elevenlabs-Canva
C'est la porte du garage la façade la mieux exposée!
-------------------------------------------------------------------------------------------------------------------------
Petit site Galerie
Est beau ce qui plaît sans concept!
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
Simon
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
Simon
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+
j'ai pour ma part pas encore trop compris l'interaction entre les CD et ruby et pas pris suffisamment de temps pour essayer de bien comprendre
tu as essayé sur le site Anglais ?
a+
-------------------------------------------------------------------------------------------------------------------------
je ne sais pas grand chose , mais le peu que je sache , je le partage/Salut Invité merci de consulter mon profil/PC fixe Rizen 9 3950 cg RTX3080-64 go de ram DDssd 1To/1 PC portable Lenovo 16'' w11 i7 32go-CG RTX3070 8go/1casque meta Quest 3/1 casque VR Occulus Rift /1 PC portable Dell sous Linux Ubuntu-1 pc portable HP sous chromebook/Raspberry Pi - Arduino / Modélisation :Sketchup-Rhino-Pconplanner-Rendu:Enscape-Keyshot-Unreal Engine-Twinmotion-Autres:Photoshop-Indesign-After Effect-Première pro-Intelligence artificielle -Chatgpt+-Midjourney-Suno-Elevenlabs-Canva
J'avais avancée mais j'ai des erreurs
j'en suis là
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
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
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.
on progresse ?
Simon
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 ?
Simon
- Samuel TalletV.I.P.
- Date d'inscription : 15/04/2018
Nombre de messages : 873
Points : 2465
Age : 38
Localisation : Marseille, France
Emploi : Développeur Web
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 TalletV.I.P.
- Date d'inscription : 15/04/2018
Nombre de messages : 873
Points : 2465
Age : 38
Localisation : Marseille, France
Emploi : Développeur Web
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
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
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
Le code Vegetation.rb
Le code Selectionenfant.rb pas fonctionnel
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 !
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
SImon
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 !
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
SImon
-------------------------------------------------------------------------------------------------------------------------
"Les voici en foule : élargis l'espace de ta tente,
Allonge tes cordages ! Renforce tes piquets !
Déploie pour l'autre la toile qui t'abrite !" ISAÏE 54-2
- Contenu sponsorisé
Page 3 sur 4 • 1, 2, 3, 4
Sujets similaires
» [ SKETCHUP composants dynamiques ] Optimisez votre workflow Sketchup : Composants dynamiques, couleurs et export Excel !
» [ SKETCHUP composants dynamiques ] Test d'un GPTS ou un bot assistant composants dynamiques sous chatgpt4
» [ SKETCHUP composants dynamiques ] un petit short youtube qui montre une utilisation de composants dynamiques
» [ SKETCHUP composants dynamiques ] Mon tuto complet de 6h30 - apprendre les composants dynamiques
» [SKETCHUP composants dynamiques]Tutos pour la création de composants dynamiques
» [ SKETCHUP composants dynamiques ] Test d'un GPTS ou un bot assistant composants dynamiques sous chatgpt4
» [ SKETCHUP composants dynamiques ] un petit short youtube qui montre une utilisation de composants dynamiques
» [ SKETCHUP composants dynamiques ] Mon tuto complet de 6h30 - apprendre les composants dynamiques
» [SKETCHUP composants dynamiques]Tutos pour la création de composants dynamiques
Créer un compte ou se connecter pour répondre
Vous devez être membre pour répondre.
Page 3 sur 4
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum