-
Compteur de contenus
2 160 -
Inscription
-
Dernière visite
-
Jours gagnés
16
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par bryce
-
modification de force8 en forcebylayer
bryce a répondu à un(e) sujet de sechanbask dans Débuter en LISP
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 -
modification de force8 en forcebylayer
bryce a répondu à un(e) sujet de sechanbask dans Débuter en LISP
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) ) -
Bonjour, (getstring) renvoie une chaîne, et une chaîne vide n'est pas égale à nil. Essaie plutôt avec: (if (/= quid "")...
-
Bonsoir, Tu le charges avec APPLOAD, puis tu entres la commande CS. ;)
-
forcer les couleurs selon couleur du calque
bryce a répondu à un(e) sujet de joris25 dans Routines LISP
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) -
Et on continue avec les blocs dynamiques...
bryce a répondu à un(e) sujet de bosozoku dans AutoCAD LT 2011
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 ? -
forcer les couleurs selon couleur du calque
bryce a répondu à un(e) sujet de joris25 dans Routines LISP
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: -
Peut-être avec ce lisp de Lee Mac: http://lee-mac.com/chainsel.html
-
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.
-
Il n'y a pas de version gratuite d'Artlantis il me semble... <_<
-
Bonjour, Tu essaies de les joindre, si ça marche tu as la réponse. ;)
-
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.
-
[Résolu] Recherche variable pour Macro diesel
bryce a répondu à un(e) sujet de Hervé_Th dans Personnalisation, macros, DIESEL
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 ? -
[Résolu] Recherche variable pour Macro diesel
bryce a répondu à un(e) sujet de Hervé_Th dans Personnalisation, macros, DIESEL
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. ;) -
Bonjour, Un logiciel du type de Visio serait sans doute plus adapté. Il en existe même en opensource ou gratuit: Dia, yEd...
-
Bonjour, Pourquoi pas tout simplement (setq calquecommune (strcat "Repérage " commune)) :huh:
-
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:
-
Geler l'affichage lors de l'exécution d'une routines.
bryce a répondu à un(e) sujet de stugeol dans LISP et Visual LISP
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. -
Geler l'affichage lors de l'exécution d'une routines.
bryce a répondu à un(e) sujet de stugeol dans LISP et Visual LISP
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) ) -
Bonjour, Aucun rapport à mon avis... :huh:
-
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.
-
Geler l'affichage lors de l'exécution d'une routines.
bryce a répondu à un(e) sujet de stugeol dans LISP et Visual LISP
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. -
renvoyer la plus grande valeur d'un attribut d'une sélection de bloc
bryce a répondu à un(e) sujet de asptt9 dans AutoCAD 2013
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 ) ) -
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) ) ;)
-
renvoyer la plus grande valeur d'un attribut d'une sélection de bloc
bryce a répondu à un(e) sujet de asptt9 dans AutoCAD 2013
Bonjour, Ou encore plus simplement (if ss1 (...)) ;)
