Aller au contenu

jujugeometre

Membres
  • Compteur de contenus

    37
  • Inscription

  • Dernière visite

Tout ce qui a été posté par jujugeometre

  1. Bonsoir, Je voudrais rechercher tous les blocs ayant un attribut nommé MAT pour dresser une liste de points afin de connaitre le dernier matricule à utiliser, sans forcément connaitre les noms de blocs, je pensais utiliser un jeu de sélection : (setq entl (ssget "_X" '((0 . "ATTRIB") (2 . "MAT")))) mais si je poste une question c'est que ça ne marche pas. j'avais essayé des entget sur des blocs mais je n'arrive pas à comprendre l'enchassement des entités les unes dans les autres. Bref, je suis bloqué, si quelqu'un a une idée, j'ai trainé sur des blogs mais les routines de manipulation de blocs font souvent appel à du visual et je ne connais pas ces fonctions. Merci d'avance.
  2. jujugeometre

    SYMBOLIQUE LINEAIRE

    A force de chercher, j'ai trouvé en supprimant l'entrée du dictionnaire : (dictremove ( cdr (assoc -1 (entget(namedobjdict)))) "COVADIS_SYMB_LIN_DICT" ) Je laisse cela la si qqun en a besoin un de ces quatre
  3. jujugeometre

    SYMBOLIQUE LINEAIRE

    Bonjour, j'ai des symboliques linéaires insérés dans mon DWG, lorsque j’utilise la commande covadis 2D/symboliques linéaires/liste symboliques je retrouve bien les types de lignes, depuis que j'ai recréé un gabarit sans ces symboliques linéaires, je n'ai plus de souci sur mes nouveaux dessins mais sur les anciens, dès que j'essaie de changer la variable LTSCALE, ca me plante quand je n'ai pas le dongle. je souhaitais savoir dans quelle entité autocad était stockée cette information pour pouvoir intégrer à ma routine de démarrage la purge de ces symboliques linéaires, ça doit être stocké quelque part dans des données étendues du dessin.
  4. jujugeometre

    SYMBOLIQUE LINEAIRE

    Bonjour, Je remonte cet ancien message, je cherche à supprimer les références aux symboliques linéaires de Covadis dans un gabarit dans lequel j'en avais inséré à l'époque, on ne les utilise plus et quand je modifie la variable LTSCALE, mon autocad plante quand je n'ai pas de clé COVADIS sur mon poste, j'ai nettoyé mon gabarit mais je souhaiterai effacer dans les anciens dessins, je ne trouve pas de commande pour cela. Savez vous à quel entité autocad font référence ces symobliques linéaires que je puisse faire une moulinette qui les supprime à l'ouverture du dessin?
  5. Bonjour, merci pour ta réponse, bonne journée.
  6. Bonjour, Je souhaite nettoyer un dessin en supprimant les entités situées hors d'une zone de sélection, je construis un jeu de sélection de tout puis un jeu de sélection de ce que je veux conserver et je parcours ensuite le tout en vérifiant à chaque fois si l'entité est dedans ou non. (setq ENTSELEC (ssadd) ;je mets les listes à 0 ENTSELECTOTALE (ssadd) ENTSELEC (ssget "_WP" liste-sommets ) ;sélection des objets dans la zone de sélection COMPTEUR 0 );setq (setq ENTSELECTOTALE (ssget "_X") ) ;sélection de tous les objets du dessin ;et effacer tous les objets hors de cette zone de sélection (repeat (sslength ENTSELECTOTALE) (setq ENT (ssname ENTSELECTOTALE COMPTEUR) COMPTEUR (+ 1 COMPTEUR) ) (if (= nil (ssmemb ENT ENTSELEC)) ;je vérifie si l'entité est dans le jeu de sélection à conserver, sinon je la supprime (entdel ENT) );if );repeat Ça fonctionne mais j'ai des objets qui sautent quand même en bord de zone de sélection, je me demandais s'il n'y avait pas plus "simple" comme méthode?
  7. Bonsoir, Je souhaite aligner des blocs sur des lignes proches, du coup je ne vois pas trop comment commencer à chercher à partir d'un point les lignes les plus proches jusqu'à une valeur seuil à fixer? Si quelqu'un a une orientation (grosse allusion au sujet...) pour démarrer ce programme. Après la lectures de plusieurs posts, je précise que je ne cherche pas un LISP tout fait ou que je ne demande à personne de le faire pour moi, je ne vois juste pas dans quel sens chercher, hormis un truc bourrin du genre répertorier toutes les lignes du dessin et/ou faire un tri sur les coordonnées. Pour info, je cherche en 2D et je suis sur 2016.
  8. J'avais ce message d'erreur avec la boucle while, j'avais 6 lignes, il en traitait 3 et s'arrêtait sur le message d'erreur, je n'ai pas compris d'ou ca venait mais ca fonctionna avec REPEAT, du coup tant pis.
  9. Bonsoir, je voulais faire ca dans le dessin directement pour enchainer plusieurs traitements, je ne voulais pas passer par DXF.
  10. Bonjour, J'ai changé de boucle et j'ai compris que le nom des types de ligne étaient sensibles à la casse, puis j'ai utilisé un PURGER au lieu de la table des calques ce qui m'a fait modifier en : (setq n 0 *error* err jeusel (ssget "_X" '((6 . "CACHE")))) (if (/= nil jeusel) (repeat (sslength jeusel) (entmod (subst '(6 . "Continuous") '(6 . "CACHE" ) (entget (ssname jeusel n)))) (setq n (+ 1 n)) );repeat );if (command "-PURGER" "TO" "*" "n") (setq *error* nil) ca fonctionne sur CACHE. Merci pour vos conseils, ca m'a fait avancer. La suite au prochain épisode.
  11. Bonjour, Jeune lispeur, j'essaie de construire une procédure pour nettoyer les fichiers qui me sont envoyer pour les intégrer dans mes dessins. Je décompose les blocs avec BURST, je renomme les calques avec un préfixe et je vide le calque 0. j'ai encore des dessins qui arrivent avec le type de ligne CONTINU, je veux le remplacer par CONTINUOUS dans tous les objets puis supprimer l'entité dans la table de type de ligne. j'ai donc essayé plusieurs versions qui ressemblaient à ca : defun c:ztest ( / indice jeusel elst ltypemodif ) ; jeusel indice elst layermodif *error* ;je dois selectionner toutes les entités qui ont un type de ligne CONTINU et modifier ce type de ligne ;puis supprimer l'entrée CONTINU dans la table des calques ;test sur le type de ligne "BATI" (setq indice 0 jeusel (ssadd) ) (while (setq jeusel (ssget "_X" '((6 . "bati")))) ;tant que la liste_totale ne retourne pas nil (setq elst (entget (ssname jeusel indice)) ; liste DXF de l'objet indice (+ 1 indice)) ; incrémentation de l'indice (entmod (subst (cons 6 "continuous") (assoc 6 elst) elst)) ; modification type de ligne en continuous de tous les objets );while (setq ltypemodif (entget (tblobjname "LTYPE" "bati"))) (entmod (subst '( 2 . "continuous") (assoc 2 ltypemodif ) ltypemodif)) (princ) );defun Alors j'ai un message d'erreur lors de la première exécution (; erreur: type d'argument incorrect: lentityp nil) et autant ca modifie les objets mais le type de ligne ne disparait pas, y a t il une autre approche? Merci d'avance,
  12. Bonjour, je debute en LISP depuis quelques jours, je cherche à manipuler les noms de calque et je me galérais avec la commande tblnext, du coup je suis tombé sur ce sujet qui m'a permis d'ajouter un préfixe. Par contre je ne comprends pas le (not layer) dans (tblnext "layer" (not layer)), j'avais compris que quel que soit l'argument passé derrière le nom de la table, ca réinitialisait la table à sa première valeur? (while (setq layer (tblnext "layer" (not layer))) (setq elst (entget (tblobjname "layer" (cdr (assoc 2 layer)))) old_nom (cdr (assoc 2 layer)) ) (if (/= "0" old_nom) (entmod (subst (cons 2 (strcat PREFIXE old_nom)) (cons 2 old_nom) elst)) );if );while
×
×
  • 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é