lecrabe Posté(e) le 24 septembre 2014 Posté(e) le 24 septembre 2014 Hello SVP je cherche une routine que je puisse adapter a mes besoins ! Malheureusement je n'ai pas trouve mon bonheur !? Avec la selection rapide, il est facile de trouver : Bloc, Ellipse, Spline, Hachure, Hachure de type SOLID, etc Mais a l'interieur d'un Bloc (Statique ou Dynamique), comment faire ?De plus parfois on a des blocs imbriques (Je deteste !) ... Donc voila mon CDC/CCTP : - Selection AutoCAD classique- Ne retenir que les Blocs (Statiques ou Dynamiques) pour le traitement qui suit ...- Traitement Bloc par Bloc ... - Rentrer dans la structure du Bloc (Statique ou Dynamique) et voir (simplement pour le selectionner) si il contient au moins UNE Ellipse ou UNE Spline ou UNE Hachure ou etc - Si Bloc imbrique, on PLONGE dedans ! - Donc un code Lisp/VLisp avec qq commentaires / exemples (suivant le type d'entite cherchee) a l'interieur ...Qq superbes lignes bien expliquees , et je commenterais suivant les besoins du moment !- Ajouter (Oui/Non) le Bloc au jeu de selection courant si il correspond aux criteres ... - Passer au Bloc suivant A la sortie, on dispose simplement d'une selection (ou RIEN) de N Blocs qui correspondent aux criteres de choix ... Ainsi par un DEPLACER P ou COPIER P ou Forcer la couleur, je pourrais aller examiner/analyser ces Blocs ulterieurement ... Voyez vous ce que je veux dire !? Merci d'avance pour votre aide ! Bye, lecrabe Autodesk Expert Elite Team
lecrabe Posté(e) le 26 septembre 2014 Auteur Posté(e) le 26 septembre 2014 Hello Un petit UP ! SVP si une bonne ame charitable pouvait m'aider !? Bonne Journee, Bye, lecrabe Autodesk Expert Elite Team
(gile) Posté(e) le 26 septembre 2014 Posté(e) le 26 septembre 2014 Salut, Un petit truc vite fait : ;; BLOCKFILTER ;; Sélectionne les blocs contenant au moins une entité de type LWPOLYLINE ;; possibilité de modifier le type d'entité recherchée dans le code (defun c:BlockFilter (/ hasent selSet i blockRef) ;; hasent (sous-routine) ;; Retourne T (true) si la référence de bloc contient une entité du type spécifié, nil (false) sinon. ;; ;; Arguments ;; blockRef : référence de bloc (ENAME) ;; dxfName ; nom DXF du type d'entité à rechercher (STRING) ;; La chaîne doit être identique à celles du droupe DXF 0 ("LWPOLYLINE", "SPLINE", "HATCH", ...) (defun hasent (blockRef entType / ent found dxfName) (setq ent (cdr (assoc -2 (tblsearch "BLOCK" (cdr (assoc 2 (entget blockRef))))) ) ) (while (and ent (not found)) (setq dxfName (cdr (assoc 0 (entget ent)))) (if (= dxfName entType) (setq found T) (if (= dxfName "INSERT") (setq found (hasent ent entType)) ) ) (setq ent (entnext ent)) ) found ) ;; fonction principale : traitement du jeu de sélection (if (setq selSet (ssget '((0 . "INSERT")))) (repeat (setq i (sslength selSet)) (setq blockRef (ssname selSet (setq i (1- i)))) ;; appel de la fonction 'hasent' pour filtrer le jeu de sélection (or (hasent blockRef "LWPOLYLINE") ; <- remplacer par le type d'entité recherché (ssdel blockRef selSet) ) ) ) (sssetfirst nil selSet) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 29 septembre 2014 Auteur Posté(e) le 29 septembre 2014 Bon Matin Gilles MERCI ta routine fonctionne parfaitement sur l'entite que j'ai testee : ELLIPSEet ce jusque avec des Ellipses imbriquees sur 2 niveaux de profondeur dans les blocs et sous-blocs ... Cela va me permettre de trouver facilement dans les dessins (A l'interieur des Blocs) les entites interdites : ELLIPSE, SPLINE, etc ... Bonne Semaine au Grand Maitre Lisp/VLisp/Dotnet, Bye, lecrabe Autodesk Expert Elite Team
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant