Aller au contenu

draven

Membres
  • Compteur de contenus

    11
  • Inscription

  • Dernière visite

Tout ce qui a été posté par draven

  1. draven

    acad/mep 2010

    Hello Je suis en souscription et je n ai toujours rien recu !
  2. draven

    truecolor et odre de tracé

    Hello ! Ben je n'ai pas réussi car les notions de RVB et devant / derrière en Visual Lisp sont bien au dela de mes connaissances. Mais j'ai quand même réussi à faire ça: ;;;====== Hach 230 dans Bloc ==========;;; (Defun c:H230B (/) (command "_.undo" "_be") (H2B) (hb230) (command "_.undo" "_e") (princ) ) (defun hb230 (/) (setq blo (tblnext "block" T)) (while blo (setq ent (cdr (assoc -2 blo))) (while ent (setq lis (entget ent)) (if (= (cdr (assoc 0 lis)) "HATCH") (progn (setq lis (append lis '((420 . 15132390)))) (entmod lis) ) ;;fin de progn ) ;; fin de if hatch (setq ent (entnext ent)) ) ;;fin de while ent (princ (strcat "\nTraitement du bloc : " (cdr (assoc 2 blo)) " -> OK" ) ) (setq blo (tblnext "block")) ) ;; fin de while blo (command "regen") (princ) ) (defun H2B (/ doc blocks copylst) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) (setq blocks (vla-get-blocks doc)) (vlax-for x blocks (if (and (= :vlax-false (vla-get-isXref x)) ;;(zerop (vlax-get x 'IsXref)) (not (eq "*MODEL_SPACE" (strcase (vlax-get x 'Name)))) (not (eq "*PAPER_SPACE" (strcase (vlax-get x 'Name)))) ) (vlax-for i x (if (not (eq "AcDbHatch" (vlax-get i 'ObjectName))) (setq copylst (cons i copylst)) ) ) ) (if copylst (progn (vlax-invoke doc 'CopyObjects (reverse copylst) x) (mapcar 'vla-delete copylst) ) ) (setq copylst nil) ) (vla-regen doc acActiveViewport) (princ) ) Maintenant j'ai un autre petit problème, je fais ça : (defun c:H0 (/) ;;st nom_st nom_st) ;;; (command "-XREF" "D" "*") (setq st (tblnext "style" T)) (while st (setq nst (cdr (assoc 2 st))) (subst '(40 . 0.0) (assoc 40 st) st) (entmod st) (princ (strcat "\nStyle " nst " -> OK")) (setq st (tblnext "style")) ) ;fin de while st ;;; (command "-XREF" "R" "*") (princ) ) mais il ne se passe rien ! est ce quelqu'un pourrait me dire d'où ça vient ? Cordialement, DVN
  3. draven

    truecolor et odre de tracé

    Ok, je vais étudier tout ça. Merci
  4. Bonjour, je débute en visual lisp et je voudrais transforer quelque uns de mes lisp en V-lisp. Est ce quelqu'un pour m'indiquer la voie à suivre comme pour ce lisp par exemple: (defun c:H230 (/ ss ) (princ "-->Hachures en couleur RVB 230,230,230<--") (princ "\nChoix des objets/[Entrée pour toutes les hachures]") (if (setq ss (ssget '((0 . "HATCH")))) (progn (command "changer" ss "" "PR" "CO" "U" "230,230,230" "") (command "ordretrace" ss "" "ar") ); fin de progn pour if : vrai (progn (setq ss (ssget "X" '((0 . "HATCH") ))) (if ss (progn (command "changer" ss "" "PR" "CO" "U" "230,230,230" "") (command "ordretrace" ss "" "ar") ) (alert "Il n'y a pas de hachure dans ce dessin") ) ); fin de progn pour if : faux ); fin de if (princ) ) merci d'avance pour vos réponses
  5. draven

    G besoin d\'aide SVP

    ca y est g reussi ! moi aussi je n est pas du etre assez clair dans la formulation de mon probleme: ce que je voulais c 'etait à partir d'un jeu de selection (ssget) creer deux liste d entité: 1 avec comme type de ligne axes et cache et/ou ducalque si le type de celui-ci etait axes ou cache, et 1 avec les types de ligne continuous et pointille et/ou ducalque si le type de celui-ci etait continuous ou pointillé. donc voila comment g fait: ;;----------obtention de tous les calques dont le type de ligne m'interresse-------------- (defun tdl_lay (/ a a1 b c) (setq iso_tdl_lay '()) (setq bbl_tdl_lay '()) (setq a 1) (while (setq a1 (tblnext "layer" a)) (setq a nil) (if (or (= (cdr (assoc 6 a1)) "AXES") (= (cdr (assoc 6 a1)) "CACHE") );fin de or (progn (setq b (cdr (assoc 2 a1))) (setq iso_tdl_lay (append iso_tdl_lay (list b)))) );fin de if (if (or (= (cdr (assoc 6 a1)) "Continuous") (= (cdr (assoc 6 a1)) "POINTILLE") );fin de or (progn (setq c (cdr (assoc 2 a1))) (setq bbl_tdl_lay (append bbl_tdl_lay (list c)))) );fin de if );fin de while );fin ;;--------------------recherche des entites----------------------------------------- (defun c:yo () (tdl_lay) (if (setq selection (ssget '((0 . "ARC,LINE,*POLYLINE,CIRCLE,ELLIPSE,SPLINE")))) (progn (setq l_iso (ssadd)) (setq l_bbl (ssadd)) ;---------------------------------------------------------------------------------------- (setq i 0) (setq n (sslength selection)) (while (< i n);boucle tant ke i < n (setq ent (ssname selection i)) (if (or (= (cdr (assoc 6 (entget ent))) "AXES") (= (cdr (assoc 6 (entget ent))) "CACHE") (and (= (cdr (assoc 6 (entget ent))) nil) (member (cdr (assoc 8 (entget ent))) iso_tdl_lay) ) );fin de or (ssadd ent l_iso) );fin de if (if (or (= (cdr (assoc 6 (entget ent))) "Continuous") (= (cdr (assoc 6 (entget ent))) "POINTILLE") (and (= (cdr (assoc 6 (entget ent))) nil) (member (cdr (assoc 8 (entget ent))) bbl_tdl_lay) ) );fin de or (ssadd ent l_bbl) );fin de if (setq i (1+ i)) );fin de while ;----------------------------------------------------------------------------------------- (setq nb_l_iso (sslength l_iso)) (setq nb_l_bbl (sslength l_bbl)) (setq nb_ent_traitees (+ nb_l_iso nb_l_bbl)) (if (/= nb_l_iso 0) (command "_change" l_iso "" "_pr" "_c" "2" "") );fin de if (if (/= nb_l_bbl 0) (command "_change" l_bbl "" "_pr" "_c" "3" "") );fin de if (alert (strcat (rtos nb_ent_traitées 2 0) " Entités sélectionnées sur un total de : " (rtos n 2 0))) );fin de progn (alert " Aucune entité valable sélectionnée ") );fin de if ) ;;------------------------------------fin---------------------------------------------- C un peu lent mais ca marche, donc si qqun peux me dire si un mapcar accelererait le processus, surtout si on rajoute des types de lignes, et si si oui si on pouvait faire un petit cours sur le mapcar, ca serait vraiment genial. @+
  6. draven

    G besoin d\'aide SVP

    oui ca j avais compris mon probleme venait du fait ke je ne voulais pas prendre toutes les entites dont le lype de ligne etait "ducaque" mais celle de certains calques seulement sans connaitre les calques auparavant. g reussi avec un tblnext et des bidouilles, g plus qu a essayer de comprendre le mapcar et ca devrait le faire (je crierais au secour si je n y arrive pas :D ) en tout cas merci pour votre aide voici tout meme ma routine pour trouver les calques dont le type de ligne m'interresse, si vous voulez y jetez un coup d'oeil . (defun tdl_lay (/ a a1 b ) (setq iso_tdl_lay '()) (setq a 1) (while (setq a1 (tblnext "layer" a)) (setq a nil) (if (or (= (cdr (assoc 6 a1)) "AXES") (= (cdr (assoc 6 a1)) "CACHE") (= (cdr (assoc 6 a1)) "Continuous") );fin de or (progn (setq b (cdr (assoc 2 a1))) (setq iso_tdl_lay (append iso_tdl_lay (list b)))) );fin de if );fin de while );fin @+
  7. draven

    G besoin d\'aide SVP

    slt, j'ai etudié ton lisp didier, et malheureusement cela ne me convient pas: en fait je veux faire un tri sur une selection faite . mais ce tri comporte plusieurs type de lignes et je ne connais pas a l avance les calques sur lesquels je vais chercher. c pourkoi j avais commencer mon lispe ainsi: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun c:yo () (if (setq selection (ssget '((0 . "ARC,LINE,*POLYLINE,CIRCLE,ELLIPSE,SPLINE")))); je selectionne les entites (progn ;;;a partir de la, je voudrais creer 2 listes (setq l_iso (ssadd));une dont le type de ligne des entites est : axes et cache et continuous etc et ducalque si le type de ligne du calque est axes ou cache ou etc.. (setq l_plo (ssadd));et une autre dont le type de ligne des entites est : toto et tata et titi etc et ducalque si le type de ligne du calque est toto ou tata ou etc.. ;---------------------------------------------------------------------------------------- (setq i 0) (setq n (sslength selection)) (while (< i n);boucle tant ke i < n (setq ent (ssname selection i));definit "ent" comme la ième entité de la selection "selection" (cond ((= "AXES" (cdr (assoc 6 (entget ent)))) (ssadd ent l_iso)) ((= "CACHE" (cdr (assoc 6 (entget ent)))) (ssadd ent l_iso)) ((= "Continuous" (cdr (assoc 6 (entget ent)))) (ssadd ent l_iso)) );fin de cond (setq i (1+ i)) );fin de while ;---------------------------------------------------------------------------------------- (setq j 0) (setq m (sslength selection)) (while (< j m);boucle tant ke j < m (setq en (ssname selection j));definit "ent" comme la jème entité de la selection "selection" (cond ((= "toto" (cdr (assoc 6 (entget en)))) (ssadd en l_plo)) ((= "tata" (cdr (assoc 6 (entget en)))) (ssadd en l_plo)) ((= "titi" (cdr (assoc 6 (entget en)))) (ssadd en l_plo)) );fin de cond (setq j (1+ j)) );fin de while ;----------------------------------------------------------------------------------------- (if l_iso (command "_change" l_iso "" "_pr" "_c" "2" "") );fin de if (if l_plo (command "_change" l_plo "" "_pr" "_c" "3" "") );fin de if ;;;(alert (strcat (rtos (sslength selection) 2 0) " Entités traitées")) );fin de progn (alert " Aucune entité valable sélectionnée ") );fin de if ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mais c la que je bloque, je ne vois pas comment ajouter les entités dont le type de ligne est ducalque tout en les separant separant bien en 2 listes. donc si qqun a une petite idee...
  8. draven

    G besoin d\'aide SVP

    merci beaucoup didier pour avoir repondu si prestement, je vais etudier ca si je peux integrer tout ca dans mon lisp.
  9. Bonsoir a tous, voila, je voudrais faire une selection a l'aide de ssget sur des entites d un certain type de ligne ou dont le type de ligne est ducalque et le type du calque est celui recherché. un exemple sera certainement plus causant: je veux selectionner tous les entités dont le type de ligne (tdl) est "AXES" ainsi que celles qui ont pour tdl "DUCALQUE" et dont ce meme calque a pour tdl "AXES". Si qq'un a compris mon charabbia et a une solution a m'apporter, merci d'avance. a+
  10. 1er fois ici aussi ! petite routine permettant aux fainéants comme moi de ne pas avoir a retaper le facteur d'echelle (de la commande echelle) si on doit modifier plusieurs entites a la suite avec tjrs le meme facteur d'echelle (defun c:SSS () (princ "---- Echelle ----") (setq obj (ssget)) (princ "\nSpécifiez le point de base:") (setq pdb (getpoint)) (if aff_ech (progn (setq echel (getreal (strcat "\nSpécifiez le facteur d'échelle ou <" (rtos aff_ech 2 6) ">: "))) (if (not echel) (setq echel aff_ech)) ) (setq echel (getreal (princ "\nSpécifiez le facteur d'échelle :"))) ) (command "echelle" obj "" pdb echel) (setq aff_ech echel) (princ) ) a+
  11. Bonjour tout le monde ! c la 1ere fois que je cause dans le micro, alors je me presente vite fait. mon petit nom c draven ou DvN pour les intimes, je suis projeteur dessinateur sur autocad dans un BET fluides. d'apres moi ce ke mossieur Oto Desk devrait surtout faire sur c prochaines versions c ameliorer la rapiditité lors de la sélection des objets car si on a plusieur milliers d'entités a selectionner, ca rame grave. il devrait demander des conseil à ces concurents comme FastCad ki dechire niveau vitesse. Voila pour ma 1ere fois ce sera tout a+
×
×
  • 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é