Aller au contenu

Comment remplacer type ligne d\'un bloc


Messages recommandés

Posté(e)

Bjr,

 

J'ai une question a vs poser, j'ai un fichier composé d'un nombres important de blocs puisque c'est l'ensemble des limites de communes de mon département

j'ai donc créé un type de ligne dans un bloc d'une limite de commune et je voudrais maintenant mettre à jour l'ensmble des autres blocs en une seule fois.

En fait les blocs de départ avait commen type de ligne "continu" que j'ai changé par un autre.

Pour l'instant je n'ai pas trouvé de solution qd modifiant blmoc par bloc ce qui est long je dois dire.

Donc si quelqu'un a une solution sur Autocad 2006 merci d'avance

 

Phil

Posté(e)

Salut,

 

Il y a surement une solution si tu as une version full en passant par le lisp, mais il faudrait que tu sois plus clair.

je n'ai pas trouvé de solution qd modifiant blmoc par bloc
??!!??

D'abord c'est quoi "blmoc" ?

Ensuite, ce sont toutes lignes dans les blocs de type de ligne "continuous" que tu veux remplacer par ton type de ligne ?

 

 

Posté(e)

excuse Vinz 34 j'ai foiré ds la fin de mon message, je voulais dire " Pour l'instant je n'ai pas trouvé de solution qd modifiant blmoc par bloc ce qui est long je dois dire".. En fait je voulais dire je n'ai pas trouvé de solution pour remplacer le type de ligne d'un bloc sur l'ensemble de mes blocs . Je m'explique j'ai un nombre x de blocs sur la carte de mon département correspondant aux différents communes. Chaque commune (contour, limite) est un bloc bien précis puiisque c'est un export de Mapinfo. J'ai donc modifié le type de ligne d'un des ces différents blocs et je voudrais maintenant faire la même chose mais pour le reste en une seule opération et non 1 par 1 vu le nombre important.

étais-je un peu plus clair et précis cette fois-ci ?

 

Posté(e)

Il faut mettre donc dans tous tes blocs toutes les entités en type de ligne "DUBLOC" de manière à ce que tu n'ai plus qu'à sélectionner les blocs et ainsi modifier leur type de ligne à l'aide de propriété! ici

 

Il ne manque plus que la valeur de la variable CELTSCALE des entités dans chacun des blocs pour dévelloper une routine. et Cela ce n'est que toi qui peut le donner.

 

 

[Edité le 8/1/2008 par Maximilien]

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office

 

PlaquetteDeplianteMars2024.pdf

Posté(e)

Salut philous,

 

Désolé je n'avais pas compris, je n'avais pas les yeux en face des trous en sortant de table, on va mettre ça sur le compte de la digestion.

C'est effectivement plus clair, mais je ne sais toujours pas une si tu une version LT ou full.

Posté(e)

Vinz34

 

Etant donné que c'est le Forum AutoCAD 2006 et non AutoCAD LT 2006 la question se pose-t-elle vraiment?

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office

 

PlaquetteDeplianteMars2024.pdf

Posté(e)

pas grave Vinz34 en fait la fin de mon message n'était non plus très clair.

Pour ma version au boulot ici on es ten réseau ce n'es tpas la LT c'est la version Map 3d 2006.

En fait je fais actuellement des fichiers gabarits pour mon service, et celui que je fait actuellement c'est un fichier de plan de situation donc j'utilise les exports de Mapinfo pour le s limites des communes mais ces limites sont ttes des blocs d'ou mon souicis pour transformer le type de ligne actuel de la limite qui est Continu par un autre type perso que j'ai créé.

Posté(e)

Décidément, je n'ai pas les yeux en face des trous aujourd'hui.

Peut être assez pour pondre ça :

 

(defun c:philous (/ ss lst n elist e nom newname)
 (setq ss (ssget))
 (while (not newname)
   (setq newname (getstring "Nom du type de ligne de remplacement : "))
   (if (not (tblsearch "ltype" newname))
     (setq newname nil))
   );while
 (repeat (setq n (sslength ss))
   (setq elist (entget (setq e (ssname ss (setq n (1- n))))))
   (if (and (= (cdr (assoc 0 elist)) "INSERT") (not (member (setq nom (cdr (assoc 2 elist))) lst)))
     (progn
(setq lst (cons nom lst)
      e (cdr (assoc -2 (tblsearch "block" nom))))
(while e
  (setq elist (entget e))
  (cond ((and (assoc 6 elist) (= (cdr (assoc 6 elist)) "Continuous"))
	   (entmod (subst (cons 6 newname) (assoc 6 elist) elist))))
  (setq e (entnext e))
  ); while
);progn
     );if
   );repeat
 );defun
     

Posté(e)

Salut,

 

Je ne comprends pas bien la demande.

 

S'agit-il de modifier uniquement des références des blocs dans le dessin ?

ou de modifier les définitions des blocs (et mettre à jour les références) ?

 

S'agit-il de modifier le type de ligne de certains composants des blocs ?

ou celui de tous les composants des blocs ?

 

Pour tous les composants dans les définitions, tu peux utiliser le LISP Edit_Bloc sur cette page

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

 

Salut GILE

 

Ma demande. est assez simple de modifier le type de ligne de blocs tout simplement mais en une seule oprération au lieude modifier bloc par bloc séparement.

Mes blocs sont les contours de limite des communes demon département exporter je crois par Mapinfo. La ligne de contour de chaque commune n'est pas une polyligne mais un boc contenu une succesion de petits segments de ligne, donc je ne peux pas modifier la ligne car c'est un bloc à moins de prendre individuellement chaque bloc d'ou un travail important en temps.

Pour résumer il s'agit donc de modifier un composant dde bloc soit le type de ligne uniquement.

As-tu compris mon soucis GILE ?

Vraiment super tes LISP GILE

Super travail

Si tu peux répondre à mon problème je te remercie d'avance.

 

Phil

 

 

Posté(e)

Merci (gile), en fait j'ai réussi avec ton application Edit_bloc, super efficace.

Par contre tu auras peut-être réponse à un autre problème auquel je sui confronté, c'est renommé un très grands nombres de blocs en 1 seul opération.

En effet, je suis ds des cartes d emon département, et je voudrais par exemple renommer ts les blocs communes , puis ts ceux cantons etc.... si je les prend 1 par 1 j'en ai paiour un moment, car il y en a plusieurs centaines.

Merci d'avance de ton éventuel réponse.

A +

Phil

Posté(e)

Merci (gile), en fait j'ai réussi avec ton application Edit_bloc, super efficace.

Par contre tu auras peut-être réponse à un autre problème auquel je sui confronté, c'est renommé un très grands nombres de blocs en 1 seul opération.

En effet, je suis ds des cartes d emon département, et je voudrais par exemple renommer ts les blocs communes , puis ts ceux cantons etc.... si je les prend 1 par 1 j'en ai pour un moment, car il y en a plusieurs centaines.

Merci d'avance de ton éventuel réponse.

A +

Phil

Posté(e)

Merci (gile), en fait j'ai réussi avec ton application Edit_bloc, super efficace.

Par contre tu auras peut-être réponse à un autre problème auquel je sui confronté, c'est renommé un très grands nombres de blocs en 1 seul opération.

En effet, je suis ds des cartes d emon département, et je voudrais par exemple renommer ts les blocs communes , puis ts ceux cantons etc.... si je les prend 1 par 1 j'en ai pour un moment, car il y en a plusieurs centaines.

Merci d'avance de ton éventuel réponse.

A +

Phil

Posté(e)

Un début

 

Pour avoir sous forme de liste le noms de tous les blocs

 

 (defun table_entete (TB / TBLIST TBLIST TBNAME RES)
 (setq TBNLIST nil)
 (setq TBLIST (tblnext TB T))
 (while TBLIST
   (setq TBNAME (cdr (assoc 2 TBLIST)))
   (setq TBNLIST (append TBNLIST (list TBNAME)))
   (setq TBLIST (tblnext TB))
 )
 (setq RES TBNLIST)
)

(defun Nombloc ()
(table_entete "BLOCK")
)

 

Pour avoir une variable de la liste de tes blocs :

 (setq Liste_Nom_Blocs (Nombloc))

 

Pour renommer un bloc en AutoLISP

(command "_.-rename" "_block" AncienNom NouveauNom)

 

Voilà un bon départ

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office

 

PlaquetteDeplianteMars2024.pdf

Posté(e)

Salut Maximilien,

 

J'ai bien lu ta réponse intéressante ma fois, mais je n'ai pas les LISP ou Variable pour faire ce que tu dis comme "renommer un bloc en AutoLISP

(command "_.-rename" "_block" AncienNom NouveauNom) " ou "liste de tes blocs :

(setq Liste_Nom_Blocs (Nombloc)" , etc....

Merci d'avance

 

A+

 

Phil

 

 

 

 

Posté(e)

Cher philous,

 

Tout ce que j'ai dit précédemment c'est pour réaliser ton programme ce sont des bout de programmes

 

dans

 (setq Liste_Nom_Blocs (Nombloc))

Liste_Nom_Bloc est une variable

(NomBloc) la valeur affecté à la variable.

et pour éviter d'avoir un message du genre

; erreur: no function definition: NOMBLOC

N'oublie pas de prendre les LISPs que je te donne à ma réponse précédente.

 

pour

 (command "_.-rename" "_block" AncienNom NouveauNom)

AncienNom et NouveauNom correspondent respectivement à l'ancien NOM et au nouveau NOM de bloc que [surligneur] TU[/surligneur] dois spécifier.

 

Je ne donne rien clé en main. Je préfère donner des pistes pour que chacun fasse sa propre cuisine.

 

 

[Edité le 10/1/2008 par Maximilien]

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office

 

PlaquetteDeplianteMars2024.pdf

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é