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
Programek v LISP |
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 |
Téma: Programek v LISP 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: Dodáváme produkty Autodesk Stav: Offline Bodů: 21491 |
Zasláno: 26.úno.2013 v 08:51 | |
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 |
Zasláno: 26.úno.2013 v 09:23 | |
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 |
Zasláno: 26.úno.2013 v 09:33 | |
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 |
Zasláno: 26.úno.2013 v 09:40 | |
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 |
Zasláno: 26.úno.2013 v 09:52 | |
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 |
Zasláno: 26.úno.2013 v 09:59 | |
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 |
Zasláno: 26.úno.2013 v 10:24 | |
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: Dodáváme produkty Autodesk Stav: Offline Bodů: 21491 |
Zasláno: 26.úno.2013 v 10:53 | |
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 |
Zasláno: 26.úno.2013 v 10:58 | |
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 |
Zasláno: 26.úno.2013 v 11:22 | |
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 |
Zasláno: 26.úno.2013 v 12:01 | |
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: Dodáváme produkty Autodesk Stav: Offline Bodů: 21491 |
Zasláno: 26.úno.2013 v 12:44 | |
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 |
Zasláno: 26.úno.2013 v 12:51 | |
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,359 sekund.