Aller au contenu

Messages recommandés

Posté(e)

bien pratique le petit entonoir en haut à gauche des propriétées...

 

mouai...

 

je me suis toujours étonné quand on a isolé des calque qu'une selection rapide aille cherché des entités sur les calques éteins ...

 

d'une manière générale, les critères de sélection rapide sont dramatiquement restreins .

 

quand on voie le nombre d'outil complexe d'autocad (lisp diesel vba...) je me demande pourquoi cette base de donnée qui regroupe l'ensemble des éléments d'un dessin ne possède pas un language de requète de selection à la hauteur..

 

un peu comme en SQL des requêtes avec des ET des OU par exemples

je veux selectionner DANS les calques non éteins, les lignes OU les polylignes de couleur rouge OU de couleur DUcalque SI DUcalque est rouge

 

elle est volontairement un peu tordu... mais qui n'a jamais voulu chopé tout ce qu'il voit rouge?

en SQL pas de pb... peut être un lispeur saurai faire une telle requête, mais je ne sais pas si ça tiendrai en une ligne...

 

bon... j'en demande un peu... Autodesk n'est pas le père noël... et puis noël c'est passé...

Posté(e)

Salut,

 

Voici certaines explications de Gile posté sur d'autres sujets qui m'ont aidé depuis mes débuts en lisp à faire mes jeu de sélection ssget si cela peut t'aider .

Ceci fonctionne avec les codes dxf type 2 pour le nom d'un bloc, 8 pour le nom d'un calque, ....

 

ssget peut avoir plusieurs arguments (optionnels) :

 

- des modes de sélections "_X" pour tout le document, "_A" pour tous les objets sur les calques non gelés dans tout le document, "_L" pour dernier objet créé, "_P" pour jeu de sélection précédent etc...

 

- des points (1 seul sans mode de sélection ou 2 pour les modes "_C" capture et "_W" fenêtre) ou des listes de points (pour les modes "_CP" capture polygonale, "_WP" fenêtre polygonale, "_F" trajet)

 

- un filtre sous forme de liste basé sur les codes DXF (voir les références DXF dans l'aide aux développeur). Ce filtre permet de reproduire toutes les possibilité offerte par la commande FILTER.

 

Les valeurs des codes de groupes DXF qui sont des chaînes (type d'entité, calque, nom de bloc...) peuvent être cumulés en les séparant par des virgules et acceptent les caractères génériques ex :

(ssget '((0 . "LINE,CIRCLE") (8 . "A1*") pour filtrer les cercles et lignes sur tous les calques dont le nom commence par "A1".

 

On peut utiliser des test relationnels (= < > etc...) pour les valeurs numériques ex :

(ssget '((0 . "CIRCLE") (-4 . ">") (40 . 50))) pour filtrer tous les cercles dont le rayon est supérieur à 50

 

On peut aussi utiliser des opérateurs logiques (or, and, xor, not) ex :

(ssget '((-4 . "") (-4 . "OR>")))

pour filtrer les cercles et les polylignes fermées.

 

Si une des valeurs est une variable, la liste devra être évalué, il faut alors utiliser les fonctions list et cons ex :

(ssget (list '(0 . "INSERT") (cons 2 nom_du_bloc))) pour filtrer les blocs dont le nom est stocké dans la variable nom_du_bloc

 

 

(setq s2 (ssget "_C" '(397 3) '(397 3) '((0 . "INSERT") (2 . "SGAD"))))

 

John.

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é