Zobrazit plnou verzi příspěvku: Vytvoření složitější polyline

Fuskic
09.01.2018, 12:30
Zdravím, potřeboval bych poradit, jak udělat složitější čáru slouženou z vícero křivek. Ušetřilo by mi to fůru času. díky  Tu je jak by měla vypadat. 

zdrk
09.01.2018, 13:36
Co to zkusit jako dynamický blok?

Vladimír Michl
09.01.2018, 13:49

Jestli stačí rovný úsek, určitě dynamickým blokem. Nebo pak multičárou, ale bez oněch koncových bloků.

Fuskic
09.01.2018, 14:08
nebude to pouze rovná čára, ideální by bylo, kdyby šla i do oblouků vimplementovat. 

Fuskic
09.01.2018, 14:09
Dynamický blok nemůžu, protože to potřebuji na křivky

Vladimír Michl
09.01.2018, 14:43

V tom případě jedině programováním - odvozením nového typu objektu z objektu LWPOLYLINE (to už je trochu "vyšší dívčí").

Fuskic
09.01.2018, 14:56
To není dobré, a když by se jednalo pouze o křivku, řešení by tedy bylo před tu Multičáru? zkoušel jsem to složil, ale odrazuje mě tam věc, že nejde nastavit tloušťka jednotlivých čar. Nebo je řešení takové, že to musím poskládát po desetinách milimetru čáry jedné barvy a posléze na střed v řadě za sebou umístit tu čárkovanou? 

Vladimír Michl
09.01.2018, 15:07

Tloušťka jde většinou nahradit výplní, popř. jde změnit globálně (jako u jiných čar).

johny
09.01.2018, 16:28
No asi by šlo docela snadno napsat utilitku (nebo i najít), která by aplikovala specifickou sestavu na již nakreslenou polyline (jakože násobný offset + změna vlastností). Samozřejmě by to bylo jen statické, čili kdyby se změnila ta původní polyline, tak by se ostatní nezměnily...

Fuskic
09.01.2018, 17:54
fůha, tak to je pro mě španělská vesnice se přiznám. Nemáte někde někdo náhodou nějaký návod jak se z tohodle vymotat? 

Vladimír Michl
09.01.2018, 18:26
Vzhledem k tomu, že to je dost specifický požadavek a případný nástroj asi nepůjde úplně zobecnit a byl by jen pro vás - je asi jen možnost poptat vývoj takové utility. Johny nebo někdo u nás by si s tím určitě poradili :-)

johny
09.01.2018, 21:36
Návod jak napsat utilitku nebo jak hledat? Ukazuje se že není snadné něco kloudného dohledat. Napsat to není opravdu moc složité, ale chce to trochu mít základy.Přemýšlel jsem, že bych napsal něco univerzálnějšího, ale pak jsem dal přednost to napsat jak nejjednodušeji to jde, aby jste si to mohl snadno upravit k obrazu svému. V utilitě jsou použity autocadovské příkazy, takže si to můžete v příkazovém řádku odkoukat. Jediné co je, že mám ENG autocad a neznám přesně české překlady, ale vy pokud budete něco upravovat, tak to můžete klidně přepsat na příkazy české.Např "_.COPY" -> "KOPIE", (česky bez podtržítka a tečky)(vl-load-com)(defun c:SložitějšíKřivka ( / pnt enl ent ss i)  (if (setq pnt (getpoint "\nPrvní bod nebo <vyber>: "))    (progn      (setq enl (entlast))      (command-s "_.PLINE" "_none" pnt)      (if (not (equal enl (setq enl (entlast)))) (setq ss (ssadd enl))))    (progn      (princ "\nVyber křivky, ")      (setq ss (ssget "_:L" '((0 . "LWPOLYLINE"))))))  (if ss    (repeat (setq i (sslength ss))      (setq ent (ssname ss (setq i (1- i))))                   (vla-offset (vlax-ename->vla-object ent) 0.25)      (command "_.CHPROP" "_Last" "" "_Color" 30 ""               "_.PEDIT"  "_Last" "_Width" 0.25 "")      (vla-offset (vlax-ename->vla-object ent) -0.25)      (command "_.CHPROP" "_Last" "" "_Color" 30 ""               "_.PEDIT"  "_Last" "_Width" 0.25 "")      (command "_.CHPROP" ent "" "_Color" 41 ""               "_.PEDIT"  ent "_Width" 0.25 "")      (command "_.COPY" ent "" "_Displacement" "_none" '(0 0 0)               "_.CHPROP" "_Last" "" "_Color" 1 ""               "_.CHPROP" "_Last" "" "_LType" "Dashed" ""               "_.PEDIT"  "_Last" "_Width" 0.08 "")))  (princ))Utilita je LISPem, ten kód vezměte, uložte jako *.lsp někde do SupportPath, ujistěte se že ji máte i mezi SecurityPath, pak to načtěte příkazem _APPLOAD a uložte do Kufříku v dialogu appload.

Vladimír Michl
09.01.2018, 22:24
Hezké, pro CZ verzi jen "Dashed" -> "Čárkovaná".Plus bude potřeba doplnit ty bloky na začátku a na konci. Buď jako blok nebo "namalovat". Tedy např.[CODE](command "_INSERT" "StartBlock" (vlax-curve-getPointAtParam (vlax-ename->vla-object ent) 0) "" "" "")[/CODE]

Vladimír Michl
10.01.2018, 11:05

Tak nakonec to přeci jen stálo za zobecnění. Freeware utilita "toMulti" (ke stažení viz Download) převede vybrané křivky na multi-čáry (s případnými koncovými bloky) dle předefinované sady definic v tabulce v textovém souboru toMulti.tab (kdekoliv v cestě). Viz ukázkové definice v .tab souboru.http://www.cadforum.cz/cadforum/prevod-krivky-na-multi-caru-podle-definicni-tabulky-tip11750 

Vladimír Michl2018-01-10 13:25:30

johny
10.01.2018, 11:59
[QUOTE=Vladimír Michl]Hezké, pro CZ verzi jen "Dashed" -> "Čárkovaná".Plus bude potřeba doplnit ty bloky na začátku a na konci....[/QUOTE]
Díky -- nemyslel jsem že to úplně stojí za to --  ale vypadá to pěkně když člověk nakreslí tu polyline v libovolném tvaru a ono se to vzápětí celé prokreslí.Bloky musí být buď ve výkrese nebo uložené ve vyhledávacích cestách.(vl-load-com)(defun c:SložitějšíKřivka ( / pnt enl ent ss i)  (if (setq pnt (getpoint "\nPrvní bod nebo <vyber>: "))    (progn      (setq enl (entlast))      (command-s "_.PLINE" "_none" pnt)      (if (not (equal enl (setq enl (entlast)))) (setq ss (ssadd enl))))    (progn      (princ "\nVyber křivky, ")      (setq ss (ssget "_:L" '((0 . "LWPOLYLINE"))))))  (if ss    (repeat (setq i (sslength ss))      (setq ent (ssname ss (setq i (1- i))))                   (vla-offset (vlax-ename->vla-object ent) 0.25)      (command "_.CHPROP" "_Last" "" "_Color" 30 ""               "_.PEDIT"  "_Last" "_Width" 0.25 "")      (vla-offset (vlax-ename->vla-object ent) -0.25)      (command "_.CHPROP" "_Last" "" "_Color" 30 ""               "_.PEDIT"  "_Last" "_Width" 0.25 "")      (command "_.CHPROP" ent "" "_Color" 41 ""               "_.PEDIT"  ent "_Width" 0.25 "")      (command "_.COPY" ent "" "_Displacement" "_none" '(0 0 0)               "_.CHPROP" "_Last" "" "_Color" 1 ""               "_.CHPROP" "_Last" "" "_LType" "Dashed" ""               "_.PEDIT"  "_Last" "_Width" 0.08 "")            (command "._INSERT" "ArrowBlock"               "_Scale" 1               "_Rotate" "_none" (trans (vlax-curve-getFirstDeriv ent (vlax-curve-getParamAtPoint ent (vlax-curve-getStartPoint ent))) 0 1) "_none" (trans '(0 0 0) 0 1)                "_none" (trans (vlax-curve-getStartPoint ent) 0 1))      (command "._INSERT" "ArrowBlock"               "_Scale" 1               "_Rotate" "_none" (trans '(0 0 0) 0 1) "_none" (trans (vlax-curve-getFirstDeriv ent (vlax-curve-getParamAtPoint ent (vlax-curve-getEndPoint ent))) 0 1)               "_none" (trans (vlax-curve-getEndPoint ent) 0 1))))  (princ))

Fuskic
12.01.2018, 13:08
Mockrát Vám všem děkuji, jsem z toho nadšený a ušetří to mnoho času. Díky pánové!