Aller au contenu

Nicky

Membres
  • Compteur de contenus

    30
  • Inscription

  • Dernière visite

Tout ce qui a été posté par Nicky

  1. Salut BonusCad, Oui j'ai vu ta réponse sur Cadtutor et je t'en remercie. Je n'ai pas encore eu le temps de tester ta routine mais je le ferai dès que possible. A vrai dire, je cherchais à savoir si ma routine était corrigeable et si oui d'ou venait l'erreur. Merci en tout cas
  2. Merci Olivier, C'est exactement ca! Merci infinement.
  3. Bonjour Olivier, effectivement, voici un dwg qui pose problème avec les pas de 1, 5 et 25. Pour information, il s'agit d'un fichier en mètres converti en feet avec la commande suivante. (defun c:SCFTM () (command "insunits" 6) (command "_units" 2 3 1 1 0 "N") (setq selec (ssget "_X")) (command "-dwgunits" 2 2 4 "yes" "no" "yes" "no") ;;(command "_.scale" selec "" '(0 0 0) 1000) (command "_.zoom" "e") ;; (command "_units" 2 3 1 1 0 "N") (command "insunits" 2) ) Bien que les courbes de niveau soit a la bonne altitude (a 4 décimales près), je me demande si le problème n'aurait pas quelque chose a voir avec la valeur de l'arrondi de l'élévation des polylignes (courbes de niveau)..? Merci, Crooked Mile export mensura test.dwg
  4. Bonjour a toutes et tous, J'ai un petit problème avec le code ci dessous : La routine permet en choisissant un multiple d'altitude (0.5/1/2/5/10/25/50/100 mètres) de placer dans un (nouveau) calque les courbes de niveau (situées dans un calque originel) répondant au critère. Cependant, depuis peu, certaine courbe ne se place pas dans le nouveau calque alors que le critère est respecté (les altitudes affichées dans les propriétés sont juste). Il y a peut être une erreur dans le code, ou une variable a modifier (précision ou arrondi proche par exemple..) ? Merci, (defun c:MAJCL ( ;/ elev ss i el ) (vl-load-com) (setq Valer (getvar "luprec")) (setvar "luprec" 0) (initget 1 "0.5 1 2 5 10 25 50 100") (setq elev (getkword "\nSelect String for filter [0.5/1/2/5/10/25/50/100]: " ) ) (setq LayerCL (car (entsel "\nClick on a layer with contour lines to modify : " ) ) ) (setq EntLay (entget LayerCL)) (setq LAY (cdr (assoc 8 EntLay))) (setq nomcalc (strcat "_NB-MajorLine_" elev)) (initget 1 "Blue Green GRey Pink Red White Yellow Other") (setq ColorCalc (getkword "\nSelect a color for the layer [Blue/Green/GRey/Pink/Red/White/Yellow/Other]: " ) ) (cond ((= ColorCalc "Blue") (setq Color 141) ) ((= ColorCalc "Green") (setq Color 91) ) ((= ColorCalc "GRey") (setq Color 253) ) ((= ColorCalc "Pink") (setq Color 211) ) ((= ColorCalc "Red") (setq Color 241) ) ((= ColorCalc "White") (setq Color 7) ) ((= ColorCalc "Yellow") (setq Color 51) ) ((= ColorCalc "Other") (setq Color 121) ) ) (if (not (tblsearch "LAYER" nomcalc)) (entmake (list (cons 0 "LAYER") (cons 100 "AcDbSymbolTableRecord") (cons 100 "AcDbLayerTableRecord") (cons 2 nomcalc) (cons 70 0) (cons 62 Color) (cons 370 -3) (cons 6 "Continuous") ) ) ) (if (setq ss (ssget "_X" (list (cons 0 "LWPOLYLINE") (cons 8 LAY)) ) ) (repeat (setq i (sslength ss)) (setq el (cdr (assoc 38 (entget (setq e (ssname ss (setq i (1- i)))))) ) ) (if (equal (distof (rtos (rem el (distof elev)) 2 2)) 0.0 1e-6) ; at elevation that is a multiple of elev? (vla-put-Layer (vlax-ename->vla-object e) nomcalc) ;(command "_.chprop" e "" "_layer" nomcalc "") ) ; if ) ; repeat ) ; if (setvar "luprec" Valer) (princ) )
  5. Bonjour a toutes et tous, J'ai un petit problème avec le code ci dessous : La routine permet en choisissant un multiple d'altitude (0.5/1/2/5/10/25/50/100 mètres) de placer dans un (nouveau) calque les courbes de niveau (situées dans un calque originel) répondant au critère. Cependant, depuis peu, certaine courbe ne se place pas dans le nouveau calque alors que le critère est respecté (les altitudes affichées dans les propriétés sont juste). Il y a peut être une erreur dans le code, ou une variable a modifier (précision ou arrondi proche par exemple..) ? Merci, (defun c:MAJCL ( ;/ elev ss i el ) (vl-load-com) (setq Valer (getvar "luprec")) (setvar "luprec" 0) (initget 1 "0.5 1 2 5 10 25 50 100") (setq elev (getkword "\nSelect String for filter [0.5/1/2/5/10/25/50/100]: " ) ) (setq LayerCL (car (entsel "\nClick on a layer with contour lines to modify : " ) ) ) (setq EntLay (entget LayerCL)) (setq LAY (cdr (assoc 8 EntLay))) (setq nomcalc (strcat "_NB-MajorLine_" elev)) (initget 1 "Blue Green GRey Pink Red White Yellow Other") (setq ColorCalc (getkword "\nSelect a color for the layer [Blue/Green/GRey/Pink/Red/White/Yellow/Other]: " ) ) (cond ((= ColorCalc "Blue") (setq Color 141) ) ((= ColorCalc "Green") (setq Color 91) ) ((= ColorCalc "GRey") (setq Color 253) ) ((= ColorCalc "Pink") (setq Color 211) ) ((= ColorCalc "Red") (setq Color 241) ) ((= ColorCalc "White") (setq Color 7) ) ((= ColorCalc "Yellow") (setq Color 51) ) ((= ColorCalc "Other") (setq Color 121) ) ) (if (not (tblsearch "LAYER" nomcalc)) (entmake (list (cons 0 "LAYER") (cons 100 "AcDbSymbolTableRecord") (cons 100 "AcDbLayerTableRecord") (cons 2 nomcalc) (cons 70 0) (cons 62 Color) (cons 370 -3) (cons 6 "Continuous") ) ) ) (if (setq ss (ssget "_X" (list (cons 0 "LWPOLYLINE") (cons 8 LAY)) ) ) (repeat (setq i (sslength ss)) (setq el (cdr (assoc 38 (entget (setq e (ssname ss (setq i (1- i)))))) ) ) (if (equal (distof (rtos (rem el (distof elev)) 2 2)) 0.0 1e-6) ; at elevation that is a multiple of elev? (vla-put-Layer (vlax-ename->vla-object e) nomcalc) ;(command "_.chprop" e "" "_layer" nomcalc "") ) ; if ) ; repeat ) ; if (setvar "luprec" Valer) (princ) )
  6. Salut Vincent, Merci pour ton retour. Oui je pensais aussi faire ca mais je n'ai pas la commande sur Global mapper. Je vais regarder ca sur CloudCompare. Merci
  7. Bonjour a toutes et tous, Je sais que le forum n'est pas spécialisé en SIG mais je jette une bouteille a la mer. J'ai un fichier LiDAR datant de 2018 qui couvre un grande aire (station de ski). De nouveau relevé ponctuel ont été réalisé au drone et j'aimerai mettre a jour mon fichier topo dans Global Mapper. Cependant, je ne sais pas quel process, ni quelle commande utilisé pour "remplacer" l'ancien LiDAR par le nouveau ? Quelqu'un a-t-il une idée ? Merci d'avance,
  8. Rebonjour Didier 🙂 Et bien il y a beaucoup de .LSP et malheureusement un fichier VLX!
  9. Merci de vos réponses a tous les deux @didier et @lili2006. En réalité, ma question était plutôt de savoir si il y avait une erreur dans la façon de créer le mnt du cote du logiciel ou si cela venait du fichier (courbes de niveau) ou de ma façon de procéder... J'ai comparé le fichier mnt covadis (je ne pensais pas pouvoir l'ouvrir avec un simple AutoCAD) et effectivement, il y a les memes erreurs, voir plus importantes. J'ai donc ma réponse, pas étonnant qu'il y est des incohérences. Juste pour information, en voyant ces erreurs, je n'ai pas utilisé ce fichier et est attendu d'obtenir le fichier de points. Mais je n'aime pas trop attendre les données 🙂
  10. Ok, merci. Pas de triangles horizontaux alors ?
  11. Bonjour a tous, Après avoir passé plusieurs années à essayer de faire tourner des anciens programmes développés par Alejandro Gutierrez, j'abandonne. Alejandro était un génie et il a contribué au développement d’applications pour AutoCAD dans les années 90. Les nombreuses routines comprises dans cette centaine de fichier, étaient incroyablement efficaces a l'époque, et l'entreprise dans laquelle je suis maintenant partenaire, Alpentech Inc. était toujours en avance sur tout le monde grâce au savoir-faire d’Alejandro et ses creations. Pour vous donner des exemples, l'un de ces programmes permet de dessiner des profiles en long et en travers, de les éditer et de calculer les aires et volumes de déblai/remblai. Oui, sur AutoCAD! Pour ces calculs il utilisait notamment Surfer et Excel. Mais le programme le plus puissant, appelé "Smartmap", permettait de créer une carte de pertinence des choix de terrains, en particulier pour la création de piste de ski, en fonction de plusieurs paramètre tel que l'altitude, l'orientation, les ombres, le vent... Pour information, les programmes tourner sur AutoCAD 2005. Malheureusement, je suis incapable d'utiliser la plupart de ces programmes, et manque de temps et de connaissances (surtout) pour arriver a les faire tourner, ou les modifier/adapter à nos besoins aujourd'hui... Alors si quelqu'un est intéressé par le déchiffrage de ces programmes, suivi éventuellement d'un éclaircissement voir un exposé (compte tenu du nombre de routines...), n'hésitez pas à me contacter par courriel à l'adresse nicolas@alpentech.net Merci pour votre lecture et bonne journée les Lispeur! Nicolas
  12. Bonjour Messieurs, Merci de vos réponse et de votre intérêt pour el sujet. Ci-joint le fichier dwg. Merci. Grizzly P-Lot widening(1).dwg
  13. Bonjour à tous, Je deviens fou avec Mensura. Lors de la création d'un MNT à partir de courbes de niveau 2D (je n'ai pas de fichier de points pour modéliser le terrain), Mensura ne suis pas parfaitement les courbes de niveaux originales et créé des "raccourcis" ce qui forme des triangles horizontaux que je ne parviens pas a supprimer. Meme en retriangulant et en eliminant les triangles horizontaux, certains persistent! Je joins une image pour explicatif, peut être que cela vous parlera.. Je ne comprends pas d'où viens le problème est s'il y a une solution. Merci,
  14. Salut @didier, Oui c'est tout a fait cela 👍
  15. Bonjour a tous, Je reviens sur ce sujet concernant une routine de carto AutoCAD qui n'a pas été résolu et qui me taraude encore... Il semblerait que le problème vienne de la perte des contrôle OCX 32 bits depuis le passage à VBA 7 et les plates-formes 32/64bits. Lorsque je lance la routine, une DirListBox, une FileListBox et une DriveListBox devrait s'afficher (voir ci-dessous a gauche), mais j'obtient la fenêtre ci-dessous a droite : Je ne peux donc pas sélectionner mon fichier pour l'import de ce fameux fichier .GDR... Avez vous une idée de la marche a suivre pour faire apparaitre ces commandes ? ou les remplacer par un bouton peut être ? Merci d'avance pour vos eclairs de genie. Nicky
  16. Bonjour VDH-Bruno, Tout d'abord merci pour ces explications et merci pour le code, j'ai compris la méthode. Et donc oui en effet, en rajoutant la boucle "écriture, pause, suppression...", ça ralenti le traitement. A quoi correspond la valeur "100000" de la fonction repeat - (pause pour voir la modif) ? Je pense que ce programme peut être utile parfois mais pas toujours en effet. Lorsque j’exécute le programme sur une trentaine de courbes de niveau assez lourdes (plus de 1000 vertex), le programme rame un peu et donne envie de le quitter... Merci encore Nicky
  17. Bonjour a tous, J’espère que vous pourrez m'aider sur ce code qui concerne la réalisation d'un compteur placé dans la ligne de commande. Soit un terrain représenté par des courbes de niveau (polylignes vertes) et une polyligne bleue qui coupe ces courbes de niveau. Je cherche a réaliser un compteur qui compte le nombre de courbe de niveau coupées par cette polyligne, puis copiées et placées dans un nouveau calque. La boucle s’incrémente a chaque intersection de la polyligne bleue avec les courbes de niveaux (polylignes vertes). Voici un extrait de mon code (setq CNcoupees (ssget "_F" (list pt1 pt2) (list (cons 0 "LWPOLYLINE,POLYLINE") (cons 8 LAY) ) ) ) (repeat (setq in (sslength CNcoupees)) (redraw (ssname CNcoupees (setq in (1- in))) 3) ) (setq n 0) (setq nombreCN (sslength CNcoupees)) (while (< n nombreCN) (progn (setq poly1 (ssnamex CNcoupees n) ptspoly1 (assoc 4 poly1) pol (ssname CNcoupees n) obj (vlax-ename->vla-object pol) vlelev (vla-get-elevation obj) listalt (append listalt (list vlelev)) lilispt (list '0 '0 (nth n listalt)) ptlistpt (cons lilispt ptlistpt) ) (command "._copytolayer" ent "" calqueAXE "0,0,0" lilispt) (princ) ) (setq n (+ n 1)) (princ (strcat "\rCréation de la polyligne : " (itoa n) " sur " (itoa nombreCN) ) ) ) Mais voila ce qui s'affiche actuellement dans ma ligne de commande : Je souhaiterais ne pas voir apparaître la première ligne "1 object(s) copied and placed on layer "NB_Axe-coupe-construction"." mais seulement mon code "Création de la polyligne : 1 sur 91" et que le 1 passe a 2, puis a 3, puis a 4... sans aller a la ligne a chaque polyligne crée.. Possible ? Merci d'avance
  18. Nicky

    Coupe courbes de niveau

    Super ! Merci Olivier, c'est une très bonne idée et ça tourne maintenant ! Merci. Nicolas
  19. Salut la communauté! Je cherche à utiliser une routine permettant de réaliser une coupe de terrain (intersection entre une ligne et des courbes de niveau) afin de visualiser le profil du terrain. Je pense que je ne suis pas trop loin du compte, il y a de nombreuses petites erreurs, mais je me heurte a une problématique majeure : ma liste de point n'est pas dans le bon ordre et lorsque que je trace le profil les points ne s’enchaîne pas comme il faut, je précise: Si l'axe de ma coupe (ligne) intersecte 10 courbes de niveau différentes, le profil est bien traceMais l'axe de ma coupe intersecte 2 fois (ou plus) la même courbes de niveau, les points sont classer dans le désordre. L'exemple ci-dessous explicite le problème rencontre lorsque les courbes de niveau sont couper plusieurs fois... Du coup, je ne sais pas qu'elle méthode serait la mieux pour corriger cette erreur de tracé : Y q t il une erreur dans la récupération des points aux intersections §Faut il simplement reclasser l'ordre de la liste des points (dans le bon sens de l'axe) ? Je vous joins le fichier LISP. Le fichier est bidouillé (composé de création perso et de copier coller de routines existantes), ça risque de faire mal aux yeux des puristes... Je m'en excuse. Coupe sur CN Merci d'avance pour vos réponses et aides! Nicolas
  20. Salut la communauté! Je travaille sur le logiciel Mensura de mon associé mais il ne possède pas le module projet linéaire... Je n'ai que la base : DAO - Terrain (M.N.T.) - Courbes de niveaux - Projet Plates-Formes - Rendu 3D Paysager. Mon interrogation concerne la réalisation de Profil en Long et Travers. Pour réaliser et exporter mes Profils je passe donc par le module Projet Plates-Formes avec le menu déroulant Profils >> Profil Vertical (ou Profil en travers). Je souhaiterais donc savoir s'il y a une possibilité de créer (et enregistrer) un Profil en Long et un Profil en Travers TYPE, OU alors de modifier leurs valeurs par défaut, afin de ne pas devoir ajuster les valeurs a chaque fois que je créer un Profil en Long (modification du rapport d’échelle X/Z, nombre de décimale, champs automatiques, grille verticale et horizontale...) J’espère que vous comprendrez ma demande et que vous pourrez y répondre. Merci d'avance !
  21. Super! Merci a vous deux, c'est très clair maintenant.
  22. Salut Dider, Non non pas tout a fait. ici le15 représente la taille du texte! En fait, le nombre d'insertion (ou le nombre d’entité texte insérée) ne compte pas vraiment ici puisque je veux, a n'importe quel moment, pouvoir annuler cette insertion. Par exemple, lorsque j’insère la 6eme entité "texte" et que l'insertion ne me plait pas (mauvais emplacement ou mauvais angle d'alignement par exemple), je souhaiterais annuler cette insertion (par un cnt-z ou Undo) et ensuite de pouvoir reprendre la commande pour d'autre insertion... Je sais pas si c'est plus clair ?
  23. Magnifique !!! Merci. Les fonctions Autolisp m'arrachent déjà les cheveux, alors les Vlisp... Elles dépassent de loin mes capacités et mon niveau de programmation. J'aimerai maintenant, et pour finir, "boucler" ce programme avec la possibilité de d'annuler la dernière insertion de texte (undo, cnt-z ?) : Sélection entité (lwpolyligne en l’occurrence) ;Command texte ;>> Possibilité d'annuler cette boucle par "u"/cnt-z ?? En gros comme la seconde partie de la commande TRIM, pendant la sélection des objets a ajuster La boucle ne me pose pas de problème, mais l'ajout du retour en arrière oui... Une idée ? il faut peut être un getkwork ? Code : (defun c:alti (/ sel ent pt par pt1 pt2 elev ang angdeg txt ptins) (while (setq sel (entsel)) ;; récupérer le nom d'entité (ENAME) de l'entité sélectionnée (setq ent (car sel)) ;; controler que l'entité sélectionnée est bien une polyligne (= (cdr (assoc 0 (entget ent))) "LWPOLYLINE") ;; récupérer le point cliqué (coordonnées SCU courant) (setq pt (cadr sel)) (setq ptins (list (car pt) (cadr pt))) ;; traduire le point en coordonnées SCG (setq pt (trans pt 1 0)) ;; obtenir le point le plus proche sur la polyligne (setq pt (vlax-curve-getClosestPointToProjection ent pt (trans '(0 0 1) 2 0 T) ) ) ;; obtenir le paramètre de la polyligne au point cliqué (setq par (vlax-curve-getParamAtPoint ent pt)) ;; obtenir le point sur le sommet précédent (point au paramètre entier inférieur) (setq pt1 (vlax-curve-getPointAtParam ent (fix par))) ;; obtenir le point sur le sommet suivant (point au paramètre entier supérieur) (setq pt2 (vlax-curve-getPointAtParam ent (1+ (fix par)))) ;; recuperation de l'elevation (setq elev (atoi (rtos (caddr pt) 2 0))) ;; recuperation de l'angle pt1>pt2 (setq ang (angle pt1 pt2)) ;; transformation de l'angle en degré (setq angdeg (* (/ ang pi) 180)) ;; si l'angle est compris entre 90 et 270, additionner 180 degré (if (or (and (> angdeg 90) (< angdeg 270)) ) (setq angdeg (+ angdeg 180)) ) ;; hauteur du texte - simplifié.. (setq txt 15) (command "_text" "m" ptins txt angdeg elev) (princ) ) ;;end while ) ;;end defun
  24. Bonjour, Je suis a la recherche d'un moyen permettant de récupérer les coordonnées du vertext précédant ou suivant le point de "click" de sélection de la polyligne. Je ne sais pas si c'est très clair mais j'aimerai, après un getpoint sur une polyligne (+ ssget pour sélectionner celle-ci), récupérer le sommet précédant ou suivant ce clique.. Savez vous s'il y a un moyen d'y parvenir ? (Pour info le but de ma recherche est de calculer l'angle entre le getpoint et le sommet précédent/suivant...) Voici une partie du code: (setvar "osmode" 2) (while (setq ipt (getpoint "\Sélectionner un point sur la polyligne :\n")) (setq ipt (osnap ipt "_mid")) (setq ipt1 (list (+ (car ipt) 1) (- (cadr ipt) 1))) (setq ipt2 (list (- (car ipt) 1) (+ (cadr ipt) 1))) (setq ss (ssget "_C" ipt1 ipt2 '((0 . "*POLYLINE"))))) Merci d'avance,
  25. Nicky

    Routines Carto VBA

    Ok ok merci. J'ai du mal a comprendre pourquoi il n'y a pas de compatibilité avec les versions les plus récente d'AutoCAD. Parce j'ai essayé avec AutoCAD 2008 et ça roule bien... Bref, merci pour les infos en tout cas, je vais essayer de fouiner encore un peu !
×
×
  • 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é