Aller au contenu

Capture pour enregistrement automatique


Messages recommandés

Posté(e)

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

 

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

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 12305

Un 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-2

Sous le dossier 'plan" de l'affaire 12306, "12306-MAUS" issu du plan 2278-2 etc.......

 

Merci pour ton aide

 

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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.

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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 !!

Posté(e)

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

 

./__\.
(.°=°.)

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é