Aller au contenu

Recréer le contour de n hachures


Messages recommandés

Posté(e)

Bonjour à tous,

 

Je dois actualiser un fichier de zonage dans lequel les zones sont représentées par des hachures sans contour. Vu que ce fichier est Lambert Z1, je dois au préalable le reprojeter en RGF93. C'est là que les ennuis commencent.

 

Comme à chaque fois avec les hachures, il est "impossible de convertir le datum"... Du coup, mes hachures ne se reprojettent pas comme il faut. D'où mon idée de reprojeter uniquement le contour de ces hachures et de les recréer ensuite. Vu que j'ai un nombre non négligeable de zones, j'ai recherché un lisp qui pourrait automatiser la création des contours.

 

Dans ce sujet, j'ai trouvé le lisp ci-dessous proposé par (gile) mais il ne fonctionne pas... Pour être plus précis, après l'invite de sélection des hachures, il ne se passe rien. J'ai essayé avec l'ensemble des hachures, avec seulement 2 hachures puis une seule et... rien !

 

Quelqu'un verrait-il le pourquoi du comment ?

 

(defun c:hbound (/ ss echo n ent elast lay)
 (princ "\nSélectionnez les hachures (Entrée, Espace ou clic droit pour toutes")
 (if (or (setq ss (ssget '((0 . "HATCH"))))
         (setq ss (ssget "_X" '((0 . "HATCH"))))
     )
   (progn
     (setq echo (getvar 'cmdecho)
           n    -1
     )
     (setvar 'cmdecho 0)
     (while (setq ent (ssname ss (setq n (1+ n))))
       (setq elast (entlast)
             lay   (assoc 8 (entget ent))
       )
       (if (= 0 (cdr (assoc 97 (entget ent))))
         (vl-catch-all-apply
           '(lambda ()
              (command "_.hatchedit" ent "_boundary" "_polyline" "_yes")
            )
         )
       )
       (while (setq elast (entnext elast))
         ((lambda (l)
            (entmod (subst lay (assoc 8 l) l))
          )
           (entget elast)
         )
       )
     )
     (setvar 'cmdecho echo)
   )
 )
 (princ)
)

Posté(e)

Ce sont bien des hachures. Un _hatchedit classique me permet d'obtenir le contour.

Mais avec plus d'une centaine de zones à traiter, ce sera fastidieux de le faire "à la main".

Posté(e)

(gile) : ta réponse s'est intercalée entre celle de didier et la mienne. Du coup, je ne l'ai vu que ce matin...

 

Je n'ai pas testé le 2nd lisp car tu l'annonçais comme "un défi pour le fun". Je pensais donc que le 1er était opérationnel.

 

## EDIT ##

Je viens de tester le 2nd lisp. La création des contours fonctionne mais... les polylignes sont toutes décomposées en segments simples.

 

Je m'aperçois que je n'ai pas précisé ma version d'AutoCAD... AutoCAD Map 3D 2010

Posté(e)

Bonjour à tous,

 

lili : à chaque fois que je change de système de projection, MAP me renvoie un message d'erreur concernant les hachures ("impossible de convertir le datum"). Du coup, toutes les entités ponctuelles ou linéaires sont correctement reprojetées alors que les hachures (et parfois certains blocs) sont reprojetées avec un décalage (ou simplement ignorées par la requête...). Si tu as une procédure qui fonctionne sans erreur, je suis preneur.

 

[HS]

Lors d'un changement de projection, qu'est-ce qui peut générer le message "eDuplicateRecordName" (dwg sans table de données) ?

[/HS]

  • 1 an après...
  • 3 mois après...

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é