Aller au contenu

J\'ai encore besoin d\'aide


Messages recommandés

Posté(e)

Bonsoir,

j'ai chercher , mais la je bloc et je comprend pas pourquoi ca ne marche pas :

 


(defun c:net ()
	(setq plan1 "ST_N_Poteaux BA Hach")
 	(setq plan2 "ST_N_Indices")
	(setq selpoch (ssget "X" '((-4 . ""))))
(command "ordretrace" selpoch "AR"))


 

Si vous pouvez m'aider ça doit surement etre de la syntaxe !!! je pense

 

Bonaller bonne soirée à demain

Posté(e)

le quote (') fait que AutoCAD considère la liste exactement comme tu l'as écrite, il ne l'évalue pas, il ne remplace donc pas tes variables par leur valeur.

 

il faut utiliser la fonction list pour qu'il évalue l'entièreté de la liste et mettre les quotes sur chaque membres de la liste qu'il ne faut pas évaluer; et concernant les membres à évaluer tu dois les construire avec la fonction cons, ce qui donne:

 

(setq selpoch (ssget "X" (list '(-4 . ""))))

 

 

 

[Edité le 13/1/2010 par Carboleum]

Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog

Posté(e)

Salut,

 

Quand on spécifie une liste avec une apostrophe : '(ele1 ele2 ele3), l'apostrophe est un raccourci pour la fonction LISP quote qui sert à ne pas évaluer l'expression.

 

Donc, quand tu écrit : '((-4 . "")) aucune des paires pointées n'est évaluée, ni leur contenu, c'est à dire que plan1 et plan2 ne sont pas évalués et la liste ssget n'est pas valide.

 

Il faudrait écrire : (list (-4 . "")) pour que les variables soient évaluées.

 

Mais tu peux faire plus simple et plus efficace, d'abord en évitant de déclarer des variables (déclaration + évaluation) ensuite en utilisant le fait que dans une liste ssget, si la valeur de la paire pointée est de type chaîne, on peut en spécifier plusieurs séparés par des virgules.

Essaye :

(defun c: net (/ selpoch)
 (if (setq selpoch (ssget "X" '((8 . "ST_N_Poteaux BA Hach,ST_N_Indices"))))
   (command "ordretrace" selpoch "" "AR")
 )
 (princ)
)

 

Petites explications :

 

- la variable selpoch est déclarée ceci a pour effet de limiter la portée de la variable à la fonction c:net et libérer la mémoire à la fin de son exécution. C'est d'autant plus important qu'il s'agit d'un jeu de sélection et que le nombre de jeux de sélection dans un dessin est limité à 128.

 

- l'utilisation d'une expression (if ...) permet de ne lancer la commande que si le jeu de sélection existe réellement (qu'il y a bien des entités sur les calques spécifiés) et évite une erreur si ce n'était pas le cas.

 

- (princ) en fin de routine évite d'avoir le retour de la dernière expression (ici nil) qui s'affiche en ligne de commande.

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

Posté(e)
Bonsoir,

j'ai chercher , mais la je bloc et je comprend pas pourquoi ca ne marche pas :

 


(defun c:net ()
	(setq plan1 "ST_N_Poteaux BA Hach")
 	(setq plan2 "ST_N_Indices")
	(setq selpoch (ssget "X" '((-4 . ""))))
(command "ordretrace" selpoch "AR"))


 

Si vous pouvez m'aider ça doit surement etre de la syntaxe !!! je pense

 

Bonaller bonne soirée à demain

 

 

Bonjour

Cette solution ne fonctionne pas il y a une erreur !!!

Posté(e)
le quote (') fait que AutoCAD considère la liste exactement comme tu l'as écrite, il ne l'évalue pas, il ne remplace donc pas tes variables par leur valeur.

 

il faut utiliser la fonction list pour qu'il évalue l'entièreté de la liste et mettre les quotes sur chaque membres de la liste qu'il ne faut pas évaluer; et concernant les membres à évaluer tu dois les construire avec la fonction cons, ce qui donne:

 

(setq selpoch (ssget "X" (list '(-4 . ""))))

 

 

 

[Edité le 13/1/2010 par Carboleum]

 

Celle ci me fait un truc bizard

car il faut que j'appuis 2fois sur entrée pour finir l'action mais il marque aussi une erreur

de ce type !!!

 


Commande: net ordretrace
Choix des objets:   6 trouvé(s)
Choix des objets: AR
*Sélection non valable*
Attend un point ou 
Fenêtre/Dernier/Capture/BOîte/TOUT/Trajet/SPolygone/CPolygone/Groupe/Ajouter/Sup
primer/Multiple/Précédent/annUler/AUto/uniQue
; erreur: Fonction annulée
Choix des objets:
Entrez une option de disposition d'objets [Dessus/dEssous/AVant/ARrière] 
:
Commande:

Posté(e)

Salut,

 

Dans l'expression (command ...) il faut valider le jeu de sélection avec une chaîne vide "" comme quand tu fais Entrée à l'invite "Choix des objets: "

 

(command "ordretrace" selpoch [surligneur]""[/surligneur] "AR")

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

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

Bonjour,

je souhaiterai améliorer ce lisp :

 

(defun c:net2 (/ selpoch plan1 plan2 col3)

	(setq plan1 "ST_N_Poteaux BA Hach")

 	(setq plan2 "ST_N_Indices")

(setq col3 (ssget '([surligneur]OBJETS DE COULEUR 11,13,15[/surligneur])))

(setq selpoch (ssget "X" (list '(-4 . ""))))

(command "draworder" selpoch "" "AR" ))

 

Voila je ne trouve pas le code surligner qui me sélectionnerai tous les éléments de couleur 11-13-15

 

MERCI d'avance

Posté(e)

J'ai un bug .....

voila mon code, j'ai du faire un truc qui ne va pas !!!

j'ai un message d'erreur : - ; erreur: valeur de liste SSGET incorrecte

Et en plus il me demande de sélectionner des objets alors que je souhaite que ça opère sur tout le dessin .

 

(defun c:net2 (/ selpoch plan1 plan2 col3)

	(setq plan1 "ST_N_Poteaux BA Hach")

 	(setq plan2 "ST_N_Indices")
 
(setq col3 (ssget '((-4 . ""))))

(setq selpoch (ssget "X" (list '(-4 . ""))))

(command "draworder" selpoch "" "AR" ))

 

Posté(e)

bonjour

 

Et donc je ne peut pas mélanger col3 avec les autres variables qui sont des calques ? ou c'est parce-que je m'y prend mal ?

 

merci !

 

Posté(e)

Le code groupe 8 est celui des calques, le code de groupe 62 celui des couleurs, etc.

Regarde l'aide aux développeurs > Référence DXF.

 

Si tu veux faire un seul filtre pour les calques et les couleurs (autrement dit sélectionner les objets sur les claques "ST_N_Poteaux BA Hach" et "ST_N_Indices" ou de couleur 11, 13, 15) tu peux tout grouper dans le même filtre :

(ssget "_X" '((-4 . "")))

Regarde dans l'aide aux développeurs la fonction LISP ssget et le lien tout en bas : Selection Set Filter Lists + les liens en bas de cette dernière page.

 

EDIT : Patrick_35 a été plus rapide mais les deux filtres ne font pas la même chose.

Patrick_35 : calques "ST_N_Poteaux BA Hach" ou "ST_N_Indices" ET couleur 11 ou 13 ou 15.

(gile) : calques "ST_N_Poteaux BA Hach" ou "ST_N_Indices" OU couleur 11 ou 13 ou 15.

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

Posté(e)

Tiens, j'ai devancé (gile)

 

Juste une remarque pour le filtre que j'ai indiqué et celui de (gile)

 

Le mien fait une sélection sur les objets de couleurs 11,13 et 15 qui se situent sur les calques déterminés

Celui de (gile) sélectionne tous les objets sur les calques déterminés ainsi que tous les objets de couleurs 11,13 et 15

 

Edit: (gile) a été plus rapide, mais les deux réponses se valent

 

@+

 

[Edité le 18/6/2010 par Patrick_35]

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

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é