-
Compteur de contenus
4 029 -
Inscription
-
Dernière visite
-
Jours gagnés
21
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par DenisHen
-
Eh non, ce n'est pas bien compliqué, tu remplace tes (getreal par des (getdist : (defun c:rct ( / p1 longueur largeur p2 p3 p4) (setq old_osmode (getvar "osmode")) (setvar "osmode" 0) (setq p1 (getpoint "\nPoint de Base :")) (setq longueur (getdist p1 "\nLongueur :") largeur (getdist p1 "\nLargeur :") ) ;_ Fin de setq (setq p2 (list (+ (car p1) longueur) (cadr p1)) p3 (list (+ (car p1) longueur) (+ (cadr p2) largeur)) p4 (list (car p1) (+ (cadr p1) largeur)) ) ;_ Fin de setq (command "_pline" p1 p2 p3 p4 "c") (command "_rotate" "d" "" p1 pause "") (setvar "osmode" old_osmode) (princ) )
-
Comme tu peux le lire dans mes commentaires, je sauvegarde l'accrochage (setq old_osmode (getvar "osmode")) je le modifie (setvar "osmode" 0)et je le réaffecte à la fin (setvar "osmode" old_osmode).
-
Je ne comprend pas, chez moi, cette variable reste à 3, avant et après le code... Elle n'y a aucune raison de changer, on n'y touche pas...
-
Je ne vois pas où ça coince... Mon code en réponse 5 marche bien chez moi... Quel est ton problème ?
-
J'aurais du commenté... Désolé : (defun c:rct ( / old_osmode p1 longueur largeur p2 p3 p4) ;Déclaration locale des variables (setq old_osmode (getvar "osmode")) ;enregistrement de l'accrochage (setvar "osmode" 0) ;changement de l'accrochage, ici : aucun (setq p1 (getpoint "\nPoint de Base :")) (setq longueur (getreal "\nLongueur :") largeur (getreal "\nLargeur :") ) ;_ Fin de setq (setq p2 (list (+ (car p1) longueur) (cadr p1)) p3 (list (+ (car p1) longueur) (+ (cadr p2) largeur)) p4 (list (car p1) (+ (cadr p1) largeur)) ) ;_ Fin de setq (command "_pline" p1 p2 p3 p4 "c") (command "_rotate" "d" "" p1 pause "") (setvar "osmode" old_osmode) ;réaffectation de l'accrochage enregistré avant les opération. (princ) ;évite le retour Lisp ) Pour toutes commandes lisp, l'interpréteur renvoi toujours la dernière opération sous forme de texte dans la fenêtre AutoCAD, le (princ) à la fin du code évite se genre de retour. Content d'avoir pu aider... ;)
-
Salut Dinosor. Tu n'avais jamais fais de LISP avant ? Comme ça peut-être : (defun c:rct ( / p1 longueur largeur p2 p3 p4) (setq old_osmode (getvar "osmode")) (setvar "osmode" 0) (setq p1 (getpoint "\nPoint de Base\n")) (setq longueur (getreal "\nLongueur :") largeur (getreal "\nLargeur :") ) ;_ Fin de setq (setq p2 (list (+ (car p1) longueur) (cadr p1)) p3 (list (+ (car p1) longueur) (+ (cadr p2) largeur)) p4 (list (car p1) (+ (cadr p1) largeur)) ) ;_ Fin de setq (command "_pline" p1 p2 p3 p4 "c") (command "_rotate" "d" "" p1 pause "") (setvar "osmode" old_osmode) (princ) )
-
[Résolu] Recherche du dernier "_" dans un string
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
J'ai ajouter un (wcmatch dans ma condition : (if (and (/= pos nil) (/= (wcmatch BlkNom "*#") nil)) (progn (setq elst (subst (cons 2 NouvBlkNom) (assoc 2 elst) elst)) ; (entmod elst) ) ;_ Fin de progn ) ;_ Fin de if Vous croyez que ça pourra fonctionner ? -
[Résolu] Recherche du dernier "_" dans un string
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Merci pour ce conseil, mais alors pour le mettre en oeuvre... Ça va être une autre paire de manche... :huh: -
[Résolu] Recherche du dernier "_" dans un string
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Ça y est, mon code fonctionne, le voici : (defun c:RemplBlkV3 (/ ss i ent elst BlkNom) (princ "\nDéveloppé par Denis H.") ;;; Remplacement des blocs incrémentés * (princ "\nRemplacement des blocs incrémentés...") (setq ss nil i 0 ) ;_ Fin de setq (if (setq ss (ssget "_X" '((0 . "INSERT")))) (progn (while (setq ent (ssname ss i)) (setq i (1+ i) elst (entget ent) BlkNom (cdr (assoc 2 elst)) ) ;_ Fin de setq (setq Resultat (vl-string->list BlkNom)) (setq Resultat (reverse Resultat)) (setq posmirroir (vl-position 95 Resultat)) (setq pos (- (length Resultat) posmirroir)) (setq pos (- pos 1)) (setq NouvBlkNom (substr BlkNom 1 pos)) (if (/= pos nil) (progn (setq elst (subst (cons 2 NouvBlkNom) (assoc 2 elst) elst)) ; (entmod elst) ) ;_ Fin de progn ) ;_ Fin de if ) ;_ Fin de while ) ;_ Fin de progn ) ;_ Fin de if (princ) ) Mille mercis à vous... -
[Résolu] Recherche du dernier "_" dans un string
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Oops, j'ai écris NouvNomBlk et NouvBlkNom... Mais ça ne fonctionne toujours pas... Je n'ai même pas l'impression que mon code s'exécute... -
[Résolu] Recherche du dernier "_" dans un string
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Merci LrDb. J'ai changé mon code : (defun c:RemplBlkV3 (/ ss i ent elst BlkNom) (princ "\nDéveloppé par Denis H.") ;;; Remplacement des blocs incrémentés * (princ "\nRemplacement des blocs incrémentés...") (setq ss nil) (if (setq ss (ssget "_X" '((0 . "INSERT")))) (progn (setq i 0) (while (setq ent (ssname ss i)) (setq i (1+ i) elst (entget ent) BlkNom (cdr (assoc 2 elst)) ) ;_ Fin de setq (setq Resultat (vl-string->list BlkNom)) (setq Resultat (reverse Resultat)) (setq posmirroir (vl-position 95 Resultat)) (setq pos (- (length Resultat) posmirroir)) (setq pos (- pos 1)) (setq NouvNomBlk (substr BlkNom 1 pos)) (if (/= pos nil) (progn (setq elst (subst (cons 2 NouvBlkNom) (assoc 2 elst) elst)) (entmod elst)) ) ;_ Fin de if ) ;_ Fin de while ) ;_ Fin de progn ) ;_ Fin de if ) mais il me répond : -
[Résolu] Recherche du dernier "_" dans un string
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Voici un lien pour télécharger mon DWG avec les blocs incrémentés. -
[Résolu] Recherche du dernier "_" dans un string
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Bon, j'ai réussi en test : (defun c:RechCar (/) (setq BlkNom "123_456_789_abc") (setq Resultat (vl-string->list BlkNom)) (setq Resultat (reverse Resultat)) (setq posmirroir (vl-position 95 Resultat)) (setq pos (- (length Resultat) posmirroir)) (princ pos) (princ) ) Mais pas dans mon code : (defun c:RemplBlkV3 (/ ss i ent elst BlkNom) ;;; Remplacement des blocs incrémentés * (princ "\nRemplacement des blocs incrémentés...") (setq ss nil) (if (setq ss (ssget "_X" '((0 . "INSERT")))) (progn (setq i 0) (while (setq ent (ssname ss i)) (setq i (1+ i) elst (entget ent) BlkNom (cdr (assoc 2 elst)) ) ;_ Fin de setq (setq Resultat (vl-string->list BlkNom)) (setq Resultat (reverse Resultat)) (setq posmirroir (vl-position 95 Resultat)) (setq pos (- (length Resultat) posmirroir)) (if (/= pos nil) (progn (setq elst (subst (cons 2 (substr BlkNom 1 pos)) (assoc 2 elst) elst)) (entmod elst)) ) ;_ Fin de if ) ;_ Fin de while ) ;_ Fin de progn ) ;_ Fin de if ) -
[Résolu] Recherche du dernier "_" dans un string
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Salut Gégé, et merci pour ton aide. Quand tu écris "moncode", c'est le code ascii de "_" ? J'ai écris ça, mais évidement, ça plante...: (defun c:RechCar (/) (setq BlkNom "123_456_789_abc") (setq Resultat (vl-string->list "_" BlkNom)) (setq Resultat (reverse Resultat)) (setq posmirroir (vl-position 95 Resultat)) (setq pos (- (length Resultat) posmirroir)) (princ pos) (princ) ) -
Bonjour à tous. Voilà, aujourd'hui, je tente de renommer des blocs incrémentés comme ceci : POTEAU_BOIS, POTEAU_BOIS_01, POTEAU_BOIS_02, POTEAU_BOIS_03,...POTEAU_BOIS_121 POTEAU_BOIS_MOISE, POTEAU_BOIS_MOISE_1, POTEAU_BOIS_MOISE_2,...POTEAU_BOIS_MOISE_145 j'ai fais un bout de lisp, mais je n'arrive pas à coder la recherche du dernier caractère "_". Voici ou je cherche et remplace le nom "incrémenté" par le nom "brut" (sans les "_XXX"). (if (/= (vl-string-position (ascii "_") BlkNom) nil) (progn (setq elst (subst (cons 2 (substr BlkNom 1 (vl-string-position (ascii "_") BlkNom))) (assoc 2 elst) elst)) (entmod elst) ) ;_ Fin de progn ) ;_ Fin de if Si quelqu'un a une astuce, un conseil, je suis preneur...
-
Salut à tous. Combien, en gros, as-tu de cercles ? Et dans ton fichier MPF, sont-il triés géographiquement (de gauche à droite et de haut en bas) ?
-
Re. As-tu essayé de démarrer AutoCAD en mode Administrateur ? Par un clique droit sur le fichier C:\Program Files\Autodesk\AutoCAD 2014\Acad.exe puis exécuter en tant qu'administrateur ? Je ne suis pas sûr du chemin...
-
Salut. Tu reviens pour un pèlerinage ? ;) Bon voyage et bon séjour dans l'hexagone...
-
Retour d'une valeur d'une list_box dans un DCL.
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
J'ai trouvé ! ! ! Le retour est la position dans la liste... 0 pour la première valeur... Du coup, j'ai maintenant ça qui fonctionne : (cond ((= Lst_Cadre "0") (vlax-ldata-put "DenisH" "FlXYZCadre" "Aucun")) ((= Lst_Cadre "1") (vlax-ldata-put "DenisH" "FlXYZCadre" "Simple")) ((= Lst_Cadre "2") (vlax-ldata-put "DenisH" "FlXYZCadre" "Demi")) ((= Lst_Cadre "3") (vlax-ldata-put "DenisH" "FlXYZCadre" "Complet")) ) ;_ Fin de cond -
Bonjour à tous. J'ai créer un DCL avec un list_box. Mais comment attribuer la valeur "retour". LSP : (setq Cadre (vlax-ldata-get "DenisH" "FlXYZCadre" "Demi")) ... ... (setq LstCadre (list "Aucun" "Simple" "Demi" "Complet")) ... ... ;;;Dans ma routine pour le DCL (qui fonctionne très bien) : (cond ((= Cadre "Aucun") (set_tile "Lst_Cadre" "0")) ((= Cadre "Simple") (set_tile "Lst_Cadre" "1")) ((= Cadre "Demi") (set_tile "Lst_Cadre" "2")) ((= Cadre "Complet") (set_tile "Lst_Cadre" "3")) ) ;_ Fin de cond ... ... ;;;C'est là qu'est mon problème, enfin je crois : (action_tile "Lst_Cadre" "(setq Cadre value)") DCL : :row {:text {label = "Quel style de cadre :";} :list_box {key = "Lst_Cadre"; height = 6;} } Par défaut, c'est "Demi" qui est sélectionné, et ça fonctionne très bien. Mais je n'arrive pas à connaitre la valeur sélectionné si on la change. Si quelqu'un a une astuce, un conseil... Je suis preneur...
-
Bonjour à tous. Voilà, aujourd'hui, je reprend une routine Lisp qui, à un seul petit endroit, ne fonctionne pas si j'exécute cette routine depuis mon fichier Lisp. Mais qui fonctionne très bien si je la copie/colle dans AutoCAD. Voici le code qui pose problème : (if (not (tblsearch "style" "Profondeur")) (Steal "Carbone.dwg" '(("Text Styles" ("Profondeur")))) ) ;_ Fin de if (command "textstyle" "Profondeur") Le style est bien importé via la commande "Steal" (de Lee Mac) mais le style se retrouve avec une auteur par défaut (0.20), alors que dans le dwg original, elle est à 0... J'ai la même phrase avec d'autre styles de texte qui fonctionne très bien... Je pense que cela vient de la variable "TEXTSIZE" qui n'est pas à 0, mais je ne peut pas la changer pour la mettre à 0... Si quelqu'un a une astuce, un conseil... Je suis preneur...
-
Re. 1. As-tu un utilisateur d'enregistré ? 2. J'ai déjà eu ce genre de problème si A360 Desktop désactivé. Ca prenais une heure pour démarrer...
-
Salut, voici peut-être un truc : Astuces : Démarrer AutoCAD plus rapidement : Créer un fichier, avec le "blocnote" par exemple, puis taper ces lignes (exemple pour AutoCAD 2017). Corriger s'il le faut le répertoire du fichier AutoCAD.exe à la troisième ligne. Enregistrer maintenant ce fichier avec l’extension .bat. Pour lancer AutoCAD, un simple double-clique sur ce fichier suffira à lancer AutoCAD plus rapidement. On ne sait jamais... Denis...
-
Salut à tous. Pourquoi ne pas tracer ces cercles via un petit lisp qui écrira, à chaque cercle, dans un fichier CSV (par exemple) les coordonnées, ce qui gardera l'ordre ce création des entités, à mesure qu'elle sont créées ? Mais je rejoint didier, si tu en efface un et tu le redessine, il sera à la fin... PS : faut faire gaffe à bien se relire, didier est dans la place. ;)
-
Salut à tous, et merci pour vos remarques... @(gile) : effectivement, on a passé deux jours à construire le DCL, et on n'a pas eu le temps de réellement approfondir la question des aller/retour entre Lisp et DCL... Du coup, j'utilise mon vieux Lisp sans DCL... le formateur ne m'a malheureusement rien donné de bien précis pour une "auto-formation" à posteriori, à part quelques photocopies d'un vieux bouquin... @lecrabe : on n'a rien vu des listes (étonnant non ?) et pour les codes DXF, on a juste vu ça : (defun c:ChangCalq (/) (setq Obj (entget (car (entsel "Clique l'entité :")))) (setq Calq (assoc 8 Obj)) (setq Obj (subst (cons 8 "Toto") Calq Obj)) (entmod Obj) (princ) ) Ce qui m'a permis de voir les (entsel, (nentsel, (entget, (entmod qui me manquait cruellement... Je trouve curieux qu'il ait "lourdement" insisté sur les xdata, car je ne pense pas en avoir un jour l'utilité... J'ai fais part de cette "pseudo" formation (qui ne m'a presque rien apporté) à ma direction et en ai redemandé une autre, une vrai cette fois-ci, avec le formateur que j'avais choisi au départ... Denis...
