-
Compteur de contenus
6 374 -
Inscription
-
Dernière visite
-
Jours gagnés
30
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Patrick_35
-
Ou encore la commande sysvdlg des express tools pour sauvegarder ses variables et les restaurer si besoin est @+
-
[vlisp] supprimer les hachures dans les polygones
Patrick_35 a répondu à un(e) sujet de lenoil dans Visual LISP
Salut Oui, et on peut faire aussi un ssget plus avancé qui ne traite que des hachures et selon un calque donné (ssget "_w" pt1 pt2 (list (cons 0 "HATCH") (cons 8 "MON_CALQUE"))) @+ -
Salut Comme promis @+ (defun modifier_attribut(obj rea arg / att n) (if (and (vlax-read-enabled-p obj)(vlax-read-enabled-p (vlr-data rea))) (if (not (eq (vla-get-textstring (vlr-data rea))(vla-get-textstring obj))) (vla-put-textstring (vlr-data rea) (vla-get-textstring obj)) ) (progn (effacer_data obj) (refaire_les_reacteurs) ) ) ) (defun refaire_les_reacteurs(/ n r) (effacer_les_reacteurs) (if (vlax-ldata-list "Patrick_35") (foreach n (vlax-ldata-list "Patrick_35") (vlr-object-reactor (list (cadr n)) (caddr n) '((:vlr-Modified . modifier_attribut))) (vlr-object-reactor (list (caddr n)) (cadr n) '((:vlr-Modified . modifier_attribut))) ) ) (princ) ) (defun effacer_les_reacteurs(/ liaison n rea) (if (setq rea (vlr-reactors :vlr-object-reactor)) (progn (setq n 1 rea (nth n (car rea))) (while rea (setq liaison nil) (if (eq (cdr (car (vlr-reactions rea))) 'MODIFIER_ATTRIBUT) (setq liaison rea) ) (if liaison (vlr-remove liaison) (setq n (1+ n)) ) (if (setq rea (vlr-reactors :vlr-object-reactor)) (setq rea (nth n (car rea))) ) ) ) ) (princ) ) (defun effacer_data(sel_att / att n r) (foreach n (vlax-ldata-list "Patrick_35") (if (or (eq (vla-get-objectid (cadr n)) (vla-get-objectid sel_att)) (eq (vla-get-objectid (caddr n)) (vla-get-objectid sel_att))) (setq r (car n)) ) ) (if r (progn (vlax-ldata-delete "Patrick_35" r) (if (setq att (vlax-ldata-list "Patrick_35")) (progn (setq n 0) (while (nth n att) (vlax-ldata-put "Patrick_35" (itoa n) (list (cadr (nth n att)) (caddr (nth n att)))) (setq n (1+ n)) ) (vlax-ldata-delete "Patrick_35" (itoa n)) ) ) ) ) r ) (defun c:eatt (/ n sel_att) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) (if (vlax-ldata-list "Patrick_35") (while (not sel_att) (setq sel_att (car (nentsel (strcat"\nSélection d'un Attribut à dissocier : ")))) (if sel_att (if (= (cdr (assoc 0 (entget sel_att))) "ATTRIB") (progn (if (setq sel_att (effacer_data (vlax-ename->vla-object sel_att))) (progn (refaire_les_reacteurs) (princ "\nAttribut dissocié") ) (progn (alert "Attribut non associé") (setq sel_att nil) ) ) ) (progn (alert "Ce n'est pas un Attribut.") (setq sel_att nil) ) ) ) ) (alert "Pas encore d'association d'attributs") ) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (princ) ) (defun c:latt(/ att1 att2 n r) (defun selection_attribut(msg / n sel_att) (while (not sel_att) (setq sel_att (car (nentsel (strcat"\nSélection du " msg " Attribut : ")))) (if sel_att (if (= (cdr (assoc 0 (entget sel_att))) "ATTRIB") (progn (setq sel_att (vlax-ename->vla-object sel_att) r nil) (foreach n (vlax-ldata-list "Patrick_35") (if (or (eq (vla-get-objectid (cadr n)) (vla-get-objectid sel_att)) (eq (vla-get-objectid (caddr n)) (vla-get-objectid sel_att))) (setq r T) ) ) (if r (progn (alert "Attribut déjà associé.") (setq sel_att nil) ) ) ) (progn (alert "Ce n'est pas un Attribut.") (setq sel_att nil) ) ) ) ) sel_att ) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) (if (setq att1 (selection_attribut "1er")) (progn (vla-highlight att1 :vlax-true) (if (setq att2 (selection_attribut "2em")) (progn (vla-highlight att1 :vlax-false) (if (eq (vla-get-objectid att1)(vla-get-objectid att2)) (alert "Sélection identique") (progn (if (not (vlax-ldata-list "Patrick_35")) (setq n "0") (setq n (itoa (length (vlax-ldata-list "Patrick_35")))) ) (vla-put-textstring att2 (vla-get-textstring att1)) (vlax-ldata-put "Patrick_35" n (list att1 att2)) (vlr-object-reactor (list att1) att2 '((:vlr-Modified . modifier_attribut))) (vlr-object-reactor (list att2) att1 '((:vlr-Modified . modifier_attribut))) (princ "\nLiaison effectuée.") ) ) ) ) ) ) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (princ) ) (vl-load-com) (refaire_les_reacteurs) (princ "\n\tProgramme chargé. Faites LATT pour lier deux attributs.\n\tFaites EATT pour supprimer la liaison de deux attributs") (princ)
-
L'autolisp, je dirais que c'est les fonctions de "base" de programmation (bien que certaines fonctions soient très évoluées) d'autocad et on obtient facilement et rapidement un résultat probant Le visual lisp est beaucoup plus évolué et se rapproche énormément du vba. Tu as cesujet qui pourrait t’intéresser @+
-
Salut Oui, mais en attendant, tu n'as toujours pas répondu à ma question @
-
Salut La réponse est oui, via autolisp ou visual lisp ou encore vba @+
-
Liste de souhait des utilisateurs AutoCAD
Patrick_35 a répondu à un(e) sujet de Eric dans AutoCAD 2007
Salut Ca m'ennuyait d'effacer une partie du code et de le laisser juste pour une config d'imprimante et surtout de devoir d’abord faire une config d’une présentation, ce qui fait un peu doublon Du coup, j'en ai fait un autre juste pour choisir l'imprimante que l'on souhaite sur les onglets que l'on désire @+ Fichier MIM.DCL // ================================================= // // MIM.DCL V1.00 // // Copyright (C) Patrick_35 // // ================================================= mim : dialog { key = "titre"; fixed_width = true; alignment = centered; is_cancel = true; width = 60; : popup_list {label= "Origine"; key = "mim";} spacer; : list_box {label= "Destination" ; key="dest"; height = 10; multiple_select=true;} spacer; ok_cancel; } Fichier MIM.LSP ;;;================================================= ;;; ;;; MIM.LSP V1.00 ;;; ;;; Changer l'imprimante des Présentations ;;; ;;; Copyright (C) Patrick_35 ;;; ;;;================================================= (defun c:mim(/ s) ;;;--------------------------------------------------------------- ;;; ;;; Gestion des erreurs ;;; ;;;--------------------------------------------------------------- (defun *errmim* (msg) (if (/= msg "Function cancelled") (if (= msg "quit / exit abort") (princ) (princ (strcat "\nErreur : " msg)) ) (princ) ) (setq *error* s) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (princ) ) ;;;--------------------------------------------------------------- ;;; ;;; Routine principale ;;; ;;;--------------------------------------------------------------- (defun multiplie_pre(/ config doc init_mim liste_lay n position positiondests resultat tra) (setq init_mim (load_dialog (findfile "mim.dcl"))) (setq liste_lay (layoutlist) n 0 position "0" positiondest "0" doc (vla-get-activedocument (vlax-get-acad-object))) (setq tra (vlax-safearray->list (vlax-variant-value (vla-getplotdevicenames (vla-get-layout (vla-get-modelspace doc)))))) (if (vl-position "Aucun" tra) (setq tra (vl-remove "Aucun" tra)) ) (if (vl-position "Model" liste_lay) (setq liste_lay (vl-remove "Model" liste_lay)) ) (new_dialog "mim" init_mim "") (start_list "mim") (mapcar 'add_list tra) (end_list) (start_list "dest") (mapcar 'add_list liste_lay) (end_list) (set_tile "titre" "Sélection Imprimante V1.00") (set_tile "mim" position) (mode_tile "mim" 2) (while (and (/= resultat 1)(/= resultat 0)) (action_tile "mim" "(setq position $value)") (action_tile "dest" "(setq positiondest $value)") (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (setq resultat (start_dialog)) ) (unload_dialog init_mim) (if (eq resultat 1) (while (not (eq positiondest "")) (setq n (read positiondest)) (vlax-for lay (vla-get-layouts doc) (if (eq (nth n liste_lay) (vla-get-name lay)) (progn (vla-put-ConfigName lay (nth (atoi position) tra)) (princ (strcat "\nPrésentation " (vla-get-name lay) " Configurée avec " (nth (atoi position) tra))) ) ) ) (setq positiondest (substr positiondest (+ 2 (strlen (itoa n))) (strlen positiondest))) ) ) ) ;;;--------------------------------------------------------------- ;;; ;;; Routine de lancement ;;; ;;;--------------------------------------------------------------- (vl-load-com) (setq s *error*) (setq *error* *errmim*) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) (multiplie_pre) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (setq *error* s) (princ) ) (princ "\nMIM.LSP chargé. Tapez MIM pour l'exécuter") (princ) ps : tu constateras que le code est en grande partie une copie du premier lisp ;) -
Pour ça, il va falloir jouer avec les réacteurs. Je sens qu'un jour j'aurai peut-être la surprise de recevoir une bouteille de champagne ;) Ta demande m'intéresse au niveau prog. L'interaction que tu souhaites avec tes deux attributs, c'est uniquement le texte qui doit changer ou encore la couleur, le calque, etc..., ou encore que l’un soit le clone de l’autre En ce moment, j'ai du boulot, mais dès que j'ai un instant, je le fais @+
-
feuille de calcul basse tension de Pitou 66
Patrick_35 a répondu à un(e) sujet de thierry.garré dans VRD
Une note de calcul quand je parle de Caneco BT, c'est forcement pour le privé (ERP ou ERT) et non pour le vrd. Il fonctionne actuellement très bien et permet d'être près précis sur ce que l'on réalise. Caneco est une référence et possède l'agrément UTE (ce qui n'est pas le cas, il me semble pour Ecodial) Une note de calcul en elec n’est pas si facile que ça à réaliser. Elle doit tellement prendre de paramètres en compte que du coup, j'ai une grosse tendance à me méfier de ce qui est fait sur Excel, quel que soit le niveau de compétence de la personne qui l'a réalisé. Je pense notamment à la nature de protection et de ses réglages, du mode de pose, des coef de proximités, etc… @+ -
Liste de souhait des utilisateurs AutoCAD
Patrick_35 a répondu à un(e) sujet de Eric dans AutoCAD 2007
Pour le format papier, c'est volontaire Si c'est juste pour changer d'imprimante, tu remplaces (progn (vla-put-ConfigName lay (vla-get-ConfigName config)) (vla-put-CanonicalMediaName lay (vla-get-CanonicalMediaName config)) (vla-GetCustomScale config 'i 'j) (vla-SetCustomScale lay i j) (vla-GetWindowToPlot config 'i 'j)(vla-SetWindowToPlot lay i j) (vla-put-PlotOrigin lay (vla-get-PlotOrigin config)) (vla-put-PaperUnits lay (vla-get-PaperUnits config)) (vla-put-PlotHidden lay (vla-get-PlotHidden config)) (vla-put-PlotRotation lay (vla-get-PlotRotation config)) (vla-put-PlotType lay (vla-get-PlotType config)) (vla-put-PlotViewportBorders lay (vla-get-PlotViewportBorders config)) (vla-put-PlotViewportsFirst lay (vla-get-PlotViewportsFirst config)) (vla-put-PlotWithLineweights lay (vla-get-PlotWithLineweights config)) (vla-put-PlotWithPlotStyles lay (vla-get-PlotWithPlotStyles config)) (vla-put-ScaleLineweights lay (vla-get-ScaleLineweights config)) (vla-put-ShowPlotStyles lay (vla-get-ShowPlotStyles config)) (vla-put-StandardScale lay (vla-get-StandardScale config)) (vla-put-StyleSheet lay (vla-get-StyleSheet config)) (vla-put-UseStandardScale lay (vla-get-UseStandardScale config)) (if (not (eq (vla-get-PlotType config) aclayout)) (vla-put-CenterPlot lay (vla-get-CenterPlot config)) ) par (vla-put-ConfigName lay (vla-get-ConfigName config)) @+ -
feuille de calcul basse tension de Pitou 66
Patrick_35 a répondu à un(e) sujet de thierry.garré dans VRD
Bonjour Juste une question. Les calculs sont pour la 14-100 ou la 15-100 ? Sinon, il existe Ecodial, ou mieux encore Caneco BT @+ -
Liste de souhait des utilisateurs AutoCAD
Patrick_35 a répondu à un(e) sujet de Eric dans AutoCAD 2007
Tu copies les fichiers dans le répertoire d'autocad ou dans un de ses chemins de recherche. Tu lances ensuite la commande _appload, ou tu fais la commande (load"mpl") ou encore avec un drag&drop depuis l'explorateur @+ -
Salut Il me semble que tu es désespéré de ne pas recevoir de réponse en ce qui concerne ta demande d'impression automatique D’après ce que j'ai pu constater, tu as beaucoup plus de personne qui pourrait te répondre en lisp, voir en visual lisp plutôt qu'en vba Si le coeur t’en dit de changer de langage @+
-
Si, si D'ailleurs, cela étais une des nouveautés de cette version @+
-
Liste de souhait des utilisateurs AutoCAD
Patrick_35 a répondu à un(e) sujet de Eric dans AutoCAD 2007
Chose promise.... ;) @+ Fichier MPL.DCL // ================================================ // // MPL.DCL V1.00 // // Copyright (C) Patrick_35 // // ================================================= mpl : dialog { key = "titre"; fixed_width = true; alignment = centered; is_cancel = true; width = 20; : popup_list {label= "Origine"; key = "mpl";} spacer; : list_box {label= "Destination" ; key="dest"; height = 10; multiple_select=true;} spacer; ok_cancel; } Fichier MPL.LSP ;;;================================================= ;;; ;;; MPL.LSP V1.00 ;;; ;;; Recopier la config des Présentations ;;; ;;; Copyright (C) Patrick_35 ;;; ;;;================================================= (defun c:mpl(/ s) ;;;--------------------------------------------------------------- ;;; ;;; Gestion des erreurs ;;; ;;;--------------------------------------------------------------- (defun *errmpl* (msg) (if (/= msg "Function cancelled") (if (= msg "quit / exit abort") (princ) (princ (strcat "\nErreur : " msg)) ) (princ) ) (setq *error* s) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (princ) ) ;;;--------------------------------------------------------------- ;;; ;;; Routine principale ;;; ;;;--------------------------------------------------------------- (defun multiplie_plt(/ config doc i init_mpl j liste_lay n position positiondests resultat) (defun liste_destination() (start_list "dest") (mapcar 'add_list (vl-remove (nth (atoi position) liste_lay) liste_lay)) (end_list) (set_tile "dest" positiondest) ) (setq init_mpl (load_dialog (findfile "mpl.dcl"))) (setq liste_lay (layoutlist) n 0 position "0" positiondest "0") (if (vl-position "Model" liste_lay) (setq liste_lay (vl-remove "Model" liste_lay)) ) (if (cdr liste_lay) (progn (while (nth n liste_lay) (if (= (getvar "ctab") (nth n liste_lay)) (setq position (itoa n)) ) (setq n (1+ n)) ) (new_dialog "mpl" init_mpl "") (start_list "mpl") (mapcar 'add_list liste_lay) (end_list) (liste_destination) (set_tile "titre" "Copie Présentation V1.00") (set_tile "mpl" position) (mode_tile "mpl" 2) (while (and (/= resultat 1)(/= resultat 0)) (action_tile "mpl" "(setq position $value)(liste_destination)") (action_tile "dest" "(setq positiondest $value)") (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (setq resultat (start_dialog)) ) (unload_dialog init_mpl) (if (eq resultat 1) (progn (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vlax-for lay (vla-get-layouts doc) (if (eq (nth (atoi position) liste_lay) (vla-get-name lay)) (setq config lay) ) ) (setq liste_lay (vl-remove (nth (atoi position) liste_lay) liste_lay)) (while (not (eq positiondest "")) (setq position (read positiondest)) (vlax-for lay (vla-get-layouts doc) (if (eq (nth position liste_lay) (vla-get-name lay)) (progn (vla-put-ConfigName lay (vla-get-ConfigName config)) (vla-put-CanonicalMediaName lay (vla-get-CanonicalMediaName config)) (vla-GetCustomScale config 'i 'j) (vla-SetCustomScale lay i j) (vla-GetWindowToPlot config 'i 'j)(vla-SetWindowToPlot lay i j) (vla-put-PlotOrigin lay (vla-get-PlotOrigin config)) (vla-put-PaperUnits lay (vla-get-PaperUnits config)) (vla-put-PlotHidden lay (vla-get-PlotHidden config)) (vla-put-PlotRotation lay (vla-get-PlotRotation config)) (vla-put-PlotType lay (vla-get-PlotType config)) (vla-put-PlotViewportBorders lay (vla-get-PlotViewportBorders config)) (vla-put-PlotViewportsFirst lay (vla-get-PlotViewportsFirst config)) (vla-put-PlotWithLineweights lay (vla-get-PlotWithLineweights config)) (vla-put-PlotWithPlotStyles lay (vla-get-PlotWithPlotStyles config)) (vla-put-ScaleLineweights lay (vla-get-ScaleLineweights config)) (vla-put-ShowPlotStyles lay (vla-get-ShowPlotStyles config)) (vla-put-StandardScale lay (vla-get-StandardScale config)) (vla-put-StyleSheet lay (vla-get-StyleSheet config)) (vla-put-UseStandardScale lay (vla-get-UseStandardScale config)) (if (not (eq (vla-get-PlotType config) aclayout)) (vla-put-CenterPlot lay (vla-get-CenterPlot config)) ) (princ (strcat "\nMise à jour de la mise en page de " (vla-get-name lay) " depuis " (vla-get-name config))) ) ) ) (setq positiondest (substr positiondest (+ 2 (strlen (itoa position))) (strlen positiondest))) ) ) ) ) (alert "Une seule présentation\nUtilisation inutile du Lisp") ) ) ;;;--------------------------------------------------------------- ;;; ;;; Routine de lancement ;;; ;;;--------------------------------------------------------------- (vl-load-com) (setq s *error*) (setq *error* *errmpl*) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) (multiplie_plt) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (setq *error* s) (princ) ) (princ "\nMPL.LSP chargé. Tapez MPL pour l'exécuter") (princ) -
attribution de donnée à polyligne
Patrick_35 a répondu à un(e) sujet de glopri dans Pour aller plus loin en LISP
C’est pas évident au début. C’est une tournure d’esprit à prendre, mais on s’y fait très vite Tu as l’aide, sinon recherche des exemples ou encore sur ce forum @+ -
attribution de donnée à polyligne
Patrick_35 a répondu à un(e) sujet de glopri dans Pour aller plus loin en LISP
Ah, Ok L'association se fait par le biais des fonctions vlax-ldata-* Ensuite,tu souhaites ensuite reporter tes infos dans Excel, regarde ce lien @+ -
attribution de donnée à polyligne
Patrick_35 a répondu à un(e) sujet de glopri dans Pour aller plus loin en LISP
Soit je suis fatigué et pas encore de mon week-end ou alors j'ai trop abusé de l'eau à midi, mais je ne comprends toujours pas ce que tu veux faire :casstet: @+ -
attribution de donnée à polyligne
Patrick_35 a répondu à un(e) sujet de glopri dans Pour aller plus loin en LISP
Tu veux faire quoi exactement ? Indiquer les valeurs x,y,z dans le texte ? Bouger le texte en concordance avec la poly ? Autre chose ? @+ -
attribution de donnée à polyligne
Patrick_35 a répondu à un(e) sujet de glopri dans Pour aller plus loin en LISP
Salut Tu as un lisp dans cette discution qui lie une poly à un texte @+ -
Salut Vba est très bien en ce qui concerne les boites de dialogue et les liaisons entre applications qui sont relativement plus simple à mettre en oeuvre qu'en vlisp Par contre autolisp et vlisp sont beaucoup plus appropriés en ce qui concerne le traitement des entités d'un dessin, des réacteurs et de la base de donnée d’autocad Le gros défaut d’autolisp et de vlisp sont le traitement de fichiers qu’on ne peut faire qu’en type texte (pas de binaire, donc pas de possibilité de faire des lectures directes, que du séquentiel, etc…) et les boites de dialogues qui restent relativement pauvre par rapport au vba Si tu souhaites un résultat rapide, commence avec déjà avec autolisp puis plus tard avec le vlisp. On retrouve énormément de fonctionnalité vlisp par rapport au vba @+
-
Hachures associatives
Patrick_35 a répondu à un(e) sujet de archidaniel dans AutoCAD LT 2000 à LT 2002
Salut Eric Cette variable existe depuis quelle version ? Sinon, pour les versions pleines ou avec un extender, j'avais fait ce lisp (defun c:as(/ sel) (vl-load-com) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) (if (setq sel (ssget "_+.:E:s" '((0 . "HATCH")))) (vla-put-associativehatch (vlax-ename->vla-object (ssname sel 0)) :vlax-false) ) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (princ) ) @+ -
Modifier les propriété du calque de plusieurs blocs en meme temp.
Patrick_35 a répondu à un(e) sujet de Circus dans AutoCAD 2006
Merci, c'est gentil mais le lisp n'est pas de moi. Il a été crée par Vici sur un autre forum et comme je l'ai trouvé très instructif et qu'il pouvait aussi être utile, je l'ai mis dans mes tablettes @+ -
Salut Copy xx.plt /b \\nom_du_domaine\adresse_imprimante ou encore avec GoPlot @+
-
Liste de souhait des utilisateurs AutoCAD
Patrick_35 a répondu à un(e) sujet de Eric dans AutoCAD 2007
Je travail dessus actuellement. Le but serait de faire sur une présentation la config. souhaité, de lancer le lisp pour que les présentations que l'on désire prennent cette config. C'est seulement le temps qui manque un peu actuellement @+
