Vytisknout stránku | Zavřít okno

Vyskova kota (GGmenu)

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 360, prohlížečů, DWG a DWF, Design Review, Navisworks, nadstavby, 123D, A360 a cloud Autodesk 360
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=13782
Datum vytištění: 20.dub.2026 v 09:08


Téma: Vyskova kota (GGmenu)
Odeslal: DodoSVK
Předmět: Vyskova kota (GGmenu)
Datum odeslání: 22.říj.2011 v 07:53
Dobry den,

chcem sa vas opytat, ci by mi niekto z vas vedel pomoct s naprogramovanim lispu, ktory by vkladal blok s hodnotami ako je uvedene na prilozenom obrazku. Mam na mysli ten cerveny.

Cize dany text by vyjadroval vlastne hodnotu y pred lomitkom a hodnotu x za lomitkom.


Klasicka vyskova kota (na obr. v lavo) sa da vlozit pomocou GGmenu prikazom VKS ktory vklada blok 'Kota_vysky_R_GG.dwg'.

Kedze ide o nieco podobne, mozno by stacilo len mierne poupravit uz existujuci script GGmenu, a vytvorit novy jednoduchy blok aby bol dosiahnuty cerveny vysledok z obrazku.

To vsak uz sam nedokazem, preto vas ziadam o pomoc.

Dakujem za tipy.









Odpovědi:
Odeslal: Vladimír Michl
Datum odeslání: 22.říj.2011 v 08:49
Na běžnou "kačenu" není třeba nic programovat. Ani na takovouto výškovou kótu. Viz dynamický blok "Dodo":
http://www.cadforum.cz/catalog/block.asp?blk=8114 - http://www.cadforum.cz/catalog/block.asp?blk=8114


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


Odeslal: PepaR
Datum odeslání: 22.říj.2011 v 10:27
Dobrý den,

součástí GGmenu a i samostatných http://www.jremes.cz/index.php/spot-heights" rel="nofollow - výškových kót je nejen statická, ale i dynamická výšková kóta. Blok této výškové kóty stačí poupravit, případně se můžete inspirovat textovým polem, které automaticky odečítá výšku a vložit jej do bloku vlastního (viz Váš obrázek). Dynamická kačena má ale i své nevýhody, které jsou blíže popsány v dokumentaci pro výškové kóty (viz odkaz výše) nebo v sérii článků http://www.autodeskclub.cz/clanek/5581-autocad-ve-stavebni-praxi-6-dil-cast-a" rel="nofollow - AutoCAD ve stavební praxi, 6.díl na autodeskclubu.

Pokud byste si chtěl upravit lisp a přitom zachovat příkaz výškových kót z GGmenu, tak jej zduplikujte a přejmenujte si v lispu spouštěcí příkazy na jiné názvy. Pak si upravte blok, případně dodejte vlastní, a v lispu nahraďte název používaného bloku za ten Váš.


-------------
PepaR
https://www.jremes.cz" rel="nofollow - jremes.cz | https://www.stavlab.cz" rel="nofollow - stavlab.cz


Odeslal: DodoSVK
Datum odeslání: 23.říj.2011 v 14:28
Dakujem obom za tipy.

Nakolko vsak potrenujem, aby kota bola staticka, pouzitie textovych poli pre mna nieje vhodne.

Musim sa teda vybrat upravou bloku Kota_vysky_R_GG a nasledne upravou lispu kotvysk.lsp



Viem teda ze je nutne  vytvorit novy blok s nazvom napr.  Kota_vysky_R_GG_Y/X s potrebnym obsahom, a  v kotvysk.lsp doplnit o novy odsek s (defun C:YX .... ktory by riadil atributy v novoytvorenom bloku, cim by som dosiahol moj ciel.

Chapem to zatial spravne? pomaly sa do toho dostavam, no zatial neviem presne ocom pisem :) je to premna vsetko nove.

Ked som vsak otvoril zdrojovy kod lispu, ktory treba poupravit, zatocila sa mi hlava :) je to premna zatial bohuzial este poriadny gulas.

Vedel by mi niekto este pomoct s vytvorenim noveho bloku a upravou lispu? bol by som velmi vdacny, snazim sa postupne vsetko naucit aj sam, no toto by sa mi zislo skor mat hotove ako som schopny sa to naucit, preto ak by to niekto vedel spravit rychlo, popripade zislo by sa to aj jemu, bol by som velmi vdacny za pomoc.


Odeslal: alfred
Datum odeslání: 23.říj.2011 v 16:46
Utilita kotvysk.lsp neni tak slozita, ale obsahuje nekolikrat velmi podobnou utilitu lisici se jen v detailu. Finalni verze obsahuje dva popisy - cesky a anglicky v zavislosti na konfiguraci v zahlavi. Je v ni osetreno docela mnoho ruznych moznosti kde muze vzniknout chyba a to asi potrebovat nebudete. Take pracuje s dynamickym blokem, coz je trochu slozitejsi nez blok jednoduchy a to predpokladam Vy nepotrebujete. I kdyz pokud nebudete potrebovat aktualizace, tak to je stejne.
Utilitu by bylo asi lepsi zkusit napsat od zacatku. Nevim jak moc komplikovane by to bylo, ale asi moc ne. Kliknete do bodu, nactete souradnice, zformatujete si popis a vlozite blok. Pokud nebudete chtit aktualizovat pri zmene, ale pouze vkladat nove bloky do mista kam kliknete, tak to neni tak slozite. Take je dulezite zda nebudete chtit vkladat automaticky napriklad podle krivky.
Zkuste se do toho pustit, pokud narazite na konkretni problem, zkuste dotaz upresnit.

Blok si vytvorte novy a dejte prosim hlavne jiny nazev nez je u kotvyk.lsp aby se to nejak nepletlo - hlavně aktualizace vyskovych kot. Pokud utilitu kotvysk pouzivate, tak by jste si pripravil komplikace hlavne Vy. Nevim jestli budete potrebovat jeden nebo dva atributy.




Odeslal: DodoSVK
Datum odeslání: 23.říj.2011 v 18:51
Mozno sa opytam hlupost ale predpokladam ze niekde v tomto retazci sa zistuje vyska ktora sa nakoniec objavi ako hodnota atributu vkladaneho bloku vyskovej koty.

Ak by som chcel aby retazec zistil nie vysku (y suradnicu), ale x-ovu suradnicu, co je nutne zmenit?
Predpokladam ze to staci pozmenit minimalne. Ide mi hlavne o to miesto v retazci, kde lisp kaze nacitat tu ypsilonovu suradnicu...

dakujem za radu a usmernenie....


(defun zjisti_vysku (ko nasobitel prefix / k y HODNOTA_KOTY format_cisla format_koty olddimzin2)
      ;nasobitel:
      ;    - pro mm nasobitel=1000; pro
      ;    - pro m nasobitel=1; pro
  (setq y (cdr (assoc 10 (entget ko)))) ;nacte do y hodnotu bodu
  (setq y (trans y 0 1)) ; prevede z globalniho do aktualniho USS
  (setq y (cadr y))
  (if (< (abs y) 1e-011)(setq y 0)) ; melo by korigovat nepresnosti AutoCadu
 
  (setq HODNOTA_KOTY (/ y nasobitel))
  ;(setq y (/ (cadr (cdr (assoc 10 (entget ko)))) 1000)) ; zakomentovany puvodni prikaz

  (setq format_koty (getvar "DIMLUNIT"))
  (setq format_cisla 2)
  (cond
    ((= format_koty 1) (setq format_cisla 1))  ;Scientific
    ((= format_koty 2) (setq format_cisla 2))  ;Decimal
    ((= format_koty 3) (setq format_cisla 3))  ; Engineering (feet and decimal inches)
    ((= format_koty 4) (setq format_cisla 4))  ; Architectural (feet and fractional inches)
    ((= format_koty 5) (setq format_cisla 5))  ;Fractional
    ((= format_koty 6) (setq format_cisla 2))  ;Decimal
  ) ; cond

  (if (and (= 1 (getvar "INSUNITS" )) (= 4 (getvar "DIMLUNIT")))
    (progn
      (setq olddimzin2 (getvar "dimzin"))
      (setvar "dimzin" 1)
    )
  )
 
  (cond
    ((> y 0) (setq text (strcat prefix (rtos HODNOTA_KOTY format_cisla (getvar "LUPREC")))))
    ((= y 0) (setq text (strcat "%%P" (rtos 0.0 format_cisla (getvar "LUPREC")))))
    ((< y 0) (setq text (rtos HODNOTA_KOTY format_cisla (getvar "LUPREC"))))
  ) ; cond

  (setq k (entnext ko))
  (setq k (entget k))
  (setq k (subst (cons '1 (vl-string-subst "," "." text)) (assoc 1 k) k))
  (entmod k)
  (entupd ko)

  (if olddimzin2 (progn (setvar "dimzin" olddimzin2)(setq olddimzin2 nil)))
  (princ)
) ; defun



Odeslal: alfred
Datum odeslání: 23.říj.2011 v 19:22
V radku:
(setq y (cdr (assoc 10 (entget ko)))) ;nacte do y hodnotu bodu 



se nacita vlastnost vkladaciho bodu bloku.

(assoc 10 (entget ko))

vrati vlastnost ve formatu LIST - neco jako
(10 X-souradnice Y-souradnice Z-souradnice)

funkci (nth) nactete n-tou hodnotu z listu. Lze pouzit i funkce (car) (cadr), ale ty z hlavy nevim
Nemam moznost to ted vyzkouset, ale zkuste:

(setq y (nth (assoc 10 (entget ko)) 1))


nazornejsi by bylo nazvat promennou "X", ale to by jste musel upravit i zbytek funkce







Odeslal: DodoSVK
Datum odeslání: 23.říj.2011 v 19:38
vdaka za tip, no bud som spravil chybu ja alebo to nieje dobre

vymenil som

(setq y (cdr (assoc 10 (entget ko))))

za

(setq y (nth (assoc 10 (entget ko)) 1))


ale nefunguje to. Blok sa vlozi s vychodzou hodnotou atributu, a v prikazovom riadku sa napise:

Ukažte bod umístění kóty :
"nesprávný typ argumentu: consp 1"


Odeslal: alfred
Datum odeslání: 23.říj.2011 v 20:10
Hmm, smula.
Ouch
Bez vyzkouseni to bude slozitejsi. Kouknete do napovedy na funkci (nth)
Nejlepsi je spistit si VisualLisp (prikaz [CMD]VLIDE[/CMD] (_VLIDE) ) a tam mate jak pristupnou napovedu, tak konzoli na zkouseni prikazu, moznost debugovat a koukat se na hodnoty promennych za behu programu (nastroj kukatko).

U funkce (nth) si nejsem si jist s poradim parametru. Bud je:

(nth poradi list)
nebo
(nth list poradi)

Pokud jsem to prevratil tak by bylo spravne
(setq y (nth 1 (assoc 10 (entget ko))))




Odeslal: DodoSVK
Datum odeslání: 23.říj.2011 v 20:45
v napovede sa pise ze sprane je to takto
(nth n lst)

ked som zadal

(setq y (nth 1 (assoc 10 (entget ko))))

tak to nefungovalo tiez ale chybove hlasenie bolo uz ine.

Ukažte bod umístění kóty :
"nesprávný typ argumentu: 2D/3D bod: 6560.7"

hodnota 6560.7 bola skutocne X suradnica, ale nezapisalo ju do hodnoty atributu. Zrejme treba poupravit koli zmene ktoru som urobil este neaku inu cast scriptu, aby to cele prebehlo bez chyboveho hlasenia. Je to tak?

ci ani (setq y (nth 1 (assoc 10 (entget ko)))) nie je spravne kedze to nefunguje a zmenu treba hladat stale v tomto kratkom retazci?


Odeslal: alfred
Datum odeslání: 23.říj.2011 v 21:01
A co vlastne potrebujete? Potrebujete jen vkladat ty bloky dle kliknuti?
A nebo potrebujete take pozdejsi aktualizaci? Potrebujete vkladat blok v zavislosti na meritku kotovaciho stylu a s formatem dle nastaveni jednotek (metry, mm, palce?

Pokud tohle vsechno nepotrebujete tak je lepsi napsat trivialni novou utilitu. Ta bude velice prehledna. Pokud zacnete upravovat se slozitejsi utilitou, jako  je na vkladani vyskovych kot, tak jen promazani zbytecnych radku Vam zabere mnohem vice casu!


Odeslal: DodoSVK
Datum odeslání: 23.říj.2011 v 21:11
No, je pravda ze zrejme je jednoduhsie napisat novu utilitu, no priznam sa ze Autolisp som dnes otvoril prvy krat v zivote, takze aj trivialna vec je premna problem.


V uz existujucom scripte mam aspon ako taku sancu sa zorientovat a upravit ju, lebo kedysi davno som skusal programovat v inom programovacom jazyku, tak aspon to mi pomoha...


Dosiahnut chcem toto:

chem vkladat bloky len podla kliknutia, a najlepsie by bolo keby boli rovno v tvare ako som ukazoval v obrazku pri otvoreni temy.

neskorsiu aktualizaciu nepotrebujem, respektive sa jej chcem vyhnut, co sa pouzitim POLI  neda.

Je dolezite premna aby atributy mali hodnoty podla mojho USS, nie podla globalneho.

Tiez by bola fajn ta zavislost na meritku kotovacieho stylu.  


Odeslal: alfred
Datum odeslání: 23.říj.2011 v 21:47
Zkuste tohle:

blok:
uploads/20111023_214400_stanic-XY.dwg" rel="nofollow - uploads/20111023_214400_stanic-XY.dwg

LISP
uploads/20111023_214455_stanic-XY.LSP" rel="nofollow - uploads/20111023_214455_stanic-XY.LSP


To meritko podle kot to neumi.

PS. Zkuste ten VisualLisp - pokud jste uz programoval, tak to hodne pomuze. Je to prijemne prostredi se syntaxi, debugerem, ... , proste vsim co pro vyvoj ve VisualLispu potrebujete.





Odeslal: alfred
Datum odeslání: 23.říj.2011 v 21:56
Zapomnel jsem, ze pri uploadu na server CadForum se prejmenuji soubory.

Takze jeste dodam, ze blok se musi jmenovat "stanic-XY" a utilita se spousti "stanic-XY"



Odeslal: Martin Bielina
Datum odeslání: 23.říj.2011 v 22:09

Doplnění předchozího příspěvku - odpověď na otázku co je nutné změnit

změnit je nutné původní (řádek č.7):
(setq y (cadr y))

na nové
(setq y (car y))



Odeslal: DodoSVK
Datum odeslání: 23.říj.2011 v 22:46
Původně odeslal(a) Martin Bielina Martin Bielina napsal(a):

Doplnění předchozího příspěvku - odpověď na otázku co je nutné změnit

změnit je nutné původní (řádek č.7):
(setq y (cadr y))

na nové
(setq y (car y))




skusil som to este upravit podla toho co pisete vyssie, ale nepomohlo...stale to iste chybove hlasenie Ouch  aj tak vdaka.


Odeslal: DodoSVK
Datum odeslání: 23.říj.2011 v 22:51
Původně odeslal(a) alfred alfred napsal(a):

Zapomnel jsem, ze pri uploadu na server CadForum se prejmenuji soubory.

Takze jeste dodam, ze blok se musi jmenovat "stanic-XY" a utilita se spousti "stanic-XY"




dakujem velmi pekne, vpodstate toto som chcel dosiahnut tazke mi to velmi pomoze.

Akurat neviem preco ked dany blok vkladam tak sa mi vypnu vsetky uchopy ktore mam prednastavene a zakazdym si musim zvolit nanovo neaky, co je dost neprakticke Cry

a este koty X-ove by som chcel mat v absolutnej hodnote, tzn. 234.12/5.55 a nie 234.12/-5.55

inak je to uz takmer dokonale Clap dobra praca


Odeslal: alfred
Datum odeslání: 23.říj.2011 v 23:11
Původně odeslal(a) DodoSVK DodoSVK napsal(a):



Akurat neviem preco ked dany blok vkladam tak sa mi vypnu vsetky uchopy ktore mam prednastavene a zakazdym si musim zvolit nanovo neaky, co je dost neprakticke Cry

a este koty X-ove by som chcel mat v absolutnej hodnote, tzn. 234.12/5.55 a nie 234.12/-5.55

inak je to uz takmer dokonale Clap dobra praca



Vypnuti uchopu byla chyba. Posilam opravu.
uploads/20111023_230831_stanic-XY.LSP" rel="nofollow - uploads/20111023_230831_stanic-XY.LSP

Pokud potrebujete absolutni hodnotu x tak si za
  (setq x (nth 0 point))
pridente radek:
  (setq x (abs x))

Ale zda se mi to divne.  Nevim co to ma delat, ale predpokladam, ze se jedna o staniceni a pokud jste v zaporne oblasti, tak to ma psat zaporna cisla, ne?








Odeslal: DodoSVK
Datum odeslání: 24.říj.2011 v 09:37
Dakujem za opravu.
 
No a ide o kotovanie jednoduchych priecnych rezov cesty - koty su vzhladom ku osi, to znamena ze ked mam nieco okotovane na lavo od osi, matematicky je spravne ak tam to minus je, ale z pohladu na rez je zrejme ze kotovany bod je na lavo od osi takze to minus tam netreba, lebo je to zrejme aj bez neho a doteraz som to kotoval tak, tak uz chcem zachovat rovnaky styl. Avsak ak by tam to minus ostalo, chyba by to nebola...
 
Dakujem velmi pekne za pomoc a ochotu.


Odeslal: Acid3P
Datum odeslání: 28.říj.2011 v 08:00
Nevyrieslo by vsetky tvoje problemy pouzitie RoadCAD1 menu a prikaz vyska/vzdialenost - skratka "VKOTN", pred tym treba iba zadefinovat porovnavaciu rovinu prikazom "RBI"


Odeslal: DodoSVK
Datum odeslání: 28.říj.2011 v 09:34
praveze tejto funkcii som sa chcel vyhnut...jednak je tam problem s nastavenim fontu, niekedy blbnu uchopy, ciarky ktore sa kreslia v mieste bodu ktory chces vytycit sa niekedy nevykreslia korektne a hlavne aspon u mna to nechce fungovat pokial mam vykres v mierke 1:1 kresleny...ked to mam takto teraz je to omnoho flexibilnejsie a mozes si upravovat blok presne tak ako ti vyhovuje...takze to mozes nastavit lepsie pre svoje potreby....



Vytisknout stránku | Zavřít okno