
Olivier Eckmann
Membres-
Compteur de contenus
2 348 -
Inscription
-
Dernière visite
-
Jours gagnés
118
Tout ce qui a été posté par Olivier Eckmann
-
Poly 3d vers poly 2D pour création solide
Olivier Eckmann a répondu à un(e) sujet de Didj05 dans Covadis
Ca ne coutera que 2 kgs de carotte pour mon cheval 😉 -
Poly 3d vers poly 2D pour création solide
Olivier Eckmann a répondu à un(e) sujet de Didj05 dans Covadis
Remplace (setq sLayerP3D "Ptrav_ENROCHEMENTS SECS_3D") par (setq sLayerP3D "*") -
Demande de renseignement pour les ".syl" - CODIFICATION
Olivier Eckmann a répondu à un(e) sujet de Adri dans Covadis
Bonjour, Pour la position gauche/droit/centrée, c'est dans le paramétrage du DMU. Selon le paramétrage, une largeur positive ou négative dessinera d'un côté ou de l'autre. Pour les blocs à intervalle régulier et de taille variable pour s'adapter à un paramètre, ça n'existe pas. Par contre une fois le DMU décomposé, on peut transformer les lignes en polyligne : isoler le calque, puis PEDIT MULTIPLE et sélectionner toutes les lignes, ou MAPCLEAN si vous avez AutoCAD Map 3D. S'il faut des blocs, ça passera forcément par de la programmation. -
Stabilisation de l'ordre des outils dans une palette .atc partagée
Olivier Eckmann a répondu à un(e) sujet de Fraid dans AutoCAD 2020-2024
De quel sujet parles-tu? Tu as ouvert cette discussion avec ta réponse en python sans poser de questions. Il y a cette astuce également que je ne connaissais pas https://www.autodesk.com/fr/support/technical/article/caas/sfdcarticles/sfdcarticles/FRA/Reset-tools-order-for-tool-palette-in-AutoCAD.html mais qui nécessite l'intervention de l'utilisateur. Ce problème n'est pas nouveau et date depuis que les palettes existent : https://www.cadtutor.net/forum/topic/47128-tool-palette-issue/ Il me semble que l'on a déjà parlé sur CadXP, mais je ne retrouve pas la discussion. -
Stabilisation de l'ordre des outils dans une palette .atc partagée
Olivier Eckmann a répondu à un(e) sujet de Fraid dans AutoCAD 2020-2024
Au 1er chargement d'un ATC dans AutoCAD, l'ordre est celui dans la palette original. Puis AutoCAD crée un fichier spécifique qui contient l'ID de chaque bouton pour conserver localement l'ordre que l'on souhaite au cas où on déplace des boutons. Si on met à jour l'ATC, c'est ordre est conservé par défaut et donc si on réorganise l'ATC ce nouvel ordre n'est pas conservé. C'est pourquoi lorsque l'on réordonne ou bien que l'on ajoute des boutons, il suffit de faire un Ctrl+A, Ctrl+C, puis Suppr, Ctrl+V. Ainsi chaque nouvelle commande possède un nouvel ID, et donc lorsque l'on repartage son ATC, la personnalisation locale ne retrouvant pas ses ID, AutoCAD supprime cette personnalisation et en recrée une nouvelle en respectant l'ordre initial de l'ATC. Cela plus de 12 ans que je partage un vingtaines de palettes ATC sur 45 PC, qui sont mises à jour tous les matins à l'ouverture de session depuis mon serveur, et ça a toujours fonctionné. Chaque nouvelle palette est reconstruite comme cela et chaque PC reçoit la nouvelle version de la palette avec l'ordre que j'ai décidé. Olivier -
Stabilisation de l'ordre des outils dans une palette .atc partagée
Olivier Eckmann a répondu à un(e) sujet de Fraid dans AutoCAD 2020-2024
Pas tout compris, c'est quoi le problème initial? Qu'est ce que ça veut dire : stabiliser une palette? Olivier -
Poly 3d vers poly 2D pour création solide
Olivier Eckmann a répondu à un(e) sujet de Didj05 dans Covadis
Bonjour @Didj05, Voilà un code qui devrait faire l'affaire en récupérant à droite et à gauche des codes dont je me suis inspiré ; inspiré du code de DIDIER disponible : https://www.da-code.fr/polyligne-3d/ (defun lsVtxPoly3D (oPoly / n oPolyDxf lsPts) (if (= (cdr (assoc 0 (setq oPolyDxf (entget oPoly)))) "POLYLINE") (progn (setq oPoly (entnext oPoly)) (while (/= (cdr (assoc 0 (setq oPolyDxf (entget oPoly)))) "SEQEND") (setq lsPts (append lsPts (list (cdr (assoc 10 oPolyDxf))))) (setq oPoly (entnext oPoly)) ); fin du WHILE );progn (alert "le choix n'est pas une POLY 3D") );if poly3d lsPts ); fin de DEFUN ; inspiré du code de LeeMac : https://www.cadtutor.net/forum/topic/18257-entmake-functions/ (defun MakeLWPoly (lst cls dElev vDir / p) (entmakex (append (list (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 100 "AcDbPolyline") (cons 90 (length lst)) (cons 70 cls) (cons 38 dElev) ) (mapcar (function (lambda (p) (cons 10 p))) lst) (list (cons 210 vDir)) ) ) ) ; Transforme un point 3D en point à Z=0 (defun Point2D (PT) (list (car PT) (cadr PT) 0.) ) ; reconstruit des polylignes 2D dans un plan vertical à partir de polyligne 3D supposée être dans ce plan vertical (defun C:ProfilP3DtoP2D ( / ssP3D sLayerP3D vAUNITS vANGBASE vANGDIR I oP3D lsPts dAng PT PT1 PT2 PT2D PT1_2D PT2_2D dDist dDistMax vDir lsPts2D) (setq sLayerP3D "Ptrav_ENROCHEMENTS SECS_3D") (if (setq ssP3D (ssget (list (cons 0 "POLYLINE") (cons 8 sLayerP3D) (cons -4 "&") (cons 70 8)))) (progn (setq vAUNITS (getvar "AUNITS")) (setq vANGBASE (getvar "ANGBASE")) (setq vANGDIR (getvar "ANGDIR")) (setvar "AUNITS" 3) (setvar "ANGDIR" 0.) (setvar "ANGBASE" 0.) (setq I 0) (repeat (sslength ssP3D) (setq oP3D (ssname ssP3D I)) (setq I (1+ I)) (setq lsPts (lsVtxPoly3D oP3D)) ; recherche les 2 points les plus éloignés en 2D (setq PT1 (car lsPts)) (setq PT1_2D (Point2D PT1)) (setq iVtx 0) (setq dDistMax 0.) (while (< (setq iVtx (1+ iVtx)) (length lsPts)) (setq PT (nth iVtx lsPts)) (setq PT2D (Point2D PT)) (if (> (setq dDist (distance PT1_2D PT2D)) dDistMax) (setq PT2_2D PT2D dDistMax dDist) ) ) ; calcule l'angle entre ces 2 points (setq dAng (angle PT1_2D PT2_2D)) ; construit le SCU orienté, puis vertical (command "_UCS" "_W") (command "_UCS" "_Z" dAng) (command "_UCS" "_X" (* PI 0.5)) (setq vDir (getvar "UCSXDIR")) (setq vDir (list (cadr vDir) (* -1. (car vDir)) 0.)) ; convertit le liste des sommets 3D en sommet 2D dans le SCU vertical (setq lsPts2D nil) (foreach PT lsPts (setq lsPts2D (append lsPts2D (list (Point2D (trans PT 0 1))))) ) ; Contruit la poly2D vertical (MakeLWPoly lsPts2D (logand (cdr (assoc 70 (entget oP3D))) 1) (caddr (trans (car lsPts) 0 1)) vDir) ) (setvar "ANGDIR" vANGDIR) (setvar "ANGBASE" vANGBASE) (setvar "AUNITS" vAUNITS) (command "_UCS" "_W") ) ) ) Ce code présuppose un certain nombre d'hypothèse : - les polylignes 3D sont définies dans un plan vertical - les polylignes 3D ont une longueur 2D projetée non nulle - dessine les poly2D dans le calque courant. A tester, car aucun contrôle dans ce code, tout est supposé être bien dessiné. Ce n'est pas forcément très rapide, puisque ça passe par les commandes de création de SCU pour chaque polyligne, mais ça traduit la méthode manuelle de construction/dessin. Olivier ProfilP3DtoP2D.lsp -
Poly 3d vers poly 2D pour création solide
Olivier Eckmann a répondu à un(e) sujet de Didj05 dans Covadis
Désolé, j'avais lu les réponses en diagonale. C'est effectivement la même réponse. -
Poly 3d vers poly 2D pour création solide
Olivier Eckmann a répondu à un(e) sujet de Didj05 dans Covadis
Comment obtenez-vous les poly3D? Si vous utilisez le projet linéaire de Covadis, dans l'écran de calcul du projet, cliqué sur le bouton Options en bas à gauche et sélectionner "Dupliquer avec des objets AutoCAD". Ainsi chaque couche du DTY est redessinée sous forme de polyligne 2D que l'on peut lisser en sélectionnant dans l'ordre pour obtenir un solide 3D. -
Poly 3d vers poly 2D pour création solide
Olivier Eckmann a répondu à un(e) sujet de Didj05 dans Covadis
Bonjour, Pas sûr d'avoir tout compris. Dans le DWG il y a un calque nommé : "poly2D tracée manuellement - objectif faire automatiquement", qui est vide sans aucune polyligne. Par contre il y a un calque nommé : "PROJET_enrochement_construction" qui contient des poly2D. Redessinées à la main? Le but c'est de partir du calque des poly3D "Ptrav_ENROCHEMENTS SECS_3D" pour arriver aux poly2D du calque "PROJET_enrochement_construction" ? -
Poly 3d vers poly 2D pour création solide
Olivier Eckmann a répondu à un(e) sujet de Didj05 dans Covadis
Bonjour, Les polylignes marron ne sont pas des poly3D, mais des poly 2D avec un vecteur d'extrusion correspond à la tangente à ton axe, donc normalement, aucun souci pour faire un balayage. Est-ce que tu a un DWG avec 3 ou 4 profils que l'on puisse faire des tests? Olivier -
"Zoom" "Objet" tout petit
Olivier Eckmann a répondu à un(e) sujet de PATRICE69 dans AutoCAD 2020-2024
Bonjour @PATRICE69, Avec les grandes coordonnées, le zoom objet ne sait pas calculer correctement l'emprise. En partant de cette proposition de Gilles dans cette discussion : https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/zoom-object-problem/td-p/5031146, on peut proposer ce lisp qui fonctionne quelque soit le SCU et les coordonnées. ; Code de gilles Chanteau proposé dans cette discussion ; https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/zoom-object-problem/td-p/5031146 (defun gc:TMatrixFromTo (from to) (append (mapcar (function (lambda (v o) (append (trans v from to T) (list o)) ) ) '((1. 0. 0.) (0. 1. 0.) (0. 0. 1.)) (trans '(0. 0. 0.) to from) ) '((0. 0. 0. 1.)) ) ) (defun zoomObjects (ss / i obj minPt maxPt ll ur) (vl-load-com) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (setq wcs2ucs (vlax-tmatrix (gc:TMatrixFromTo 0 1)) ucs2wcs (vlax-tmatrix (gc:TMatrixFromTo 1 0)) ) (repeat (setq i (sslength ss)) (setq obj (vlax-ename->vla-object (ssname ss (setq i (1- i))))) (vla-TransformBy obj ucs2wcs) (vla-GetBoundingBox obj 'minPt 'maxpt ) (vla-TransformBy obj wcs2ucs) (setq ll (cons (vlax-safearray->list minPt) ll) ur (cons (vlax-safearray->list maxPt) ur) ) ) (vla-ZoomWindow (vlax-get-acad-object) (vlax-3d-point (trans (apply 'mapcar (cons 'min ll)) 1 0)) (vlax-3d-point (trans (apply 'mapcar (cons 'max ur)) 1 0)) ) ) (defun C:ZOO () (zoomObjects (ssget)) ) J'ai nommé la commande ZOO car la commande ZO existe déjà dans Covadis mais elle ne permet que de sélectionner un seul objet. Sans Covadis elle peut être renommée à volonté. Olivier -
Lisp pour décalage de bordure
Olivier Eckmann a répondu à un(e) sujet de DessProj429 dans AutoCAD 2020-2024
Bonjour @DessProj429, Désolé, il y avait une erreur de traduction de l'option française D pour Deux, que j'ai juste ajouté un underscore, alors que l'option US est _B pour Both . Voilà la bonne syntaxe ^C^C_PEDIT;_M;\\;_J;_J;_B;(getvar "OFFSETDIST");; -
Supprimer Style Texte & Cotation [LISP / Autocad Map]
Olivier Eckmann a répondu à un(e) sujet de drault dans AutoCAD 2020-2024
C'est normal, car il n'y a pas de fonction native pour faire cela, il faut passer par un développement externe : https://www.cadforum.cz/en/download.asp?fileID=390 -
Supprimer Style Texte & Cotation [LISP / Autocad Map]
Olivier Eckmann a répondu à un(e) sujet de drault dans AutoCAD 2020-2024
Bonjour @drault, Avez-vous réussi avec le vérificateur de norme? Lien vidéo pour sa mise en œuvre : https://youtu.be/oVuniNrLSRg Olivier -
Extraire du texte
Olivier Eckmann a répondu à un(e) sujet de PATRICE69 dans Pour aller plus loin en LISP
Bonjour, rechercher du côté de StripMText https://github.com/Fandoozle/AutoCAD/blob/master/StripMtext v5-0c.lsp ou bien chez LeeMac : https://www.lee-mac.com/unformatstring.html -
Lisp pour décalage de bordure
Olivier Eckmann a répondu à un(e) sujet de DessProj429 dans AutoCAD 2020-2024
Bonjour @DessProj429, Sans lisp, on peut faire plus simple avec ce genre de macro associé à un bouton (à lancer juste après le décalage, car utilise la dernière valeur de décalage pour joindre les 2 polylignes) ^C^C_PEDIT;_M;\\;_J;_J;_D;(getvar "OFFSETDIST");; Mais il n'y a pas de contrôle. Ensuite la question est : 0 en lisp, OK, mais avant de parler programmation, est-ce qu'à partir d'un code fourni en texte, vous savez en créer un fichier LSP, le charger dans AutoCAD et lancer la commande? Olivier -
Insertion de points sur PDF et exportation en CSV
Olivier Eckmann a répondu à un(e) sujet de Kobi66 dans AutoCAD 2020-2024
Bonjour @Kobi66, Etant donné que le dessin est coté, c'est plus rapide et fiable de reconstruire les polylignes jaune, puis d'utiliser un programme lisp pour écrire les sommets de ces polylignes en fichier TXT comme le propose @didier sur son site : https://www.da-code.fr/poly-05/ Une petite vidéo pour reconstruire par les cotes et coordonnées : https://youtu.be/p2QnWmGMZLs Olivier -
Lisp pour décalage de bordure
Olivier Eckmann a répondu à un(e) sujet de DessProj429 dans AutoCAD 2020-2024
Bonsoir @DessProj429, Voilà un bout de code qui devrait faire l'affaire. J'ai mis des commentaires pour clarifier ce que fait chaque ligne du lisp (vl-load-com) (defun C:Bordure ( / oPoly1 oPoly2 lsPts1 lsPts2 oLine AddLine GetListVtx) ; fonction de création d'une ligne (defun AddLine (pt1 pt2) (entmake (list (cons 0 "LINE") (cons 10 pt1) (cons 11 pt2) ) ) ) ; fonction d'extraction des sommets d'un polyligne (defun GetListVtx (oPoly / p) (repeat (setq p (1+ (fix (setq p (vlax-curve-getEndParam oPoly))))) (setq l (cons (vlax-curve-getPointAtParam oPoly (setq p (1- p))) l)) ) ) ; Sélection de la 1ère polyligne (if (and (setq oPoly1 (car (entsel "\n1ère polyligne : "))) ; vérifie que c'est une polyligne (= "LWPOLYLINE" (cdr (assoc 0 (entget oPoly1)))) ; vérifie qu'elle n'est pas close (/= 1 (logand (cdr (assoc 70 (entget oPoly1))) 1)) ;Sélection de la 2nde polyligne (setq oPoly2 (car (entsel "\n2ème polyligne : "))) ; vérifie que c'est une polyligne (= "LWPOLYLINE" (cdr (assoc 0 (entget oPoly2)))) ; vérifie qu'elle n'est pas close (/= 1 (logand (cdr (assoc 70 (entget oPoly2))) 1)) ; extrait la liste des sommets de la poly 1 (setq lsPts1 (GetListVtx oPoly1)) ; extrait la liste des sommets de la poly 2 (setq lsPts2 (GetListVtx oPoly2)) ; construit la ligne passant par le 1er sommet de chaque polyligne (addLine (car lsPts1) (car lsPts2)) ) (progn ; récupère la ligne crée (setq oLine (entlast)) ; assemble les 2 polylignes, plus la ligne et clos la polyligne résultante (command "_PEDIT" oPoly1 "_J" oPoly2 oLine "" "_C" "") ) ) ) Olivier -
@didier Ne t'inquiète pas, les jeunes disposent de l'IA pour résoudre les problèmes, les dinosaures peuvent disparaître tranquillement 😉
-
Je l'utilise de temps en temps quand le zoom étendu déconne, vois s'il n'y a pas un texte ou un attribut vide ou ne contenant que des espaces qui traine quelque part. Parfois aussi pour voir s'il n'y a pas une police qui serait en cause dans des ralentissements, pour comparer un REGEN avec/sans texte, ainsi que qu'un REGEN avec/sans hachure avec le mode REMPLIR actif ou inactif.
-
Mettre la variable QTEXTMODE à 0, puis REGEN.
-
Si tu es plus à l'aise avec DotNet, il y a quelques très bonnes idées ici : https://www.keanw.com/2012/11/creating-the-smallest-possible-rectangle-around-2d-autocad-geometry-using-net.html
-
Tu peux regarde ici : https://cadxp.com/topic/49825-challengequickhull/
-
Demande de renseignement pour les ".syl" - CODIFICATION
Olivier Eckmann a répondu à un(e) sujet de Adri dans Covadis
Quand tu es dans le dialogue de paramétrage, tu appuies sur F1 pour ouvrir l'aide en ligne Covadis et tout est expliqué.