CADastrophe Posté(e) le 19 décembre 2004 Posté(e) le 19 décembre 2004 Bonjour, Je recherche un lisp ou un vba pour calculer des surfaces depuis 1 polyligne.J'en ai trouvé plusieurs mais il ne sont pas satisfaisant.En sachant que je suis déssinateur bâtiment et que mon unitée et principalement le cm je voudrais pouvoir placer le résultat sur un de mes blocs avec att.Et aussi (désolé d'etre éxigent) que si je viens a transformer ma plolyligne le résultat suit.Je crois qu'il éxiste un truc dans ce genre avec architectural desktop..Merci de vos réponses et bonnes fêtes............ ;)
lecrabe Posté(e) le 19 décembre 2004 Posté(e) le 19 décembre 2004 Bonsoir Pour réaliser ce que tu demandes, il faudrait un réacteur qui mettrait à jour en temps réel le texte de la surface de la polyligne, si tu déformes / étires la polyligne. C'est tout à fait possible en AutoCAD 2000 (ou plus). Peut être que l'un des "cadors" en développement qui intervient sur ce forum, dispose de ce genre de routine en stock ! Sinon avec AutoCAD 2005, on peut utiliser la nouvelle fonctionnalités "champs".Cependant il est impératif de dessiner en métres car malheureusement on ne peut pas appliquer un facteur de multiplication / division. Soyons patients ... Bye Autodesk Expert Elite Team
Laurent_CAMPEDEL Posté(e) le 19 décembre 2004 Posté(e) le 19 décembre 2004 Dadirlidada et mouds le kawa...... :) Ca s'appelle des champs et c'est à disposition dans la 2005. Bon, ils n'y sont pas formatable et en peuvent donc pas tranformer une surface centimétrique en m2... mais ils existent. Laurent CAMPEDELDans l'usage des raccourcis clavier repensés tu trouveras la voie.
Laurent_CAMPEDEL Posté(e) le 19 décembre 2004 Posté(e) le 19 décembre 2004 Harrrrrrrrrrrrr, il s'est vengé............. Le homard m'a tuer................ Laurent CAMPEDELDans l'usage des raccourcis clavier repensés tu trouveras la voie.
lecrabe Posté(e) le 19 décembre 2004 Posté(e) le 19 décembre 2004 Bonsoir Voici un lien vers la routine tant désirée :) http://www.xanadu.cz/default.asp?page=apps/areautil/areautil.htm Ce site Tchéque regorge de choses intéressantes ... Bye PS: Qui se souvient du projet XANADU chez Autodesk ??? Autodesk Expert Elite Team
didier Posté(e) le 19 décembre 2004 Posté(e) le 19 décembre 2004 helloben dis donc, la barre est vachement haut,une routine comme ça, ça se vend.ce n'est pas le but de ce site, que de marcher sur les plates-bandesdes professionnels du dévelloppement. amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Invité Patrick Posté(e) le 19 décembre 2004 Posté(e) le 19 décembre 2004 Pour la petite histoire, j'avais eu l'occasion d'utiliser une version modifiée de cette routine pour un développement que j'avais réalisé pour un client, ce devait être en 2000 ou 2001. Sur autorisation de l'éditeur de Areautil et après paiement d'une licence, j'avais incorporé ce composant logiciel dans mon propre développement. Les modifications que j'avais demandées consistaient de faire en sorte qu'AREAUTIL puisse fonctionner en mode "silencieux" sans boite de dialogue. Areautil est devenu ensuite gratuit puisque l'éditeur l'a amélioré et le logiciel payant s'appelle désormais Livelabel.
phil Posté(e) le 20 décembre 2004 Posté(e) le 20 décembre 2004 Bonjour à tous J'ai développé un partagiciel qui répond peut-être aux besoins de certains d'entre vous, qui se trouve ici:http://www.delicad.com/autocad/activeline.htm Toute critique est bienvenue. Philippe PS: j'espère que patrick ne m'en voudra pas pour cette pub clandestine ;-)
CADastrophe Posté(e) le 20 décembre 2004 Auteur Posté(e) le 20 décembre 2004 Salut tout le mondemerci de vos réponsesEn ce qui concerne la routine Areautil (message pour Le Crabe), je la connaissait, il y a un gros probleme avec cette routine effectivement une fois que tu as fait tes calculs et que tu enregistres éssaye de réouvrir ton fichier et modifie tes polylignes !!!!! Grosse surprise les surfaces ne suivent plus........................................................ Aye!!!
lecrabe Posté(e) le 20 décembre 2004 Posté(e) le 20 décembre 2004 Bonsoir Mr CAD'strophe Attention, si tu as chargé la version de DEMO de "AreaUtil", en effet elle ne fonctionne que dans la session en cours :( As tu utilisée la version payante, sinon voir aussi ci-après... Par contre comme l'a si bien dit notre maître à tous (Patrick: The WebMaster of this fabulous Site), il existe une autre version nommée "LiveLabel" qui semble encore meilleure :cool: Par contre, il faut payer pour ces routines :casstet: (Normal, y a du boulot) Bye Autodesk Expert Elite Team
Patrick_35 Posté(e) le 23 décembre 2004 Posté(e) le 23 décembre 2004 Voilà un sujet qui m’a intéressé à plus d’un titre. Associer un texte avec une polyligne avec une interactivité (dans le cas présent, indiquer les surfaces)Cette routine est à mettre en startup pour qu’à chaque ouverture de dessin, les réacteurs soient toujours actifsEt comme c’est la première fois que je fais ce type d’exercice, toute critique est bienvenue Pour faire une liaison, lancer la commande rea @+ (defun modif_poly(obj rea arg-list) (if (and (vlax-read-enabled-p obj)(vlax-read-enabled-p (vlr-data rea))) [b]; (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"))[/b] (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/spline/cercle : "))) (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") (= (cdr (assoc 0 (entget sel_poly))) "CIRCLE")) (progn (setq sel_poly (vlax-ename->vla-object sel_poly)) (if (/= (vla-get-objectname sel_poly) "AcDbCircle") (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/Cercle déjà associé à un texte") (setq sel_poly nil) ) ) ) ) (progn (alert "Ce n'est pas une Polyligne/Spline/Cercle") (setq sel_poly nil) ) ) ) ) (if sel_poly (progn (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/Cercle") (setq sel_text nil) ) ) ) (progn (setq sel_text nil) (alert "Ce n'est pas un texte") ) ) ) ) (if sel_text (progn (vlr-object-reactor (list sel_poly) sel_text '((:vlr-modified . modif_poly)(:vlr-erased . effacer_pt))) (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 n) (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)) (setq entt (vlax-ldata-get entp "Patrick_35")) [b] (vla-put-textstring entt (strcat (rtos (vla-get-area entp) 2 2) "M2"))[/b] (vlr-object-reactor (list entp) entt '((:vlr-modified . modif_poly)(:vlr-erased . effacer_pt))) (vlr-object-reactor (list entt) entp '((:vlr-erased . effacer_pt))) (setq n (1+ n)) ) ) ) ) ) (princ) ) (refaire_reacteurs)[Edité le 24/12/2004 par Patrick_35] [Edité le 30/5/2006 par Patrick_35] Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
didier Posté(e) le 24 décembre 2004 Posté(e) le 24 décembre 2004 salut respect :exclam: ça fait un moment que je m'étais juré de le faire,tu l'as fait, et si tu permets je vais m'en servir pour comprendreles réactors merci beaucoup Éternel débutant... Mon site perso : Programmer dans AutoCAD
Patrick_35 Posté(e) le 24 décembre 2004 Posté(e) le 24 décembre 2004 Salut DidierSans aucun problème, tu peux en faire ce que tu veuxIl me reste juste une chose que je n’arrive pas pour l’instant à faire, c’est lors de l’effacement d’une entité liée à un réacteur, c’est d’effacer le réacteur. Mais si on réouvre le dessin, je reconstruis les réacteurs et du coup, cela n’a plus beaucoup d’importance, mais quand même. Et je vous souhaite à tous de bonnes fêtes @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Hortax Posté(e) le 24 mars 2005 Posté(e) le 24 mars 2005 Patrick, tu es un dieu ! Ta routine me sauve la vie, merci. Il ne me reste plus qu'à comprendre comment ça marche et à essayer de la modifier pour que le texte soit du format "XX.XX M2", donc 2 chiffres après la virgule (toujours) et le suffixe M2. Je vais tenter cette plongée. Mais encore MERCI
Patrick_35 Posté(e) le 24 mars 2005 Posté(e) le 24 mars 2005 Etre un dieu est un peu excessif ;) Ca se passe ici (vla-put-textstring (vlr-data rea) (strcat (rtos (vla-get-area obj) 2 2) "M2"))au lieu de(vla-put-textstring (vlr-data rea) (rtos (vla-get-area obj))) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
valamar Posté(e) le 15 avril 2005 Posté(e) le 15 avril 2005 Salut,Je suis totalement novice en ce qui concerne VLisp... (désolé) J'ai fait un bête copier-coller dans acad2004.lsp (avec defun s::startup () ... et la routine de Patrick) mais hélas après avoir sélectionné l'entité de dessin, puis le texte j'ai une erreur du type erreur: type d'argument incorrect: VLReactor: nil Ou est l'erreur?
Patrick_35 Posté(e) le 19 avril 2005 Posté(e) le 19 avril 2005 Fait plutôt un copier-coller dans le bloc notes et tu sauvegardes par exemple en rea.lspEnsuite, avec _appload, tu charges le lisp et si l'erreur persiste, tu nous le dis (ps : avec _appload, il est possible de faire des chargements automatique) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
franççois Posté(e) le 22 décembre 2005 Posté(e) le 22 décembre 2005 bonjour a propos de cette lisp, y a t il un moyen pour que autocad laisse deux chiffre apres la virgule meme lorsque l'air est égale a un nombre rond. je m'explique je voudrais ecrire par exemple 7,00 M2 au lieu de 7 M2 ? merci.
(gile) Posté(e) le 22 décembre 2005 Posté(e) le 22 décembre 2005 Salut, La réponse est au dessus (réponse 14) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
franççois Posté(e) le 22 décembre 2005 Posté(e) le 22 décembre 2005 salut alors c'est qu'il y a qqch qui cloche chez moi car je l'avais déja remplacé mais ca ne marche pas, en faite si ca marche lorsqu'il y a des des chiffres apres la virgule mais pas quand ca tombe sur un nombre entier. c'est a dire pour 7,32 M2 c'est bon mais pas pour 7,00 M2 ou il n'écrit que 7 M2. merci de ta reponse.
lecrabe Posté(e) le 22 décembre 2005 Posté(e) le 22 décembre 2005 Bonjour Je suis NUL en programmation mais je sais que la variable DIMZIN a des effets "de bord" SUBTILs ... :) Elle influe notamment la conversion des réels en chaînes (RTOS, ANGTOS) Donc quelle est la valeur actuelle de ton DIMZIN ? Essayes avec ZERO ou avec HUIT :cool: Le Decapode "DIMZINant" Autodesk Expert Elite Team
franççois Posté(e) le 22 décembre 2005 Posté(e) le 22 décembre 2005 coool c'était ça le DIMZIN était a 8 alors je l'ai mis sur 0 et hop c'est parfait merci beaucoup. ce truc est génial. merci encore ca va me simplifier la vie.
brunomu Posté(e) le 13 mai 2006 Posté(e) le 13 mai 2006 Hem hem, Histoire d'en rajouter une couche... y a-t-il un moyen pour que la surface de la polyligne soit affichée en m2 quand on travaille en cm, autrement dit pour diviser le résultat par 10000 ? Merci !
Patrick_35 Posté(e) le 14 mai 2006 Posté(e) le 14 mai 2006 SalutIl suffit de remplacer(vla-put-textstring (vlr-data rea) (strcat (rtos (vla-get-area obj) 2 2) "M2"))par (vla-put-textstring (vlr-data rea) (strcat (rtos (/ (vla-get-area obj) 100) 2 2) "M2")) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant