ARKANCE - globální Platinum partner Autodesk ARKANCE | KONTAKT - CZ | SK | EN | DE
Přes 123.500 registrovaných u nás, celkem 1.132.000 registrovaných (CZ+EN). Tipy pro AutoCAD 2027, pro Inventor 2027 a pro Revit 2027. Nový Kalkulátor nosníků, Inženýrský kalkulátor, Spirograf generátor a Regresní křivky v sekci Převodníky. Kompletní příkazy a proměnné AutoCADu 2027.
Be.Smart Connector - ACC-Bluebeam
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 emea.support.arkance.world
  FAQ FAQ  Prohledat fórum   Události   Registrovat Registrovat  Přihlásit Přihlásit

Téma uzavřenoProgramek v LISP

 Odpovědět Odpovědět archiv
Autor
enddys Zobrazit panel
Nováček
Nováček

Přihlášen: 26.úno.2013
Lokalita: ČR (JM)
Používám:
AutoCad 2006
Stav: Offline
Bodů: 8
Přímý odkaz na tuto zprávu 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.
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
řešení Autodesk
Stav: Offline
Bodů: 22229
Přímý odkaz na tuto zprávu 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ší:

... (strcat "N" (itoa (setq cislo (1+ cislo))) ...
 
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).
Vladimír Michl (moderátor)
LinkedIn, Autodesk Expert Elite
Zpět nahoru
enddys Zobrazit panel
Nováček
Nováček

Přihlášen: 26.úno.2013
Lokalita: ČR (JM)
Používám:
AutoCad 2006
Stav: Offline
Bodů: 8
Přímý odkaz na tuto zprávu Zasláno: 26.úno.2013 v 09:23
když pouziji Váš kod, vyhodi mi to chybu: "chyba: chybný typ argumentu: numberp: nil" :(

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ů: 1676
Přímý odkaz na tuto zprávu Zasláno: 26.úno.2013 v 09:33
Původně odeslal(a) enddys enddys napsal(a):

.... 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.



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...

Zpět nahoru
enddys Zobrazit panel
Nováček
Nováček

Přihlášen: 26.úno.2013
Lokalita: ČR (JM)
Používám:
AutoCad 2006
Stav: Offline
Bodů: 8
Přímý odkaz na tuto zprávu 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
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ů: 1676
Přímý odkaz na tuto zprávu Zasláno: 26.úno.2013 v 09:52
Původně odeslal(a) enddys enddys napsal(a):

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


Ale souřadnice čeho a proč? Z čeho určujete rádius?
Zpět nahoru
enddys Zobrazit panel
Nováček
Nováček

Přihlášen: 26.úno.2013
Lokalita: ČR (JM)
Používám:
AutoCad 2006
Stav: Offline
Bodů: 8
Přímý odkaz na tuto zprávu 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
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ů: 1676
Přímý odkaz na tuto zprávu 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).
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
řešení Autodesk
Stav: Offline
Bodů: 22229
Přímý odkaz na tuto zprávu Zasláno: 26.úno.2013 v 10:53
Původně odeslal(a) enddys enddys napsal(a):

když pouziji Váš kod, vyhodi mi to chybu: "chyba: chybný typ argumentu: numberp: nil" :(
 
Velmi pravděpodobně nemáte to "cislo" předem nastavené - tedy např.:
(setq cislo 1)
 
Vladimír Michl (moderátor)
LinkedIn, Autodesk Expert Elite
Zpět nahoru
enddys Zobrazit panel
Nováček
Nováček

Přihlášen: 26.úno.2013
Lokalita: ČR (JM)
Používám:
AutoCad 2006
Stav: Offline
Bodů: 8
Přímý odkaz na tuto zprávu 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))
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ů: 1676
Přímý odkaz na tuto zprávu Zasláno: 26.úno.2013 v 11:22
Původně odeslal(a) enddys enddys napsal(a):

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))



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))

Zpět nahoru
enddys Zobrazit panel
Nováček
Nováček

Přihlášen: 26.úno.2013
Lokalita: ČR (JM)
Používám:
AutoCad 2006
Stav: Offline
Bodů: 8
Přímý odkaz na tuto zprávu 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
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
řešení Autodesk
Stav: Offline
Bodů: 22229
Přímý odkaz na tuto zprávu 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.
Vladimír Michl (moderátor)
LinkedIn, Autodesk Expert Elite
Zpět nahoru
enddys Zobrazit panel
Nováček
Nováček

Přihlášen: 26.úno.2013
Lokalita: ČR (JM)
Používám:
AutoCad 2006
Stav: Offline
Bodů: 8
Přímý odkaz na tuto zprávu Zasláno: 26.úno.2013 v 12:51
Původně odeslal(a) Vladimír Michl Vladimír Michl napsal(a):

Předpokládám, že ten výstup čísla chcete v oné funkci (strcat), nikoliv jen tak volně ve smyčce.


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

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 3821:Starší LISP aplikace mi nefungují správně.
Tip 176:problem with Lisp code for defining of Linewidth
Tip 12636:VIPZjištění práce v síti VPN (LISP).
Tip 6927:AutoCAD mi hlásí: ; chyba: nesprávný typ argumentu: fixnump:
Tip 4683:VIPJak zablikat zvolenou entitou ve výkresu?
Tip 4021:VIPVýpis "Mechanical" proměnných PowerPack/Genius.


 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,320 sekund.