Aller au contenu

lignes...


Messages recommandés

Posté(e)

bonjour.

sur mon écran j'ai un point et au dessus, une ligne en biais, disons à 45degrés.

je voudrai tracer en une seule fois, a partir du point, une ligne verticale jusqu'a la droite en biais.

pour l'instant je trace la ligne verticale un peu plus haut puis je fais ajuster sur la ligne en biais.

il y a sans doute un moyen de tracer à partir du point, cette ligne verticale qui trouve directement l'intersection avec la ligne en biais.

j'ai essayé intersection projetée mais je ne doit pas bien l'utiliser, ou ce n'est pas la bonne méthode...

merci.

Patrick

Posté(e)

Salut,

par "jeux", j'ai écrit un petit lisp qui fait ce que tu demandes... en fait, pas vraiment petit...

Mais tu peux selectionner comme objet sur lequel projeter ta ligne un cercle, une polylgne, un arc, ....

(ps : piquage de routines... merci)

 


(defun c:lint (/ L OB/PT P P1 P2)
 (setq p1 (getpoint "\n Spécifiez le premier point:"))
 (while (not ob/pt)
   (setq ob/pt
   (entsel
     "\n Sélectionner l'objet sur lequel projeter la droite Orthogonalement :")))

 (if (or (<=val<= (/ pi 4) (angle p1 (setq p (cadr ob/pt))) (* 3 (/ pi 4)))
  (<=val<= (* 5 (/ pi 4)) (angle p1 (setq p (cadr ob/pt))) (* 7 (/ pi 4))))    
   (setq p (list (car p1) (cadr p) (caddr p)))
   (setq p (list (car p) (cadr p1) (caddr p))))

 (setq	l (vla-AddLine (getSpace)(vlax-3d-point p1)(vlax-3d-point p))
p2 (vlax-invoke l 'IntersectWith (vlax-ename->vla-object (car ob/pt)) acExtendBoth))

 (if (> (length p2) 3)
   (progn
     (setq lst (lst2mat p2 3)
    d (distance p1 (setq p2 (car lst)))
    i (1- (length lst)))
     (repeat i
(if (< (distance p1 (nth i lst)) d)
  (setq p2 (nth i lst)))
(setq i (1- i))))
   ) 
 (if p2
   (vla-AddLine (getSpace)(vlax-3d-point p1)(vlax-3d-point p2))
   (princ "\n ** Impossible de trouver l'intersection avec l'objet. **"))
 (vla-delete l)
 (princ)
)


(defun getSpace ()
 (if (= (getvar "CVPORT") 1)
   (vla-get-PaperSpace (vla-get-ActiveDocument (vlax-get-acad-object)))
   (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)))
   )
)

; Valeur +Grande ou égale et +Petite ou égale que
; 2<=50<=90 -> (<=val<= 2 50 90) => T
; 45<=48<=48 -> (<=val<= 45 48 48) => T
(defun <=val<= (val- val val+)
 (if (and (> val val-)
   (< val val+)) t
   (if (or (equal val val-)
    (equal val val+)) t))
)

;;; SUBLST Retourne une sous-liste
;;; Premier élément : 1
;;; (sublst '(1 2 3 4 5 6) 3 2) -> (3 4)
;;; (sublst '(1 2 3 4 5 6) 3 -1) -> (3 4 5 6)
;;; (sublst '(1 2 3 4 5 6) 3 12) -> (3 4 5 6)
;;; (sublst '(1 2 3 4 5 6) 3 nil) -> (3 4 5 6)
(defun sublst (lst start leng / rslt)
(if (not (<= 1 leng (- (length lst) start)))
(setq leng (- (length lst) (1- start)))
)
(repeat leng
(setq rslt (cons (nth (1- start) lst) rslt)
start (1+ start)
)
)
(reverse rslt)
)

;;; LST2MAT Retourne un liste de listes du nombre d'éléments spécifié (matrice)
;;; (lst2mat '(1 2 3 4 5 6) 2) -> ((1 2) (3 4) (5 6))
;;; (lst2mat '(1 2 3 4 5 6) 3) -> ((1 2 3) (4 5 6))
(defun lst2mat (lst n)
(if (and lst (zerop (rem (length lst) n)))
(cons (sublst lst 1 n)
(lst2mat (sublst lst (1+ n) (- (length lst) n)) n)
)
)
)

 

[Edité le 16/11/2007 par Bred]

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)
Bred, vraiment super ta petite

merci ;) .

J'avoue que je n'en vois pas trop une "utilité indispensable" (surtout que l'on peut faire pareil en quelques manipulations), mais faire ce genre de code permet de se poser des problèmes (et d'essayer de trouver des solutions) qui peuvent se rencontrer dans des lisp plus interressant.

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Bonjour à toutes et tous,

 

J'avoue que je n'en vois pas trop une "utilité indispensable" ( surtout que l'on peut faire pareil en quelques manipulations

 

Cela dépend dans quel secteur tu travailles car en topo et en structure, je vois comment je peux utiliser ta routine. ( surtout si ça peut éviter de le faire en quelques manipulations,....au contraire, comme tous bons professeurs, j'apprend également à mes étudiants à être "feignant"!).

 

ce genre de code permet de se poser des problèmes (et d'essayer de trouver des solutions) qui peuvent se rencontrer dans des lisp plus interressant.
.

 

Je comprend bien ce que tu veux dire, malheuresement pour moi, ces écritures restent encore du chinois, mais de voir passer des codes et les tester, cela permet de s'y mettre gentiment. J'ai également pris conscience qu'il va falloir dégager un temps important (que je n'ai malheuresement pas pour le momment,..). Une fois de plus, merci à tous les développeurs de ce site et, comme c'est d'actualité, longue vie aux 40000 inscrits sur ce formidable site.

 

Bon WE.

Civil 3D 2025 - COVADIS_18.3b

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

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é