Invité ingoenius Posté(e) le 16 septembre 2010 Posté(e) le 16 septembre 2010 Petite question j'ai ce set de selection (setq myFilter(list (cons 0 "TEXT")(cons 8 "!!Nomenclature"))) comment ajouter le fait de selectionnet tout les object text sur le calque !!Nomenclature, mais SEULEMENT DANS LA PRESENTATION ACTIVE ?
Patrick_35 Posté(e) le 16 septembre 2010 Posté(e) le 16 septembre 2010 Salut Ajoute dans le filtre(cons 410 (getvar "ctab")) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Invité ingoenius Posté(e) le 16 septembre 2010 Posté(e) le 16 septembre 2010 @Patrick_35 voilà la variable "ctab" merci patrick Ici les lisp complets et corrigees 3 LISP (a utiliser dans l'espace papier) NOTE dessine un bulle blanche, un repère (numéro) et un étiquette repère) a positionner dans l'espace papier KEYRécupère toutes les notes de la présentation courante, et crée un petit tableau ordonneCCCa utiliser seulement pour changer la taille des bulles blanches Merci de me dire si j'ai perdu' du temps en créant cela ou si ça peut vous être utile ;-)en tous cas j'ai appris ma mal de commandes lisp e créant cela ;-------------------------------------------------------------------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------------------------------------------------------------------- (setq DTR (/ PI 180)) ;fattore di moltiplicazione x gradi verso radianti pi é Pi greco! (setq DESTRA (* 0 DTR)) ;traduzione del comando polar (setq SINISTRA (* 180 DTR)) ;traduzione del comando polar (setq SU (* 90 DTR)) ;traduzione del comando polar (setq GIU (* 270 DTR)) ;traduzione del comando polar (setq DIAG (* 45 DTR)) ;traduzione del comando polar ; routine che scrive la stringa nel punto indicato (defun scrivi_NOM (PText stringa);pText é punto text cioé dove inserire il testo (command "_style" "ETIQUETTE_MAX" "Simplex" 0 1 0 "N" "N" "") ;crea lo stile di testo (setvar "textstyle" "ETIQUETTE_MAX") (SETVAR "textsize" 2.5) (setq ROT_TEXT 0.0 ) ;(setq dTxt (getdist "\nDistanza del testo dal blocco: ")) (command "_TEXT" PText 2.5 0.0 stringa "" ) ) ; ;-------------------------------------------------------------------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------------------------------------------------------------------- (defun InputBox (box msg val / subr temp file dcl_id ret) ;; Retour chariot automatique à 50 caractères (defun subr (str / pos) (if (and (< 50 (strlen str)) (setq pos (vl-string-position 32 (substr str 1 50) nil T)) ) (strcat ":text_part{label=\"" (substr str 1 pos) "\";}" (subr (substr str (+ 2 pos))) ) (strcat ":text_part{label=\"" str "\";}") ) ) ;; Créer un fichier DCL temporaire (setq temp (vl-filename-mktemp "Tmp.dcl") file (open temp "w") ret "" ) ;; Ecrire le fichier (write-line (strcat "InputBox:dialog{key=\"box\";initial_focus=\"val\";spacer;:paragraph{" (subr msg) "}spacer;:edit_box{key=\"val\";edit_width=54;allow_accept=true;} spacer;ok_cancel;}" ) file ) (close file) ;; Ouvrir la boite de dialogue (setq dcl_id (load_dialog temp)) (if (not (new_dialog "InputBox" dcl_id)) (exit) ) (set_tile "box" box) (set_tile "val" val) (action_tile "accept" "(setq ret (get_tile \"val\")) (done_dialog)" ) (start_dialog) (unload_dialog dcl_id) ;;Supprimer le fichier (vl-file-delete temp) ret ) ;-------------------------------------------------------------------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------------------------------------------------------------------- ;------------------------------------------------------------------------ (defun sslist (ss / n lst) (vl-load-com) (if (= 'pickset (type ss)) (repeat (setq n (sslength ss)) (setq lst (cons (ssname ss (setq n (1- n))) lst))))) ;------------------------------------------------------------------------ (defun text-boundingbox (entity) (vl-load-com) (vla-getboundingbox (vlax-ename->vla-object entity) 'a 'b) (list (vlax-safearray->list a) (vlax-safearray->list b))) ;------------------------------------------------------------------------ (defun multitext-boundingbox (selection / lst) (vl-load-com) (setq lst (apply 'append (mapcar 'text-boundingbox (sslist selection)))) (list (list (apply 'min (mapcar 'car lst)) (apply 'min (mapcar 'cadr lst))) (list (apply 'max (mapcar 'car lst)) (apply 'max (mapcar 'cadr lst))))) ;------------------------------------------------------------------------ ;-------------------------------------------------------------------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------------------------------------------------------------------- (defun C:NOTE () ;Crea note con quadro (setq DTR (/ PI 180)) ;fattore di moltiplicazione x gradi verso radianti pi é Pi greco! (setq DESTRA (* 0 DTR)) ;traduzione del comando polar (setq SINISTRA (* 180 DTR)) ;traduzione del comando polar (setq SU (* 90 DTR)) ;traduzione del comando polar (setq GIU (* 270 DTR)) ;traduzione del comando polar (setq DIAG (* 45 DTR)) ;traduzione del comando polar ;recupero variabili (setq HPold(GETVAR "HPNAME" )) ;parametro hp typo hachura (setq ACCRold(GETVAR "OSMODE" )) ;parametri snap (setq Colorold(GETVAR "CECOLOR" )) ;parametri color (setq Ortho(GETVAR "ORTHOMODE" )) ;parametri color (setq OLDtext (getvar "textstyle")) ;parametri testo attivo (setq OLDsize (getvar "textsize")) ;altezza testo ;(setq OLDcolorsL (getvar "color")) ;altezza testo (setq OLD_layer (getvar "clayer")) ;layer current ;----------------------------------------------------------- (SETVAR "OSMODE" 0) (SETVAR "CECOLOR" "Blanc") ;Colore linee (command "_ortho" "IN" ) (command "_-color" "U" "1,29,46" "");layer colore indicato (command "_layer" "ET" "!!Nomenclature" "");creation nouveau calque pour les notes (command "_-color" "DUCALQUE" "") ;(SETVAR "CECOLOR" "255,255,254") ;Setto il colore Falso bianco par l'hachure (setq P1 (getpoint "\nRepere?")) (command "_line" P1 pause "" "") (setq P2(GETVAR "LASTPOINT" )) (setq LINEA (entlast)) (command "_circle" P1 3.0 "") ;modifico dimensioni cerchio (setq Etiq_NUM (entlast)) (SETVAR "HPNAME" "solid") ;Setto il tipo di hachure (SETVAR "CECOLOR" "255,255,254") ;Setto il colore Falso bianco par l'hachure (command "-hachures" "S" Etiq_NUM "" "" "" ) (setq Etiq_NUM_B(entlast)) ;creazione style di testo (command "_-color" "DUCALQUE" "") (setq ALT_T 2.5) ;altezza testo se non definita nello style (SETVAR "textsize" ALT_T) ;altezza testo (setq CONTO_T (getstring "\n numero etichetta?")) (setq ETI "") (setq ETI (inputbox "Nouvelle Etiquette" ETI "")) ;cambiare qui la dcl dialogo (setq ETI (strcat CONTO_T " " ETI)) ;parte da modificare per centraggio numeri (setq P3 (polar P1 SINISTRA 0.5)) (setq P3 (polar P3 GIU 1.0)) (command "_style" "ETIQUETTE_MAX" "Simplex" 0 1 0 "N" "N" "") ;crea lo stile di testo (setvar "textstyle" "ETIQUETTE_MAX") (SETVAR "textsize" ALT_T) (setq SpazioCAR 1.9) (setq Ncar (strlen ETI)) (setq Sposta_ETI (+ 2.5(* SpazioCAR Ncar))) (setq Sposta_ETI 2.5) (setq P2 (polar P2 DESTRA Sposta_ETI));vedere se posse detettare la sinistra e la destra (command "_text" P2 "" "" ETI "" "") (setq ETI_T(entlast));testo appena scritto (setq TT3 ETI_T) ;selection set (setq lst (text-boundingbox TT3)) ; ; <-- ici lst = la liste des deux points (setq R1 (polar (car lst) SINISTRA 3.5)) (setq R1 (polar R1 SU 4.5)) (setq R2 (polar (cadr lst) DESTRA 3.5)) (setq R2 (polar R2 GIU 4.5)) (command "_rectangle" "R" 1.5 R1 R2 "") (setq RECTA(entlast)) (SETVAR "CECOLOR" "255,255,254") ;Setto il colore Falso bianco par l'hachure (command "-hachures" "S" RECTA "" "" "" ) (setq Etiq_TXT_B(entlast)) (command "_Draworder" ETI_T "" "AV" "") (setq P2B (polar P2 SINISTRA 0.5)) (setq P2B (polar P2B GIU 0.5)) (command "_copy" Etiq_TXT_B "" P2 P2b "") (setq Etiq_TXT_Gris(entlast)) (setq colore 9);GRIS (command "_Draworder" Etiq_TXT_Gris "" "E" Etiq_TXT_B "") (command "_change" Etiq_TXT_Gris "" "pr" "_co" colore "" ) (setq myFilter(list (cons 0 "TEXT")(cons 8 "!!Nomenclature"))) (setq TT6(ssget "X" myFilter)) ;selection set (command "_Draworder" TT6 "" "AV" "") ;rimetto variabili a posto (SETVAR "HPNAME" HPold) (SETVAR "OSMODE" ACCRold) (SETVAR "CECOLOR" Colorold) (SETVAR "ORTHOMODE" Ortho) (SETVAR "textstyle" OLDtext) (SETVAR "textsize" OLDsize) (SETVAR "clayer" OLD_layer) ) ;------------------------------------------------------- (defun C:KEY () (vl-load-com) ;recupero variabili (setq HPold(GETVAR "HPNAME" )) ;parametro hp typo hachura (setq ACCRold(GETVAR "OSMODE" )) ;parametri snap (setq Colorold(GETVAR "CECOLOR" )) ;parametri color (setq Ortho(GETVAR "ORTHOMODE" )) ;parametri color (setq OLDtext (getvar "textstyle")) ;parametri testo attivo (setq OLDsize (getvar "textsize")) ;altezza testo (setq OLD_layer (getvar "clayer")) ;layer current (command "_layer" "CH" "!!Nomenclature" "");attivo il calco per la modifica (setq myFilter(list (cons 0 "TEXT")(cons 8 "!!Nomenclature")(cons 410 (getvar "ctab")))) (setq TTA(ssget "X" myFilter)) ;selection set (setq NomK (list nil)) ; lb lista Nomenklatura (setq INDEX 0) (setq n (sslength TTA)) (repeat n (setq EL (entget (SSNAME TTA INDEX))) (setq TESTO (cdr (assoc 1 EL))) ;estrae il testo (setq NomK (append NomK (list TESTO)));aggiungo alla lista (setq INDEX (+ 1 INDEX)) ) (setq NomK (cdr NomK)) ; elimino nil dalla lista lstr (setq Nomk2(vl-sort NomK '(lambda (x1 x2) (< (atoi x1) (atoi x2)))));creo nuova lista ordinata (setq n1(length Nomk2)) (setq IDX 0) (setq P0 (getpoint"\nDove scrivo?")) (setq PP P0) (setq PP (polar PP SU 9.0)) (setq stringa (nth IDX Nomk2));creo la prima stringa (scrivi_Nom P0 stringa) (setq List_Key (list nil)) ; lb lista calchi vuota (repeat n1 (setq stringa (nth IDX Nomk2)) (scrivi_Nom P0 stringa) (setq Scritta1 (entlast)) (setq IDX (+ 1 IDX)) (setq P0 (polar P0 GIU 6.0)) (setq List_Key (append List_Key (list Scritta1)));aggiungo alla lista ) (setq List_Key (cdr List_Key)) ; elimino nil dalla lista list_key (setq ListN (length List_Key)) (setq ID 1);contatore indici lista (setq IDXL (nth 0 List_Key)) (setq myNewSet(ssadd IDXL)) (setq Q (- ListN 1)) (repeat Q (setq IDXL (nth ID List_Key)) (setq myNewSet(ssadd IDXL myNewSet)) (setq ID (+ 1 ID)) ) (scrivi_Nom PP "KEY") (setq Scritta_KEY (entlast)) (setq myNewSet(ssadd Scritta_KEY myNewSet));qui ho la mia selezione dei testi key completa (setq lst (multitext-boundingbox MyNewSet)) ;; <-- ici lst = la liste des deux points rectangle KEY (setq R1 (car lst)) (setq R1 (polar (car lst) SINISTRA 3.5));primo della lista? (setq R1 (polar R1 GIU 4.5)) (setq R2 (cadr lst)) (setq R2 (polar (cadr lst) DESTRA 3.5)) (setq R2 (polar R2 SU 4.5)) (command "_rectangle" "R" 1.5 R1 R2 "") (SETVAR "OSMODE" 0) (SETVAR "CECOLOR" "Blanc") ;Colore linee (SETVAR "HPNAME" "solid") ;Setto il tipo di hachure (command "_ortho" "IN" ) (command "_-color" "U" "1,29,46" "");layer colore indicato (command "_layer" "ET" "!!Nomenclature" "");creation nouveau calque pour les notes (command "_-layer" "co" "u" "1,29,46" "" "" "") (command "_-color" "DUCALQUE" "") (command "_rectangle" "R" 1.5 R1 R2 "") (setq RECTA(entlast)) (SETVAR "CECOLOR" "255,255,254") ;Setto il colore Falso bianco par l'hachure (command "-hachures" "S" RECTA "" "" "" ) (setq Etiq_TXT_B(entlast)) (command "_Draworder" ETI_T "" "AV" "") (setq P2B (polar P2 SINISTRA 0.5)) (setq P2B (polar P2B GIU 0.5)) (command "_copy" Etiq_TXT_B "" P2 P2b "") ;(command "_copy" RECTA "" P2 P2b "") (setq Etiq_TXT_Gris(entlast)) (setq colore 9);GRIS (command "_Draworder" Etiq_TXT_Gris "" "E" Etiq_TXT_B "") (command "_change" Etiq_TXT_Gris "" "pr" "_co" colore "" ) (setq myFilter(list (cons 0 "TEXT")(cons 8 "!!Nomenclature"))) (setq TT3(ssget "X" myFilter)) ;selection set (command "_Draworder" TT3 "" "AV" "") (SETVAR "HPNAME" HPold) (SETVAR "OSMODE" ACCRold) (SETVAR "CECOLOR" Colorold) (SETVAR "ORTHOMODE" Ortho) (SETVAR "textstyle" OLDtext) (SETVAR "textsize" OLDsize) (SETVAR "clayer" OLD_layer) ) ;-------------------------------------------------------FINE KEY (defun C:CCC () (setq myFilter(list (cons 0 "CIRCLE")(cons 8 "!!Nomenclature"))) (setq TTC(ssget "X" myFilter)) ;selection set (setq nc (sslength TTC)) (setq INDEX 0) (setq New_R (getreal"\nNuovo Raggio?")) (setq Newrayon (cons 40 New_R)) (repeat nc (setq EL (entget (ssname TTC INDEX))) (setq NW_R (cons 40 New_R)) (setq OLD_R (assoc 40 EL)) (entmod (subst NW_R OLD_R EL)) (setq INDEX (1+ INDEX)) ) ) [Edité le 22/9/2010 par ingoenius]
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