ARKANCE - globální Platinum partner Autodesk ARKANCE | KONTAKT - CZ | SK | EN | DE
Již 10.000+ CAD tipů. Přes 118.500 registrovaných u nás, celkem 1.096.000 registrovaných (CZ+EN), přes 53.000 CAD/BIM bloků. Vyzkoušejte nový přesný Inženýrský kalkulátor a aktualizovaný Generátor čarových kódů. Kompletní příkazy AutoCADu a proměnné AutoCADu 2026.
Registrujte se na konferenci CADfórum 2025 - automatizace navrhování
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 helpdesk.arkance-systems.cz
  FAQ FAQ  Prohledat fórum   Události   Registrovat Registrovat  Přihlásit Přihlásit

Téma uzavřenoProgramek v AutoLispu

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

Přihlášen: 09.dub.2009
Lokalita: ČR (OL)
Používám:
AutoLisp
Stav: Offline
Bodů: 2
Přímý odkaz na tuto zprávu Téma: Programek v AutoLispu
    Zasláno: 09.dub.2009 v 22:30
Dobry den.
Potřeboval bych poradit s programkem.
Program by mel po urceni bodu a prumeru D1
1,Nabreslit kruznici o zadanem prumeru D1.
2,V tom samem bode nakreslit kruznici o prumeru D2=D1*1,7.
3,Nakreslit sestiuhelnik ktery bude opisovat kruznici o prumeru D2.
Hlavni problem mi dela vypocet prumeru D2,
pokusil sem se neco napsat ale jenom na papir.
Zpět nahoru
svarc.vl Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 01.říj.2004
Lokalita: ČR (ÚL)
Používám:
Autocad Mechanical 2010
Stav: Offline
Bodů: 204
Přímý odkaz na tuto zprávu Zasláno: 10.dub.2009 v 06:17

budete potřebovat příkazy pro zadání (získání)bodu a pak budete využívat příkazy autocadu. Lisp používá pro výpočty jinou logiku, že zadáte funkci a pak proměnné). pro zápis do proměnné je funkce setq  takže příklad:

zadání hodnoty do proměnné
(setq d1 50.0)
 
získání bodu
(setq bod (getpoint "výběr bodu:"))
nakreslení kružnice, postupojete jako by jste psal hodnoty místo do příkazové řádky tak je píšete za příkaz command, pevné hodnoty do uvozovek proměnné bez nich
 
(command "_circle" bod "D" d1 )
pro výpočet d2 pak máte
(setq d2 (* d1 1,7))
 
pokud píšeteprogram ve visual lispu v autocadu menu pomůcky -> autolisp ->editor a napíšete příkaz tak se vám označí modře  vy po najetí kurzoru na něj a stisknutí CTRL+F1 dostanete nápovědu a příklady k němu
Zpět nahoru
chlebovsky Zobrazit panel
Zasloužilý člen
Zasloužilý člen
Avatar

Přihlášen: 18.čer.2007
Lokalita: ČR (JM)
Používám:
Autocad R9 - 2022
Stav: Offline
Bodů: 112
Přímý odkaz na tuto zprávu Zasláno: 10.dub.2009 v 08:55
K přístupu do prostředí programování můžete použít i příkaz "vlide".

Ale k problému
Tady to je :

(defun c:pokus (/ cen rad1 rad2 cir1 cir2 pol pb1 pb2 pb3 pb4 pb5 pb6)
  (setq cen (getpoint "\nZadej střed kružnice"))
  (if cen
    (progn
      (setq rad1 (getdist cen "\nZadej poloměr kružnice :"))
      (if rad1
    (progn
      (setq rad2 (* 1.7 rad1))
      (setq cir1 (entmake (list (cons 0 "CIRCLE")(cons 10 cen)(cons 40 rad1))))
      (setq cir2 (entmake (list (cons 0 "CIRCLE")(cons 10 cen)(cons 40 rad2))))
      (setq pb1 (list (cons 10 (list (car (polar cen (* pi 0.000) rad2))(cadr (polar cen (* pi 0.000) rad2))))(cons 40 0.0)(cons 41 0.0)(cons 42 0.0)))
      (setq pb2 (list (cons 10 (list (car (polar cen (* pi 0.333) rad2))(cadr (polar cen (* pi 0.333) rad2))))(cons 40 0.0)(cons 41 0.0)(cons 42 0.0)))
      (setq pb3 (list (cons 10 (list (car (polar cen (* pi 0.666) rad2))(cadr (polar cen (* pi 0.666) rad2))))(cons 40 0.0)(cons 41 0.0)(cons 42 0.0)))
      (setq pb4 (list (cons 10 (list (car (polar cen (* pi 1.000) rad2))(cadr (polar cen (* pi 1.000) rad2))))(cons 40 0.0)(cons 41 0.0)(cons 42 0.0)))
      (setq pb5 (list (cons 10 (list (car (polar cen (* pi 1.333) rad2))(cadr (polar cen (* pi 1.333) rad2))))(cons 40 0.0)(cons 41 0.0)(cons 42 0.0)))
      (setq pb6 (list (cons 10 (list (car (polar cen (* pi 1.666) rad2))(cadr (polar cen (* pi 1.666) rad2))))(cons 40 0.0)(cons 41 0.0)(cons 42 0.0)))
      (setq pol (append (list (cons 0 "LWPOLYLINE")(cons 100 "AcDbEntity")(cons 100 "AcDbPolyline")(cons 90 6)(cons 70 1)(cons 43 0.0)(cons 38 0.0)(cons 39 0.0)) pb1 pb2 pb3 pb4 pb5 pb6 (list (cons 210 (list 0.0 0.0 1.0)))))
      (setq pol (entmake pol))
    )
    (alert "Nebyl zadán poloměr kružnice !")
      )
    )
    (alert "Nebyl zadaný střed kružnice !")
  )
)

Připadá mi to jako hlava šroubu, matičky, pak by taky bylo dobré aby to všechno spojil do jednoho bloku, aby se to chovalo jakoby jeden celek, navíc by to šlo udělat i tak že se zeptá na začátku jaký šroub a z databaze Vám to vytáhne přislušný tvar a rovnou vloží.... ale to jsme někde jinde.

S pozdravem Martin.


Ing. Martin Chlebovský

www.kde-je-auto.cz

GPS monitoring provozu vozidel a osob.

WebDeveloper.

Programátor aplikací pro Autocad a MS Office.

Tvorba WWW aplikací.

Modelování domů a staveb.&l
Zpět nahoru
chlebovsky Zobrazit panel
Zasloužilý člen
Zasloužilý člen
Avatar

Přihlášen: 18.čer.2007
Lokalita: ČR (JM)
Používám:
Autocad R9 - 2022
Stav: Offline
Bodů: 112
Přímý odkaz na tuto zprávu Zasláno: 10.dub.2009 v 08:56
Jo načíst do Cadu a spustit příkazem pokus (je to definované na začátku v c:pokus, když dáte c:xxx budete spouštět pomoci příkazu xxx
Ing. Martin Chlebovský

www.kde-je-auto.cz

GPS monitoring provozu vozidel a osob.

WebDeveloper.

Programátor aplikací pro Autocad a MS Office.

Tvorba WWW aplikací.

Modelování domů a staveb.&l
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar
ARKANCE

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Implementujeme řešení Autodesk
Stav: Offline
Bodů: 21941
Přímý odkaz na tuto zprávu Zasláno: 10.dub.2009 v 09:23
Neděste začátečníka takovými složitostmi :-)
 
Zcela postačí i:

(defun c:krux ( / D1)
 (setq D1 (getdist "\nPrůměr D1: "))
 (command "_Circle" pause "_D" D1)
 (command "_Circle" "@" "_D" (* D1 1.7))
 (command "_Polygon" 5 "@" "_C" (* D1 1.7 0.5))
 (princ)
)
Vladimír Michl (moderátor)
ARKANCE CZ - arkance.world
(podpora viz helpdesk.arkance-systems.cz)
Zpět nahoru
svarc.vl Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 01.říj.2004
Lokalita: ČR (ÚL)
Používám:
Autocad Mechanical 2010
Stav: Offline
Bodů: 204
Přímý odkaz na tuto zprávu Zasláno: 10.dub.2009 v 09:53

No právě vypadá to jako zadání příkladu ve škole, ale aspoň se kouknu jak to dělá někdo jiny. Zajímalo by mně rozdíl mezi vytvořením kružnice přes příkaz cadu a příkazem lispu entmake.

Jedná se o to , že si můžu definovat další hodnoty ve vlastnostech entity ?
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar
ARKANCE

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Implementujeme řešení Autodesk
Stav: Offline
Bodů: 21941
Přímý odkaz na tuto zprávu Zasláno: 10.dub.2009 v 11:06
(entmake) je jen rychlejší a složitější...
Vladimír Michl (moderátor)
ARKANCE CZ - arkance.world
(podpora viz helpdesk.arkance-systems.cz)
Zpět nahoru
Cruele Zobrazit panel
Nováček
Nováček

Přihlášen: 14.dub.2009
Lokalita: ČR (JM)
Používám:
AutoCAD2008
Stav: Offline
Bodů: 2
Přímý odkaz na tuto zprávu Zasláno: 14.dub.2009 v 16:05
Dobrý Den,ja mam taky takový "školni"problem.Čast programu už mam ,ale ztracim se s vytvořením oblouku.Mam při tom střed oblouku a koncove body.Vím,že bych mel použit funkci arc,ale nemam poneti jak.Stačí mi jen nasmerovat.Děkuji moc
Zpět nahoru
svarc.vl Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 01.říj.2004
Lokalita: ČR (ÚL)
Používám:
Autocad Mechanical 2010
Stav: Offline
Bodů: 204
Přímý odkaz na tuto zprávu Zasláno: 15.dub.2009 v 07:26
použijete příkaz autocadu _arc (podtržítko je označení aglického příkazu), pak spouštíte příkazy autocadu v lispu pomocí funkce command a za funkci píšete proměnné a parametry v  pořadí jako jsou v příkazové řádce autocadu. Pokud chcete počkat na vstup uživatele pak napíšete pause , pokud chcete poslední bod napíšete @. Pevné hodnoty píšete do uvozovek, proměnné jménem.
např.
(command "_arc" "S" "0,0" "1,1" "-1,1") ; S znamená, že nejdříve zadáváte střed
pokud máte  hodnotu bodu v proměnné pak
(command "_arc" "S" bod1 bod2 bod3)
a jestli máte  pouze souřadnice bodu pak je "spojíte" příkazem list
(command "_arc" "S" (list x1 y1) bod2 bod3)
zkuste si příkaz v autocadu a koukněte se co Vám autocad píše.
(jinak kreslení oblouku mi dělá proti směru hodinových ručiček těď si nevzpomenu jaká je to proměnná)
 
Zpět nahoru
shortys.ivo Zobrazit panel
Nováček
Nováček

Přihlášen: 15.dub.2009
Lokalita: Czech Republic
Používám:
AutoCAD2008
Stav: Offline
Bodů: 2
Přímý odkaz na tuto zprávu Zasláno: 15.dub.2009 v 15:58
Dobrý den,
mám také "školní" problém....
Potřebuji vytvořit prográmek:

Je dán úhel AVB a vbitřní bod M.Sestrojte kružnici k procházející bodem M,která se dotýká obou ramen úhlu.

Už se s tím trápím několik dnů a stále to nemůžu zprovoznit:(


Upravil shortys.ivo - 15.dub.2009 v 16:02
Zpět nahoru
Mantlík Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 01.říj.2004
Lokalita: ČR (Pha)
Používám:
ACAD/Map/Civil R10-> 2022
Stav: Offline
Bodů: 2574
Přímý odkaz na tuto zprávu Zasláno: 15.dub.2009 v 16:19
A jak jste daleko - co už Vám funguje?
 
Máte-li už nakreslený úhel a bod, tak kružnici sestrojíte např. :
(command "_circle" "_3p" "_nod" pause "_tan" pause "_tan" pause)
 
to  pause  znamená čekání na uživatelský vstup
pak ale musíte znát sekvenci, v jaké budete body zadávat (tady je to bod, tečna, tečna)
 
lepší (a odolnější proti chybám) bude ale uložit na výzvy bod a tečny do proměnných a pak to najednou vykreslit (anebo aspoň vypsat hlášku, v jakém pořadí se to má zadávat)
 
J. Mantlík

Zpět nahoru
shortys.ivo Zobrazit panel
Nováček
Nováček

Přihlášen: 15.dub.2009
Lokalita: Czech Republic
Používám:
AutoCAD2008
Stav: Offline
Bodů: 2
Přímý odkaz na tuto zprávu Zasláno: 15.dub.2009 v 17:02
Sem to zkousel takhle, nevim jak si poradit s tema tecnama....sem z toho chtel vytvorit entity, ale asi je to spatne zapsany(nefunguje to):

(defun C:ukol()
 
 (print "Uhel AVB je dan pomoci bodu A, V, B:")
 
 (setq bod_V (getpoint "Zadejte bod V:"))
 
 (setq bod_A (getpoint "Zadejte bod A:"))
  (command "_line" bod_V bod_A "")
  (setq primka_VA (entlast))

 (setq bod_B (getpoint "Zadejte bod B:"))
  (command "_line" bod_V bod_B "")
  (setq primka_VB (entlast))
 
  (setq bod_M (getpoint "Zadejte bod M(Podmínka : Musi byt uvnitr uhlu AVB):"))
 
  (command "_circle" "3B" bod_M "tan" primka_VA "tan" primka_VB)
 
 


 
 
 )
Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 7243:VIPVytvoření filtru hladin řádkovým příkazem z menu nebo skriptu.
Tip 6648:VIPDávkové spuštění Převodníku hladin - vynucení standardů.
Tip 6326:VIPPořadí načítání souborů ACAD.LSP, ACADDOC.LSP, ACAD20xxDOC.LSP, MENU.MNL a dalších
Tip 13544:Jaké je nejmenší a největší číslo reprezentovatelné v AutoLISPu v AutoCADu?
Tip 13551:Rozdílová kóta X,Y.
Tip 1920:Existuje česká literatura k AutoCAD programování - VisualLISP, VBA a ObjectARX?


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