-
Compteur de contenus
6 374 -
Inscription
-
Dernière visite
-
Jours gagnés
30
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Patrick_35
-
Icrémentation Texte dans l\'ordre d\'une Polyligne
Patrick_35 a répondu à un(e) sujet de jarod34 dans Visual LISP
Salut Et avec la commande multiple ? @+ -
Sélectionner un objet ET le MText si celui-ci contient un champ faisant référence à cet objet
Patrick_35 a répondu à un(e) sujet de bonuscad dans Pour aller plus loin en LISP
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é @+ -
Zoom identiques dans chaques fenetres ?
Patrick_35 a répondu à un(e) sujet de jmb37 dans AutoCAD 2007
Salut Un sujet à voir @+ -
Sélectionner un objet ET le MText si celui-ci contient un champ faisant référence à cet objet
Patrick_35 a répondu à un(e) sujet de bonuscad dans Pour aller plus loin en LISP
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)))))))))))) @+ -
Impression dans espace objet, probleme bloc dynamique
Patrick_35 a répondu à un sujet dans Routines LISP
Salut Ton fond de plan pour un folio est un Bloc ? Le nom du bloc a bien été renseigné dans la variable nom_fplan ? @+ -
Icrémentation Texte dans l\'ordre d\'une Polyligne
Patrick_35 a répondu à un(e) sujet de jarod34 dans Visual LISP
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] -
Icrémentation Texte dans l\'ordre d\'une Polyligne
Patrick_35 a répondu à un(e) sujet de jarod34 dans Visual LISP
De rien, de rien C'était le but :D Le plus dur est déjà fait ;) @+ -
Salut Sujet déjà abordé. @+
-
Icrémentation Texte dans l\'ordre d\'une Polyligne
Patrick_35 a répondu à un(e) sujet de jarod34 dans Visual LISP
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) ) @+ -
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 @+
-
Impression dans espace objet, probleme bloc dynamique
Patrick_35 a répondu à un sujet dans Routines LISP
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) ) @+ -
lire une propriété personnalisée
Patrick_35 a répondu à un(e) sujet de PHILPHIL dans Pour aller plus loin en LISP
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 ;) @+ -
Alors ici http://dl.free.fr/pvuA2kxNu @+
-
Salut Je ne réponds pas exactement à la demande, mais tu as un lisp @+
-
Challenge 33 (liste <-> arbre)
Patrick_35 a répondu à un(e) sujet de (gile) dans Pour aller plus loin en LISP
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é ;) @+ -
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 @+
-
Salut (mapcar 'jplay lst1) @+
-
impression de plusieurs plans dans le meme fichiers
Patrick_35 a répondu à un(e) sujet de rezut71 dans AutoCAD 2005
Moi aussi. Oui. C'était l'objet de ma demande en réponse n°21, pour comprendre ce qui peut bloquer. @+ -
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". @+
-
impression de plusieurs plans dans le meme fichiers
Patrick_35 a répondu à un(e) sujet de rezut71 dans AutoCAD 2005
Salut Le plus simple est que tu donnes un exemple @+ -
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)) ) @+
-
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. @+
-
Salut Le plus simple est que tu nous donnes tes listes qui permettent de générer le tableau. @+
-
Gérer l\'ordre d\'affichage par objet \"Entité\"
Patrick_35 a répondu à un(e) sujet de lovecraft dans Routines LISP
Salut Merci, je n'avais pas encore fait le rapprochement avec le dictionnaire SORTENTS @+ -
Salut Je suis du même avis. @+
