Aller au contenu

Table de donnees


gartoun

Messages recommandés

Bonjour,

 

Novice sur MAP, j’ai besoin de vos lumières (@le crabe: je n’ai pas du tout note pendant notre formation l’année dernière...)

 

Voilà: j’ai un parcellaire auquel je vous affecter une table de donnees ( num, section, propriétaire.....) et avoir la surface de chaque parcelle.

 

Puis extraire ces données pour les avoir dans un tableau.

 

Merci pour vos futures réponses !

Lien vers le commentaire
Partager sur d’autres sites

Hello

 

Je retiens deja que tu veux ecrire une Surface basee sur un Polygone 2D ...

 

Imaginons que tu as des Polylignes 2D closes (Du genre: parcelle, batiment, etc) !?

 

Le Lisp ci-dessous "POLYAREA" , va generer un champ dynamique au Centroid des Polygones qui indique la Surface ...

 

Apres il faudra se promener sur les Polygones et replacer / deplacer certains champs a un meilleur emplacement XY !

 

SVP changer la Variable System TEXTSIZE (si necessaire) AVANT d'executer la Routine !

TEXTSIZE controle la hauteur des champs dynamiques generes ...

 

Chargement des routines Lisp par la commande : APPLOAD

 

Execution par la commande clavier : POLYAREA

 

MERCI au Grand Maitre Gilles !

 

LA SANTE (Stay Safe), Bye, lecrabe "triste"

Automne 2020, la retraite

 


;; 
;; PolyArea par GC - 03/03/2018 
;; 
;; Micro-Modif par Patrice B. 
;; 
;; ------------------------------------------------------------------------------------- 
;; SVP changer la Variable System       TEXTSIZE  AVANT d'executer la Routine ! 
;; Car la routine utilise la valeur de  TEXTSIZE  comme Hauteur de MTEXT par defaut ... 
;; ------------------------------------------------------------------------------------- 
;; 
;; J'ai revu les codes, le probleme venait de la methode utilisee pour placer le texte/champ sur le barycentre de la polyligne. 
;; Cette methode ne fonctionnait qu'avec des polylignes.
;; 
;; J'ai change cela. Le texte est desormais place au centre de la boundingbox de l'entite. 
;; J'ai aussi revu les filtres de selection qui ne devraient pas etre tout à fait les memes pour l'aire et la longueur. 
;; 
;; Pour l'aire, je te laisse choisir entre uniquement les objets fermes, ou pas.
;; 
;; Pour les longueurs, les champs sont differents pour les cercles (Circumference), les regions et mpolygons (Perimeter) 
;; et n'existent pas pour les ELLIPSEs et SPLINEs, j'ai donc remplace le champ par un MTEXT simple qui affiche la longueur.
;; 
;; %<\AcObjProp Object(%<\_ObjId 1181647088>%).Area \f "%lu2">%
;; %<\AcObjProp Object(%<\_ObjId 1181647088>%).Length \f "%lu2">%
;; %<\AcObjProp Object(%<\_ObjId 1181647088>%).Perimeter \f "%lu2">%
;; %<\AcObjProp Object(%<\_ObjId 1181647088>%).Circumference \f "%lu2">%
;; 
;; Liste sur ELLIPSE --> Aire & Circonference ?? 
;; Liste sur SPLINE  --> Aire & Circonference ??
;; 
;; --- Interrogation Entite/Objet en Lisp ---
;; (entget (car (entsel)) '("*"))
;; 

(defun c:PolyArea (/ *error* filter ss acSpace minPt maxPt pt id str txt)
 (vl-load-com)
 (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))))
 (or *util* (setq *util* (vla-get-Utility *acdoc*)))
 (defun *error* (msg)
   (and msg
 (/= msg "Fonction annulée")
 (/= msg "Function cancelled")
 (princ (strcat "Erreur: " msg))
   )
   (vla-EndUndomark *acdoc*)
   (princ)
 )

 ;; entités fermées
 ;|
 (setq	filter (list
	 '(-4 . "<OR")
	 '(0 . "CIRCLE,MPOLYGON,REGION")
	 '(-4 . "<AND")
	 '(0 . "ELLIPSE")
	 '(41 . 0.0)
	 (cons 42 (* 2 pi))
	 '(-4 . "AND>")
	 '(-4 . "<AND")
	 '(0 . "LWPOLYLINE")
	 '(-4 . "&")
	 '(70 . 1)
	 '(-4 . "AND>")
	 '(-4 . "<AND")
	 '(0 . "POLYLINE")
	 '(-4 . "&")
	 '(70 . 1)
	 '(-4 . "<NOT")
	 '(-4 . "&")
	 '(70 . 120)
	 '(-4 . "NOT>")
	 '(-4 . "AND>")
	 '(-4 . "<AND")
	 '(0 . "SPLINE")
	 '(-4 . "&")
	 '(70 . 9)
	 '(-4 . "AND>")
	 '(-4 . "OR>")
       )
 )
 |;

 ;; entités fermées ou ouvertes
 (setq	filter (list
	 '(-4 . "<OR")
	 '(0 . "ARC,CIRCLE,LWPOLYLINE,MPOLYGON,REGION,ELLIPSE")
	 '(-4 . "<AND")
	 '(0 . "POLYLINE")
	 '(-4 . "<NOT")
	 '(-4 . "&")
	 '(70 . 120)
	 '(-4 . "NOT>")
	 '(-4 . "AND>")
	 '(-4 . "<AND")
	 '(0 . "SPLINE")
	 '(-4 . "&")
	 '(70 . 8)
	 '(-4 . "AND>")
	 '(-4 . "OR>"))
 ) 


 (prompt "Hauteur courante de MTEXT - Voir la Variable System TEXTSIZE ... \n"  ) 

 (prompt "\nPOLYAREA traite: ARC,CIRCLE,ELLIPSE,POLYLINE 2D,ELLIPSE,SPLINE,MPOLYGON,REGION \nSelectionnez les objets ou Entree pour tous ") 

 (if (or (ssget filter)
  (ssget "_X" (cons (cons 410 (getvar 'ctab)) filter))
     )
   (progn
     (vla-StartUndomark *acdoc*)
     (setq acSpace (vla-get-Block (vla-get-ActiveLayout *acdoc*)))
     (vlax-for	obj (setq ss (vla-get-ActiveSelectionSet *acdoc*))
(vla-GetBoundingBox obj 'minPt 'maxPt)
(setq pt  (mapcar '(lambda (x1 x2) (/ (+ x1 x2) 2.))
		  (vlax-safearray->list minPt)
		  (vlax-safearray->list maxPt)
	  )
      id  (vla-GetObjectIdString *util* obj :vlax-false)
      str (strcat
	    "%<\\AcObjProp Object(%<\\_ObjId "
	    id
	    ">%).Area \\f \"%lu2%pr1%ps[,m²]%\">%"
	  )
      txt (vla-addMText acSpace (vlax-3d-point pt) 0. str)
)
(vla-put-AttachmentPoint txt acAttachmentPointMiddleCenter)
(vla-put-insertionPoint txt (vlax-3d-point pt))
     )
     (vla-Delete ss)
   )
 )
 (*error* nil)
)

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Pas possible avec les champs d'OD. Il n' y a aucun mécanisme (OOTB) de mise à jour automatique d'un champ d'OD depuis une propriété AutoCAD.

Mais la propriété surface est récupérable lors d'un export par ex ou dans des gabarits d'annotation.

Quel est le but recherché d'un champ dynamique sur la surface?

 

Olivier

Lien vers le commentaire
Partager sur d’autres sites

Hello

 

OK donc comme le dit Olivier, lors du MAPEXPORT,

tu peux demander l'Export de la Propriete Aire / Surface

et/ou Longueur / Perimetre AutoCAD des objets selectionnes !

 

Donc l'Info sera A JOUR en temps reel !!

 

SVP tu regardes mon document PDF sur MAPEXPORT "MAP_201X__2012_GIS__MAPEXPORT__v107A.pdf"

dans le sous-dossier a la page 8 ...

 

Et pour MAPEXPORT, en plus de CE PDF, tu peux regarder ICI :

https://georezo.net/forum/viewtopic.php?id=114348

 

LA SANTE (Stay Safe), Bye, lecrabe "triste"

Automne 2020, la retraite

Autodesk Expert Elite Team

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é