ARKANCE - globální Platinum partner Autodesk ARKANCE | KONTAKT - CZ | SK | EN | DE
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.
RSS kanál - CAD tipy RSS tipy
RSS diskuze

Diskuze Diskuzní fórum, poradna

?
CAD diskuze, rady, výměna zkušeností

CAD Fórum - Homepage Veřejné diskuzní fórum k CAD aplikacím - ptejte se na libovolné otázky týkající se oboru CAx, podělte se o vaše znalosti a zkušenosti s programy AutoCAD, Inventor, Revit, Fusion, 3ds Max, Vault a s dalšími CAD/BIM/PDM aplikacemi. Zaregistrujte se nebo se přihlašte a zašlete váš příspěvek do odpovídajícího fóra. Viz další informace o CAD Fóru. Nechcete se registrovat? Zeptejte se v naší Facebook poradně.
Fórum nenahrazuje technický support firmy ARKANCE (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.arkance-systems.cz
  FAQ FAQ  Prohledat fórum   Události   Registrovat Registrovat  Přihlásit Přihlásit

Téma uzavřenon-krát

 Odpovědět Odpovědět archiv
Autor
michaelflyer Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 05.úno.2007
Lokalita: Slovensko
Používám:
AutoCAD
Stav: Offline
Bodů: 105
Přímý odkaz na tuto zprávu Téma: n-krát
    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.
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar
Arkance Systems

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Implementujeme řešení Autodesk
Stav: Offline
Bodů: 21908
Přímý odkaz na tuto zprávu Zasláno: 23.říj.2007 v 16:55
Těch funkcí pro cyklus je v LISP vícero - např. repeat, while, foreach (viz Nápověda)
Vladimír Michl (moderátor)
ARKANCE CZ - arkance.world
(podpora viz helpdesk.arkance-systems.cz)
Zpět nahoru
michaelflyer Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 05.úno.2007
Lokalita: Slovensko
Používám:
AutoCAD
Stav: Offline
Bodů: 105
Přímý odkaz na tuto zprávu Zasláno: 24.říj.2007 v 12:36
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...
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar
Arkance Systems

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Implementujeme řešení Autodesk
Stav: Offline
Bodů: 21908
Přímý odkaz na tuto zprávu Zasláno: 24.říj.2007 v 13:52
"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).
Vladimír Michl (moderátor)
ARKANCE CZ - arkance.world
(podpora viz helpdesk.arkance-systems.cz)
Zpět nahoru
michaelflyer Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 05.úno.2007
Lokalita: Slovensko
Používám:
AutoCAD
Stav: Offline
Bodů: 105
Přímý odkaz na tuto zprávu Zasláno: 05.lis.2007 v 16:27
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)
)
)
Zpět nahoru
Ferdinand Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 01.říj.2004
Lokalita: ČR (JM)
Používám:
AutoCAD2004 (EN) na Windows XP
Stav: Offline
Bodů: 1906
Přímý odkaz na tuto zprávu Zasláno: 06.lis.2007 v 11:26
Až tak moc to s lispem neumím, ale nemělo by být
      (while (and ((/= nazov "") (/= rozmer "")))
Question
Co znamená "b" v řádku
      (princ b f)
Question


Upravil Ferdinand - 06.lis.2007 v 11:27
-FerTh-
Zpět nahoru
michaelflyer Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 05.úno.2007
Lokalita: Slovensko
Používám:
AutoCAD
Stav: Offline
Bodů: 105
Přímý odkaz na tuto zprávu Zasláno: 06.lis.2007 v 15:21
Ď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)
Zpět nahoru
Ferdinand Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 01.říj.2004
Lokalita: ČR (JM)
Používám:
AutoCAD2004 (EN) na Windows XP
Stav: Offline
Bodů: 1906
Přímý odkaz na tuto zprávu Zasláno: 06.lis.2007 v 16:29

Zkusit ten cyklus pomocí příkazu foreach Question

...anebo (nevím, jestli to takhle lze dohromady)
(while (if (and (....))))


Upravil Ferdinand - 06.lis.2007 v 16:31
-FerTh-
Zpět nahoru
michaelflyer Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 05.úno.2007
Lokalita: Slovensko
Používám:
AutoCAD
Stav: Offline
Bodů: 105
Přímý odkaz na tuto zprávu Zasláno: 06.lis.2007 v 20:47
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...
Zpět nahoru
michaelflyer Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 05.úno.2007
Lokalita: Slovensko
Používám:
AutoCAD
Stav: Offline
Bodů: 105
Přímý odkaz na tuto zprávu Zasláno: 17.bře.2008 v 11:26
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.
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar
Arkance Systems

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Implementujeme řešení Autodesk
Stav: Offline
Bodů: 21908
Přímý odkaz na tuto zprávu Zasláno: 17.bře.2008 v 12:05
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 >=.
Vladimír Michl (moderátor)
ARKANCE CZ - arkance.world
(podpora viz helpdesk.arkance-systems.cz)
Zpět nahoru
chlebovsky Zobrazit panel
Zasloužilý člen
Zasloužilý člen
Avatar

Přihlášen: 18.čer.2007
Lokalita: ČR (JM)
Používám:
Autocad R9 - 2022
Stav: Offline
Bodů: 112
Přímý odkaz na tuto zprávu Zasláno: 17.bře.2008 v 13:41
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)))
 
Embarrassed
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
Zpět nahoru
michaelflyer Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 05.úno.2007
Lokalita: Slovensko
Používám:
AutoCAD
Stav: Offline
Bodů: 105
Přímý odkaz na tuto zprávu Zasláno: 18.bře.2008 v 11:10
To len jeden znak mi tam chýbal?! Mňa šľak trafí!!! Ja sa stým mordujem jeden celý deň a nechápal som prečo to nefunguje!

Ď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...
Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 4302:K čemu slouží proměnná INTELLIGENTUPDATE?
Tip 1923:Jaká práva potřebuji pro spouštění Autodesk Inventoru?
Tip 3097:VIPMísto symbolů průměru (Ø) se zobrazuje znak "n" nebo "Q".
Tip 9427:Automatické ukládáni DWG výkresu po N příkazech.
Tip 168:Jak vyčistit nepoužívané bloky ze všech výkresů?
Tip 4642:Jak vytvořit v sestavě vazbu součásti na náčrt?


 Odpovědět Odpovědět

Přejít na fórum Oprávnění fóra Zobrazit panel



Stránka byla vygenerována za 0,492 sekund.