Zobrazit plnou verzi příspěvku: PolyLine ve VB

orlik
08.07.2005, 14:32
Mohl by mne nekdo nakopnout (poradit)?
Jak rychle poznat ve vypisu polyline ve VB Autocadu po E.Explode (kde E.ObjectName = "AcDbPolyline") smer kruhovych oblouku, kdyz vsechny maji shodny smer otaceni ? Pritom krivka obsahuje oblouky jak proti tak i po smeru hod. rucicek. Potom pocatecni bod neni shodny s koncovym bodem predchazejiciho elementu.
Ve vypisu prikazu ... (edata ...) je smer rozlisen napr. (42 . -0.414214) tj. radius po smeru.

Diky

Chlebník
11.07.2005, 08:06

Nedávno jsem se setkal s něčím podobným ale v LISPu a řekl bych že v tomto je to naprosto shodné
důležité jsou tři údaje,
bod-1 = bod počátku oblouku (10 . x y z)
bod-2 = bod konce oblouku (10 . x y z)
a mezi nimy hodnota zaoblení (42 . +/-xxxxxxxxxx)
pak když spojím body bod-1 a bod-2 přímkou tak oblouk je od této přímky vlevo pokud hodnota zaoblení je < 0, a v pravo od přímky pak musí být hodnota > 0.
samotný poloměr se pak spočítá :
dist = (distance bod-1 bod-2)
x = 0.5 * dist
f = x * zaoblení
r = (x*x + f*f)/(2*f) i poloměr vychází kladný nebo záporný dle toho kam směřáje viz výše.

orlik
12.07.2005, 06:54
Diky, jelikoz ve vypisu VB nejsou rozliseny polomery kladnou a zapornou hodnotou, nelze zpusob z lispu pouzit. Nakonec se to snazim resit tak, ze najdu pokud tam je, nejaky primkovy element(ty maji smer spravny), nactu jeho koncovy bod, ktery musi souhlasit s pocatecni bodem nasledujiciho elementu. Pokud je tim elementem radius a navic opacneho smeru, prehodim jen krajni body. Cele to se musi odehravat v novem souboru, protoze na promennou nactenou z vykresu, ktera je 'read only', to nelze aplikovat. To aplikuju postupne na vsechny elementy. Ma to vsak jeden zadrhel, nemam to domysleno, pokud v polylajne neni ani jeden primkovy element.