Vytisknout stránku | Zavřít okno

chyba v příkazu "PLOCHA"

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: Civil 3D, Map, InfraWorks, GIS
Popis fóra: Otázky kolem mapových a GIS aplikací AutoCAD Map 3D, Civil 3D, MapGuide, Topobase, Map Infrastructure Server, Raster Design a InfraWorks
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=9423
Datum vytištění: 13.kvě.2026 v 23:16


Téma: chyba v příkazu "PLOCHA"
Odeslal: alfred
Předmět: chyba v příkazu "PLOCHA"
Datum odeslání: 09.říj.2009 v 07:49
Používám utilitu ADDLEN pro měření sumy délek. V CIVILU 2010 jsem si všiml nesrovnalosti v naměřené hodnotě a začal jsem pátrat proč a došel jsem k této chybě. Civil mám spuštěný v režimu čistého AutoCadu, tak to možná není jen otázka Civilu, ale i dalších verzí 2010, což ale nemůžu vyzkoušet. V Civilu 2010 mám nainstalovaný SP1 i SP2.

Pokud použiji příkaz [CMD]PLOCHA[/CMD] (_AREA) a kliknu na objekt (křivku) tak mi za určitých okolností plochu křivky vypíše a za určitých ne, respektive u určité křivky ano a u určité ne.
Přikládám výkres, kde jsou nakresleny dvě křivky.
U první ve tvaru neuzavřeného obdélníku příkaz
(command "_area" "_e")

normálně změří plochu a obvod - vše je v pořádku

U křivky ve tvaru "Z" vypíše hlášku
"Selhal výpočet plochy"

Přičemž postačí přetáhnout koncový uzel první křivky tak aby z ní byla "klikatice" a příkaz přestane měřit také.

V AutoCadu 2006 toto fungovalo bezchybně.

Mohl by někdo zkusit zda se jedná skutečně o chybu?

Nahraný soubor:
uploads/20091009_074530_chyba_ve_mereni.zip" rel="nofollow - uploads/20091009_074530_chyba_ve_mereni.zip





Odpovědi:
Odeslal: martinfolber
Datum odeslání: 09.říj.2009 v 09:18
Dobrý den,
zkoušel jsem Váš výkres a mohu potvrdit, že záleží, jak ta křivka vypadá. Pokud při výpočtu plochy protíná hranice plochy sebe sama, tak není schopen ji spočítat. Plocha uvedená ve vlastnostech není u takovéto křivky pravdivá.
Pokud nemá křivka rozumný tvar, přikazem plocha <objekt> určitě její obsah nezískáme.


-------------
Martin Folber


Odeslal: alfred
Datum odeslání: 09.říj.2009 v 09:50
V tom případě se jedná o BUG!!
Problém ve funkci ADDLEN a i vdalších mých funkcích jsem vyřešil snadno (viz níže), ale to neřeší vlastní příčinu. Bylo by prosím možné sjednat u Autodesku nápravu? Jak je to s jinými verzemi AutoCadu? Nebo je to jen otázka Civilu 2010?


Ve funkci ADDLEN se tímto způsobem zjišťuje délka křivky:
 (command "_area" "_e" en)
 (setq tot_len (+ tot_len (getvar "perimeter")))


;kde en je entita a tot_len je délka (real)

Toto lze nahradit takto:
  (vl-load-com)
  (setq tot_len (+ tot_len (vlax-curve-getDistAtPoint en (vlax-curve-getEndPoint en))))


ale to funguje jen na neuzavrene krivky!




Odeslal: Vladimír Michl
Datum odeslání: 09.říj.2009 v 10:09
Příkaz [CMD]_AREA[/CMD] se chová asi logicky - obsah jde počítat jen u uzavřených hranic a pokud "náhradní" uzavření (první-poslední) vede k sebeprotínající se ploše, nemá výpočet obsahu smysl. Použití "obvodu" pro výpočet délky byla trochu oklika. Správný výpočet (pro aplikace) je:
 
(vlax-get object 'Length)
 
Nicméně tato funkce (je použitá i v okně Vlastnosti) nedává pro tu křivku v ukázce správné údaje - což je chyba. Nahlásíme pro opravu.
 
Moment, moment - spletla mně ta popiska u "Z" křivky, její skutečná délka nemá být 15. AutoCAD zobrazuje její délku dobře. A vrací ji správně i LISP funkce délky.
 
Pro AddLen to můžeme opravit přes tu vlastnost Length (je univerzálnější než staničení po křivce).


-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz helpdesk.arkance-systems.cz)


Odeslal: alfred
Datum odeslání: 09.říj.2009 v 10:24
Původně odeslal(a) Vladimír Michl Vladimír Michl napsal(a):

Příkaz [CMD]_AREA[/CMD] se chová asi logicky - obsah jde počítat jen u uzavřených hranic a pokud "náhradní" uzavření (první-poslední) vede k sebeprotínající se ploše, nemá výpočet obsahu smysl. Použití "obvodu" pro výpočet délky byla trochu oklika. Správný výpočet (pro aplikace) je:
(vlax-get object 'Length)
 
Nicméně tato funkce (je použitá i v okně Vlastnosti) nedává pro tu křivku v ukázce správné údaje - což je chyba. Nahlásíme pro opravu.
 
Pro AddLen to můžeme opravit přes to staničení po křivce.


V tom případě se příkaz choval nelogicky v předchozích verzích!

Příkaz na měření délky pro otevřené i uzavřené křivky lze takhle:
(vlax-curve-getDistAtParam en (vlax-curve-getEndParam en))

kde "en" je entita (křivka)

vlax-get v nápovědě nemám (i když nejak fungule)

Neměl jste náhodou na mysli toto?

(setq vlaobj (vlax-ename->vla-object en))
(vlax-get-property vlaobj 'Length)


to by také fungovalo


Odeslal: alfred
Datum odeslání: 09.říj.2009 v 10:28
Původně odeslal(a) Vladimír Michl Vladimír Michl napsal(a):

Moment, moment - spletla mně ta popiska u "Z" křivky, její skutečná délka nemá být 15. AutoCAD zobrazuje její délku dobře. A vrací ji správně i LISP funkce délky.


Ano, moje chyba - v souboru je skutečně napsaná špatná délka - omlouvám se. Původně jsem nakreslil skutečně křivku délky 15, ale mezi napsáním popisku a posláním jsem ještě s křivkou něco zkusil (hýbal jsem s koncovým bodem) a délku jsem zmršil...

Otázka je co je chyba - příkaz plocha měřil plochu ve všech verzí AutoCadu a i v C3D 2010 je u křivky ve vlastnostech nějaká plocha. Nicméně najednou se to začalo chovat jinak...


Odeslal: Vladimír Michl
Datum odeslání: 09.říj.2009 v 10:41
Ano, (vlax-get-property) je tatáž funkce. Vlastnost délka (Length) funguje i na další výkresové objekty odvozené od základních "liniových" objektů.
 
Zobrazovat číslo u nezjistitelné plochy asi není dobře. Mělo by to být prázdné. Možná se změnil vnitřní algoritmus výpočtu ploch. Ale plocha samoprotínajících se objektů není jednoznačně určitelná.
 
PS: AddLen byl upraven (stále ke stažení na BBS/VIP)


-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz helpdesk.arkance-systems.cz)


Odeslal: alfred
Datum odeslání: 09.říj.2009 v 12:01
Nevíte od jaké verze se to projevuje?


Odeslal: Vladimír Michl
Datum odeslání: 09.říj.2009 v 13:34
Poslední změna týkající se ploch byla v AutoCADu dělána v http://www.xanadu.cz/?art=1072 - Bonus Packu 1 k verzi 2009 - takže možná od tehdy.

-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz helpdesk.arkance-systems.cz)


Odeslal: alfred
Datum odeslání: 09.říj.2009 v 13:41
Zkoušel jsem to u kolegyně - AutoCad 2009 s nějakými service packy (1, 2?? ) bez bonus paků měří normálně postaru (a tedy podle mě dobře).

Čistý AutoCad 2010 nemohu vyzkoušet...



Vytisknout stránku | Zavřít okno