| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Inseln in Hatch erkennen DXF (2238 mal gelesen)
|
FiRePhoeniX Mitglied Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau
Beiträge: 127 Registriert: 22.04.2007 AutoCad 2007
|
erstellt am: 08. Aug. 2011 09:23 <-- editieren / zitieren --> Unities abgeben:
Schönen guten Montag Forum. Ich hätte mal eine ungewöhnliche Frage, weiß auch nicht ob die mir jemand beantworten kann. Ich versuche es aber dennoch. Weiß jemand zufällig wie man eine Insel eines Hatch in einer DXF-Datei erkennen kann. Es geht um folgende Situation. Man hat ein Rechteck und in dem Rechteck noch eine Rechteck. Jetzt erzeugt man zwei "Hatches". Den ersten mit Insel, sprich eine Abzugsfläche. Den zweiten als Füllfläche. Wenn man dieses als DXF-Speichert muss es doch eine Möglichkeit geben zu erkenne wo den die Fläche abgezogen wird und wo die Fläche nicht abgezogen wird. Warum ich das ganze frage ist, weil ich das für ein externes Programm brauche. Vergleich man die Einträge in der DXF-Datei stellt man fest, das die beiden Objekte fast gleich sind. Nur das man bei dem Objekt ohne Inseln, eine Fläche mehr hat als bei der anderen. Könnte es sein, das die Fläche erst abgezogen wird und dann doch einfach gezeichnet? Bekomme dann aber ein Problem wie kann man so was ermitteln. Ich bedanke mich schon mal. Ist mein eine ziemlich komische Frage ich weiß, Sorry. Mit Freundlich Grüßen. FiRe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 08. Aug. 2011 10:32 <-- editieren / zitieren --> Unities abgeben: Nur für FiRePhoeniX
Hallo FiRe, ... das Thema ist recht komplex. Wie es in der DXF-Datei gespeichert wird, das habe ich jetzt nicht nachgeshen. Es besteht aber grundsätzlich ein Unterschied, ob die Schraffuren assoziativ oder nicht assoziativ angelegt wurden. Bei Letzterem werden die Umgrenzungspfaddaten an der Schraffur selbst gespeichert. Dann kannst du aus diesen die jeweiligen Umgrenzungen ermitteln. Diese sind von Außen nach Innen abgelegt. Diese kannst du dann auch auswerten (ähnlich der Polylinien). Sind die Schraffuren assoziativ angelegt, dann sind an der Schraffur die Umgrenzungsobjekte (ObjectID) gespeichert, dann ist die Auswertung deutlich schwieriger, weil eine Umgrenung aus Telelementen mehrerer Objekte bestehen kann. Da bedarf es schon einigen Aufwand, um dann die gesuchten Info's zu ermitteln. Ich würde versuchen den Workflow zu dahingehend zu überdenken, ob 3es nicht eine andere Möglichkeit gibt, die Flächen in das andere Programm zu übertragen. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FiRePhoeniX Mitglied Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau
Beiträge: 127 Registriert: 22.04.2007 AutoCad 2007
|
erstellt am: 08. Aug. 2011 11:18 <-- editieren / zitieren --> Unities abgeben:
Danke für die Antwort Brischke. Ich weiß leider das, dass Thema recht Komplex ist. Du hast Vollkommen recht, das man sich überlegen muss wie man die Flächen am besten erzeugt. Leider erhalte ich die Dateien vom Kunden und die DXF scheinen auch nicht unbedingt aus AutoCad zu stammen. Nach dem ich die Dateien in AutoCad eingelesen und wieder als DXF gespeichert habe musst ich fest stellen, das die Flächen "Komisch" aufgenommen worden sind. Sie Flächen haben in sich gefüllt Inseln. Und mit diesen Flächen habe ich leider ein Problem.. :-D Habe mal einen Beispiel aufgebaut, Links mit Abzugsfläche. Leider verstehe ich die Logik nicht ganz, denn es ist alles gleich bis das, dass zweite Beispiel eine Fläche mehr hat. Und diese Fläche ist auch genauso beschrieben wie die anderen. Könnte mir nur vorstellen, habe es aber noch nicht getestet, das erst einen gefüllte Fläche kommt dann die Abzugsfläche und dann wider eine gefüllt. Sprich im wechsle. Nur was ist dann wenn die Flächen weit auseinander liegen? Dann wer die Zweite Flache ja eine Abzugsfläche. Und damit wer die Logik hin... :-d 0 0 HATCH HATCH 5 5 F6 E1 330 330 1F 1F 100 100 AcDbEntity AcDbEntity 8 8 0 0 100 100 AcDbHatch AcDbHatch 10 10 0.0 0.0 20 20 0.0 0.0 30 30 0.0 0.0 210 210 0.0 0.0 220 220 0.0 0.0 230 230 1.0 1.0 2 2 SOLID SOLID 70 70 1 1 71 71 0 0 91 91 2 3 92 92 7 7 72 72 0 0 73 73 1 1 93 93 4 4 10 10 1.0 1.0 20 20 1.0 1.0 10 10 0.0 0.0 20 20 1.0 1.0 10 10 0.0 0.0 20 20 0.0 0.0 10 10 1.0 1.0 20 20 0.0 0.0 97 97 0 0 92 92 22 22 72 72 0 0 73 73 1 1 93 93 4 4 10 10 0.95 0.95 20 20 0.9499999999999996 0.9499999999999998 10 10 0.95 0.95 20 20 0.05 0.05 10 10 0.05 0.05 20 20 0.05 0.05 10 10 0.0499999999999998 0.0499999999999998 20 20 0.95 0.95 97 97 0 0 75 92 0 22 76 72 1 0 47 73 0.002733551317544 1 98 93 2 4 10 10 0.3507528304030529 0.95 20 20 0.9625720473144383 0.9499999999999996 10 10 0.3507528304030529 0.0499999999999998 20 20 0.9625720473144383 0.95 0 10 0.05 20 0.05 10 0.95 20 0.05 97 0 75 0 76 1 47 0.002733551317544 98 3 10 0.3261390304803626 20 0.9680392561092503 10 0.3261390304803626 20 0.9680392561092503 10 0.3206694345669803 20 0.8313613587574764
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 08. Aug. 2011 12:04 <-- editieren / zitieren --> Unities abgeben: Nur für FiRePhoeniX
... schau mal in der Hilfe nach Umgrenzungspfaddaten. Da findest du u.a. auch folgendes: 92 Flag für Umgrenzungspfadtyp (bitcodiert): 0 = Vorgabe; 1 = Extern; 2 = Polylinie; 4 = Abgeleitet; 8 = Textfeld; 16 = Äußere 93 Anzahl der Kanten im Umgrenzungspfad (nur wenn die Umgrenzung keine Polylinie ist) 72 Kantentyp (nur wenn die Umgrenzung keine Polylinie ist): 1 = Linie; 2 = Kreisförmiger bogen; 3 = Elliptischer Bogen; 4 = Spline ... Wenn du nun noch in der Hilfe nach den DXF-Gruppencodes des HATCH-Objekts suchst, dann steht dort u.a. folgendes: 91 Anzahl der Umgrenzungspfade (Schleifen) 75 Schraffurstil: Bereich “ungerader Parität” schraffieren (Stil Normal) 1 = Nur äußeren Bereich schraffieren (Stil Äußere) 2 = Gesamten Bereich schraffieren (Stil Ignorieren) AUs diesen Info's bekommst du doch schon eine ganze Menge der von dir im Moment noch mit Fragezeichen versehenen Informationen. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 08. Aug. 2011 12:06 <-- editieren / zitieren --> Unities abgeben: Nur für FiRePhoeniX
Noch mal ein paar Fragen genereller Natur: Was ist denn das Zielsystem? Welche Info's brauchst du überhaupt? Besteht die Möglichkeit, die Flächen an das Zielsystem aus AutoCAD heraus zu übergeben? Schreib mal mehr, was du eigentlich vor hast. Vielleicht ist ja der von dir begonnene Weg schon nicht ideal gewählt. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FiRePhoeniX Mitglied Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau
Beiträge: 127 Registriert: 22.04.2007 AutoCad 2007
|
erstellt am: 08. Aug. 2011 13:29 <-- editieren / zitieren --> Unities abgeben:
Danke nochmal Brischke, Sorry, das ich die ganzen Infos vergessen haben zu schreiben. Also das Zielsystem ist eine Eigenentwicklung von mir und einem kleinen Team. Wir basteln an einem keinen CAD bzw. GIS-System. Warum fragst du dich? Just for Fun!! :-D Haben auch eine Routine die, die DXF Datei ausliest. Haben leider das Problen das Schraffuren ohne Abzugsfläche(Wie ich oben schon beschrieben habe) auf einmal eine Abzugsfläche bekommen. Nutzen dafür die Funktion von GDI+. Leider erkennt GDI+ die interne Fläche als Insel und nicht als extra Fläche. Deswegen suche ich nach der Möglichkeit diese in der DXF-Datei zu finden. Das mit den Gruppencodes ist mir bekannt. Leider hat die ohne Abzugsfläche einfach eine Schleife mehr und sonst keine anderen Merkmale. Das ist wohl dann die Fläche die eingefärbt wird. In meinen Augen muss es doch eine Logik geben, den Autocad findet es doch auch heraus. Das einzige das ich nicht genau weiß ist der Gruppencode 92 dort steht eine 22 drin. Laut einer alten DXF-Hilfe, die ich hier habe, steht folgendes: Boundary path type flag (bit coded): 0 = Default; 1 = External; 2 = Polyline; 4 = Derived; 8 = Textbox; 16 = Outermost Vermute mal das es einfach ein Objekt ist das die Hilfe nicht kennt. Habe halt ein Paar DXF-Datei die ich irgendwann vom Kunden bekommen habe zum testen verwendet. Dabei ist es halt aufgefallen. Wie bereits erwähnt ist die Datei nicht die beste, aber man versucht auch Einzelfälle zu berücksichtigen. Falls es so einfach nicht geht ist auch nicht schlimm. Dann geht es halt nicht und ich suche einfach mal weiter.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 08. Aug. 2011 14:57 <-- editieren / zitieren --> Unities abgeben: Nur für FiRePhoeniX
Hallo FiRe, worauf ich hinaus will: Was willst du in der weiteren Software mit der Schraffutr oder deren Umgrenzungsdaten anstellen? Ich vermute, du willst die korrekte Fläche ermitteln. Derlei Dinge sind jedoch besser im CAD-System zu machen und dann eben nur über eine Schnittstelle an die weiterführende Anwendung weiter zu geben. Darum noch einmal konkret gefragt: Brauchst du (und falls JA und es nicht zu geheim ist) denn unbedingt die Umgrenzungsgeometrie in der Folgeanwendung? Die Gruppencodes können im Übrigen durch Addition mehrere Werte enthalten. 22 = 16 + 4 + 2 Du hast in den GCs drinnen, wieviele Umgrenzungspfade es gibt. Du hast auch drinn stehen, wieviele Kanten der jeweilige Pfad hat. Du hast auch drinn stehen, nach welchem Stil, die Schraffur erzeugt wurde (nur äußere oder ...) Daraus lässt sich logisch und eindeutig herleiten, ob da gerade eine Insel vorliegt oder nicht. Im Extremfall leitest du dir die Umgrenzungen her und musst abprüfen, ob diese innerhalb einer bereits bekannten äußeren Umgrenzung oder Insel liegt, wonach sich dann wiederum entscheidet, ob die Fläche abgezogen oder Addiert werden muss. Wie schon festgestellt sehr komplex .. ich würde versuchen wirklich alle Informationen in AutoCAD zu ermitteln, und auch nur diese dann an das Folgesystem weiter geben. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FiRePhoeniX Mitglied Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau
Beiträge: 127 Registriert: 22.04.2007 AutoCad 2007
|
erstellt am: 08. Aug. 2011 15:48 <-- editieren / zitieren --> Unities abgeben:
Holger danke noch mal. Also die Daten sind nicht wie du vermutet hast für die Flächen Ermittlung sondern dienen nur als "Hintergrundkarte", wobei die Idee nicht gerade schlecht ist. :-D Zudem ist DXF halt das zu zeit führende Austauschformat. (Leider!) Das mit den Addieren wusste ich gar nicht. Aber das genau bedeutet das jetzt für mich. Ich bleibe mal bei meinen Beispiel.. Kann auch die beiden Test DXF-Datein Hochladen bei Interesse. Sind aber nicht weiteres als zwei Rechtecke. :-D ..Haben beide den gleichen Stil, ich meine der Steht in 75. Beide haben eine 0 stehen. Und diese halt nur bei der letzten Fläche. Ich muss aber auch gestehen das ich habe keine richtig Doku (weder auf Deutsch, noch auf Englisch) von DXF-Datein gefunden. Nur die Standard Geschichte, was bedeutet was. Was ich bräuchte wer einen Doku die sagt z.b "wen Gruppencode XY gefüllt muss auch Gruppencode ZV gefüllt sein". Muss wahrscheinlich mal einen Anfragen bei Autodesk stellen. Vielleicht helfen die mir. Ich bedanke mich noch mal. Falls die noch aus einfällt sag bitte Bescheid. Gruß FiRE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 08. Aug. 2011 16:29 <-- editieren / zitieren --> Unities abgeben: Nur für FiRePhoeniX
... in deiner Sysinfo steht AutoCAD 2007. Stimmt das - oder hast du neuere Versionen zur Verfügung? Falls dem so ist, kannst du dich vielleicht vom Lisp verabschieden und gehst mal mit .Net (C# oder VB) an das Thema ran. Dort ist das deutlich einfacher zu handhaben. Im Zweifel kannst du auch in der .Net-Umgebung einen zusätzlichen Lispbefehl programmieren, der dir die Arbeit des Zerlegens der Umgrenzung abnimmt und entsprechend die Umgrenzungen und Inseln zurück gibt (z-Bsp als Koordinatenlisten, geradsegmente mit hinreichender Stückelung bei Kurven). In Lisp (sorry) kriegt man das sicher auch hin, aber man 'bricht sich die Finger'. Zum Thema DXF-Hilfe. Die wird eigentlich mitinstalliert. Es sollte auch in deinem Acad eine DXF-Referenz geben. In der stehen die GCs alle drinn .. aber die logische Interpretation bleibt trotzdem dir überlassen. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 09. Aug. 2011 11:03 <-- editieren / zitieren --> Unities abgeben: Nur für FiRePhoeniX
... vom Alfred kam der Hinweis per PM, dass .Net bereits ab AC2005 genutzt werden kann. Ich habe diesen Hinweis nicht gegeben, weil ich die Erfahrung gemacht habe, dass die API in den Versionen vor 2008 nicht ganz so umfangreich ist .. und ich nicht sicher bin, ob das Hatch bzw. das Boundig-Object schon vorhanden waren. Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FiRePhoeniX Mitglied Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau
Beiträge: 127 Registriert: 22.04.2007 AutoCad 2007
|
erstellt am: 09. Aug. 2011 12:40 <-- editieren / zitieren --> Unities abgeben:
Danke noch mal Brischke, wir belassen es erst mal bei. Ich schau mal nach was ich machen kann. Das AutoCad .Net hat ist mir klar, die entsprechenden Informationen könnte ich auch mit Lisp raus bekommen(mit recht viel Arbeit). Was ich aber machen möchte ich unabhängig von der Autocad, sprich nur mit der DXF zu arbeiten. Wie schon erwähnt ist DXF halt das Austauschformat Nummer eins zur zeit. Somit müssen wir das verarbeiten können. Zur Not muss der Anwender die "Hatches" überarbeiten, solange ich noch keine andere Lösung gefunden hab. Wen ich was finde melde ich mich. Danke noch mal für die Mühe. Gruß FiRe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |