Aller au contenu

Lisps de gile


(gile)

Messages recommandés

Salut,

 

j'aurais une requête à faire concernant le super lisp Edit_bloc

 

Voilà ce que je souhaiterais :

 

- Avoir la possibilité de supprimer tous les attributs des blocs du dessin (y compris ceux qui ne sont pas insérés mais en mémoire dans le dessin).

 

explication :

 

Suite à l'utilisation du lisp Edit_bloc_rep, je souhaite "préparer" les blocs que je récupère sur les sites de plusieurs fournisseurs. Ces blocs sont souvent avec des attributs, propre aux fabricants et je veux les supprimer.

J'ai donc des fois 50 à 100 blocs dans le dessin et je voudrais automatiser la suppression des attributs.

 

Je pensais à une case à cocher : supprimer les attributs des blocs

 

Voilà (gile), j'espère que tu pourras accéder à ma requête qui m'épargnerais énormément de boulot.

 

 

Merci.

Raph.

Celui qui pose une question est bête 5 minutes, celui qui n'en pose pas l'est toute sa vie !

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Merci pour les compliments mais je n'ajouterais pas cette fonction à Edit_bloc, elle est, à mon avis trop spécifique.

 

Par contre voici un petit LISP vite fait qui supprime tous les attributs dans toutes les définitions de bloc du document.

Les références d'attribut dans les blocs déjà insérés ne sont pas supprimés, mais ça ne devrait pas avoir d'importance vu l'utilisation que tu veux en faire.

 

(defun c:delatt	()
 (vl-load-com)
 (vlax-for blk	(vla-get-Blocks
	  (vla-get-ActiveDocument (vlax-get-acad-object))
	)
   (if
     (and
(= (vla-get-isXref blk) :vlax-false)
(= (vla-get-isLayout blk) :vlax-false)
     )
      (vlax-for obj blk
 (if (= (vla-get-ObjectName obj) "AcDbAttributeDefinition")
   (vla-delete obj)
 )
      )
   )
 )
 (princ)
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Merci énormément (gile) c'est vraiment sympa ! :D

 

je test immédiatement.

 

 

 

C'EST PARFAIT !!!!

 

 

t'es un chef !

 

[Edité le 16/6/2009 par neptune38]

Raph.

Celui qui pose une question est bête 5 minutes, celui qui n'en pose pas l'est toute sa vie !

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...

Bonjour (gile),

 

Dans la routine SSF, je ne sais pas comment lui indiquer que je veux une recherche dans un secteur que je choisis.

 

J'ai essayé dans 3 ème ligne en partant du bas : (sssetfirst nil (ssget "_X" flst))

de remplacer "_X" par le C de capture mais rien n'y fait...

 

J'en suis à çà :

 

(sssetfirst nil (and (ssget "_C" P1 P2)) (sssetfirst nil (ssget "_X" flst))

 

Je ne sai spas comment dire à SSGET qu'il faut trier selon deux critères, le FLST et mes deux points désignés par GETPOINT plus haut dans le lisp.

 

'ti coup de pouce ?... stp ??

 

Merci d'avance.

 

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Lien vers le commentaire
Partager sur d’autres sites

Hello (gile)

 

Ton lisp Obj2Wipeout ne marche pas quand on est dans la fenêtre modification des blocs. J'ai ce message suivant :

 

erreur: Erreur Automation Echec

de l'appel Clear d'une méthode sur une interface IAcadSelectionSet

 

 

T'es au courant ? J'ai fait des recherches j'ai rien trouvé...

 

A bientôt. :D

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Je n'ai pas ce problème chez moi (2007 et 2010) mais vu le message d'erreur je pense que c'est du au fait que le LISP ne supprimait pas le jeu de sélection après usage.

J'en ai profiter pour ajouter un (vl-catch-all-apply ...).

 

J'ai modifié le fichier, tu peux le re-télécharger (n'oublie pas de nettoyer le cache de ton navigateur, dans l'en-tête du nouveau fichier la modification datée d'aujourd'hui est notée)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Giles stp...

 

J'ai le même problème qu'auparavent avec Objet To Wipe Out, le message réapparaît encore mais de manière aléatoire :

 

Effacer les objets source ? [Oui/Non] :

; erreur: Erreur Automation Echec de l'appel Clear d'une méthode sur une

interface IAcadSelectionSet

 

Parfois ça marche en édition de bloc, parfois non, mais même en espace objet classique j'ai ce message parfois...

 

J'ai downloadé la dernière version pourtant... Si t'as une idée...

 

Merci d'avance !

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Dans la version que tu as, y a-t-il à la fin des commentaires en en tête :

";;; Modifié le 26/08/09

;;; - ajout vl-catch-all-apply"

Sinon, il faut nettoyer le cache de ton navigateur avant de faire un nouveau téléchargement.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Hello,

 

Oui j'avais lu ta réponse 08 et fait attention.

 

Bon j'ai reloadé sur ta page... Pour l'instant ça marche...

 

Merci à toi...

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Lien vers le commentaire
Partager sur d’autres sites

D'après le message d'erreur, il s'agit d'un problème de jeu de sélection et ça fait penser au fait qu'AutocAD ne supporte pas plus de 128 jeux de sélections actifs simultanément., ça pourrait donc provenir d'un autre LISP ?...

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Sinon, tu peux essayer de remplacer la fonction c:ob2wo par celle-ci qui n'utilise pas vla-get-ActiveSelectionSet, mais je ne pense pas que ça vienne de là.

 

(defun c:ob2wo (/ ss n obj)
 (vl-load-com)
 (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)))
 (if (setq ss (ssget '((0 . "CIRCLE,ELLIPSE,LWPOLYLINE"))))
   (progn
     (initget "Oui Non")
     (setq del (getkword "\nEffacer les objets source ? [Oui/Non] : ")
           n 0)
     (vla-StartundoMark acdoc)
     (while (setq obj (ssname ss n))
       (setq obj (vlax-ename->vla-object obj)
             n   (1- n)
       )
       (vl-catch-all-apply
         '(lambda (/ lst nor lay)
            (setq lst (ent2ptlst obj)
                  nor (vlax-get obj 'Normal)
                  lay (vla-get-Layer obj)
            )
            (makeWipeout lst nor lay)
            (and (= del "Oui") (vla-delete obj))
          )
       )
     )
     (vla-EndundoMark acdoc)
   )
 )
 (princ)
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Encore merci... J'ai testé les deux et ils marchent bien...

 

Le côté aléatoire me gênait car je n'arrivait pas à comprendre la cause.

 

A bientôt.

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...
  • 2 semaines après...

bonjour gile,

petit message pour te dire qu'étant trés interressé par ton lisp sur "l'incrémentation de bloc avec attribut " ,

j'ai essayé de le charger dans un dessin autocad 2007...sans succés a priori....la liste de commande n'aparaissant pas suite au chargement du lisp....comme c'est une sous routine...peu etre y a il un lien a etablir ?

toujours est il que je ne suis pas parvenu à lancer l'application....

 

bien à toi , Coge.bruno

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

Salut et bonne année

 

j'avais pensé à un petit ajout pour la commande spécial selection

 

- sélection suivant le calque, mais en choisissant le nom du calque dans la liste des calques existant.

- selection suivant le type d'entité, mais uniquement sur le calque de l'entité de départ.

 

merci pour ces lisp, special selection est celui qui me sert en permanence et me fait gagner énormement de temps.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

sélection suivant le calque, mais en choisissant le nom du calque dans la liste des calques existant.

J'ai voulu que ces fonctions soient des fonctions simples d'utilisation (un seul clic).

Pour choisir le nom du calque dans une liste déroulante, tu as SELECTRAP (ou _QSELECT).

 

selection suivant le type d'entité, mais uniquement sur le calque de l'entité de départ.

Pour filtrer sur plusieurs propriétés, regarde SSM

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

  • 5 semaines après...

Bsr Gile,

Je voudrais te poser une question sur 1 de tes macros " Increment", j'ai un collègue de boulot qui a installé ta macro sur son pc perso sutr la version Autocad 2008 et ça ne marche pas du moins la dernier version ds laquelle tu as rajouté la formule d'incrémentation. Ca marchait bien avec la version précédente, cela est du à quoi le problème, la version d'Autocad ?

D'avance merci

Phil

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Je ne comprends pas bien ce que tu veux dire par "dernier version ds laquelle tu as rajouté la formule d'incrémentation".

Je viens de re-tester toutes les commandes depuis le fichier en téléchargement et tout fonctionne comme prévu.

 

Il ne devrait y avoir aucun problème avec les différentes versions d'AutoCAD (chez moi ça fonctionne sur 2007 et 2010).

 

Peut-être faut il que ton collègue refasse la procédure : téléchargement, enregistrement/remplacement du fichier.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Je ne comprends pas bien ce que tu veux dire par "dernier version ds laquelle tu as rajouté la formule d'incrémentation".

Je viens de re-tester toutes les commandes depuis le fichier en téléchargement et tout fonctionne comme prévu.

 

Il ne devrait y avoir aucun problème avec les différentes versions d'AutoCAD (chez moi ça fonctionne sur 2007 et 2010).

 

Peut-être faut il que ton collègue refasse la procédure : téléchargement, enregistrement/remplacement du fichier.

 

Reslt Gile,

En 2008 j'avais donné cette macro à mon colègue et ds cette macros à l'époque il n'avait la boite de dialogue du choix d'incrémentation,tu l'as remise à jour en Mars 2009 il me semble. Avec la version 2008 ça marchait bien sur son micro, l'autre jour au boulot je lui est passé la dernière mais le problème c'est que j'ai écrasé les fichier et avec ce fichier(le dernier), cela ne fonctionne plus apparemment.

Je lui ai demandé comme tu me l'indiques s'il a avait bien suivi la procédure à 1ère vue oui donc bizarre j'avais donc pensé que cela pouvait provenir de la version d'autocad mais non puisque tu dis que ca fonctionne bien chez toi comme chez moi aussi. bizarre

Merci de ta réponse qd même

A+

Phil

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant



×
×
  • 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é