Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

 

je viens de récupérer un extrait d'une BD TOPO ou les courbes de niveau sont des LWpoly à Z = 0 avec valeur du Z dans une etiquette.

 

comment faire pour replacer mes polylignes à la bonne élevation.

 

 

merci de vos lumières

Thierry Garré

 

Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap

Posté(e)

J'ai eu un problème du même ordre sauf qu'il s'agissait de points d'un relevé topo et non d'une courbe de niveau. Les points relevés étaient matérialisés par des textes dont le point d'insertion donnait le X et le Y (le Z était à 0). Le Z relevé était donné par le texte.

 

 
(defun c:text2pt3d ()

  (setq jeusel (ssget "_x" '((0 . "TEXT"))))
  (if jeusel
   (progn
     (setq OldOS (getvar "OSMODE"))
     (setvar "OSMODE" 0)
     (setq I 0)
     (while (< I (sslength jeusel))
       (setq E (ssname jeusel I))
       (setq A (entget E))
       (setq PTINS (cdr (assoc 10 A)))
       (setq X (car PTINS))
       (setq Y (cadr PTINS))
       (setq Z (distof (cdr (assoc 1 A)) 2))
       (command "_point" (list X Y Z))
       (setq I (+ I 1))
     )
     (setvar "OSMODE" OldOS)  
   )
 )
 (princ)
) 

 

ce lisp va lire tous les textes, en extraire le point d'insertion pour trouver le X et le Y, va lire la valeur du texte, la convertit en décimal pour trouver le Z.

Puis avec X, Y et Z, je place un point.

 

On peut imaginer la même chose avec des attributs.

 

le ssget donnerait quelque chose comme

 

(setq jeusel (ssget "_x" '((0 . "INSERT") (2 . "mettre le nom du bloc ici"))))

 

 

et à l'intérieur du while, il faudrait aller piocher la valeur de l'attribut. Mais comme un bloc est une entité complexe, il faut rajouter une autre boucle while

 

 (while (/= (cdr (assoc 0 a)) "SEQEND")
   (if (= (cdr (assoc 0 a)) "ATTRIB")
      (setq Z (distof (cdr (assoc 1 A)) 2))       
   )
   (setq e (entnext e))
   (setq a (entget e))
 )

 

 

donc globalement ça donne :

 

(defun c:attrib2pt3d ()
 (setq jeusel (ssget "_x" '((0 . "INSERT") (2 . "NIVZ"))))

  (if jeusel
   (progn
     (setq OldOS (getvar "OSMODE"))
     (setvar "OSMODE" 0)
     (setq I 0)
     (while (< I (sslength jeusel))
       (setq E (ssname jeusel I))
       (setq A (entget E))
       (while (/= (cdr (assoc 0 a)) "SEQEND")
         (if (= (cdr (assoc 0 a)) "ATTRIB")
           (progn
             (setq PTINS (cdr (assoc 10 A)))
             (setq X (car PTINS))
             (setq Y (cadr PTINS))
             (setq Z (distof (cdr (assoc 1 A)) 2))       
           )
         )
         (setq e (entnext e))
         (setq a (entget e))
       )
       (command "_point" (list X Y Z))
       (setq I (+ I 1))
     )
     (setvar "OSMODE" OldOS)  
   )
 )
 (princ)
)

 

ou quelque chose comme ça.

 

Pour une courbe de niveau, c'est plus simple puisque c'est le même niveau partout, donc un _move fait bien l'affaire.

 

Amicalement

 

Zebulon_

 

 

[Edité le 10/1/2006 par zebulon_]

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Posté(e)

Le code qui suit va te permettre de changer l'ELEVATION d'une polyligne2D (optimisée ou pas)

Les autre polylignes sont ecartées.

Tu pourras alors sélectionner soit un TEXTE, TEXTEMULTILIGNE ou ATTRIBUT pour récupérer sa valeur texte.

Le changement d'élévation sera effectué si la chaine de texte correspond à une valeur numérique.

 

NB: Un + les décimales peuvent être séparée soit par un "." point ou "," virgule

 

 

 

(defun c:eleve_pol2D ( / poly_ent l_dxf text-ent v-txt z)
(princ "\nChoix de la polyligne 2D dont vous voulez changer l'élèvation: ")
(while (not poly_ent)
	(setq poly_ent
		(ssget "_:S" '(
			(-4 . "< AND")
				(0 . "POLYLINE,LWPOLYLINE")
				(-4 . "< NOT")
					(-4 . "< OR")
						(-4 . "&=") (70 . 8)
						(-4 . "&=") (70 . 16)
						(-4 . "&=") (70 . 32)
						(-4 . "&=") (70 . 64)
					(-4 . "OR>")
				(-4 . "NOT>")
			(-4 . "AND>")
		))
	)
)
(setq l_dxf (entget (ssname poly_ent 0)))
(princ "\nSélectionnez une valeur numérique dans du Texte/TexteMultiligne/Attribut")
(while (not text-ent)
	(setq text-ent (ssget "_+.:S:N" '((0 . "TEXT,MTEXT,INSERT"))))
	(cond
		(text-ent
			(setq text-ent (entget (cadar (ssnamex text-ent 0))))
			(if (not (member (cdr (assoc 0 text-ent)) '("TEXT" "MTEXT" "ATTRIB")))
				(setq text-ent nil)
			)
		)
	)
)
(setq v-txt (cdr (assoc 1 text-ent)))
(if (wcmatch v-txt "*`,*")
	(setq v-txt (vl-list->string (subst 46 44 (vl-string->list v-txt))))
)
(setq z (read v-txt))
(if (or (eq (type z) 'REAL) (eq (type z) 'INT))
	(progn
		(if (= (cdr (assoc 0 l_dxf)) "POLYLINE")
			(entmod (subst (cons 10 (list 0.0 0.0 z)) (assoc 10 l_dxf) l_dxf))
			(entmod (subst (cons 38 z) (assoc 38 l_dxf) l_dxf))
		)
		(princ (strcat "\nLa polyligne 2D à une élèvation de " v-txt))
	)
	(princ "\nLe texte ne convient pas, la polyligne conserve son ancienne élèvation") 
)
(prin1)
)

 

Rappel : Enlever l'espace après le "< " présent dans le code après avoir coller.[Edité le 11/1/2006 par bonuscad]

 

[Edité le 11/1/2006 par bonuscad]

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Merci de vos réponses, mais je crois que je me suis mal exprimé.

 

La valeur altitude de la courbe de niveau est contenue dans ce qui est appelé donnée d'objet dans Map 3D 2006

 

Elle est contenue dans une table se nommant Niveau 13, dans un champ portant le nom de niveau

 

Je ne sais pas si c'est bien clair , si c'est pas clair je peux envoyer un extrait du fichier

 

Merci de votre attention...

Thierry Garré

 

Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap

Posté(e)

Bonsoir Thierry

 

Si tu un AutoCAD/Autodesk MAP, c TRES FACILE :)

Pas besoin de programmation, MAP est très puissant mais aussi relativement anti-convivial :o

 

- Soit donc un dessin avec des objets graphiques quelconques (Polylignes par exemple)

avec une table d'objets attaché "Niveau13" dont l'un des champs se nomme "Niveau"

(Ce champ numérique réel contient en fait l'altitude en Z de l'objet concerné)

Mais tout le dessin est au niveau ZERO.

 

Pour ceux qui ne connaissent pas MAP, imaginez que ces OD (Object Data MAP)

sont des sortes d'attributs que l'on peut attacher sur N'IMPORTE objet graphique MAP ! :D

 

Step by step, you have to:

 

1) Dans un dessin vide, tu associes ton DWG concerné

2) Zoom vers l'Etendue et Vue Rapide "pour se rassurer"

3) Tu crées un requête en mode "Dessiner" avec Altération des propriétés

- Critère géographique: Tout par exemple

- Critère AutoCAD: le calque concerné qui contient les polylignes par exemple

 

Ne pas oublier de COCHER la case sous "Options" et voisine de "Modifier les propriétrés"

 

4) Modifier les propriétés

- Cocher "Elevation" puis "Expression ..." (En bas et à droite)

- Déplier "Table des données d'objets" (Pour choisir la bonne !)

- Puis choisir la table "Niveau13" puis le champ "Niveau"

Le résultat sera: :NIVEAU@NIVEAU13

- Ne pas oublier de cliquer sur "Ajouter" (En bas et à gauche)

(Ainsi cette altération des propriétés sera ajoutée à la liste des altérations envisagées)

 

Mais ici dans cet exemple, tu ne réalises que UNE SEULE altération des propriétés.

 

Puis OK - Puis "Executer la Requête"

 

Youpee; c 'est fini et OK :) :D :cool:

 

Le Decapode "Super-MAPpant"

 

 

 

 

[Edité le 11/1/2006 par lecrabe]

Autodesk Expert Elite Team

Posté(e)

Cher Crabe Un grand merci, en plein dans le mille, c'est exactement la réponse que je révais......

Thierry Garré

 

Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap

Posté(e)

 

Bonjour Thierry

 

Le Decapode est "tout content" d'avoir résolu ton petit problème ...

Je vais me permettre de te poser qq questions ... si tu veux bien ! :)

 

- SVP puis je savoir où tu es "géographiquement"

- Pour quel genre de dessin/application/métier utilises tu ton MAP ?

- Es tu satisfait de MAP ?

- Quels sont ses principaux défuats (pour toi bien sur) ?

- Utilises tu d'autres logiciels de type SIG: ArcGis, Arcview, MapInfo, Geoconcept ou autre ?

 

C juste pour connaître "un peu mieux" les utilisateurs de MAP qui

ne sont pas "assez nombreux" à mon gout ... :P

 

Le Decapode "décapant"

 

 

Autodesk Expert Elite Team

Posté(e)

Cher décapode,

 

Je suis géographiquement situé en Ardèche au pays des chèvres.

 

Mon premier métier c'est géomètre, mais je travaille principalement sur des projets routiers ou VRD. Je tiens également le rôle de conseiller sur les questions de DAO pour le reste de ma boite, vu que c'est moi qui y connais le mieux (te dire le niveau des autres :cool: ).

 

J'utilise Map pour assembler les BD topo, Ortho de l'IGN avec les BD de la Direm (Natura 2000 , ZNIEFF? ETC...) Les applications que nous en tirons sont:

-Etude de tracé routier

-Schéma général d'assainissement

-Diagnostic eau potable

-Etude d'installations classées, ou de projet éoliens.

 

Je suis satsfait de Map, même si je ne suis pas un spécialiste du SIG. Je pense en effet que je ne connais qu'une petite partie de ces possibilités.

 

Il y a peu j'utilisais aussi MAPINFO , mais maintenant je préfére traité mes cartos sur Map 3d 2006.

 

Voila j'espère que ces réponses te seront utiles...

 

à bientôt sur CADXP

 

Thierry

 

 

 

Thierry Garré

 

Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap

Posté(e)

 

Bonjour

 

Merci pour ces précisions, je te vois bien dans une collectivité locale

du genre CG07 Ardèche ou Communauté de Communes du pays des chèvres,

mais c'est pas sur ... :)

 

Le Decapode "enquetant"

 

Autodesk Expert Elite Team

Posté(e)

Non non, un bureau d'étude privé sur Aubenas........

 

Et toi dans quel coin es tu ?

Thierry Garré

 

Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap

Posté(e)

 

Bonsoir et Bon WE

 

J'oscille entre l'Ile de France, la Région Rhone-Alpes et un peu partout en France ! :o

 

J'envisagerais bien un poste de cartographe sur MAP "A la campagne" spécialisé sur les chèvres, truffes, champignons, etc ... :) :D :cool:

 

Le Decapode "campagnardisant"

 

Autodesk Expert Elite Team

Posté(e)

Pour les truffes et les Champignons, ca va à cartographier (sans rigoler, je le fait avec un GPS Garmin), mais pour les chèvres le soucis c'est qu'elles bougent sans arrêts.............. :cool: :cool: :cool:

 

 

Thierry Garré

 

Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap

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é