Aller au contenu

bryce

Membres
  • Compteur de contenus

    2 160
  • Inscription

  • Dernière visite

  • Jours gagnés

    16

Tout ce qui a été posté par bryce

  1. Bonjour, Tu as bien sûr raison. Je n'y ai pas prêté attention, car manifestement ça fonctionne sans les guillemets quand le nom du calque est un nombre. :mellow: C'est bien mieux en effet. PS2 : j'ai tout passé en 'vlax-for', je trouvais inélégant ce mélange de 'vlax-map' et 'vlax-for'. Gnagnagna... :P
  2. Bonjour, L'espace Objet et les espaces Papier sont eux-même des blocs, il faut donc tester le nom du bloc en cours de modification pour les ignorer: (defun c:FORCEBYLAYER (/ doc) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vlax-map-collection (vla-get-blocks doc) '(lambda (x) (setq bname (strcase (vla-get-Name x))) (if (not (or (= bname "*MODEL_SPACE") (wcmatch bname "\*PAPER_SPACE*"))) (progn (vlax-for item x ; Mettre toutes les entités en couleur DUCALQUE (vla-put-color item 256) ; Mettre toutes les entités du bloc sur le calque 0 (vla-put-layer item 0) ) ) ) ) ) (vla-regen doc acAllViewports) (princ) )
  3. Bonjour, (getstring) renvoie une chaîne, et une chaîne vide n'est pas égale à nil. Essaie plutôt avec: (if (/= quid "")...
  4. bryce

    Visualisation polyligne

    Bonsoir, Tu le charges avec APPLOAD, puis tu entres la commande CS. ;)
  5. Voici une version qui combine couleur et/ou type de ligne et/ou épaisseur : (defun c:FPROP ( / acdoc layers *error* ss propslist i counter lay ) ; Force les propriétés des objets sélectionnés (couleur, type de ligne, épaisseur de tracé) selon les propriétés de leur calque. ; Bryce, 03/2013 (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) layers (vla-get-Layers acdoc) ) (defun *error* (msg) (vla-EndUndoMark acdoc) (and msg (or (member (strcase msg) '("FUNCTION CANCELLED" "QUIT / EXIT ABORT" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON")) (princ (strcat "\nErreur : " msg)) ) ) (if ss (vla-Delete ss)) (princ) ) (vla-StartUndoMark acdoc) (or (setq ss (cadr (ssgetfirst))) (setq ss (ssget "_:L")) ) (if ss (mapcar '(lambda ( prop str ) (initget "Oui Non") (if (= (getkword (strcat "Forcer " str " des objets ? [Oui/Non] <N> : ")) "Oui") (setq propslist (cons prop propslist)) ) ) (list 'TrueColor 'Linetype 'Lineweight) (list "la couleur" "le type de ligne" "l'épaisseur de tracé") ) ) (if (and ss propslist) (progn (setq ss (vla-get-ActiveSelectionSet acdoc) i 0 counter 0 ) (vlax-for obj ss (setq lay (vla-Item layers (vla-get-Layer obj)) ) (mapcar '(lambda (prop) (vlax-put-property obj prop (vlax-get-property lay prop)) ) propslist ) (setq counter (1+ counter)) (setq i (1+ i)) ) (princ (strcat "\n" (itoa counter) " objets modifiés !")) (princ) ) (princ "\nAucun objet modifié !") );if selection (*error* nil) ) (princ "\nCommande à utiliser: FPROP") (princ)
  6. Bonjour, J'ai ouvert ton fichier, inséré le bloc plusieurs fois, enregistré, fermé, réouvert, et pas de souci... :mellow: Seuls les blocs déjà présents affichent ####. Ton AutoCAD est à jour ?
  7. Bonjour, Je ne pensais pas qu'un simple crustacé pouvait avoir une aussi bonne mémoire ! :P En fait j'avais effectivement déjà posté un lisp de ce genre, mais pour les types de ligne: (defun c:FORCETP (/ acdoc layers *error* lay ss obj layobj i counter) ; Attribue à chaque objet sélectionné le type de ligne du calque de l'objet. (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) layers (vla-get-Layers acdoc) ) (defun *error* (msg) (vla-endundomark acdoc) (and msg (or (member (strcase msg) '("FUNCTION CANCELLED" "QUIT / EXIT ABORT" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON")) (princ (strcat "\nErreur : " msg)) ) ) (princ) ) (vla-startundomark acdoc) (if (or (setq ss (cadr (ssgetfirst))) (setq ss (ssget)) ) (progn (setq i 0 counter 0) (repeat (sslength ss) (setq obj (vlax-ename->vla-object (ssname ss i)) layobj (vla-item layers (vla-get-layer obj)) ) (if (= (vla-get-lock layobj) :vlax-false) (progn (vla-put-linetype obj (vla-get-linetype layobj)) (setq counter (1+ counter)) ) ) (setq i (1+ i)) ) (princ (strcat "\n" (itoa counter) " objets modifiés !")) (princ) ) );if selection (*error* nil) ) (princ "\nCommande à utiliser: FORCETP") (princ) Il suffit de l'adapter un peu pour faire la même chose avec la couleur: (defun c:FORCECOLOR (/ acdoc layers *error* lay ss obj layobj i counter) ; Attribue à chaque objet sélectionné la couleur du calque de l'objet. (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) layers (vla-get-Layers acdoc) ) (defun *error* (msg) (vla-endundomark acdoc) (and msg (or (member (strcase msg) '("FUNCTION CANCELLED" "QUIT / EXIT ABORT" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON")) (princ (strcat "\nErreur : " msg)) ) ) (princ) ) (vla-startundomark acdoc) (if (or (setq ss (cadr (ssgetfirst))) (setq ss (ssget)) ) (progn (setq i 0 counter 0) (repeat (sslength ss) (setq obj (vlax-ename->vla-object (ssname ss i)) layobj (vla-item layers (vla-get-layer obj)) ) (if (= (vla-get-lock layobj) :vlax-false) (progn (vla-put-color obj (vla-get-color layobj)) (setq counter (1+ counter)) ) ) (setq i (1+ i)) ) (princ (strcat "\n" (itoa counter) " objets modifiés !")) (princ) ) );if selection (*error* nil) ) (princ "\nCommande à utiliser: FORCECOLOR") (princ) J'espère juste qu'il y a une très bonne raison pour faire ce genre de choses... :unsure:
  8. bryce

    Visualisation polyligne

    Peut-être avec ce lisp de Lee Mac: http://lee-mac.com/chainsel.html
  9. bryce

    bloc avec attributs

    Bonjour, Il suffit de rajouter un * devant le nom du bloc. ;) ^C^C_-insert;*nomdubloc;... Sinon, si la valeur à soustraire est constante dans le dessin, on peut la rajouter en tant que propriété personnalisée, et l'utiliser ensuite dans le champ formule. Autre solution: dans l'éditeur de bloc créer un paramètre pour la valeur à soustraire, et l'utiliser ensuite dans le champ formule.
  10. bryce

    le droit ou le gauche

    Il n'y a pas de version gratuite d'Artlantis il me semble... <_<
  11. bryce

    Visualisation polyligne

    Bonjour, Tu essaies de les joindre, si ça marche tu as la réponse. ;)
  12. bryce

    le droit ou le gauche

    Bonjour, Ça dépend de la licence d'utilisation du logiciel en question. Par exemple: - l'utilisation pro de la version gratuite de SketchUp n'est normalement pas autorisée - DraftSight lui est gratuit même pour une utilisation pro.
  13. Oups, c'est moi qui raconte une bêtise, j'ai mélangé les variables... Ou alors dans la macro, revenir au SCG, faire le déplacement en donnant comme point d'arrivée les coordonnées SCG de ton 0,0 SCU, puis revenir au SCU précédent ?
  14. Bonjour, Ces variables te donnent les coordonnées des coins de la zone affichée à l'écran. Il faut donc faire un zoom étendu avant de récupérer leurs valeurs. ;)
  15. bryce

    Réalisation de schémas

    Bonjour, Un logiciel du type de Visio serait sans doute plus adapté. Il en existe même en opensource ou gratuit: Dia, yEd...
  16. Bonjour, Pourquoi pas tout simplement (setq calquecommune (strcat "Repérage " commune)) :huh:
  17. Bonjour, Tu peux utiliser l'ancienne commande DISTANCE (alias DI) au lieu de MESURERGEOM. Pour la répétition des macros avec le clic droit, aucune idée. Effectivement ça fonctionnait dans les anciennes versions... :angry:
  18. C'est bien ça: la coordonnée z est un nombre réel (real), mais les valeurs d'attributs sont des chaînes de caractères (string). Il faut donc convertir le nombre réel en chaîne: Real TO String -> rtos, en choisissant la notation (2 = décimale) et la précision d'arrondi (2 chiffres après la virgule). ;) Sinon, tu obtiendras une erreur.
  19. Bonjour, Pour un bloc avec attribut(s), je pense que c'est nettement plus simple en VL. Ça donnerait quelque chose comme: (setq ms (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)))) (setq bloc (vla-InsertBlock ms (vlax-3D-point x y z) Bname 1.0 1.0 1.0 alpha) (mapcar '(lambda (att) (if (= (vla-get-TagString att) Aname) (vla-put-TextString att (rtos z 2 2)) ) ) (vlax-invoke bloc 'GetAttributes) )
  20. bryce

    SCU qui ne bouge pas

    Bonjour, Aucun rapport à mon avis... :huh:
  21. bryce

    SCU qui ne bouge pas

    Bonjour, Comment changes-tu de vue ? Avec le Cube, via le Ruban, les commandes de fenêtre, la barre d'outils Vue ? Vérifie si UCSORTHO n'est pas à 0.
  22. Bonjour, Il faut écrire un programme en "vrai" Lisp, càd utiliser la fonction (entmake) ou (vla-InsertBlock), et non (command). Cette dernière serait effectivement tout aussi lente qu'un script.
  23. Bonjour, Au lieu de (ssgetfirst), tu peux aussi utiliser (ssget "_I"), qui retourne nil s'il n'y a aucune sélection active: (defun derniernumero (/ ss n numgeoref ent entlist ) (setq numgeoref 0) (if (setq ss (ssget "_I" '((0 . "INSERT")(66 . 1)) ) ) ; sélection des blocs avec attributs dans la sélection active (retourne nil si aucune sélection active) (progn (setq n 0) (repeat (sslength ss) (setq ent (entnext (ssname ss n))) (while (= (cdr (assoc 0 (setq entlist (entget ent)))) "ATTRIB") (if (= (cdr (assoc 2 entlist)) "NUMGEOREF") (setq numgeoref (max numgeoref (atoi (cdr (assoc 1 entlist))))) ) (setq ent (entnext ent)) ) ; while (setq n (1+ n)) ) ; repeat ) ; progn ) ; if ss (setq ss nil numgeoref (1+ numgeoref) ; valeur retournée par la fonction ) )
  24. Bonjour, (defun c:VISVERIF ( / layers nom liste xliste ) (vl-load-com) (setq layers (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))) liste '() xliste '() ) (vlax-for lay layers (if (or (= (vla-get-LayerOn lay) :vlax-false) (= (vla-get-Freeze lay) :vlax-true) ) (if (wcmatch (setq nom (vla-get-Name lay)) "*|*") (setq xliste (cons nom xliste)) (setq liste (cons nom liste)) ) ) ) (if liste (setq liste(cons "\nCalques du dessin:\n" (reverse liste)))) (if xliste (setq xliste(cons "\nCalques des XRefs:\n" (reverse xliste)))) (if (or liste xliste) (progn (princ "\nListe des calques désactivés ou gelés:") (princ "\n--------------------------------------") (mapcar '(lambda (x) (princ (strcat "\n" x))) (append liste xliste )) (princ "\n--------------------------------------") (textpage) ) (princ "\nAucun calque gelé ou désactivé.") ) (princ) ) ;)
  25. Bonjour, Ou encore plus simplement (if ss1 (...)) ;)
×
×
  • 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é