Aller au contenu

Messages recommandés

Posté(e)

Bonjour à tous...

 

Voilà, j'ai un petit soucis... Pour les besoins du service du Cadastre, nous, les géomètres, devons fournir une feuille de calcul qui se résume aux coordonnées d'une polyligne ainsi que la longueur de ses segments, en gros, ça donne :

.Pt X Y

. Distances

.1 1081.02 5092.66

. 40.91m

.2 1121.44 5086.31

. 97.15m

.3 1109.31 4989.92

. 18.50m

.4 1090.84 4990.78

. 56.57m

.5 1098.92 5046.77

. 24.23m

.6 1076.40 5055.72

. 37.23m

.1

.Superficie = 2673.2 m²

 

Mon problème est, si j'ai plusieurs polylignes et que j'ai des sommets communs, ils ne vont pas porter le même numéro... Alors qu'il le faudrait...

 

J'ai donc pensé à :

(vlax-ldata-put return) ;return est ma liste de coordonnées

 

Mais je n'ai pas les "matricules" des sommets ! !

 

Je ne sais pas comment faire, en lisp, pour stocker des données telles que :

(1,1081.02,5092.66)(2,1121.44,5086.31)(3,.......

ou

(1,1081.02,5092.66,2,1121.44,5086.31,3,.......

ou encore

(1 1081.02 5092.66 2 1121.44 5086.31 3 .......

 

Je ne sais pas comment Lisp va les stocker et surtout, comment lui imposer un "style de stockage" pour qu'il soit plus facile pour moi de chercher les point existant dans cette liste...

 

Merci et si vous avez compris... Chapeau bas,

 

Denis...

 

 

 

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Eh bien non, je n'arrive pas à comprendre ?

 

Je pense à un truc de ce style

(vlax-ldata-put "Mon_Appli"
       (if (vlax-ldata-list "Mon_Appli")
         0
         (length (1+ (vlax-ldata-list "Mon_Appli")))
       )
       (cons (cdr (assoc -1 "Ma_poly"))
             (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) "Ma_poly"))
       )
     )

 

Mais est-ce bien cela ?

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Je ne sais pas si j'ai bien compris...

un truc vite fait :

 

 (defun c:tab_coord_poly ( / TAB_POLY)

 (setq polyS (ssget "_X" '((0 . "LWPOLYLINE"))))
 (setq COMPT 1)
 (setq x 0)
 
(repeat (sslength polyS)	  
  (setq ent_poly (entget (ssname polyS x)))
  
  (while (assoc 10 ent_poly)
    (setq dxf_10 (assoc 10 ent_poly))
    (setq list_coord_somm_poly (append (list dxf_10) list_coord_somm_poly))
    (setq ent_poly (vl-remove (assoc 10 ent_poly) ent_poly))    
  )

  (setq list_coord_somm_poly (append (list (strcat "Polyligne N°" (rtos COMPT) " : ")) list_coord_somm_poly))
  
  (setq TAB_POLY (append (list list_coord_somm_poly) TAB_POLY)
	list_coord_somm_poly nil)
  
  (setq COMPT (+ COMPT 1)
	x (+ x 1))
 )

(setq TAB_POLY (reverse TAB_POLY))
  (princ TAB_POLY)
  (princ)
      )

 

 

 

[Edité le 27/10/2006 par Bred]

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

mmm... j'ai corrigé une erreur dans le prog ci-dessus, mais je commence à entrevoir ce que tu veux et je pense que je n'y répond pas...

je cherche...

 

[Edité le 21/12/2006 par Bred]

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Merci à vous,

 

Une petite question pour Patrick_35

 

Ton truc traite-il la liste ( nommée "return" dans ma routine ) comme une entité AutoCAD avec ses code DXF ?

 

D'après ce que je comprend, ma liste serait ainsi :

(1 1081.02 5092.66)

(2 1121.44 5086.31)

(3 1109.31 4989.92)

(4 .......

 

mais je n'ai pas compris comment s'éfectue la recherche... Mais je pense que tu as compris ma question...

 

Pour une fois... J'ai réussi à m'expliquer à peut près correctement ;)

 

Merci encore à vous,

 

Denis (qui a un super site avec des méga infos : http://www.phalenecad.fr )

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Pas tout à fait mais plutôt de cette manière

( < Nom d'entité: 7e07a488 > (377.5 222.5) (377.5 247.5) (402.5 255.0) (417.5 237.5) (425.0 202.5) (385.0 175.0) (370.0 197.5))

que l'on peut récupérer avec par exemple (vlax-ldata-get "Mon_Appli" 0) --> le 0 pour la première entrée

 

Je ne comprends pas ce que tu cherches, mais si ça répond à ta question

 

Encore une chose qui me surprend un peu. Tu peux stocker ton entité avec un vlax-ldata mais pourquoi ses coordonnées ? . Si jamais elles bougent, la valeur retournée d'un vlax-ldata sera fausse par rapport à ta poly. Il vaudrait mieux dans ce cas regarder de nouveaux ses coordonnées

 

Et si jamais on efface la poly stocké dans la base "Mon_Appli", il faut aussi penser à remettre à jour la base

 

@+

 

[Edité le 27/10/2006 par Patrick_35]

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Merci Patrick_35,

 

Je pense que tu as saisi le plus difficile à faire comprendre...

 

Je te fais un petit exemple et te ferai un lien pour ce soir...

 

Merci encore,

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

coucou,

 

Je pense qu'une autre solution est à envisager.

 

je ne sais si tu es équipé de Covadis, mais peu importe

car il est possible de mettre un bloc sur chaque sommet,

ce bloc aura un attribut : Matricule,

ça se lispe en deux coups de clavier.

 

Ensuite, il sera aisé d'extraire les sommets d'une polyligne,

vérifier le matricule du sommet, et l''intéger devant les coordonnées du sommet.

 

si je suis hors sujet, je vous balbutie mes plus plates excuses.

 

amicalement

 

 

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é