Aller au contenu

Morgul

Membres
  • Compteur de contenus

    126
  • Inscription

  • Dernière visite

Contact Methods

  • Website URL
    http://http://

Morgul's Achievements

Newbie

Newbie (1/14)

0

Réputation sur la communauté

  1. Morgul

    Valeur dynmique et d'attribut

    Merci Beaucoup Patrick pour ton aide. Je ne comprenais pas l'architecture qu'il fallait en tête du code. Désolé pour mon côté boulet..... Pour ceux que cela intéresse, le code fonctionne correctement désormais : (defun c:InfoBloc (/ doc) (setq doc (vla-get-activedocument (vlax-get-acad-object)) tot 0 ) (vla-startundomark doc) (and (ssget (list (cons 0 "insert"))) (progn (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (foreach prop (vlax-invoke ent 'getdynamicblockproperties) (and (= (vla-get-propertyname prop) "Visibilité1") (setq ValeurExtraite (vlax-get prop 'value)) ) ) (setq att (vlax-invoke ent 'getattributes)) ;(setq ValeurLong (vlax-dump-object (nth 0 att))) (setq ValeurLong (vla-get-textstring (nth 0 att))) (terpri) (princ (strcat "\n...Données extraites :")) ;(princ ent) ;(princ " - ") (princ "\n...Bloc n°") (princ (setq tot (1+ tot))) (princ "\n...") (princ (strcat "\n...Type de Câble.... : " ValeurExtraite)) (princ (strcat "\n...Longueur de Câble : " ValeurLong)) (princ "\n...") ) (vla-delete sel) ) ) (vla-endundomark doc) (princ) ) (c:InfoBloc)
  2. Morgul

    Valeur dynmique et d'attribut

    Hello, oui, c'est ce que je vais faire je vais dans un premier temps inclure les princ dans la boucle. Mais, je n'arrive pas à traiter un bloc puis à passer à l'autre. Je suis vraiment benêt !
  3. Morgul

    Valeur dynmique et d'attribut

    En fait, je pense, que je me suis mal exprimé. Dans tous les blocs que je sélectionne par une fenêtre, je voudrais récupérer les valeurs : [code (progn (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (foreach prop (vlax-invoke ent 'getdynamicblockproperties) (and (= (vla-get-propertyname prop) "Visibilité1") (setq ValeurExtraite (vlax-get prop 'value)) ) ) (setq att (vlax-invoke ent 'getattributes)) (setq ValeurLong (vla-get-textstring (nth 0 att))) ) [/code]
  4. Morgul

    Valeur dynmique et d'attribut

    Désolé je suis un vrai boulet ! :wacko: Je n'y arrive pas malgré tes explications. En fait, normalement, je dois refaire une boucle non ?
  5. Morgul

    Valeur dynmique et d'attribut

    Bonjour Patrick_35, Merci beaucoup pour ta réponse. :D Comme toujours, c'est effectivement beaucoup plus propre après ton passage. Grace à tes conseilles, j'ai modifié mon code qui fonctionne très bien. Par contre comme évoqué, je suis nul en VL donc il n'est peut-être pas beau ? :blink: Maintenant, je me demandais comment faire avec un jeu de sélection ? En effet, je voudrais éviter la sélection bloc par bloc. (defun c:InfoBloc(/ doc) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (prompt "\nCLIQUEz SUR LE BLOC :") (and (ssget (list (cons 0 "insert"))) (progn (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (foreach prop (vlax-invoke ent 'getdynamicblockproperties) (and (= (vla-get-propertyname prop) "Visibilité1") (setq ValeurExtraite (vlax-get prop 'value)) ) ) (setq att (vlax-invoke ent 'getattributes)) ;(setq ValeurLong (vlax-dump-object (nth 0 att))) (setq ValeurLong (vla-get-textstring (nth 0 att))) ) (vla-delete sel) (princ (strcat "\n...Données extraites :")) (princ "\n...") (princ (strcat "\n...Type de Câble.... : " ValeurExtraite)) (princ (strcat "\n...Longueur de Câble : " ValeurLong)) (princ "\n...") ) ) (vla-endundomark doc) (princ) ) (c:InfoBloc)
  6. Bonsoir à tous, Je ne suis vraiment pas fort en Visual LISP, et là je bloc un peu. Mon problème est que j'essaye de récupérer différentes valeurs d'un bloc dynamique. Grace au site, j'ai réussi à récupérer et modifier un code pour récupérer le paramètre de visibilité. Mais, je ne sais pas comment faire pour dans le même temps récupérer la valeurs des attributs "LG." "A" et "B" du même bloc. Pourriez-vous me venir en aide s'il vous plait ? Merci d'avance. (defun c:InfoBloc (/ ValeureProp ValeureExtraite) (prompt "\nCLIQUEz SUR LE BLOC :") (setq bl1 (ssget (list (cons 0 "insert"))));; on sélectionne un bloc (foreach prop (vlax-invoke (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname bl1 0))))) 'getdynamicblockproperties) ;;; on regarde toutes les propriétées dynamiques (if (= (vla-get-propertyname prop) "Visibilité1") ;; si une propriétée dynamique "Visibilité1" (PROGN (setq ValeureProp (vla-get-value prop));; on regarde pour info comment c est agencé (setq ValeureExtraite (vlax-variant-value (vla-get-value prop)));; on extrait la valeur de la propriété ) ) ) ; =================================================================================================== ; Affichage des données extraites ; =================================================================================================== (princ (strcat "\n...Données extraites :")) (princ "\n...") (princ (strcat "\n...Type de Câble.... : " ValeureExtraite)) (princ "\n...") ) (c:InfoBloc)
  7. Bonjour à Tous, Alors, voilà, tout d'abord, je voulais remercier Tramber qui avait créé le super Lisp Tabloblo qui sera le point de départ de mes demandes. En effet ce lisp est super, mais comme beaucoup aujourd'hui, j'utilise beaucoup des blocs dynamiques avec paramètre de visibilité. Ce lisp fonctionne très bien, mais il ne prend pas en compte le paramètre de visibilité appliqué sur les blocs, il ne reprend que la valeur par défaut du bloc. Ensuite, comme je travail entre autre sur des câbles électriques, j'aimerai rajouté une colonne, longueur totale. En rajoutant un if quelque part qui pourrait voir et lire la valeur de l'attribut longueur présent ou pas dans l'ensemble des blocs sélectionnés. Je ne sais pas trop comment il faudrait faire pour modifier le code. Pouvez-vous m'aider ? Je vous remercie par avance. Voici le code d'origine de Tramber : ;; Tabloblo (Tramber) ;; Crée un tableau qui liste les blocs insérés (sélectionnés ou toute la collection) (defun c:tabloblo (/ libloc liidbloc ss col liref ptins tableVL cont row lassoc) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) ) (prompt "\nSélectionnez les blocs à lister ou ") (or (setq ss (ssget '((0 . "INSERT")))) (setq ss (ssget "_X" '((0 . "INSERT"))) col T)) (if ss (progn (vlax-for x (setq ss (vla-get-ActiveSelectionSet *acdoc*) ) (or (vlax-property-available-p x 'Path) (setq liref (cons (if (vlax-property-available-p x 'EffectiveName) (vla-get-EffectiveName x) (vla-get-Name x) ) liref ) ) ) ) (vla-delete ss) ) ) (if col (vlax-for i (vla-get-Blocks *acdoc*) (if (and (not (wcmatch (setq name (vla-get-Name i)) "`**,*|*")) (= :vlax-false (vla-get-IsXref i)) ) (setq libloc (append libloc (list (vla-get-name i))) liidbloc (append liidbloc (list (vla-get-ObjectID i))) ) ) ) (setq libloc (remove_doubles liref) liidbloc (mapcar '(lambda (x) (vla-get-ObjectID (vla-item (vla-get-Blocks *acdoc*) x ) ) ) libloc ) ) ) (initget 1) (setq ptins (trans (getpoint "\nPoint d'insertion: ") 1 0)) (setq tableVL (vla-addtable (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)) ) (vlax-3d-point ptins) (+ 2 (length libloc)) 3 20 ; Hauteur cellule 80 ; Largeur cellule ) ) (vla-put-VertCellMargin tableVL 4.0) ; Marge verticale (vla-put-TitleSuppressed tableVL :vlax-false) (vla-put-HeaderSuppressed tableVL :vlax-false) (vla-setText tableVL 0 0 "Blocs") ; Titre (vla-setText tableVL 1 0 "Nom") ; Titre colonne 1 (vla-setText tableVL 1 1 "Nombre") ; Titre colonne 2 (vla-setText tableVL 1 2 "Symbole") ; Titre colonne 3 (setq cont -1 row 1 ) (setq lassoc (cond((if(setq f(FINDFILE "Table blocs.txt"))(setq f(open f "r"))); ATTENTION, fichier texte à mettre dans le dossier du fichier ou dans un dossier de support (while(setq lignt (read-line f)) (setq lignt(vl-remove-if '(lambda(x)(= x ""))(gc:str2lst lignt"\t")) lis(cons lignt lis)) ) ) ) ) (if f(close f)) (repeat (- (vla-get-Rows tableVL) 2) (setq nouvn(nth (setq cont (1+ cont)) libloc)) (vla-settext tableVL (setq row (1+ row)) 0 (cond((trouvnom nouvn))(T nouvn)) ) (vla-settext tableVL row 1 (length (vl-remove-if-not '(lambda (n) (= n (nth cont libloc))) liref ) ) ) (vla-SetBlockTableRecordId tableVL row 2 (nth cont liidbloc) :vlax-true ) (vla-setcellalignment tableVL row 0 5) (vla-setcellalignment tableVL row 1 5) ) (princ) ) ;;; REMOVE_DOUBLES - Suprime tous les doublons d'une liste (defun REMOVE_DOUBLES (lst) (if lst (cons (car lst) (REMOVE_DOUBLES (vl-remove (car lst) lst))) ) ) (defun trouvnom(ancn / result); attention lassoc est modifié en global dans c:tabloblo (if(setq result(cadar(vl-remove-if-not '(lambda(x)(=(car x)ancn))lassoc))) (setq lassoc(vl-remove-if '(lambda(x)(=(car x)ancn))lassoc)) ) result ) ;; gc:str2lst ;; Transforme une chaine avec séparateur en liste de chaines ;; ;; Arguments ;; str : la chaine à transformer en liste ;; sep : le séparateur (defun gc:str2lst (str sep / len lst) (setq len (strlen sep)) (while (setq pos (vl-string-search sep str)) (setq lst (cons (substr str 1 pos) lst) str (substr str (+ len pos 1)) ) ) (reverse (cons (substr str 1 pos) lst)) )
  8. Merci pour ta réponse. Mais c'est exactement ce que j'ai fait, mais ça n'est là le problème, latt400 est bien vidé. Je pense qu'il faut que je vide "present", mais je ne sais pas comment.
  9. Bonjour, J'ai créé un lisp d'impression dans lequel j'ai une boite de dialogue qui génère la liste de présentations. Mais à chaque fois que je relance ce lisp, la liste double, triple, etc. Je ne sais pas comment la vider. Voici l'expression de mon lisp : ... ... (start_list "present") (mapcar '(lambda (x) (add_list (strcat (car x) "_" (cadr x)))) latt400) (end_list) ... ... Pourtant, je vide bien latt400 à la fermeture de mon lisp. Merci pour votre aide.
  10. Super ! Merci.
  11. Bonjour, J'ai créé un lisp d'impression qui reconnait les diférents formats de mes présentation, mais je voudrais que lorsqu'il ne reconnait pas qu'il lance la commande _plot normalement avec sa boite de dialogue et non en ligne de commande. Comment peut-on faire ? J'ai essayé par l'intermédiaire d'un fichier script, mais cela ne fonctionne pas. Merci.
  12. C'est juste pour tout avoir à porté de main ...
  13. Morgul

    Ouvrir un gabarit

    Merci pour vos réponses. En fait, j'utilise beaucoup les palettes d'outils et je voudrais pouvoir ouvrir un fichier gabarit à partir de celle-ci. Comme on ne peut pas le faire directement, je voudrais créer une expression lisp pour pouvoir le faire. Il faut donc que ce lisp fasse : - une sauvegarde du fichier encours - ouvrir le fichier gabarit Merci encore pour votre aide.
  14. Bonjour, J'utilise beaucoup la palette d'outil, et je voudrais pouvoir ouvrir un fichier gabarit avec. Je n'y arrive pas, peut-être dois-je créer un lisp ? Merci pour votre aide.
  15. Bonjour, Je n'arrive pas à ouvrir un gabarit (dwt) avec la commande "ouvrir". Avez-vous une idée ? Merci.
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité