Aller au contenu

bonuscad

Membres
  • Compteur de contenus

    5 029
  • Inscription

  • Dernière visite

  • Jours gagnés

    56

bonuscad a gagné pour la dernière fois le 24 janvier

bonuscad a eu le contenu le plus aimé !

3 abonnés

Contact Methods

  • AIM
    1
  • Website URL
    http://bonuscad.perso.sfr.fr/

Visiteurs récents du profil

7 694 visualisations du profil

bonuscad's Achievements

Collaborator

Collaborator (7/14)

  • Very Popular Rare
  • Reacting Well Rare
  • Conversation Starter Rare
  • First Post Rare
  • Collaborator Rare

Recent Badges

104

Réputation sur la communauté

  1. bonuscad

    Nom propriétaire Parcelle

    Bonjour, Ces données ne sont pas publique. Ceci pour éviter que n'importe qui puisse connaître le patrimoine d'une personne. Sans connaître les démarches a effectuer, il me semble qu'il faut obtenir une accréditation en justifiant pourquoi tu as besoin de ces données. Une fois obtenue tu auras alors un compte pour pouvoir accéder à celles-ci.
  2. Tout dépend du contexte, ce que tu ne décrit pas! Est-ce, par exemple de la voirie de lotissement ou des voies de circulation du domaine public. Pour des voies du domaine public, il y a des règles à respecter. Pour des voies à grande circulation on utilise des alignement droit, des courbes et très souvent (pour le confort de l'usager) des courbes à rayon progressif appelées clothoïde. Ces dernières permettent ainsi au conducteur d'avoir un mouvement graduel sur le volant et d'introduire une variation du dévers. Les paramètres dépendent de la vitesse de référence de la voie: autoroute, voie express, nationale, départementale, voie ferrée.... La force centripète avec le dévers peut éviter une sortie de route en cas de verglas notamment. On peut déroger à ces règles en milieu difficile, par exemple en zone de montagne. Le profil en long ou carrefour peut aussi influencer le choix de la courbe (question de visibilité) En tout cas les Splines ne font pas du tout partie de la constitution d'un axe en plan. Donc a minima alignement droit et courbe, dans ce cas la variation de dévers se fera de préférence dans l'alignement droit pour avoir un dévers unique dans la courbe (si la longueur de l'alignement droit le permet, autrement on peut mordre sur une partie de la courbe) Ça reste un métier, on ne l'invente pas. Trouve de la documentation si tu n'as aucune connaissance (ICTARN ICTAAL)
  3. Bonjour, Ça ne me rajeunie pas, cette routine date de longtemps (Autocad 2002) Depuis j'avais réécris complètement le code et proposé celui-ci sur CadXp. Malgré qu'il s’appelle Talus3D, celui peut produire aussi des talus avec des entités en 2D. Il n'y a plus de boite de dialogue (.dcl) ni de fichier de cliché (.slb). Voici le lien sur le site TALUS3D.lsp
  4. Bonjour, Un sujet similaire. Le code proposé dans ce lien peut être facilement adaptable selon tes besoins mais il faut en savoir un peu plus...
  5. Bonjour, Je t’ai répondu ICI. Je remet ici ma proposition en ayant amélioré le code: établissement du calque avec sa couleur et affectation de l'élévation avec les décimales arrondies aux polylignes (tant qu'à faire) https://www.cadtutor.net/forum/topic/92684-change-contour-line-layer-according-to-altitude/?do=findComment&comment=654523 (defun c:MAJCL ( / ss l c n dxf_ent elev nam_lay) (setq ss (ssget "_X" '((0 . "LWPOLYLINE") (8 . "Terrain - Cont. - Contours")))) (cond (ss (setq l '(0.5 1.0 2.0 5.0 10.0 25.0 50.0 100.0) c '(121 51 7 241 211 253 91 141) ) (repeat (setq n (sslength ss)) (setq dxf_ent (entget (ssname ss (setq n (1- n)))) elev (read (rtos (cdr (assoc 38 dxf_ent)) 2 1)) ) (mapcar '(lambda (x) (if (and (zerop (rem elev (car x))) (null (assoc 62 dxf_ent))) (progn (setq nam_lay (strcat "_NB-MajorLine_" (if (eq (car x) (fix (car x))) (rtos (car x) 2 0) (rtos (car x) 2 1)))) (if (not (tblsearch "LAYER" nam_lay)) (entmake (list (cons 0 "LAYER") (cons 100 "AcDbSymbolTableRecord") (cons 100 "AcDbLayerTableRecord") (cons 2 nam_lay) (cons 70 0) (cons 62 (cdr x)) (cons 370 -3) (cons 6 "Continuous") ) ) ) (setq dxf_ent (subst (cons 8 nam_lay) (assoc 8 dxf_ent) dxf_ent ) dxf_ent (subst (cons 38 elev) (assoc 38 dxf_ent) dxf_ent ) ) (entmod dxf_ent) ) ) ) (mapcar 'cons l c) ) ) ) ) )
  6. Excusez, mais je veux réagir brièvement à ce ce sujet. l'I.A. est pour moi du même acabit que les calculateur automobile. Merci le mécano de mes deux, c'est la pompe de gavage et c'est pas le même prix! (vécu) Je vous laisse réfléchir aux diagnostiques de ces "intelligences" et celui du pseudo mécanicien aussi. Bien à vous.
  7. Quand (gile) m'a fait remarqué que je devais enlever le caractère /, je me suis dit qu'il serait bien de le conserver pour lire dans le système impérial et fractionnaire. Mais malheureusement je me suis heurté à la lecture du caractère du pouce (") qui m'a posé problème: le lisp utilisant ce caractère pour encadrer une chaîne... Du coup j'ai laissé tomber rapidement !... @VDH-Bruno Bonne fête à toi aussi 😁
  8. Pour info il y a une discussion similaire sur le forum Autodesk et l'utilisateur à soulevé un problème, que je pense avoir résolu. Je l'adapte à ma proposition faite ici, essaye cette version... (defun c:test ( / ss dfzz count n progress i ent dxf_ent pt_ins ss_pl tmp j ent_pl pt prm a_ref deriv alpha n_ent dxf_next) (setq ss (ssget '((0 . "INSERT") (2 . "TCPOINT")))) (cond (ss (if (zerop (getvar "USERR1")) (setvar "USERR1" 1E-02) (getvar "USERR1")) (initget 4) (if (not (setq dfzz (getdist (strcat "\nRayon de recherche? <" (rtos (getvar "USERR1") 2 2) "> : ")))) (setq dfzz (getvar "USERR1")) (setvar "USERR1" dfzz) ) (setq count 0 progress (setq n (sslength ss)) i 0 ) (acet-ui-progress-init "Progression:" progress) (repeat n (setq ent (ssname ss (setq n (1- n))) dxf_ent (entget ent) pt_ins (cdr (assoc 10 dxf_ent)) ss_pl (ssget "_C" (trans (mapcar '- pt_ins (list dfzz dfzz 0.0)) 0 1) (trans (mapcar '+ pt_ins (list dfzz dfzz 0.0)) 0 1) '((0 . "LWPOLYLINE"))) ) (cond ((and ss_pl (> (sslength ss_pl) 1)) (setq tmp (ssadd) l_d nil) (repeat (setq j (sslength ss_pl)) (setq ent_pl (ssname ss_pl (setq j (1- j))) l_d (cons (cons (distance pt_ins (vlax-curve-getClosestPointToProjection ent_pl pt_ins '(0 0 1) nil)) ent_pl ) l_d ) ) ) (ssadd (cdr (assoc (apply 'min (mapcar 'car l_d)) l_d)) tmp) (setq ss_pl tmp) ) ) (acet-ui-progress-safe (setq i (1+ i))) (cond ((and ss_pl (eq (sslength ss_pl) 1)) (setq ent_pl (ssname ss_pl 0) pt (vlax-curve-getClosestPointToProjection ent_pl pt_ins '(0 0 1) nil) prm (vlax-curve-getParamAtPoint ent_pl pt) a_ref (atan (/ (cadr (getvar "ucsxdir")) (car (getvar "ucsxdir")))) deriv (vlax-curve-getfirstderiv ent_pl prm) alpha (if deriv (atan (cadr deriv) (car deriv)) 0.0) alpha (rem (+ (* 2 pi) alpha) (* 2 pi)) alpha (if (and (> (- alpha a_ref) (* 0.5 pi)) (<= (- alpha a_ref) (* pi 1.5))) (+ pi alpha) alpha ) n_ent ent ) (while (/= (cdr (assoc 0 (setq dxf_next (entget (entnext n_ent))))) "SEQEND") (if (eq (cdr (assoc 2 dxf_next)) "ALT") (progn (entmod (subst (cons 50 alpha) (assoc 50 dxf_next) dxf_next ) ) (setq count (1+ count)) ) ) (setq n_ent (cdar dxf_next)) ) ) ) ) (acet-ui-progress) ) ) (princ (strcat "\n" (itoa count) " Blocs TCPOINT ont leur attribut ALT pivoté sur " (itoa (sslength ss)) " sélectionnés.")) (prin1) )
  9. @Kilian336 Effectivement il manquait quelques caractères en fin de code, j'ai rectifié le code dans le post concerné, recharge ce code. Désolé de ce mauvais copié-collé...
  10. @(gile) Exact! J'ai modifié le post initial pour inclure cette robustesse (ligne 6) @didier Je pense que c'est (eval) et (read) qui te perturbe. (read) avec l'exemple va me retourner: (SETQ RSLT (LIST 25.4 12.7 -42)) pour valider la variable RSLT il faut évaluer l'expression, ce à quoi sert la fonction (eval): si rslt n'était pas déclaré en variable locale, !rslt en ligne de commande te renverrai sa valeur. On peut aussi faire cela avec une expression lisp écrite dans un fichier texte avec (read-line) C'est aussi à travers ce procédé que l'on pourrait rendre le lisp "intelligent" (notez les guillemets) pour qu'il écrive sont propre code en construisant ses propres variables selon certaines conditions.
  11. En effet, Ma participation, mais je m'attend à une fonction récursive de ta part. (defun extraireNombres (str / l rslt) (setq l (mapcar '(lambda (x) (if (and (> x 44) (< x 58) (/= x 47)) x 32) ) (vl-string->list str) ) l (mapcar '(lambda (x y) (if (not (= x y 32)) x) ) l (append (cdr l) '(32)) ) l (vl-remove-if-not '(lambda (x) (eq (type x) 'INT) x) l) l (mapcar '(lambda (x) (if (not (eq x 32)) x (list nil))) l) ) (eval (read (strcat "(setq rslt (list " (apply 'strcat (mapcar '(lambda (x) (if (not (listp x)) (chr x) " ")) l)) "))"))) ) (extraireNombres "Longueur = 25.4mm Largeur = 12.7mm Quantité = -42")
  12. Ma proposition! Cela doit tourner les attributs en fonction de la polyligne, en conservant la lecture suivant le scu courant. Tu peux sélectionner l'ensemble des blocs TCPOINT, mais comme le traitement peut être un peu long, j'ai mis une barre de progression. (defun c:test ( / ss dfzz count n progress i ent dxf_ent pt_ins ss_pl ent_pl pt prm a_ref deriv alpha n_ent dxf_next) (setq ss (ssget '((0 . "INSERT") (2 . "TCPOINT")))) (cond (ss (if (not dfzz) (setvar "USERR1" 1E-02)) (initget 4) (if (not (setq dfzz (getdist (strcat "\nRayon de recherche? <" (rtos (getvar "USERR1") 2 2) "> : ")))) (setq dfzz (getvar "USERR1")) (setvar "USERR1" dfzz) ) (setq count 0 progress (setq n (sslength ss)) i 0 ) (acet-ui-progress-init "Progression:" progress) (repeat n (setq ent (ssname ss (setq n (1- n))) dxf_ent (entget ent) pt_ins (cdr (assoc 10 dxf_ent)) ss_pl (ssget "_C" (trans (mapcar '- pt_ins (list dfzz dfzz 0.0)) 0 1) (trans (mapcar '+ pt_ins (list dfzz dfzz 0.0)) 0 1) '((0 . "LWPOLYLINE"))) ) (acet-ui-progress-safe (setq i (1+ i))) (cond ((and ss_pl (eq (sslength ss_pl) 1)) (setq ent_pl (ssname ss_pl 0) pt (vlax-curve-getClosestPointToProjection ent_pl pt_ins '(0 0 1) nil) prm (vlax-curve-getParamAtPoint ent_pl pt) a_ref (atan (/ (cadr (getvar "ucsxdir")) (car (getvar "ucsxdir")))) deriv (vlax-curve-getfirstderiv ent_pl prm) alpha (atan (cadr deriv) (car deriv)) alpha (rem (+ (* 2 pi) alpha) (* 2 pi)) alpha (if (and (> (- alpha a_ref) (* 0.5 pi)) (<= (- alpha a_ref) (* pi 1.5))) (+ pi alpha) alpha ) n_ent ent ) (while (/= (cdr (assoc 0 (setq dxf_next (entget (entnext n_ent))))) "SEQEND") (if (eq (cdr (assoc 2 dxf_next)) "ALT") (progn (entmod (subst (cons 50 alpha) (assoc 50 dxf_next) dxf_next ) ) (setq count (1+ count)) ) ) (setq n_ent (cdar dxf_next)) ) ) ) ) (acet-ui-progress) ) ) (princ (strcat "\n" (itoa count) " Blocs TCPOINT ont leur attribut ALT pivoté sur " (itoa (sslength ss)) "sélectionnés.")) (prin1) )
  13. @didier Rassure toi, j''ai tâtonné avant de trouver cette solution, j'ai essayé d'abord avec l'activeX mais choux blanc: pas de propriété de rotation (dump renvoie une erreur) En observant le comportement des code DXF 10 et 15 lors de rotation j'en ai déduit que je pourrais peut âtre obtenir l'angle. Cela concerne donc bien le bloc, d'ailleurs mon code ne fonctionne pas avec un style de multileader par défaut. La méthode est empirique, mais bon cela répond au besoin ponctuel...
  14. Avec ceci? ((lambda ( / ss ent dxf_ent) (while (not (setq ss (ssget "_+.:E:S" '((0 . "MULTILEADER")))))) (redraw (setq ent (ssname ss 0)) 3) (setq dxf_ent (entget ent)) (print (angtos (angle (cdr (assoc 10 dxf_ent)) (cdr (assoc 15 dxf_ent))) (getvar "AUNITS") 4)) (redraw ent 4) (prin1) ))
  15. @didier Je suis d'accord avec toi que c'est pénible à lire. Mais si je fais comme cela, et que cela permet à ceux qui ne ne sont pas inscrits d'avoir accès au code. Mon but étant le partage, et que n'importe qui peut s'approprier le code et s'en inspirer pour l'améliorer pour répondre à son besoin. Je considère que je ne suis pas un gourou et que je peut faire des erreurs et que des personne puisse les corriger. Merci de m'excuser!
×
×
  • 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é