Vytisknout stránku | Zavřít okno

Zaobli s R=0

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: CAD programování
Popis fóra: Otázky programování - nadstavby a utility pro CAD a GIS aplikace Autodesk (VBA, AutoLISP, ARX/C++, .Net, JavaScript, Python, MEL...)
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=8587
Datum vytištění: 29.dub.2026 v 16:27


Téma: Zaobli s R=0
Odeslal: honzic
Předmět: Zaobli s R=0
Datum odeslání: 05.kvě.2009 v 08:35
Dobry den,
 
     chtel jsem si vytvorit prikaz Zaobli s radiusem zaobleni 0.
 
;Zaobli R=0
(defun C:ZR()
     (command "_fillet" "r" "0")
     (princ)
)
 
Ovsem nefunguje to zcela korektne. Po spusteni prikazu to vypada nasledovne:
- - -
Příkaz: zr _fillet
Aktuální nastavení: Režim = OŘEŽ, Rádius = 300.0000
Vyberte první objekt nebo [Zpět/křiVka/Rádius/Ořež/NKrát]: r
*Neplatný výběr*
Očekává se bod nebo
OKno/posLední/Křížení/KVádr/Napříč/OPolygon/KPolygon/Zpět/křiVka/Rádius/Ořež
Error: Funkce zrušena; chyba: Nastala chyba uvnitř funkce *error*Nastavení
AutoCAD proměnné odmítnuto: "filletrad" nil
Vyberte první objekt nebo [Zpět/křiVka/Rádius/Ořež/NKrát]:
Vyberte druhý objekt nebo Shift-výběr pro použití rohu:
- - -
 
Zaobli to s posledne zadanym radiusem, ne s radiusem 0.
Vedel byste nekdo prosim co stim?
 



Odpovědi:
Odeslal: Pepa
Datum odeslání: 05.kvě.2009 v 08:43
zkuste dát podtržítko i před r (command "_fillet" "_r" "0")
nevím, jakou používáte verzi, ale po přechodu na 2009 jsem musel tento příkaz také upravit, "zlobilo" to úplně stejně

-------------
Pepa


Odeslal: Mantlík
Datum odeslání: 05.kvě.2009 v 08:53
Bez problémů funguje i např. tohle makro (bez lispu)
 
^C^C_fillet;_R;0;;
 
PS. Kdysi jsem někde stáhl lispík, který zaoblí s poloměrem 0, ale přitom pro "normální" příkaz zaobli zachová naposledy nastavený poloměr


-------------
J. Mantlík



Odeslal: chlebovsky
Datum odeslání: 05.kvě.2009 v 09:00
Zdravím, já osobně bych radši použil né zaoblení ale zkosení, je to takové lepší, přeci jen zaoblení s poloměrem nula :-) ale v podstatě je to samé.
Pokus chcete aby si ponechal předchozí nastavení, musíte ho napřed někam uložit např :
(setq old_filletrad (getvar "filletrad"))
pak provedete samotné zaoblení a pak zase nastavíte ten starý poloměr
(setvar old_filletrad)
jde to ošetřit i proti tomu kdyby jste funkci zaoblení stornoval, aby se to vrátilo zpět, ale to je už trošku náročnější, je k tomu třeba undo.atd...


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


Odeslal: Radim Cech
Datum odeslání: 05.kvě.2009 v 09:08
Nemohu s Vámi souhlasit, zkosení neumožňuje obloukové prvky! Takže Zaobli s R=0 je univerzálnější.

-------------
R.C.

OSTRAVA


Odeslal: honzic
Datum odeslání: 05.kvě.2009 v 12:52
Pouzivam Autocad Architecture 2009. S tim podtrzitkem pred r mi to ale nefunguje. Cry


Odeslal: honzic
Datum odeslání: 05.kvě.2009 v 13:02
Lze makru "^C^C_fillet;_R;0;;" nejak priradit klavesovy alias (ZR)? Nemam na mysli klavesovou zkratku typu CTRL+neco, ale alias. Aby to fungovalo jako ten lisp kde si definuji klavesove zkratky napr. (ZR).


Odeslal: johny
Datum odeslání: 05.kvě.2009 v 13:04
Pokud nepoužíváte nějakou úplně starou verzi AutoCadu, tak nejlepší je při výběru druhé ze zaoblovaných entit v příkazu [CMD]ZAOBLI[/CMD] (_FILLET) držet Shift a zaoblí vám to s R=0 a přitom nechá původní poloměr netknutý.

Jinak se mě mnohem víc osvědčil Lisp, který vám umožní přímo po spuštění zadávat hodnotu poloměru. Je to mnohem přirozenější...

(defun C:R () ;Zaobli ----- R ?
  (command "_fillet" "_r" pause)
  (command "_fillet")
  (princ)
)

Btw Pro neupravený příkaz [CMD]ZAOBLI[/CMD] (_FILLET) bych si v acad.pgp dal např. písmeno A  - a tímto zaobuji s R=0 (s tím shiftem) a s příkazem R se spouští normání zaokrouhlování. Je to velice rychlé...


Odeslal: Vladimír Michl
Datum odeslání: 05.kvě.2009 v 13:06
"Klávesový alias" - neboli příkazová zkratka - jde přiřazovat jen jednotlivým příkazům. Můžete si ale nadefinovat vlastní příkazy (viz váš úvodní příspěvek). Případné potíže s kompatibilitou maker řeší tip 6337.

-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz helpdesk.arkance-systems.cz)


Odeslal: johny
Datum odeslání: 05.kvě.2009 v 13:12
Podle mě je určo lepší mít Lisp, než alias pro makro. Makro totiž nemůžete snadno zopakovat pravým tlačítkem (nebo Enterem)... pokud to používate. 


Odeslal: johny
Datum odeslání: 05.kvě.2009 v 13:16
A zkoušel jste místo toho "R" dát "Rádius"nebo anglicky "_Radius" ... syntaxe asi bude ok. (To co jsem vám poslal mi funguje 100pro pod 2008.)


Odeslal: Ferdinand
Datum odeslání: 05.kvě.2009 v 16:42
To johny: ALe lze - zkratka fce (tj. to co je v lispu za defun c: ) se musí zapsat do acad.pgp a kromě toho ještě lisp má být automaticky načítán při startu (každého) výkresu.
ED: Já bych to dělal také tak:
- schovat původní hodnotu filletrad (já ho mám implicitně =0 ...Lamp )
- nastavit filletrad=0
- provést fillet
- načíst zpátky pův. hodn. filletrad


-------------
-FerTh-


Odeslal: vbehun
Datum odeslání: 05.kvě.2009 v 21:24
Lisp je zajisté mnohem přirozenější než klávesové makro, avšak uživatelé AutoCadu LT si s ním příliš nevyhrají ...
Původně odeslal(a) johny johny napsal(a):

...
Jinak se mě mnohem víc osvědčil Lisp, který vám umožní přímo po spuštění zadávat hodnotu poloměru. Je to mnohem přirozenější...


-------------
=^..^=


Odeslal: Radim Cech
Datum odeslání: 05.kvě.2009 v 23:17

Já mám několik verzí tlačítka pro nejfrekventovanější poloměry v silničařině a docela jsem si s tím vystačil, tzn. že jsem použil Váše první makro a natvrdo mám udaný poloměr. Můžete si jich nadefinovat, kolik je Vám libo.

LISP, který se zeptá na poloměr je téměř totéž, jako příkaz ZAOBLI, akorát když ten poloměr chci změnit, musím ještě dát R a pak hodnotu. Pokud se mně LISP pokaždé zeptá a musím ho entrem posunout dále, jaký ma vlastně přínos?


-------------
R.C.

OSTRAVA


Odeslal: honzic
Datum odeslání: 06.kvě.2009 v 07:54

A vam tento lisp

;Zaobli R=0
(defun C:ZR()
     (command "_fillet" "r" "0")
     (princ)
)
 
s takto natvrdo zadanym polomerem funguje? Me stale ne. Zkousel jsem to pod Architecture 2009 i pod ADT 2005 a ani v jednom mi to nechodi. Hlasi to chybu a pak to provede zaobleni s posdledne nastavenym polomerem.


Odeslal: Seiner
Datum odeslání: 06.kvě.2009 v 08:20
Ani mně to na AutoCADu 2009 nefunguje. Nechtěl jsem tomu věřit - měl by to být naprosto standardní postup. Důvod neznám, ale ani bych ho nehledal a obešel to pomocí (SETVAR "FILLETRAD" "0").
A má ti i tu výhodu, že si můžete uložit původní poloměr.


-------------
Vítězslav Seiner

Chrudim


Odeslal: johny
Datum odeslání: 06.kvě.2009 v 08:24
No nefunguje... on totiž [CMD]ZAOBLI[/CMD] (_FILLET) je jednou z několika výjimek, které fungujují jinak v listu a jinak v příkazovém řádku (asi to bude souviset s těmi verzemi).
Mě to funguje tak, že to nastaví aktuální poloměr na 0 a příkaz skončí. Aby mě to fungovalo korektně, tak to musím dát takhle...

(defun C:ZR()
     (command "_fillet" "r" "0") ;lépe dávejte _r
     (command "_fillet")
     (princ)
)

;kdyby pořád nic, tak zkuste...

(defun C:ZR( / frold)
     (setq frold (getvar "FILLETRAD"))
     (setvar "FILLETRAD" 0.0)
     (command "_fillet" pause pause)
     (setvar "FILLETRAD" frold)
     (princ)
)
; pokud vám to bude fungovat, tak by chtělo dopsat i errorovou funkci, která vám při nekorektním ukončení vrátí původní FILLETRAD.




Odeslal: honzic
Datum odeslání: 06.kvě.2009 v 08:39
Dekuji vsem za pomoc a za rady. Nakonec jsem to vyresil postupem jak pise pan Seiner. Takze vysledek vypada nasledovne:
 
;Zaobli R=0
(defun C:ZR()
     (setvar "filletrad" 0)
     (command "_fillet")
     (princ)
)
 
Funguje je to k me plne spokojenosti.
Jeste jednou dekuji a tesim se zas u dalsiho problemu Wink


Odeslal: honzic
Datum odeslání: 06.kvě.2009 v 08:47
Tak jeste jsem vyzkousel zapis od Johnyho. Ten prvni
 
(defun C:ZR()
     (command "_fillet" "r" "0") ;lépe dávejte _r
     (command "_fillet")
     (princ)
)
 
me nefunguje (Architecture 2009).
 
Ten druhy
 
(defun C:ZR( / frold)
     (setq frold (getvar "FILLETRAD"))
     (setvar "FILLETRAD" 0.0)
     (command "_fillet" pause pause)
     (setvar "FILLETRAD" frold)
     (princ)
)
funguje spolehlive i s pamatovanim puvodni hodnoty filletrad.
Diky moc
 


Odeslal: pavelstyl
Datum odeslání: 06.kvě.2009 v 09:59

Když jsme přecházeli z AutoCADu Mech 2006 na AutoCAD Mech 2009, tak jsem musel ve svých lispech před určité příkazy dát

(initcommandversion 2)
Potom ten příkaz pracuje stejně jako v předchozích verzích.

Takže např:

(initcommandversion 2)
(command "_fillet" "_r" "0" pause pause)

Pavel Štyl


Odeslal: Seiner
Datum odeslání: 06.kvě.2009 v 10:20
jj máte recht - tady se o tom taky píše
http://usa.autodesk.com/adsk/servlet/ps/item?siteID=123112&id=12638396&linkID=9240617" rel="nofollow - http://usa.autodesk.com/adsk/servlet/ps/item?siteID=123112&id=12638396&linkID=9240617
a je tam i řešení pro makro (LT)  ^R


-------------
Vítězslav Seiner

Chrudim


Odeslal: honzic
Datum odeslání: 06.kvě.2009 v 10:41
Tak jsem vyzkousel radu od pavelstyl. Aplikoval jsem to na ten uplne prvni zapis lispu a funguje to.
Takze ten puvodni zapis vypada takto:
 
;Zaobli R=0
(defun C:ZR()
     (initcommandversion 2)
     (command "_fillet" "_r" "0")
     (princ)
)
 
Zase jsem o neco chytrejsi.
Diky


Odeslal: Vladimír Michl
Datum odeslání: 06.kvě.2009 v 15:32
Je to popsané (i s bližšími detaily a příkaldy) v tipech:
http://www.cadforum.cz/cadforum/qaID.asp?tip=6337 - http://www.cadforum.cz/cadforum/qaID.asp?tip=6337
http://www.cadforum.cz/cadforum/qaID.asp?tip=6655 - http://www.cadforum.cz/cadforum/qaID.asp?tip=6655
 


-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz helpdesk.arkance-systems.cz)



Vytisknout stránku | Zavřít okno