Již 10.000+ CAD tipů.
Přes 118.000 registrovaných u nás, celkem 1.092.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 | ||
enddys ![]() Nováček ![]() Přihlášen: 26.úno.2013 Lokalita: ČR (JM) Používám: AutoCad 2006 Stav: Offline Bodů: 8 |
![]() Zasláno: 26.úno.2013 v 08:40 |
|
Dobrý den,
jsem absolutním začátečníkem v programovani LISP. Chtěl bych vytvořit jeden program. Už mám udělanou kostru, ale některé věci netusím jak udělat, proto Vás žádam o pomoc :) Kod: ;startup for application ACADM, installed xxxxxxx (princ (load "gen/acadm.lsp" "\nError: acadm.lsp not loaded!") ) ;(if acadmappend (setq s::startup (acadmappend s::startup))) (defun MK3 () (setq b11 (getpoint "\n zadej bod")) ) (defun cti() (setq x (car b11)) (setq y (cadr b11)) (setq x (rtos x 2 3)) (setq y (rtos y 2 3)) (setq xy (strcat "N"cislo "\" "\X=" x "\ " "\Y=" y)) (write-line xy f) ) (defun C:M4 () (setq f1 (getstring "\nZadej jméno programu ! { max. osum znak… } :") f1 (strcase f1)) (setq b (strcat "0 Testovací hlavika souboru")) (setq f (strcat "C:/Popis/M4/" f1 ".H")) (setq f (open f "w")) (write-line b f) (while (< i 4) (MK3) (cti) ) ) Potřebná modifikace je nasledující: U setq xy by se měla za písmenem N mělo zvyšovat číslo (viz. 100, 101, 102 atd.) a druha, ze pokud bude během nacitani bodu zmačknuto pismeno R, vyskoci okno s požadavkem na zadání radiusu a pote bude nacitani bodu dal pokracovat. Děkuji za veškeré rady. |
||
![]() |
||
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ů: 21898 |
![]() |
|
Těch zádrhelů k řešení tam ještě bude více, ale navyšování předem nastaveného čísla vyřeší:
Přerušování smyčky stiskem znaku je trochu složitější, ale pokud se nebojíte výzkumů, mrkněte se na funkci (grread).
|
||
![]() |
||
enddys ![]() Nováček ![]() Přihlášen: 26.úno.2013 Lokalita: ČR (JM) Používám: AutoCad 2006 Stav: Offline Bodů: 8 |
![]() |
|
když pouziji Váš kod, vyhodi mi to chybu: "chyba: chybný typ argumentu: numberp: nil" :(
|
||
![]() |
||
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 |
![]() |
|
1. Radím - vzdejte se okna (dialog) - je to zbytečná komplikace. Stačí volba na příkazové řádce. 2. nezapoměňte na uzavření souboru (close f) a to i v případě, že funkce zkonší chybou (viz funkce *error* ) 2. Zkuste popsat co má být cílem LISPu. Třeba už to někdo někdy řešil a nemusíte to programovat. Nebo Vám tady doporučí zcela jiný postup... |
||
![]() |
||
enddys ![]() Nováček ![]() Přihlášen: 26.úno.2013 Lokalita: ČR (JM) Používám: AutoCad 2006 Stav: Offline Bodů: 8 |
![]() |
|
dekuji za upozorneni, close f jsem uz zadefinoval, a co se tyká pouzitelnosti programu, ma za úkol z technického vykresu nacitat souradnice a radiusy. Jde o to, ze ne vždy tam je raius, aproto by bylo nejlepší, kdyby si dialog pro zadaní radiusu vyvoval uživatel
|
||
![]() |
||
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 |
![]() |
|
Ale souřadnice čeho a proč? Z čeho určujete rádius? |
||
![]() |
||
enddys ![]() Nováček ![]() Přihlášen: 26.úno.2013 Lokalita: ČR (JM) Používám: AutoCad 2006 Stav: Offline Bodů: 8 |
![]() |
|
jedna se o výkresy nástroju pro výrobky. Uživatel si na výkresu nakliká body, které potřebuje a radiusy, které jsou ve výkresu zapsany, a program by je mel zapsat do dokumentu. V podstate se jedna o usnadnění PP., aby nemuseli v nastrojárně přepisovat velike množství cisel
|
||
![]() |
||
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 |
![]() |
|
Jedná se tedy o body, které jsou vždy na křivkách apod.? Rádius je zapsán v textu?
Nebylo by jednodušší do bodů navkládat bloky s atributem a číslem pořadí, stejně tak rádius popsat blokem s atributem a pak použít extrahování atributů? Pro rozmístění bodů po křivce existují utility, které samy číslují. Velká výhoda je, že při modifikaci výkresu jen posunete bloky a můžete exportovat znovu - není nutné vše znovu odklikávat. Dále máte kontrolu, že se například neukliknete mimo správný bod (například špatným chycením). |
||
![]() |
||
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ů: 21898 |
![]() |
|
Velmi pravděpodobně nemáte to "cislo" předem nastavené - tedy např.:
|
||
![]() |
||
enddys ![]() Nováček ![]() Přihlášen: 26.úno.2013 Lokalita: ČR (JM) Používám: AutoCad 2006 Stav: Offline Bodů: 8 |
![]() |
|
po dekladaci (setq cislo 1), chyba chyba: chybná funkce: 1,aneb stejný problém, jako když jsem postupovat podle návodu na internetu. Dle mého testovani je chybná funkce: 1 (kdy číslo je rovno číslu, které je zadano zde: (setq cislo (1 + cislo))
|
||
![]() |
||
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 |
![]() |
|
Pozor na mezery! Název funkce je "1+" ne "1 +" (1+ číslo) Můžete použít i obyčejné sčítání (setq a 0) (setq a (+ a 1)) |
||
![]() |
||
enddys ![]() Nováček ![]() Přihlášen: 26.úno.2013 Lokalita: ČR (JM) Používám: AutoCad 2006 Stav: Offline Bodů: 8 |
![]() |
|
jaj udelal jsem tam nechtene mezeru, ted uz přičítaní jde, nicméně to přičte tu jedničku pouze 1x:
(while (< i 4) (itoa (setq cislo (1+ cislo))) (MK3) (cti) ) Vystup: ;ROLNART102 N101 G1 X-300.137 Z-190.877 N101 G1 X-317.067 Z-157.284 N101 G1 X-349.492 Z-160.155 N101 G1 X-350.352 Z-186.571 |
||
![]() |
||
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ů: 21898 |
![]() |
|
Předpokládám, že ten výstup čísla chcete v oné funkci (strcat), nikoliv jen tak volně ve smyčce.
|
||
![]() |
||
enddys ![]() Nováček ![]() Přihlášen: 26.úno.2013 Lokalita: ČR (JM) Používám: AutoCad 2006 Stav: Offline Bodů: 8 |
![]() |
|
již všechno funguje, největší problémy mi delali ty syntaxe, z C++ jsem zvykly házet to "kde me napadne". Dekuji všem za užitecne informace |
||
![]() |
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,096 sekund.