| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: fataler Berechnungsfehler in columnativen Flächenwert (1456 mal gelesen)
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 22. Mai. 2014 10:46 <-- editieren / zitieren --> Unities abgeben:
Hallo! Es hat lang gedauert, aber ich bin auf einen fatalen Fehler in der Flächenberechnung von Acad gestossen. Es zeigte sich mir folgendermasen: In der Zeichnung links, liegen alle Flächen so wie sie erzeugt worden. Rechts habe ich selbige Flächen gesplittet nach Schraffurtyp kopiert. Markiere ich links alle Schraffuren, ergibt es 86 Flächen aber eine falsche Gesamtfläche von 7080 m2 Markiere ich nämlich alle gesplitteten Flächen (wiederum 86) recht erhalt ich eine Gesamtfläche von 7663 m2 Mit folgender "checker"-funktion erhalte ich in beiden Auswahlvariante 7663 m2 Call Autodesk support!
Code: (defun c:test ( / i ; increment en ; entity lay ; assoclist (entity . layer) layEn ; collect of lay layL ; used layer from picked areas ar ; area from hatch arl ; total area result ) (setvar "CMDECHO" 0) (setq arl 0) (if (/= (setq ss (ssget '((0 . "HATCH")))) nil) (progn (setq i 0) (repeat (sslength ss) (setq en (cdr (assoc -1 (entget (ssname ss i))))) (setq lay (cons en (cdr (assoc 8 (entget en))))) (setq layEn (cons lay layEn)) (setq i (1+ i)) ) ) ) (if (setq layL (_RemoveDuplicates (mapcar 'cdr layEn))) (repeat (length layL) (progn (foreach N layEn (if (= (cdr N) (car layL)) (progn (setq ar (_areaOfObject (car N))) (setq arl (+ ar arl)) ) ) ) (princ (strcat "\nLayer: " (car layL) "\nTotal area: " (rtos arl 2 2))) (princ) ) (setq layL (cdr layL)) (setq arl 0) ) ) (princ) ); calculate area of object (defun _areaOfObject (en / curve area) (setq curve (vlax-ename->vla-object en)) (if (vl-catch-all-error-p (setq area (vl-catch-all-apply 'vlax-curve-getArea (list curve)) ) ) nil area ) (progn (command "._area" "_O" en) (getvar "area") ) ) ; Erase duplicates in list (defun _RemoveDuplicates ( lst / foo index ) (defun foo (x) (cond ((vl-position x index)) ((null (setq index (cons x index)))) ) ) (vl-remove-if 'foo lst ) )
------------------ Gruss Dirk http://cadplayerlounge.blogspot.se [Diese Nachricht wurde von cadplayer am 22. Mai. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 22. Mai. 2014 10:49 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 22. Mai. 2014 10:56 <-- editieren / zitieren --> Unities abgeben:
Probleme?!!!! stark untertrieben - 583 m2 Differenz - Asfalt kostet ganz erheblich. Ist es besser Flächen von Polylinien oder Schraffuren zu berechnen? ------------------ Gruss Dirk http://cadplayerlounge.blogspot.se Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003 One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11
|
erstellt am: 22. Mai. 2014 11:55 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003 One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11
|
erstellt am: 22. Mai. 2014 12:40 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Und durch die kleinen Löcher entstanden sich selbst überschneidende Schraffurkonturen, die beim Kopieren teilweise korrigiert werden. Außerdem überschneiden sich Asphalt und Grasflächen. Ich würde sagen: "Gut das Fehler aufgetaucht sind", denn da sind tatsächlich Fehler im Plan - das ist aber nur teilweise ein AutoCAD Problem. Macht man es korrekt, sollte auch ein korrektes Ergebnis entstehen. ------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 22. Mai. 2014 12:58 <-- editieren / zitieren --> Unities abgeben:
Danke Udo für deinen Kommentar, die Lücken rühren tatsächlich von Textfreistellungen her. Ich hatte jedoch getestet, ob das ein Einfluss auf die Flächenausgabe hat. Gut zu wissen, dass man diese "Unsäuberlichkeiten" im Ergebnis sieht. Jedoch find ich es dann nicht ganz schlüssig, warum die Einzeilfläche korrekt, die Totalausgabe aber falsch angezeigt wird. Das hat mir heute ganz schön kopfzerbrechen bereitet. ------------------ Gruss Dirk http://cadplayerlounge.blogspot.se Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003 One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11
|
erstellt am: 22. Mai. 2014 13:09 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Da ich auch gern Flächen aus Schraffuren berechne, mache ich notwendige Textfreistellungen grundsätzlich nur über MTEXT Hintergründe (oder Blöcke). Die Blockreferenzen oder Mtexte lasse ich aber keinesfalls als Inseln bei der Schraffurflächenermittlung auswählen. ------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003 One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11
|
erstellt am: 22. Mai. 2014 13:20 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Dein Problem ist ín diesem Fall ein ganz anderes. Die Kumulative Summierung von Schraffurflächen summiert Bereiche, die sich überlappen nur einmal. Da du GRAS und ASFALT teilweise überlappend schraffiert hast, werden sie in der kombinierten Variante nicht doppelt gezählt, sondern nur die einfache Gesamtfläche (habe das mal mit einem Bild verdeutlicht!) ------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 22. Mai. 2014 15:05 <-- editieren / zitieren --> Unities abgeben:
Echt einsamme Spitze, dass du mir das an einem Beispiel mal erklärt hast. Dann ist es ja der fatale Fehler, den ich verursacht habe und nicht ein Problem, was Autocad hervorruft. Besten Dank! ------------------ Gruss Dirk http://cadplayerlounge.blogspot.se Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |