Aller au contenu

Bred

Membres
  • Compteur de contenus

    2 764
  • Inscription

  • Dernière visite

Tout ce qui a été posté par Bred

  1. Salut, J'ai une mauvaide surprise sur la 2007 : Le calcul du rendu ne prend pas en comptes les polylignes larges pour les ombres... (sa fonctionnait sur 2006...) et j'ai pas mal de bloc (3D) fait avec des polylignes larges en guise de surface. Je voudrais savoir si quelqu'un n'aurait pas un petit lisp dans ses tiroires permettant de transformer des polyligne en région... ceci permettant d'automatiser le tâche... merci d'avance.
  2. Bred

    précisions des unités

    Salut, Avant tout, je pense que ton message peut poser confusion : Si tu dessines une ligne de 0.5, elle fera 0.5 quelque soit le format choisit. (0.5 ou 0.50000000). c'est donc que ta ligne à été dessiné de cette longueur là ! ... donc es-tu sûr que ta ligne de 0,5000235 ne doit pas effectivement faire cette logueur (ou la fait car c'est le reste qui est mal dessiné ?)
  3. Bred

    Calcul de distance .....

    Salut, Il y cette manière (il doit y avoir plus simple) : (setq liste '(1.414 1.414 2.285)) (setq x 0 ad 0) (repeat (length liste) (setq ad (+ [b] (nth x liste)[/b] ad)) (setq x (+ x 1)) ) (princ ad) (princ) [Edité le 31/10/2006 par Bred]
  4. Salut, Avant que je commence à chercher et à me "prendre la tête", est-ce que quelqu'un à déjà regardé le moyen de créer une palette Autocad style "TABLEAUDEBORD" de la 2007 ? merci d'avance.
  5. Bred

    Filtre de Groupe de Calque

    J'ai un peu simplifié/nettoyé le code. Par contre un problème persiste : l'activation d'un Groupe ne peut pas se faire si le gestionnaire de Calque n'est pas lancé au moins une fois.... ... Ce qui fait que je n'arrive pas à activer un groupe au moment du chargement d'un gabarit (ayant par exemple le groupe "Mon Groupe" Existant)... (GRC_active "Mon Groupe") ... ne fonctionne pas en chargement direct... (en fait, ça fonctionne, mais il faut lancer une fois le gestionnaire de calque, puis annuler, et là le groupe s'active....) :casstet: :casstet: :casstet: si queqlu'un connait une manip. pour "lancer" le gestionnaire (en tache de fond ?) pour que le groupe s'active je suis preneur.... merci
  6. + 1 an 1/2 après.... là !
  7. Pour un besoin personnel, j'ai écris des routines permettant de faire des actions sur les Groupes de Calques. Ces routines ne sont pas parfaites : elles ne fonctionnent pas si il n'existe pas dans le plan au moins un Filtre de Groupe (car je le récupère et l'utilise comme base pour toutes les routines...) (Je les retoucherait peut-être un jour, mais j'en ai tellement bavé pour les mettre au point que je prefert passer sur autre chose pour m'aérer la tête !!!) :P Les Routines : [b];;; Routine Récupération Entité "ACLYDICTIONARY"[/b] (defun GRC_Recup () (setq TAB_dxf330 (entget (cdr (assoc 330 (entget (tblobjname "layer" "0")))))) (if (cdr (assoc 360 TAB_dxf330)) (progn (setq DIC_dxf360 (entget (cdr (assoc 360 TAB_dxf330))) Ent_dxf360 (entget (cdadr (member '(3 . "ACLYDICTIONARY") DIC_dxf360))) Ent_dxf360_TRAV Ent_dxf360) ) (progn (Alert "\nPas de Groupe de Calques Existant dans de Plan. \nCommande impossible. \nDésolé.") (quit) ) ) (princ) ) ;;; [b]Routine Liste ( dxf 3. + entité ) Groupe de Calque - list_ent_group -[/b] (defun GRC_Lst () (GRC_Recup) (setq list_ent_group nil) (while (assoc 350 Ent_dxf360_TRAV) (setq list_ent_group (append (list (list (cdr (assoc 3 Ent_dxf360_TRAV)) (cdr (assoc 350 Ent_dxf360_TRAV)))) list_ent_group) Ent_dxf360_TRAV (vl-remove (assoc 350 Ent_dxf360_TRAV) Ent_dxf360_TRAV) Ent_dxf360_TRAV (vl-remove (assoc 3 Ent_dxf360_TRAV) Ent_dxf360_TRAV)) ) ) ;;;[b] Routine Création Liste de Nom Groupe de Calque - Lst_GR -[/b] (defun GRC_Lst_Ex () (GRC_Lst) (setq x 0) (repeat (length list_ent_group) (setq Lst_GR (append (list (cdr (assoc 300 (entget (cadr (nth x list_ent_group)))))) Lst_GR) x (+ x 1)) ) ) ;;; [b]Routine Activation Groupe de Calque[/b] (defun GRC_active (Groupe_a_activer / Ent_GROUPE) (GRC_Lst) (While (null Ent_GROUPE) (if (= Groupe_a_activer (cdr (assoc 300 (entget (cadr (nth 0 list_ent_group)))))) (setq Ent_GROUPE (nth 0 list_ent_group)) (setq list_ent_group (vl-remove (nth 0 list_ent_group) list_ent_group)) ) ) (setq list_ent_Groupe (entget (cadr Ent_GROUPE))) (InsList_Ent_Apres list_ent_Groupe (cons 290 1) '(280 . 1)) (setq Ent_GROUPE_SAUV Ent_GROUPE Ent_GROUPE_ACTIF (entmakex list_rebuild) Ent_GROUPE_ACTIF (cdr (assoc -1 (entmod (subst (cons 350 Ent_GROUPE_ACTIF) (cadr (member (cons 3 (car Ent_GROUPE_SAUV)) Ent_dxf360))Ent_dxf360)))) Ent_GROUPE_ACTIF (cdr (assoc -1 (entmod (append (reverse (cdr (reverse DIC_dxf360))) (list (cons 360 Ent_GROUPE_ACTIF))))))) (if (cdr (assoc 360 TAB_dxf330)) (entmod (subst (cons 360 Ent_GROUPE_ACTIF) (assoc 360 TAB_dxf330) TAB_dxf330)) (entmod (append TAB_dxf330 (list (cons 360 Ent_GROUPE_ACTIF)))) ) (princ) ) ;;;[b] Routine Création et Activation Groupe de Calque (VIDE !)[/b] (defun GRC_creer_act (Groupe_a_creer) (GRC_Recup) (setq Ent (entmakex (list '(0 . "XRECORD") '(102 . "{ACAD_REACTORS") (cons 330 (cdr (assoc -1 Ent_dxf360))) '(102 . "}") (cons 330 (cdr (assoc -1 Ent_dxf360))) '(100 . "AcDbXrecord") '(280 . 1) '(290 . 1) '(1 . "AcLyLayerGroup") '(90 . 1) (cons 300 Groupe_a_creer)) ) ) (setq Ent (cdr (assoc -1 (entmod (append Ent_dxf360 (list (cons 3 "*") (cons 350 Ent)))))) Ent (cdr (assoc -1 (entmod (append (reverse (cdr (reverse DIC_dxf360))) (list (cons 360 Ent))))))) (if (cdr (assoc 360 TAB_dxf330)) (entmod (subst (cons 360 Ent) (assoc 360 TAB_dxf330) TAB_dxf330)) (entmod (append TAB_dxf330 (list (cons 360 Ent)))) ) ) ;;;[b]Routine insertion Entité dans liste[/b] (defun InsList_Ent_Apres (list_ent Ent Apres) (setq fin_list (cdr (member Apres list_ent)) debut_list (reverse (member Apres (reverse list_ent))) fin_list (append (list Ent) fin_list) list_rebuild (append debut_list fin_list)) ) Les Commandes : ;;; [b]Commande pour Créer et Activer un Groupe (VIDE!).[/b] (defun c: [surligneur]Creer-groupe[/surligneur] (/ nom) (setq Nom (getstring T "\n Donner un Nom de Groupe de Calque à Créer :")) (GRC_creer_act Nom) (princ) ) ;;; [b]Commande pour Activer un Groupe Existant.[/b] (defun c:[surligneur]Activer-Groupe[/surligneur] (/ list_ent_group Groupe_a_activer Lst_GR) (GRC_Lst_Ex) (if list_ent_group (progn (while (null Groupe_a_activer) (setq Groupe_a_activer (getstring T "\n Choisir la Référence du Groupe à Activer (?):")) (if (= Groupe_a_activer "?") (progn (command "ECRANTXT") (Princ "\n -------------------------------------") (Princ "\n Nom de Groupes de Calques Existants :") (foreach n Lst_GR (print n)) (princ) (setq Groupe_a_activer (getstring T "\n Choisir la Référence du Groupe à Activer :")) ) ) (if (member Groupe_a_activer Lst_GR) (progn (command "ECRANGRA") (GRC_active Groupe_a_activer) ) (progn (princ (strcat "\n " Groupe_a_activer " n'existe pas dans ce plan ! (taper ? pour voir la liste)")) (setq Groupe_a_activer nil) ) ) ) (princ (strcat "\n Le Goupe de Calque <" Groupe_a_activer "> à été activé !")) ) (Princ "\n Aucun Groupe de Calques dans ce plan !") ) (princ) ) [b];;; Commande pour Lister les noms des calques par groupe - list_calq_gr_final ;;; INUTILE - POUR MEMO -[/b] (defun c:[surligneur]GRC_Grc+Calq[/surligneur] (/ x list_ent nom_g list_calq_gr ent_ap_300 dxf330 ent_dxf330 calq_gr) (setq list_ent_group nil) (GRC_Recup) (while (assoc 350 Ent_dxf360) (setq list_ent_group (append (list (cdr (assoc 350 Ent_dxf360))) list_ent_group) Ent_dxf360 (vl-remove (assoc 350 Ent_dxf360) Ent_dxf360)) ) (setq x 0) (repeat (length list_ent_group) (setq list_ent (entget (nth x list_ent_group)) nom_g (cdr (assoc 300 (entget (nth x list_ent_group)))) list_calq_gr (append (list (strcat "<" nom_g ">")) list_calq_gr) ent_ap_300 (member (assoc 300 list_ent) list_ent)) (while (assoc 330 ent_ap_300) (setq dxf330 (assoc 330 ent_ap_300) ent_dxf330 (entget (cdr dxf330)) calq_gr (cdr (assoc 2 ent_dxf330)) list_calq_gr (append (list calq_gr) list_calq_gr) ent_ap_300 (vl-remove dxf330 ent_ap_300)) ) (setq list_calq_gr (reverse list_calq_gr) List_calq_gr_final (append (list list_calq_gr) list_calq_gr_final) list_calq_gr nil x (+ x 1)) ) (princ List_calq_gr_final) ) (A SUIVRE...) [ [Edité le 30/10/2006 par Bred]
  8. ... et un de plus, un !!!! merci ! [Edité le 21/12/2006 par Bred]
  9. Salut, Un truc que je ne pense pas possible, mais comme on m'a ici souvent jeté au rencart mes idées préconsues, je pose ma question : Est t'il possible d'annuler pour un temps la fonction de validation de la barre d'espace, afin de pouvoir écrire une chaine complète de caratère après "commande" (sans parenthèses....). La raison : J'ai besoin d'écrire le nom d'un calque à un appel sur la ligne de commande, mais ce calque à un espace.... La seul manière que j'ai trouvé est de référencer les calques (ex : 1 = Calque 1 , 2 = Calque 2 ....) mais ça n'est pas trés pratique si on a beaucoup de calques .... merci d'avance.
  10. Bred

    Calque : Filtre de groupe

    OK... réussis... ... Manque plus que le mettre au propre, et je le mettrais dans le forum Routine : (defun c:[b]Activer-Groupe[/b] () (setq Groupe_a_activer "[i]Nom_du_Groupe[/i]") (activ_group Groupe_a_activer) ) ;;; Routine Récupération Entité "ACLYDICTIONARY" (defun GRC_Recup () (setq TAB_dxf330 (entget (cdr (assoc 330 (entget (tblobjname "layer" "0"))))) DIC_dxf360 (entget (cdr (assoc 360 TAB_dxf330))) Ent_dxf360 (entget (cdadr (member '(3 . "ACLYDICTIONARY") DIC_dxf360)))) ) ;;; Routine Liste ( dxf 3. + entité ) Groupe de Calque (defun GRC_Lst (Ent_dxf360_TRAV) (while (assoc 350 Ent_dxf360_TRAV) (setq list_ent_group (append (list (list (cdr (assoc 3 Ent_dxf360_TRAV)) (cdr (assoc 350 Ent_dxf360_TRAV)))) list_ent_group) Ent_dxf360_TRAV (vl-remove (assoc 350 Ent_dxf360_TRAV) Ent_dxf360_TRAV) Ent_dxf360_TRAV (vl-remove (assoc 3 Ent_dxf360_TRAV) Ent_dxf360_TRAV)) ) ) ;;; Routine Création Liste de Groupe Possible : (defun GRC_Lst_Ex () (GRC_Recup) (Setq Ent_dxf360_TRAV Ent_dxf360) (GRC_Lst Ent_dxf360_TRAV) (setq x 0) (repeat (length list_ent_group) (setq Lst_GR (append (list (cdr (assoc 300 (entget (cadr (nth x list_ent_group)))))) Lst_GR) x (+ x 1)) ) ) [b];;; Routine Activation Groupe de Calque[/b] (defun activ_group (Groupe_a_activer / list_ent_group fin_list 290.1fin_list Ent_GROUPE_ACTIF) (GRC_Recup) (Setq Ent_dxf360_TRAV Ent_dxf360) (GRC_Lst Ent_dxf360_TRAV) (if list_ent_group (progn ; Ressort entité correspondant au groupe à activer (if (> (length list_ent_group) 1) (progn (setq x 0) (repeat (length list_ent_group) (if (= Groupe_a_activer (cdr (assoc 300 (entget (cadr (nth x list_ent_group)))))) (setq Ent_GROUPE (nth x list_ent_group)) (setq list_ent_group (vl-remove (nth x list_ent_group) list_ent_group)) ) ) ) (setq Ent_GROUPE list_ent_group) ) (setq Ent_GROUPE_SAUV Ent_GROUPE list_ent_Groupe (entget (cadr Ent_GROUPE)) fin_list (cdr (member '(280 . 1) list_ent_Groupe)) debut_list (reverse (member '(280 . 1) (reverse list_ent_Groupe))) 290.1fin_list (append (list (cons 290 1)) fin_list) Ent_GROUPE_ACTIF (entmakex (append debut_list 290.1fin_list)) Ent_GROUPE_ACTIF (cdr (assoc -1 (entmod (subst (cons 350 Ent_GROUPE_ACTIF) (cadr (member (cons 3 (car Ent_GROUPE_SAUV)) Ent_dxf360))Ent_dxf360)))) Ent_GROUPE_ACTIF (cdr (assoc -1 (entmod (append (reverse (cdr (reverse DIC_dxf360))) (list (cons 360 Ent_GROUPE_ACTIF))))))) (if (cdr (assoc 360 TAB_dxf330)) (entmod (subst (cons 360 Ent_GROUPE_ACTIF) (assoc 360 TAB_dxf330) TAB_dxf330)) (entmod (append TAB_dxf330 (list (cons 360 Ent_GROUPE_ACTIF)))) ) (princ (strcat "\n Le Goupe de Calque " Groupe_a_activer " à été activé !")) ) (princ "\n Pas de Groupe de Calques dans ce Plan !") ) (princ) )
  11. Bred

    Coordonnées en double

    mmm... j'ai corrigé une erreur dans le prog ci-dessus, mais je commence à entrevoir ce que tu veux et je pense que je n'y répond pas... je cherche... [Edité le 21/12/2006 par Bred]
  12. Bred

    Coordonnées en double

    Je ne sais pas si j'ai bien compris... un truc vite fait : (defun c:tab_coord_poly ( / TAB_POLY) (setq polyS (ssget "_X" '((0 . "LWPOLYLINE")))) (setq COMPT 1) (setq x 0) (repeat (sslength polyS) (setq ent_poly (entget (ssname polyS x))) (while (assoc 10 ent_poly) (setq dxf_10 (assoc 10 ent_poly)) (setq list_coord_somm_poly (append (list dxf_10) list_coord_somm_poly)) (setq ent_poly (vl-remove (assoc 10 ent_poly) ent_poly)) ) (setq list_coord_somm_poly (append (list (strcat "Polyligne N°" (rtos COMPT) " : ")) list_coord_somm_poly)) (setq TAB_POLY (append (list list_coord_somm_poly) TAB_POLY) list_coord_somm_poly nil) (setq COMPT (+ COMPT 1) x (+ x 1)) ) (setq TAB_POLY (reverse TAB_POLY)) (princ TAB_POLY) (princ) ) [Edité le 27/10/2006 par Bred]
  13. Ah oui... je n'ais pas tout lu... désolé !...
  14. ? ... là je pense que tu te trompe .... Le fait de faire un (command "TOTO" .....) revient à dire "écrire "TOTO" sur la ligne de commande... donc la commande en français fonctionne !
  15. Bred

    Calque : Filtre de groupe

    Bon, là, j'appel à l'aide !!!! J'ai éssayé de reconstruire les entités afin d'activé un groupe, mais ça ne fonctionne pas !!!! Si vous avez une solution.... moi je m'épuise !!! (en fait, je pense que l'on peut y arriver, car le lisp cité ci-dessus permet de créer un groupe, et l'active en même temp !!!!...) J'en suis là : (setq TAB_dxf330 (entget (cdr (assoc 330 (entget (tblobjname "layer" "0")))))) (setq DIC_dxf360 (entget (cdr (assoc 360 TAB_dxf330)))) (setq Ent_dxf360 (entget (cdadr (member '(3 . "ACLYDICTIONARY") DIC_dxf360)))) (setq list_ent_group nil) (setq Ent_dxf360_TRAV Ent_dxf360) (while (assoc 350 Ent_dxf360_TRAV) (setq list_ent_group (append (list (cdr (assoc 350 Ent_dxf360_TRAV))) list_ent_group) Ent_dxf360_TRAV (vl-remove (assoc 350 Ent_dxf360_TRAV) Ent_dxf360_TRAV)) ) (setq Groupe_a_activer "groupe1") (setq x 0) (repeat (length list_ent_group) (if (/= Groupe_a_activer (cdr (assoc 300 (entget (nth x list_ent_group))))) (setq Ent_GROUPE (vl-remove (nth x list_ent_group) list_ent_group)) (setq x (+ x 1)) ) ) (setq fin_list nil 290.1fin_list nil Ent_GROUPE_ACTIF nil) (setq list_ent_Groupe (entget (car Ent_GROUPE))) (setq fin_list (cdr (member '(280 . 1) list_ent_Groupe))) (setq debut_list (reverse (member '(280 . 1) (reverse list_ent_Groupe)))) (setq 290.1fin_list (append (list (cons 290 1)) fin_list)) (setq Ent_GROUPE_ACTIF (append debut_list 290.1fin_list)) (setq Ent_dxf350 (cons 350 (cdr (assoc -1 (entmod Ent_GROUPE_ACTIF))))) (setq Ent_dxf360 (cons 360 (cdr (assoc -1 (entmod (subst Ent_dxf350 Ent_dxf350 Ent_dxf360)))))) (setq DIC_dxf360 (entmod (subst Ent_dxf360 (cadr (member '(3 . "ACLYDICTIONARY") DIC_dxf360)) DIC_dxf360))) ... Au secours !!!! merci .... :(
  16. Exactement !!!... et on continue !!!!
  17. Salut, tu peux faire tes premiers pas grâce à ce cour et celui-ci (récupérer sur CADXP là !).
  18. Bred

    Hotfix pour les produits 2007

    ... Et pour ce qui programme en VB.net, ce DLL permet de récupérer les outils d'applications !...
  19. Bred

    Calque : Filtre de groupe

    Pour info je viens de trouver ça !!! ... C'est bien ....
  20. Bred

    Calque : Filtre de groupe

    Alors, plus propre : Routines permettants d'Extraire : - Les noms des groupes de Calques - Les noms des groupes de Calques avec leur Calque - Le goupe de Calque Actif. COMMANDES : ;;; [b]Afficher Groupes[/b] (defun c:[surligneur]Groupe_Calques[/surligneur] (/ list_nom_g) (Liste_Nom_Groupe_Calque) (if list_nom_g (princ list_nom_g) (princ "Pas de Groupe de Calques dans ce plan") ) (princ) ) ;;; [b]Afficher Groupes et Calques[/b] (defun c:[surligneur]Groupes_et_calques[/surligneur] (/ List_calq_gr_final) (Liste_Calques_par_Groupe) (if List_calq_gr_final (princ List_calq_gr_final) (princ "Pas de Groupe de Calques dans ce plan") ) (princ) ) ;;; [b]Afficher Groupe Actif[/b] (defun c:[surligneur]Groupe_Calque_Actif[/surligneur] (/ nom_gr_act) (Recup_Groupe_Calque_Actif) (if nom_gr_act (princ (strcat "\n Groupe Calques Actif: " nom_gr_act)) (princ "\n Pas de Groupe de Calques Actif") ) (princ) ) Les Routines : ;;; Récupérer les Groupes de Calque Existant - list_ent_group (defun Recup_Groupe_Calque (/ obj ent list_ent) (setq list_ent_group nil obj (vla-item (vla-getExtensionDictionary (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))))"ACLYDICTIONARY") ent (vlax-vla-object->ename obj) list_ent (entget ent)) (while (assoc 350 list_ent) (setq list_ent_group (append (list (cdr (assoc 350 list_ent))) list_ent_group) list_ent (vl-remove (assoc 350 list_ent) list_ent)) ) ) ;;; Récupérer le groupe actif - (290 . 1) nom_gr_act (defun Recup_Groupe_Calque_Actif (/ x gr_act) (Recup_Groupe_Calque) (setq x 0) (repeat (length list_ent_group) (setq gr_act (cdr (assoc 290 (entget (nth x list_ent_group))))) (if gr_act (setq nom_gr_act (cdr (assoc 300 (entget (nth x list_ent_group)))))) (setq x (+ 1 x)) ) ) ; lister les Noms de groupes - list_nom_g (defun Liste_Nom_Groupe_Calque (/ x nom_g) (Recup_Groupe_Calque) (setq x 0) (repeat (length list_ent_group) (setq nom_g (cdr (assoc 300 (entget (nth x list_ent_group)))) list_nom_g (append (list nom_g) list_nom_g) x (+ x 1)) ) ) ; Lister les noms des calques par groupe - list_calq_gr_final (defun Liste_Calques_par_Groupe (/ x list_ent nom_g list_calq_gr ent_ap_300 dxf330 ent_dxf330 calq_gr) (Recup_Groupe_Calque) (setq x 0) (repeat (length list_ent_group) (setq list_ent (entget (nth x list_ent_group)) nom_g (cdr (assoc 300 (entget (nth x list_ent_group)))) list_calq_gr (append (list (strcat "Groupe: " nom_g "/")) list_calq_gr) ent_ap_300 (member (assoc 300 list_ent) list_ent)) (while (assoc 330 ent_ap_300) (setq dxf330 (assoc 330 ent_ap_300) ent_dxf330 (entget (cdr dxf330)) calq_gr (cdr (assoc 2 ent_dxf330)) list_calq_gr (append (list calq_gr) list_calq_gr) ent_ap_300 (vl-remove dxf330 ent_ap_300)) ) (setq list_calq_gr (reverse list_calq_gr) List_calq_gr_final (append (list list_calq_gr) list_calq_gr_final) list_calq_gr nil x (+ x 1)) ) ) Par contre je suis coincé.... je voulais créer des commandes permettant d'activer ou desactiver un groupe, et ça ne fonctionne pas..... Ma méthode : en passant par (entmake...) Ce qui ne fonctionne pas : ;;; [b]Activer un groupe de Calque[/b] (defun c:Activ_GR_Calque (/ List_GR Nom) (setq Nom (getstring "\n Donner un Nom de Groupe de Calque à Activer :")) (Activer_Groupe_Calque Nom) (princ) ) ;;; [b]Désactiver un groupe de Calque[/b] (defun c: Desactiv_GR_Calque () (Desactiver_Groupe_Calque) (princ) ) ;;; [b]Routine Désactiver le groupe de Calque actif[/b] (defun Desactiver_Groupe_Calque () (Recup_Groupe_Calque) (setq x 0) (repeat (length list_ent_group) (setq gr_act (cdr (assoc 290 (entget (nth x list_ent_group))))) (if gr_act (entmake (vl-remove (assoc 290 (entget (nth x list_ent_group))) (entget (nth x list_ent_group))))) (setq x (+ 1 x)) ) ) ;;; [b]Routine Activer un groupe de Calque[/b] (defun Activer_Groupe_Calque (Nom_Groupe) (Recup_Groupe_Calque) (setq x 0) (repeat (length list_ent_group) (if (equal (cdr (assoc 300 (entget (nth x list_ent_group)))) Nom_Groupe) (entmake (append (entget (nth x list_ent_group)) (list (cons 290 1)))) (setq x (+ x 1)) ) ) ) .... si vous avez des conseils, merci d'avance !!!.... [Edité le 20/10/2006 par Bred]
  21. Salut (setq Epais (atof "-.2"))
  22. Bred

    Calque : Filtre de groupe

    OK, alors, 1ère étape (je n'en suis que là), grâce a la proposition de (gile) j'ai réussis à récupérer : - le nom des groupe - le groupe actif - les calques par groupe (ne pas faire à la manière dont c'est écris, c'est un code de travail)... (setq obj (vla-item (vla-getExtensionDictionary (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))))"ACLYDICTIONARY")) (setq entité (vlax-vla-object->ename obj)) (setq list_entité (entget entité)) ;; travail (setq list_ent_group nil list_nom_g nil list_gr_act nil list_calq_gr nil list_calq_gr_final nil) ; liste les entités contenant un groupe (dxf350) - list_ent_group (while (assoc 350 list_entité) (setq dxf350 (assoc 350 list_entité)) (setq list_ent_group (append (list (cdr dxf350)) list_ent_group)) (setq list_entité (vl-remove dxf350 list_entité)) ) [b] ; Trouver le groupe actif - (290 . 1) nom_gr_act[/b] (setq x 0) (repeat (length list_ent_group) (setq gr_act (cdr (assoc 290 (entget (nth x list_ent_group))))) (if gr_act (setq [surligneur] nom_gr_act[/surligneur] (cdr (assoc 300 (entget (nth x list_ent_group)))))) (setq x (+ 1 x)) ) [b] ; liste les nom de groupes - list_nom_g[/b] (setq x 0) (repeat (length list_ent_group) (setq nom_g (cdr (assoc 300 (entget (nth x list_ent_group))))) (setq [surligneur] list_nom_g[/surligneur] (append (list nom_g) list_nom_g) x (+ x 1)) ) [b] ; Trouver les noms des calques par groupe[/b] (setq x 0) (repeat (length list_ent_group) (setq list_ent (entget (nth x list_ent_group))) (setq nom_g (cdr (assoc 300 (entget (nth x list_ent_group))))) (setq list_calq_gr (append (list nom_g) list_calq_gr)) (setq ent_ap_300 (member (assoc 300 list_ent) list_ent)) (while (assoc 330 ent_ap_300) (setq dxf330 (assoc 330 ent_ap_300)) (setq ent_dxf330 (entget (cdr dxf330))) (setq calq_gr (cdr (assoc 2 ent_dxf330))) (setq list_calq_gr (append (list calq_gr) list_calq_gr)) (setq ent_ap_300 (vl-remove dxf330 ent_ap_300)) ) (setq [surligneur] list_calq_gr_final[/surligneur] (append (reverse (list list_calq_gr)) list_calq_gr_final)) (setq list_calq_gr nil) (setq x (+ x 1)) ) La suite sera d'en faire une routine bien écrite.... [Edité le 20/10/2006 par Bred]
  23. Bred

    Calque : Filtre de groupe

    Hé! hé! hé! je savais bien que ... aurait titillé ces deux là !!! :cool: ... merci de vos réponse, je reprend (un peu) espoir ! (gile) : mes recherches sur internet m'avait fait aussi arrivé au filtre, mais j'ai l'impression que le fait d'atteintdre les groupes est une gageure ! (ç'est français ça ?...) Patrick_35 : .... mon niveau en anglais est limité (voir néant), mais je vais m'y pencher !
  24. Bred

    Calque : Filtre de groupe

    mmmmmmmm... j'ai beau cherché, que neni.... même dans des forums anglais, j'ai l'impression que le sujet est une impasse.... Serait t'on arrivé à une limite ??? :casstet:
  25. Bred

    Revision ........???

    Salut, au premier coup d'oeuil change (setq nouv_ssadd (ssadd nouv_ssadd ma_sel )) par (setq nouv_ssadd (ssadd))
×
×
  • 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é