Aller au contenu

Messages recommandés

Posté(e)

bonjour

 

y a t'il une fonction pour trier une liste de points ( ascendante, descendante )

suivant X ou Y ???

 

finaliter creer un LISP pour ajouter ou retirer des points dans une serie de cotes

le truc existe deja dans autocad mais n'est pas terrible terrible

 

 

bonne soirée merci

 

phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Salut,

 

La fonction vl-sort permet ce type de tri.

 

Exemple pour trier une liste de points dans l'ordre des X croissants.

 

(vl-sort pt-lst
 (function
   (lambda (p1 p2)
     (	   )
 )
) 

 

Exemple pour trier une liste de points dans l'ordre des Y décroissants.

 

(vl-sort pt-lst
 (function
   (lambda (p1 p2)
     (> (cadr p1) (cadr p2))
   )
 )
) 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

HELLO

 

ok gile merci

 

reste plus qu'a

 

phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

  • 1 mois après...
Posté(e)

hello gile

 

j'ai essaye la fonction que tu m'as donne pour crer ce tit lisp d'essai

 

mais y'a un beug

 

j'arrive a creer la liste des point des cotes "LISTPOINT"

 

mais je n'arrive pas a crer les listes "LISTPOINTX" ascendant sur x

"LISTPOINTY" ascendant sur y

 

dans le lisp

 

en plus j'ai droit a une erreur mais je vois pas ou ??

 

 

 ;;---------------------------------
;;;ajouter des point dans des cotes
;;---------------------------------


(defun C:APC3 ()
 (prompt
   "CLIQUER SUR LA COTE(S) A MODIFIER POUR ADITIONNER DES POINTS:"
 )
 (setq ENTG1 NIL)
 (while (null ENTG1)
   (setq ENTG1 (ssget '((0 . "DIMENSION"))))
 )
 (setq COMPT 0)
 (setq listpoint nil)
 (while (< COMPT COM)
   (progn (setq ENT (entget (ssname ENTG1 COMPT)))
   (setq NONENT	   (cdr (assoc -1 ENT))
	 STYLECOTE (cdr (assoc 3 ENT))
	 CALQCOTE  (cdr (assoc 8 ENT))
	 POINT10   (trans (cdr (assoc 10 ENT)) 0 1)
	 POINT13   (trans (cdr (assoc 13 ENT)) 0 1)
	 POINT14   (trans (cdr (assoc 14 ENT)) 0 1)
	 ANGCOTE   (cdr (assoc 50 ENT))
;;;		 ASX1	   (car (getvar "ucsxdir"))
;;;		 ASX2	   (cadr (getvar "ucsxdir"))
	 listpoint (cons point13 listpoint)
	 listpoint (cons point14 listpoint)
   )

   (setq COMPT (1+ COMPT))
   )
 )

 (setq	listpointx
 (vl-sort listpoint
	  (function
	    (lambda (p1 p2)
	      (< (car p1) (car p2))
	    )
	  )
 )
 )

 (setq	listpointy
 (vl-sort listpoint
	  (function (lambda (p1 p2) (< (cadr p1) (cadr p2)))
	  )
 )
 )


;;;     (command "scu" "p")
 (princ)
)

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

bonjour,

 

(while (< COMPT COM)

(progn (setq ENT (entget (ssname ENTG1 COMPT)))

 

le (progn est inutile ici et le while peut être remplacé par un (repeat (sslength ENTG1)..

 

Il faut peut être aussi faire un vl-load-com pour pouvoir utiliser les fonctions fournies par Visual Lisp. (suivant la version d'autocad, c'est nécessaire ou non)

 

 ;;---------------------------------
;;;ajouter des point dans des cotes
;;---------------------------------


(defun C:APC3 ()
(vl-load-com)
(prompt
"CLIQUER SUR LA COTE(S) A MODIFIER POUR ADITIONNER DES POINTS:"
)
(setq ENTG1 NIL)
(while (null ENTG1)
 (setq ENTG1 (ssget '((0 . "DIMENSION"))))
)
(setq COMPT 0)
(setq listpoint nil)
(repeat (sslength ENTG1)
 (setq ENT (entget (ssname ENTG1 COMPT)))
 (setq NONENT (cdr (assoc -1 ENT))
   STYLECOTE (cdr (assoc 3 ENT))
   CALQCOTE (cdr (assoc 8 ENT))
   POINT10 (trans (cdr (assoc 10 ENT)) 0 1)
   POINT13 (trans (cdr (assoc 13 ENT)) 0 1)
   POINT14 (trans (cdr (assoc 14 ENT)) 0 1)
   ANGCOTE (cdr (assoc 50 ENT))
   ;;; ASX1 (car (getvar "ucsxdir"))
   ;;; ASX2 (cadr (getvar "ucsxdir"))
   listpoint (cons point13 listpoint)
   listpoint (cons point14 listpoint)
  )
  (setq COMPT (1+ COMPT))
)

(setq listpointx
(vl-sort listpoint
(function
(lambda (p1 p2)
(< (car p1) (car p2))
)
)
)
)

(setq listpointy
(vl-sort listpoint
(function (lambda (p1 p2) (< (cadr p1) (cadr p2)))
)
)
)


;;; (command "scu" "p")
(princ)
)

 

Ce serait aussi plus simple si tu nous disais quel est le message d'erreur ;)

 

Amicalement

Vincent

 

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Posté(e)

Salut

 

A te lire, regarde comment ta liste est constitué.

A mon avis, tu dois avoir quelque chose de ce style.

((1.1 1.1 0.0) 1.2 1.3 0.0 6.6 7.7 0.0)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

hello zebulon patrick_35

 

la correction marche ( ca tu t'en doute ) looll

 

ma version ne marchait plus de toute facon apres remise en route d'autocad 2009

 

je peux donc poursuivre mon lisp

 

merciii

 

 

phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

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é