Aller au contenu

Remplacer objet par un bloc.


Messages recommandés

Posté(e)

Bonjour la grande famille.

 

Existe Il un lisp pour remplacer un objet telle qu'une polyligne par un bloc.

- Voilà j'ai un dessin avec des blocs de luminaires mais certains ont été simplement dessiné par une polyligne et je voudrait remplacer ces polilygnes pour un bloc.

A part une macro je n'ai pas trouvé de lisp.

Posté(e)

Hello

 

J'ai en stock 3 routines mais malheureusement pas celle que tu voulais, sorry !

- Remplacer un texte par un Bloc

- Remplacer un cercle par un Bloc

- Remplacer un point graphique par un Bloc

 

Si j'ai bien compris, tu as des polylignes qui representent graphiquement le Bloc/Symbole

mais il va falloir faire le remplacement par rapport a quoi :

- Le Point de depart de la polyligne ?

- Un decalage en XY par rapport au point de depart ?

(Donc question specifique)

- etc ?

 

lecrabe

Autodesk Expert Elite Team

Posté(e)

Hello

 

J'ai en stock 3 routines mais malheureusement pas celle que tu voulais, sorry !

- Remplacer un texte par un Bloc

- Remplacer un cercle par un Bloc

- Remplacer un point graphique par un Bloc

 

Si j'ai bien compris, tu as des polylignes qui representent graphiquement le Bloc/Symbole

mais il va falloir faire le remplacement par rapport a quoi :

- Le Point de depart de la polyligne ?

- Un decalage en XY par rapport au point de depart ?

(Donc question specifique)

- etc ?

 

lecrabe

 

L'idéal serait que le bloc se place au milieu de la polyligne car on ne sait jamais dans quel sens elle a été dessiné

Posté(e)

Bonjour,

 

Le luminaire est représenté par une seule polyligne ?

Ça ressemble à quoi ? :unsure:

 

C'est là le problème ça ressemble à rien, ça juste été dessiné par un plouc qui ne dois connaître que les polyligne sous Autocad et je te parle pas du reste du plan.

Oui il y juste dessiné une polyligne de différente épaisseur pour différancier le type de luminaire donc je dois recupérer sont déchet et mettre des blocs :(

Posté(e) (modifié)

Un p'tit Lisp vite fait qui je l'espère te dépannera :

 

(defun c:LUM ( / layer block scale acdoc ms filter ss pt1 pt2 pt nb )

 (setq block "Luminaire") ; nom du bloc de remplacement
 (setq scale 1.0) ; échelle d'insertion
 
 (vl-load-com)
 (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object))
       ms (vla-get-modelspace acdoc)
       filter '( (0 . "LWPOLYLINE") ))
 (if (cadr (ssgetfirst))
   (setq ss (ssget "_I" filter))
   (progn
     (prompt "\nSélectionnez les polylignes à remplacer : ")
     (setq ss (ssget filter))
   )
 )
 (if (and ss (or (tblobjname "BLOCK" block) (setq block (findfile (strcat block ".dwg")))))
   (progn
     (setq ss (vla-get-activeselectionset acdoc))
     (vlax-for p ss
       (vla-getboundingbox p 'pt1 'pt2)
       (setq pt1 (vlax-safearray->list pt1)
             pt2 (vlax-safearray->list pt2))
       (setq pt (vlax-3D-point (mapcar '(lambda( p1 p2 ) (/ (+ p1 p2) 2.0)) pt1 pt2)))
       (setq nb (vla-insertblock ms pt block scale scale scale 0.0))
       (vla-delete p)
     )
     (setq ss nil)
   );progn
 )
 (princ)
)

 

PS: petite modif du calcul du point d'insertion...

Modifié par bryce
Posté(e)

Hello

 

Ca marche bien sur un MAP 2010 et MAP 2013 ...

 

Note : Le Bloc "LUMINAIRE" est insere/dessine au centre de la Bounding Box de la polyligne

 

Peut etre que une question du genre :

Centre de la Bounding Box ou Point de Depart de la Polyligne pourrait s'averer utile ?

A voir !?

 

Merci, le crabe

Autodesk Expert Elite Team

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é