| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Flächen automatisch beschriften lassen mit Flächeninhalt und Länge (19284 mal gelesen)
|
Boe01 Mitglied
Beiträge: 5 Registriert: 07.01.2016 AutoCAD MAP 3D 2013
|
erstellt am: 07. Jan. 2016 10:24 <-- editieren / zitieren --> Unities abgeben:
Hallo liebes Forum, kurz zu mir ich bin in einem neuen Job und muss seit dem mit AutoCAD MAP 3D 2013 arbeiten. Bin also noch nicht so bewandert mit diesem Programm. Habe im Studium mit Vector Works gearbeitet, ist aber auch schon etwas her. Hier im Forum bin ich seit dem schon oft fündig geworden. Danke dafür. Ich habe auch mal einen Beitrag gefunden der mein aktuelles Problem lösen könnte. Leider finde ich den Beitrag (in diesem Forum) nicht mehr wieder. Zu meinem aktuellen Problem: Ich betreue das Friedhofskataster einer Gemeinde. Der Friedhof ist relativ groß und hat Grabflächen die von den Hinterbliebenen gepflegt werden und welche die von der Gemeinde gepflegt werden. Zusätzlich zu den restlichen Grünflächen, Hecken und Wege die durch die Gemeinde betreut werden. Jetzt soll ich herausfinden wie groß überhaupt die Fläche ist um die sich die Gemeinde kümmern muss. Sowohl die reine Fläche als auch die Länge (Stichwort: Rasenkanten pflegen) Mit dem Befehl _AREA kann ich mir zwar Flächen auswählen und nachher auch anzeigen lassen wie groß die Gesamtfläche ist, leider ist es aber sehr aufwendig jede Fläche einzeln anzutippen (mehrere Hunderte) und dann erhält man die Information auch nur ein mal. Was ich brauche / möchte ist ein Tool / Befehl welcher die Flächen berechnet und anschließend diese Information direkt als Text mit in die Zeichnung (die Fläche) setzt. Ich glaube mich erinnern zu können, von diesem Problem schon mal gelesen zu haben. Der Fragensteller hatte ein ähnliches Problem und wurde auf eine andere Seite verlinkt und dort gab es einen LISP Code der diese Aufgabe erledigen konnte. Leider finde ich weder diesen Beitrag noch den Code wieder (sowohl Google als auch Forensuche genutzt). Es wäre sehr schön wenn ihr mir helfen könntet. Danke im Voraus Mit LISP setze ich mich erst seit einigen Tagen auseinander und das reicht nicht im entferntesten um einen solchen Code selber schreiben zu können. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bbernd Ehrenmitglied Technischer Zeichner / Zimmerermeister
Beiträge: 1621 Registriert: 20.02.2009 AutoCAD 2021, 2023 nanoCAD 5 Gimp 2.10 Windows10 64bit 64 GB Arbeitsspeicher NVIDIA RTX A4000
|
erstellt am: 07. Jan. 2016 10:35 <-- editieren / zitieren --> Unities abgeben: Nur für Boe01
|
Ingenieur Studio HOLLAUS Mitglied CAD / CAFM / GIS Beratung-Programmierung-Schulung
Beiträge: 1049 Registriert: 06.11.2008 Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks) RKV .... CAFM+mehr HMap ... Vermessung und Verkehr OoC .... Raumplanung CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)
|
erstellt am: 07. Jan. 2016 10:39 <-- editieren / zitieren --> Unities abgeben: Nur für Boe01
Wie liegen die Daten denn vor? Sind diese als GIS-Formaten (SDF, SHP, SQLite, ...) verfügbar und sind es da schon Polygone (geschlossene Polylinien)? Oder ist es im Arbeitsablauf zulässig, die vorliegenden Daten zu GIS-Polygone umzubauen? Denn da Du Map3D hast, wäre es relativ einfach (auch ohne Programmierung) für GIS-Polygone Flächen und Umfang automatisch beschriften zu lassen. ------------------
www.cars4fun.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Guenther P Mitglied Techniker
Beiträge: 1134 Registriert: 14.05.2010
|
erstellt am: 07. Jan. 2016 10:42 <-- editieren / zitieren --> Unities abgeben: Nur für Boe01
Hallo und Herzlich Willkommen bei cad.de ! Du schreibst, dass du Map3D verwendest, dh. du kannst neben dem von Bernd beschriebenen Weg mittels GIS-Daten (sdf, shp)und FDO oder über die Bildung von Topologien zu deinen Anforderungen kommen. Wenn du dann dazu Fragen hast, es gibt hier auch ein Autodesk GIS Produkte - Board, da bist du dann richtig. HTH ------------------ - gü - ...then it comes to be that the soothing light at the end of your tunnel was just a freight train coming your way... (James Hetfield) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Boe01 Mitglied
Beiträge: 5 Registriert: 07.01.2016 AutoCAD MAP 3D 2013
|
erstellt am: 07. Jan. 2016 12:28 <-- editieren / zitieren --> Unities abgeben:
Danke für die schnellen Antworten. @ Bernd: Den Beitrag hatte ich zwar auch schon gefunden, er war aber nicht der den ich in erster Linie meinte. Wenn er mir hilft nehme ich ihn aber auch gern. Er verweist ja auf einen anderen Beitrag in dem "Tunnelbauer" einen Code teilt. Ich habe diesen Code kopiert in Notepad und mit der Endung .lsp abgespeichert und per drag&drop in meine geöffnete AutoCAD Datei gezogen. Der Befehl soll wohl LINKEDLENGHT heißen. Wenn ich diesen in die Befehlszeile eintippe erkennt er ihn aber nicht. nur die ersten drei Buchstaben. Habe ich da einen Fehler gemacht? Des weitern schreibt das Mitglied "holgerlab" das der Code noch geändert werden muss um die Ausgabe in m² zu erhalten. Ersetzt er diesen im CODE des LISP oder im Fenster "Schriftfeld" (der sich öffnet wenn man den Befehl FIELD eintippt) <- Den in diesem Fenster kann ich den Code nicht umschreiben. Aber er hat ein Bild von diesem Fenster angehängt (Leider kann man es nicht mehr öffnen) Daher bin ich verwirrt wo er die Änderung vornimmt.... Kurz und knapp. Leider ist mein Problem noch nicht gelöst... "CAD Huebner" schreibt auch das die "automatisierte Flächenermittlung und Beschriftung" zur Kernfunktionalität von 3D gehört. Leider sagt er nicht wie (mit welchem Befehl man diese anwendet). Weiß da einer mehr? Wie gesagt, ich würde gern x Objekte auswählen, einen Befehl eingeben (oder so) der dann in einem Abwasch der dann jedem ausgewählten Objekte jeweils ein Schriftfeld zuweist (am besten mittig) und dort die Informationen Fläche und Länge hineinschreibt. @ HOLLAUS und GuentherP ich glaube es gibt keine GIS Datei dazu. Wie gesagt ich habe dieses Projekt übernommen und kann den Vorgänger nicht mehr Fragen. Habt ihr einen Link oder ein paar Schlagwörter nach denen ich suchen kann? Bin ja gern bereit neue Wege zu gehen. Danke Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bbernd Ehrenmitglied Technischer Zeichner / Zimmerermeister
Beiträge: 1621 Registriert: 20.02.2009 AutoCAD 2021, 2023 nanoCAD 5 Gimp 2.10 Windows10 64bit 64 GB Arbeitsspeicher NVIDIA RTX A4000
|
erstellt am: 07. Jan. 2016 13:18 <-- editieren / zitieren --> Unities abgeben: Nur für Boe01
Hallo Boe01, vielleicht den Link nochmal anschauen, dort wird auf die Arbeit mit einem Schriftfeld hingewiesen. Im Anhang eine DWG, wo die Fläche und der Umfang mit einem Schriftfeld ermittelt wird. Wird die Fläche verändert ändert sich auch das Schriftfeld (nach REGEN). Mal testen.
------------------ Gruß Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 07. Jan. 2016 13:26 <-- editieren / zitieren --> Unities abgeben: Nur für Boe01
Hallo Boe01, der Befehl wird mit LNKFLD aufgerufen (das was ganz oben im Code nach (defun c: steht) Und dei entsprechende Änderung im Code musst Du dort vornehmen wo (ziemlich weit unten und fett) .Length steht. HTH Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Guenther P Mitglied Techniker
Beiträge: 1134 Registriert: 14.05.2010
|
erstellt am: 07. Jan. 2016 13:45 <-- editieren / zitieren --> Unities abgeben: Nur für Boe01
Zitat: Original erstellt von Boe01: Danke für die schnellen Antworten. @ HOLLAUS und GuentherP ich glaube es gibt keine GIS Datei dazu. Wie gesagt ich habe dieses Projekt übernommen und kann den Vorgänger nicht mehr Fragen. Habt ihr einen Link oder ein paar Schlagwörter nach denen ich suchen kann? Bin ja gern bereit neue Wege zu gehen. Danke
Hallo, du brauchst geschlossene Polylinien, im GIS-Jargon "Polygone" genannt. Mit dem Befehl "mapexport" kannst du ein SDF (AutoCAD-eigenes GIS-Format) erzeugen. Grundsätzlich gibt es 3 GIS-Elemente: Punkte, Linien, Polygone (Flächen) Zeichne einfach mal eine geschlossene Polyline, mit mapexport hast du dann verschiedene Auswahlmöglichkeiten Elemente zu wählen (händisch einzeln, auf Layer,...) - dann wählst du bei der Objektklasse "Polygon" aus und ganz wichtig das HAkerl bei "geschlossene Polylinien wie Polygone behandeln" setzen --> erstes GIS-File erzeugt. Dieses GIS-File lässt sich über die FDO "anhängen" und auch bearbeiten. SDF´s könnten sein zB die einzelnen Parzellen und der Übersichtsraster. Für jedes sdf können eigene Stile definiert werden und somit zB Flächenberechnungen. ------------------ - gü - ...then it comes to be that the soothing light at the end of your tunnel was just a freight train coming your way... (James Hetfield) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Boe01 Mitglied
Beiträge: 5 Registriert: 07.01.2016 AutoCAD MAP 3D 2013
|
erstellt am: 08. Jan. 2016 09:59 <-- editieren / zitieren --> Unities abgeben:
@ bbernd Danke für deine Hilfe. Das habe ich jetzt verstanden und klappt auch relativ gut. Trotzdem schließen sich noch zwei Fragen an. 1. Schriftart und Größe kann ich ändern um es auf das Ursprungsdesign zu bringen aber lässt sich auch der grau Hintergrundblock ausblenden? Ich finde den optisch nicht so schön. 2. Aktuell wähle ich ein Objekt (Grabstelle) aus tippe den FIELD Befehl ein, wähle das Objekt Fläche und Dezimal merkt er sich ja zum Glück, dann gebe ich aber jedes mal wieder Präfix und Suffix ein und klicke dann auf okay um den Text erstellen zu lassen. Zum Abschluss platziere ich ihn in der Zeichnung. Dann das ganze Spiel noch mal für die Länge... FIELD-Objekt wählen-Länge-Präfix / Suffix-platzieren. Für eine Handvoll Objekte ist das machbar aber bei mehreren Hundert hört der Spaß auf ... Kann man diese Befehle nicht für mehrere Objekte gleichzeitig auswählen oder am besten einen ganzen Layer? Weil sobald ich ein Objekt gewählt habe springt er wieder in die Eingabemaske von Schriftfeld. Und alle Objekte die ich vorher markiert habe verlieren ihre Markierung wenn ich den FIELD Befehl eintippe.... Da noch Ideen? Zum CODE von Tunnelbauer muss ich ergänzen das er bei mir ncht ganz funktionieren will. Danke @Spider_dd ich kann jetzt den Befehl in der Befehlszeile auswählen... Allerdings erhalte ich in der Textausgabe immer "####". Also vier Rauten. Egal ob Fläche/Polygon oder Schraffur. Auch wenn ich den Textteil von "holgerlab" ändere erhalte ich die ####.
Worin könnte der Fehler liegen. Habe den Text kopiert. In Notepad eingefügt, mit .lsp gespeichert und per Drag&Drop eingeworfen. @GuentherP An deinem Lösungsansatz versuche ich mich jetzt
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bbernd Ehrenmitglied Technischer Zeichner / Zimmerermeister
Beiträge: 1621 Registriert: 20.02.2009 AutoCAD 2021, 2023 nanoCAD 5 Gimp 2.10 Windows10 64bit 64 GB Arbeitsspeicher NVIDIA RTX A4000
|
erstellt am: 08. Jan. 2016 10:33 <-- editieren / zitieren --> Unities abgeben: Nur für Boe01
Hallo Boe01, Schriftfeldhintergrund kann man ausblenden, dann erkennt man sie aber nicht mehr, der Hintergrund wird nicht gedruckt. Um dein Vorgehen zu automatisieren bin ich leider keine Hilfe, sollte aber machbar sein, z. B. mit Lisp.
------------------ Gruß Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Guenther P Mitglied Techniker
Beiträge: 1134 Registriert: 14.05.2010
|
erstellt am: 08. Jan. 2016 10:34 <-- editieren / zitieren --> Unities abgeben: Nur für Boe01
Zitat: Original erstellt von Boe01:
@GuentherP An deinem Lösungsansatz versuche ich mich jetzt
Längerfristig wirst du IMHO mit Map und GIS glücklicher werden, da solche Problemstellungen "eleganter" zu lösen sind. Wie gesagt nochmals der Hinweis auf das GIS_Board. Viel Spaß dabei !
------------------ - gü - ...then it comes to be that the soothing light at the end of your tunnel was just a freight train coming your way... (James Hetfield) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 08. Jan. 2016 11:49 <-- editieren / zitieren --> Unities abgeben: Nur für Boe01
Hallo Boe01, ich habe mit die Sache mal angesehen. Im Prinzip machst Du alles richtig. Das mit den #### hängt dadran, dass die ObjektID in einem 64Bit Sytem offenbar anders ermittelt werden muss. Dafür habe ich was gefunden, was zumindest bei mir funktioniert. Ich gebe zu, dass ich nicht genau weiß was das macht, mit dem "vla- Zeugs" :-) kenne ich mich nicht aus. Folgender Code schreibt nun einen M-Text mit der Fläche. In den Teil (strcat "Praefix_hier %<\\AcObjProp Object(%<\\_ObjId " objID ">%).Area \\f \"%lu2%pr2\">% Suffix_hier" ) kannst Du an Stelle von Praefix_hier und Suffix_hier Deine Texte eintragen. Für die Länge mach die einfach eine zweite Datei, bei der Du .Area durch .Length ersetzt. Wenn Du dann noch ganz oben bei (defun c:lnkfld den Befehlsaufruf änderst (z. B. fld_len und fld_area) kannst Du beide Befehle nutzen. Code:
(defun c:lnkfld () ; Original von Tunnelbauer (setq a (car (entsel)) b (getpoint "\n Select Point: ")) (linkedlength a b) ) (vl-load-com) ;;get a reference to model space (setq *model-space* (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)) ) ) ;;pass this function an entity and a point (defun LinkedLength (ent pt / obj objID ip width str) ;;convert the entity to an object (setq util (cond (util) ((vla-get-Utility (vla-get-ActiveDocument (vlax-get-acad-object)))))) (setq obj (vlax-ename->vla-object ent) ;;get the object ID objID (if (vl-string-search "X64" (strcase (getvar 'PLATFORM))) (vlax-invoke-method util 'GetObjectIdString obj :vlax-false) (vla-get-Objectid obj)) ;;convert the point ip (vlax-3D-Point pt) ;;set the width for the MTEXT width 0.0 ;;set the string - this creates the field str (strcat "Praefix_hier %<\\AcObjProp Object(%<\\_ObjId " objID ">%).Area \\f \"%lu2%pr2\">% Suffix_hier" ) ) ;;Create the MTEXT entity containing the field. (vla-addMText *model-space* ip width str) )
HTH Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Boe01 Mitglied
Beiträge: 5 Registriert: 07.01.2016 AutoCAD MAP 3D 2013
|
erstellt am: 12. Jan. 2016 08:39 <-- editieren / zitieren --> Unities abgeben:
Erstmal vielen lieben Dank alle! Mit eurer Hilfe bin ich der Lösung schon sehr nah. Er habt es auch echt gut erklärt, so das selbst ich es nachvollziehen konnte Für "normale" Polygone funktioniert die Lösung jetzt wie ich es mir vorgestellt habe. Aber wie das immer so ist. Erst wenn man den Weg geht, sieht man die neuen Hindernisse. Vielleicht könnt ihr mir noch mal weiterhelfen. Ich habe also über das gesamte Grabfeld eine geschlossene Polylinie gezogen. Da nicht alle Teilflächen belegt, bzw. durch uns zu pflegen sind fallen einige raus. Diese Flächen wollte ich also "ausstechen". Dank Hilfe aus dem Forum habe ich die Polygone in REGIONen umgewandelt und habe anschließend die DIFFERENZ zwischen der großen und den kleinen Flächen berechnet. Die Flächenberechnung funktioniert noch (mit dem oben angegebenen Code) allerdings die Längen bzw. Umfangberechnung leider nicht mehr... Es liegt wohl daran, dass das Polygon jetzt eine Region ist. Gibt es einen Fix um den Code auch für eine Region funktionstätig zu machen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bbernd Ehrenmitglied Technischer Zeichner / Zimmerermeister
Beiträge: 1621 Registriert: 20.02.2009 AutoCAD 2021, 2023 nanoCAD 5 Gimp 2.10 Windows10 64bit 64 GB Arbeitsspeicher NVIDIA RTX A4000
|
erstellt am: 12. Jan. 2016 09:07 <-- editieren / zitieren --> Unities abgeben: Nur für Boe01
|
RL13 Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Bauwesen
Beiträge: 2373 Registriert: 23.10.2008 Civil 3D 2018.1 Civil 3D 2016 64 Bit SP 3 mit DACH und Extensions W7 Professional 64Bit HP Z440 Intel Xeon CPU E5-1620 v4 32 GB RAM NVIDIA Quadro P4000
|
erstellt am: 12. Jan. 2016 09:37 <-- editieren / zitieren --> Unities abgeben: Nur für Boe01
Zitat: Längerfristig wirst du IMHO mit Map und GIS glücklicher werden, da solche Problemstellungen "eleganter" zu lösen sind. Wie gesagt nochmals der Hinweis auf das GIS_Board.
ich schließe mich da Günther an! Die Aufgabenstellung Friedhofskataster schreit förmlich nach GIS und damit nach AutoCAD MAP was du ja auch im Einsatz hast, also nutze die Möglichkeiten und versuche nicht das Rad neu zu erfinden. ------------------ mfg Roman Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Goofy007 Mitglied Vermessungstechniker
Beiträge: 578 Registriert: 06.11.2004
|
erstellt am: 13. Jan. 2016 11:46 <-- editieren / zitieren --> Unities abgeben: Nur für Boe01
Hallo Boe01, auch ich teile die Meinung der GIS-Befürwortert. Selber arbeite ich sowohl mit GIS als auch mit CAD. Deine Aufgabenstellung ist eindeutig eine GIS-Aufgabe. Um es einfach zu erklären: CAD = Konstruktionsprogramm GIS = Verwaltungsprogramm lg Didi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nebuCADnezzar Mitglied
Beiträge: 292 Registriert: 17.10.2007 AutoCAD 2021 Mechanical 2021 Inventor 2021 64 bit Win 10 AMD Ryzen Pro 3700U
|
erstellt am: 24. Mrz. 2016 09:09 <-- editieren / zitieren --> Unities abgeben: Nur für Boe01
|
besele Mitglied
Beiträge: 62 Registriert: 14.07.2011
|
erstellt am: 10. Apr. 2019 16:00 <-- editieren / zitieren --> Unities abgeben: Nur für Boe01
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 10. Apr. 2019 16:24 <-- editieren / zitieren --> Unities abgeben: Nur für Boe01
Starte den Befehl SCHRIFTFELD (oder wie auch immer, Hauptsache du bist in dem Schriftfeld -Dialog), jetzt bastel dir dein gewünschtes Schriftfeld zurecht, unten im Dialog siehst du den Schriftfeldcode und somit auch wie dieser sich verändert, in Abhängigkeit von deiner Auswahl. Wenn du dann das Schriftfeld angepasst hast (im Bereich [zusätzliches Format] Umrechnungsfaktor dann sollte sich der Teil des bisherigen Schriftfeldcodes von %lu2%pr2\>% auf %lu2%pr2%ct8[1000000] ändern (oder so ähnlich). Die Einheitenangabe ist im Lisp "dumm" im Code enthalten, dort müßte dann "mm²" in "m²" geändert werden, oder man nimmt dieses "mm²" ganz aus dem Lisp heraus und packt es als Suffix mit den das Schriftfeld. Beispiel:"%lu2%pr2%ps[,m²]%ct8[1e-006] Der Lispcode macht ja neben dem ermitteln der ObjektID der Polylinie nichts anderes wie so einen Schriftfeldcode zusammen zu klöppeln, den Rest macht AutoCAD ganz von alleine. Womöglich so?
Code: (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa(vla-get-ObjectID #object)) ">%)." (vl-princ-to-string #property) " \\f \"%lu2%pr2%ps[,m²]%ct8[1e-006]\">% )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |