Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Übernahme des Inhalts von IFC-Dateien in Excel Tabelle
#1
Hallo,

wer von Euch hat bereits Erfahrung mit IFC Dateien (Industry Foundation Classes). Diese Dateien beinhalten geometrische Informationen und zusätzliche Angaben zu Gebäuden. Die Struktur dieser Dateien ist prinzipiell für alle Anwendungen in gleicher Art festgelegt. Das ist genau der Punkt, an dem ich gerne mit Excel anbinden möchte. Ich benötige gewisse Daten der IFC Dateien (z.B. Flächendaten), die ich aus den Dateien auslesen und in Excel auflisten möchte. 

Vielleicht ist ein Excel User im Forum dabei, der bereits Erfahrung mit dieser Art von Dateien hat bzw. der mir einen Tipp geben kann, wie eine Anbindung an derartige Datentypen erfolgen kann.
Antworten Top
#2
Hi,

(13.04.2016, 18:38)sunny01 schrieb: Vielleicht ist ein Excel User im Forum dabei, der bereits Erfahrung mit dieser Art von Dateien hat bzw. der mir einen Tipp geben kann, wie eine Anbindung an derartige Datentypen erfolgen kann.

hier gibt es einen Analysator:
http://www.nist.gov/el/msid/infotest/ifc...alyzer.cfm
Antworten Top
#3
Hallo Ralf,

dieses Tool kenne ich bereits. leider kann ich damit nicht gezielt bestimmte Bereiche (z.B. Nutzflächen) der IFC Datei in ein Excel Dokument übernehmen. Am besten wäre ein Makro, das individuell anpassbar ist. Nach dem Starten des Makros sollten die Einträge in den jeweils vorher eingestellten Kategorien der IFC Struktur in das Excel Dokument übernommen werden. Vielleicht hat jemand im Forum schon Erfahrung mit dieser Art der Anwendung.
Antworten Top
#4
Hallo Sunny01,

ich habe keine Ahnung wovon du redest und was eine  IFC Datei ist. 

Als alter Praktiker kann ich aber individuelle Makros schreiben, auch Daten zerlegen oder aufteilen.
Am besten geht das an Hand einer Beispieldatei, wo ich sehe wo die Daten stehen und eine Ansicht
brauche wie sie zum Schluss aussehen sollen. Es nur als Text beschreiben bringt uns nicht weiter.
Ich brauche auch etwas Zeit dafür, je nachdem wie kniffelig es ist.

mfg  Gast 123
Antworten Top
#5
Hi,

(14.04.2016, 15:27)sunny01 schrieb: der IFC Datei in ein Excel Dokument übernehmen. Am besten wäre ein Makro, das individuell anpassbar ist. Nach dem Starten des Makros sollten die Einträge in den jeweils vorher eingestellten Kategorien der IFC Struktur in das Excel Dokument übernommen werden.

wie schon geschrieben wurde, ist es für die Makro-Praktiker gar kein Problem, Daten aus einer beliebigen Text-Datei in eine Excel-Tabelle zu übernehmen. Dazu muß aber bekannt sein, wie die Quelldaten aussehen und wie das Ergebnis sein soll: welche Werte sollen in welchen Spalten stehen, sollen sie noch umformatiert werden, brauchst Du alle oder nur Teile, ...

Also stelle bitte (D)eine IFC Datei zur Verfügung, siehe den als Wichtiges Thema: markierten Forums-Beitrag.
Deine IFC-Datei sollte mindestens etwa 10-15 Datensätze haben, sensible Daten anonymisiert. Vom Aufbau her muss sie aber dem Original gleichen.
Dein Wunschergebnis sollte in einer Excel-Datei dargestellt sein.
Die farbigen Texte sind anklickbare Links:

Hier steht, wie es geht:
Beitrag WICHTIG: Arbeitsmappen zur Verfügung stellen

Eine Bitte:
Anstatt Screenshots ist eine Datei oder ein Ausschnitt besser!
"Du gehst ja auch nicht in die Werkstatt und gibst ein Foto Deines kaputten Autos ab!"
Antworten Top
#6
Hallöchen,

Man kann die Datei zeilenweise einlesen und schauen, ob die jeweilige Zeile zu übernehmen ist.
Wie definierst Du denn auszuwählenden die Bereiche? Geht es Dir um Bereiche zwischen den Kommentaren, Bereich nach Zeilennummern oder die Schlüsselworten danach?

/* connection of properties to window ---------------------------------------------------------- */
#170 = IFCRELDEFINESBYPROPERTIES('2VA6TnyOX8AuOmD7nrYtBd', #2, $, $, (#152), #160);
#171 = IFCELEMENTQUANTITY('04vWNcpsvFggruOUINYYBD', #2, 'BaseQuantities', $, $, (#172, #173));

Beispieldaten siehe z.B. auch hier:
http://www.buildingsmart-tech.org/ifc/IF.../index.htm
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • sunny01
Antworten Top
#7
Hallo,

vielen Dank für die Info! Ich würde gerne mittels dem Code (=Makro) gewisse Klassen in IFC auswählen und die Einträge dieser Klassen spaltenweise in Excel übernehmen, z.B. die Nutzflächen (IfcQuantityArea - Net Floor Area). Anders formuliert sollten bei Aufruf dieses Makros die Daten aus der externen IFC Datei in die dafür vorgesehenen Spalten im aktuellen Excel Dokument übernommen werden.

Vielleicht habt ihr Vorschläge dafür! Ich weiß leider nicht, wie die Abfrage in dem VBA Code formuliert werden müsste, um das zu ermöglichen.
Antworten Top
#8
Hallöchen,

also, mit den bisherigen Informationen könnte man eine Inputbox programmieren, wo Du die Klasse eingibst, und Dir wird dann in Excel die komplette Zeile aus der IFC in eine Zelle Deiner Datei eingetragen. Du darfst Dich dabei allerdings nicht verschreiben.
Gibt es die Information häufiger in der IFC, werden die folgenden Zellen mit den Daten gefüllt. Ich würde dann die darunter liegenden nehmen.

Wäre das korrekt?

Wenn Du eine Liste der Klassen hast, könnte man auch mittels Auswahlfeld die Eingabe und somit Fehler vermeiden.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#9
Hallo,

natürlich kann die Ausgabe auch gerne mittels Input Box erfolgen. Es wäre auch eine Option dass das Einlesen der Daten aus der IFC Datei durch Doppelklick in eine gewisse Zelle erfolgt. Da ich derzeit noch nicht genau weiß, welche IFC Einträge ich schlussendlich benötige wäre es gut, wenn ich das im Code später noch anpassen kann. Wie bereits erwähnt wäre z.B. die Nutzfläche (IfcQuantityArea - Net Floor Area) ein Kriterium. Ein weiteres Kriterium wären die Materialien der Bauteile und die Massen dieser Bauteile (Flächen oder Volumenangaben). Ich habe zum Ausprobieren eine entsprechende Beispieldatei aus dem Web beigelegt,  in der entsprechende Bauteile (und somit Einträge) vorhanden sind.


Angehängte Dateien
.zip   Beispieldatei.zip (Größe: 331,57 KB / Downloads: 10)
Antworten Top
#10
Hallöchen,

mit diesem Code werden erst mal alle IFCQUANTITYAREA übernommen, das sind in der Beispieldatei 11 Stück. Der Eintrag erfolgt ab A1.
Die Zeichenfolge net flor area gibt es nicht in der Beispieldatei.
Das Suchwort ist jetzt erst mal fest programmiert, kann aber, wie gesagt, durch eine Inputbox flexibler gestaltet werden.

Modul Modul1
Sub IFC_Einlesen() 
'Variablendeklaration 
'String 
Dim strLine$, strCutter$, strSearch$, arrText 
'Long 
Dim lStart& 
'Dateneintrag ab Zeile 1 
lStart = 1 
'Suchwort, ggf. per Inputbox 
strSearch = "IFCQUANTITYAREA" 
'Datei Oeffnen mit Dialog 
Open Datei_Dialog For Input As #1 
'Schleife bis Dateiende 
Do While Not EOF(1) 
  'Zeile einlesen 
  Line Input #1, strLine 
  'nur importieren wenn strSearch vorhanden 
  'ggf. Großschreibung verarbeiten 
  If InStr(strLine, strSearch) > 0 Then 
    'Klammer und Semikolon am Ende abtrennen 
    strLine = Left(strLine, Len(strLine) - 2) 
    'Trennzeichen = 
    strCutter = "=" 
    'Zeilennummer abtrennen 
    arrText = Split(strLine, strCutter) 
    'Zeilennummer in Spalte A = 1 eintragen 
    Cells(lStart, 1) = arrText(0) 
    'Trennzeichen ( 
    strCutter = "(" 
    'Suchwort abtrennen 
    arrText = Split(arrText(1), strCutter) 
    'Suchwort in Spalte A = 1 eintragen 
    Cells(lStart, 2) = arrText(0) 
    'Trennzeichen , 
    strCutter = "," 
    'Resttext aufteilen 
    arrText = Split(arrText(1), strCutter) 
    'Resttext ab Spalte C eintragen 
    'Mit dem Bereich ab Spalte C 
    With Range(Cells(lStart, 3), Cells(lStart, Ubound(arrText) + 3)) 
      'Resttext eintragen 
      .Value = arrText 
      'Punkt durch Komma ersetzen 
      'Hinweis: wegen englichem VBA Punkt durch Punkt Smile 
      .Replace What:=".", Replacement:="." 
    'Ende Mit dem Bereich ab Spalte C 
    End With 
    'Zeile 1 erhöhen 
    lStart = lStart + 1 
  'Ende nur importieren wenn strSearch vorhanden 
  End If 
'Ende Schleife bis Dateiende 
Loop 
'Datei schließen. 
Close #1 
End Sub 
 
Private Function Datei_Dialog() As String 
Dim fd As FileDialog 
With Application.FileDialog(msoFileDialogFilePicker) 
.AllowMultiSelect = False 
If .Show = 0 Then Exit Function 
Datei_Dialog = .SelectedItems(1) 
End With 
End Function 
 

.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste