Aller au contenu

Messages recommandés

Posté(e)

Comment récupérer les coordonnées X,Y d'une polyligne,ligne,point....

Dans un bloc avec attribut ou un texte

 

Merci :P

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Salut

En sélectionnant les POINTS ou les SOMMETS...

 

Merci

 

 

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

j'ai un machin tout prêt qui a permis à un client de générer rapidement un fichier CN...

 

Le principe, tu insères un BLOC à chaque point ou sommet représentant un point avec un N° incrémenté automatiquement, puis via EXCEL tu génères le fichier de points...

 

si le principe te va ? prépare le chéquier... ;)

 

Christian

 

[Edité le 24/4/2007 par rebcao]

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

Comment récupérer les coordonnées X,Y d'une polyligne,ligne,point....

Dans un bloc avec attribut ou un texte

 

Comme j'apprécie les liens que tu partages dans la pause café, je t'ai fait un lisp sur mesure. ;)

Il créera un bloc appelé "$borne" s'il n'existe pas, avec attributs au nombre de 4 :

numéro du bloc incrémenté, x, y et z.

 

Le choix des objets est filtré et accepte les LWPOLYLINE, POLYLINE 2D et 3D, les LINE et les POINTS

 

Les coordonnées dans le bloc seront renseignées dans le SCG uniquement quel que soit le SCU de création des entités sélectionnées.

 

NB: Le calque "borne" et "borne_attributs" sont créer en mode verrouillé et pour le dernier, il est inactif (les attributs ne se voient pas mais sont présents).

 

Le code (un peu long à cause de la définition du bloc intégré)

(defun c:jalna (/ pto x y z nb js dxf_ent n dxf_210 lst_pt e_next)
 (cond
   ((eq (getvar "cvport") 1)
    (princ
      "\n** Commande autorisée uniquement dans l'espace objet."
    )
   )
   (T
    (if (not (tblsearch "LAYER" "borne_attributs"))
      (entmake	'((0 . "LAYER")
	  (100 . "AcDbSymbolTableRecord")
	  (100 . "AcDbLayerTableRecord")
	  (2 . "borne_attributs")
	  (70 . 4)
	  (62 . -3)
	  (6 . "Continuous")
	  (290 . 1)
	  (370 . -3)
	 )
      )
    )
    (if (not (tblsearch "LAYER" "borne"))
      (entmake	'((0 . "LAYER")
	  (100 . "AcDbSymbolTableRecord")
	  (100 . "AcDbLayerTableRecord")
	  (2 . "borne")
	  (70 . 4)
	  (62 . 4)
	  (6 . "Continuous")
	  (290 . 1)
	  (370 . -3)
	 )
      )
    )
    (if (not (tblsearch "STYLE" "$borne"))
      (entmake	'((0 . "STYLE")
	  (5 . "40")
	  (100 . "AcDbSymbolTableRecord")
	  (100 . "AcDbTextStyleTableRecord")
	  (2 . "$borne")
	  (70 . 0)
	  (40 . 0.0)
	  (41 . 1.0)
	  (50 . 0.0)
	  (71 . 0)
	  (42 . 2.5)
	  (3 . "monotxt.shx")
	  (4 . "")
	 )
      )
    )
    (setvar "textstyle" "$borne")
    (if (not (tblsearch "BLOCK" "$borne"))
      (progn
 (entmake
   '((0 . "BLOCK") (2 . "$borne") (70 . 2) (10 0.0 0.0 0.0))
 )
 (entmake '((0 . "ATTDEF")
	    (67 . 0)
	    (8 . "borne_attributs")
	    (62 . 1)
	    (10 1.0 0.0 0.0)
	    (40 . 1.0)
	    (1 . "0")
	    (50 . 0.0)
	    (41 . 1.0)
	    (51 . 0.0)
	    (7 . "$borne")
	    (210 0.0 0.0 1.0)
	    (3 . "Numéro de la borne: ")
	    (2 . "NO")
	    (70 . 0)
	   )
 )
 (entmake '((0 . "ATTDEF")
	    (67 . 0)
	    (8 . "borne_attributs")
	    (10 1.0 -1.66667 0.0)
	    (40 . 1.0)
	    (1 . "X=0.0")
	    (50 . 0.0)
	    (41 . 1.0)
	    (51 . 0.0)
	    (7 . "$borne")
	    (210 0.0 0.0 1.0)
	    (3 . "Entrer le X du point: ")
	    (2 . "ID-X")
	    (70 . 0)
	   )
 )
 (entmake '((0 . "ATTDEF")
	    (67 . 0)
	    (8 . "borne_attributs")
	    (10 1.0 -3.33333 0.0)
	    (40 . 1.0)
	    (1 . "Y=0.0")
	    (50 . 0.0)
	    (41 . 1.0)
	    (51 . 0.0)
	    (7 . "$borne")
	    (210 0.0 0.0 1.0)
	    (3 . "Entrer le Y du point: ")
	    (2 . "ID-Y")
	    (70 . 0)
	   )
 )
 (entmake '((0 . "ATTDEF")
	    (67 . 0)
	    (8 . "borne_attributs")
	    (10 1.0 -5.0 0.0)
	    (40 . 1.0)
	    (1 . "Z=0.0")
	    (50 . 0.0)
	    (41 . 1.0)
	    (51 . 0.0)
	    (7 . "$borne")
	    (210 0.0 0.0 1.0)
	    (3 . "Entrer le Z du point: ")
	    (2 . "ID-Z")
	    (70 . 0)
	   )
 )
 (entmake '((0 . "CIRCLE")
	    (67 . 0)
	    (8 . "borne")
	    (10 0.0 0.0 0.0)
	    (40 . 0.25)
	    (210 0.0 0.0 1.0)
	   )
 )
 (entmake '((0 . "CIRCLE")
	    (67 . 0)
	    (8 . "borne")
	    (10 0.0 0.0 0.0)
	    (40 . 0.40)
	    (210 0.0 0.0 1.0)
	   )
 )
 (entmake '((0 . "ENDBLK")))
      )
    )
    (if (not nob)
      (setq nob 1)
    )
(setq js (ssget '((0 . "LINE,*POLYLINE,POINT") (-4 . [color=red]"< NOT"[/color]) (-4 . "&") (70 . 112) (-4 . "NOT>"))) n -1)
      (initget 6)
      (setq nb (getint (strcat "\nNo du 1er point <" (itoa nob) ">: ")))
      (if (not nb)
 (setq nb nob)
      )
(cond
	(js
		(repeat (sslength js)
			(setq dxf_ent (entget (ssname js (setq n (1+ n)))) dxf_210 (cdr (assoc 210 dxf_ent)) lst_pt nil)
			(cond
				((eq (cdr (assoc 0 dxf_ent)) "LINE")
					(setq lst_pt (list (cdr (assoc 10 dxf_ent)) (cdr (assoc 11 dxf_ent))))
				)
				((eq (cdr (assoc 0 dxf_ent)) "LWPOLYLINE")
					(setq lst_pt
						(mapcar
							'(lambda (x) (trans x dxf_210 0))
							(mapcar '(lambda (x) (append x (list (cdr (assoc 38 dxf_ent)))))
								(mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) dxf_ent))
							)
						)
					)
				)
				((eq (cdr (assoc 0 dxf_ent)) "POLYLINE")
					(setq e_next (entnext (cdar dxf_ent)))
					(while (= "VERTEX" (cdr (assoc 0 (setq dxf_next (entget e_next)))))
						(if (zerop (boole 1 (cdr (assoc 70 dxf_next)) 16))
							(setq lst_pt (cons (cdr (assoc 10 dxf_next)) lst_pt))
						)
						(setq e_next (entnext e_next))
					)
					(setq lst_pt (mapcar '(lambda (x) (trans x dxf_210 0)) (reverse lst_pt)))
				)
				((eq (cdr (assoc 0 dxf_ent)) "POINT")
					(setq lst_pt (list (cdr (assoc 10 dxf_ent))))
				)
			)
			(foreach pto lst_pt
				


      (setq
     x	 (car pto)
     y	 (cadr pto)
     z	 (caddr pto)
      )
      (entmake
 (append
   '((0 . "INSERT")
     (100 . "AcDbEntity")
     (67 . 0)
     (410 . "Model")
     (8 . "borne")
     (100 . "AcDbBlockReference")
     (66 . 1)
     (2 . "$borne")
     (41 . 1.0)
     (42 . 1.0)
     (43 . 1.0)
     (50 . 0.0)
     (70 . 0)
     (71 . 0)
     (44 . 0.0)
     (45 . 0.0)
    )
   (list (cons 10 (trans pto 0 dxf_210)) (cons 210 dxf_210))
 )
      )
      (entmake
 (append
   '((0 . "ATTRIB")
     (100 . "AcDbEntity")
     (67 . 0)
     (410 . "Model")
     (8 . "borne_attributs")
     (62 . 1)
     (100 . "AcDbText")
     (40 . 1.0)
     (50 . 0.0)
     (41 . 1.0)
     (51 . 0.0)
     (7 . "$borne")
     (71 . 0)
     (72 . 0)
     (11 0.0 0.0 0.0)
     (100 . "AcDbAttribute")
     (2 . "NO")
     (70 . 0)
     (73 . 0)
     (74 . 0)
    )
   (list
	(cons 1 (strcat "Borne N°:" (itoa nb)))
	(cons 10 (trans (list (+ (car pto) 1.0) (cadr pto) (caddr pto)) 0 dxf_210))
	(cons 210 dxf_210)
   )
 )
      )
      (entmake
 (append
   '((0 . "ATTRIB")
     (100 . "AcDbEntity")
     (67 . 0)
     (410 . "Model")
     (8 . "borne_attributs")
     (100 . "AcDbText")
     (40 . 1.0)
     (50 . 0.0)
     (41 . 1.0)
     (51 . 0.0)
     (7 . "$borne")
     (71 . 0)
     (72 . 0)
     (11 0.0 0.0 0.0)
     (210 0.0 0.0 1.0)
     (100 . "AcDbAttribute")
     (2 . "ID-X")
     (70 . 0)
     (73 . 0)
     (74 . 0)
    )
   (list
	(cons 1 (strcat "X=" (rtos x 2 4)))
	(cons 10 (trans (list (+ (car pto) 1.0) (+ (cadr pto) -1.66667) (caddr pto)) 0 dxf_210))
	(cons 210 dxf_210)
   )
 )
      )
      (entmake
 (append
   '((0 . "ATTRIB")
     (100 . "AcDbEntity")
     (67 . 0)
     (410 . "Model")
     (8 . "borne_attributs")
     (100 . "AcDbText")
     (40 . 1.0)
     (50 . 0.0)
     (41 . 1.0)
     (51 . 0.0)
     (7 . "$borne")
     (71 . 0)
     (72 . 0)
     (11 0.0 0.0 0.0)
     (100 . "AcDbAttribute")
     (2 . "ID-Y")
     (70 . 0)
     (73 . 0)
     (74 . 0)
    )
   (list
	(cons 1 (strcat "Y=" (rtos y 2 4)))
	(cons 10 (trans (list (+ (car pto) 1.0) (+ (cadr pto) -3.33333) (caddr pto)) 0 dxf_210))
	(cons 210 dxf_210)
   )
 )
      )
      (entmake
 (append
   '((0 . "ATTRIB")
     (100 . "AcDbEntity")
     (67 . 0)
     (410 . "Model")
     (8 . "borne_attributs")
     (100 . "AcDbText")
     (40 . 1.0)
     (50 . 0.0)
     (41 . 1.0)
     (51 . 0.0)
     (7 . "$borne")
     (71 . 0)
     (72 . 0)
     (11 0.0 0.0 0.0)
     (100 . "AcDbAttribute")
     (2 . "ID-Z")
     (70 . 0)
     (73 . 0)
     (74 . 0)
    )
   (list
	(cons 1 (strcat "Z=" (rtos z 2 4)))
   	(cons 10 (trans (list (+ (car pto) 1.0) (+ (cadr pto) -5.0) (caddr pto)) 0 dxf_210))
	(cons 210 dxf_210)
   )
 )
      )
      (entmake '((0 . "SEQEND")))
      (setq nb (1+ nb))
)
(setq pt_lst nil)
)
)
    )
    (setq nob nb)
   )
 )
 (prin1)
)

 

Enlever l'espace après "< " en rouge

 

[Edité le 26/4/2007 par bonuscad]

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

Posté(e)

Merci ca c'est de l'échange :P :P :P

 

Mais quand je lance le lisp voila le résultat

 

Commande: jalna

 

No du 1er point <1>: 1

 

Commande:

 

Et rien ne se passe :casstet: :casstet:

 

Alors j'ai oublié un truc!! :( :(

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Pas de petit double cercle (de couleur cyan) sont apparus aux extrémités des segments?

Pas de calques créés?

Si oui, active celui qui est éteint.

 

Pour la taille des insertions, si elle ne convient pas, fais une sélection rapide dur le bloc "$borne"

et change la taille en x,y,z dans les propriétés.

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

Posté(e)

Salut bonuscad

 

Pas de petit double cercle (de couleur cyan)

Non pas à l'écran, mais présent dans la liste des blocs!!

 

Pas de calques créés?

Si borne et borne_attributs même activé, ben rien

 

fais une sélection rapide dur le bloc

Aucun bloc dans le dessin

 

Alors c'est grave docteur!!

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

On va juste vérifier les entités que tu veux traiter, si c'est bien des lignes, point ou polylignes.

 

Copie-colle ce qui suit directement en ligne de commande,sélectionne une SEULE entité (exemple) sur laquelle tu aurais voulu appliqué la commande JALNA et fait un copier-coller du retour de l'écran texte.

 

((lambda ( / ent dxf_ent)

(setq ent (entsel))

(cond

(ent

(setq dxf_ent (entget (car ent)))

(foreach n dxf_ent

(if (member (car n) '(-1 330 5))

(setq dxf_ent (vl-remove n dxf_ent))

)

)

)

)

(print dxf_ent)

(prin1)

))

 

 

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

Posté(e)

Voila le résultat

A savoir que la il me demande de sélectionner un objet

 

Choix de l'objet:

((0 . "LWPOLYLINE") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0")

(100 . "AcDbPolyline") (90 . 5) (70 . 0) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10

406.416 302.28) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 406.416 278.779) (40 .

0.0) (41 . 0.0) (42 . 0.0) (10 445.605 278.779) (40 . 0.0) (41 . 0.0) (42 .

0.0) (10 445.605 294.677) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 472.807 294.677)

(40 . 0.0) (41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0))

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

J'ai fait un (entmake) avec ton retour d'info, et la commande JALNA a fonctionné sur cette entité (pour moi en tout cas) :casstet:

 

Je ne vois pas ce qui peut "clocher"...

 

Réessayes la commande JALNA en ne sélectionnant seulement que l'entité que tu m'as fourni précédemment, pour voir

 

NB:Je ne suis pas sous 2006, mais je ne pense pas que ce soit le problème.

 

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

Posté(e)

Réessayes la commande JALNA en ne sélectionnant seulement que l'entité que tu m'as fourni

 

Le problème c'est que quand je lance la commande voila ce qui ce passe

 

Commande: jalna

 

No du 1er point <1>: (je valide par défaut) et la plus rien

 

Commande:

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

(je valide par défaut) et la plus rien

 

Oui ça c'est normal, j'aurais du faire un petit (print "nombre de bloc effectué") dans le code.

 

Mais attaches toi à la partie graphique

dans le gestionnaire de calque du dois avoir 2 calques crées

"borne" actif-dégelé-de couleur cyan- MAIS verrouillé

"borne_attributs" INACTIF-dégelé-de couleur vert- MAIS verrouillé aussi

 

Pour voir les attributs il te faut (après la commande JALNA, où il ne se passe rien ;) ) ACTIVER le calque "borne_attributs"

 

Si tu veux changer l'échelle de l'ensemble des blocs créés il te faudra au préalable DEVERROUILLER les 2 calques.

 

Si effectivement, il n'y a rien, alors là, je laisses la main à un possesseur d'une version 2006 ou supérieure pour t'aider. Moi j'ai pu tester jusqu'en v-2005 et pas de problème !?!?

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

Posté(e)

OOPS

 

Le classique "<" qui fout le boxon, désolé

(setq js (ssget '((0 . "LINE,*POLYLINE,POINT") (-4 . "< NOT") (-4 . "&") (70 . 112) (-4 . "NOT>"))) n -1)

j'édite le code en rajoutant l'espace après "> "

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

Posté(e)

Désolé mais je n'ai toujours rien à l'écran :casstet: :casstet: :casstet: :casstet: :casstet:

J'ai bien ACTIVER le calque "borne_attributs"

Sélection rapide, il me trouve aucun blocs :casstet: :casstet: :casstet: :casstet: :casstet:

 

Merci tout de même!!!!

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Il te faut repomper le code dans le bloc-note et enlever l'espace qui sera en trop: "< NOT" en rouge car j'ai éditer le message original.

 

Où alors laisse moi une adresse et je t'envoie le fichier.

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

Posté(e)

CA MARCHE!!!!

 

Superbe travail même si j'ai été un peu bête sur le coup!!!!!!!! :P :P :P

 

A la prochaine Pause café

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Encore une petite chose (importante)

 

Pourrait on avoir les X-Y-Z sur des calques différents....

 

Exemple

Si j'ai pas besoin des Z et ben je gèle le calque des Z

 

Merci par avance

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Salut Bonuscad,

 

Où alors laisse moi une adresse et je t'envoie le fichier.

C'est aussi pour ce type de soucis que j'utilise mes "pages perso", il suffit de transférer le fichier sur tes pages (avec FireFTP, par exemple), et de donner ici le lien vers le fichier, les mises à jour peuvent se faire de la même manière en modifiant le fichier, sans changer le lien.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Merci beaucoup, quand je vois le boulot, ben je crois que...............

http://img337.imageshack.us/img337/9178/avatar1316vn9.gif

j'vais aller me coucher

 

N-I-C-K-E-L

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

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é