Composants Dynamique Liaison
-
@wood_galaxy said:
Salut Silic,
Tu peux déjà faire Fichier/Générer un rapport (html ou csv)
Tu obtiendra les attributs de toutes les entités du model.Et tu trouveras le code source ruby de cette fonctionnalité à cette page :
https://developers.google.com/sketchup/docs/tutorial_attrreportingEn réalité il y plus de fonctionnalité dans Générer un rapport que dans le plugin Attribute Reporting mais ce dernier étant divulgué, on peut donc se l'adapter et comprendre le fonctionnement.
Comment fait on pour générer un rapport avec le système metrique ? chez moi ça sort en inch pouce ou je ne sais quoi, mais ça correspond pas à mes dimensions
-
@silic said:
Comment fait on pour générer un rapport avec le système metrique ? chez moi ça sort en inch pouce ou je ne sais quoi, mais ça correspond pas à mes dimensions
Bonjour,
Cela n'est pas possible de le sortir en métrique.
http://www.arch-image.com/vos-questions-sur-sketchup/bonjourje-construis-des-ossatures-bois-et-jutilise-sketchup-pro-8-pour-les-dessiner-et-realiser-mes-plans-dexecution-je-voudrais-editer-un-rapport-pour-mes-bons-de-commande-bois-bien-que-je-t/Reste à le transformer. Pour ma part j'exporte en HTML puis avec libreoffice
(https://fr.libreoffice.org/telecharger/#script_telechargement )
Suivant les versions le comportement peut changer...Une feuille de calcul (Tableur), insertion-Lien vers des données externes.
Dans la première boite on renseigne le fichier à prendre et on peut faire une mise à jour automatique (60s par défaut).
La seconde est intéressante :
Renseigner la langue (anglais) puis cocher "Détecter les nombres spéciaux".Voili voilà, la table HTML est bien lu au format Fr. Le point décimal est bien remplacé par une virgule, on peut manipuler ces chiffres.
Reste à résoudre les unités inch ...
-
Salut,
En ruby il faut transformer la valeur en "float" avec .to_f puis la convertir en cm par exemple avec .to_cm
Par exemple :
model = Sketchup.active_model
entite_0 = model.entities[0]
entite_0_lenx = entitie_0.definition.get_attribute "dynamic_attributes", "LenX"
entite_0_lenx_cm = entite_0_lenx.to_f.to_cmBon courage !
-
@wood_galaxy said:
Salut,
En ruby il faut (...)Ha ben oui, mais en ruby sur l'ongle alors!!!! faut connaitre çà par coeur pour s'en sortir...
@wood_galaxy said:
Bon courage !
Ben mon coté fainéant me fait pencher plutôt vers le tableur...
Cordialement
Patrick -
Au fait suite à mes questions pour répondre à la question je viens de me rendre compte que j'avais déjà répondu à la question
Dans le post 361738
Mémoire de poisson !!!
En résumé faire une liaison de données externes (c'est bien pratique pour la mise à jour des quantités à l'avancement), transformer le texte dans le format en substituant à l'aide de la fonction substitue()le point par une virgule et en déclarant le texte comme un nombre à l'aide de la fonction cnum() puis en multipliant ou divisant la valeur US pour la transformer en valeur FR à savoir x0,00001638764 pour les volumes et x25,4 pour les vecteurs.
Cordialement
Patrick -
Donc je termine mon monologue....
En partant du principe que dans la feuille1 du tableur je rapatrie les données exportées par SU, que je renomme cette feuille DATA et que dans la feuille2 je regarde ce qui se passe dans la feuille DATA je pose la formule suivante dans la première cellule :
=SI(ESTERREUR(CNUM(SUBSTITUE(DATA.G3;".";",")))=1;DATA.G3;CNUM(SUBSTITUE(DATA.G3;".";","))*0,00001638764)
En clair cela veut dire que si la substitution du point par la virgule de la donnée transformée en nombre (cnum) produit une erreur c'est que c'est un texte donc j'affiche la donné (DATA.G3) sans la transformer, sinon (c'est que c'est une valeur) je la transforme donnée numérique et je la divise (ou je la multiplie).
Je multiplie par 0,00001638764 pour les volume et divise par 2,54 pour les autres valeurs.
Cela donne ceci:
Voili voilà.
Après on peut traiter ces données et les filtrer par matériaux pour faire des sous-totaux mais comme dirait le petit Titus c'est une autre histoire !
Cordialement
Patrick -
C'esth yper risqué de nommer une feuille simplement DATA!
Il y en a toujours une qui traine dans un coin et qui peut être prise par erreur! -
@unknownuser said:
C'esth yper risqué de nommer une feuille simplement DATA!
Il y en a toujours une qui traine dans un coin et qui peut être prise par erreur!Ben j'avais bien pensé à patati et patata mais c'est trop long à écrire...
-
Merci pour l'explication en mode tableur.
Moi j'ai un problème pour extraire la valeur de RotY de mon composant :
la commande : entity.definition.get_attribute "dynamic_attributes", "roty"
renvoie : 0
de même la commande : entity.get_attribute( "dynamic_attributes", "roty" )
me renvoie 0C'est bizar que j'obtienne les autres valeur mais pas les rotations...
Comment on obtient cette valeur d'attribut ? -
Rah mais allez euh !
Moi je veux du RUBY !
-
Bon c'est vrai que je suis un peu hors sujet...
Allez, une petite couche de plus... et je rectifie une bétise sur la multiplication par 2.54=SI(T(CNUM(SUBSTITUE(DATA.A2;".";","))*2)="";CNUM(SUBSTITUE(DATA.A2;".";","))*2,54;SI(ESTERREUR(T(CNUM(SUBSTITUE(DATA.A2;".";","))*2))=1;DATA.A2))
Là je vérifie la présence d'un texte dans la cellule A2 de la feuille DATA avec la fonction T(). Cette fonction répond rien ("") si le contenu est autre chose qu'un texte.
Donc je transforme le texte en valeur avec SUBSTITUE et CNUM et je la multiplie par 2 histoire de confirmer la présence d'une valeur et je demande à T de vérifier le résultat.Si c'est égale à rien, c'est que c'est un nombre alors je le (divise) multiplie par 2.54 pour transformer les pouces en cm sinon je refais un test pour confirmer la nature Texte de la cellule A2 alors je l'affiche.
Cela fonctionne bien et cette formule incrémentée dans toutes les cellules prend bien en compte que les textes rapatriés dans la feuille DATA sont soit des textes soit des chiffres à transformer en nombre. La seule formule différente est celle de la colonne des volumes où il faut multiplier par 0,00001638764 pour ramener la valeur en M3.
On pourrait faire une formule qui détecte le type de valeur (linéaire ou cubage) mais là j'ai un coup de pompe. Le fainéant remet çà à plus tard !
Cordialement
Patrick
Advertisement