Aller au contenu

Messages recommandés

Posté(e)

bonjour

 

je cherche a créer une diagonale entre des lignes pour un calepinage

 

les lignes forment bien des rectangles fermés ( ce sont des lignes pas des polylignes fermés )

 

j'ai trouvé un lisp de LEE MAC qui créer une diagonal en fonction des rectangles de polyligne fermés

 

donc pour le faire fonctionner il me faut utiliser avant tout la commande "CONTOUR" en cliquant chaque point.

 

soit deux opérations.

 

avec vous un lisp faisant les deux opérations d'un coup sans passer par le fait de créer les polylignes fermées losanges

ou alors que la polylignes fermées soit effacer apres la création de la diagonale

 

1 cliquer un point central entre 4 lignes

2 trouver les points de croisement des 4 lignes

3 sélectionner les points opposés

4 créer une ligne diagonale entre les points

 

 

merci

 

Phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Coucou,

 

Question à part mais...pourquoi utiliser des lignes pour former un rectangle fermé (donc 4 objets distincts) alors qu'une polyligne fermée (donc 1 objet) revient strictement au même avec des propriétés supplémentaires ?

 

1 cliquer un point central entre 4 lignes

2 trouver les points de croisement des 4 lignes

3 sélectionner les points opposés

4 créer une ligne diagonale entre les points

Si je comprend bien, tu voudrais ne pas avoir à sélectionner toi-même les 4 lignes ? Parce que je ne vois pas vraiment comment sélectionner de manière automatique les 4 lignes qui forment un beau rectangle (ou du moins pas de manière simple). Ne serait-il pas plus simple de sélectionner une ligne et à partir des sommets de cette lignes, sélectionner les 3 lignes suivantes (à la manière de dominos) ?

 

Nous sommes d'accord que les lignes forment un rectangle de manière visible (aucune projection d'intersection à faire pour dessiner le rectangle) ?

Pour moi, l'utilisation des polylignes reste la plus appropriée (une commande JOINDRE sur les lignes juxtaposées permettront de générer automatiquement des rectangles et sera plus simple à gérer ensuite)..

Parce que au final, le but du programme est d'économiser des clics mais dans l'exécution du programme tel que je le perçois, tu devras cliquer une première fois au centre du rectangle pour sélectionner tes lignes, puis une seconde fois sur un sommet du rectangle pour générer la diagonale et cela pour chacun des rectangles (au mieux)... Or pour dessiner une diagonale, il faut cliquer sur le premier sommet, et sur le second pour chaque rectangle !

 

Il n'y a aucune économie, ou alors je n'ai pas compris le programme et je m'en excuse >w<

 

Bisous,

Luna

Posté(e)

hello

 

merci a vous deux

 

j'ai plein de ligne verticales / horizontales qui se recoupent( en débordant ou pas )

qui forment un quadrillage

 

l'idée est de trouver les coordonnées des intersections des lignes extérieures en cliquant une fois a l'intérieur d'un rectangle formé par le quadrillage

normalement dans l'ordre trigonometrique ( bas gauche, bas droit, haut droit, haut gauche ), on prend le premier point puis le troisieme et on forme une ligne qui est la diagonale

 

et de recommencer a la volée, sans a avoir a sélectionner des lignes, juste en cliquant un point( "centroides" )

 

la commande "CONTOUR" permet a la volée de créer des polyligne entre les entitées en cliquant un point mais je dois ensuite les effacer

j'ai un lisp qui créer une diagonale d'un trapeze, losange ( polylignes a 4 angles ).

 

l'idée est faire un mix des deux

 

merci

 

A+

Phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

HELLO

 

trouver, avec des bouts de programmes trouver sur le net

 

 

;;;;; By Lee MAC
(defun LWPoly (lst lprx)
(setq ll (list 
                        (cons 0 "LWPOLYLINE")
                        (cons 100 "AcDbEntity")
                        (cons 100 "AcDbPolyline")
                        (cons 90 (length lst))
                  ))

(setq all (append ll lprx )) 
(entmakex (append all (mapcar (function (lambda (p) (cons 10 p))) lst))) 
)





(defun c:DIAGONALE_INTERNE (/ myboundary)
 (vl-arx-import 'bpoly)
 (setq myboundary 0)
 (while (/= myboundary nil)
   (setq myboundary (bpoly (getpoint "\nSPECIFIER UN POINT INTERNE POUR LA CREATION DES DIAGONALES :")))
   (setq pt_lst nil)
   (setq entx (entget myboundary))
   (setq linepr '())
   (if (cdr (assoc 6 entx))
     (setq linepr (cons (cons 6 (cdr (assoc 6 entx))) linepr))
   )
   (if (cdr (assoc 8 entx))
     (setq linepr (cons (cons 8 (cdr (assoc 8 entx))) linepr))
   )
   (if (cdr (assoc 43 entx))
     (setq linepr (cons (cons 43 (cdr (assoc 43 entx))) linepr))
   )
   (if (cdr (assoc 62 entx))
     (setq linepr (cons (cons 62 (cdr (assoc 62 entx))) linepr))
   )
   (setq pl_obj (vlax-ename->vla-object myboundary)
         cc     (vla-get-coordinates pl_obj)
   )
   (setq pt_lst_cnt (/ (length (vlax-safearray->list (vlax-variant-value cc))) 2))
   (setq cntr 0)
   (repeat pt_lst_cnt
     (setq pt_lst (cons (append (vlax-safearray->list (vlax-variant-value (vla-get-coordinate pl_obj cntr))) (list 0))
                        pt_lst
                  )
           cntr   (1+ cntr)
     )
   )
   (if (> (length pt_lst) 3)
     (progn
       ;;(lwpoly (list (nth 0 pt_lst) (nth 2 pt_lst)) linepr)
            (lwpoly (list (nth 1 pt_lst) (nth 3 pt_lst)) linepr)
     )
   )
   (command-s "effacer" myboundary "")
 )
)

 

a+

Phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Salut à la communauté...

 

Je ne suis pas très sur d'avoir compris, mais j'ai ça :

;;; *****************************************
;;; Dessine une croix dans un quadrilatère   
;;; *****************************************
(defun c:CroixDsQuadri (/ ent ent-liste n liste-sommets)
 (princ "\n\tDéveloppé par Denis H. (1.0)")
 (setq doc (vla-get-activedocument (vlax-get-acad-object)))
 (vla-startundomark doc)
 (while (= "LWPOLYLINE" (cdr (assoc 0 (entget (setq ent (car (entsel "\nChoix de la polyligne\n")))))))
   (setvar "clayer" (cdr (assoc 8 (entget ent))))
   (setq ent-liste (entget ent)
         n 0
         ent 0
         liste-sommets nil
   ) ;_ Fin de setq
   (repeat (length ent-liste)
     (if (= 10 (car (nth n ent-liste)))
       (setq liste-sommets (cons (cdr (nth n ent-liste)) liste-sommets))
     ) ;_ Fin de if
     (setq n (+ 1 n))
   ) ;_ Fin de repeat
   (setq liste-sommets (reverse liste-sommets))
   (command "_.line" (nth 0 Liste-sommets) (nth 2 Liste-sommets) "")
   (command "_.line" (nth 1 Liste-sommets) (nth 3 Liste-sommets) "")
 ) ;_ Fin de while
 (vla-endundomark doc)
 (princ)
) ;_ Fin de defun

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

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é