Již 10.000+ CAD tipů.
Přes 118.500 registrovaných u nás, celkem 1.094.000 registrovaných (CZ+EN), přes 53.000 CAD/BIM bloků.
Vyzkoušejte nový přesný Inženýrský kalkulátor.
Kompletní příkazy AutoCADu a proměnné AutoCADu 2026.
Diskuzní fórum, poradna
?CAD diskuze, rady, výměna zkušeností

Fórum nenahrazuje technický support firmy ARKANCE (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.arkance-systems.cz
|
Odpovědět ![]() |
archiv |
Autor | |
michaelflyer ![]() Zasloužilý člen ![]() Přihlášen: 05.úno.2007 Lokalita: Slovensko Používám: AutoCAD Stav: Offline Bodů: 105 |
![]() Zasláno: 23.říj.2007 v 16:22 |
Dobrý deň.
Neviem si rady v LIPe s funkciou opakovať niečo n krát.... ![]() Napr.: Zadám hodnoty výšok, n1 až nk. Potom chcem robiť _offset n1 až nk. k= „nekonečno“ Alebo nanášanie kružníc na priamku v rôznych vzdialenostiach n1 až nk. Vopred ďakujem. |
|
![]() |
|
Vladimír Michl ![]() Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
Moderátor ![]() ![]() Arkance Systems Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Implementujeme řešení Autodesk Stav: Offline Bodů: 21908 |
![]() |
Těch funkcí pro cyklus je v LISP vícero - např. repeat, while, foreach (viz Nápověda)
|
|
![]() |
|
michaelflyer ![]() Zasloužilý člen ![]() Přihlášen: 05.úno.2007 Lokalita: Slovensko Používám: AutoCAD Stav: Offline Bodů: 105 |
![]() |
Neviem ako by to malo vlastne vyzerať. Prosím vás mohli by ste mi dať cestu na ten návod? Nejako sa tu moc dobre nevyznám.
Ďakujem... |
|
![]() |
|
Vladimír Michl ![]() Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
Moderátor ![]() ![]() Arkance Systems Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Implementujeme řešení Autodesk Stav: Offline Bodů: 21908 |
![]() |
"Návod na programování" neumím, ale cyklus má vypadat např. takto:
(repeat 37
(command "XY" ....)
)
Základní příklady a pomoc najdete v nápovědě nebo v online příručce Programování AutoCADu (vývojové prostředky).
|
|
![]() |
|
michaelflyer ![]() Zasloužilý člen ![]() Přihlášen: 05.úno.2007 Lokalita: Slovensko Používám: AutoCAD Stav: Offline Bodů: 105 |
![]() |
Dobrý deň.
Nejako som to pochopil (hádam)... Len mám problém s while :-( Vyhlasuje mi po to: ; error: bad argument type: lselsetp nil a už mi nechce opakovať „výber“... (defun c:ko () (progn (setq f (open "F:\\kusovník.txt" "W")) (while (/= vyber "") (progn (initget 1 "M S") (setq vyber (getkword "\nZadaj prvok [Madlo,Stlp]:")) (if (= vyber "M") (progn (princ "\n" f) (princ "MADA" f) ) ) (if (= vyber "S") (progn (princ "\n" f) (princ "STLPY" f) ) ) (while (and (/= nazov "") (/= rozmer "")) (progn (prompt "\nVyber nazov dielca:") (setq nazov (ssget)) (prompt "\nVyber nazov dielca:") (setq rozmer (ssget)) (setq entita1 (ssname nazov 0)) (setq zoznam_ent1 (entget entita1)) (setq a (cdr (assoc 1 zoznam_ent1))) (setq entita2 (ssname rozmer 0)) (setq zoznam_ent2 (entget entita2)) (setq a (cdr (assoc 42 zoznam_ent2))) (princ "\n" f) (princ a f) (princ " " f) (princ b f) ) ) ) ) (close f) ) ) |
|
![]() |
|
Ferdinand ![]() TOP uživatel ![]() Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1906 |
![]() |
Až tak moc to s lispem neumím, ale nemělo by být
(while (and ((/= nazov "") (/= rozmer "")))
![]() Co znamená "b" v řádku
(princ b f)
![]() Upravil Ferdinand - 06.lis.2007 v 11:27 |
|
-FerTh-
|
|
![]() |
|
michaelflyer ![]() Zasloužilý člen ![]() Přihlášen: 05.úno.2007 Lokalita: Slovensko Používám: AutoCAD Stav: Offline Bodů: 105 |
![]() |
Ďakujem....to b...
Našli ste mi ďalšiu chybu. (setq entita2 (ssname rozmer 0)) (setq zoznam_ent2 (entget entita2)) (setq a (cdr (assoc 42 zoznam_ent2))) ;;;TU MABYT NAMIESTO "a" "b". Ale vrátim sa k: (while (and ((/= nazov "") (/= rozmer ""))) toto mi nechce vobez zobrať. vyhlasuje mi to chybu ![]() Možno to má niečo spoločné so (ssget) |
|
![]() |
|
Ferdinand ![]() TOP uživatel ![]() Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1906 |
![]() |
Zkusit ten cyklus pomocí příkazu foreach (while (if (and (....)))) Upravil Ferdinand - 06.lis.2007 v 16:31 |
|
-FerTh-
|
|
![]() |
|
michaelflyer ![]() Zasloužilý člen ![]() Přihlášen: 05.úno.2007 Lokalita: Slovensko Používám: AutoCAD Stav: Offline Bodů: 105 |
![]() |
Problém je v tom že while testuje podmienku (ak podmienka nevyhovuje príkazy sa opakuje). Ale foreach zase vyberá každý prvok zo zoznamu a opakuje danú funkciu naň.
Ja si neviem predstaviť ako by to malo robiť na túto funkciu: (prompt "\nVyber nazov dielca:") (setq rozmer (ssget)) (setq entita2 (ssname rozmer 0)) (setq zoznam_ent2 (entget entita2)) (setq a (cdr (assoc 42 zoznam_ent2))) Mysleli ste asi na funkciu princ, ktorú by mi opakovalo. Lenže to by som musel nejako vytvoriť zoznam vybraných položiek. A to je problém, pretože sú typu a1 až an.... Ja som tiež len začiatočník... |
|
![]() |
|
michaelflyer ![]() Zasloužilý člen ![]() Přihlášen: 05.úno.2007 Lokalita: Slovensko Používám: AutoCAD Stav: Offline Bodů: 105 |
![]() |
Dobrý deň.
Prosím Vás o radu. Dávam sem jednoduchý príklad. Nechápem prečo mi to nefunguje :-( Viem, že mi tam niečo chýba, ale neviem sa dopracovať k tomu, že čo :-( Chcem dosiahnuť aby mi pripočítalo 0.1 k hodnote "a" až do vtedy (sa to bude opakovať), pokiaľ sa nebude "=" hodnote "b". (defun c:OPAKUJ () (setq a (getreal "n\Zadaj hodnotu (a) ktorá je väčšia ako b:")) (setq b (getreal "n\Zadaj hodnotu (b) ktorej sa to má rovnať:")) (if (/= a b) (progn (while (= a b) (setq a (+ a 0.1)) (princ a) ) ) ) ) Vopred Ďakujem. ![]() |
|
![]() |
|
Vladimír Michl ![]() Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
Moderátor ![]() ![]() Arkance Systems Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Implementujeme řešení Autodesk Stav: Offline Bodů: 21908 |
![]() |
Pro porovnávání reálných čísel není vhodné při programování testovat přesnou shodu (či neshodu) - dochází k zaokrouhlování reprezentace hodnoty. Použijte > nebo >=.
|
|
![]() |
|
chlebovsky ![]() Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
Zasloužilý člen ![]() ![]() Přihlášen: 18.čer.2007 Lokalita: ČR (JM) Používám: Autocad R9 - 2022 Stav: Offline Bodů: 112 |
![]() |
začnu od začátku, taková malá chybička v zadávání, a) musí být menší jako b)
dále na začátku né n\ ale \n naopak pro nový řádek
pak if (< a b)
ale hlavně
While = dokud je splněna podmínka.
To znamená že vy potřebujete aby probíhalo tak dlouho dokud a < b
popř. a <= b
takže napsat
(while (<= a b)
pak fungovat bude
a možná na konec bych dal (princ a)(princ "\n")
nebo rovnou (princ (strcat "\nHodnota je : " (rtos a 2 2)))
![]() |
|
Ing. Martin Chlebovský
www.kde-je-auto.cz GPS monitoring provozu vozidel a osob. WebDeveloper. Programátor aplikací pro Autocad a MS Office. Tvorba WWW aplikací. Modelování domů a staveb.&l |
|
![]() |
|
michaelflyer ![]() Zasloužilý člen ![]() Přihlášen: 05.úno.2007 Lokalita: Slovensko Používám: AutoCAD Stav: Offline Bodů: 105 |
![]() |
To len jeden znak mi tam chýbal?! Mňa šľak trafí!!!
![]() Ďakujem za pomoc. Ďakujem aj za opravu „drobných“ chýb. Zbáchal som to narýchlo. Samozrejme, že ma to neospravedlňuje :-) Ešte raz ďakujem... ![]() |
|
![]() |
Pro technickou podporu CAD
kontaktujte Helpdesk
Odpovědět ![]() |
|
Přejít na fórum | Oprávnění fóra ![]() Nemůžete vytvářet nová témata v tomto fóru Nemůžete odpovídat na témata v tomto fóru Nemůžete vymazávat vaše příspěvky v tomto fóru Nemůžete upravovat vaše příspěvky v tomto fóru Nemůžete vytvářet ankety v tomto fóru Nemůžete hlasovat v anketách v tomto fóru |
Stránka byla vygenerována za 0,492 sekund.