Vytisknout stránku | Zavřít okno

založení nové sady hladin

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: CAD programování
Popis fóra: Otázky programování - nadstavby a utility pro CAD a GIS aplikace Autodesk (VBA, AutoLISP, ARX/C++, .Net, JavaScript, Python, MEL...)
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=6510
Datum vytištění: 17.zář.2026 v 05:23


Téma: založení nové sady hladin
Odeslal: Ferdinand
Předmět: založení nové sady hladin
Datum odeslání: 20.kvě.2008 v 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 [-/./_]: "))
(setq
H1 (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.


-------------
-FerTh-



Odpovědi:
Odeslal: alfred
Datum odeslání: 20.kvě.2008 v 18:46
Původně odeslal(a) Ferdinand Ferdinand napsal(a):

...ale nevím, jak do toho příkazu volat prvky seznamu?


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... Smile
a kouknete se take jestli prvky pocita od 0 nebo od 1

napriklad tedy:
(nth (list "a" "b" "c") i)

do promenne "i" pricitejte v cyklu 1






Odeslal: Ferdinand
Datum odeslání: 21.kvě.2008 v 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 Smile


-------------
-FerTh-


Odeslal: alfred
Datum odeslání: 21.kvě.2008 v 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?


Odeslal: alfred
Datum odeslání: 21.kvě.2008 v 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...



Odeslal: Ferdinand
Datum odeslání: 22.kvě.2008 v 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.

-------------
-FerTh-



Vytisknout stránku | Zavřít okno