lili2006 Posté(e) le 15 janvier 2011 Posté(e) le 15 janvier 2011 Bonsoir à toutes et tous, Est-il "facilement" envisageable d'avoir également l'option de dessiner les arcs de raccordements et tangentescomme ceci ? http://img.ahst.fr/data/images/artbd1.jpg (Actuellement, quand j'ai besoin, je redessine par dessus, mais la précision ne me semble guère au rendez-vous,...). De plus, je serai intéressé pour avoir les résultats en gon (grades), Sur ce ]fichier (et sur d'autres tests, il semble que l'angle au sommet soit toujours fx, j'ai pourtant bien repris la dernière version,..), quelqu'un pourrait confirmer SVP ? Je n'avais jamais remarqué au préalable,...:o Merci d'avance, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
bonuscad Posté(e) le 17 janvier 2011 Posté(e) le 17 janvier 2011 il semble que l'angle au sommet soit toujours faux Effectivement suivant l'état de ANGDIR et ANGBASE on obtient pas forcément l'angle intérieur des tangentes (mais l'angle n'est pas vraiment faux, c'est une valeur complémentaire) Donc en tenant compte de ta remarque et de tes désirs, une version dédiée ;) (vl-load-com) (defun c:ARTDB ( / js n AcDoc Space ename obj pr nb typ_obj oldim oldlay a_base a_dir pt_start pt_end pt_cen rad alpha pt_vtx dist_start dist_end seg_len seg_bulge) (defun grdraw-id_arc ( / oldcolor) (setq oldcolor (getvar "CECOLOR")) (setvar "CECOLOR" "3") (command "_.line" "_none" (trans pt_start 0 1) "_none" (trans pt_vtx 0 1) "") (command "_.line" "_none" (trans pt_vtx 0 1) "_none" (trans pt_end 0 1) "") (setvar "CECOLOR" "5") (command "_.line" "_none" (trans pt_start 0 1) "_none" (trans pt_cen 0 1) "") (command "_.line" "_none" (trans pt_cen 0 1) "_none" (trans pt_end 0 1) "") (setvar "CECOLOR" "2") (command "_.line" "_none" (trans (polar pt_cen (angle pt_cen pt_vtx) (abs rad)) 0 1) "_none" (trans pt_vtx 0 1) "") (setvar "CECOLOR" oldcolor) ) (defun add_mt_arc ( / ins_txt h_t) (initget 9) (setq ins_txt (getpoint (trans pt_cen 0 1) "\nPoint d'insertion des informations de l'arc?: ")) (initget 6) (setq h_t (getdist ins_txt (strcat "\nTaille du texte <" (rtos (getvar "textsize")) ">: "))) (if (null h_t) (setq h_t (getvar "textsize")) (setvar "textsize" h_t)) (vla-addMtext Space (vlax-3d-point (trans ins_txt 1 0)) 0.0 (strcat "{\\fArial Narrow|b0|i0|c0|p34;" "A = " (angtos (- pi (* 2 alpha)) (getvar "LUNITS") 4) "\\PR = " (rtos rad 2 3) "\\PT = " (rtos (distance pt_start pt_vtx) 2 3) "\\PD = " (rtos seg_len 2 3) "\\PB = " (rtos (- (distance pt_cen pt_vtx) (abs rad)) 2 3) "}" ) ) (entmod (append (vl-remove-if (function (lambda (x) (or (member (car x) '(90 63 421 45)) (< 419 (car x) 440) ) ) ) (entget (entlast)) ) (list '(90 . 1) '(63 . 41) '(421 . 16770196) '(45 . 1.5) ) ) ) (entupd (entlast)) ) (princ "\nSélectionner des Arcs/PolyArcs .") (setq js (ssget '((-4 . " (-4 . " (0 . "POLYLINE") (-4 . " (-4 . "&") (70 . 126) (-4 . "NOT>") (-4 . "AND>") (0 . "LWPOLYLINE,ARC") (-4 . "OR>")) ) n -1 ) (cond (js (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) nb 0 ) (cond ((null (tblsearch "LAYER" "Info ARTDB des Arcs")) (vlax-put (vla-add (vla-get-layers AcDoc) "Info ARTDB des Arcs") 'Color "5") ) ) (setq oldim (getvar "dimzin") oldlay (getvar "clayer") a_base (getvar "ANGBASE") a_dir (getvar "ANGDIR") ) (setvar "dimzin" 0) (setvar "clayer" "Info ARTDB des Arcs") (setvar "ANGBASE" 0) (setvar "ANGDIR" 0) (repeat (sslength js) (setq ename (ssname js (setq n (1+ n))) obj (vlax-ename->vla-object ename) pr -1 nb 0 ) (setq typ_obj (vla-get-ObjectName obj)) (if (eq typ_obj "AcDbArc") (progn (setq pt_start (vlax-get obj 'StartPoint) pt_end (vlax-get obj 'EndPoint) pt_cen (vlax-get obj 'Center) rad (vlax-get obj 'Radius) alpha (* (vlax-get obj 'TotalAngle) 0.5) seg_len (vlax-get obj 'ArcLength) pt_vtx (polar pt_cen (+ (vlax-get obj 'StartAngle) alpha) (+ rad (* rad (1- (/ 1 (cos alpha)))))) nb (1+ nb) ) (grdraw-id_arc) (add_mt_arc) ) (repeat (fix (vlax-curve-getEndParam obj)) (setq dist_start (vlax-curve-GetDistAtParam obj (setq pr (1+ pr))) dist_end (vlax-curve-GetDistAtParam obj (1+ pr)) pt_start (vlax-curve-GetPointAtParam obj pr) pt_end (vlax-curve-GetPointAtParam obj (1+ pr)) seg_len (- dist_end dist_start) seg_bulge (vla-GetBulge obj pr) ) (if (not (zerop seg_bulge)) (progn (setq rad (/ seg_len (* 4.0 (atan seg_bulge))) alpha (+ (angle pt_start pt_end) (- (* pi 0.5) (* 2.0 (atan seg_bulge)))) pt_cen (polar pt_start alpha rad) pt_vtx (polar pt_start (- alpha (* pi 0.5)) (* rad (/ (sin (* 2.0 (atan seg_bulge))) (cos (* 2.0 (atan seg_bulge)))))) alpha (if (< (* 2.0 (atan seg_bulge)) 0) (- pi (* 2.0 (atan seg_bulge))) (* 2.0 (atan seg_bulge))) nb (1+ nb) ) (grdraw-id_arc) (add_mt_arc) ) ) ) ) ) (setvar "dimzin" oldim) (setvar "clayer" oldlay) (setvar "ANGBASE" a_base) (setvar "ANGDIR" a_dir) ) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lili2006 Posté(e) le 17 janvier 2011 Posté(e) le 17 janvier 2011 Bonjour à toutes et tous, Un grand merci bonuscad, :P (mais l'angle n'est pas vraiment faux, c'est une valeur complémentaire) J'avoue ne pas avoir fait attention sur la version précédente,.. Encore merci, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
pierrevigneux Posté(e) le 17 janvier 2011 Posté(e) le 17 janvier 2011 Bonjour et merci bonuscad, Pour ma part j'ai gardé l'angle enDMS et y ai ajouté la valeur de la corde. "\\PCorde = "(rtos ( distance pt_start pt_end) 2 3) Acadnadien
lili2006 Posté(e) le 17 janvier 2011 Posté(e) le 17 janvier 2011 Re, ARTDBC, alors ? Nouvelle norme des éléments à inscrire sur les schémas d'implantation,... ;) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
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