-
Compteur de contenus
22 -
Inscription
-
Dernière visite
michouka's Achievements
Newbie (1/14)
0
Réputation sur la communauté
-
Tout simplement merci. C'est exactement ce dont j'avais besoin. Quelle maitrise
-
Bonjour, Plutôt que de dire que c'est vite fait, moi je dirais qu'en plus d'être vite fait, c'est bien fait !! Un grand merci à toi. Par contre histoire d'être encore plus exigent, est-il possible d'obtenir le résultat de la différence avec un facteur de 1000? Mon calcul serait plutôt du genre 247.607-247.549 = 58 et non 0.058 et s'il était même possible de toujours ajouter d= comme préfixe (je sais, je commence à être plus qu'exigent !!) Comme ça la valeur affichée serait d=58. Petite question en plus, pour définir le style du texte, sa hauteur, etc.. : tu vas bien rechercher la valeur par défaut dans Autocad de mon style de texte ou c'est "(list 5 (getvar "TEXTSIZE") 5 "Standard" (getvar "CLAYER") 0.0 0)" qui lui impose ?
-
Salut Didier, Non, je te rassure, je parle bien de texte et non pas d'attribut. Dans ma grande entreprise de transport ... nous utilisons des applications locales pour importer notre semis de points et dont l'altitude est reprise par un texte au même point d'insertion que le point lui même.
-
Salut, Je ne dis pas que ce n'est pas possible avec les champs. En effet, ta méthode fonctionne, je l'ai déjà utilisée à plusieurs reprises. Mais moi dans mon cas, je souhaite faire ça à la volée... J'ai pas mal de points à faire, et je gagnerai du temps en utilisant un lisp plutôt que de devoir refaire la même démarche par couple de points en passant par la boite de dialogue des champs. D'autant plus que les valeurs de départ correspondent à un semis de points de topo : du coup elles ne changent pas et donc les champs n'ont plus vraiment d'utilité dans mon cas. Merci tout de même pour ta réponse.
-
Bonjour à tous, J'aurais besoin d'un petit coup de main (plutôt d'un gros d'ailleurs) n'étant pas très familier avec le lisp. Voilà, je voudrais pouvoir insérer un texte (ou un bloc) dont la valeur serait la différence d'altitude entre deux points. Concrétement, je souhaiterais cliquer sur le texte (déjà présent sur mon dessin) qui indique l'altitude de mon 1er point puis cliquer sur le second texte(lui aussi présent sur mon dessin) et ensuite cliquer sur le point d'insertion de mon nouveau texte (ou bloc) qui serait bien la différence entre les deux index de mes sélections précédentes. J'ai bien vu une chose un peu similaire sur les champs, mais je suis incapable de l'adapter à mon cas. Merci d'avance.
-
merci pour vos réponses. C'est bien ça qui m'intéresse Gile merci encore.
-
Bonjour à tous, je voulais savoir s'il y avais un moyen de pouvoir identifier l'état de visibilité dans lequel se trouve le bloc dynamique et de récupérer cette info en VBA. Merci d'avance
-
(gile), Je viens d'essayer LATT c'est intéresant mais malheureusement, ça ne correspond pas à mes besoins. Dans mon cas, c'est à l'insertion du bloc, que j'ai besoin d'incrémenter l'attribut. Pour entrer un peu dans les détails, j'utilise ton lisp lors d'un relevé topographique sur le terrain. La manip consiste à insérer un bloc nommé "POINT" au fur et à mesure du levé. Le problème est que je dois sans cesse interrompre le lisp pour indiquer des informations complémentaires à mes points et du coup je suis obligé de relancer le lisp et de refaire la manip, à savoir : rechercher du bloc "POINT" dans la liste déroulante et ensuite retrouver à quel numéro je me suis arreté précedemment. En tout cas, merci pour tes conseils
-
Salut, Tout d'abord au rique de paraitre original, un grand merci (gile) pour ton travail. Petite suggestion: Je viens de découvrir le lisp INCATT et dans mon cas, j'ai besoin d'incrémenter toujours le même attribut du même bloc et ce qui m'aiderais vraiment ce serait de pouvoir appliquer le script toujours sur mon bloc nommé "POINT" (sans devoir le choisir dans la liste déroulante) et en plus de pouvoir repartir de ma dernière valeur d'incrémentation même si entre temps, j'ai effectué une nouvelle commande. Est-ce possible? Merci en attendant et encore bravo
-
Merci pour l'info (Gile). Par contre, une dernière petite question sur le sujet : comment je peux purger mon filtre à la fin de mon programme pour ne pas avoir un bug au cas où je relance ma macro ??
-
Sacha, je viens de mettre en application ton exemple de filtre, ça marche impeccable, mais ne connaissant pas le système de filtre, peux-tu m'éclairer sur le choix des valeurs de BaliseBlock(1)=67 ; BaliseBlock(2) =8 etc... Merci d'avance
-
Merci à vous pour votre aide, je mets ça en application dès que possible, en testant avec les filtres.
-
Bonjour, Je souhaite pouvoir faire une sélection sur les blocs dymamiques de mon dessin, et pouvoir retranscrire certaines valeurs d'attributs dans un fichier Excel. Pour le moment, je n'ai pas trouvé comment boucler uniquement sur les blocs dynamiques. A défaut, je tourne sur tous les objets du document. Si je pouvais avoir un petit coup de pouce. Merci. Sub quantitatif() Dim blockrefobj As AcadBlockReference Dim nom, proprietes, distance, designation, pkd, pkf Dim activeDoc As AcadDocument Dim varAttributes As Variant Dim Excelobj As Excel.Application Dim ExcelobjSheet As Excel.Worksheet Set Excelobj = New Excel.Application Excelobj.Visible = True Set ExcelobjWorkbook = Excelobj.Workbooks.Add Excelobj.Sheets("Feuil1").Name = "Quantitatifs" Excelobj.Cells(1, 1).Value = "Pk Début" Excelobj.Cells(1, 2).Value = "Pk Fin" Excelobj.Cells(1, 3).Value = "Zone de chantier" Excelobj.Cells(1, 4).Value = "Longueur (m)" Excelobj.Cells(1, 6).Value = "Designation" Excelobj.Cells(1, 7).Value = "Longueur (m)" Excelobj.Cells(1, 9).Value = "Connexes" Excelobj.Cells(1, 10).Value = "Longueur (m)" 'on met la 1ère ligne en gras Excelobj.Rows("1").Font.Bold = True 'on met la colonne C en gras Excelobj.Columns("C").Font.Bold = True 'on centre horizontalement les textes Excelobj.Columns("A:J").HorizontalAlignment = 3 'on modifie le format des colonnes Excelobj.Columns("A:J").NumberFormat = "0" 'on recupere le document actif Set activeDoc = ThisDrawing.Application.ActiveDocument 'on boucle sur les objets du document 'on defini j pour le nombre de blocs dynamique Dim j j = 0 For i = 0 To activeDoc.ModelSpace.Count - 1 Set nom = activeDoc.ModelSpace.Item(i) ' on teste le calque contenant les blocs zone travaux If nom.Layer = "ZONE_TRAVAUX" Then proprietes = nom.GetDynamicBlockProperties distance = proprietes(10).Value * 5 varAttributes = nom.GetAttributes designation = varAttributes(2).TextString pkd = varAttributes(0).TextString pkf = varAttributes(1).TextString Excelobj.Cells(2 + j, 1).Value = pkd Excelobj.Cells(2 + j, 2).Value = pkf Excelobj.Cells(2 + j, 3).Value = designation Excelobj.Cells(2 + j, 4).Value = distance j = j + 1 End If 'fin de boucle Next 'on defini k pour le nombre de blocs dynamique Dim k k = 0 For i = 0 To activeDoc.ModelSpace.Count - 1 Set nom = activeDoc.ModelSpace.Item(i) ' on teste le calque contenant les blocs armement futur If nom.Layer = "ARMEMENT_FUTUR" Then proprietes = nom.GetDynamicBlockProperties distance = proprietes(6).Value * 5 varAttributes = nom.GetAttributes designation = varAttributes(2).TextString Excelobj.Cells(2 + k, 6).Value = designation Excelobj.Cells(2 + k, 7).Value = distance k = k + 1 End If 'fin de boucle Next 'on defini l pour le nombre de blocs dynamique Dim l l = 0 For i = 0 To activeDoc.ModelSpace.Count - 1 Set nom = activeDoc.ModelSpace.Item(i) ' on teste le calque contenant les blocs connexes If nom.Layer = "CONNEXES" Then proprietes = nom.GetDynamicBlockProperties distance = proprietes(4).Value * 5 varAttributes = nom.GetAttributes designation = varAttributes(2).TextString Excelobj.Cells(2 + l, 9).Value = designation Excelobj.Cells(2 + l, 10).Value = distance l = l + 1 End If 'fin de boucle Next 'on créer un filtre Excelobj.Cells.Select Excelobj.Selection.AutoFilter 'on ajuste les colonnes Excelobj.Columns.AutoFit 'retour selection cellule A1 Excelobj.Range("A1").Select End Sub
-
merci de ton aide Didier, je suis finalement passé par la fonction Rouund (X / 50,2) * 50 ça marche impec
-
Bonjour à tous, Voilà ce qui m'ammène, je dois arrondir mes valeurs de textes au demi centimètre, mais je patine un peu quand à la façon de procéder. J'ai bien pensé à passer par Excel et ainsi utiliser la formule " =ARRONDI(X/50;2)*50" mais étant donné que je débute en VBA, je me demandais s'il n'y avait pas une façon plus simple de gérer ça. Une idée....
