Zobrazit plnou verzi příspěvku: Automaticke cislovani
PeterCAD
16.08.2005, 11:06
Nevim, zda to v cadu jde, priklad:
rada dilu vedle sebe a kazdy ma svoje cislo od xx do yy. Jak je jednoduse ocisluju, aniz bych u kazdeho prepisoval cislo. Funguje neco jako 'tahni' v excelu??
Chlebník
16.08.2005, 11:22
Jednou jsem řešil vkládání bodů a u každého napsat číslo a jinou barvou.
Pokud se trochu vyznáte v Lispu tak určitě pochopíte a upravíte. Pokud né tak napište a něco s tím uděláme.
Lisp :
(defun c:body (/ bod bod_old s_body x y sou i) (setq x 1 y 1) (while (setq bod (if bod_old (getpoint bod_old "\nVyber další bod")(getpoint "\nVyber první bod"))) (entmake (list (cons 0 "POINT")(cons 8 "0")(cons 62 x)(cons 10 bod))) (entmake (list (cons 0 "TEXT") (cons 8 "0")(cons 62 x)(cons 10 bod)(cons 11 bod)(cons 40 0.3)(cons 1 (itoa y))(cons 50 0.0)(cons 41 1.0)(cons 51 0.0)(cons 71 0)(cons 72 0)(cons 73 0))) (setq s_body (append s_body (list bod))) (setq bod_old bod x (1+ x) y (1+ y)) (if (> x 256)(setq x 1)) ) (setq file (getfiled "Vyber kam uložit body" "Body" "TXT" 1)) (if file (progn (setq sou (open file "w")) (setq i 0) (repeat (length s_body) (write-line (strcat (itoa (1+ i)) "\t" (rtos (car (nth i s_body)) 2 4)"\t" (rtos (cadr (nth i s_body)) 2 4)"\t" (rtos (caddr (nth i s_body)) 2 4)) sou) (setq i (1+ i)) ) (close sou) ) ))
Rostislav Říha
16.08.2005, 11:30
[QUOTE=PeterCAD]Funguje neco jako 'tahni' v excelu??[/QUOTE]
pekna predstava:))) - nejde to, da se to nicmene obejit bud pouzitim nejake lispove utility (tech je na www kopec) nebo se to da udelat i jednoduchym dieselovym retezcem v menu a pak to bude fungovat i v LTcku
Machacek
16.08.2005, 12:03
Pro LTecko jsem mel kdysi udelana takovato uzivatelska tlacitka:
1. tlacitko nastavovalo format cisla (opakujici se zanky pred cislem nebo za nim)
^C^Csetenv;PRED;\setenv;HODNOTA;\setenv;ZA;
2. tlacitko bylo pro 2 mistne cislo
^C^C_-layer;_s;AG_ZAS_CISLA;;_-mtext;\_H;$M=$(*,$(getvar,DIM TXT),$(getvar,DIMSCALE));_J;_BL;_R;\@;$M=$(IF,$(<,$(strle n,$(getenv,PRED)),4),$(getenv,PRED))$M=$(IF,$(<,$(getenv, HODNOTA),10),0)$M=$(getenv,HODNOTA)$M=$(IF,$(<,$(strlen,$ (getenv,ZA)),4),$(getenv,ZA));;setenv;HODNOTA;$M=$(+,1,$(get env,HODNOTA));
3. tlacitko bylo pro 3 mistne cislo
^C^C_-layer;_s;AG_ZAS_CISLA;;_-mtext;\_H;$M=$(*,$(getvar,DIM TXT),$(getvar,DIMSCALE));_J;_BL;_R;\@;$M=$(IF,$(<,$(strle n,$(getenv,PRED)),4),$(getenv,PRED))$M=$(IF,$(<,$(getenv, HODNOTA),100),0)$M=$(IF,$(<,$(getenv,HODNOTA),10),0)$M=$( getenv,HODNOTA)$M=$(IF,$(<,$(strlen,$(getenv,ZA)),4),$(ge tenv,ZA));;setenv;HODNOTA;$M=$(+,1,$(getenv,HODNOTA));
Rostislav Říha
16.08.2005, 12:10
[QUOTE=Machacek]Pro LTecko jsem mel kdysi udelana takovato uzivatelska tlacitka:^C^Csetenv;PRED;\setenv;HODNOTA;\setenv;ZA;[/QUOTE]
dobre, jen bych doporucil z duvodu kompatibility s velkym academ nepouzivat setenv a getenv, velky acad zna jen setvar a getvar - lze pouzit bud uzivatelske promenne userr, useri, nebo nejakou mene frekventovanou...
PeterCAD
16.08.2005, 13:26
to je sice pekne, verim ze to i funguje, ale jsem opravdu jen 'novacek'
Predpokladam tedy,ze ve velkem cadu nic takoveho neni, pokud si jej neupravim...
Chlebník
16.08.2005, 13:28
napište přesně co to má dělat a nějak to dáme dokupy.
Machacek
16.08.2005, 13:36
neni na tom nic sloziteho, jenom si nadefinujte svoje vlastni uzivatelska tlacitka a do jejich funkce si zkopirujte uvedene retezce.
1.TLC = nejdrive se vas opta na retezec opakujicich se znaku na zacatku (pokud zadate vic jak 4 znaky tak se pri cislovani nebude toto predcisli zobrazovat), pak nasleduje vyzva k zadani cisla od ktereho se zacne pocitat, a nakonec je tam zase opakujici se retezec na konci cisla (plati pro nej stejne pravidlo jako pro predcisli)
kdyz si to nastavite tak uz jenom mackate tlacitko 2 nebo 3 a nebo pouzijete opakovani prikazu pres mys
PeterCAD
16.08.2005, 15:12
Chlebnik:
mam napr. radu kancelari vedle sebe a musim je ocislovat, napr. od 001 do 036.
Taxem si predstavoval,ze zadam neco jako 'pole' s tim, ze se mi vypisou tato cisla (vcetne posloupnosti), pokud mozno i s umistenim tak jako u prikazu pole...
nebylo by spatne zadat parametry jako:
1-pocatecni cislo, 2-krok, 3-pocet cisel, (dalsi hodnoty umisteni dle pole, tj. sloupce/radky)
dik moc za snahu
Chlebník
16.08.2005, 16:30
Vytvořte si soubor třeba cisilka.lsp
otevřete si ho třeba v notepadu a nakopírujte do něj toto :
(defun c:cisilka (/ first kam pocet point i dist x y z vyska text rotace) (setq first 1) (if (not (setq first (getint (strcat "\nZadej první pořadové číslo : ["(substr "00" (strlen (itoa first)))(itoa first)"] "))))(setq first 1)) (initget 0 "Rada Sloupec") (if (not (setq kam (getkword "\nKam kopírovat Rada/Sloupec [Rada] ")))(setq kam "Rada")) (initget 2) (if (= kam "Rada")(setq dist (getdist "\nZadej vzdálenost mezi sloupci : "))) (if (= kam "Sloupec")(setq dist (getdist "\nZadej vzdálenost mezi řadami : "))) (initget 2) (setq pocet (getint "\nZadej počet čísel : ")) (initget 1) (setq point (getpoint "\nZadej počáteční bod vykreslování")) (setq i 0) (setq x (car point) y (cadr point) z (caddr point)) (setq vyska 10.0) ;;; tady je napsaná výška výsledného textu lze jí jakkoliv změnit (setq rotace 0.0) ;;; tady je napsaná rotace výsledného textu lze jí jakkoliv změnit (v radiánech) (repeat pocet (setq x (+ x (if (= kam "Rada") dist 0))) (setq y (+ y (if (= kam "Sloupec") dist 0))) (setq text (strcat (substr "00" (strlen (itoa (+ first i)))) (itoa (+ first i)))) (entmakex (list (cons 0 "TEXT") (cons 100 "AcDbEntity") (cons 67 0) (cons 410 "Model") (cons 8 "0") ;;; tady je napsaná hladina do které kreslit (možno smazat celý řádek) (cons 100 "AcDbText") (cons 10 (list x y z)) (cons 40 vyska) (cons 1 text) (cons 50 0.0) (cons 41 1.0) (cons 51 0.0);;; (cons 7 "Standard") font (cons 71 0) (cons 72 0) (cons 11 (list 0.0 0.0 0.0)) (cons 210 (list 0.0 0.0 1.0)) (cons 100 "AcDbText") (cons 73 0))) (setq i (1+ i)) ))
včetně závorek, uvozovek všeho. Pak soubor uložte a zavřete.
Spusťte si autocad a soubor jednoduše přetáhněte na kreslící plochu (popř zapište do appload)
tím se soubor načte.
Pak stačí napsat dole na příkazové řádce cisilka a vše by mělo fungovat.
Dále je tam možno volit výšku textu, natočení a další - je tam poznámka
Kdyby to nějak nešlo napište.
Vladimír Michl
16.08.2005, 16:36
Také by šlo použít naši utilitu MakeTable. Používá tabulky a dynamické hodnoty buněk (takže jen pro A2006), takže můžete číslo v řadě následně kdykoliv upravit a zbytek řady se automaticky přečísluje, můžete upravovat rozteč řady čísel, styly, atd.Jen to dělané jen narychlo, očekává to že máte předem ručně nastaven aktuální styl tabulky s vypnutým záhlavím i nadpisem (a asi i ohraničeními buněk). Spouští se pouhým načtením.
2005-08-16_163456_MakeTable.VLX
V express tools v je prikaz Automatic text numbering. Pomocou pola sa vygeneruje text (napr. A A A A A) a potom sa necha pomocou tohoto prikazu prepisat. Dokonca sa da ocislovat predpona, alebo pripona (napr. okno1, okno2.....oknox)
Vladimír Michl
17.08.2005, 17:03
ano, buď použijte TCOUNT nebo naši utilitu NumTable (vylepšený MakeTable)
viz http://www.cadforum.cz/cadforum/qaID.asp?tip=4587