Aller au contenu

Fraid

Membres
  • Compteur de contenus

    2 523
  • Inscription

  • Dernière visite

  • Jours gagnés

    23

Tout ce qui a été posté par Fraid

  1. J'ai modifié le code vec la fonction getlayer de Gile.
  2. Bah, quand tu importe le csv, tu n'a pas 2 colonnes? Pense bien à mettre la virgule en séparateur. je regarde pour les calques.
  3. Bonjour, Sans vouloir polluer, (vl-load-com) (defun c:tcot ( / acdc txt lay ovtxt csv csvw) (setq acdc (vla-get-activedocument (vlax-get-acad-object)) txt "" lay (getlayer "Choisir un calque") ) (vlax-for obj (vla-get-modelspace acdc) (and (= (vla-get-ObjectName obj) "AcDbAlignedDimension") (= (vla-get-layer obj) lay) (setq ovtxt (vla-get-TextOverride obj)) (setq txt (strcat txt (vl-string-subst "," "*" ovtxt) "\n")) ) ) (if (/= txt "") (progn (setq csv (strcat (getvar 'dwgprefix) "exportcot.csv") csvw (open csv "w")) (write-line txt csvw) (close csvw) (princ (strcat "\n" csv " enregistré")) ) (princ "\nAucune Cote") ) )
  4. Pas trop, essaye cela ^C^C^P_ai_editcustfile $M=cotdeltaini.lsp;^P Non non, je ne pensais pas cela, c'étais de la taquinerie ..., Par contre j'aurais bien voulu voir ta solution, car j'ai essayé de déduire les pas, mais je me suis perdus à gérer les exceptions dû à un dessin contre intuitif.
  5. Attention, je n'avais pas mis la déclaration des variables à jour. Je l'ai corrigé.
  6. Bonjour, Non, tu as juste à l'éditer comme un fichier texte. Tu n'as pas à le charger Tu tapes juste cotdeltaX Quand tu as un autre réglage tu changes tes valeurs dans cotdeltaini.lsp, tu enregistres Tu tapes cotdeltaX Les nouvelles valeurs sont prises en compte.
  7. oui, a chaque fois que tu lance, il lit les valeurs.
  8. 2 fois que je clic mal quand je modifie le code. suis un boulet Regarde bien, au debut cela charge cotdeltaini.lsp et donc pas et jeu
  9. Coucou, pourquoi ne pas nous montrer ton code? C'est secret?
  10. J'ai de nouveau mis à jour le code. Par contre, il faut que tu crée un lisp à coté qui doit s'appeler cotdeltaini.lsp et qui contient ceci : (setq pas 500 jeu 10 ) Tu n'a qu'a modifier à chaque chantier. le dossier ou ce trouve les lisp doit etre inscrit dans les fichiers de support.
  11. Fraid

    A cheval sur 2 zones UTM

    Bonjour, Quelque soit les systèmes utilisés, il y a aussi la solution de séparer le chantier en deux. ça évite de se tirer les cheveux et perdre éventuellement en précision lors de la conversion.
  12. Nous ne pouvons que t'encourager, vas y, ça vaut le coup. Il y a le site de Didiers, lien juste au dessus, qui est très bien ainsi que celui de Gile Si tu n'as pas peur de l'anglais, j'aime particulièrement the swamp
  13. En attendant, j'ai réduit les deux lisps à 2 commandes et une fonction, c'est plus lispien.
  14. Je pense que si tu partage un dwg cela serais plus facile. Je peux compter le nombre d'élément, mais il faut que je sache comment tu dessine.
  15. mauvais clic désolé, c'est réparé
  16. Coucou, j'ai modifié le code plus haut, il y maintenant cotdeltaX et cotedeltaY. et pour répondre à ta question, c'est à ce niveau dist (- (cadr pt2) (cadr pt1)). ici nous soustrayions les Y des 2 points.
  17. J'ai modifié le code, il prend en charge les polylignes 3D. Tu as en plus le code d'Oliviers, cela te permet de voir une autre façon. Il y en à plein ... je ne pense pas avoir envisager tous les bugs possibles.. n'hésite pas à le dire, cela profitera à la communauté. En tout cas, bienvenus et bon courage
  18. Yop, c'est fait, j'ai rajoute - un undomark qui permet de revenir en arrière avec un seul ctrl+Z - un controle du SCU - la question pour effacer la polyligne Pour la 3D, il faut revoir tout le code,
  19. j'ai rajouté la variable jeu.
  20. Bonjour, Un ptit lisp. (defun cotdelta ( xy / pt1 pt2 dist distp div nb pas jeu) (load (findfile "cotdeltaini.lsp")) (setq pt1 (getpoint "\nPremier point:") pt2 (getpoint "\nDeuxième point:") dist (- (nth xy pt2) (nth xy pt1)) distp (- (nth (abs (- xy 1)) pt2) (nth (abs (- xy 1)) pt1)) div (/ distp pas) nb (if (/= div (fix div)) (1+ (fix div))(fix div))) (command "_cotali" pt1 pt2 "te" (strcat (itoa nb) "*" (rtos (- dist jeu) 2 0)) pt2) (princ) ) (defun c:cotdeltaX nil (cotdelta 0)(princ)) (defun c:cotdeltaY nil (cotdelta 1)(princ)) Utilise le style de cote courant. Evidement, si tu étire tes objets, il faudra remplacer la cote. Si tes panneaux on toujours la même hauteur on peut facilement calculer le nombre.
  21. De rien, j'ai modifié le code pour qu'il supprime les points à la fin. Sinon, j'ai trouvé pratique de créer un calque pour sélectionner facilement les points. Il sautera à la prochaine purge. Veux tu supprimer aussi la polyligne originale?
  22. Peut tu nous montrer un dessin explicatif, pour être sur de ce que tu veux.
  23. Bonjour, A part faire un remplacement de texte dans la fenêtre de propriétés manuellement ou en Autolisp, je ne vois pas de solution.
  24. Fraid

    2024 et AutoCAD ACA

    Bonjour, Peut etre que les utilisateurs d'Autocad Architecture sont passés sur Revit !?
  25. Un exemple de lisp, il faut dire que ce n'est pas un exercice de nouveau débutant. ; ANSI-Windows 1252 ; Autolisp ;| segpol.lsp, Segmente une polyligne selon une distance. Testé sur Windows 10 et Autocad 2015 No copyright: (!) 2023 by Frédéric Coulon. No license: Do with it what you want. |; ; Chargement des fonctions VLA/Activex. (vl-load-com) ; getpt3dpol, récupère la liste des points d'une polyligne 2D ou 3D (defun getpt3dpol (ent / n pts) (setq n (1+ (fix (vlax-curve-getEndParam ent)))) (repeat n (setq pts (cons (vlax-curve-getPointAtParam ent (setq n (1- n))) pts))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun c:segpol ( / acdc clay ce objnam flagscu pol lptpol long pts cpt lpt lpts) (setq acdc (vla-get-activedocument (vlax-get-acad-object)) clay (getvar 'clayer)) ; Point de retour (vla-startundomark acdc) (setq ce (getvar 'cmdecho)) (setvar 'cmdecho 0) ; Controle du SCU (if (= (getvar "worlducs") 0)(setq flagscu (vl-cmdf "_ucs" ""))) ; Séléction de la polyligne. (while (not (wcmatch (setq objnam (cdr (assoc 0 (entget (setq pol (car (entsel "\nSéléctionnez une polyligne"))))))) "*POLYLINE"))) (if pol (progn ; Liste des points de la polyligne. (setq lptpol (getpt3dpol pol) long (getint "\nLongueur des segments: ")) ; Création du calque TMP. (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-item (list layers "TMP" ))) (vla-add (vla-get-layers acdc) "TMP")) ; les points de la commande MESURER sont placés dans le calque TMP. (setvar 'clayer "TMP") (command "_measure" pol long) (setvar 'clayer clay) ; Séléction des points. (if (setq pts (ssget "_x" (list (cons 0 "point")(cons 8 "TMP")))) (progn (setq cpt 0) (while (setq point (ssname pts cpt)) ; Liste des coordonnnées des points. (setq lpt (cons (cdr (assoc 10 (entget point))) lpt) cpt (1+ cpt))) ; Rajout des extrémités de la polyligne. (setq lpt (cons (car lptpol) lpt) lpt (reverse (cons (last lptpol) (reverse lpt)))) ; Formatage de la liste pour vla-AddLightWeightPolyline ou vla-Add3DPoly. (if (= objnam "POLYLINE") (progn (setq lpt (apply 'append (mapcar '(lambda (x)(list (car x) (cadr x) (caddr x))) lpt)) lpts (vlax-make-safearray vlax-vbDouble (cons 0 (- (length lpt) 1)))) (vlax-safearray-fill lpts lpt) ; Dessin de la polyligne 3D (vla-Add3DPoly (vla-get-ModelSpace acdc) lpts) ) (progn (setq lpt (apply 'append (mapcar '(lambda (x)(list (car x) (cadr x))) lpt)) lpts (vlax-make-safearray vlax-vbDouble (cons 0 (- (length lpt) 1)))) (vlax-safearray-fill lpts lpt) ; Dessin de la polyligne (vla-AddLightWeightPolyline (vla-get-ModelSpace acdc) lpts) ) ) ; Efface les points et la polyligne. (initget 1 "Oui Non") (if (eq (getkword "\nSupprimer la polyligne originale? [Oui/Non] <Oui> : ") "Oui") (command "_erase" pts pol "") (command "_erase" pts "")) ) (princ "\nAbandon, vérifiez la longueur des segments.") ) ) (princ "\nAbandon.") ) ; Restauration du SCU. (if flagscu (command "_ucs" "p")) ; Restauration echo (setvar 'cmdecho ce) ; Fin du UndoMark. (if (= 8 (logand 8 (getvar 'UNDOCTL)))(vla-EndUndoMark acdc)) (princ) ) Il faut taper segpol, puis choisir sa polyligne et donner la longueur des segments.
×
×
  • 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é