Aller au contenu

scake

Membres
  • Compteur de contenus

    29
  • Inscription

  • Dernière visite

Tout ce qui a été posté par scake

  1. [surligneur]Merci, [/surligneur] Je regarde tout ça de ce pas ...
  2. Bonjour, je souhaiterais lancer un lisp comme Mim de Patrick, mais avec mes préférences enregistrées : du genre, sélectionner toutes les présentations et les mettre sur l'imprimante XXXX , sans avoir à intervenir. Si quelqu'un a une idée ...
  3. scake

    Renommer liste de calques

    Merci beaucoup à tous les deux. J'expérimente tout cela dès ce soir !
  4. scake

    Renommer liste de calques

    Salut Giles et compris pour l'adressage de la prochaine demande. Je ne parvients pas à introduire le filtre "*" dans le "if" (je préfère ne pas avoir à expliquer à chacun des membres de l'agence qu'il faut l'écrire en A ) (defun c:lren2 () (setq A (getstring "Préfixe des calques à changer : ")) (setq B (getstring "Nouveau Préfixe <\u+221e_> : ")) ;; on charge les fonctions Visual LISP (vl-load-com) ;; on parcourt la collection des calques (vlax-for lay (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object) ) ) (setq name (vla-get-Name lay)) ;; si le préfixe correspond, on le change (comment introduire le "*" ?) (if (wcmatch name A) (vla-put-Name lay (strcat B (vl-string-left-trim A name)) ) ) ) ) [Edité le 29/10/2008 par scake]
  5. scake

    Renommer liste de calques

    Ok merci
  6. scake

    Renommer liste de calques

    Je pousse un peu plus loin ... Est-il possible de demander le préfixe à remplacer et ensuite le préfixe qui remplace celui-ci à l'utilisateur ?
  7. scake

    Renommer liste de calques

    Merci pour ta réponse Giles. Cela fonctionne comme un charme. et tout ça à 1h du mat ...
  8. Un petit souci : ;;scake - remplace Préfixe pour les calques sélectionnés ;;Ici "\u+221e", signe infini (defun c:lren () (setq old_layers "AR-*") (setq new_layers "\u+221e_*") (command "_-rename" "_layer" old_layers new_layers) ; Renomme les calques ar - ... en infini-_.. ) L'idée est simplement de remplacer les préfixes de calque "AR" par un signe infini La commande silencieuse n'accepte pas les filtres en "*" avec cette méthode, je suis obligé pour l'instant d'entrer TOUS les noms de calques commençant par AR ! La commande classique (_rename) les accepte et fonctionne à merveille, mais je préfèrerai automatiser ... :casstet: Ce doit être une petite chose, mais je ne trouve pas. Si quelqu'un à une idée, Merci !
  9. L'outil d'autodesk ne convient effectivement pas pour des situations précises (garder les fichiers en Acad2000, le faire directement sur les fichiers en cours), c'est pour cela que ... La méthode est un peu barbare : faire un reset des échelles, puis supprimer les échelles en pied/pouces et les ech inusitées + rajouter les manquantes. Elle fonctionne sur AutoCAD 2008 fr et possède l'avantage d'être plus rapide que les routines de nettoyage glânées sur la toile : ; nettoyer la liste d'échelle dans le dessin courant par scake (defun c:xe (/ cmdecho) (setq cmdecho (getvar "CMDECHO")) (setvar "CMDECHO" 0) (command "_.-SCALELISTEDIT" "_R" "_Y" "s") (command "_.-SCALELISTEDIT" "s" "1:2" "s" "1:4" "s" "1:8" "s" "1:16" "s" "1:30" "s" "1:40" "s" "2:1" "s" "4:1" "s" "8:1" "s" "10:1" "s" "100:1" "q") (command "_.-SCALELISTEDIT" "s" "1/128\" = 1'-0\"" "s" "1/64\" = 1'-0\"" "s" "1/32\" = 1'-0\"" "s" "1/16\" = 1'-0\"" "s" "3/32\" = 1'-0\"" "s" "1/8\" = 1'-0\"" "s" "3/16\" = 1'-0\"" "s" "1/4\" = 1'-0\"" "s" "3/8\" = 1'-0\"" "s" "1/2\" = 1'-0\"" "s" "3/4\" = 1'-0\"" "s" "1\" = 1'-0\"" "s" "1-1/2\" = 1'-0\"" "s" "3\" = 1'-0\"" "s" "6\" = 1'-0\"" "s" "1'-0\" = 1'-0\"" "q") (command "_.-SCALELISTEDIT" "a" "1:200" "1:200" "a" "1:500" "1:500" "a" "1:1000" "1:1000" "a" "1:5000" "1:5000" "q") (setvar "CMDECHO" cmdecho) ) merci[Edité le 27/10/2008 par scake] [Edité le 27/10/2008 par scake]
  10. Bonjour, J'ai commis une petite routine pour nettoyer la liste d'échelle dans le dessin ouvert. Je voudrais étendre le nettoyage aux xref chargées dans le dessin courant. Est-ce possible en lisp?
  11. scake

    \" dans un lisp

    Nickel, ça marche, merci à tous les deux...
  12. scake

    \" dans un lisp

    Comment intégrer une expression avec un guillemet dans un lisp ? exemple qui ne fonctionne pas (et pour cause) : [surligneur] command "_.-SCALELISTEDIT" "s" "1/128" = 1'-0"" "q"[/surligneur]
  13. scake

    Lisps de Patrick_35

    Qu'est-ce que c'est bon... Merci
  14. scake

    Lisps de Patrick_35

    Bonjour à tous. J'utilise régulièrement la routine Ong qui me fait gagner un temps fou. Je me pose simplement une question : est-il possible de propager également l'échelle du tracé quand on utilise la propagation de configuration d'impression ? Chez moi cela remet toutes les présentations "modifiées" à 1:1, rageant...
  15. scake

    Lisps de Patrick_35

    Encore merci Patrick. Cela fonctionne exactement comme je pouvais l'espérer. Pour les bouts de code, c'est avec plaisir. Avec le temps, j'espère passer au plus vite de "google" à la pratique simple de la progammation. Bonne journée, et à bientôt. http://www.flickr.com/photo_zoom.gne?id=331001451&size=o [Edité le 13/11/2007 par scake]
  16. scake

    Lisps de Patrick_35

    Merci petit Papat Noël ... Peut-être une piste ? (defun ax:ListLayouts (/ layouts c lst lay) (setq layouts (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object)) ) c -1 ) (repeat (vla-get-count layouts) (setq lst (cons (setq c (1+ c)) lst)) ) (vlax-for lay layouts (setq lst (subst (vla-get-name lay) (vla-get-taborder lay) lst ) ) ) (reverse lst) ) Ou une autre : http://discussion.autodesk.com/thread.jspa?messageID=1113356 Malgré tous mes efforts, c'est malheureusement du chinois pour moi ... [Edité le 7/11/2007 par scake]
  17. scake

    Lisps de Patrick_35

    Bonjour Patrick. Une question : est-il possible que la liste des présentations de "Ong" les renvoie dans l'ordre du fichier plutôt qu'alphabétique ? Merci
  18. scake

    Pline_Block (mode d\'emploi)

    De (gile) selon ses moyens, À scake selon ses besoins. Merci [surligneur] beaucoup[/surligneur].
  19. scake

    Pline_Block (mode d\'emploi)

    Je m'explique mal. Je voudrais insérer un BLOC DYNAMIQUE et non un ####.dwg avec des attributs. Et ceci sans que ce bloc ne soit dans la collection de bloc du fichier. Merci Gile d'avoir pris le temps de me répondre. Une idée ?
  20. scake

    Pline_Block (mode d\'emploi)

    Quelqu'un peut-il m'aider ? :mad2: [Edité le 5/7/2007 par scake] [Edité le 5/7/2007 par scake]
  21. scake

    Pline_Block (mode d\'emploi)

    En fait j'utilise ton lisp avec un bloc que j'ai appellé "blocAIRE". Il comporte 3 champs : Référence de secteur et Nom de pièce renseignés par les boîtes de dialogue que tu as créés et Aire qui se remplit automatiquement. Cela fait quelque mois que je l'utilise comme cela avec bonheur (un dessin avec des attributs nommé "blocAIRE.dwg" pas de bloc à l'intérieur). Le problème que je n'arrive pas à résoudre aujourd'hui: utiliser le même bloc "blocAIRE" mais avec des propriétés dynamiques: exemple, derrière la référence de secteur l'utilisateur peut choisir une couleur une fois le bloc inséré et la changer à sa guise dans la gamme pré-établie . Je ne sais pas appeler un bloc dynamique depuis le lisp. Pour l'instant j'ai le "blocAIRE" dans un fichier qu'on appelera "SURFACE.dwg". 1-si j'appelle le bloc SURFACE, cela me donne un "bloc dans le bloc" quand je l'insère, du coup les champs ne se remplissent pas 2-si j'explose ce bloc surface à l'insertion la routine ne retrouve plus les attributs (normal, elle est censée remplir "SURFACE" et non "blocAIRE") Comment appeler DIRECTEMENT "blocAIRE" sans qu'il soit dans la collection de blocs du dessin en cours ? [Edité le 3/7/2007 par scake]
  22. scake

    Pline_Block (mode d\'emploi)

    Bonjour gile, Je me suis mis dans la tête d'utiliser un bloc dynamique avec ce lisp très pratique. Cela me permet d'afficher et de masquer des attributs supplémentaires ou des codes couleurs et permet de redimensionner la largeur des étiquettes si le texte des attributs est long. Mon problême se résume assez simplement : comment pointer vers un bloc (ici dynamique) contenu dans un dwg plutôt que de pointer vers le dwg lui-même ? Du genre le bloc "blocAIRE" contenu dans "surface.dwg" ... Sinon, je ne vois pas comment utiliser les blocs dynamiques ... Merci !
  23. scake

    MAJ Pline_Block

    Merci bcp (gile) de répondre à une demande peut-être trop spécifique ... Cela redonne le sourire à un de mes collègues qui s'arrachait les cheveux depuis deux jours ... Testé, ça marche impeccable.
  24. scake

    MAJ Pline_Block

    Salut Gilles, merci de me répondre aussi rapidement ! J'utilise bien la dernière version de plinebloc. Les boîtes de dialogue sont très pratique (j'en est rajouté une pour Ref pièce, basé sur ton modèle). Ce dernier lisp (clic) est un juste une tentative mal aboutie d'arriver à mes fins. L'intérët ? J'ai par exemple d'anciens plans avec le même bloc que le nouveau, l'attribut AIRE n'étant pas un champ dynamique. REF Pièce NOM Pièce AIRE Pièce. Et j'aimerais simplement mettre à jour l'AIRE dynamiquement de chacun avec deux simples clics, 1 sur la polyligne, 1 sur le bloc. C'est pratique aussi qd j'ai 50 chambres sur un mëme étage, même ref, même nom, mais pas forcément même aire. Exemple maison de retraite, caserne ou autre ... Voilà, peut-être ma requète est-elle trop singulière ?
  25. Bonjour à tous. Un grand merci (gile) pour ce lsp qui me donne de fiers services tous les jours. Je me pose encore une question, pourrait-on disposer d'une fonction LISP de mise à jour de l'aire ? Je m'explique par l'exemple. Je copie un Pline_Block déja rempli (pièces qui se répètent) à l'intérieur de Polylignes, je voudrais pouvoir cliquer sur une de ces polylignes, puis sur le bloc et que cela mette automatiquement à jour le champ "aire". Quelque chose à voir avec cela ? ;;; D'après Pline_bloc -Gilles Chanteau- 29/09/06 ;;; Modifie l'attribut "aire" du bloc sélectionné ;;; Attribut 1 : Référence de la pièce ;;; Attribut 2 : Nom de la pièce ;;; Attribut 3 : Aire de la polyligne (defun c:clic (/ AcDoc Space bloc nom ent aire nom2 ins ech) (setvar "FIELDDISPLAY" 0) ;; Pointeurs vers le document actif et l'espace actif (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) ;; Sélection du bloc (progn (while (not bloc) (setq bloc (car (entsel "\nSélection du bloc : "))) ) ) (if bloc ;; Si le bloc a été trouvé (progn ;; Sélection d'une entité (while (not (setq ent (car (entsel))))) (if (= (cdr (assoc 0 (entget ent))) "LWPOLYLINE") ;; Si l'entité sélectionnée est bien une polyligne (progn ;; Traduction de l'entité en objet-vla ;; ID de l'objet ;; Champ "aire" en m2 pour un dessin en cm (setq obj (vlax-ename->vla-object ent) id (vla-get-ObjectID obj) aire (strcat "%<\\AcObjProp Object(%<\\_ObjId "(itoa id)">%).Area \\f \"%lu2%pr2%ps[, m²]%ct8[0.0001]\">%" ) ) ;; Entrée du nom -premier attribut- (initget 1) (setq nom (getstring T "\nRéférence de la pièce: ")) ;; Entrée du 2ème nom -second attribut- (initget 1) (setq nom2 (getstring T "\nNom de la pièce: ")) ;; Remplacement de la valeur "Aire" par la nouvelle (mapcar '(lambda (x y) (vla-put-TextString x y)) (vlax-invoke ref 'GetAttributes) (list nom nom2 aire) ) ;; Régénération de la fenêtre active (vla-regen AcDoc acActiveViewport) ) ;; Si l'entité sélectionnée n'est pas une polyligne (alert "Ceci n'est pas une polyligne.") ) ) ;; Si le bloc n'a pas été trouvé (alert "Bloc \"Aire2\" introuvable.") ) (princ) ) J'ai plusieurs soucis 1- Je suis obligé de rentrer de nouveau les 2 premiers attributs de bloc pour que le remplacement de valeur ne se fasse pas au niveau du troisième (aire) 2- C'est plus grave : Ce lisp met à jour l'instance "mère" du bloc et pas l'"enfant" - la copie. Soit exactement l'effet inverse de ce que je recherche ! 3- Après fermeture puis réouverture d'un fichier : La ligne de commande retourne "Erreur: type d'argument incorrect: VLA-OBJECT nil" En cas d'utilisation de ce Lisp . Vous aurez compris que je débute en Lisp ... [Edité le 7/3/2007 par scake]
×
×
  • 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é