DenisHen Posté(e) le 28 juillet 2018 Posté(e) le 28 juillet 2018 Bonjour à tous. J'aimerais, avant de créér un cadre (une polyligne rectangulaire), savoir si il y a des entités dans ce secteur. Sachant que j'ai les coordonnées minimum (point bas gauche) et maximum (point haut droit). Il serait préférable que je le sache avant de créer ce rectangle. Si quelqu'un a une astuce, un conseil... je suis preneur... 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)
lecrabe Posté(e) le 28 juillet 2018 Posté(e) le 28 juillet 2018 Hello Denis Etant un NeuNeu en programmation, je vais raisonner AutoCAD ! Commande: SELECT CLIC Coin puis CLIC Coin A ce moment j'ai dans le jeu de selection PRECEDENT 0-N entites ...Donc si je fais par exemple un EFFACER P ...Je "nettoie" le contenu de la selection precedente ... Bon WE, Bye, lecrabe Sinon les routines SSOC & SSOF de Gilles pourront eventuellement t'aider ! ? ;;; SSOC pour selectionner tous les objets captures, suivant ;;; la vue, par le cercle, l'ellipse ou la polyligne. (defun c:ssoc (/ ss opt) (and (or (and (setq ss (cadr (ssgetfirst))) (= 1 (sslength ss)) ) (and (sssetfirst nil nil) (setq ss (ssget "_:S:E" (list '(-4 . "<OR") '(0 . "CIRCLE") '(-4 . "<AND") '(0 . "ELLIPSE") '(41 . 0.0) (cons 42 (* 2 pi)) '(-4 . "AND>") '(-4 . "<AND") '(0 . "LWPOLYLINE") '(-4 . "&") '(70 . 1) '(-4 . "AND>") '(-4 . "OR>") ) ) ) ) ) (sssetfirst nil (ssdel (ssname ss 0) (SelByObj (ssname ss 0) "Cp" nil)) ) ) (princ) ) ;;;===============================================================;;; ;;; SSOF pour selectionner tous les objets contenus, suivant ;;; la vue, dans le cercle, l'ellipse ou la polyligne. (defun c:ssof (/ ss opt) (and (or (and (setq ss (cadr (ssgetfirst))) (= 1 (sslength ss)) ) (and (sssetfirst nil nil) (setq ss (ssget "_:S:E" (list '(-4 . "<OR") '(0 . "CIRCLE") '(-4 . "<AND") '(0 . "ELLIPSE") '(41 . 0.0) (cons 42 (* 2 pi)) '(-4 . "AND>") '(-4 . "<AND") '(0 . "LWPOLYLINE") '(-4 . "&") '(70 . 1) '(-4 . "AND>") '(-4 . "OR>") ) ) ) ) ) (sssetfirst nil (SelByObj (ssname ss 0) "Wp" nil) ) ) (princ) ) Autodesk Expert Elite Team
DenisHen Posté(e) le 28 juillet 2018 Auteur Posté(e) le 28 juillet 2018 Salut Ô Décapode... Je fais un code pour faire des cases, je cherche donc à ne pas créer une case vide. Mais je vais étudier ta proposition de code... Merci pour ton aide... 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)
lecrabe Posté(e) le 28 juillet 2018 Posté(e) le 28 juillet 2018 Hello Desole mais j'ai compris (de TON sujet) que tu desirais savoir si il y a avait des Entites dans une selection (rectangulaire ou autre) donc j'ai repondu en consequence ... Si tu desires dessiner un Damier ou Carroyage, ALORS c UN PEU different ! Je crois que tu as un AutoCAD MAP 201X !?DONC SVP tu regardes le BON VIEUX Lisp "makegrid.lsp" qui est fourni en standard avec MAP (livre par Autodesk depuis 1998) ! C:\Program Files\Autodesk\Autodesk AutoCAD Map 3D 2014\Sample C:\Program Files\Autodesk\AutoCAD 2015\Map\SampleC:\Program Files\Autodesk\AutoCAD 2016\Map\SampleC:\Program Files\Autodesk\AutoCAD 2017\Map\SampleC:\Program Files\Autodesk\AutoCAD 2018\Map\SampleC:\Program Files\Autodesk\AutoCAD 2019\Map\Sample Ainsi tu auras "de base" un joli Damier (Carre ou Rectangulaire) ! Avec en plus un TEXTE d'Identification AU CENTRE ... "makegrid.lsp" est parametrable : - Nombre de ROW, COLUMN - Taille de HEIGHT, WIDTH- Texte Prefixe - Nombre de Chiffres Bye, lecrabe PS: Si tu veux dessiner un Carroyage Lambert en Lisp, alors il y a plusieurs possibilites (Merci Bruno par exemple et aussi un Lisp de AutoCAD CIVIL) Autodesk Expert Elite Team
DenisHen Posté(e) le 28 juillet 2018 Auteur Posté(e) le 28 juillet 2018 Salut. Oui, je cherche bien à dessiner un damier... Je n'ai pas dis que tu m'avais répondu à coté... Loin de là, mais ton code me donne du fils à retordre. ;) Je vais étudier de près le lisp "makegrid.lsp" que je ne connaissais pas... Mais après quelques recherches, je ne l'ai pas trouvé... Encore merci à toi... 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)
lecrabe Posté(e) le 28 juillet 2018 Posté(e) le 28 juillet 2018 Hello Voici un Coper / Coller du "bon vieux" MAKEGRID.lsp (livre par Autodesk depuis 1998) ... Bye, lecrabe ;;;---------------------------------------------------------------------------; ;;; ;;; MAKEGRID.LSP ;;; ;;; (C) Copyright 1998 by Autodesk, Inc. ;;; ;;; Permission to use, copy, modify, and distribute this software ;;; for any purpose and without fee is hereby granted, provided ;;; that the above copyright notice appears in all copies and ;;; that both that copyright notice and the limited warranty and ;;; restricted rights notice below appear in all supporting ;;; documentation. ;;; ;;; AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS. ;;; AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF ;;; MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC. ;;; DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE ;;; UNINTERRUPTED OR ERROR FREE. ;;; ;;; Use, duplication, or disclosure by the U.S. Government is subject to ;;; restrictions set forth in FAR 52.227-19 (Commercial Computer ;;; Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii) ;;; (Rights in Technical Data and Computer Software), as applicable. ;;; ;;; July 1996 ;;; ;;;---------------------------------------------------------------------------; ;;; ;;; DESCRIPTION ;;; ;;; Draw rectangular grid lines and number the cells. ;;; ;;;---------------------------------------------------------------------------; ;;;**************************************************************************** ;;; Function: C:MAKEGRID ;;; ;;; Use this function to create and label a rectilinear grid. Prompts ;;; for base point, number of rows and columns, row height and column ;;; width, text prefix and the number of digits for the suffix. Finally, ;;; the text height is input if the current style has no height defined. ;;; (defun C:MAKEGRID ( / basept baseptx basepty numrow numcol width height textsize padzero prefix styl ename pt label ct holdecho heightflag error elist ) (setq error *error*) ;; ;; Define error handler ;; (defun *error* (msg) (alert msg) (setq *error* error) (exit) ) (setq holdecho (getvar "CMDECHO")) (setvar "cmdecho" 0) ;; ;; Get grid dimensions ;; (setq basept (getpoint "\nPick base point: ")) (setq numrow (getint "\nEnter number of rows: ")) (setq numcol (getint "\nEnter number of columns: ")) (if (not (and (> numrow 0) (> numcol 0))) (prompt "\nERROR: number of rows or number of columns invalid.") (progn (initget 128) (setq pt (getcorner basept "\nUnit cell or row height (|||): ")) (if (= (type pt) 'STR) (progn (setq height (atof pt)) (setq width (getdist basept "\nColumn width (---): ")) ) (progn (setq width (abs (- (car pt)(car basept)))) (setq height (abs (- (cadr pt)(cadr basept)))) ) ) ) ) (if (and width height) (progn ;; ;; Get text information ;; (setq prefix (getstring "\nEnter text prefix: ")) (if (not prefix) (setq prefix "") ) (setq padzero (getint "\nEnter number of digits: ")) (if (not padzero) (setq padzero 0) ) (if (> padzero 0) (setq padzero (- padzero 1)) ) ;; ;; Determine if current text style has a default height ;; (setq styl (getvar "TEXTSTYLE")) (setq styl (tblsearch "STYLE" styl)) (setq textsize (cdr (assoc 40 styl))) (if (= 0.0 textsize) (setq heightflag T) (setq heightflag nil) ) ;; ;; if not prompt for height ;; (while (= textsize 0.0) (setq textsize (getdist "\nEnter text size: ")) (if (= textsize 0.0) (princ "\nText size must be greater than zero.") ) ) ) );if ;; ;; Make and label grid ;; (if (and basept numrow numcol height width) (progn (setq ct 0) (setq baseptx (nth 0 basept)) (setq basepty (nth 1 basept)) ;; ;; for each row ;; (repeat numrow (setq baseptx (nth 0 basept)) ;for each column (repeat numcol ;; ;; make the rectangle ;; (if (= 0 (getvar "PLINETYPE")) (progn (entmake (list (cons 0 "POLYLINE")(cons 70 1))) (entmake (list (cons 0 "VERTEX")(cons 10 (list baseptx basepty)))) (entmake (list (cons 0 "VERTEX")(cons 10 (list (+ baseptx width) basepty)))) (entmake (list (cons 0 "VERTEX")(cons 10 (list (+ baseptx width) (+ basepty height))))) (entmake (list (cons 0 "VERTEX")(cons 10 (list baseptx (+ basepty height))))) (entmake (list (cons 0 "SEQEND"))) ) (progn (setq elist (list (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 67 0) (cons 100 "AcDbPolyline") (cons 90 4) (cons 70 1) (cons 10 (list baseptx basepty)) (cons 10 (list (+ baseptx width) basepty)) (cons 10 (list (+ baseptx width) (+ basepty height))) (cons 10 (list baseptx (+ basepty height))) ) ) (entmake elist) )) (setq ename (entlast)) (setq baseptx (+ baseptx width)) ;; ;; make the label ;; (setq ct (+ ct 1)) (setq pt (ade_expreval ename ".CENTER" "point")) (setq chk (strlen (itoa ct))) (setq label "") (repeat (- padzero (- chk 1)) (setq label (strcat label "0")) ) (setq label (strcat prefix label (itoa ct))) ;; ;; if text style has no height setting ;; (if heightflag (command "_text" "_justify" "_middle" pt textsize 0 label) (command "_text" "_justify" "_middle" pt 0 label) ) );repeat (setq basepty (+ basepty height)) );repeat ) );if (setq *error* error) (setvar "CMDECHO" holdecho) (prompt "\nProcessing completed.") (princ) );C:MAKEGRID (prompt "\nType: MAKEGRID to draw grid lines.") (princ) Autodesk Expert Elite Team
DenisHen Posté(e) le 28 juillet 2018 Auteur Posté(e) le 28 juillet 2018 Salut. Merci pour ce code, mais sans le savoir, j'ai déjà écris le mien :( qui, en résumé, fait la même chose que "makegrid.lsp"... :blink: je cherche maintenant à ne pas créer la case s'il n'y a rien dedans... J'ai bien tenté un (ssget, mais j'ai quelques problèmes avec... C'est l'objet d'un autre post... 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)
lecrabe Posté(e) le 28 juillet 2018 Posté(e) le 28 juillet 2018 Hello Denis a re-invente l'Eau Chaude ! Une suggestion de developpement subtil a partir de "makegrid.lsp" - Sortir un Tableau avec le nombre d'entites par case et l'identifiant de la case ... - + Total general - + Nombre de cases VIDES et Nombre de cases avec au moins UNE entite- etc Par contre comment traiter par exemple, une Polyligne ou Cercle ou xxxxx, qui traverse N cases !? Bye, lecrabe Autodesk Expert Elite Team
DenisHen Posté(e) le 28 juillet 2018 Auteur Posté(e) le 28 juillet 2018 Salut. En fait, je cherche, via un (sslength de mon jeu de sélection (zone de mon futur casé), s'il y a au moins une entité dans la case dont je connais les coordonnées. Si oui, je créé la case avec cartouche...Si non, je passe a la case prochaine. Mon Lisp est déjà fait, mais je ne gérais pas les cases vides... Grossière erreur j'en conviens... ;) 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)
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant