Aller au contenu

Olivier Eckmann

Membres
  • Compteur de contenus

    2 348
  • Inscription

  • Dernière visite

  • Jours gagnés

    119

Tout ce qui a été posté par Olivier Eckmann

  1. Effectivement, ce sont des polyligne 2D (ancienne génération) et pas des polylignes LW. Soit tu les convertis avec la commande CONVERT, soit tu utilises le code modifié ci-dessous (defun C:UpdTxt ( / oPoly oPolyDxf sTypeObj oText oTextDxf oLineType) (while (and (setq oPoly (car (entsel "\nSélectionner la polyligne :"))) (setq sTypeObj (cdr (assoc 0 (setq oPolyDxf (entget oPoly))))) (or (= "LWPOLYLINE" sTypeObj) (= "POLYLINE" sTypeObj)) (setq oText (car (entsel "\nSélectionner le texte :"))) (= "TEXT" (cdr (assoc 0 (setq oTextDxf (entget oText))))) ) (if (assoc 6 oPolyDxf) (setq oLineType (cdr (assoc 6 oPolyDxf))) (setq oLineType (cdr (assoc 6 (tblsearch "LAYER" (cdr (assoc 8 oPolyDxf)))))) ) (entmod (subst (cons 1 oLineType) (assoc 1 oTextDxf) oTextDxf)) ) ) Olivier
  2. Un petit bout de DWG pour être sûr que c'est bien un objet LWPOLYLINE et un texte ligne et pas un texte multiligne Olivier
  3. Essaie avec ça (defun C:UpdTxt ( / oPoly oPolyDxf oText oTextDxf oLineType) (while (and (setq oPoly (car (entsel "\nSélectionner la polyligne :"))) (= "LWPOLYLINE" (cdr (assoc 0 (setq oPolyDxf (entget oPoly))))) (setq oText (car (entsel "\nSélectionner le texte :"))) (= "TEXT" (cdr (assoc 0 (setq oTextDxf (entget oText))))) ) (if (assoc 6 oPolyDxf) (setq oLineType (cdr (assoc 6 oPolyDxf))) (setq oLineType (cdr (assoc 6 (tblsearch "LAYER" (cdr (assoc 8 oPolyDxf)))))) ) (entmod (subst (cons 1 oLineType) (assoc 1 oTextDxf) oTextDxf)) ) ) Olivier
  4. Salut @didier, Le thème clair ou foncé concerne la couleur du ruban, des palettes... C'est indépendant de la couleur de l'arrière plan uniforme. Avec les 2 thèmes, les couleurs sont imposées, tu ne peux pas les choisir, c'est soit clair, soit foncé, mais pas autre chose. Personnellement, je travaille en thème clair et arrière plan en blanc. C'est peut-être pour ça que j'ai des lunettes ? 🤔 Olivier
  5. Question subsidiaire : le style foncé étant celui par défaut, est-ce que tout le monde sait que l'on peut le modifier? Est-ce que tout le monde a essayé le thème clair et a réellement choisi en connaissance de cause une fois les 2 configurations possibles testées?
  6. Bonjour, Dans le mesure où le point "manquant" doit être calculé par intersection de talus de pente variable, ça serait beaucoup plus facile de le calculer en projet linaire plutôt qu'en plate-forme. Olivier
  7. Bonjour, Sur la vidéo on voit subrepticement le symbole de contrainte, donc comme le suggère Patrick, je pense que la variable CONSTRAINTINFER a basculé sur la valeur 1 https://help.autodesk.com/view/ACD/2025/FRA/?guid=GUID-71EC58F4-BBAD-444E-AF4D-ABDF6B038141 Olivier
  8. Salut Gégé, J'ai trouvé une version 2000, mais pas plus récent. Olivier Auto_CAD_2000_Customization_Guide.pdf
  9. Non, c'est CARRERA'TROIS son vrai nom, car sa maman s'appelait GARGAMELLE'TROIS - ça ne s'invente pas -, et son père ENZO (un bel italien!!!) C'est pour la prochaine que je passerai à la version 4, mais en ce moment, mon cœur balance plutôt du côté du Portugal, avec un bel étalon Pur Sang Lusitanien, mais je crois que ma femme n'est pas d'accord 😉
  10. Essaie avec ça (vl-load-com) (defun C:PolyOnPoint ( / Point2D dFuzz ssPoly oPoly ssPonc oPonc PtDeb PtFin PT I J iNbPoncDeb iNbPoncFin) (defun Point2D (PT) (list (car PT) (cadr PT) 0.0) ) (initget 4) (if (not (setq dFuzz (getreal "\nRayon de recherche <0.01> : "))) (setq dFuzz 0.01) ) (initget 1 "Oui Non") (setq b2D (= "Oui" (getkword "\nLimiter la recherche en 2D [Oui/Non] : "))) (initget 1 "Departuniquement Arriveeuniquement departOUarrivee departETarrivee departETOUarrivee") (setq sChoix (getkword "\nCritère de recherche [Departuniquement/Arriveeuniquement/departOUarrivee/departETarrivee/departETOUarrivee] : ")) (if (and (princ "\nSélectionner les linéaires : ") (setq ssPoly (ssget (list (cons 0 "ARC,LINE,LWPOLYLINE")))) (princ "\nSélectionner les ponctuels : ") (setq ssPonc (ssget (list (cons 0 "POINT,INSERT")))) ) (progn (setq ssOK (ssadd)) (setq I 0) (repeat (sslength ssPoly) (setq oPoly (ssname ssPoly I)) (setq I (1+ I)) (setq PtDeb (vlax-curve-GetStartPoint oPoly)) (if b2D (setq PtDeb (Point2D PtDeb))) (setq PtFin (vlax-curve-GetEndPoint oPoly)) (if b2D (setq PtFin (Point2D PtFin))) (setq iNbPoncDeb 0) (setq iNbPoncFin 0) (setq J 0) (while (and (< J (sslength ssPonc)) (or (= iNbPoncDeb 0) (= iNbPoncFin 0)) ) (setq oPonc (ssname ssPonc J)) (setq J (1+ J)) (setq PT (cdr (assoc 10 (entget oPonc)))) (if b2D (setq PT (Point2D PT))) (if (and (= iNbPoncDeb 0) (equal PT PtDeb dFuzz)) (setq iNbPoncDeb 1) ) (if (and (= iNbPoncFin 0) (equal PT PtFin dFuzz)) (setq iNbPoncFin 1) ) ) (cond ((= sChoix "departETOUarrivee") (if (or (>= iNbPoncDeb 1) (>= iNbPoncFin 1)) (ssadd oPoly ssOK) ) ) ((= sChoix "departETarrivee") (if (and (>= iNbPoncDeb 1) (>= iNbPoncFin 1)) (ssadd oPoly ssOK) ) ) ((= sChoix "departOUarrivee") (if (or (and (>= iNbPoncDeb 1) (= iNbPoncFin 0)) (and (= iNbPoncDeb 0) (>= iNbPoncFin 1))) (ssadd oPoly ssOK) ) ) ((= sChoix "Departuniquement") (if (and (>= iNbPoncDeb 1) (= iNbPoncFin 0)) (ssadd oPoly ssOK) ) ) ((= sChoix "Arriveeuniquement") (if (and (= iNbPoncDeb 0) (>= iNbPoncFin 1)) (ssadd oPoly ssOK) ) ) ) ) (sssetfirst nil ssOK) ) ) ) Tu as les options: departOUarrivee = uniquement l'un des 2 departETarrivee = absolument les 2 departETOUarrivee = l'un OU l'autre OU les 2. Et ça fera un kilo de carottes pour ma jument 😉. Elle s'appelle CARRERA, mais elle fonctionne mieux aux carottes qu'au SP98.😂 Olivier
  11. Est-ce qu'un REGEN suffit, ou bien il est nécessaire de la renvoyer en arrière plan? J'ai le même souci, mais il suffit d'un Regen pour que les objets nouvellement dessinés ou modifiés repassent dessus. C'est pénible, mais pas complètement bloquant. Olivier
  12. Avec l'accrochage Extension et Autosnap activés, ça fonctionne tout seul
  13. Voilà (vl-load-com) (defun C:PolyOnPoint ( / Point2D dFuzz ssPoly oPoly ssPonc oPonc PtDeb PtFin PT I J iNbPoncDeb iNbPoncFin) (defun Point2D (PT) (list (car PT) (cadr PT) 0.0) ) (initget 4) (if (not (setq dFuzz (getreal "\nRayon de recherche <0.01> : "))) (setq dFuzz 0.01) ) (initget 1 "Oui Non") (setq b2D (= "Oui" (getkword "\nLimiter la recherche en 2D [Oui/Non] : "))) (if (and (princ "\nSélectionner les linéaires : ") (setq ssPoly (ssget (list (cons 0 "ARC,LINE,LWPOLYLINE")))) (princ "\nSélectionner les ponctuels : ") (setq ssPonc (ssget (list (cons 0 "POINT,INSERT")))) ) (progn (setq ssOK (ssadd)) (setq I 0) (repeat (sslength ssPoly) (setq oPoly (ssname ssPoly I)) (setq I (1+ I)) (setq PtDeb (vlax-curve-GetStartPoint oPoly)) (if b2D (setq PtDeb (Point2D PtDeb))) (setq PtFin (vlax-curve-GetEndPoint oPoly)) (if b2D (setq PtFin (Point2D PtFin))) (setq iNbPoncDeb 0) (setq iNbPoncFin 0) (setq J 0) (while (and (< J (sslength ssPonc)) (= iNbPoncDeb 0) (= iNbPoncFin 0) ) (setq oPonc (ssname ssPonc J)) (setq J (1+ J)) (setq PT (cdr (assoc 10 (entget oPonc)))) (if b2D (setq PT (Point2D PT))) (if (and (= iNbPoncDeb 0) (equal PT PtDeb dFuzz)) (setq iNbPoncDeb 1) ) (if (and (= iNbPoncFin 0) (equal PT PtFin dFuzz)) (setq iNbPoncFin 1) ) ) (if (or (>= iNbPoncDeb 1) (>= iNbPoncFin 1)) (ssadd oPoly ssOK) ) ) (sssetfirst nil ssOK) ) ) )
  14. Bonjour, Serait-il possible de voir une capture d'écran après (le problème et ce que vous souhaitez), car un bloc qui "bouge" une fois étiré, alors qu'il ne doit pas "bouger", ça veut dire quoi exactement? Olivier
  15. Ca pose plusieurs problèmes, car on va devoir modifier la couleur d'une définition de bloc en fonction de l'insertion de sa référence. Si un bloc CHAISE (composé d'objets de couleur DUBLOC ou DUCALQUE) est inséré 1 fois dans un calque Bleu et une fois dans un calque Vert, de quelle couleur doit être la chaise, car on peut forcer Vert ou Bleu, mais pas les 2 en même temps! Si un bloc est composé d'objet de couleur DUBLOC et que le bloc est inséré 1 fois en couleur Ducalque dans un calque Bleu et 1 fois dans ce même calque Bleu mais avec une couleur forcée Rouge, quelle doit être la couleur de la chaise? Si une définition de bloc, contient d'autre bloc, on multiplie par 2 ou plus les problèmes. Olivier
  16. Dans ton dessin, aucun linéaire n'a 1 bloc à chaque extrémité. Il y en a au départ ou à l'arrivée, mais jamais au départ ET à l'arrivée. On peut modifier l'algo si la recherche doit se limiter à au moins 1 extrémité et non pas les 2, dans la ligne (if (and (>= iNbPoncDeb 1) (>= iNbPoncFin 1)) remplacer AND par OR Olivier
  17. Salut, Essaie avec ça. C'est un peu brutal, donc facilement exponentiel si beaucoup de linéaire et de point. (vl-load-com) (defun C:PolyOnPoint ( / dFuzz ssPoly oPoly ssPonc oPonc PtDeb PtFin PT I J iNbPoncDeb iNbPoncFin) (initget 4) (if (not (setq dFuzz (getreal "\nRayon de recherche <0.01> : "))) (setq dFuzz 0.01) ) (if (and (princ "\nSélectionner les linéaires : ") (setq ssPoly (ssget (list (cons 0 "ARC,LINE,LWPOLYLINE")))) (princ "\nSélectionner les ponctuels : ") (setq ssPonc (ssget (list (cons 0 "POINT,INSERT")))) ) (progn (setq ssOK (ssadd)) (setq I 0) (repeat (sslength ssPoly) (setq oPoly (ssname ssPoly I)) (setq I (1+ I)) (setq PtDeb (vlax-curve-GetStartPoint oPoly)) (setq PtFin (vlax-curve-GetEndPoint oPoly)) (setq iNbPoncDeb 0) (setq iNbPoncFin 0) (setq J 0) (repeat (sslength ssPonc) (setq oPonc (ssname ssPonc J)) (setq J (1+ J)) (setq PT (cdr (assoc 10 (entget oPonc)))) (if (and (= iNbPoncDeb 0) (equal PT PtDeb dFuzz)) (setq iNbPoncDeb 1) ) (if (and (= iNbPoncFin 0) (equal PT PtFin dFuzz)) (setq iNbPoncFin 1) ) ) (if (and (>= iNbPoncDeb 1) (>= iNbPoncFin 1)) (ssadd oPoly ssOK) ) ) (sssetfirst nil ssOK) ) ) ) Olivier
  18. Bonjour, Comme vous avez MAP, il y a la commande MAPCLEAN qui permet de détecter/corriger (manuellement ou automatiquement) les doublons de point, de bloc, de texte, de ligne, de polyligne ... Olivier
  19. Lorsque la fenêtre est flottante, tu peux la laisser en plein milieu par exemple, dans ce cas elle est "indépendante" d'AutoCAD. Par exemple si tu mets AutoCAD sur ton 2ème écran, ta ligne de commande reste sur le 1er. Elle fonctionne comme une palette. Tu peux aussi la "magnétiser" au bord, c'est à dire juste la "coller" sans l'ancrer. Dans ce cas elle reste "flottante", mais elle se déplace avec ton AutoCAD. Enfin tu peux l'ancrer. Il y a donc bien 3 comportements possible, même si la nuance est tenue. Olivier
  20. Bonjour, Je ne connais pas Mensura, mais avec les écrans à haute résolution, il arrive que la partie texte soit redimensionnée, si on travaille avec une mise à l'échelle autre que 100% Olivier
  21. Bonjour, Tu sélectionnes tes 1500 blocs, puis ATTOUT Tu ouvres sous Excel le fichier TXT obtenu Sous Excel, avec la fonction RECHERCHEV tu fais une jointure avec ta feuille de substitution Tu copies/colles les nouvelles valeurs à la place des anciennes ATTIN pour mettre à jour tes 1500 blocs d'un coup Olivier
  22. Salut, Tu n'as pas de PK par rapport à l'axe du rail stocké sur ton bloc. Si oui, il suffit de faire un ATTOUT, puis dans Excel, trier selon le PK, puis incrémenter la colonne de l'attribut ORDRE? puis ATTIN pour mettre à jour. Olivier
  23. On peut faire un peu plus simple avec les paires pointées (cdr (assoc "Encore" Lst)) Olivier
  24. (setq Lst (list (cons "Pouette" 23)) ) (setq Lst (append Lst (list (cons "Plus" 12)))) (setq Lst (append Lst (list (cons "Encore" 19)))) Olivier
  25. Il doit manquer des chemins d'accès au programme. Tu peux mettre une capture d'écran de test chemins de recherche. En Civil 2022, j'avais tout ça Olivier
×
×
  • 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é