#1 Thu 30 October 2014 16:49
- François84
- Juste Inscrit !
- Date d'inscription: 30 Oct 2014
- Messages: 6
[ACAD] Selection de Bloc pour Script ?
Bonjour à tous,
Je recherche un LISP capable de supprimer 2 blocs (présence multiple) avec attributs, nommés « T_TCPOINT » et « T_TCPOINT-FE », et d’en purger les calques associés.
A savoir que certains sont dans des calques gelé ou éteint…
Ce LISP serait intégré dans un script prévu pour nettoyer 260 plans, de ces 2 blocs.
J’ai tenté de créer ce LISP moi-même, mais je coince tout de suite avec la commande SELECTRAP ou FILTER, dont je n’arrive pas à détailler les paramètres de la sélection ou du filtre.
Sauriez vous m’aider ? Peut être que ce LISP existe déjà ?
Par avance merci de votre réponse.
Hors ligne
#2 Thu 30 October 2014 19:12
- Patrice
- JeSuisCharlie
- Date d'inscription: 16 Sep 2005
- Messages: 4792
Re: [ACAD] Selection de Bloc pour Script ?
Hello
Vite fait en passant et sans aucun test ...
Je suppose que tu es dans l'onglet OBJET ! ... Pour revenir dans l'Onglet OBJET : TILEMODE 1
ET avec TOUS les calques actifs, liberes, deverrouilles ... Facile a faire en Script ...
-- Pour selectionner tous les Blocs dont le nom est "347V" :
(ssget "_X" '((0 . "INSERT") (2 . "347V")))
Cela va te creer un jeu de selection qui contient TOUS les Blocs dont le nom = "347V"
Donc par exemple dans un Script >>>
_redraw
(ssget "_X" '((0 . "INSERT") (2 . "347V")))
_erase
_p
_redraw
<<<
J'ai mis des "_redraw" pour bien delimiter le Script !
Le jeu de selection des Blocs "347V" est cree et apres je l'efface "_ERASE" en le recuperant par l'option "_P" (comme Previous/Precedent) !
Vois tu ce que je veux dire !?
Good Luck, GeoBye, Pat
PS: Desole mais mes connaissances en Lisp/VLisp sont tres limitees !
(Autodesk Expert Elite Team)
En ligne
#3 Fri 31 October 2014 09:42
- François84
- Juste Inscrit !
- Date d'inscription: 30 Oct 2014
- Messages: 6
Re: [ACAD] Selection de Bloc pour Script ?
Merci beaucoup pour l'info, mais vu que je suis complètement néo'frite' je ne comprend pas grand chose à ce language.
c'est quoi "_redraw"? quand sauter des lignes? quand mettre des "_" ? ou des "<<<" ?
pourquoi "0." ou "2." ?
que veut dire le "_p"
Bon est ce que ma lisp serais juste si je met ça? :
_redraw
(ssget "_X" '((0 . "INSERT") (2 . "T_TCPOINT")))
_erase
_p
_redraw
(ssget "_X" '((0 . "INSERT") (2 . "T_TCPOINT_FE")))
_erase
_p
_redraw
_purger ("TOUS")
_redraw
<<<
merci de votre préciseuse Aide
François84
Dernière modification par François84 (Fri 31 October 2014 09:51)
Hors ligne
#4 Fri 31 October 2014 10:27
- Patrice
- JeSuisCharlie
- Date d'inscription: 16 Sep 2005
- Messages: 4792
Re: [ACAD] Selection de Bloc pour Script ?
Hello
ATTENTION 1 : Les "_redraw" sont inutiles, c juste pour mieux voir le debut et la fin du Script
En general je finis toujours mon Script par un "_redraw" (REDESS en Francais)
ATTENTION 2 : Si j'ai mis une ligne VIDE dans mon Script, SVP on la LAISSE ! - Car c IMPERATIF pour valider la selection et/ou dans certaines commandes !
ATTENTION 3 : J'utilise des commandes US/English (et non pas Francaises) prefixees par un "_" (underscore) par habitude !
Debut du Script >>>
TILEMODE 1
_-layer
_th
*
_on
*
_unl
*
(ssget "_X" '((0 . "INSERT") (2 . "T_TCPOINT")))
_erase
_p
(ssget "_X" '((0 . "INSERT") (2 . "T_TCPOINT_FE")))
_erase
_p
_-purge
_all
_n
_redraw
<<< Fin du Script
En resume :
- Passage/Retour dans l'Onglet OBJET
- Calques : TOUS Liberes , TOUS Actifs , TOUS Deverouilles
- Selection Bloc 1 , Effacer P (Selection Precedente)
- Selection Bloc 2 , Effacer P (Selection Precedente)
- PURGER TOUT
Il ne reste plus qu'a sauvegarder le nouveau DWG ...
GeoBye, Pat
PS: le fichier joint .TXT doit etre renomme ... En fait supprimer a la fin le ".TXT" pour finir en ".SCR" !!
(Autodesk Expert Elite Team)
En ligne
#5 Fri 31 October 2014 16:19
- François84
- Juste Inscrit !
- Date d'inscription: 30 Oct 2014
- Messages: 6
Re: [ACAD] Selection de Bloc pour Script ?
Rrrhoo Merci grand Pat sauveur.
La grande classe !
2 petites questions (encore, oui je suis désolé, quand y connais rien....) :
1) en réponse à ta phrase "Il ne reste plus qu'a sauvegarder le nouveau DWG", Dois je compléter ton script? par :
_-purge
_all
_save
_p
_n
_redraw
Je dois appliquer ce script à 260 fichiers.
2)ne manque t-il pas open et close dans le script?
3)pourquoi le fichier joint doit être renommer? renommer en quoi?
Encore pardon de ces questions, pour moi c'est le flou presque total, et encore merci.
François.
Hors ligne
#6 Fri 31 October 2014 17:00
- François84
- Juste Inscrit !
- Date d'inscription: 30 Oct 2014
- Messages: 6
Re: [ACAD] Selection de Bloc pour Script ?
Bon, j'ai lancé l'affaire avec scriptor sur les 260fichiers,
ça marche pô...
ça dit ça en ligne de commande :
_.open "C:\Users\François\Desktop\RGE\W29.dwg"
TILEMODE 1
_-layer
_th
*
_on
*
_unl
*
(ssget "_X" '((0 . "INSERT") (2 . "T_TCPOINT")))
_erase
_p
(ssget "_X" '((0 . "INSERT") (2 . "T_TCPOINT_FE")))
_erase
_p
_-purge
_all
_n
_redraw
_.qsave
sdi 0
(vl-file-delete "c:/Patrick_35.scr")
; erreur: type d'argument incorrect: streamp nil
Why?
Hors ligne
#7 Fri 31 October 2014 17:29
- Patrice
- JeSuisCharlie
- Date d'inscription: 16 Sep 2005
- Messages: 4792
Re: [ACAD] Selection de Bloc pour Script ?
Hello
La fin du Script avant sauvegarde doit etre :
>>>
...
_-purge
_all
_n
<<<
1 - SVP une ligne vide entre "_all" et "_n"
et AILLEURS (A 3 endroits) dans MON Script que je ne vois PLUS DU TOUT dans TON message !!!
2 - SVP tu remarqueras qu'il n'y a AUCUN blanc/espace derriere mes commandes ou options (Tres Important)
3 - SVP as tu joue ce fichier Script "a la main" sur UN DWG pour voir que tout allait bien !?
Car moi, je l'ai teste sur UN DWG ... ET ca marche !
Tu charges "a la main" un DWG de Test , Commande au clavier: SCRIPT <Entree> et tu executes MON Script pour voir ... Alors ?
Quand je parlais de renommer le fichier, je l'ai joins avec l'extendion .TXT par securite
mais bien sur son VRAI nom doit etre par exemple "TCP_Script.scr" !
Waiting ... De savoir que c OK sur UN DWG avec MON fichier Script !?
GeoBye, Pat
(Autodesk Expert Elite Team)
En ligne
#8 Wed 05 November 2014 11:15
- François84
- Juste Inscrit !
- Date d'inscription: 30 Oct 2014
- Messages: 6
Re: [ACAD] Selection de Bloc pour Script ?
Bonjour Pat,
pardon de l'absence, j'étais malade. Me revoilà
Don't Worry, effectivement j'ai respecté les sauts de lignes, et espaces. C'est le copier/coller depuis la ligne de commande, qui donne ça.
j'ai testé le script sur un seul fichier.
Il fonction très bien en effet.
Mais par lot...
Il y a apparemment un problème de mode SDI.
Que signifie ceci :
sdi 0
(vl-file-delete "c:/Patrick_35.scr")
; erreur: type d'argument incorrect: streamp nil
Merci encore,
François84
Hors ligne
#9 Wed 05 November 2014 11:38
- François84
- Juste Inscrit !
- Date d'inscription: 30 Oct 2014
- Messages: 6
Re: [ACAD] Selection de Bloc pour Script ?
C'est bueno !
ça marche!
Encore merci bcp! et bravo!
(c'est la lisp de traitement par lot qui merdouillait)
François84
"
ps: Pour finir et pour info perso, comme dit on en language script : "sélectionner tous les OBJETS (exemple: textes, hachures, points, solides etc...) de tel CALQUE?"
Dernière modification par François84 (Wed 05 November 2014 15:28)
Hors ligne
#10 Wed 05 November 2014 19:05
- Patrice
- JeSuisCharlie
- Date d'inscription: 16 Sep 2005
- Messages: 4792
Re: [ACAD] Selection de Bloc pour Script ?
Hello
Voici par exemple un Script (avec les Commandes Francaises) qui "choppe" TOUS les Objets du calque ZERO
pour les transferer sur un calque "0_A_VOIR" ...
Car normalement RIEN ne doit JAMAIS etre dessine/insere sur le calque ZERO !
*** Mettre sur le calque "0_A_VOIR" tous les Objets du calque ZERO ***
>>>
-CALQUE
E
0_A_VOIR
(setq JEU (ssget "x" (list (cons 8 "0"))))
CHPROP
P
CA
0_A_VOIR
<<<
Donc pour creer un jeu de selection que tu utiliseras APRES avec l'option de selection "P" (Previous/Precedent) :
(setq JEU (ssget "x" (list (cons 8 "Mon_Joli_Calque"))))
Good Luck, GeoBye, Pat
(Autodesk Expert Elite Team)
En ligne