CadXP: faire passer les hachures en second plans dans un bloc - CadXP

Aller au contenu

  • 2 Pages +
  • 1
  • 2
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

faire passer les hachures en second plans dans un bloc ou la pénibilité de créer une bibliothèque correcte

#1 L'utilisateur est hors-ligne   philsogood 

  • ceinture noire 5em dan
  • Groupe : Membres
  • Messages : 2 530
  • Inscrit(e) : 03-mars 10

Posté 06 février 2013 - 14:27

Hello,
Tout est dans le titre
Je suis en train de recréer mes bibliothèques d'accessoires de tuyauterie en 2D et pour se faire je dois faire passer en arrière plan tous les hachures que ces blocs contiennent
Quelqu'un pourrait-il me donner un coup de main svp, mes connaissances du lisp ne sont pas assez étendues pour ce type d'application?
Phil
Projeteur Revit - traitement des eaux
0

#2 L'utilisateur est hors-ligne   Dinosor 

  • ceinture noire 2em dan
  • Groupe : Moderateurs
  • Messages : 1 186
  • Inscrit(e) : 26-mars 07
  • LocationSuisse - Vaud

Posté 06 février 2013 - 14:34

Ciao,

Si je comprend bien, l'idée c'est de passer ces hachures en arrière-plan sans ouvrir les blocs ? Car tu parles de lisp...
Seuls nous allons vite, ensemble nous allons plus loin...
AutoCad (Architecture) 2018 - Lumion 9 PRO
BMW R-1200-RT, c'est moche, oui... je sais...

www.neda.ch
0

#3 L'utilisateur est hors-ligne   philsogood 

  • ceinture noire 5em dan
  • Groupe : Membres
  • Messages : 2 530
  • Inscrit(e) : 03-mars 10

Posté 06 février 2013 - 15:20

tou a fait...
j'ai plusieurs ventaines de blocs ou j'ai tracer des hachures, positionnes sur ces blocs, problème : en assemblent les hachures aux blocs, les hachures passent devant!!
Je souhaiterai trouver un lisp pour contrer ce phénomène et faire apsser les hachures en arrière plan
Phil
PS

Citation

(2013 toujours sous cellophane !)
, tu vas ouvrir la boite pour l'arrivée de la 2014, ou la 2014 subira le même sort que la 2013?
Projeteur Revit - traitement des eaux
0

#4 L'utilisateur est hors-ligne   Dinosor 

  • ceinture noire 2em dan
  • Groupe : Moderateurs
  • Messages : 1 186
  • Inscrit(e) : 26-mars 07
  • LocationSuisse - Vaud

Posté 06 février 2013 - 16:18

Re,

Pour le lisp, je ne vais pas pouvoir t'aider là, désolé. :(
Pour la version j'attend effectvement la 2014, j'ai encore reçu dernièrement la Building Design Suite en deux exemplaires, mais toujours pas ouverts :rolleyes: ... Je pense que j'installerai la 2014 sur mon deuxième poste (le poste Lumion), mais à la base je reste encore sous cette version 2011 en 32 bits. Ceci toujours pour une question de compatibilité avec ma Summasketch... :D Dinosaure pas pour rien... hi,hi...

J'espère que tu va trouver un bon lisp pour ce que tu demandes !

Bonne. B)
Seuls nous allons vite, ensemble nous allons plus loin...
AutoCad (Architecture) 2018 - Lumion 9 PRO
BMW R-1200-RT, c'est moche, oui... je sais...

www.neda.ch
0

#5 L'utilisateur est hors-ligne   Dinosor 

  • ceinture noire 2em dan
  • Groupe : Moderateurs
  • Messages : 1 186
  • Inscrit(e) : 26-mars 07
  • LocationSuisse - Vaud

Posté 06 février 2013 - 16:50

Il faudrait peut-être s'inspirer du lisp nommé PAT, de Patrick. Celui-ci, semble t'il, permet de changer un attribut d'un bloc dans plusieurs fichiers, sans avoir à les ouvrir. Les "lispeurs" ont peut-être une parade pour affecter les hachures et les mettre en arrière-plan plutôt que de modifier un attribut ? :huh:
Seuls nous allons vite, ensemble nous allons plus loin...
AutoCad (Architecture) 2018 - Lumion 9 PRO
BMW R-1200-RT, c'est moche, oui... je sais...

www.neda.ch
0

#6 L'utilisateur est hors-ligne   Patrick_35 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 6 381
  • Inscrit(e) : 06-janvier 03

Posté 06 février 2013 - 16:54

Salut

Essaye ceci pour voir
(defun c:drw(/ blo doc ent)
  (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  (vla-startundomark doc)
  (vlax-for blo (vla-get-blocks doc)
    (and (eq (vla-get-islayout blo) :vlax-false)
      (vlax-for ent blo
	(or (eq (vla-get-objectname ent) "AcDbHatch")
	  (progn
	    (vla-copy ent)
	    (vla-delete ent)
	  )
	)
      )
    )
  )
  (vla-endundomark doc)
  (princ)
)


@+
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
0

#7 L'utilisateur est hors-ligne   lecrabe 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8 939
  • Inscrit(e) : 10-décembre 03
  • LocationLoire (42)

Posté 06 février 2013 - 20:23

Hello P35

Je viens de faire un test rapide sur MAP 2013 32 bits sous Win XP Pro
Ta routine DRW marche nickel-chrome ! MERCI !!

Je suis impressionne et etant un gros Nul en Lisp/VLisp
serait il possible que tu nous expliques en quoi un simple
(vla-copy ent) + (vla-delete ent)
peut mettre les hachures en arriere plan les objets contenus dans "ent" ???

SVP serait il possible d'avoir une routine comparable qui mettrait en arriere plan
les objets "Nettoyer" (WipeOut en fait)

Encore Merci pour ton travail passe, present et futur, lecrabe
Autodesk Expert Elite Team
0

#8 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11 393
  • Inscrit(e) : 02-septembre 05

Posté 06 février 2013 - 22:04

Salut,

Le LISP de Patrick_35 ne met pas les hachures en arrière, il met mes autres entités en avant (en fait, une copie de ces entités). ;)
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#9 L'utilisateur est hors-ligne   lecrabe 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8 939
  • Inscrit(e) : 10-décembre 03
  • LocationLoire (42)

Posté 06 février 2013 - 22:16

Hello Gilles

Ah OUI Excellent la ruse !

lecrabe
Autodesk Expert Elite Team
0

#10 L'utilisateur est hors-ligne   VDH-Bruno 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 955
  • Inscrit(e) : 29-avril 10

Posté 06 février 2013 - 22:23

Bonsoir,

Citation

Je suis impressionne et etant un gros Nul en Lisp/VLisp
serait il possible que tu nous expliques en quoi un simple
(vla-copy ent) + (vla-delete ent)
peut mettre les hachures en arriere plan les objets contenus dans "ent" ???

J’espère que Patrick_35 ne m’en voudrat pas si je réponds à sa place, en fait si on veut être puriste ce n’est pas les hachures qui passe en arrière plan, mais plutôt les autres objets qui passent en avant plan en modifiant leurs ordres de création dans la base de données du dessin .

En fait le (vla-copy ent) + (vla-delete ent), recrée toutes les entités dans les définitions de bloc qui ne sont pas des hachures en effaçant leurs définitions d’origine…Ce qui les rendent postérieurs aux hachures et les positionnes en avant plan.


Citation

SVP serait il possible d'avoir une routine comparable qui mettrait en arriere plan
les objets "Nettoyer" (WipeOut en fait)


Sur le même principe, il suffit dans le code de remplacer l’expression :
(eq (vla-get-objectname ent) "AcDbHatch")

par:
(eq (vla-get-objectname ent) "AcDbWipeout")

Et cela devrait fonctionner..

(defun c:drw-AcDbWipeout ()
  (vlax-for blo	(vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
    (and (eq (vla-get-islayout blo) :vlax-false)
	 (vlax-for ent blo
	   (or (eq (vla-get-objectname ent) "AcDbWipeout")
	       (progn (vla-copy ent) (vla-delete ent))
	   )
	 )
    )
  )
  (princ)
)


A+

EDIT: Visiblement j'ai fait de l'écho à (gile)...
Apprendre => Prendre => Rendre
0

#11 L'utilisateur est hors-ligne   Patrick_35 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 6 381
  • Inscrit(e) : 06-janvier 03

Posté 07 février 2013 - 09:31

Hello

Voir le messageVDH-Bruno, le 06 février 2013 - 22:23 , dit :

J’espère que Patrick_35 ne m’en voudrat pas si je réponds à sa place

Que nenni

Voir le messageVDH-Bruno, le 06 février 2013 - 22:23 , dit :

ce n’est pas les hachures qui passe en arrière plan, mais plutôt les autres objets qui passent en avant plan en modifiant leurs ordres de création dans la base de données du dessin .

En fait le (vla-copy ent) + (vla-delete ent), recrée toutes les entités dans les définitions de bloc qui ne sont pas des hachures en effaçant leurs définitions d’origine…Ce qui les rendent postérieurs aux hachures et les positionnes en avant plan.

C'est exactement cela :D

Juste une précision
Si on souhaite que les hachures + les wipeouts en arrière plan, on remplace

(eq (vla-get-objectname ent) "AcDbHatch")

Ou/et
(eq (vla-get-objectname ent) "AcDbWipeout")

par
(member (vla-get-objectname ent) '("AcDbHatch" "AcDbWipeout"))


@+
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
0

#12 L'utilisateur est hors-ligne   philsogood 

  • ceinture noire 5em dan
  • Groupe : Membres
  • Messages : 2 530
  • Inscrit(e) : 03-mars 10

Posté 07 février 2013 - 11:50

Hello
Merci Patrick ton lisp marche super bien... dommage qu'il soit en V-lisp car il m'est cimpréhensible (je n'ai que quelques bases en lisp)
Super Résultat (et 5h de galère de gagner!)!
Phil
Projeteur Revit - traitement des eaux
0

#13 L'utilisateur est hors-ligne   Patrick_35 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 6 381
  • Inscrit(e) : 06-janvier 03

Posté 07 février 2013 - 13:12

Voir le messagephilsogood, le 07 février 2013 - 11:50 , dit :

dommage qu'il soit en V-lisp car il m'est cimpréhensible (je n'ai que quelques bases en lisp)


Oui, mais dans ce besoin précis, on peut voir ce que peut apporter de plus le vlisp

Juste un synopsis pour faire la comparaison de ce qui est possible en Autolisp et vlisp

En Autolisp
1) Parcourir la liste des calques pour les déverrouiller et mémoriser ceux qui le sont
2) Parcourir la table des blocs
a) Pointer sur la dernière entité créée (entlast)
b) Insérer un bloc en le décomposant (command -.insert *+nom ...)
c) Créer un jeu de sélection/liste depuis mon pointeur pour récuperer les objets décomposés (entnext (entlast))
d) Copier les objets du jeu de sélection tout en enlevant les hachures (command "_.copy"...)
f) Effacer les objets du jeu de sélection tout en enlevant les hachures (command "_.erase"...)
g) Créer un jeu de sélection/liste depuis mon pointeur des objets copiés + hachures ignorées auparavant (entnext (entlast))
h) Créer le bloc (entmake ...)
3) Verrouiller les calques qui l'étaient

En Vlisp
1) Parcourir la table des blocs
a) Parcourir le bloc
b) Copier l'objet du bloc
c) Effacer l'objet du bloc

C'est bien plus simple ;)

@+
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
0

#14 L'utilisateur est hors-ligne   philsogood 

  • ceinture noire 5em dan
  • Groupe : Membres
  • Messages : 2 530
  • Inscrit(e) : 03-mars 10

Posté 07 février 2013 - 13:42

Encore un langage à apprendre...
Phil :mellow:
Projeteur Revit - traitement des eaux
0

#15 L'utilisateur est hors-ligne   VDH-Bruno 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 955
  • Inscrit(e) : 29-avril 10

Posté 12 février 2013 - 00:02

Voir le messagephilsogood, le 07 février 2013 - 13:42 , dit :

Encore un langage à apprendre...
Phil :mellow:


Non pas forcément, du moment que tu ne sors n’y d’AutoCAD et n’y du document actif, je n’ai pas en tête d’exemple de codes Vlisp qui ne puissent être codé en AutoLISP classique.

Les méthodes et propriétés Visual Lisp peuvent être vu comme des bibliothèques de fonctions prédéfinies qui permettent comme dans ce cas un code plus directe…

Pour l’exemple un équivalent LISP un peu moins partisan que le cheminement proposé précédemment ;) :

(defun c:drwHatch (/ blk e lsthatch lstent dxf)
  (while (setq blk (tblnext "BLOCK" (null blk)))
    (if (wcmatch (setq blk (cdr (assoc 2 blk))) "~'**")
      (progn (setq blk      (entget (tblobjname "BLOCK" blk))
                   e        (cdr (assoc -2 blk))
                   lsthatch nil
                   lstent   nil
             )
             (while e
               (if (= "HATCH" (cdr (assoc 0 (setq dxf (entget e)))))
                 (setq lsthatch (cons dxf lsthatch))
                 (setq lstent (cons dxf lstent))
               )
               (setq e (entnext e))
             )
             (and lsthatch
                  (entmake blk)
                  (mapcar 'entmake (append (reverse lsthatch) (reverse lstent)))
                  (entmake '((0 . "ENDBLK")))
             )
      )
    )
  )
  (princ)
)


A+

Ce message a été modifié par VDH-Bruno - 12 février 2013 - 08:58 .

Apprendre => Prendre => Rendre
0

#16 L'utilisateur est hors-ligne   philsogood 

  • ceinture noire 5em dan
  • Groupe : Membres
  • Messages : 2 530
  • Inscrit(e) : 03-mars 10

Posté 12 février 2013 - 12:15

Merci Bruno pour cette version pur lisp q'il me reste à potasser!
Phil
Projeteur Revit - traitement des eaux
0

#17 L'utilisateur est hors-ligne   Nico19 

  • ceinture blanche
  • Groupe : Membres
  • Messages : 1
  • Inscrit(e) : 30-mai 13

Posté 30 mai 2013 - 14:59

Bonjour à tous,

Merci pour ces programmes, mais je viens de me rendre compte (un peu tard :( ) que lors de l'utilisation du lisp drw-AcDbWipeout avec Autocad 2011 sur ma bibliothèque composée de blocs contenant entre autres des paramètres d'étirement, de rotation et d'inversion, ces paramètres ne fonctionnent plus correctement. Pour être plus précis, il ne fonctionne plus que sur le "nettoyer" en lui même (ce qui est balot...).
Quelqu'un aurait-il une solution ?

Nicolas

Edit : En fait, il semblerait que ce soit les actions liées aux paramètres qui fonctionnent mal, car le paramètre d'alignement, qui n'appelle pas d'action, fonctionne à merveille...
0

#18 L'utilisateur est hors-ligne   Chloé17 

  • Member
  • PipPip
  • Groupe : Membres
  • Messages : 10
  • Inscrit(e) : 26-mars 20
  • LocationCharente Maritime

Posté 27 mars 2020 - 11:43

Bonjour,

Je relance le sujet
J'ai chargé le lisp indiqué en début de post par Patrick
En lançant la commande DRW, voilà ce que j'ai comme message :

Commande: DRW
; erreur: Erreur Automation Objet effacé


Mon idée est de mettre les hachures de plusieurs blocs (une 50aine) à sélectionner (ou de tous les blocs du dessin) en arrière plan

(Version Autocad dans ma signature)

Merci,
Chloé
Projeteuse VRD - Paysage
Autocad MAP 3D 2019
Covadis 17f - Autoturn 10
Windows 10 64bits
0

#19 L'utilisateur est hors-ligne   Fraid 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2 027
  • Inscrit(e) : 08-août 05
  • LocationST Malo 35

Posté 27 mars 2020 - 12:04

Bonjour, et bienvenu sur Cadxp :D

A tu vérifié si les objets sont dans un calque verrouillé?
...plus je sais où je suis, moins je sais où je vais....
Extrait d'une double interview simultanée d'une particule élémentaire.
0

#20 L'utilisateur est hors-ligne   Chloé17 

  • Member
  • PipPip
  • Groupe : Membres
  • Messages : 10
  • Inscrit(e) : 26-mars 20
  • LocationCharente Maritime

Posté 27 mars 2020 - 14:48

Bonjour,

Non, les objets ne sont pas sur un calque verrouillé, je n'ai même pas pu sélectionner d'objet, c'est directement au lancement de la commande que j'ai ce message.
Projeteuse VRD - Paysage
Autocad MAP 3D 2019
Covadis 17f - Autoturn 10
Windows 10 64bits
0

Partager ce sujet :


  • 2 Pages +
  • 1
  • 2
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)