kallain Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 Bonsoir, J'ai un bloc (en fait des milliers) inseré en 2D (Z=0) avec un attribut texte qui représente l'altitude.J'ai besoin de déplacer ces blocs à leurs altitudes respectives. Je pensais que Covadis le faisait, mais j'ai beau chercher, je ne trouve pas :P Connaissais-vous une routine (Lisp ou autre) qui le ferais ?? Merci d'avance
lili2006 Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 Bonsoir, Si covadis le fait, il y a même deux solutions : Covadis 2D => Points Topographiques => Modification des altitudes et là tu coches le bouton radio "Mettre / garder les points en 3D". En fait cette option permet de transformer le texte de l'étiquette en une "hauteur "AutoCAD Covadis 3D => Construction 3D =>Transformation 2D => 3D et là, la gestion est plus souple (noms de blocs, calques, entités 2D,...) et surtout, les points non immatriculés peuvent être interpolés (le top quand on fait du projet !!). Aprés un lisp pour pouvoir le faire que depuis AutoCAD, il me semble que Bonuscad en a proposé mais je ne sais plus ou,... (ressemble alors à l'option 2D de covais, de mémoire !) Bon courage. [Edité le 28/9/2007 par lili2006] Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
nazemrap Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 Bonsoir, j' ai un vba qui peut être testé pour cela, sans garantie.Il faut mettre le nom de l 'étiquette où c 'est indiqué.Je ne sais pas si c'est adèquat ? Dim obj As AcadEntity Dim blocref As AcadBlockReference Dim attributs As Variant Dim strAttributes As String Dim I As Integer Dim ptbase(0 To 2) As Double Dim ptdest(0 To 2) As Double Public Sub place_altitude() ptbase(0) = 0: ptbase(1) = 0: ptbase(2) = 0 ptdest(0) = 0: ptdest(1) = 0: ptdest(2) = 0 Stop For Each obj In ThisDrawing.ModelSpace If obj.ObjectName = "AcDbBlockReference" Then Set blocref = obj attributs = blocref.GetAttributes For I = LBound(attributs) To UBound(attributs) If attributs(I).TagString = "ALTITUDE" Then 'mettre ici entre guillemets l'étiquette en majuscule ptdest(2) = attributs(I).TextString blocref.Move ptbase, ptdest End If Next End If Next End Sub
thierry.garré Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 Les commandes décrites par lili2006 fonctionent dans le cas ou il sagit de bloc contenant un atribut avec etiquette ALT et un attribut avec etiquette MAT si il sagit de point AUTOCAD en 2D et de TEXTE indiquant la valeur d'altitude, alors avec Covadis la bonne commande c'est COV EDITION/POINTS TOPOGRAPHIQUES/ALTITUDE SELON TEXTE Bon courage [Edité le 28/9/2007 par thierry.garré] Thierry Garré Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap
lili2006 Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 Re, Tu as raison thierry.garré, quand je fais de la topo, j'utilise toujours des blocs pts, alors,... Peut-être que ce n'est pas le cas pour le pb de kallain, auxquel cas ta réponse sera la bonne à son problème. Bonne soirée. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
kallain Posté(e) le 28 septembre 2007 Auteur Posté(e) le 28 septembre 2007 Suis chez des amisApérosans souris :P Thierry a raison les solutions de lili... j ai essayé ca marche pas le lisp de nanerap essai lundi desole pas de mulot :calim:
kallain Posté(e) le 28 septembre 2007 Auteur Posté(e) le 28 septembre 2007 COV EDITION/POINTS TOPOGRAPHIQUES/ALTITUDE SELON TEXTE oui ca marchemais le point d insertion c est celui de l attributmais pas celui du bloc meme en utisisant Burst pour convertir l attribut en texte Mon bloc : un cercle avec hachure Solid + 1attribut texte ex : . 56.34 Rappel : pas de souris :P [Edité le 28/9/2007 par kallain]
lili2006 Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 Re,C' est normal, puisque tu as convertis ton texte en attribut. Covadis reprend le point de base du texte pour en faire un attribut !Ou alors, il faut retourner dans dessin, bloc, base (ça c'est AutoCAD), ou bien essayes avec le trés fameux Lisp de (gile), Edit-BlocBon courage. [Edité le 28/9/2007 par lili2006] Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 Salut, Edit bloc ne permet pas de modifier certaines entités d'un bloc, il permet de modifier les propriétés de toutes les entités des définitions de bloc (au départ, j'avais fait ça pour "nettoyer" des collections de blocs récupérées ici ou là et les remettre à l'échelle ou l'unité qui convient, puis ça s'est etoffé au fur et à mesure des demandes) Tu peux essayer ce LISP après avoir remplacé NomDuBloc par le vrai nom du bloc (je ne l'ai pas testé) Après quelques tests, je modifie un peu la routine, pour plus de polyvalence il est demandé à l'utilisateur d'entrer le nom du bloc et l'étiquette de l'attribut qui contitent l'altitude. (defun c:bloc-alt (/ ins att) (vl-load-com) (and (setq name (getstring T "\nEntrez le nom du bloc: ")) (setq tag (getstring "\nEntrez l'étiquette de l'attribut: ")) (ssget "_X" (list '(0 . "INSERT") (cons 2 name))) (vlax-for b (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object) ) ) (setq ins (vlax-get b 'InsertionPoint) att (vlax-invoke b 'getAttributes) ) (foreach a att (if (and (= (vla-get-TagString a) (strcase tag)) (numberp (setq alt (read (vla-get-TextString a)))) ) (vla-Move b (vlax-3d-point '(0 0 0)) (vlax-3d-point (list 0 0 alt)) ) ) ) ) ) (princ) ) [Edité le 29/9/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 29 septembre 2007 Posté(e) le 29 septembre 2007 Bonjour à toutes et tous, (Gille) , j'ai testé avec un de mes blocs, il me renvoie cette erreur : Commande: bloc-alt ; erreur: Une exception s'est produite Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 29 septembre 2007 Posté(e) le 29 septembre 2007 Je viens de modifier un peu la routine pour qu'elle soit plus polyvalente (qu'elle fonctionne aussi avec des blocs ayant plusieurs attributs). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 29 septembre 2007 Posté(e) le 29 septembre 2007 Re, Une fois les renseignements donnés : Nom du bloc & attribut , rien ! ? Que doit-on avoir à suivre ? Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 29 septembre 2007 Posté(e) le 29 septembre 2007 La routine est construite avec les expression à l'intérieur d'un (and..)(and (expr1) (expr2) (expr3)) Cette méthode (plus concise) permet à la routine de s'arréter proprement si un des expression était nulle, mais ne renseigne pas sur l'origine de l'erreur. Donc,i la routine ne fait rien, soit :- il n'y a aucune référence de bloc qui correspond au nom entré ;- le bloc ne contient pas d'attribut avec l'étiquette entrée ;- la valeur de l'attribut n'est pas un nombre valide ;- les blocs sont déjà insérés à leurs altitudes respectives ! Si j'ai le temps je posterais une version qui contrôle la validité des argument et retourne des messages en cas d'erreur. [Edité le 29/9/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 29 septembre 2007 Posté(e) le 29 septembre 2007 Rere, Ok (Gile),. En effet, mon bloc étit déjà à la bonne altitude. A priori, ça fonctionne comme tu l'as pensé. Bonne journée. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
kallain Posté(e) le 1 octobre 2007 Auteur Posté(e) le 1 octobre 2007 Bonjour, c'est lundi, youpi. Désolé nazemrap, mais je ne connais rien en VBA :( (enregistrement ?, Chargement ?, Exécution???) Le Lisp de (gile) marche à merveille.Mes points sont en 3D. Merci (gile) ;) Nota- les blocs sont déjà insérés à leurs altitudes respectives ! J'avais déplacé qques blocs à la "main".Ils se retrouvent au double de leur altitudeEX: 57.23 passe à 114.46
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant