edouareo Posté(e) le 4 août 2022 Posté(e) le 4 août 2022 Bonjour à tous, Je suis nouveau ici... Je sais que la question que je vais poser à déjà été évoquée dans d'autre pages, mais je n'ai pas réussit à exploiter les réponses pour l'instant... Je suis architecte. J'utilise Autocad 2021. J'ai reçu un plan topographique d'une parcelle pour un projet projet. Les points topo on une position Z = 0. Leur nom est "TCPOINT". Leur altitude est renseigné dans leur attribut ("ALT"). J'ai besoin de faire passer passer la valeur d'attribut "ALT" à la position Z. L'objectif est ensuite de faire ensuite une 3d de la parcelle. J'ai mis un fichier avec mes point topo en lien si jamais cela peut aider (en cad2013). J'espère avoir été compréhensible. Je vous remercie d'avance d'avoir pris le temps de me lire, Edouard topo.dwg Citer
edouareo Posté(e) le 4 août 2022 Auteur Posté(e) le 4 août 2022 Je précise que les point topo sont des blocs Citer
Curlygoth Posté(e) le 4 août 2022 Posté(e) le 4 août 2022 si tu est pret à installer le module VBA c'est possible et lisp aussi mais je ne sais pas faire Citer Mon site Web (en cours de construction) : Site DA-CODE de @didier
Luna Posté(e) le 4 août 2022 Posté(e) le 4 août 2022 Coucou, J'ai un programme un peu plus..."complet" que la demande si tu veux. Vois si chat te convient, à savoir que pour ta demande, appuyer uniquement sur ENTER (validation à vide) devrait suffire 😉 Le nom de la commande c'est ALTPOINT Bisous, Luna UtGeodt . ALTPOINT 2.1.2 - 2022.07.25 (Luna).lsp Citer
Luna Posté(e) le 4 août 2022 Posté(e) le 4 août 2022 (modifié) Autrement, juste pour répondre à la demande ci-dessus je peux proposer ces quelques lignes : (defun c:TOPOALT (/ jsel i name n ALT pt) (and (or (setq jsel (ssget "_I" '((0 . "INSERT") (2 . "TCPOINT") (66 . 1)))) (setq jsel (ssget '((0 . "INSERT") (2 . "TCPOINT") (66 . 1)))) (setq jsel (ssget "_X" '((0 . "INSERT") (2 . "TCPOINT") (66 . 1)))) ) (repeat (setq n 0 i (sslength jsel)) (setq name (ssname jsel (setq i (1- i))) pt (cdr (assoc 10 (entget name))) ALT (atof (getpropertyvalue name "ALT")) ) (if (entmod (subst (cons 10 (list (car pt) (cadr pt) ALT)) (assoc 10 (entget name)) (entget name) ) ) (setq n (1+ n)) n ) ) (princ (strcat "\nUn total de " (itoa n) "/" (itoa (sslength jsel)) " blocs TCPOINT ont été modifié avec succès")) ) (princ) ) Tu n'auras juste pas les fonctionnalités d'export CSV, d'utilisation d'autres blocs que TCPOINT, etc... que peut fournir ALTPOINT 😉 EDIT: Bien évidemment, la concision de @(gile) est remarquable et tellement logique ^^" Bisous, Luna Modifié le 4 août 2022 par Luna Citer
(gile) Posté(e) le 4 août 2022 Posté(e) le 4 août 2022 Salut, Depuis ce sujet. (defun c:PTALT (/ ss i blk pt) (if (setq ss (ssget "_X" '((0 . "INSERT") (2 . "TCPOINT") (410 . "Model")))) (repeat (setq i (sslength ss)) (setq blk (ssname ss (setq i (1- i))) pt (getpropertyvalue blk "Position") ) (setpropertyvalue blk "Position" (list (car pt) (cadr pt) (atof (getpropertyvalue blk "ALT")))) ) ) (command-s "_attsync" "_name" "TCPOINT") (princ) ) Citer Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Erased Posté(e) le 4 août 2022 Posté(e) le 4 août 2022 Salut, je ne sais pas si les programmes proposés par Lunas et (gile) permettent d'éliminer de la sélection les blocs en fonction d'une plage d'altitude, mais il y a 10 points à l'altitude zéro. Bon courage. Citer Erased "Le risque de prendre une mauvaise décision n'est rien comparé à la terreur de l'indécision"Maimonide.
edouareo Posté(e) le 4 août 2022 Auteur Posté(e) le 4 août 2022 @(gile)Merci pour ta réponse, j'étais déjà tomber sur ce lisp mais autocad me met "; erreur: Demande ADS erronée" quand j'essaye de l'utiliser. Je ne sais pas trop à quoi ces du car ça marche visiblement chez d'autres personnes. Citer
Minocia Posté(e) le 4 août 2022 Posté(e) le 4 août 2022 Je complète la réponse d'Erased : 11 points à Z=0 et ces même 11 points ont leurs attributs ALT absent de leur définition de bloc : il faut donc synchroniser les blocs. J'espère que tu as les lignes de ruptures de ce levé TN. → bon courage ! Citer
edouareo Posté(e) le 4 août 2022 Auteur Posté(e) le 4 août 2022 @Luna Merci beaucoup également ! Pour le lisp "TOPOALT" cela ne marchait que pour la moitié des points ! trop bizarre ! Pour la commande ALTPOINT : CA MARCHE !! 1000 merci !!! Il faut pas faire entrer directement mais TCpoint. @Curlygoth Merci également de ta réactivité mais je me sentais pas trop de me lancer la dedans et du coup le pb est résolu... Bonne journée ! Citer
edouareo Posté(e) le 4 août 2022 Auteur Posté(e) le 4 août 2022 @Minocia @Erased Merci de vos réponses... Effectivement j'ai vu pour ces 11 points... Je pensais les supprimer car sur 650 points ça fait pas perdre beaucoup de précision sur l'ensemble du terrain. Par contre quand tu me parle de synchronisation de blocs et de lignes de ruptures tu me parle chinois... Edouard Citer
Erased Posté(e) le 4 août 2022 Posté(e) le 4 août 2022 Lignes de rupture (de pente), ligne d'arête,... Ce sont des lignes qui indiquent aux logiciels des obstacles comme des murs, des bordures de trottoirs, des talus, des fossés,... et qui doivent impérativement être prises en compte pour obtenir un MNT juste et précis. Par défaut, lors de la triangulation initiale, les logiciels relient les points 3D par trois (triangles) en prenant les plus proches ; il faut donc ensuite indiquer les "limites" à ne pas franchir pour que la modélisation restitue la réalité du relief du terrain. Synchroniser les blocs permet de leur ré-affecter des attributs, s'il en avait au départ bien sûr, afin de pouvoir les utiliser pour modéliser le terrain. Citer Erased "Le risque de prendre une mauvaise décision n'est rien comparé à la terreur de l'indécision"Maimonide.
Luna Posté(e) le 4 août 2022 Posté(e) le 4 août 2022 @edouareo, si je ne me trompe pas pour ALTPOINT, faire directement ENTER prends la valeur TCPOINT (ou TCPOINT*) par défaut si aucun autre bloc n'a été renseigné ^^" Tu peux également voir du côté de l'option PAramètres si jamais tu veux éditer un fichier CSV pour justement voir les points ayant des soucis ou non (avec la liste des matricules). @Erased, la fonction (atof) permet de renvoyer 0.0 (contrairement à (distof) qui renvoie nil) si jamais la chaîne de caractères renseignée dans l'attribut "ALT" ne correspond pas à l'écriture d'un nombre (donc si la chaîne est vide, ou bien autre chose qu'un nombre est renseigné). Donc s'il reste encore des Z=0.0 après utilisation c'est justement que tous les blocs à 0.0 sont des blocs ayant une erreur de renseignement au niveau de l'attribut "ALT" 😉 Bisous, Luna 1 Citer
edouareo Posté(e) le 4 août 2022 Auteur Posté(e) le 4 août 2022 @Erased Ok merci je comprends un peu mieux. Pour l'instant je suis passer de autocad à Revit puis à sketchup, en virant tout ce qui n'était pas des point topo dans le fichier DWG du géomètre. Si tu as quelque billes pour identifier les lignes de rupture, les lignes d'arrête etc. dans le fichier original, et comment les exploiter, je suis preneur.. Pour moi à part ces point topo, il n'y avait que de simple polyligne sans attributs ni position dans le fichier originel. Edouard Citer
Erased Posté(e) le 4 août 2022 Posté(e) le 4 août 2022 Non je ne peux pas t'aider pour les lignes d'arête : dans le fichier que tu as partagé il n'y a que les bloc qui représentent les points levés sur le TN, aucun autre dessin. Tu parles de simples polylignes, peut-être qu'elles représentent les lignes de rupture de pente. Sans indication de la position de ces liges de rupture de pente par la personne qui a effectué le levé, il est difficile voir impossible de les prendre en compte. Citer Erased "Le risque de prendre une mauvaise décision n'est rien comparé à la terreur de l'indécision"Maimonide.
Messages recommandés