Aller au contenu

DenisHen

Membres
  • Compteur de contenus

    4 029
  • Inscription

  • Dernière visite

  • Jours gagnés

    21

Tout ce qui a été posté par DenisHen

  1. DenisHen

    Rectangle facilité

    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) )
  2. DenisHen

    Rectangle facilité

    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).
  3. DenisHen

    Rectangle facilité

    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...
  4. DenisHen

    Rectangle facilité

    Je ne vois pas où ça coince... Mon code en réponse 5 marche bien chez moi... Quel est ton problème ?
  5. DenisHen

    Rectangle facilité

    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... ;)
  6. DenisHen

    Rectangle facilité

    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) )
  7. 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 ?
  8. Merci pour ce conseil, mais alors pour le mettre en oeuvre... Ça va être une autre paire de manche... :huh:
  9. Ç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...
  10. 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...
  11. 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 :
  12. Voici un lien pour télécharger mon DWG avec les blocs incrémentés.
  13. 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 )
  14. 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) )
  15. 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...
  16. 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) ?
  17. 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...
  18. DenisHen

    flying to France

    Salut. Tu reviens pour un pèlerinage ? ;) Bon voyage et bon séjour dans l'hexagone...
  19. 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
  20. 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...
  21. 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...
  22. 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...
  23. 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...
  24. 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. ;)
  25. 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...
×
×
  • 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é