Aller au contenu

Bloc sur extrémités de polyligne


gillespj

Messages recommandés

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é).

Lien vers le commentaire
Partager sur d’autres sites

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)
)
) 

Civil 3D 2024 - COVADIS_18.2

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

  • 5 ans après...

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 !

Lien vers le commentaire
Partager sur d’autres sites

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é