Aller au contenu

Patrick_35

Membres
  • Compteur de contenus

    6 374
  • Inscription

  • Dernière visite

  • Jours gagnés

    30

Tout ce qui a été posté par Patrick_35

  1. Salut Et avec la commande multiple ? @+
  2. Salut Attache la ceinture ;) Le plus simple (pour l'instant) est de balayer les objets qui ont des champs. Pour tester sur un objet avec champ (setq old (entget (cdr (assoc 360 (entget (car (nentsel))))))) (setq ent (entget (cdr (last (vl-remove-if-not '(lambda(x)(eq (car x) 360)) (entget (cdr (assoc 360 (entget (cdr (assoc 360 old)))))) ) ) ) ) ) (assoc 331 ent) ; L'objet recherché @+
  3. Salut Un sujet à voir @+
  4. Salut Je ne vois pas trop comme ceci avec un attribut ? (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (car (nentsel)))))))))))) @+
  5. Salut Ton fond de plan pour un folio est un Bloc ? Le nom du bloc a bien été renseigné dans la variable nom_fplan ? @+
  6. Salut Je ne pensais pas qu'il y avait des points sur les poly Le lisp modifié en conséquence (defun c:G18a(/ ang cc doc esp haut js lig lst num pt1 pt2 r sel tab) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (if (zerop (getvar "tilemode")) (setq esp (vla-get-paperspace doc)) (setq esp (vla-get-modelspace doc)) ) (or patrick_g18a_calque (setq patrick_g18a_calque (getvar "clayer"))) (or patrick_g18a_haut (setq patrick_g18a_haut 1)) (or patrick_g18a_num (setq patrick_g18a_num 1)) (princ "\nAttention au sens de la polyligne d'AXE!!!") (while (not r) (setq r (getstring T (strcat "\nCalque d'insertion de la numérotation: <" patrick_g18a_calque "> : "))) (cond ((eq r "") (setq r patrick_g18a_calque) ) ((not (tblsearch "layer" r)) (princ (strcat "\nCalque " r " inexistant.")) (setq r nil) ) (T (setq patrick_g18a_calque r) ) ) ) (and (setq num (getint (strcat "\nNuméro de départ <" (itoa patrick_g18a_num) ">: "))) (setq patrick_g18a_num num) ) (and (setq haut (getreal (strcat "\nHauteur du texte <" (rtos patrick_g18a_haut) ">: "))) (setq patrick_g18a_haut haut) ) (and (setq ObjLwHaut (entsel "\nSélectionner l'AXE : ")) (setq ObjLwHaut (entget (car ObjLwHaut))) (eq (cdr (assoc 0 ObjLwHaut)) "LWPOLYLINE") (progn (vla-startundomark doc) (setq lst (vl-remove-if-not '(lambda(x)(eq (car x) 10)) ObjLwHaut) js (ssget "_x" '((0 . "POINT"))) sel (vla-get-activeselectionset doc) ) (while (and js (cadr lst)) (setq tab nil pt1 (cdar lst) pt2 (cdadr lst) ang (angle pt1 pt2) ) (setq lig (vla-addline esp (vlax-3d-point (trans pt1 1 0)) (vlax-3d-point (trans pt2 1 0)))) (vlax-for pt sel (if (vlax-invoke lig 'intersectwith pt acextendnone) (if (and (equal (vlax-get pt 'coordinates) (vlax-get lig 'endpoint))) (or (caddr lst) (setq tab (cons (vlax-get pt 'coordinates) tab)) ) (setq tab (cons (vlax-get pt 'coordinates) tab)) ) ) ) (vla-delete lig) (and tab (cond ((and (>= ang 0) (< ang (/ pi 2)) ) (setq tab (vl-sort tab '(lambda(a b)(if (eq (car a) (car b)) (< (cadr a) (cadr b)) (< (car a) (car b)) ) ) ) ) ) ((and (>= ang (/ pi 2)) (< ang pi) ) (setq tab (vl-sort tab '(lambda(a b)(if (eq (car a) (car b)) (< (cadr a) (cadr b)) (> (car a) (car b)) ) ) ) ) ) ((and (>= ang pi) (< ang (+ pi (/ pi 2))) ) (setq tab (vl-sort tab '(lambda(a b)(if (eq (car a) (car b)) (> (cadr a) (cadr b)) (> (car a) (car b)) ) ) ) ) ) (T (setq tab (vl-sort tab '(lambda(a b)(if (eq (car a) (car b)) (> (cadr a) (cadr b)) (< (car a) (car b)) ) ) ) ) ) ) (foreach pt tab (entmake (list (cons 0 "TEXT") (cons 100 "AcDbEntity") (cons 100 "AcDbText") (cons 1 (rtos patrick_g18a_num 2 0)) (cons 10 (trans pt 1 0)) (cons 11 (trans pt 1 0)) (cons 8 patrick_g18a_calque) (cons 40 patrick_g18a_haut) ) ) (setq patrick_g18a_num (1+ patrick_g18a_num)) ) ) (setq lst (cdr lst)) ) (vla-delete sel) (vla-endundomark doc) ) ) (princ) ) ps : j'ai évité d'utiliser le (ssget "_F" ...) car la précision n'est pas au rendez-vous et si tu zoom sur une partie de la poly, c'est uniquement ce qui est visible qui est sélectionnés @+ Edit : modif du lisp suite à la demande de lecrabe Edit2 : correction d'un bug [Edité le 20/12/2010 par Patrick_35]
  7. De rien, de rien C'était le but :D Le plus dur est déjà fait ;) @+
  8. Patrick_35

    Impression décalé

    Salut Sujet déjà abordé. @+
  9. Salut (defun c:G18a(/ cc haut num pt r) (princ "\nAttention au sens de la polyligne d'AXE!!!") (while (not r) (setq r (getstring T (strcat "\nCalque d'insertion de la numérotation: <" (setq cc (getvar "clayer")) "> : "))) (cond ((eq r "") (setq r cc) ) ((not (tblsearch "layer" r)) (princ (strcat "\nCalque " r " inexistant.")) (setq r nil) ) ) ) (or (setq num (getint "\nNuméro de départ <1>: ")) (setq num 1) ) (or (setq haut (getreal "\nHauteur du texte <1>: ")) (setq haut 1) ) (and (setq ObjLwHaut (entsel "\nSélectionner l'AXE : ")) (setq ObjLwHaut (entget (car ObjLwHaut))) (eq (cdr (assoc 0 ObjLwHaut)) "LWPOLYLINE") (progn (foreach pt (vl-remove-if-not '(lambda(x)(eq (car x) 10)) ObjLwHaut) (entmake (list (cons 0 "TEXT") (cons 100 "AcDbEntity") (cons 100 "AcDbText") (cons 1 (rtos num 2 0)) (cons 10 (trans (cdr pt) 1 0)) (cons 11 (trans (cdr pt) 1 0)) (cons 8 r) (cons 40 haut) ) ) (setq num (1+ num)) ) ) ) (princ) ) @+
  10. Patrick_35

    Barre d\'outils

    Salut La variable Menubar à 1 Ensuite Outils --> Espace de travail --> Autocad classique Pour les onglets Outils --> Options --> Affichage --> Eléments de la présentation --> Afficher les onglets Présentation et Objet @+
  11. Salut (defun c:impr(/ 2d-point nombl doc nom_fplan bl bg hd lst res lay plt) (defun 2d-point (pt) (vlax-make-variant (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble '(0 . 1)) (list (car pt) (cadr pt)) ) ) ) (defun nombl(bl) (if (vlax-property-available-p bl 'effectivename) (vla-get-effectivename bl) (vla-get-name bl) ) ) (setq doc (vla-get-activedocument (vlax-get-acad-object)) nom_fplan "FOND_DE_PLAN" ) (and (ssget "x" (list (cons 0 "insert") (cons 2 (strcat nom_fplan ",`**")) (cons 410 (getvar "ctab")))) (progn (vlax-for bl (setq sel (vla-get-activeselectionset doc)) (and (eq (strcase nom_fplan) (strcase (nombl bl))) (progn (vla-getboundingbox bl 'bg 'hd) (setq lst (cons (list (vlax-safearray->list bg) (vlax-safearray->list hd)) lst)) ) ) ) (vla-delete sel) (and lst (setq res (vl-sort lst '(lambda (a b) (< (caadr a) (caadr b)))) res (vl-sort res '(lambda (a b) (< (cadadr a) (cadadr b)))) lay (vla-get-activelayout doc) plt (vla-get-plot doc) ) (foreach fen res (vla-put-plottype lay acwindow) (vlax-invoke-method lay 'setwindowtoplot (2d-point (trans (car fen) 0 3)) (2d-point (trans (cadr fen) 0 3))) (vlax-invoke plt 'plottodevice) ) ) ) ) (princ) ) @+
  12. Salut Tout dépend de quelle clé tu as besoin Par exemple, tu lances la commande _dwgprops et tu mets dans le titre "Mon_Titre" Un (vlax-dump-object (vla-get-summaryinfo (vla-get-activedocument (vlax-get-acad-object))) T) permet de voir l'ensemble des clés Donc, un (vla-get-title (vla-get-summaryinfo (vla-get-activedocument (vlax-get-acad-object)))) me retourne "Mon_Titre" Pour forcer la valeur, un (vla-put-title (vla-get-summaryinfo (vla-get-activedocument (vlax-get-acad-object))) "Tu es le meilleur") Et pour vérifier que la valeur voulue est bien écrite, on lance la commande _dwgprops et je retrouve mon superbe titre ;) @+
  13. Alors ici http://dl.free.fr/pvuA2kxNu @+
  14. Salut Je ne réponds pas exactement à la demande, mais tu as un lisp @+
  15. Salut Je ne vois pas comment faire autrement. C'est l'un des cas qui impose la récursivité, mais je manque de temps en ce moment. ps : une partie de la solution doit se trouver dans le lien que tu as donné ;) @+
  16. Patrick_35

    Lisps de Patrick_35

    Salut C'est une histoire de précision. Si le point de base se trouve à quelques millions de km et qu'il est redéfinit en 0,0, il risque de légèrement bouger bouger @+
  17. Patrick_35

    mapcar

    Salut (mapcar 'jplay lst1) @+
  18. Moi aussi. Oui. C'était l'objet de ma demande en réponse n°21, pour comprendre ce qui peut bloquer. @+
  19. Patrick_35

    WikiBide

    Salut C'est quand même surprenant de trouver "si facilement" des documents confidentiels, surtout vu la quantité. Intoxe de faux documents ou pas ? Si ce n'est pas le cas, on peut craindre le pire, car on a affaire à des apprentis "barbouzes". @+
  20. Salut Le plus simple est que tu donnes un exemple @+
  21. Salut Avec un peu de retard, mais une solution un peu simple et itérative (setq lst '( ("SARRAT_CLOISONS_VERTICALES" "cloison" 80.0 2700.0 67 208.04) ("SARRAT_CLOISONS_VERTICALES" "cloison" 120.0 2910.0 8 26.78) ("SARRAT_CLOISONS_VERTICALES" "doublage" 40.0 2700.0 61 189.41) ("SARRAT_CLOISONS_VERTICALES" "doublage" 60.0 2700.0 2 6.22) ("SARRAT_CLOISONS_VERTICALES" "doublage" 60.0 3770.0 20 86.72) ("SARRAT_CLOISONS_VERTICALES" "doublage" 80.0 2700.0 11 34.16) ("SARRAT_CLOISONS_PLAFONDS" "cloison" 80.0 2000.0 2.0 4.6) ("SARRAT_CLOISONS_PLAFONDS" "cloison" 80.0 3959.0 6 27.32) ("SARRAT_CLOISONS_PLAFONDS" "cloison" 120.0 2397.0 2 5.52) ) de1 2 de2 2 de3 2 lig 2 ) (setq tbl (vlax-ename->vla-object (car (entsel)))) (while (setq tab (nth (- lig 2) lst)) (setq sui (nth (1- lig) lst)) (if (or (/= (car tab) (car sui)) (/= (cadr tab) (cadr sui)) (/= (caddr tab) (caddr sui)) ) (progn (or (eq de3 lig) (vla-mergecells tbl de3 lig 2 2)) (setq de3 (1+ lig)) ) ) (if (or (/= (car tab) (car sui)) (/= (cadr tab) (cadr sui)) ) (progn (or (eq de2 lig) (vla-mergecells tbl de2 lig 1 1)) (setq de2 (1+ lig)) ) ) (if (/= (car tab) (car sui)) (progn (or (eq de1 lig) (vla-mergecells tbl de1 lig 0 0)) (setq de1 (1+ lig)) ) ) (setq lig (1+ lig)) ) @+
  22. Patrick_35

    Historique du dessin

    Salut Tu retrouves l'historique des fichiers dans les registres comme HKEY_USERS\cle_registre\Software\Autodesk\AutoCAD\R??.?\ACAD-????:???\Recent File List Et cle_registre dans Device\HarddiskVolume1\Documents and Settings\nom_utilisateur\NTUSER.DAT Donc, tu as peut-être un problème avec tes registres. @+
  23. Salut Le plus simple est que tu nous donnes tes listes qui permettent de générer le tableau. @+
  24. Salut Merci, je n'avais pas encore fait le rapprochement avec le dictionnaire SORTENTS @+
  25. Patrick_35

    Inclinaison de texte

    Salut Je suis du même avis. @+
×
×
  • 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é