Diskuzní fórum, poradna
CAD diskuze, rady, výměna zkušeností |
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
cond |
Odpovědět | archiv |
Autor | |
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
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-
|
|
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: Dodáváme produkty Autodesk Stav: Offline Bodů: 21517 |
Zasláno: 05.bře.2009 v 15:27 |
Máte tam nějak divně závorky (a nil = false) - zkusil bych spíš:
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
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-
|
|
pavelstyl
Zasloužilý člen Přihlášen: 06.říj.2004 Lokalita: Czech Republic Používám: AutoCAD Mech 2023, SolidEdgeE 2023 Stav: Offline Bodů: 223 |
Zasláno: 06.bře.2009 v 10:36 |
A co příkaz (wcmatch). Ten by to měl umět.
Pavel Štyl
|
|
Sedláček
TOP uživatel Přihlášen: 15.dub.2005 Lokalita: Czech Republic Používám: AutoCad 2024 LT Stav: Offline Bodů: 384 |
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)) |
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
Zasláno: 06.bře.2009 v 11:16 |
Děkuji.
Gratuluji k tomuhle 100. příspěvku!
|
|
-FerTh-
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
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-
|
|
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: Dodáváme produkty Autodesk Stav: Offline Bodů: 21517 |
Zasláno: 06.bře.2009 v 13:34 |
Lze, ale stačí to napsat do jednoho wcmatch:
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
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-
|
|
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: Dodáváme produkty Autodesk Stav: Offline Bodů: 21517 |
Zasláno: 09.bře.2009 v 11:17 |
Lze.
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
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-
|
|
Martin Bielina
Zasloužilý člen Přihlášen: 04.led.2007 Lokalita: ČR (Pha) Používám: AutoCAD True view 2016 Stav: Offline Bodů: 100 |
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))) ... |
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
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-
|
|
alfred
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
TOP uživatel Přihlášen: 14.říj.2004 Lokalita: ČR (JČ) Používám: AutoCad MAP 2011 Stav: Offline Bodů: 1675 |
Zasláno: 10.čvc.2009 v 13:30 |
(type item)
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
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-
|
|
Martin Bielina
Zasloužilý člen Přihlášen: 04.led.2007 Lokalita: ČR (Pha) Používám: AutoCAD True view 2016 Stav: Offline Bodů: 100 |
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 |
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
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... |
|
-FerTh-
|
|
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 1,217 sekund.