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)
)
Résolu ! Accéder à la solution.
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)
)
Résolu ! Accéder à la solution.
Résolu par -didier-. Accéder à la solution.
Résolu par _gile. Accéder à la solution.
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)
)
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)
)
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
Dites-nous si vous êtes intéressé par ces propositions ou si la réponse actuelle vous satisfait pleinement.
Amicalement
Didier Aveline
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
Dites-nous si vous êtes intéressé par ces propositions ou si la réponse actuelle vous satisfait pleinement.
Amicalement
Didier Aveline
Merci Gilles pour ta réponse,
Cela me convient parfaitement !
Merci Gilles pour ta réponse,
Cela me convient parfaitement !
Bonjour Didier,
Merci pour ton aide, effectivement Gilles à déjà donné une bonne réponse, cependant ta seconde proposition m'intéresse également :
Cela m'aiderait fortement aussi à d'autres moments
Merci à toi,
Bonjour Didier,
Merci pour ton aide, effectivement Gilles à déjà donné une bonne réponse, cependant ta seconde proposition m'intéresse également :
Cela m'aiderait fortement aussi à d'autres moments
Merci à toi,
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)
Amicalement
Didier Aveline
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)
Amicalement
Didier Aveline
Ah mais c'est super !
Et le petit .gif pour l'explication c'est génial 👍
Merci pour ton travail Didier
Ah mais c'est super !
Et le petit .gif pour l'explication c'est génial 👍
Merci pour ton travail Didier
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
Didier Aveline
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
Didier Aveline
Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.