Communauté
AutoCAD – tous produits - Français
Bienvenue sur les forums AutoCAD d’Autodesk. Partagez vos connaissances, posez des questions, et explorez les sujets AutoCAD populaires.
annuler
Affichage des résultats de 
Afficher  uniquement  | Rechercher plutôt 
Vouliez-vous dire : 

Projection d'un bloc perpendiculaire à une ligne

7 RÉPONSES 7
RÉSOLU
Répondre
Message 1 sur 8
Khazlaris
676 Visites, 7 Réponses

Projection d'un bloc perpendiculaire à une ligne

Bonjour,

 

J'aimerais pouvoir obtenir la projection d'un bloc perpendiculaire à une polyligne.

 

J'ai trouvé ce lisp mais il "déplace" le bloc dans la ligne.

 

J'aurais voulu qu'il projète à la place un autre bloc dans cette ligne mais qu'il ne me déplace pas le bloc.

 

Je met un .Dwg du résultat voulu si c'est pas clair pour vous 😅

 

Merci par avance,

 

(defun c:s2o (/ e el p p2 s)
  ;; RJP - 9/12/2017
  (if (and (setq e (car (entsel "\nSelect Object: ")))
           (not (vl-catch-all-error-p (vl-catch-all-apply 'vlax-curve-getendparam (list e))))
           (princ "\nSelect points: ")
           (setq s (ssget ":L" (list '(0 . "INSERT"))))
      )
    (foreach pt (vl-remove-if 'listp (mapcar 'cadr (ssnamex s)))
      (setq p (cdr (assoc 10 (setq el (entget pt)))))
      (setq p2 (vlax-curve-getclosestpointto e p))
      (entmod (append el (list (cons 10 (list (car p2) (cadr p2) (caddr p))))))
    )
  )
  (princ)
)

 

 

7 RÉPONSES 7
Message 2 sur 8
_gile
en réponse à: Khazlaris

Salut,

Essaye ça:

(defun c:s2o (/ curve ss i)
  (if (tblobjname "block" "cercle")
    (if	(and
	  (setq	curve
		 (car
		   (entsel
		     "\nSélectionnez l'objet curviligne sur lequel projeter les blocs: "
		   )
		 )
	  )
	  (not
	    (vl-catch-all-error-p
	      (vl-catch-all-apply 'vlax-curve-getendparam (list curve))
	    )
	  )
	)
      (if (setq ss (ssget '((0 . "insert"))))
	(repeat	(setq i (sslength ss))
	  (entmake
	    (list
	      (cons 0 "insert")
	      (cons 2 "cercle")
	      (cons 10
		    (vlax-curve-getClosestpointTo
		      curve
		      (getpropertyvalue
			(ssname ss (setq i (1- i)))
			"Position"
		      )
		    )
	      )
	    )
	  )
	)
	(prompt "\nAucun bloc sélectionné.")
      )
      (prompt "\nAucun objet curviligne sélectionné.")
    )
    (prompt "\nLe bloc 'cercle' n'existe pas dans le dessin.")
  )
  (princ)
)


Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

Message 3 sur 8
-didier-
en réponse à: Khazlaris

Bonjour @Khazlaris 

 

La question est bien posée, le dessin est explicite et ça donne vraiment envie de vous aider (ça devient rare).

Certes @_gile a déjà répondu dans le sens que j'allais proposer, mais dans votre cas il est possible d'améliorer encore.
Par exemple il est possible de proposer un choix

  • Déplacer les blocs
  • Dessiner la ligne de projection
  • Insérer un bloc (cercle) à la projection

Dites-nous si vous êtes intéressé par ces propositions ou si la réponse actuelle vous satisfait pleinement.

 

Amicalement

Éternel débutant.. my site for learning : Programmer dans AutoCAD

Didier Aveline

EESignature

Message 4 sur 8
Khazlaris
en réponse à: _gile

Merci Gilles pour ta réponse, 

 

Cela me convient parfaitement !

Message 5 sur 8
Khazlaris
en réponse à: -didier-

Bonjour Didier,

 

Merci pour ton aide, effectivement Gilles à déjà donné une bonne réponse, cependant ta seconde proposition m'intéresse également : 

  • Dessiner la ligne de projection

Cela m'aiderait fortement aussi à d'autres moments

Merci à toi,

Message 6 sur 8
-didier-
en réponse à: Khazlaris

Bonjour @Khazlaris 

 

Comme promis voici le fichier LSP qui reprend le travail de @_gile
en le complétant du dessin d'une ligne de liaison entre le bloc à projeter
et le bloc "CERCLE" inséré au point le plus proche sur la courbe.

J'ai pris le même nom de commande en rajout L à la fin (pour Ligne)

6C69F3E5-5D62-4C5A-9E1C-DA773184E31E.GIF

Amicalement

Éternel débutant.. my site for learning : Programmer dans AutoCAD

Didier Aveline

EESignature

Message 7 sur 8
Khazlaris
en réponse à: -didier-

Ah mais c'est super !

 

Et le petit .gif pour l'explication c'est génial 👍

 

Merci pour ton travail Didier

Message 8 sur 8
-didier-
en réponse à: Khazlaris

Bonjour @Khazlaris 

 

Je suis content d'avoir été utile, c'est le principe de nos forums, mais un remerciement est toujours apprécié.

À bientôt pour d'autres questions, si elles sont aussi bien exprimées que celle-ci, ce devrait être aisé de répondre.

 

Amicalement

Éternel débutant.. my site for learning : Programmer dans AutoCAD

Didier Aveline

EESignature

Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.

Publier dans les forums  

Autodesk Design & Make Report