PHILPHIL
Membres-
Compteur de contenus
1 256 -
Inscription
-
Dernière visite
-
Jours gagnés
10
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par PHILPHIL
-
hello tu vas dans la fenetre des XREF, tu cherches la ligne concernant le fichier *.dxe en cliquant droit dessus il te propose "mise a jour" et ton tableaux se met a jour, sinon en bas a droite un icone comme une chaine, clic droit dessus, "mise a jour extraction de données" enfin si c'est ca que tu cherchais Phil
-
hello j'exporte tous les tableaux avec LXL521 de Patrick_35 et pas de soucis Phil
-
HELLO X_ALL test en mettant les blocs a l'echelle X,Y,Z, 1,1,1 ET si c'est ca refait ton bloc en multipliant l'echelle par 1.4 tu le réapatrie a l'échelle 1 trop simple ? mais sinon j'ai déja eu ce truc sur les blocs non uniforme et ca avait l'air de marcher, mais ils etaient tous a l'échelle 1,1,1 j'ai pas compris pourquoi pour autocad, ils n'étaient pas uniforme peut etre a voir dans le parametre qui gere l uniformité du bloc avec "DUMP" a+ Phil
-
TROUVER DANS UN BLOC DIRECTEMENT L'ATTRIBUT
PHILPHIL a répondu à un(e) sujet de PHILPHIL dans Pour aller plus loin en LISP
hello Gile ca marche bien et c'est plus rapide et le lisp est plus court qu'avec des "foreach" voici le lisp si besoin pour trouver toutes les données d'une entitée (defun c:dump_all_activeX (/ ent obj ) (while (setq ent (car (entsel "\nSélectionnez l'entité pour obtenir les données activeX: "))) (dumpallproperties ent ) ) (princ) ) pour sélectionner des blocs avec le nom ( effectivename) suivant une liste prédéfinie (listenamebloc) voir lisp suivant ;; renvoie un jeu de sélection filtré par une liste de nom (defun ssbnameLISTE ( listenamebloc / ;;; selinsert i ent) (prompt "\nSELECTIONNER LES BLOCS :") (if (setq selinsert (ssget (list (cons 0 "INSERT") ;;; (cons 2 (strcat "`*U*," namebloc1)) ))) (repeat (setq i (sslength selinsert)) (setq ent (ssname selinsert (setq i (1- i)))) (if (= (member (vla-get-effectivename (vlax-ename->vla-object ent)) listenamebloc ) nil ) (ssdel ent selinsert) ) ) ) selinsert ) exemple selectionne des blocs suivant une liste de nom suivant un nom de bloc "MARCOG" ou "MARCOD" modifie la propriete dynamique du bloc "LARGEUR CACHE" suivant la longueur du texte dans l'attribut "COUPE" (defun c:adapter_wipeout_attribut (/) (setvar "cmdecho" 0) (setvar "CURSORSIZE" 10) (setq osm (getvar "osmode")) (prompt "\nSELECTIONNER LES BLOCS DE NIVEAU POUR LA MODIFICATION DES WIPEOUT :") (setq listenamebloc (list "MARCOG" "COTNIVG" "COTNIVD" "MARCOD")) (ssbnameliste listenamebloc) (setq com (sslength selinsert)) (setq compt 0) (acet-ui-progress-init "Avancement" com) (while (< compt com) (if (or (= (vla-get-effectivename (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname selinsert compt)))))) "COTNIVG" ) (= (vla-get-effectivename (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname selinsert compt)))))) "COTNIVD" ) ) (progn (setpropertyvalue (cdr (assoc -1 (entget (ssname selinsert compt)))) "AcDbDynBlockPropertyLONGUEUR BAS" (* (1+ (round (- (caadr (textbox (list (cons 1 (getpropertyvalue (cdr (assoc -1 (entget (ssname selinsert compt)))) "REF"))) ) ) (caar (textbox (list (cons 1 (getpropertyvalue (cdr (assoc -1 (entget (ssname selinsert compt)))) "REF"))) ) ) ) 0.25 ) ) 4 ) ) (setpropertyvalue (cdr (assoc -1 (entget (ssname selinsert compt)))) "AcDbDynBlockPropertyLONGUEUR MILIEU" (* (1+ (round (- (caadr (textbox (list (cons 1 (getpropertyvalue (cdr (assoc -1 (entget (ssname selinsert compt)))) "ALT"))) ) ) (caar (textbox (list (cons 1 (getpropertyvalue (cdr (assoc -1 (entget (ssname selinsert compt)))) "ALT"))) ) ) ) 0.25 ) ) 4 ) ) (if (= (getpropertyvalue (cdr (assoc -1 (entget (ssname selinsert compt)))) "NIVEAU") "") (progn (setpropertyvalue (cdr (assoc -1 (entget (ssname selinsert compt)))) "AcDbDynBlockPropertyNb NIVEAU" "2 NIVEAUX" ) (setpropertyvalue (cdr (assoc -1 (entget (ssname selinsert compt)))) "AcDbDynBlockPropertyLONGUEUR HAUT" 1 ) ) (progn (setpropertyvalue (cdr (assoc -1 (entget (ssname selinsert compt)))) "AcDbDynBlockPropertyNb NIVEAU" "3 NIVEAUX" ) (setpropertyvalue (cdr (assoc -1 (entget (ssname selinsert compt)))) "AcDbDynBlockPropertyLONGUEUR HAUT" (* (1+ (round (- (caadr (textbox (list (cons 1 (getpropertyvalue (cdr (assoc -1 (entget (ssname selinsert compt)))) "NIVEAU"))) ) ) (caar (textbox (list (cons 1 (getpropertyvalue (cdr (assoc -1 (entget (ssname selinsert compt)))) "NIVEAU"))) ) ) ) 0.25 ) ) 4 ) ) ) ) ) ) (if (or (= (vla-get-effectivename (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname selinsert compt)))))) "MARCOG" ) (= (vla-get-effectivename (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname selinsert compt)))))) "MARCOD" ) ) (progn (setpropertyvalue (cdr (assoc -1 (entget (ssname selinsert compt)))) "AcDbDynBlockPropertyLARGEUR CACHE" (* (1+ (round (- (caadr (textbox (list (cons 1 (getpropertyvalue (cdr (assoc -1 (entget (ssname selinsert compt)))) "COUPE"))) ) ) (caar (textbox (list (cons 1 (getpropertyvalue (cdr (assoc -1 (entget (ssname selinsert compt)))) "COUPE"))) ) ) ) 0.25 ) ) 8 ) ) (setpropertyvalue (cdr (assoc -1 (entget (ssname selinsert compt)))) "AcDbDynBlockPropertyLONGUEUR" (* (+ 4 (round (- (caadr (textbox (list (cons 1 (getpropertyvalue (cdr (assoc -1 (entget (ssname selinsert compt)))) "COUPE"))) ) ) (caar (textbox (list (cons 1 (getpropertyvalue (cdr (assoc -1 (entget (ssname selinsert compt)))) "COUPE"))) ) ) ) 0.25 ) ) 8 ) ) ) ) (acet-ui-progress-init (strcat "Avancement " (rtos (/ (* compt 100) (float com)) 2 2) " %") com) (acet-ui-progress-safe compt) (setq compt (1+ compt)) ) (acet-ui-progress-done) (setvar "osmode" osm) (princ) ) Phil -
TROUVER DANS UN BLOC DIRECTEMENT L'ATTRIBUT
PHILPHIL a posté un sujet dans Pour aller plus loin en LISP
Bonjour j'ai des blocs paramétriques avec des attributs et des propriétés rien de plus simple un attribut "REF" une propriété dynamique "LONGUEUR BAS" ( influence une longueur de wipeout ) comme on connait le Nom de l'attribut et celui du paramètre peut on accéder directement a la propriété de l'attribut et modifie la valeur de la propriété dynamique ce qui doit etre plus rapide que de passé par un "FOREACH" a chaque fois comme je suis en train de le faire car la on passe en revu tout les attributs jusqu’à ce que l'on trouve "REF" puis apres on passe en revu toutes les proprietés dynamique jusqu’à ce que l'on trouve "LONGUEUR BAS" EXTRAIT DU CODE ( ne fonctionne pas je sais ) (setq compt 0) (acet-ui-progress-init "Avancement" com) (while (< compt com) (foreach prop (vlax-invoke (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname selinsert compt))))) 'getattributes ) (if (= (vla-get-tagstring prop) "REF") (vla-put-value "LONGUEUR BAS" ;; ne marche pas car la proprietée n'a pas été "invoquée" ? ) (* (1+ (round (- (caadr (textbox (list (cons 1 (vla-get-textstring prop))))) (caar (textbox (list (cons 1 (vla-get-textstring prop))))) ) 0.25 ) ) 4 ) ) ) ) (acet-ui-progress-init (strcat "Avancement " (rtos (/ (* compt 100) (float com)) 2 2) " %") com) (acet-ui-progress-safe compt) (setq compt (1+ compt)) ) (acet-ui-progress-done) comme j'ai plusieurs attributs et parametres mon autre solution est de faire la liste des données des attributs avec un "foreach" tout passé en revue donc puis ensuite modifie les parametres avec un "foreach" tout passé en revue bon week end Phil -
hello ca date ca fonctionnait sur autocad 2019 sur la 2020 ca ne fonctionne plus Commande: BRANCARDTER Largeur du brancard: 58 Longueur du brancard: 229 Sélectionnez le mur de la cage: Distance entre les différentes positions : 10 Erreur Automation Clé introuvable quelle clé ? Phil
-
CHANGER LES CARACTERISTIQUES D UN TABLEAU
PHILPHIL a répondu à un(e) sujet de PHILPHIL dans Routines LISP
hello le tableau doit etre existant 10 colonnes pour moi me paraissait deja pas mal, mais il suffit de modifier le lisp pour avoir plus de colonnes le lisp verifie le nombre de colonne dans les tableaux sélectionnés,et ne modifie pas au dela meme si tu rentres une largeur pour la colonne 5 alors que ton tableau n'a que 4 colonne il ne s'occupera pas de ce que tu as entré en colonne 5,6,7,8,9,10 dans la boite de dialogue, mais par contre sauvegardera les données pour plus tard Phil -
bonjour voici un LISP pour changer les caractéristiques d'un tableau existant merci a Gile de son aide attention il change tout les textes en "arial" sauf la première rangée modifier "arial" en autre chose a tester 5 sec pour modifier 3 tableaux de 1750 cases bon week end Phil ; ------------------------------------------- ; CHANGEMENT DES CARACTERISTIQUE D UN TABLEAU ; ------------------------------------------- (defun c:change_caracteristique_tableau (/ bl lst nbcolonne nbrangee compt) (setvar "cmdecho" 0) (setvar "dimzin" 0) (prompt "\nCLIQUER SUR LE(S) TABLEAU(X) A MODIFIER :") (setq bl nil) (while (null bl) (setq bl (ssget (list (cons 0 "ACAD_TABLE"))))) (setq ent nil) (setq compt 0) (setq com (sslength bl)) (setq tablargcolon1 (getcfg "APPDATA/tablargcolon1")) (setq tablargcolon2 (getcfg "APPDATA/tablargcolon2")) (setq tablargcolon3 (getcfg "APPDATA/tablargcolon3")) (setq tablargcolon4 (getcfg "APPDATA/tablargcolon4")) (setq tablargcolon5 (getcfg "APPDATA/tablargcolon5")) (setq tablargcolon6 (getcfg "APPDATA/tablargcolon6")) (setq tablargcolon7 (getcfg "APPDATA/tablargcolon7")) (setq tablargcolon8 (getcfg "APPDATA/tablargcolon8")) (setq tablargcolon9 (getcfg "APPDATA/tablargcolon9")) (setq tablargcolon10 (getcfg "APPDATA/tablargcolon10")) (setq tabhautmax (getcfg "APPDATA/tabhautmax")) (setq tablargeentrcolon (getcfg "APPDATA/tablargeentrcolon")) (setq tabmargehori (getcfg "APPDATA/tabmargehori")) (setq tabmargevert (getcfg "APPDATA/tabmargevert")) (setq tabhauttexte (getcfg "APPDATA/tabhauttexte")) (setq tabaligntexte (getcfg "APPDATA/tabaligntexte")) (setq tabhautrangee (getcfg "APPDATA/tabhautrangee")) (setq lst nil) (setq lst (cons (cons '"HAUTEUR DU TEXTE" tabhauttexte) lst)) (setq lst (cons (cons '"TYPE ALIGNEMENT DU TEXTE DANS LA CELLULE [1,2,3,4,5,6,7,8,9]" tabaligntexte) lst)) (setq lst (cons (cons '"HAUTEUR DE LA RANGEE" tabhautrangee) lst)) (setq lst (cons (cons '"MARGE VERTICALE DU TEXTE DANS LA CELLULE" tabmargevert) lst)) (setq lst (cons (cons '"MARGE HORIZONTALE DU TEXTE DANS LA CELLULE" tabmargehori) lst)) (setq lst (cons (cons '"HAUTEUR MAXI DU TABLEAU [ 0: UNE COLONNE DE TABLEAU, MAXI : PLUSIEURS COLONNES DE TABLEAU ]" tabhautmax) lst)) (setq lst (cons (cons '"LARGEUR ENTRE COLONNE DE TABLEAU" tablargeentrcolon) lst)) (setq lst (cons (cons '"LARGEUR COLONNE 1 DU TABLEAU" tablargcolon1) lst)) (setq lst (cons (cons '"LARGEUR COLONNE 2 DU TABLEAU" tablargcolon2) lst)) (setq lst (cons (cons '"LARGEUR COLONNE 3 DU TABLEAU" tablargcolon3) lst)) (setq lst (cons (cons '"LARGEUR COLONNE 4 DU TABLEAU" tablargcolon4) lst)) (setq lst (cons (cons '"LARGEUR COLONNE 5 DU TABLEAU" tablargcolon5) lst)) (setq lst (cons (cons '"LARGEUR COLONNE 6 DU TABLEAU" tablargcolon6) lst)) (setq lst (cons (cons '"LARGEUR COLONNE 7 DU TABLEAU" tablargcolon7) lst)) (setq lst (cons (cons '"LARGEUR COLONNE 8 DU TABLEAU" tablargcolon8) lst)) (setq lst (cons (cons '"LARGEUR COLONNE 9 DU TABLEAU" tablargcolon9) lst)) (setq lst (cons (cons '"LARGEUR COLONNE 10 DU TABLEAU" tablargcolon10) lst)) (setq lst (reverse lst)) (7-10inputbox "CHANGER LES CARACTERISTIQUES DES TABLEAUX" "CARACTERISTIQUES DU TABLEAU" "LARGEURS DES COLONNES" lst ) (setcfg "APPDATA/tabhauttexte" (cdr (nth 0 res))) (setcfg "APPDATA/tabaligntexte" (cdr (nth 1 res))) (setcfg "APPDATA/tabhautrangee" (cdr (nth 2 res))) (setcfg "APPDATA/tabmargevert" (cdr (nth 3 res))) (setcfg "APPDATA/tabmargehori" (cdr (nth 4 res))) (setcfg "APPDATA/tabhautmax" (cdr (nth 5 res))) (setcfg "APPDATA/tablargeentrcolon" (cdr (nth 6 res))) (setcfg "APPDATA/tablargcolon1" (cdr (nth 7 res))) (setcfg "APPDATA/tablargcolon2" (cdr (nth 8 res))) (setcfg "APPDATA/tablargcolon3" (cdr (nth 9 res))) (setcfg "APPDATA/tablargcolon4" (cdr (nth 10 res))) (setcfg "APPDATA/tablargcolon5" (cdr (nth 11 res))) (setcfg "APPDATA/tablargcolon6" (cdr (nth 12 res))) (setcfg "APPDATA/tablargcolon7" (cdr (nth 13 res))) (setcfg "APPDATA/tablargcolon8" (cdr (nth 14 res))) (setcfg "APPDATA/tablargcolon9" (cdr (nth 15 res))) (setcfg "APPDATA/tablargcolon10" (cdr (nth 16 res))) (while (< compt com) (setq ent1 (cdr (car (entget (ssname bl compt))))) (setq nbcolonne (vla-get-columns (vlax-ename->vla-object ent1))) (setq nbrangee (vla-get-rows (vlax-ename->vla-object ent1))) (vla-put-regeneratetablesuppressed (vlax-ename->vla-object ent1) :vlax-true) ; Suppress table regen (vla-put-vertcellmargin (vlax-ename->vla-object ent1) (atof (cdr (nth 3 res)))) ; marge verticale dans les cellules (vla-put-horzcellmargin (vlax-ename->vla-object ent1) (atof (cdr (nth 4 res)))) ; marge horizontale dans les cellules (vla-put-tablebreakheight (vlax-ename->vla-object ent1) (atof (cdr (nth 5 res)))) ; hauteur maxi du tableau (vla-put-breakspacing (vlax-ename->vla-object ent1) (atof (cdr (nth 6 res)))) ; espace entre les colonnes de tableau (setq rang 1 colon 0 ) (repeat (- nbrangee 1) (progn (setq colon 0) (repeat nbcolonne (vla-setcelltextstyle (vlax-ename->vla-object ent1) rang colon "Arial") ; gere le style de texte (vla-setcelltextheight (vlax-ename->vla-object ent1) rang colon (atof (cdr (nth 0 res)))) ; gere la hauteur du texte dans la case (vla-setcellalignment (vlax-ename->vla-object ent1) rang colon (atof (cdr (nth 1 res)))) ;1: haut gauche, 2: haut centre, 3:haut droit, 4: milieu gauche, 5: mileu centre, 6: milieu droit, 7: bas gauche, 8: bas centre, 9: bas droit (setq colon (1+ colon)) ) (vla-setrowheight (vlax-ename->vla-object ent1) rang (atof (cdr (nth 2 res)))) ; gere la hauteur de la rangée (setq rang (1+ rang)) ) ) (setq colon 0) (repeat nbcolonne (vla-setcolumnwidth (vlax-ename->vla-object ent1) colon (atof (cdr (nth (+ 7 colon) res)))) ; largeur de la colonne 0 (setq colon (1+ colon)) ) (vla-put-regeneratetablesuppressed (vlax-ename->vla-object ent1) :vlax-false) (setq compt (1+ compt)) ) (prompt "\n") (setvar "dimzin" 8) ) (defun 7-10inputbox (box col1 col2 lst / temp file keys i dcl_id ;;; res ) (setq temp (vl-filename-mktemp "Tmp.dcl") file (open temp "w") keys '("val1" "val2" "val3" "val4" "val5" "val6" "val7" "val8" "val9" "val10" "val11" "val12" "val13" "val14" "val15" "val16" "val17" ) ) (write-line (strcat "xInputBox:dialog{key=\"box\";initial_focus=\"val1\"; :row{ :column{label=\"" col1 "\";" ) file ) (setq i 0) (repeat 7 (write-line (strcat ":edit_box{label=" (vl-prin1-to-string (car (nth i lst))) ";key=\"val" (itoa (setq i (1+ i))) "\";edit_width=10;allow_accept=true;}spacer;" ) file ) ) (write-line (strcat "} :column{label=\"" col2 "\";" ) file ) (repeat 10 (write-line (strcat ":edit_box{label=" (vl-prin1-to-string (car (nth i lst))) ";key=\"val" (itoa (setq i (1+ i))) "\";edit_width=10;allow_accept=true;}spacer;" ) file ) ) (write-line "}} spacer; ok_cancel; }" file) (close file) (setq dcl_id (load_dialog temp)) (if (not (new_dialog "xInputBox" dcl_id)) (exit) ) (set_tile "box" box) (mapcar 'set_tile keys (mapcar 'cdr lst)) (action_tile "accept" "(setq res (mapcar 'cons (mapcar 'car lst) (mapcar 'get_tile keys))) (done_dialog)" ) (start_dialog) (unload_dialog dcl_id) (vl-file-delete temp) res )
-
BOITE DE DIALOGUE SUR DEUX COLONNES
PHILPHIL a répondu à un(e) sujet de PHILPHIL dans Pour aller plus loin en LISP
Hello Gile merci je regarde ca Phil -
Bonjour comment programmer pour que la boite est deux colonnes de 10 nommées au lieu d'une seule a déplacer si le sujet n'est pas au bon endroit merci Phil (defun 20inputbox (box msg1 msg2 msg3 msg4 msg5 msg6 msg7 msg8 msg9 msg10 msg11 msg12 msg13 msg14 msg15 msg16 msg17 msg18 msg19 msg20 val1 val2 val3 val4 val5 val6 val7 val8 val9 val10 val11 val12 val13 val14 val15 val16 val17 val18 val19 val20 / temp file dcl_id lst) (defun subr (str / pos) (if (and (< 36 (strlen str)) (setq pos (vl-string-position 32 (substr str 1 36) nil t))) (strcat ":text_part{label=\"" (substr str 1 pos) "\";}" (subr (substr str (+ 2 pos)))) (strcat ":text_part{label=\"" str "\";}") ) ) (setq temp (vl-filename-mktemp "Tmp.dcl") file (open temp "w") ) (write-line (strcat "xInputBox:dialog{key=\"box\";initial_focus=\"val1\"; :edit_box{label=" (vl-prin1-to-string msg1) ";key=\"val1\";edit_width=36;allow_accept=true;}spacer; :edit_box{label=" (vl-prin1-to-string msg2) ";key=\"val2\";edit_width=36;allow_accept=true;}spacer; :edit_box{label=" (vl-prin1-to-string msg3) ";key=\"val3\";edit_width=36;allow_accept=true;}spacer; :edit_box{label=" (vl-prin1-to-string msg4) ";key=\"val4\";edit_width=36;allow_accept=true;}spacer; :edit_box{label=" (vl-prin1-to-string msg5) ";key=\"val5\";edit_width=36;allow_accept=true;}spacer; :edit_box{label=" (vl-prin1-to-string msg6) ";key=\"val6\";edit_width=36;allow_accept=true;}spacer; :edit_box{label=" (vl-prin1-to-string msg7) ";key=\"val7\";edit_width=36;allow_accept=true;}spacer; :edit_box{label=" (vl-prin1-to-string msg8) ";key=\"val8\";edit_width=36;allow_accept=true;}spacer; :edit_box{label=" (vl-prin1-to-string msg9) ";key=\"val9\";edit_width=36;allow_accept=true;}spacer; :edit_box{label=" (vl-prin1-to-string msg10) ";key=\"val10\";edit_width=36;allow_accept=true;}spacer; :edit_box{label=" (vl-prin1-to-string msg11) ";key=\"val11\";edit_width=36;allow_accept=true;}spacer; :edit_box{label=" (vl-prin1-to-string msg12) ";key=\"val12\";edit_width=36;allow_accept=true;}spacer; :edit_box{label=" (vl-prin1-to-string msg13) ";key=\"val13\";edit_width=36;allow_accept=true;}spacer; :edit_box{label=" (vl-prin1-to-string msg14) ";key=\"val14\";edit_width=36;allow_accept=true;}spacer; :edit_box{label=" (vl-prin1-to-string msg15) ";key=\"val15\";edit_width=36;allow_accept=true;}spacer; :edit_box{label=" (vl-prin1-to-string msg16) ";key=\"val16\";edit_width=36;allow_accept=true;}spacer; :edit_box{label=" (vl-prin1-to-string msg17) ";key=\"val17\";edit_width=36;allow_accept=true;}spacer; :edit_box{label=" (vl-prin1-to-string msg18) ";key=\"val18\";edit_width=36;allow_accept=true;}spacer; :edit_box{label=" (vl-prin1-to-string msg19) ";key=\"val19\";edit_width=36;allow_accept=true;}spacer; :edit_box{label=" (vl-prin1-to-string msg20) ";key=\"val20\";edit_width=36;allow_accept=true;}spacer; ok_cancel; }" ) file ) (close file) (setq dcl_id (load_dialog temp)) (if (not (new_dialog "xInputBox" dcl_id)) (exit) ) (foreach n '("box" "val1" "val2" "val3" "val4" "val5" "val6" "val7" "val8" "val9" "val10" "val11" "val12" "val13" "val14" "val15" "val16" "val17" "val18" "val19" "val20" ) (set_tile n (eval (read n)))) (action_tile "accept" "(setq v1 (get_tile \"val1\") v2 (get_tile \"val2\") v3 (get_tile \"val3\") v4 (get_tile \"val4\") v5 (get_tile \"val5\") v6 (get_tile \"val6\") v7 (get_tile \"val7\") v8 (get_tile \"val8\") v9 (get_tile \"val9\") v10 (get_tile \"val10\") v11 (get_tile \"val11\") v12 (get_tile \"val12\") v13 (get_tile \"val13\") v14 (get_tile \"val14\") v15 (get_tile \"val15\") v16 (get_tile \"val16\") v17 (get_tile \"val17\") v18 (get_tile \"val18\") v19 (get_tile \"val19\") v20 (get_tile \"val20\") ) (done_dialog)" ) (start_dialog) (unload_dialog dcl_id) (vl-file-delete temp) v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 )
-
Bonjour OK merci Gile Phil
-
Bonjour je cherche comment en lisp remettre en forme un tableau selectionner un tableau et lui dire que la colonne A fait tant de largeur et lui dire que la colonne B fait tant de largeur C,D .... puis ensuite influencer la hauteur du texte dans toutes les cellules, puis ensuite la hauteur des cellules, des lignes je cherche surtout des bouts de code pour ca, ou savoir ou chercher. merci Phil
-
bonjour grace a Gile j'ai apporté une toute petite modification a LXL 511 de patrick_35 a tester, ca permet de mettre le fichier excel sur calcul en manuel a l'ouverture de celui ci et de le remplir plus vite, sur un test je suis passé de 30mn a 4 mn je poursuis les tests pour qu'a la fermeture du fichier celui ci repasse en calcul automatique extrait de lisp a remplacer dans celui de patrick_35 merci Gile, merci Patrick ;------------------------------------------------------------------------- ; Verifie si la feuille est actif dans Excel, si non l'ouvre ;------------------------------------------------------------------------- (defun verifier_excel () (if (not xl) (lancer_excel) ) (if xls (if (not (eq (strcase (vlax-get xls 'fullname)) (strcase (car (vlax-ldata-get cle position_fichier_excel)))) ) (progn (if (not (member (strcase (vlax-get xls 'fullname)) liste_fichiers_ouvert)) (vlax-invoke-method xls 'close :vlax-false) ) (vlax-release-object xls) (setq xls nil) ) ) ) (vlax-for sel wks (if (eq (strcase (vlax-get sel 'fullname)) (strcase (car (vlax-ldata-get cle position_fichier_excel)))) (setq xls sel) ) ) (if (not xls) (progn (setq xls (vlax-invoke wks 'open (car (vlax-ldata-get cle position_fichier_excel)))) ;;debut modification ;; (vlax-dump-object xl T) (vlax-put-property xl 'calculatebeforesave 0); calcule a la sauvegarde ( 0:non, -1:oui ) changement pas nécessaire juste pour info (vlax-put-property xl 'calculation -4135) ; xlCalculationManual ( -4135 = manuel, -4105 = automatique ) ;; (vlax-dump-object xl T) ;;fin modification ) ) (setq classeur (vlax-get xls 'sheets)) ) Phil
-
hello d'accord Gile j'ai essayé ca aussi, sans succes si j'ai bien compris, le mode de calcul "manuel" "automatique" est lier au fichier lui meme et non pas a excel il faut donc ouvrir le fichier, puis ensuite dire a excel d'etre en "manuel" remplir les cases, dire a exel de repasser en automatique, puis fermer le fichier( le mode "automatique" etant sauvegardé dans le fichier ) ca semble logique ? Merci gile, je vais poursuivre mes recherches ;------------------------------------------------------------------------- ; Lancer une liaison avec Excel ;------------------------------------------------------------------------- (defun lancer_excel(/ sel) (setq xl (vlax-get-or-create-object "Excel.Application")) ;;; debut modification ;;(vlax-dump-object xl T) ;;;(vlax-put xl 'Calculation -4135) ; xlCalculationManual ;;; fin modification (setq wks (vlax-get xl 'Workbooks)) (vlax-for sel wks (progn (setq liste_fichiers_ouvert (append liste_fichiers_ouvert (list (strcase (vlax-get sel 'fullname))))) (vlax-put-property xl 'Calculation -4135) ; xlCalculationManual ;;; ) ) )
-
hello Gile merci j'ai ceci en retour [b]Commande: LXL511 Microsoft Excel: Impossible de définir la propriété Calculation de la classe Application.[/b] ou trouves tu ce genre de renseignements ? un fichier HELP autodesk ? ou EXCEl ? sur le net ? j'ai trouvé ca en cherchant sur le net https://www.cadtutor.net/forum/topic/66334-modify-excel-options-using-autolisp/ donc j'ai rajouté cette ligne (vlax-dump-object xl T) ;------------------------------------------------------------------------- ; Lancer une liaison avec Excel ;------------------------------------------------------------------------- (defun lancer_excel(/ sel) (setq xl (vlax-get-or-create-object "Excel.Application")) ;;; debut modification (vlax-dump-object xl T) (vlax-put-property xl 'Calculation -4135) ; xlCalculationManual ;;; fin modification (setq wks (vlax-get xl 'Workbooks)) (vlax-for sel wks (setq liste_fichiers_ouvert (append liste_fichiers_ouvert (list (strcase (vlax-get sel 'fullname))))) ) ) et en réponse j'ai ca Commande: LXL511 ; _Application: nil ; Valeurs de propriétés: ; ActiveCell (RO) = nil ; ActiveChart (RO) = Une exception s’est produite ; ActiveEncryptionSession (RO) = -1 ; ActivePrinter = "HP Universal Printing PCL 6 sur Ne07:" ; ActiveProtectedViewWindow (RO) = nil ; ActiveSheet (RO) = nil ; ActiveWindow (RO) = nil ; ActiveWorkbook (RO) = nil ; AddIns (RO) = #<VLA-OBJECT AddIns 0000018c8cfef268> ; AddIns2 (RO) = #<VLA-OBJECT AddIns2 0000018c8cfef2d8> ; AlertBeforeOverwriting = -1 ; AltStartupPath = "" ; AlwaysUseClearType = -1 ; Application (RO) = #<VLA-OBJECT _Application 000001847cc227f8> ; ArbitraryXMLSupportAvailable (RO) = -1 ; AskToUpdateLinks = -1 ; Assistance (RO) = #<VLA-OBJECT IAssistance 0000018c8cfeddd8> ; AutoCorrect (RO) = #<VLA-OBJECT AutoCorrect 0000018c8cfedf98> ; AutoFormatAsYouTypeReplaceHyperlinks = -1 ; AutomationSecurity = 1 ; AutoPercentEntry = -1 ; AutoRecover (RO) = #<VLA-OBJECT AutoRecover 0000018c8cff0ed8> ; Build (RO) = 7237.0 ; CalculateBeforeSave = -2146826246 ; Calculation = -2146826246 ; CalculationInterruptKey = 2 ; CalculationState (RO) = 0 ; CalculationVersion (RO) = 145621 ; Caller (RO) = ...Contenu indexé masqué... ; CanPlaySounds (RO) = -1 ; CanRecordSounds (RO) = 0 ; Caption = "Microsoft Excel" ; CellDragAndDrop = -1 ; Cells (RO) = Une exception s’est produite ; Charts (RO) = Une exception s’est produite ; ClipboardFormats (RO) = ...Contenu indexé masqué... ; ClusterConnector = "" ; Columns (RO) = Une exception s’est produite ; COMAddIns (RO) = #<VLA-OBJECT COMAddIns 000001845338cb88> ; CommandBars (RO) = #<VLA-OBJECT _CommandBars 0000018c8cff0308> ; CommandUnderlines = -4105 ; ConstrainNumeric = 0 ; ControlCharacters = 0.0 ; CopyObjectsWithCells = -1 ; Creator (RO) = 1480803660 ; Cursor = -4143 ; CursorMovement = 1.0 ; CustomListCount (RO) = 4.0 ; CutCopyMode = 0 ; DataEntryMode = -4146 ; DDEAppReturnCode (RO) = 0.0 ; DecimalSeparator = "," et ca a l fin Méthodes prises en charge: ; ActivateMicrosoftApp (1) ; AddCustomList (2) ; Calculate () ; CalculateFull () ; CalculateFullRebuild () ; CalculateUntilAsyncQueriesDone () ; CentimetersToPoints (1) ; CheckAbort (1) ; CheckSpelling (3) ; ConvertFormula (5) ; DDEExecute (2) ; DDEInitiate (2) ; DDEPoke (3) ; DDERequest (2) ; DDETerminate (1) ; DeleteCustomList (1) ; DisplayXMLSourcePane (1) ; DoubleClick () ; Evaluate (1) ; ExecuteExcel4Macro (1) ; FindFile () ; GetCustomListContents (1) ; GetCustomListNum (1) ; GetOpenFilename (5) ; GetPhonetic (1) ; GetSaveAsFilename (5) ; Goto (2) ; Help (2) ; InchesToPoints (1) ; InputBox (8) ; Intersect (30) ; MacroOptions (11) ; MailLogoff () ; MailLogon (3) ; NextLetter () ; OnKey (2) ; OnRepeat (2) ; OnTime (4) ; OnUndo (2) ; Quit () ; RecordMacro (2) ; RegisterXLL (1) ; Repeat () ; Run (31) ; SaveWorkspace (1) ; SendKeys (2) ; SharePointVersion (1) ; Undo () ; Union (30) ; Volatile (1) ; Wait (1) ; _Evaluate Microsoft Excel: Impossible de définir la propriété Calculation de la classe Application.(1) ; _Run2 (31) et si ce sont les caractéristique de EXCEL 2010 au moment au le programme l'ouvre je suis loin des -4135 ou -4105 ; Calculation = -2146826246 bizarre non ? Phil
-
hello bon ba pas reussis a savoir comment ca marche ce truc test non concluant phil
-
hello Gile je testerai ca mais vue mon niveau, ca m'avance pas plus a moins de savoir ou tu trouves ce genre d'info que je potasse le sujet en fait il faut que j'écrive les lignes telles quelles apres le code d'ouverture du fichier ca va m'etre encore plus difficile de modifier le lisp de Patrick LXL merci Phil
-
bonjour comme beaucoup j'utilise LXL de patrick, j'ai plus de 25000 cases a exporter dans un fichier excel. hors celui ci est en mode de calcul "automatique" et ca me prend 1 heure a exporter j'ai remarqué que en mode de calcul "manuel" ca prenait bcp moins de temps en lisp, ou vlisp, est ce que l'on peut gerer EXCEL, pour qu'il se mette en mode de calcul "manuel" avant ecriture dans un fichier excel, puis le remettre en mode de calcul automatique avant fermeture ? quelle sont les lignes de codes ? et ou les insérer dans un lisp ? MERCI Phil
-
hello fichier gabarit : 605 calques MAXSORT : 6500 liste des calques dans la fenetre des hachures, dans le désordres complet aucune influence de maxsort sur cette liste donc a+ Phil
-
hello juste une petite remarque pour MR TODESK la ou Didier a mis le doigts dessus, la liste des calques proposés pour implanter les hachures, IL POURRAIT NOUS LA MONTRER CLASSE PAR ORDRE ALPHABÉTIQUE. MERCI Phil
-
Modification echelle de type de ligne en masse
PHILPHIL a répondu à un(e) sujet de Fruity dans LISP et Visual LISP
HELLO fruity quoi comme "UP" ? Phil -
hello Kikay tu dis "masquer" des entités ? tu les "masque" avec quoi ? un lisp ou une commande autocad ? tu geles les calques ? sur ta presentation 1 les entites etaient "invisible" avec ce lisp ca remet toutes les entites en visible tu as peut etre un lisp au démarage qui influe sur ce parametre d'entité et qui plante des fois lance ce lisp pour chaque fichier (defun c:modifier_tout_en_visible () (vl-load-com) (setvar "cmdecho" 0) (setvar "dimzin" 0) (setvar "osmode" 0) (prompt "\nCLIQUER SUR LES OBJETS A MODIFIER :") (setq entites nil) (setq entites (ssget "x" )) (setq compt 0) (setq com (sslength entites)) (acet-ui-progress-init "Avancement" com) (while (< compt com) (progn (vla-put-visible (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname entites compt))))) -1) (acet-ui-progress-init (strcat "Avancement " (rtos (/ (* compt 100) (float com)) 2 2) " %") com) (acet-ui-progress-safe compt) (setq compt (1+ compt)) ) ) (acet-ui-progress-done) ) a+ Phil
-
TRIER UNE LISTE sur 4 éléments
PHILPHIL a répondu à un(e) sujet de PHILPHIL dans Pour aller plus loin en LISP
hello Gile merci oui j'ai bien un parametre avec LONGUEUR : 37.20000000000001 plutot que d'arrondir dans la fonction de tri, j'ai arrondi les données en créant la liste Phil -
Hello j'ai une liste "listepropriete" avec 4 éléments et je cherche a la trier suivant le 4ieme puis le 3ieme puis le 2 ieme ce bout de lisp devrait le faire normalement (setq listepropriete2 (vl-sort listepropriete '(lambda (a B) (if (= (cadddr a) (cadddr B)) (if (= (caddr a) (caddr B)) (< (cadr a) (cadr B)) (< (caddr a) (caddr B)) ) (< (cadddr a) (cadddr B)) ) ) ) ) un bout de la liste "listepropriete2" hors je constate que vers la ligne 66 et au de la le trie ne semble plus etre bon ca revient a 27.0 (depuis quand 27.0 est plus grand que 293.0 ?) la ligne 66 a 71 devrait etre apres la ligne 5 ca trie pas a 8 chiffres ( que l'on ne voit pas en fait ) apres la virgule quand meme ? [0] ("3E6102" "D" 27.0 37.2) [1] ("3E611A" "D" 27.0 37.2) [2] ("4847BD" "D" 27.0 37.2) .. [5] ("484805" "D" 27.0 37.2) [6] ("3E5AF0" "B" 112.5 37.2) [7] ("48499D" "B" 112.5 37.2) [8] ("4849B5" "B" 112.5 37.2) [9] ("1866C" "B" 112.5 37.2) [10] ("48B3A1" "B" 112.5 37.2) .. [14] ("484D15" "D" 112.5 37.2) [15] ("17A66" "D" 112.5 37.2) ... [22] ("1757F8" "B" 124.0 37.2) [23] ("3E5F52" "D" 124.0 37.2) [24] ("3E5958" "A" 125.5 37.2) .. [29] ("484CE5" "A" 125.5 37.2) [30] ("17B08" "A" 125.5 37.2) [31] ("18528" "A" 125.5 37.2) [32] ("48B401" "A" 125.5 37.2) .. [41] ("3E5700" "B" 267.0 37.2) [42] ("48517D" "B" 267.0 37.2) [43] ("485195" "B" 267.0 37.2) [44] ("16A94" "B" 267.0 37.2) [45] ("48BB81" "B" 267.0 37.2) .. [51] ("3E58E0" "B" 269.0 37.2) [52] ("3E5EAA" "B" 269.0 37.2) .. [57] ("4850BD" "B" 269.0 37.2) [58] ("4850D5" "B" 269.0 37.2) [59] ("16D1C" "B" 269.0 37.2) [60] ("1773C" "B" 269.0 37.2) .. [64] ("48BAD9" "B" 269.0 37.2) [65] ("3E5520" "B" 293.0 37.2) [66] ("188F39" "D" 27.0 37.2) [67] ("188F51" "D" 27.0 37.2) [68] ("48B1C1" "D" 27.0 37.2) [69] ("48B1D9" "D" 27.0 37.2) [70] ("48B1F1" "D" 27.0 37.2) [71] ("48B209" "D" 27.0 37.2) [72] ("174BD0" "B" 114.5 37.2) [73] ("4665C7" "B" 114.5 37.2) Phil
-
hello j'ai écrit ca mais la liste "selinsertname" ne reste pas sélectionné a la sortie du lisp comme un SSget le rajout a le fin de : (command "SELECT" selinsertname) (command "SELECT" "p") ne change rien vous avez une idée svp? Phil ;;; ;;;-------------------------------------------------- ;;;selectionner bloc par nom effectivenanme ;;;-------------------------------------------------- (defun c:selectionner_bloc_meme_nom (/) (setvar "cmdecho" 0) (setvar "CURSORSIZE" 10) (setq osm (getvar "osmode")) (if (and (setq source (car (entsel "\nCLIQUER SUR LE BLOC DE REFERENCE : "))) (setq source (vlax-ename->vla-object source)) (= (vla-get-objectname source) "AcDbBlockReference") ) (progn (setq namebloc (vla-get-effectivename source))) ) (setq compt 0 selinsertname (ssadd) ) (prompt "\nSELECTIONNER LES BLOCS :") (setq selinsert (ssget (list (cons 0 "INSERT")))) (setq com (sslength selinsert)) (while (< compt com) (if (= (vla-get-effectivename (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname selinsert compt)))))) namebloc ) (progn (ssadd (cdr (assoc -1 (entget (ssname selinsert compt)))) selinsertname)) ) (setq compt (1+ compt)) ) (command "SELECT" selinsertname) (command "SELECT" "p") (setvar "CURSORSIZE" 100) (setvar "osmode" osm) (princ) )
