nicolas2 Posté(e) le 26 mai 2009 Posté(e) le 26 mai 2009 Bonjour à tous.Voila je voudrais savoir s'il est possible d'enregister automatiquement une partie d'un plan (capture) sous un nouveau plan automatiquement nommé ?Une petite explication : - un plan "2277-2" - une capture - ma "capture" s'enregistre sous un nouveau plan nommé "12305-MAUS"" (mes affaires sont nommées 12305-12306.........et l'arborescence est toujours identique. Si je le refait sous l'affaire 12310, le nom sera "12310-MAUS" etc...) http://img15.imageshack.us/img15/824/capturepourmausf.jpg Pour l'instant : - je copie - je colle sous un nouveau plan - j'enregistre en renommant.La manip n'est pas compliquée, mais revient systématiquement.Le fait de le faire en LISP me permettrait de l'insérer dans différentes autres routines. Merci pour votre aide
Tramber Posté(e) le 26 mai 2009 Posté(e) le 26 mai 2009 Pourquoi ne fais-tu pas la commande W (Wbloc) ? Parce que c'est très facile à programmer dans ce cas et on peut t'apprendre. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Tramber Posté(e) le 27 mai 2009 Posté(e) le 27 mai 2009 D'abord, quel rapport entre 2277-2 et 12305 ? Peux-tu être plus clair ? Nom du plan ou d'une variable ? Ton DWG se nomme 22772 et le WBLOC auto à faire sera (sont ?) 22772-MAUS et c'est tout, on passe à un autre DWG ? Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
nicolas2 Posté(e) le 27 mai 2009 Auteur Posté(e) le 27 mai 2009 J'ai des N° d'affaire 12305 - 12306 etc..................Un plan 2277-2 (le -2 pour la 2ième révision du plan) pour l'affaire 12305Un plan 2278-2 pour l'affaire 12306 etc..................... http://img35.imageshack.us/img35/9066/classeur12.jpg Sous le dossier "plan" de l'affaire 12305, je voudrais un nouveau DWG "12305-MAUS" issu du plan 2277-2Sous le dossier 'plan" de l'affaire 12306, "12306-MAUS" issu du plan 2278-2 etc....... Merci pour ton aide
Patrick_35 Posté(e) le 27 mai 2009 Posté(e) le 27 mai 2009 Salut Tu fais une sélection(setq js (ssget))Ensuite, tu récupères le nom suivant ton arborescence en utilisant la variable dwgprefix(setq nom (substr (getvar "dwgprefix") 13 5))Tu y ajoutes ta spécif(setq nom (strcat nom "-MAUS.dwg"))On test si le fichier existe déjà(if (findfile nom)Oui(command "_.wblock" "_yes" nom "" "0,0" js "")Non(command "_.wblock" nom "" "0,0" js "")on ferme le test)Et pour retrouver les objets effacés lors du wbloc(command "_.undo" "1") On peut faire beaucoup plus évolué, mais c'est déjà une première approche. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
nicolas2 Posté(e) le 27 mai 2009 Auteur Posté(e) le 27 mai 2009 Salut Patrick, on s'est croisé.J'ai ajouté ton morceau de routine à ce LISP. (defun c:nettoyeur ( / ent dxf_ent js jsc n nw_js i l_dxf h) [surligneur] (setq js (ssget)) (setq nom (substr (getvar "dwgprefix") 13 5)) (setq nom (strcat nom "-MAUS.dwg")) (if (findfile nom) (command "_.wblock" "_yes" nom "" "0,0" js "") (command "_.wblock" nom "" "0,0" js "") ) (command "_.undo" "1")[/surligneur] (command "_zoom" "_e") (while (null (setq ent (entsel "\nDésigner un cercle type: ")))) (setq dxf_ent (entget (car ent))) (setq p1 (cdr (assoc 10 (entget (car ent))))) (command "_.move" "_all" "" "_none" (trans p1 0 1) "_none" "*0.0,0.0,0.0") (cond ((eq (cdr (assoc 0 dxf_ent)) "CIRCLE") (setq js (ssget "_x" (list (assoc 410 dxf_ent) (assoc 67 dxf_ent))) jsc (ssget "_x" (list (assoc 0 dxf_ent) (assoc 410 dxf_ent) (assoc 67 dxf_ent) (assoc 40 dxf_ent))) n -1 ) (repeat (sslength jsc) (ssdel (ssname jsc (setq n (1+ n))) js) ) (if (not (tblsearch "LAYER" "UT1")) (entmake '((0 . "LAYER") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "UT1") (70 . 0) (62 . 7) (6 . "Continuous") (290 . 1) (370 . -3) ) ) ) (if js (repeat (setq n (sslength js)) (entdel (ssname js (setq n (1- n)))) ) ) (if jsc (repeat (setq n (sslength jsc)) (entmod (subst '(8 . "UT1") (assoc 8 (setq dxf_ent (entget (ssname jsc (setq n (1- n)))))) dxf_ent)) ) ) ) ) (command "_zoom" "_e") (setq nw_js (ssadd) i 0) (while (setq js (ssget"_:S")) (ssadd (ssname js 0) nw_js) (setq l_dxf (entget (ssname js 0))) (setq h (* (cdr (assoc 40 l_dxf)) 0.5) i (1+ i)) (entmake (list '(0 . "TEXT") '(10 0. 0. 0.) (cons 11 (cdr (assoc 10 l_dxf))) (cons 40 h) (cons 1 (itoa i)) '(72 . 1) '(73 . 2) ) ) ) (setq js (ssget "_X")) (cond (js (repeat (setq n (sslength js)) (ssadd (ssname js (setq n (1- n))) nw_js) ) ) ) (cond (nw_js (setq n -1) (repeat (sslength nw_js) (entmake (setq l_dxf (entget (ssname nw_js (setq n (1+ n)))))) (entdel (cdar l_dxf)) ) ) ) (prin1) ) Il tourne sans message d'erreur, mais je ne le retrouve pas dans mon arborescence (voir mon message ci-dessus pour l'emplacement). Merci pour ton aide.
Patrick_35 Posté(e) le 27 mai 2009 Posté(e) le 27 mai 2009 Autant pour moi, j'ai oublié de préciser le répertoire Tu remplaces(setq nom (strcat nom "-MAUS.dwg"))par(setq nom (strcat (getvar "dwgprefix") nom "-MAUS.dwg")) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
nicolas2 Posté(e) le 27 mai 2009 Auteur Posté(e) le 27 mai 2009 OK Patrick, juste une bricolerie,peut-on fermer le plan de départ et se retrouver sur le plan créé (-MAUS) Merci pour ton aide
nicolas2 Posté(e) le 27 mai 2009 Auteur Posté(e) le 27 mai 2009 Une précision.On bascule sur le nouveau plan -MAUS et la routine continue son déroulement.Merci.
Patrick_35 Posté(e) le 27 mai 2009 Posté(e) le 27 mai 2009 Oui, c'est possible mais beaucoup plus compliqué à faire. Sache que pour ouvrir un autre dessin et l'activer, le lisp ne continue pas sur le nouveau dessin, donc on ne peut pas fermer de dessin précédent. Pour y remédier, soit ta variable SDI = 1 et la commande ouvrir suffit.Autrement, il fait utiliser le blackboard Par exemple(setq nom (findfile "c:/test/11.dwg") , Nom du dessin cou (vla-get-activedocument (vlax-get-acad-object)) ; Dessin courant dwg (vla-open (vla-get-documents (vlax-get-acad-object)) nom) ; Ouverture du dessin ) (vl-bb-set "toto" cou) ; Définition de la variable toto dans le blackboard (vla-activate dwg) ; Je passe sur le dessin ouvert Et le dessin qui s'ouvre doit obligatoirement charger un lisp qui contient(and (vl-bb-ref "toto") (vla-close (vl-bb-ref "toto") :vlax-false)) ; fermeture de l'ancien dessin en récupérant la valeur de la variable toto dans le blackboard si la variable existe (vl-bb-set "toto" nil) ; effacer la variable toto du blackboard ps : on n'est plus en débuter en lisp ;) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
nicolas2 Posté(e) le 27 mai 2009 Auteur Posté(e) le 27 mai 2009 Salut Patrick.Je crois que je vais laisser tourner la routine et uniquement en final l'enregistrer en -MAUS.D'une part elle ne sera pas scindée en deux et puis fermer et rouvrir un plan c'est pas la mer à boire. Merci encore pour ton aide et Merci aussi à toi Tramber !!
Tramber Posté(e) le 27 mai 2009 Posté(e) le 27 mai 2009 Je t'en prie, j'avais juste préparé ce que Patrick a posté en premier mais il est allé plus vite.J'ai vu aussi que tu connaissais le lisp, ce que j'ignorais Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
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