Zobrazit plnou verzi příspěvku: Hromadné vkládání vrcholů křivky

Dostojevskij
04.11.2014, 08:46
Zdravím a rád bych se zeptal, zda je možno přidat stávající křivce vrcholy dle zadaných parametrů, např. počet či délka úseků. Používám na to utilitku DivBreak, jenže ta křivku rozdělí na samostatné segmenty, které potom musím zpětně pospojovat. Díky za případné tipy.

OPlavek
04.11.2014, 10:48
Jak to myslíte? Neumím si představit co potřebujete. Potřebujete načítat souřadnice nebo nějaký předpis s relativní vzdáleností nového vrcholu?

Dostojevskij
04.11.2014, 13:29
Mám například křivku představující osu projektované komunikace v JTSK. Její staničení je po kilometru, ale já potřebuji souřadnice staničení po 50-ti metrech, tj. souřadnice vrcholů křivky, které lze vyexportovat. Jak jsem již psal, používám utilitu DivBreak, kde lze zadat počet nebo délku úseků, ale následné spojování výsledných segmentů je složité. Jednoduše řečeno - jak vložit do křivky o dvou vrcholech (začátek a konec) další vrcholy po x metrech...

Mantlík
04.11.2014, 13:37

To ale spíš myslíte body na křivce po určené vzdálenosti a nikoliv vrcholy křivky, ne?(předpokládám, že nechcete křivku lámat po 50m ...)Myslím, že na to byl tip i s lispem, pohledejte

Seiner
04.11.2014, 13:45
A nestačil by DĚLÚ ?

johny
04.11.2014, 14:29
http://www.cadtutor.net/forum/showthread.php?78178-Distribute-vertices-along-a-polyline-with-a-specific-length-interval
Pozn. kód uložit jako *.lsp, v autocadu načíst _appload, příkaz spustit VRXLEN(Defun c:vrxlen ()
(if (and (setq pline (car (entsel "\nSelect Polyline:")))
(eq (cdr (assoc 0 (entget pline))) "LWPOLYLINE")
(setq int (getdist "\nEnter Interval:"))
(setq in int)
)
(while (Setq pt (vlax-curve-getPointAtDist pline int))
(setq ppt (vlax-curve-getparamatpoint pline pt))
(vlax-invoke
(vlax-ename->vla-object pline)
'AddVertex
(1+ (fix ppt))
(list (car pt) (Cadr pt))
)
(setq int (+ int in))
)
)
)

johny2014-11-04 15:11:28

Seiner
04.11.2014, 14:45
1. Je vhodné předefinovávat příkaz DEMO?2. IMHO stejnou práci udělá DĚLÚ, vložení staničního bloku a extrakce souřadnic. Ale to je, jak se komu líbí.

johny
04.11.2014, 15:32
[QUOTE=Seiner]1. Je vhodné předefinovávat příkaz DEMO?[/QUOTE]Není. Název byl autorem kódu volen obecný, určitě by se měl konkretizovat. Protože jsem ten kód převzal, nechtel jsem do něj původně zasahovat. Díky za upozornění na kolizi s českým příkazem DEMO... kód v předchozím příspěvku jsem upravil a jeho jméno změnil na VRXLEN.[QUOTE=Seiner]2. IMHO stejnou práci udělá DĚLÚ, vložení staničního bloku a extrakce souřadnic. Ale to je, jak se komu líbí.[/QUOTE]Pro staničení lze doporučit [CMD]DĚLM[/CMD] (_MEASURE)... ale jak píšete, jak komu co vyhovuje.

Vladimír Michl
04.11.2014, 16:15

Ideální pro výkaz by asi byla kombinace příkazů [CMD]DĚLM[/CMD] (s volbou Blok) a [CMD]EXTRDATA[/CMD]:http://www.cadforum.cz/cadforum/qaID.asp?tip=2284 Popř. [CMD]KŘIVPOLE[/CMD], popř. použít funkce AutoCADu Civil 3D.

Dostojevskij
08.11.2014, 13:28
Děkuji všem za tipy, obzvláště johnymu. Kód uložen, načten a funguje perfektně. To je přesně to, co jsem potřeboval. Díky!

Vladimír Michl
08.11.2014, 17:24

Na stránce Download je rovněž uložena starší utilita VtxDist, která umí přidávat vrcholy metodou "divide" i "measure" (délkou i počtem).