Zobrazit plnou verzi příspěvku: založení nové sady hladin

Ferdinand
20.05.2008, 17:54
Zasekl jsem se s definicí pro tuto operaci. Cíl: pomocí utility založit automaticky novou sadu hladin s udanou předponou (např. S1-elektro, S1-kanal, S1-koty,...), přičemž některé hladiny budou mít stejný typ čáry, jiné se budou shodovat v barvě, některá bude jedinečná.
;;;VYTVORENI SADY HLADIN (CZ)(defun C:SHLA (/ PREDP H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 SH0 BH7 BH1 BH200 BH4 BH6 BH50 BH2 BH8 CHCO CHCE CHI PPS)
(setq PREDP (getstring "\nZadejte předponu názvu sady hladin vč. oddělovače [-/./_]: "))
(setqH1 (strcat PREDP "elektro")H2 (strcat PREDP "kanal")
H3 (strcat PREDP "koty")
...)
(if (not (tblsearch "LTYPE" "center"))  (command "_-linetype" "_L" "center" "acadiso.lin" ""))
(setq SH0 (list H1 H2 H3...);vrací seznam ve tvaru ("S1-elektro" "S1-kanal" "S1-koty"...)
zde by to chtělo vytvořit použitelný seznam všech hladin s názvy H1...H24 a použít ji v zacyklovaném příkazu _-layer...ale nevím, jak do toho příkazu volat prvky seznamu? V minulosti jsem to řešil vložením "typového" bloku, který neobsahoval žádné entity a následným přejmenováním názvů hladin v dialogu - nyní bych to chtěl provést jediním příkazem.

alfred
20.05.2008, 18:46

[QUOTE=Ferdinand]...ale nevím, jak do toho příkazu volat prvky seznamu? [/QUOTE]a nepomuze prikaz NTH ? Vrací n-ty prvek listu.(nth list poradove_cislo_prvku) (ted nesedim u CADu a tak doufam, ze to neni naopak...  a kouknete se take jestli prvky pocita od 0 nebo od 1napriklad tedy:(nth (list "a" "b" "c") i)do promenne "i" pricitejte v cyklu 1

Ferdinand
21.05.2008, 11:35
Ano, zkoušel jsem to než jsem založil tohle téma. Ale nevedlo se... Problém asi je v tom, že se vrací hodnota ve tvaru "S1-koty" a ne jako S1-koty
V názvu hladiny asi nemůže být uvozovka (?) - ani ji tam nechci mít Ferdinand2008-05-21 11:36:28

alfred
21.05.2008, 21:12
Ale to je snad v poradku. Je to STRING, proto ukazuje hodnotu v uvozovkach. Pri zakladani hladiny prece zadavate nazev hladiny jako string. Podle me to nemuze byt problem...Jak mate ten prikaz na zalozeni hladiny?

alfred
21.05.2008, 22:09
tady je priklad cyklu:(defun c:lll ( / i)  (setq seznam_hladin (list "prvni_hladina" "druha_hladina"))  (setq i 0)  (while (< i (length seznam_hladin))    (command "_-layer" "_n" (nth i seznam_hladin ) "")    (setq i (+ i 1))  );while  (print))mimochodem, v predchozimu memu prispevku - samozrejme jsem se spletl a syntaxe NTH je:(nth poradove_cislo_prvku list ) poradi prvku listu je od nuly...

Ferdinand
22.05.2008, 15:13
Už vím, kde byla chyba, teď to vidím... zapoměl jsem tam dát znak < ... jo, a ještě při zvyšování počtu o 1 jsem měl (setq i (1+ i)) děkuji.Ferdinand2008-05-22 15:13:58