Annonces
En raison d'une maintenance programmée, la communauté Autodesk sera inaccessible à partir de 22h PDT le 16 octobre pendant environ 1 heure. Nous vous remercions de votre patience pendant cette période.
Communauté
AutoCAD – tous produits - Français
Bienvenue sur les forums AutoCAD d’Autodesk. Partagez vos connaissances, posez des questions, et explorez les sujets AutoCAD populaires.
annuler
Affichage des résultats de 
Afficher  uniquement  | Rechercher plutôt 
Vouliez-vous dire : 

AutoCAD : Extraction formats depuis fichier DWG

9 RÉPONSES 9
RÉSOLU
Répondre
Message 1 sur 10
arnaultgrieco
480 Visites, 9 Réponses

AutoCAD : Extraction formats depuis fichier DWG

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

9 RÉPONSES 9
Message 2 sur 10
Y.AUBRY
en réponse à: arnaultgrieco

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

 

YAUBRY_0-1689843819884.png

 

A+ Yoan

Yoan AUBRY

EESignature

Message 3 sur 10
Y.AUBRY
en réponse à: Y.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

EESignature

Message 4 sur 10
_Steven_
en réponse à: arnaultgrieco


@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 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


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.

Steven

Ce post vous a été utile ? N'hésitez pas à aimer ce post.
Ce post a-t-il répondu à votre question ? Cliquez sur le bouton APPROUVER LA SOLUTION en dessous de la réponse.



« L’homme de bien n’exige pas de l’autre qu’il soit parfait, il l’aide à accomplir ce qu’il a en lui de meilleur. »
Lao Tseu
Message 5 sur 10
arnaultgrieco
en réponse à: _Steven_

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.

  • Formats ex : 1200 X 600, 600 X 600 etc...
  • Quantités et export vers tableur

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.

Message 6 sur 10
Y.AUBRY
en réponse à: arnaultgrieco

Bonjour @arnaultgrieco,

 

Tu trouveras dans le zip ci-joint 4 DLL en fonction de la version AutoCAD utilisée

YAUBRY_0-1689862779692.png

 

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

EESignature

Message 7 sur 10
Y.AUBRY
en réponse à: Y.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

EESignature

Message 8 sur 10
patrick.emin
en réponse à: arnaultgrieco

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.


Patrick Emin animateur de la communauté francophone


Vous avez trouvé un message utile? Alors donnez un "J'aime" à ce message!
Votre question a eu une réponse satisfaisante? Voulez vous avoir l'amabilité de cliquer sur le bouton
 APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Signez notre Livre d'Or
Message 9 sur 10
patrick.emin
en réponse à: arnaultgrieco

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.


Patrick Emin animateur de la communauté francophone


Vous avez trouvé un message utile? Alors donnez un "J'aime" à ce message!
Votre question a eu une réponse satisfaisante? Voulez vous avoir l'amabilité de cliquer sur le bouton
 APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Signez notre Livre d'Or
Message 10 sur 10
didman78
en réponse à: Y.AUBRY

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.

Publier dans les forums  

Autodesk Design & Make Report