Aller au contenu

Comment identifier un point particulier


Messages recommandés

Posté(e)

Bonjour à tous...

 

Oui, je suis de retour ! !

 

J'aimerai créer des points indentifiables... pour leur donner des matricules et d'autres valeurs... (n° de lot...)

 

Je sais que certains seront tenté de me répondre : "Ben, fais des blocs ! !"

 

Et je leur répondrai : "J'y ai pensé et j'ai déjà essayé, mais je n'arrive ABSOLUMENT PAS à gérer les attributs dans les blocs..."

 

Donc, si quelqu'un a des trucs ou astuces pour les attributs de bloc... Je les aimerais...

 

Merci à tous...

 

PS: PhalèneCAD commence à prendre forme... Je dois encore régler quelques petits trucs... Mais c'est sur, ce sera sur mon site...

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)

Bon, premièrement, merci de vous intéresser à mon problème, secondo, pardon Didier et Patrick_35, j'aurai du faire l'effort de moi-même, je le fais donc, maintenant :

 

Je n'arrive pas à cliquer sur un block J'au un bloc qui comprend 3 attributs "Matri", "X" et "Y". Je n'arrive pas à attribuer un numéro incrémenté dans "Matri" et je n'arrive pas à placer dans les attributs "X" et "Y" les coordonnées du point d'insertion du block.

 

Car mon but étais d'inserer ce bloc "PointPoly" à chaque sommet de plusieur polylignes, tout en évitant d'insérer plusieurs fois ce bloc si plusieurs polylignes ont un ou des sommets communs...

 

Bref, je clique UNE polyligne de 5 sommets, le bloc s'insert 5 fois avec "Matri" de 1 à 5. Je clique une autre polyligne qui a un sommet (le 2 par exemple) en commun avec le sommet n°3 de la polyligne précédente, On aurra "Matri" pour la nouvelle dernière polyligne 6, 7, 2, 8, 9, ....

 

Je peux faire un .dwg au cas ou mon explication serait encore floue...

 

Sachant que j'avais essayé de faire çà il y a au moins 8 mois et que j'ai tout oublié...

 

Petite serise sur le gateau, je dois faire autant de tableau (dans le dessin) que de polyligne avec (les données sont fausses, c'est juste pour exemple) :

 

Matri..|....X....|....Y....|....Dist.

1........|.12.5..|.53.1.|

..........|..........|.........|..3.25m

2........|.19.2..|.56.4.|

..........|..........|.........|..7.15m

3........|.......

 

Voilà...

 

merci à tous pour vos efforts de lecture et pardon pour la migraine...

 

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)

je me suis amusé à taper ce qui suit

mais en me relisant, je suis conscient des améliorations

je pense que ça fonctionne, mais c'est loin, très loin d'une BONNE routine

 

pour ma défense, c'est vendredi soir, et je n'ai plus l'imagination très claire.

c'est à étudier et à simplifier

d'autant que ça ne marchera que s'il y a un bloc "pointpoly"

inséré dans un coin avec le matricule 0 (zéro)

allez je rentre dans ma maison... :exclam:

 

(setq jeu1 (ssget "x" (list (cons 0 "INSERT") (cons 2 "pointpoly"))))
(setq n 0)
(setq listenum '())
(repeat	(sslength jeu1)
 (setq tempo (ssname jeu1 n))
 (setq numtempo (cdr (assoc 1 (entget (entnext tempo)))))
 (setq listenum (append listenum (list numtempo)))
 (setq n (+ 1 n))
)
(setq n 0)
(setq matricule (atoi(nth n listenum)))
(repeat (length listenum)
 (setq n ( + 1 n))
 (setq matricule (max matricule (setq matricule (atoi (nth 1 listenum )))))
 )
(setq matricule ( + 1 matricule))



(setq n 0)
;++++++++++++++++++++++++++++++++
(setq jeu2 (ssget "x" (list (cons 0 "INSERT") (cons 2 "pointpoly"))))
(setq n 0)
(repeat	(sslength jeu2)
 (setq point (cdr (assoc 10 (entget (ssname jeu2 n)))))
 (setq point (list (car point) (cadr point)))
 (setq listepoints (append listepoints (list point)))
 (setq n (+ 1 n))
)
;++++++++++++++++++++++++++++++++
(setq ent (car (entsel "\nPolyligne à immatriculer ?\n")))
(setq listesommets
      (mapcar 'cdr
       (vl-remove-if-not
	 '(lambda (x) (= (car x) 10))
	 (entget ent)
       )
      )
)
(setq n 0)
(repeat	(length listesommets)
 (setq sommet (nth n listesommets))
;++++++++++++++++++++++++++++++++++++++
 (if (and
(= (car (car (member sommet listepoints))) (car sommet))
(= (cadr (car (member sommet listepoints))) (cadr sommet))
     )
   (progn
     (setq  n  (+ 1 n)
     sommet (nth n listesommets)
     ;matricule ( + 1 matricule)
     )
     )
   )
 (command "_insert"
   "pointpoly"
   (nth n listesommets)
   ""
   ""
   ""
   (itoa matricule)
   (rtos (car sommet) 2 2)
   (rtos (cadr sommet) 2 2)
   
 )
 (setq	matricule (+ 1 matricule)
n	  (+ 1 n)
 )

)


 

amicalement

Posté(e)

Merci des millions de fois, Didier.

 

Rentre dans ta maison et emporte avec toi "une bonne fin de semaine"...

 

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)

Un voilà un qui fait un bloc qui s'incrémente , en plaçant l'attribut dans un calque inactif et verrouillé.

 

En mixant avec la proposition de Didier tu vas pouvoir avancer. ;)

 

(defun c:borne (/ pto x y z)
 (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)
    )
    (initget 8)
    (while (setq pto (getpoint "\nPoint de la borne: "))
      (initget 6)
      (setq nb (getint (strcat "\nNo de la borne<" (itoa nob) ">: ")))
      (if (not nb)
 (setq nb nob)
      )
      (setq pto (trans pto 1 0)
     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)
     (210 0.0 0.0 1.0)
    )
   (list (cons 10 pto))
 )
      )
      (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)
     (210 0.0 0.0 1.0)
     (100 . "AcDbAttribute")
     (2 . "NO")
     (70 . 0)
     (73 . 0)
     (74 . 0)
    )
   (list (cons 1 (strcat "Borne N°:" (itoa nb))))
   (list (cons 10 (list (+ (car pto) 1.0) (cadr pto))))
 )
      )
      (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))))
   (list
     (cons 10 (list (+ (car pto) 1.0) (+ (cadr pto) -1.66667)))
   )
 )
      )
      (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-Y")
     (70 . 0)
     (73 . 0)
     (74 . 0)
    )
   (list (cons 1 (strcat "Y=" (rtos y 2 4))))
   (list
     (cons 10 (list (+ (car pto) 1.0) (+ (cadr pto) -3.33333)))
   )
 )
      )
      (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-Z")
     (70 . 0)
     (73 . 0)
     (74 . 0)
    )
   (list (cons 1 (strcat "Z=" (rtos z 2 4))))
   (list (cons 10 (list (+ (car pto) 1.0) (+ (cadr pto) -5.0)))
   )
 )
      )
      (entmake '((0 . "SEQEND")))
      (setq nob (1+ nob))
      (initget 8)
    )
   )
 )
 (princ)
)


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

Posté(e)

Eh, les mecs ! ! Je suis déjà insomniaque ! ! Comme "Maxwell, qualité filtre" ! ! Donc, pas la peine d'en rajouter ! !

 

...

 

Merci, Oh toi BonusCAD ! !

 

 

Petite apparté, "Talus.lsp" plantait TOUJOURS à la première utilisation d'une cession AutoCAD... J'ai découvert, il y a deux jours, que je pouvais pallier cet inconvéniant, en cliquant sur "Choix dans Liste des calques"... puis "Ok" car j'avais déjà créer le calque de "destination" dans mon MNS.

 

Je dois te dire que je créais le calque "Talus" avant de lancer la commande "talus"

 

 

 

C'est le premier et le seul moyen que j'ai trouvé pour faire de ton EXCELLENTE routine une routine PARFAITE ! ! !

 

Bon, faut que j'aille bossé... Merci les amis ! !

 

Bon...

 

...

...

... J'y...

...

...

Vais

...

...

...

Denis... ( qui y vas ... Fatigué... Mais entousiasmé ! ! )

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)

Des milliards de merci à vous ! ! !

 

Je vais pouvoir progresser avec ça ! !

 

Merci didier, je vais faire le tri dans ton post, qui reste confu pour moi, tu sais, tant qu'il n'y a pas de "(defun ", je ne peu pas formuler ton post...

 

J'ai donc un peu de mal à le comprendre... Mais ça devrai venir ! !

 

 

Et pour bonuscad, merci pour la création de calques et de style de texte, je ne savais le faire que par "command" ! !

 

Maintenant, je vais pouvoir jouer comme un petit fou ! !

 

Un seul et dernier problème, comment faire pour ne pas créer deux fois le même point. Car c'est depuis une routine qui analyse la polyligne cliquée qui créra ces blocs et fera un tableau...

 

Je me sers déjà de cette routine que voici :

 

(defun c:TabDA (/ p1 p2 rot Num Num1 VOrtho Surf Texte)
         ;(setq Haut (atof Haut))
 (if (= (setq Ech (vlax-ldata-get "Phalene" "Ech1"))
        nil
     ) ;_ Fin de =
   (c:PhEch)
 ) ;_ Fin de if
 (if (= (setq Num (vlax-ldata-get "Phalene" "NumPtDA"))
        nil
     ) ;_ Fin de =
   (setq Num 1)
 ) ;_ Fin de if
 (setvar "dimzin" 3)
 (setq Haut 2.5)
 (if (not (tblsearch "STYLE" "TableauDA"))
   (command "_style" "TableauDA" "simplex" 0 1 0 "N" "N" "N" "")
 ) ;_ Fin de if
 (command "-calque" "e" "Tableau DA" "co" 7 "" "")
 (setq rot (- (vlax-ldata-get "Phalene" "AngSCU") 100))
 (setq ename (car (entsel "\nSelectionnez la polyligne: ")))
 (command "aire" "e" ename)
         ; Saisi du point d'insertion du tableau
 (setq pins (getpoint "\nPosition du texte : "))
 (if (null pins)
   (setq pins (getvar "lastpoint"))
 ) ;_ Fin de if
 (setq VOrtho (getvar "orthomode"))
 (if (= (setq rot (getorient pins
                             (strcat "\nOrientation du texte :")
                  ) ;_ Fin de getorient
        ) ;_ Fin de setq
        nil
     ) ;_ Fin de =
   (progn (princ
            "\n * * * * * * * Orientation horizontale\n"
          ) ;_ Fin de princ
          (setq rot (- (vlax-ldata-get "Phalene" "AngSCU") 100))
   ) ;_ Fin de progn
   (progn (princ "\n * * * * * * * Orientation alignée :")
          (setq rot (- 400 (* 200 (/ rot pi))))
          (if (<= rot 400)
            (- rot 400)
          ) ;_ Fin de if
   ) ;_ Fin de progn
 ) ;_ Fin de if
 (setq Surf (strcat "\nSuperficie = " (rtos (getvar "area") 2 1) " m²"))
 (getVertices ename)
 (setq pp    (car return)
       Num1  "1"
       Num   1
       Texte "Pt    X        Y\n                       Distances\n"
 ) ;_ Fin de setq
 (princ (- rot 300))
         ;(command "_.line" pins (polar pins rot 5) "")
         ;(command "_.line" pins (polar pins (rtos rot 2 3) (/ (* Haut Ech) 10.0)) "")
 (setq p1 (car return))
 (command "point" p1 "")
 (command "_-mtext" "_none" p1 "j" "bg" "h" (/ (* Haut Ech) 1000.0) "_r" rot "_w" "0.00" Num "")
         ;(setvar "orthomode" VOrtho)
 (setq x (rtos (car p1))
       y (rtos (cadr p1))
 ) ;_ Fin de setq
 (princ (strcat "\nx=" x "   y=" y))
 (while (< (strlen x) 9) (setq x (strcat " " x)))
 (while (< (strlen y) 9) (setq y (strcat " " y)))
 (setq Texte (strcat Texte (rtos Num 2 0) "  " x " " y "\n"))
 (setq return (cdr return))
 (setq Num (+ Num 1))
 (while (not (equal (car return) nil))
   (setq p2 (car return))
         ;(if (/= p1 p2)
         ; (progn
   (setq x (rtos (car p2))
         y (rtos (cadr p2))
   ) ;_ Fin de setq
   (princ (strcat "\nx=" x "   y=" y))
   (while (< (strlen x) 9) (setq x (strcat " " x)))
   (while (< (strlen y) 9) (setq y (strcat " " y)))
         ;(vlax-ldata-put

   (command "point" p2 "")
   (command "_-mtext" "_none" p2 "j" "bg" "h" (/ (* Haut Ech) 1000.0) "_r" rot "_w" "0.00" Num "")
         ; ) ;_ Fin de progn
         ;) ;_ Fin de if
   (setq Texte (strcat Texte "                       " (rtos (Distance p1 p2) 2 2) "m\n"))
   (setq Texte (strcat Texte (rtos Num 2 0) "  " x " " y "\n"))
   (setq Num (+ Num 1))
   (setq return (cdr return))
   (setq p1 p2)
 ) ;_ Fin de while
 (setq Texte (strcat Texte "                       " (rtos (Distance p1 pp) 2 2) "m\n"))
 (setq Texte (strcat Texte "1 \n"))
         ;(command "_.erase" "d" "")
 (setq Texte (strcat Texte Surf))

 (command "_-mtext"
          "_none"
          pins
          "j"
          "hg"
          "e"
          "e"
          "0.6x"
          "h"
          (/ (* Haut Ech) 1000.0)
          "_r"
          rot
          "_w"
          "0.00"
          Texte
          ""
 ) ;_ Fin de command
 (vlax-ldata-put "Phalene" "NumPtDA" (- Num 1))
 (princ)
) ;_ Fin de defun

 

 

Chercher dans tous les blocs "$borne" du dessin et comparer leurs coordonnées d'insertion ? ?

 

(et au fait, pourquoi le "$" avant "borne" ?)

 

Merci encore à tous, j'ai imprimé tout ça et j'en ai fais ma lecture de chevet ! !

 

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)

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é