Dinosor Posté(e) le 18 juin 2010 Posté(e) le 18 juin 2010 Hello à tous, Je recherche un mode d'accrochage sur centre de gravité de formes 2D, genre centre de rectangles carrés, ou autres polygones... Merci. Seuls nous allons vite, ensemble nous allons plus loin... CPU Intel 3,5Go / Nvidia RTX-3090 AutoCad (Architecture) 2022 - Lumion PRO BMW R-1200-RT, c'est moche, oui... je sais... www.neda.ch
FormaBois Posté(e) le 18 juin 2010 Posté(e) le 18 juin 2010 Salut,avec REPEROBJ non ?!ou aussi commande : NETTOYER Option Polyligne > Effacer > NonEnsuite on a l'accrochage CentreMerci à Éric pour cette astuce ;) [Edité le 19/6/2010 par FormaBois] Studio Gfilm - Agence de communication par l'image "Le matin tu peux rester couché pour poursuivre ton rêve, ou te lever pour le réaliser"
Dinosor Posté(e) le 18 juin 2010 Auteur Posté(e) le 18 juin 2010 Merci FormaBois, Effectivement, mais je cherche une option plus rapide du genre que le curseur se mette directement sur le centre de gravité de n'importe quelle forme, sans devoir passer par des repères ou lancer une quelconque fonction... C'est beaucoup demandé, mais si cela devait exister !Si je veux tracer une ligne depuis ce fameux centre de gravité, j'aimerais que l'indication apparaîsse comme pour les accrochages standards (milieu, extrémité, nodal, etc.) On peut toujours rêver non ? :P Seuls nous allons vite, ensemble nous allons plus loin... CPU Intel 3,5Go / Nvidia RTX-3090 AutoCad (Architecture) 2022 - Lumion PRO BMW R-1200-RT, c'est moche, oui... je sais... www.neda.ch
lecrabe Posté(e) le 18 juin 2010 Posté(e) le 18 juin 2010 Hello Donc il te faut une routine VLisp qui dessine par exemple un point ou un cercle depuis toutes les polylignes closes / regions / MPolygons selectionnes ! Et apres avec un accrochage NODAL ou CENTRE, ca roule tout seul !! Eventuellement, tu effaces apres les points ou cercles ... Le Decapode - Generateur de devs :) Autodesk Expert Elite Team
lecrabe Posté(e) le 18 juin 2010 Posté(e) le 18 juin 2010 Hello Par exemple cette excellente routine de notre indispensable Gilles ... Encore Merci Gilles, Le Decapode ;; Par GC sur The Swamp ;; http://www.theswamp.org/index.php?topic=18725.0 (defun vl-pline-centroid (pl / AcDoc Space obj reg cen) (vl-load-com) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (or (= (type pl) 'VLA-OBJECT) (setq obj (vlax-ename->vla-object pl)) ) (setq reg (vlax-invoke Space 'addRegion (list obj)) cen (vlax-get (car reg) 'Centroid) ) (vla-delete (car reg)) (trans cen 1 (vlax-get obj 'Normal)) ) ;; ALGEB-AREA ;; Returns tha algebraic area of the triangle defined by 3 2d points ;; the area is negative if points are clockwise (defun algeb-area (p1 p2 p3) (/ (- (* (- (car p2) (car p1)) (- (cadr p3) (cadr p1)) ) (* (- (car p3) (car p1)) (- (cadr p2) (cadr p1)) ) ) 2.0 ) ) ;; TRIANGLE-CENTROID ;; Returns the centroid of a triangle defined by 3 points (defun triangle-centroid (p1 p2 p3) (mapcar '(lambda (x1 x2 x3) (/ (+ x1 x2 x3) 3.0) ) p1 p2 p3 ) ) ;; POLYARC-CENTROID ;; Returns a list which first item is the centroid of a 'polyarc' ;; and the second its algeraic area ;; ;; Arguments ;; bu : polyarc bulge ;; p1 : start point ;; p2 : end point (defun polyarc-centroid (bu p1 p2 / ang rad cen area dist cg) (setq ang (* 2 (atan bu)) rad (/ (distance p1 p2) (* 2 (sin ang)) ) cen (polar p1 (+ (angle p1 p2) (- (/ pi 2) ang)) rad ) area (/ (* rad rad (- (* 2 ang) (sin (* 2 ang)))) 2.0) dist (/ (expt (distance p1 p2) 3) (* 12 area)) cg (polar cen (- (angle p1 p2) (/ pi 2)) dist ) ) (list cg area) ) ;; PLINE-CENTROID ;; Returns the WCS coordinates of a lwpolyline centroid ;; ;; Argument ;; pl : the lwpolyline ename (defun pline-centroid (pl / elst lst tot cen p0 area cen) (setq elst (entget pl)) (while (setq elst (member (assoc 10 elst) elst)) (setq lst (cons (cons (cdar elst) (cdr (assoc 42 elst))) lst) elst (cdr elst) ) ) (setq lst (reverse lst) tot 0.0 cen '(0.0 0.0) p0 (caar lst) ) (if (/= 0 (cdar lst)) (setq p-c (polyarc-centroid (cdar lst) p0 (caadr lst)) cen (mapcar '(lambda (x) (* x (cadr p-c))) (car p-c)) tot (cadr p-c) ) ) (setq lst (cdr lst)) (if (equal (car (last lst)) p0 1e-9) (setq lst (reverse (cdr (reverse lst)))) ) (while (cadr lst) (setq area (algeb-area p0 (caar lst) (caadr lst)) cen (mapcar '(lambda (x1 x2) (+ x1 (* x2 area))) cen (triangle-centroid p0 (caar lst) (caadr lst)) ) tot (+ area tot) ) (if (/= 0 (cdar lst)) (setq p-c (polyarc-centroid (cdar lst) (caar lst) (caadr lst)) cen (mapcar '(lambda (x1 x2) (+ x1 (* x2 (cadr p-c)))) cen (car p-c) ) tot (+ tot (cadr p-c)) ) ) (setq lst (cdr lst)) ) (if (/= 0 (cdar lst)) (setq p-c (polyarc-centroid (cdar lst) (caar lst) p0) cen (mapcar '(lambda (x1 x2) (+ x1 (* x2 (cadr p-c)))) cen (car p-c) ) tot (+ tot (cadr p-c)) ) ) (trans (list (/ (car cen) tot) (/ (cadr cen) tot) (cdr (assoc 38 (entget pl))) ) pl 0 ) ) ;; ;; You can load all the routines in the second code window of the first message ;; (ALGEB-AREA, TRIANGLE-CENTROID, POLYARC-CENTROID, and PLINE-CENTROID). ;; ;; The pline-centroid returns polyline centroid WCS coordinates (whatever its construction plane). ;; The polyline ename is the requested argument, so you can use it like this (none error trapping neither control on entity type) : ;; ;; Code: (pline-centroid (car (entsel))) ;; Or use the PT-CEN command which create a point on the selected pline centroid : ;; ;; To test the routine : PT-CEN ;; Creates a point on the selected pline centroid ;; (defun c:pt-cen (/ ent elst elv) (and (setq ent (car (entsel))) (setq elst (entget ent)) (setq elv (cdr (assoc 38 elst))) (= "LWPOLYLINE" (cdr (assoc 0 elst))) (entmake (list '(0 . "POINT") (cons 10 (pline-centroid ent))) ) ) (princ) ) Autodesk Expert Elite Team
(gile) Posté(e) le 19 juin 2010 Posté(e) le 19 juin 2010 Salut, Regarde ici Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 19 juin 2010 Posté(e) le 19 juin 2010 Hello Gilles Magnifique, j'avais completement oublie ce fabuleux Post ! :) N'ayant pas de MAP (ou CIVIL) sous la main, est ce que le nouvel accrochage CTR fonctionne sur les MPolygons ? Mille mercis, Le Decapode Autodesk Expert Elite Team
(gile) Posté(e) le 19 juin 2010 Posté(e) le 19 juin 2010 Salut, Pour l'instant, ça ne fonctionne que pour les polylignes optimisées, polylignes 2d, arcs et solides 3d. Il devrait y avoir d'ici quelques temps une nouvelle version (payante) sous forme de palette. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Dinosor Posté(e) le 21 juin 2010 Auteur Posté(e) le 21 juin 2010 Merci à vous deux pour vos informations, vous êtes super, je vais tester cela de suite ! :) Seuls nous allons vite, ensemble nous allons plus loin... CPU Intel 3,5Go / Nvidia RTX-3090 AutoCad (Architecture) 2022 - Lumion PRO BMW R-1200-RT, c'est moche, oui... je sais... www.neda.ch
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