CadXP: Bloc sur extrémités de polyligne - CadXP

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Bloc sur extrémités de polyligne

#1 L'utilisateur est hors-ligne   gillespj 

  • ceinture orange
  • Groupe : Membres
  • Messages : 27
  • Inscrit(e) : 27-mars 07

Posté 04 août 2008 - 14:46

Bonjour tlm,

Je recherche un lisp permettant ,s'il n'existe pas, de placer automatiquement un bloc (ex : "azerty") à chaque extrémités des polylignes sélectionnées.
0

#2 L'utilisateur est hors-ligne   lecrabe 

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

Posté 04 août 2008 - 15:33


Hello

Qq questions supplémentaires :

1) Si Polyligne Close alors UN seul bloc au Départ ?
2) Si Polyligne Ouverte alors 2 blocs ?

ou bien un bloc à chaque sommet des polylignes !?

Le Decapode

0

#3 L'utilisateur est hors-ligne   bonuscad 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 4 770
  • Inscrit(e) : 20-juin 03

Posté 04 août 2008 - 15:34

Une réponse ici

Si ça ne convient pas, recherches dans les routines de (gile), je crois me rappeler qu'il a fait cela aussi.
Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
0

#4 L'utilisateur est hors-ligne   gillespj 

  • ceinture orange
  • Groupe : Membres
  • Messages : 27
  • Inscrit(e) : 27-mars 07

Posté 05 août 2008 - 14:39

Citation

Hello

Qq questions supplémentaires :

1) Si Polyligne Close alors UN seul bloc au Départ ?
2) Si Polyligne Ouverte alors 2 blocs ?

ou bien un bloc à chaque sommet des polylignes !?

Le Decapode


Polyligne ouverte donc 2 blocs par polyligne (1 sur chaque extrémité).
0

#5 L'utilisateur est hors-ligne   lili2006 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 12 216
  • Inscrit(e) : 21-décembre 05

Posté 05 août 2008 - 14:51

Bonjour à toutes et tous,

Ce lisp, peut-être ?

(defun c:ins-vtx (/ acdoc space bname ss lay layf n ins)

(vl-load-com)

(setq acdoc (vla-get-activeDocument (vlax-get-acad-object))

space (if (= (getvar "CVPORT") 1)

(vla-get-PaperSpace acdoc)

(vla-get-ModelSpace acdoc)

)

)

(if (setq bname (getblock "Nom du bloc"))

(progn

(if (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 bname))))

(setq lay (cdr (assoc 8 (entget (ssname ss 0)))))

)

(if (setq layf (getlayer "Choisir le calque filtre de polylignes"))

(if (ssget "_X" (list '(0 . "*POLYLINE") (cons 8 layf)))

(progn

(vla-startUndoMark acdoc)

(vlax-for pl (vla-get-ActiveSelectionSet acdoc)

(setq n (fix (vlax-curve-getEndParam pl)))

(or (= (vla-get-Closed pl) :vlax-false)

(setq n (1- n))

)

(repeat (1+ n)

(setq ins

(vla-InsertBlock

space

(vlax-3d-point (vlax-curve-getPointAtParam pl n))

bname

1.0

1.0

1.0

0.0

)

)

(if lay

(vla-put-layer ins lay)

)

(setq n (1- n))

)

)

(vla-EndUndoMark acdoc)

)

) 

0

#6 L'utilisateur est hors-ligne   G2.toff 

  • ceinture verte
  • Groupe : Membres
  • Messages : 60
  • Inscrit(e) : 06-mars 14

Posté 22 avril 2014 - 11:40

Voir le messagelili2006, le 05 août 2008 - 14:51 , dit :

Bonjour à toutes et tous,


Ce lisp, peut-être ?


(defun c:ins-vtx (/ acdoc space bname ss lay layf n ins)

(vl-load-com)

(setq acdoc (vla-get-activeDocument (vlax-get-acad-object))

space (if (= (getvar "CVPORT") 1)

(vla-get-PaperSpace acdoc)

(vla-get-ModelSpace acdoc)

)

)

(if (setq bname (getblock "Nom du bloc"))

(progn

(if (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 bname))))

(setq lay (cdr (assoc 8 (entget (ssname ss 0)))))

)

(if (setq layf (getlayer "Choisir le calque filtre de polylignes"))

(if (ssget "_X" (list '(0 . "*POLYLINE") (cons 8 layf)))

(progn

(vla-startUndoMark acdoc)

(vlax-for pl (vla-get-ActiveSelectionSet acdoc)

(setq n (fix (vlax-curve-getEndParam pl)))

(or (= (vla-get-Closed pl) :vlax-false)

(setq n (1- n))

)

(repeat (1+ n)

(setq ins

(vla-InsertBlock

space

(vlax-3d-point (vlax-curve-getPointAtParam pl n))

bname

1.0

1.0

1.0

0.0

)

)

(if lay

(vla-put-layer ins lay)

)

(setq n (1- n))

)

)

(vla-EndUndoMark acdoc)

)

) 




Bonjour,

Je cherche un lisp qui ressemblerait à celui qui tu avais posté il y a quelque temps. En effet je cherche un lisp qui permet d'insérer des blocs aux extrémités de poly se trouvant dans des calques.

Sur ton lisp j'ai une erreur de chargement donc je ne peux voir comment il fonctionne. En fait je t'explique mon idée.
J'ai un fichier avec des calques QQ1 et QQ2 par exemple, j'aurais aimait trouver un lisp qui m'insère aux extrémités des poly sur ces calques des blocs BB1 et BB2(qui ne sont pas déjà présents sur mon fichier mais issus de ma bibliothèque donc connus, raccourci sur Autocad enregistré dans outils/options/fichier/chemins de recherche/...). Par contre mon fichier ne possèdera pas toujours ces 2 calques donc si un calque manque il ne m'insère pas le bloc mais continu sa fonction pour les calques existants.
J'ai trouvé des lisp insérant des blocs aux sommets mais pas extrémités, mais ces lisp ne fonctionnent que si le bloc à insérer est déjà dans le dessin (pas forcément mon cas), de plus il me faut faire la manip bloc par bloc et sélectionner les poly. Or je préfèrerais que le lisp possède déjà les liaisons BB1 sur poly QQ1 et BB2 sur QQ2 etc...
Pour finir à la fin des remplacements si on peut rajouter une décomposition automatique des blocs qui commencent par MMMM* par ce serait pas mal, mais bon, c'est la cerise !

Merci d'avance si tu peux y jeter un œil, je continu mes recherches au cas ou !
0

Partager ce sujet :


Page 1 sur 1
  • 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)