Bonjour à tous,
Je travail dans l'industrie du bâtiment comme beaucoup ici. Nos clients nous fournissent des fichier DWG. J'ai besoin de pouvoir extraire des informations de formats des vitrages, plaques de sol etc... Savez vous s'il est possible d'extraire ce genre d'informations à partir d'un fichier DWG?
∎ Repérage des panneaux.
∎ Calcul des quantités et export vers tableur
Actuellement je suis obliger de kutcher les pièces une par une et le temps perdu est extrêmement long...
Merci à vous pour votre aide.
Le titre du sujet a été modifié par un modérateur pour faciliter la recherche. Titre original:
Extraction formats depuis fichier DWG
Résolu ! Accéder à la solution.
Résolu par Y.AUBRY. Accéder à la solution.
Bonjour @arnaultgrieco,
Pour les calculs des quantités et extraction vers le tableau, je te conseille de regarder du coté de la commande "EXTRACTDONNEES" (ou "_DATAEXTRACTION" en anglais)
Sinon je t'ai joint le fichier tabloblo.lsp qui permet la réalisation d'un tableau automatique avec calcul du nombre de blocs comme le montre l'image ci-dessous
A+ Yoan
Yoan AUBRY
Sinon pour les dimensions, j'ai un le fichier "AD-Automatic Dimension Autocad.LSP" d'ajout de cotations automatiques (commande "AD") mais ca ne changera pas grand chose je pense...
A+ Yoan
Yoan AUBRY
@arnaultgrieco a écrit :
Bonjour à tous,
Je travail dans l'industrie du bâtiment comme beaucoup ici. Nos clients nous fournissent des fichier DWG. J'ai besoin de pouvoir extraire des informations de formats des vitrages, plaques de sol etc... Savez vous s'il est possible d'extraire ce genre d'informations à partir d'un fichier DWG?
∎ Repérage des panneaux.
∎ Calcul des quantités et export vers tableurActuellement je suis obliger de kutcher les pièces une par une et le temps perdu est extrêmement long...
Merci à vous pour votre aide.
Le titre du sujet a été modifié par un modérateur pour faciliter la recherche. Titre original:
Extraction formats depuis fichier DWG
Bonjour @arnaultgrieco,
Il nous faudrait un peu plus de précisions.
Quand vous dites que vous travaillez dans l'industrie du bâtiment, que faites-vous exactement ?
Utilisez-vous AutoCAD régulièrement ?
Etes-vous dessinateur ou n'utilisez-vous AutoCAD que pour consulter des plans ou faire des métrés ?
Que souhaitez-vous extraire exactement ?
-Les surfaces de plancher ?
-Les surfaces de vitrage ?
-La quantité de dalles de faux plancher ou de faux-plafond ?
En ce qui concerne le sol ou le faux plafond, sont-ils hachurés ?
S'il y a des dalles de faux plancher, est-ce sous forme de hachure ou de blocs posés les uns à côté des autres ?
Tout ceci ne sont que es exemples.
Quoiqu'il en soit, il faudrait plus de précisions pour savoir ce que vous souhaitez faire et sur votre niveau de connaissance sur AutoCAD.
AutoCAD est un logiciel de dessin technique créé par des dessinateurs pour des dessinateurs. Ce n'est pas un logiciel qui a été conçu juste pour consulter des plans. Bien qu'il soit utilisé de plus en plus pour çà. De ce fait, l'utilisation de celui-ci n'est pas si simple qu'on pourrait le penser. Même juste pour faire des métrés ou du quantitatif. Ca dépendra de l'état des fichiers.
Par conséquent, plus vous donnerez d'informations, plus il sera facile de vous aider et de trouver des solutions qui seront le plus abordables pour vous, selon la façon dont ont été gérés les fichiers de vos clients et vos connaissances d'AutoCAD 😉
@arnaultgrieco a écrit :
Savez vous s'il est possible d'extraire ce genre d'informations à partir d'un fichier DWG?
∎ Repérage des panneaux.
∎ Calcul des quantités et export vers tableur
Ce que vous souhaitez faire est tout à fait possible mais selon la manière dont ont été dessinés les plans, ça peut être plus ou moins facile.
Merci pour toutes ces réponses. Effectivement je n'ai peu être pas été assez précis dans la description du besoin.
Nous travaillons le plus souvent à partir de fichier fournis par nos client (DWG le plus souvent).
Il nous arrive d'avoir les parements hachurées sur le plan effectivement.
En ce qui me concerne je travail sur la partie façade principalement.
J'aimerai récupérer les information d’extraction de donné des façades.
Je vous ai mis un exemple concret en pièce jointe pour mieux étayer mes propos. (pièces hachurée)
En ce qui concerne mon niveau autocad il est assez limité mais je travail avec des gens du bureau d'étude confronté au même problème qui serons capable d'effectuer les manip que vous me proposerez sans aucun doute.
merci à vous.
Bonjour @arnaultgrieco,
Tu trouveras dans le zip ci-joint 4 DLL en fonction de la version AutoCAD utilisée
Dans AutoCAD, utilise la commande NETLOAD pour charger l'une des DLL
Ensuite la commande "EIB" (pour EXPORT_INFO_BATIMENT) te générera un fichier .csv avec l'ensemble des informations des polylignes fermées de la sélection que tu feras à l'écran.
Tu trouveras ci-joint un exemple de csv réalisé.
Je te conseille de basculer les entités dans des calques spécifiques pour mieux comprendre le tableau.
Pour cela regarde au niveau de la commande SELECTSIMILAR
Ci-dessous le détail du code réalisé :
Option Compare Text
Imports System.Linq
Imports System.IO
Imports AcadAp = Autodesk.AutoCAD.ApplicationServices.Application
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.DatabaseServices
Public Class Cmd_EXPORT_INFO_BATIMENT
Public Class ClINFO_BATIMENT
Public POS_X As Double
Public POS_Y As Double
Public CALQUE As String
Public HANDLE As String
Public COULEUR As Integer
Public LONGUEUR As Double
Public HAUTEUR As Double
End Class
'Commande EIB: Exporter les informations des batiments
<CommandMethod("EXPORT_INFO_BATIMENT", "EIB", CommandFlags.Modal)>
Public Sub EXPORT_INFO_BATIMENT()
Dim doc As Document = Core.Application.DocumentManager.CurrentDocument
Dim ed As Editor = doc.Editor
Dim db As Database = doc.Database
Dim FpDwg As String = doc.Name
Dim FnDwg As String = FpDwg.Split("\").Last
Dim RefDwg As String = Left(FnDwg, Len(FnDwg) - 4)
Dim FpEXP As String = FpDwg.Replace(".dwg", DATE_DU_JOUR_AAAAMMJJ_HHMMSS(Date.Now) & ".csv")
Dim LstINFO As New List(Of ClINFO_BATIMENT)
Dim INFO As ClINFO_BATIMENT = Nothing
Try
Dim psr As PromptSelectionResult = ed.GetSelection()
Dim ss As SelectionSet
If IsNothing(psr.Value) Then
Exit Sub
Else
ss = psr.Value
End If
If ss.Count > 0 Then
Using tr As Transaction = doc.Database.TransactionManager.StartTransaction()
For Each id As ObjectId In ss.GetObjectIds()
Dim ent As Entity = TryCast(tr.GetObject(id, AutoCAD.DatabaseServices.OpenMode.ForRead), Entity)
If TypeOf ent Is Polyline Then
Dim acPol As Polyline = CType(ent, Polyline)
If acPol.Closed = True Then
INFO = New ClINFO_BATIMENT
With INFO
.POS_X = acPol.StartPoint.X
.POS_Y = acPol.StartPoint.Y
.CALQUE = acPol.Layer
.HANDLE = "'" & acPol.Handle.ToString
.COULEUR = acPol.ColorIndex
Dim extents As Extents3d = acPol.Bounds
.LONGUEUR = Math.Round((extents.MaxPoint.X - extents.MinPoint.X) * 1000)
.HAUTEUR = Math.Round((extents.MaxPoint.Y - extents.MinPoint.Y) * 1000)
If .LONGUEUR > 0 And .HAUTEUR > 0 Then
LstINFO.Add(INFO)
End If
End With
End If
End If
Next
End Using
End If
LstINFO = LstINFO.OrderBy(Function(f) f.COULEUR).ThenBy(Function(f) f.LONGUEUR).ThenBy(Function(f) f.HAUTEUR).ToList
Catch ex As Exception
MsgBox(ex.ToString)
End Try
Try
Dim sw As StreamWriter
If (Not File.Exists(FpEXP)) Then
sw = File.CreateText(FpEXP)
sw.WriteLine("HANDLE" & ";" & "POS_X" & ";" & "POS_Y" & ";" & "CALQUE" & ";" & "COULEUR" & ";" & "LONGUEUR" & ";" & "HAUTEUR")
Else
sw = File.AppendText(FpEXP)
End If
For i As Integer = 0 To LstINFO.Count - 1
INFO = LstINFO(i)
With INFO
sw.WriteLine(.HANDLE & ";" & .POS_X & ";" & .POS_Y & ";" & .CALQUE & ";" & .COULEUR & ";" & .LONGUEUR & ";" & .HAUTEUR)
End With
Next
sw.Close()
MsgBox("Fichier " & FpEXP & " généré", MsgBoxStyle.Information)
Catch ex As IOException
MsgBox(ex.ToString)
End Try
End Sub
'Date au format du type 20200205_16H10M25
Public Shared Function DATE_DU_JOUR_AAAAMMJJ_HHMMSS(DATE_AT As Date) As String
Dim _ANNEE As String = DATE_AT.Year.ToString("0000")
Dim _MOIS As String = DATE_AT.Month.ToString("00")
Dim _JOUR As String = DATE_AT.Day.ToString("00")
Dim _HEURE As String = DATE_AT.Hour.ToString("00")
Dim _MINUTE As String = DATE_AT.Minute.ToString("00")
Dim _SECONDE As String = DATE_AT.Month.ToString("00")
Dim V_DATE As String = _ANNEE & _MOIS & _JOUR & "_" & _HEURE & "H" & _MINUTE & "M" & _SECONDE
Return V_DATE
End Function
End Class
A+ Yoan
Yoan AUBRY
Nota, j'ai considéré que l'ensemble des polylignes étaient horizontales et verticales pour me faciliter la tache.
En gros j'ai pris pour chaque polyligne le coin le plus en bas à gauche et le point le plus en haut à droite pour déterminer la LONGUEUR et la HAUTEUR.
De plus par rapport à ton exemple, j'ai appliqué un rapport x1000 par rapport aux distances réelles et j'ai arrondi au chiffre le plus proche.
A+ Yoan
Yoan AUBRY
Bonjour @arnaultgrieco
Parmi les réponses qui vous ont été données, si une (ou plusieurs) d'entre elles apporte une solution à votre problème ou vous a permis de mieux l'analyser et le comprendre, voulez vous avoir l'amabilité de cliquer sur le bouton APPROUVER LA SOLUTION en bas de la réponse qui apporte une solution?
Merci de ne pas accepter comme solution le message que vous êtes en train de lire.
Bonjour @arnaultgrieco
Si une des réponses résout votre problème ou vous a permis de mieux le comprendre, voulez vous avoir l'amabilité de cliquer sur le bouton APPROUVER LA SOLUTION en bas de la réponse qui apporte une solution?
Cela facilitera la navigation de nos utilisateurs qui pourront directement atteindre la solution
Sachez qui si vous avez marqué une réponse comme solution par erreur, vous pouvez annuler ce marquage en cliquant sur le menu du fil (les trois points verticaux) et choisir "pas la solution"
Merci de ne pas accepter comme solution le message que vous êtes en train de lire.
Bonjour,
bon je ne veux pas être désagréable et j'ai suivis les explications,
a vérifier les fichier .CSV et DWG
Ah mon avis il y a un loup et je ne suis pas saoul
deja dans le DWG il n y a pas de couleurs 9, ni, 150, encore moins la couleur 256
donc le CSV sorte de je ne saisou ces données,
ensuite sur l'extraction des polylignes qui s'avère marquer par des hachure,
si l'on prend ce que nous donne le CSV affiche les calques,
il n y a aucune relation entre les géométrie "partie béton en façades" dessiner avec des polylignes et des hachures
et les valeurs extraite
donc ce programme .DLL ne fonctionne pas...
Je vais essayer avec quelque chose de propre
Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.