Aller au contenu

Probleme Filtre calque ........


cadpolo

Messages recommandés

Salut ...

Je veux créer filtre pour récupérer les lignes, Polylignes, etc...

qui se trouvent dans un calque " Calque "

:casstet:

Donc je fait ce petit code

[surligneur] (defun C:ESSAI

(setq calque (getstring "Entrez le nom du calque : "))

(setq ssel1 (ssget (list (cons 8 calque )))

)[/surligneur]

pour débuter et Erreur de la part d'autocad ...

Sur la premiere ligne et la deuxieme en recher chant les erreur avec Vlisp......

 

[surligneur] erreur: élément incorrect dans la liste d'arguments: (GETSTRING "Entrez le nom du calque : ")[/surligneur]

 

[surligneur] erreur: syntaxe DEFUN incorrecte: (C:ESSAI (SETQ SS2 (SSGET (LIST (CONS 8 CALQUE)))))[/surligneur]

 

Pouvez vous m'aider

Lien vers le commentaire
Partager sur d’autres sites

Salut ...

Je veux créer filtre pour récupérer les lignes, Polylignes, etc...

qui se trouvent dans un calque " Calque "

:casstet:

Donc je fait ce petit code

[surligneur] (defun C:ESSAI () <------------------------

(setq calque (getstring "Entrez le nom du calque : "))

(setq ssel1 (ssget (list (cons 8 calque )))

)[/surligneur]

pour débuter et Erreur de la part d'autocad ...

Sur la premiere ligne et la deuxieme en recher chant les erreur avec Vlisp......

 

[surligneur] erreur: élément incorrect dans la liste d'arguments: (GETSTRING "Entrez le nom du calque : ")[/surligneur]

 

[surligneur] erreur: syntaxe DEFUN incorrecte: (C:ESSAI (SETQ SS2 (SSGET (LIST (CONS 8 CALQUE)))))[/surligneur]

 

Pouvez vous m'aider

 

1:

Manque deux parenthèses pour englobler les paramatres de ta commande,

si il n'y en a aucun tu dois obligatoirement mettre les deux parenthèses.

 

2:

Place l'argument "X" apres le ssget, pour lancer l'entendue de la recherche dans toute le database de ton dessin.

 

(defun C:ESSAI ()

(setq calque (getstring "Entrez le nom du calque : "))

(setq ssel1 (ssget "X" (list (cons 8 calque))))

)

 

 

Petite remarque:

Evite de donner à tes variables des noms de commande.

Je n'ai pas la version françasie, mais si la commande 'Calque' existe , cela risque de poser des problemes.

 

 

[Edité le 8/9/2005 par CoolMan]

Lien vers le commentaire
Partager sur d’autres sites

Précisions qui peuvent avoir leurs importances.

 

(defun C:ESSAI ( / calque ssel1)

(setq calque (getstring T "Entrez le nom du calque : "))

(setq ssel1 (ssget "_X" (list (cons 8 calque))))

)

 

 

Préferer (getstring T "Entrez le nom du calque : "), ceci pour permettre un caractère d'espace dans le nom du calque (la validation se fera par entrée). Les espaces sont en effet acceptés dans les noms de calque.

 

Bien que pour ce cas precis cela n'ai aucune importance préférer ssget "_X" (pour les bonnes habitudes) ;)

(ssget "T" (trajet) fonctione que sur les versions Fr, (ssget "_F" (fence) sur toutes versions.

 

il est mieux après phase de debug de déclarer ses variables (/ calque ssel1), plus propre

;)

 

bien qu'ici l'usage de "calque" en variable ne pose pas de problème, (defun C:Calque ()) en aurait posé beaucoup plus. Coolman a raison fait attention au nom de tes variables.

ex: (setq car nil) et fait un (car '(1 2)) tu verras le problème... :P

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Merci les gars ......

 

Effectivement, j'ai mis calque mais ma var. c'est nom_du_calque ...

En faite je me demande si je ne part pas dans la mauvaise direction

avec ce code, car apres, voici ce que je mets

[surligneur] (setq x (entnext ssel1))[/surligneur]

:casstet:

Je voudrais récupérer les information de cette sélection ssel1 qui pourrait contenir

des entites lignes, LwPolilignes,solides du calque filtré nom_du_calque

et que je changerais de calque avec Entmake ....

Mais il semblerais que je mette trop d'arguments dans ma ligne de code .......

 

[surligneur] [/surligneur]

Ca veut bien dire goupe de selction dans laquelle on peut extraire des entitées ????????

 

 

Lien vers le commentaire
Partager sur d’autres sites

(entnext ssel1) est incorrect

(entnext) sert à obtenir l'entité suivante dans la base de données par rapport à un nom d'entité

 

Pour un un jeu de sélection il faut utiliser (ssname)

 

exemple commenté:

(defun C:ESSAI ( / nom_du_calque ssel1 ind x dxf_x)

(setq nom_du_calque (getstring T "\nEntrez le nom du calque : "))

(setq ssel1 (ssget "_X" (list (cons 8 nom_du_calque))))

;On vérifie l'existence du jeu de sélection

(cond

(ssel1

;On fixe l'indice à 0 pour parcourir le jeu de sélection

(setq ind 0)

;On répète l'action pour parcourir tout le jeu de sélection

(repeat (sslength ssel1)

;On récupère le nom de l'entité indicée dans le jeu de séléction

;On incémente l'indice

;On récupère le définition de l'entité indicée

;On substitue le nouveau calque (ici "0") à l'ancien

;On met à jour l'entité dans la base de donnée

(setq

x (ssname ssel1 ind)

ind (1+ ind)

dxf_x (entget x)

dxf_x (subst '(8 . "0") (assoc 8 dxf_x) dxf_x)

)

(entmod dxf_x)

)

)

(T (princ (strcat "\nAucun objet sur le calque " nom_du_calque)))

)

(princ)

)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

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é