Diskuzní fórum a databáze tipů a utilit pro AutoCAD, Inventor, Revit a další produkty Autodesk - od firmy Arkance Systems [www.cadforum.cz]
CZ | SK | EN | DE
Přihlášení
či registrace
   právě nás čte: 5550 
AEC Collection - kompletní CAD/BIM nástroje pro projektování
RSS kanál - CAD tipy RSS tipy
RSS diskuze

Diskuze Diskuzní fórum, poradna

 

NápovědaCAD 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 360, 3ds Max a s dalšími CAD 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 Systems (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.cadstudio.cz
  FAQ FAQ  Prohledat fórum   Události   Registrovat Registrovat  Přihlásit Přihlásit

Téma uzavřenocond

 Odpovědět Odpovědět archiv
Autor
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ů: 1904
Přímý odkaz na tuto zprávu Téma: cond
    Zasláno: 05.bře.2009 v 14:20
Funkce funguje takto:
(cond
(podminka1) (akce1)
(podminka2) (akce2)
...
)
 
Řetězce VADNO, VAREV, VASTR, DWG, LN byly v předchozím oddílu nadefinováva resp. získána a přesto ze sekce
(cond
  (and (= VADNO nil) (= VAREV nil) (/= VASTR nil))
  (setq NNR (strcat DWG "#" LN "_" VASTR))
  (and (= VADNO nil) (/= VAREV nil) (= VASTR nil))
  (setq NNR (strcat DWG "#" LN "_" VAREV))
  (and (= VADNO nil) (/= VAREV nil) (/= VASTR nil))
  (setq NNR (strcat DWG "#" LN "_" VAREV "_" VASTR))
  (and (= VADNO nil) (= VAREV nil) (= VASTR nil))
  (setq NNR (strcat DWG "#" LN))
  (and (/= VADNO nil) (/= VAREV nil) (= VASTR nil))
  (setq NNR (strcat VADNO "_" VAREV))
  (and (/= VADNO nil) (= VAREV nil) (/= VASTR nil))
  (setq NNR (strcat VADNO "_" VASTR))
  (and (/= VADNO nil) (/= VAREV nil) (/= VASTR nil))
  (setq NNR (strcat VADNO "_" VAREV "_" VASTR))
)
 
mi to vrací T a !NNR je nil . Když jsem to zkoušel po řádcích např.
(cond
  (and (/= VADNO nil) (/= VAREV nil) (/= VASTR nil))
  (setq NNR (strcat VADNO "_" VAREV "_" VASTR))
)
tak to taky vrací jen T a !NNR jako nil . Když to zadám jako podmínku
(if
  (and (/= VADNO nil) (/= VAREV nil) (/= VASTR nil))
  (setq NNR (strcat VADNO "_" VAREV "_" VASTR))
)
tak to vrátí odpovídající seskládaný řetězec. To nelze použít v cond logické funkce?
-FerTh-
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:
Dodáváme produkty Autodesk
Stav: Offline
Bodů: 21517
Přímý odkaz na tuto zprávu Zasláno: 05.bře.2009 v 15:27
Máte tam nějak divně závorky (a nil = false) - zkusil bych spíš:
 

(cond
 ( (and (not VADNO)(not VAREV) VASTR) (setq NNR "xxxx"))
...
)
Vladimír Michl (moderátor)
Arkance Systems s.r.o. - www.arkance-systems.cz
(podpora viz hd.cads.cz)
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ů: 1904
Přímý odkaz na tuto zprávu Zasláno: 06.bře.2009 v 10:33
Lze použít hvězdičkovou konvenci? Myslím něco jako
cond
((= NFOR "A4*") (setq FORMAT "A4 (210.00 x 297.00 MM)")
...
)
Pokud to napíšu v této podobě, tak mi to vyhodnotí jako nil. Chci aby to platilo pro NFOR=("A4" anebo "A4-1" anebo "A4_ru" anebo "A4#L" anebo "A4 ISO").
ED: Aha, takže to má fungovat takhle
(cond
((podminka1) (akce1))
...
)


Upravil Ferdinand - 06.bře.2009 v 10:47
-FerTh-
Zpět nahoru
pavelstyl Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 06.říj.2004
Lokalita: Czech Republic
Používám:
AutoCAD Mech 2023, SolidEdgeE 2023
Stav: Offline
Bodů: 223
Přímý odkaz na tuto zprávu Zasláno: 06.bře.2009 v 10:36
Původně odeslal(a) Ferdinand Ferdinand napsal(a):

Lze použít hvězdičkovou konvenci? Myslím něco jako
cond
((= NFOR "A4*") (setq FORMAT "A4 (210.00 x 297.00 MM)")
...
)
Pokud to napíšu v této podobě, tak mi to vyhodnotí jako nil. Chci aby to platilo pro NFOR=("A4" anebo "A4-1" anebo "A4_ru" anebo "A4#L" anebo "A4 ISO").
 
 
A co příkaz (wcmatch). Ten by to měl umět.
Pavel Štyl
Zpět nahoru
Sedláček Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 15.dub.2005
Lokalita: Czech Republic
Používám:
AutoCad 2024 LT
Stav: Offline
Bodů: 384
Přímý odkaz na tuto zprávu Zasláno: 06.bře.2009 v 10:49

Nebo použít SUBSTR pro práci s řetězci.

Pak něco jako: (nezkoušeno)
 
cond
((= NFOR "A4*") (setq FORMAT (substr "A4 (210.00 x 297.00 MM)" 1 2))
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ů: 1904
Přímý odkaz na tuto zprávu Zasláno: 06.bře.2009 v 11:16
Původně odeslal(a) pavelstyl pavelstyl napsal(a):

 
A co příkaz (wcmatch). Ten by to měl umět.
Pavel Štyl
Děkuji.
Gratuluji k tomuhle 100. příspěvku!
-FerTh-
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ů: 1904
Přímý odkaz na tuto zprávu Zasláno: 06.bře.2009 v 12:38
Lze kombinovat dohromady "=" a "wcmatch" ? To pro konkrétní případ, když je NFOR čistě jenom "A3" a pak může být ještě "A31_ru" anebo "A31_en" anebo "A31_cz" . Takhle mi to nechce brát (vrací nil):
(cond
((or (= NFOR "A3")(wcmatch NFOR "A31_*")) (setq FORMAT...
...
)
-FerTh-
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:
Dodáváme produkty Autodesk
Stav: Offline
Bodů: 21517
Přímý odkaz na tuto zprávu Zasláno: 06.bře.2009 v 13:34
Lze, ale stačí to napsat do jednoho wcmatch:
 
(wcmatch NFOR "A3,A31_??")
Vladimír Michl (moderátor)
Arkance Systems s.r.o. - www.arkance-systems.cz
(podpora viz hd.cads.cz)
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ů: 1904
Přímý odkaz na tuto zprávu Zasláno: 09.bře.2009 v 08:44
To je elegantní. Děkuji za osvětlení.
Ještě jsem se chtěl pro jistotu zeptat: * (hvězdičku) u wcmatch nelze použít?


Upravil Ferdinand - 09.bře.2009 v 08:47
-FerTh-
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:
Dodáváme produkty Autodesk
Stav: Offline
Bodů: 21517
Přímý odkaz na tuto zprávu Zasláno: 09.bře.2009 v 11:17
Lze.
Vladimír Michl (moderátor)
Arkance Systems s.r.o. - www.arkance-systems.cz
(podpora viz hd.cads.cz)
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ů: 1904
Přímý odkaz na tuto zprávu Zasláno: 09.čvc.2009 v 15:03
Došel jsem k dalšímu problému:
Budu chtít zjistit konkrétní hodnotu (ani jeden z nich nesmí být nil) pro 3 prom. takhle:
V1...má být řetězec který začíná na "3UCZ"
V2....má být nenulové celé číslo větší než 0
V3....má být = 1
tak podmínku zapíšu ve tvaru
(cond
  (and (= V1 "3UCZ*") (= V2 ???) (= V3 1))
  (setq NNR (strcat V1 "_" V2 "_" V3))
)
...ale jak tam zakomponovat tu podmínku pro V2 ?


Upravil Ferdinand - 09.čvc.2009 v 15:09
-FerTh-
Zpět nahoru
Martin Bielina Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 04.led.2007
Lokalita: ČR (Pha)
Používám:
AutoCAD True view 2016
Stav: Offline
Bodů: 100
Přímý odkaz na tuto zprávu Zasláno: 09.čvc.2009 v 16:27
A co třeba takhle:

...
(cond  (and (= V1 "3UCZ*") (> V2 0) (= V2 (fix V2)) (= V3 1))  (setq NNR (strcat V1 "_" V2 "_" V3)))
...

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ů: 1904
Přímý odkaz na tuto zprávu Zasláno: 10.čvc.2009 v 13:20
Martine, děkuji, tu formu s tím fix jsem neznal (nebo nejspíš zapomněl...). Pokud chci zjistit všeobecně hodnotu nějaké proměnné, tak lze nějak rozpoznat jestli je to INTEGER, REAL, STRING či dokonce LIST ? Dle uvedeného vyvozuji, že fix je pro INTEGER. Ve vlastnostech u klíče 0 je to totiž vždy jen "text" anebo "attrib" . Jde mi o ten způsob zápisu do podmínky cons .

Upravil Ferdinand - 10.čvc.2009 v 13:21
-FerTh-
Zpět nahoru
alfred Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 14.říj.2004
Lokalita: ČR (JČ)
Používám:
AutoCad MAP 2011
Stav: Offline
Bodů: 1675
Přímý odkaz na tuto zprávu Zasláno: 10.čvc.2009 v 13:30
(type item)
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ů: 1904
Přímý odkaz na tuto zprávu Zasláno: 10.čvc.2009 v 14:14
Takže podmínku
"pokud je v proměnné PP1 obsažena hodnota typu INTEGER, proveď AKCE1, pokud je typu REAL, proveď AKCE2, pokud je typu STRING, proveď AKCE3, pokud je typu LIST, proveď AKCE4"
napíšu jako
(cond
((type item (= PP1 (fix PP1)))
(AKCE1))
((type item (= PP1 (real PP1)))
(AKCE2))
((type item (= PP1 (string PP1)))
(AKCE3))
((type item (= PP1 (list PP1)))
(AKCE4))
)
?
Protože když napíšu do př.ř. jenom samotné (type item) tak to bez ohledu na to, zda předtím jsem označil nějakou entitu či ne vrací SUBR (což nevím, co znamená).
-FerTh-
Zpět nahoru
Martin Bielina Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 04.led.2007
Lokalita: ČR (Pha)
Používám:
AutoCAD True view 2016
Stav: Offline
Bodů: 100
Přímý odkaz na tuto zprávu Zasláno: 13.čvc.2009 v 09:59
aplikace COND a TYPE na Váš případ

(cond
((= (type PP1) "INT"))
(AKCE1))
((= (type PP1) "REAL"))
(AKCE2))
((= (type PP1) "STR"))
(AKCE3))
((= (type PP1) "LIST"))
(AKCE4))
)

SUBR - taho hodnota vrácená funkcí TYPE znamená funkci načtenou Autocadem z kompilovaných souborů VLX FAS nebo také ze zdojových souborů LSP.

Jestli jsem někde něco napsal (opsal z nápovědy AutoCadu) špatně... ať mi prsty upadnou
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ů: 1904
Přímý odkaz na tuto zprávu Zasláno: 13.čvc.2009 v 15:12

OT: To je ukázkový příklad, jak jsem líný zmáčknout F1 a přečíst si Help...Embarrassed

-FerTh-
Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 1762:Jak vypočíst hodnotu ArcSin (inverzní sinus)?
Tip 13821:Rychlý přepínač viditelnosti hladiny ZAP/VYP.
Tip 11995:Jak orotovat vybrané bloky podle natočení jiného bloku?
Tip 12775:Matematické funkce dostupné ve výrazech Revitu.
Tip 11915:Generátor bludiště v AutoCADu.
Tip 14065:Jak získat z daného datumu číslo dne v týdnu a číslo týdne?


 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 1,217 sekund.