Aller au contenu

chris_mtp

Membres
  • Compteur de contenus

    406
  • Inscription

  • Dernière visite

Tout ce qui a été posté par chris_mtp

  1. chris_mtp

    Surface en ares

    Merci Bonuscad Ca marche du tonerre mais si j'ai bien compris dans le lisp quand tu fais une fonction defun, u=il n'est obligé d'indiquer la fonction au bas du lisp pour l'appeller ensuite. Dans l'aide, defun est décrit comme une fonction d'appel si j'ai bien compris. Serieux, c'est chaud d'apprendre le lisp. Merci en tout cas. John.
  2. chris_mtp

    Surface en ares

    Bonjour Bonuscad Je n'arrive pas à insérer correctement le bout de commande dans le lisp de Patrick. Je ne connais pas assez bien le lisp. Je vois dans le lisp de Patrick une commande refaire_reacteurs mais pas plus. Autocad me met le message d'erreur suivant Commande: _appload Rea.lsp correctement chargé(s) Commande: ; erreur: nombre d'arguments insuffisants J'ai insérer ta commande après celle de refaire_reacteurs . Pas à la bonne place probablement. Voici le lisp que j'ai modifié : (defun modif_poly(obj rea arg-list) (if (and (vlax-read-enabled-p obj)(vlax-read-enabled-p (vlr-data rea))) ; (vla-put-textstring (vlr-data rea) (rtos (vla-get-area obj))) (vla-put-textstring (vlr-data rea) (strcat (rtos (vla-get-area obj) 2 2) "M2")) (vlr-remove rea) ) ) (defun effacer_pt(obj rea arg-list) (vlax-ldata-delete obj "Patrick_35" (vlr-data rea)) (vlax-ldata-delete (vlr-data rea) "Patrick_35" obj) (vlr-remove rea) ) (defun c:rea(/ n sel_poly sel_text) (while (not sel_poly) (setq sel_poly (car (entsel "\nSélection de la polyligne : "))) (if sel_poly (if (or (= (cdr (assoc 0 (entget sel_poly))) "POLYLINE") (= (cdr (assoc 0 (entget sel_poly))) "LWPOLYLINE") (= (cdr (assoc 0 (entget sel_poly))) "SPLINE")) (progn (setq sel_poly (vlax-ename->vla-object sel_poly)) (if (= :vlax-false (vla-get-closed sel_poly)) (progn (alert "Cette Polyligne/Spline n'est pas fermée") (setq sel_poly nil) ) ) (if sel_poly (if (vlax-ldata-get sel_poly "Patrick_35") (progn (alert "Polyligne/Spline déjà associé à un texte") (setq sel_poly nil) ) ) ) ) (progn (alert "Ce n'est pas une Polyligne/Spline") (setq sel_poly nil) ) ) ) ) (if sel_poly (progn (vla-highlight sel_poly :vlax-true) (while (not sel_text) (setq sel_text (car (entsel "\nSélection du texte : "))) (if sel_text (if (or (= (cdr (assoc 0 (entget sel_text))) "TEXT") (= (cdr (assoc 0 (entget sel_text))) "MTEXT")) (progn (setq sel_text (vlax-ename->vla-object sel_text)) (if (vlax-ldata-get sel_text "Patrick_35") (progn (alert "Texte déjà associé à une Polyligne/Spline") (setq sel_text nil) ) ) ) (progn (setq sel_text nil) (alert "Ce n'est pas un texte") ) ) ) ) (if sel_text (progn (vla-highlight sel_poly :vlax-false) (vla-put-textstring sel_text (rtos (vla-get-area sel_poly))) (vlr-pers (vlr-object-reactor (list sel_poly) sel_text '((:vlr-modified . modif_poly)(:vlr-erased . effacer_pt)))) (vlr-pers (vlr-object-reactor (list sel_text) sel_poly '((:vlr-erased . effacer_pt)))) (vlax-ldata-put sel_poly "Patrick_35" sel_text) (vlax-ldata-put sel_text "Patrick_35" sel_poly) ) ) ) ) (princ) ) (defun refaire_reacteurs(/ entp entt) (vl-load-com) (if (not appli_patrick_35) (progn (setq appli_patrick_35 (ssget "x" (list (cons 102 "{ACAD_XDICTIONARY")))) (if appli_patrick_35 (progn (setq n 0) (while (setq entp (ssname appli_patrick_35 n)) (setq entp (vlax-ename->vla-object entp)) (if (setq entt (vlax-ldata-get entp "Patrick_35")) (progn (vla-put-textstring entt (strcat (rtos (/ (vla-get-area entp) 10000) 2 2) "M2")) (vlr-object-reactor (list entp) entt '((:vlr-modified . modif_poly)(:vlr-erased . effacer_pt))) (vlr-object-reactor (list entt) entp '((:vlr-erased . effacer_pt))) ) (vlax-ldata-delete entp "Patrick_35") ) (setq n (1+ n)) ) ) ) ) ) (princ) ) (refaire_reacteurs) (defun surf_cadastrale (xs / h a ca) (cond ((and xs (numberp xs)) (setq h (fix (cvunit xs "mètre_carré" "hectare")) a (fix (cvunit xs "mètre_carré" "are")) ca (fix (cvunit xs "mètre_carré" "centare")) ) (strcat (if (not (zerop h)) (strcat (itoa h) "h ") "") (if (not (zerop a)) (strcat (itoa (if (not (zerop h)) (- a (* h 100)) a)) "a ") "") (if (not (zerop ca)) (strcat (itoa (if (not (zerop a)) (- ca (* a 100)) ca)) "ca") "") ) ) ) ) (surf_cadastrale) (princ "\nREA.LSP chargé. Tapez REA pour l'exécuter") (princ) De plus, serait il possible au lieu de cliquer sur un texte pour avoir la surface de cliquer sur la polyligne, pointez n'importe où dans celle ci et avoir la surface directment. Merci pour ton aide. John.
  3. Bonjour à tous JE me trouve confronter à un pb sur des écritures de surfaces sos forme de texte. Est il possible de créer en fait une chaîne de caractéres à partir d'une propriété d'un objet autpcad ? Je m'explique : Je voudrais en fait en cliquant sur une polyligne avoir sa surface en ares et que celle ci s'écrive sous forme de texte en cliquant au centre de la polyligne. J'ai essayé de modifier le lisp de Patrick Rea qui permet d'écrire la surface d'un objet sous forme d'un champ dynamique mais je n'ai trouvé pas de solution. Rien non plus en consultant l'aide d'AutoACAD sur les chaines de caractères sur des champs. Attention pour ce qui ne le savent pas ; 1 are = 100m2 donc une surface de 6358m2 fait 63a58ca. Ca ne rien a rien de mettre des decimales. Arrondit les surfaces à l'entier supérieur est suffisant. Ci dessous un lsp simple que j'ai trouvé sur le site d'Autodesk (defun c:AT (/ entObject entObjectID InsertionPoint) (vl-load-com) (setq entObject (vlax-ename->vla-object(car (entsel))) entObjectID (vla-get-objectid entObject) InsertionPoint (vlax-3D-Point (getpoint "Select point: ")) ) (vla-addMText (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)) ) InsertionPoint 0.0 (strcat "%<\\AcObjProp Object(%<\\_ObjId " (rtos entObjectID 2 2) ">%).Area \\f \"%pr2%lu2%ct4%qf1 SQ. FT.\">%" )) mais que je n'arrive pas à modifier surtout pour avoir la surface en ares et si possible décomposer le champ créer en texte Merci par avance.
  4. chris_mtp

    Centre d\'un arc

    Justement Gile Tu as de l'or entre les mains tu peux te mettre à l'ombre quand tu veux :casstet: :cool: A plus, John de NC
  5. chris_mtp

    Centre d\'un arc

    :cool: bIEN JOUE ca fonctionne plutot pas mal. J'vais essayé de modifier un lisp qui trace la bissetrice d'un angle mais trop long comme méthode. Ca fait depuis cet aprem que je suis sur ce pb. Merci encore. John de NC
  6. Bonjour à tous. Est il possible à partir d'un simple clic sur un arc de cercle de tracer une polyligne qui passe par une extrémité de l'arc, le centre de l'arc et l'autre extrémité de l'arc ? Ceci dans le but de repérer plus facilement le centre des arcs et ainsi placer un bloc type point topo au centre de l'arc. Je suis en ce moment sur un projet de ZAC et c'est vraiment long de repérer les centres des arcs un après l'autre. J'ai cherché. Le seul lisp qui s'approche de ce qu'il me faut sont les lips de gile mais qui permettent uniquement de trcar l'arc à partir du centre et du rayon mais pas l'inverse en fait. Merci beaucoup par avance.. Chris
×
×
  • 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é