Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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: 4793

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)

Hors 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: 4793

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


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

(Autodesk Expert Elite Team)

Hors 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: 4793

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)

Hors 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: 4793

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)

Hors ligne

 

Pied de page des forums

Powered by FluxBB