| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Blockattribute in eine Textdatei schreiben (3038 mal gelesen)
|
ela-cad Mitglied
Beiträge: 77 Registriert: 10.09.2009 AutoCAD Architecture 2016
|
erstellt am: 30. Sep. 2009 00:09 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, vorweg: ich bin ein Neuling und darf mich mit AutoCAD Architecture 2010 beschäftigen. Mit unserem „alten“ Programm (PROCHEM-C) schreibe ich die Schriftfeldeinträge in eine Textdatei. Diese wird mit einer HPGL-Datei der Zeichnung in ein Spul-DIR gestellt und von dort über einen crontabjob in unser Datenbanksystem (CIM-DATABASE) eingespielt. Da hier nicht viel dran zu rütteln ist möchte ich diese Vorgehensweise mit AutoCAD nachbilden. Mein Problem (Schritt 1): Wie kann ich meine Schriftfeldattribute mit einem VBA-Script mit eine Textdatei schreiben? Ich habe ein Schriftfeld als Blockreferenz erzeugt: Name – Schriftfeld_Typ_9231 Attribute: ZCHNG = „zeichnungsnummer“ ZEILE1=“erste Zeile“ ZEILE2=“zweite Zeile“ Über DATENEXTRAKT kann ich die Daten schön auslesen aber!!!!!!!!
Es ist bestimmt eine FAQ und die Beiträge die ich gefunden habe sind „profihaft“ Frage 1: wie kann ich in der aktuellen DWG das Schriftfeld ansprechen Frage 2: wie kann ich dann die Attribute in eine Textdatei schreiben
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 30. Sep. 2009 00:33 <-- editieren / zitieren -->
Hi, ich hab nicht viel verstanden, von dem was Du schreibst und bin auch nicht glücklich mit dem, wie ihr tut (HPGL-Datei in DocumentManagementSystem ist ziemlich bedenklich, aus meiner Sicht und nur aus dem heraus, was Du schreibst,a lso eine sehr begrenzte Sicht). Aber die Aussage: >> Über DATENEXTRAKT kann ich die Daten schön auslesen aber Das 'aber' erkenne ich hier nicht. Datenextrakt schreibt die Attributsinhalte in eine Textdatei raus, wo ist jetzt das 'aber'? Denn eigentlich beantwortet dieses Deine abschliessende Frage 2. >> wie kann ich in der aktuellen DWG das Schriftfeld ansprechen
Schriftfelder sind Bestandteile von AttributReferenzen, Texten oder MTexten und keine eigene Geometrie. Wo und wie willst Du diese 'ansprechen', welche Aufgabe steht hier dahinter? Wenn Du nur das Ergebnis der Auswertung des Schriftfeldes sehen willst, dann hast Du in den oben genannten Objekten die Eigenschaft 'TextString', da steht das Ergebnis drin (ev. muß vorher regeneriert werden oder mittels Befehl 'schriftfeldakt' die bestehenden Schriftfelder aktualisieren). - alfred - ------------------ www.hollaus.at |
ela-cad Mitglied
Beiträge: 77 Registriert: 10.09.2009 AutoCAD Architecture 2016
|
erstellt am: 30. Sep. 2009 12:08 <-- editieren / zitieren --> Unities abgeben:
Hallo Alfred, um unser Vorgehen noch etwas zu vertiefen (nicht mit AutoCad): Ich bearbeite eine Zeichnung und drücke auf >speichern<. Nun wird ein Skript (Befehlskette) abgearbeitet, das die Einträge aus dem Schriftfeld wie z.B. „zeichnungsnummer“, “erste Zeile“, “zweite Zeile“, usw. mit einem Feldtrennungszeichen in eine Textdatei schreibt. Die Zeichnung selber wird wie gesagt als HGPL-Datei beigefügt. In der Datenbank werden die Texte in die entsprechenden Felder der Dokumentensuchmaske eingetragen und mit der Zeichnung „verknüpft“. In der Datenbank stehen nicht nur unsere Dokumente (Zeichnungen) sondern auch z.B. Rechnungen, Terminpläne, Konformitätserklärungen, Tabellen, Betriebsanweisungen, Wartungsvorschriften usw. Wie gesagt möchte ich bei AutoCad ein ähnliches Verhalten haben, wobei ich dann kein HPGL sondern ein PDF übergeben möchte. Die Datenbank dient NICHT dazu unsere DWG-Files zu verwalten. Bei dem Befehl DATENEXTRAKT kann ich zwar Textdateien erzeugen, erkenne aber nicht mehr die einzelnen „Datensätze“. Den Befehl müste ich auch in ein Makro einbinden, es sollten aber keine weiteren Abfragen kommen. Daher dachte ich mir als „Neuling“ ein VBA-Skript kann mir die Blockreferenz – Name: Schriftfeld_Typ_9231 suchen, und die entsprechenden Attributeinträge in eine Textdatei schreiben ohne Abfragen an den Anwender. Bei uns ist das Schriftfeld der Zeichnungsrahmen mit dem Zeichnungskopf und den entsprechenden Einträgen. Um die Übergabe an die Datenbank vornehmen zu können muß ich auch noch ein PDF erzeugen. Hierzu werde ich sicherlich auch noch um Hilfe rufen.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 30. Sep. 2009 12:46 <-- editieren / zitieren -->
Hi, >> Bei dem Befehl DATENEXTRAKT kann ich zwar Textdateien erzeugen, >> erkenne aber nicht mehr die einzelnen „Datensätze“. Die mit Datenextrakt erzeugte Datei wird Dir je Schriftfeld eine ASCII-Zeile ausgeben. Hast Du mehrere Schriftfelder in Deiner Zeichnung, dann bekommst Du eben mehrere Zeilen in Deiner ASCII-Datei. >> Den Befehl müste ich auch in ein Makro einbinden, >> es sollten aber keine weiteren Abfragen kommen
Kannst Du auch mit DATENEXTRAKT, musst nur einmal eine Exportdefinitionsdatei anlegen (DXE-Datei) und dann den Befehl mit einem Bindestrich davor aufrufen ( -DATENEXTRAKT ), dann geht's auch in einem Makro ohne Dialog. Und sind die Schriftfelder immer gleich (ist ja zu hoffen, sonst wird's auch nix - bzw. nicht so leicht - mit der Automatisierung), dann ist in der DXE-Datei festgehalten, welcher Attributsinhalt in welcher Spalte der Ergebnisdatei/-Zeile) steht. Willst Du es unbedingt trotzdem Programmieren, dann wird Dir hier am besten geholfen, wenn Du mal zeigst, was bisher an Code (ev. mit Beispielzeichnung dazu) existiert, damit wir dort ansetzen können. - alfred - ------------------ www.hollaus.at |
ela-cad Mitglied
Beiträge: 77 Registriert: 10.09.2009 AutoCAD Architecture 2016
|
erstellt am: 30. Sep. 2009 21:00 <-- editieren / zitieren --> Unities abgeben:
Hallo Alfred, der Hinweis war super. In einem Makro läuft alles auch ohne Anwendereingabe. Es kommt leider noch ein kleines aber! In der Textdatei von AutoCad "Schriftfeld_9514.txt" s.h. Anhang ist noch die Überschrift vorhanden und das Feldtrennungszeichen ist der TAB. In unserer Datei (Prochem-C) "ZI-0001234.txt" ist keine Überschrift und das Trennungszeichen ist der Strich >|<. Diese Unterschiede würde ich jetzt über ein Linux-Script ausgleichen und den Dateinamen auch an die Zchng-Nr anpassen, bevor ich die Dateien an die Datenbank "weiterleite". Diesen zusätzlichen Schritt würde ich gern von AutoCad erledigen lassen, wenn es über eine einfache VBA-Sub geht. Wir beginnen mit AutoCad bei NULL, und meine VBA-Kenntnisse habe ich mit Excel erworben und sind für den "Hausgebrauch". Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 30. Sep. 2009 22:14 <-- editieren / zitieren -->
Hi, verstehe ich richtig, Dein bisheriges Handling führt dazu, dass bereits die TXT-Datei fertig rauskommt, es geht nur mehr um Umbenennen der Datei und um das Entfernen der ersten Zeile (der Überschriften) und das Ersetzen von TAB nach '|'? Das geht mit AutoCAD-VBA gleich wie mit Excel-VBA. AutoCAD-seitig brauchst Du eigentlich nur den Namen der Datei, den kannst Du mit
Code: ThisDrawing.Name
herausholen.Das Datei öffnen, die Überschrift vernichten und die Tab's ersetzen ist ident zu anderen VBA's - alfred - ------------------ www.hollaus.at |
ela-cad Mitglied
Beiträge: 77 Registriert: 10.09.2009 AutoCAD Architecture 2016
|
erstellt am: 30. Sep. 2009 22:25 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|