Vytisknout stránku | Zavřít okno

Vytvoření složitější polyline

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: AutoCAD
Popis fóra: Otázky kolem aplikací AutoCAD a AutoCAD LT, AutoCAD web, prohlížečů, DWG a DXF, Design Review, Navisworks, nadstavby, Drive a cloud Autodesk
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=25507
Datum vytištění: 04.čer.2026 v 14:25


Téma: Vytvoření složitější polyline
Odeslal: Fuskic
Předmět: Vytvoření složitější polyline
Datum odeslání: 09.led.2018 v 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. 



Odpovědi:
Odeslal: zdrk
Datum odeslání: 09.led.2018 v 13:36
Co to zkusit jako dynamický blok?


Odeslal: Vladimír Michl
Datum odeslání: 09.led.2018 v 13:49
Jestli stačí rovný úsek, určitě dynamickým blokem. Nebo pak multičárou, ale bez oněch koncových bloků.

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


Odeslal: Fuskic
Datum odeslání: 09.led.2018 v 14:08
nebude to pouze rovná čára, ideální by bylo, kdyby šla i do oblouků vimplementovat. 


Odeslal: Fuskic
Datum odeslání: 09.led.2018 v 14:09
Dynamický blok nemůžu, protože to potřebuji na křivky


Odeslal: Vladimír Michl
Datum odeslání: 09.led.2018 v 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čí").

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


Odeslal: Fuskic
Datum odeslání: 09.led.2018 v 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? 



Odeslal: Vladimír Michl
Datum odeslání: 09.led.2018 v 15:07
Tloušťka jde většinou nahradit výplní, popř. jde změnit globálně (jako u jiných čar).

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


Odeslal: johny
Datum odeslání: 09.led.2018 v 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...


Odeslal: Fuskic
Datum odeslání: 09.led.2018 v 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? 


Odeslal: Vladimír Michl
Datum odeslání: 09.led.2018 v 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 :-)

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


Odeslal: johny
Datum odeslání: 09.led.2018 v 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.


Odeslal: Vladimír Michl
Datum odeslání: 09.led.2018 v 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ř.

(command "_INSERT" "StartBlock" (vlax-curve-getPointAtParam (vlax-ename->vla-object ent) 0) "" "" "")



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


Odeslal: Vladimír Michl
Datum odeslání: 10.led.2018 v 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 - http://www.cadforum.cz/cadforum/prevod-krivky-na-multi-caru-podle-definicni-tabulky-tip11750
 


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


Odeslal: johny
Datum odeslání: 10.led.2018 v 11:59
Původně odeslal(a) Vladimír Michl Vladimír Michl napsal(a):

Hezké, pro CZ verzi jen "Dashed" -> "Čárkovaná".
Plus bude potřeba doplnit ty bloky na začátku a na konci....

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)
)


Odeslal: Fuskic
Datum odeslání: 12.led.2018 v 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é! 



Vytisknout stránku | Zavřít okno