dilack Posté(e) le 12 juillet 2008 Posté(e) le 12 juillet 2008 Bonjours à tous,Suite à des recherhe infructueuses sur le site, je vous pose ma demande.Je recherche un lips que me permet de resortir une pente entre deux blocs.les blocs sont définis en 2d et ont 2 attributs (mat et alt).le but est donc de calculer la pente entre les deux bloc suivant leurs attribut alt et inserer un autre bloc ou texte dans le sens de la pente merci d'avance pour vous réponse
(gile) Posté(e) le 13 juillet 2008 Posté(e) le 13 juillet 2008 Salut, Un petit truc vite fait (pas de contrôle sur les objets sélectionnés).Le texte est créé suivant les paramètres courants.La pente est indiquée du point le plus haut vers le plus bas (defun c:pente (/ b1 b2 p1 p2 l1 l2 a1 a2 an pe tx) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) ) (setq sp (vla-get-ModelSpace *acdoc*)) (and (setq b1 (car (entsel))) (setq b1 (vlax-ename->vla-object b1)) (= (vla-get-ObjectName b1) "AcDbBlockReference") (setq p1 (vlax-get b1 'InsertionPoint)) (setq l1 (vlax-invoke b1 'GetAttributes)) (foreach a l1 (if (= (vla-get-TagString a) "ALT") (setq a1 (vla-get-TextString a)) T ) ) (setq b2 (car (entsel))) (setq b2 (vlax-ename->vla-object b2)) (= (vla-get-ObjectName b2) "AcDbBlockReference") (setq p2 (vlax-get b2 'InsertionPoint)) (setq l2 (vlax-invoke b2 'GetAttributes)) (foreach a l2 (if (= (vla-get-TagString a) "ALT") (setq a2 (vla-get-TextString a)) T ) ) (setq an (if ( (angle p1 p2) (angle p2 p1) ) ) (setq pe (rtos (* (/ (abs (- (atof a1) (atof a2))) (distance p1 p2)) 100))) (progn (setq tx (vla-addText sp (if (minusp (cos an)) (strcat " (strcat "-- " pe "% -->") ) (vlax-3d-point '(0 0 0)) (getvar 'textsize) ) ) (vla-put-Alignment tx acAlignmentMiddleCenter) (vla-put-TextAlignmentPoint tx (vlax-3d-point (mapcar '(lambda (x1 x2) (/ (+ x1 x2) 2.0)) p1 p2) ) ) (vla-put-Rotation tx (if (minusp (cos an)) (+ pi an) an ) ) ) ) (princ) ) [Edité le 13/7/2008 par (gile)] [Edité le 13/7/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
dilack Posté(e) le 13 juillet 2008 Auteur Posté(e) le 13 juillet 2008 merci gille ça marche nickel, une petite erreur néanmoins une petite erreur la pente n'est pas en porcentage mais en valeur réelle avec le %.j'ai essayé de comprendre ton lisp pour corrigé mais je n'y arrive pas insérer la multiplication.bon fin de week end
(gile) Posté(e) le 13 juillet 2008 Posté(e) le 13 juillet 2008 une petite erreur néanmoins une petite erreur la pente n'est pas en porcentage mais en valeur réelle Il me semble bien, mais je ne suis pas de la partie, qu'une pente s'exprime en pourcentage. Pour un différence d'altitude, on parle plutôt de dénivelé (ou dénivelée). Si j'ai bien compris, tu peux remplacer la ligne : (rtos (/ (abs (- (atof a1) (atof a2))) (distance p1 p2))) par (rtos (abs (- (atof a1) (atof a2)))) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 13 juillet 2008 Posté(e) le 13 juillet 2008 Salut à vous, Je pense que dilack veut en pourcentage.En topo dans les profils en long/travers ou pente d'ouvrage hydraulique les pentes sont exprimé en % par exemple 8.5% veut dire que l'on descend de 8.50m pour 100m (soit 85cm pour 10m, ou encore 8.5cm pour 1m)en conservant le signe de la pente, cela donnerait ceci: (rtos (* (/ (- (atof a1) (atof a2)) (distance p1 p2)) 100.0)) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
dilack Posté(e) le 13 juillet 2008 Auteur Posté(e) le 13 juillet 2008 re gille,je me suis mal exprimé tout à l'heure désole.quand tu prend une pente de 1% sur 10m tu descend de 10cmhors le lisp m'indique une pente de de 0.1% (suivant ta mofif) entre 2 pts distant de 10 m et avec une denivele de 0.10 cm alors qui'il aurait fallu qui m'indique une pente de 1%
dilack Posté(e) le 13 juillet 2008 Auteur Posté(e) le 13 juillet 2008 bonuscad yu à répondu en meme temps que ma réponse en lui apportant la solution.Je vous remercie tous les deux en vous souhaitant un bon wd.
(gile) Posté(e) le 13 juillet 2008 Posté(e) le 13 juillet 2008 Au temps pour moi, j'avais oublié de multiplier le ratio par 100 :calim: Je corrige le code. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
dilack Posté(e) le 13 juillet 2008 Auteur Posté(e) le 13 juillet 2008 re je reviens à la charge :exclam: aurait il un moyen d'harmoniser le lisp pour evité cette presentation http:// http://dl.free.fr/dOqsmTG5b/clip_image002.jpget orienté les texte corectement.merci d'avance désolé je ne sais pas insérer une image sur les sujet
(gile) Posté(e) le 13 juillet 2008 Posté(e) le 13 juillet 2008 J'ai modifié le code, ça semble fonctionner. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
dilack Posté(e) le 13 juillet 2008 Auteur Posté(e) le 13 juillet 2008 super nickel le resultat est parfait.gros merci gille et bonuscad
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