Registrujte se na 22. ročník konference CADfórum 2025 - 30.9. Zámek Valeč.
Přes 119.000 registrovaných u nás, celkem 1.101.000 registrovaných (CZ+EN), přes 53.000 CAD/BIM bloků.
Vyzkoušejte nový přesný Inženýrský kalkulátor a
proměnné prostředí AutoCADu.
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 | |
chlebovsky ![]() 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
Zasloužilý člen ![]() ![]() Přihlášen: 18.čer.2007 Lokalita: ČR (JM) Používám: Autocad R9 - 2022 Stav: Offline Bodů: 112 |
![]() Zasláno: 02.srp.2007 v 13:16 |
Zdravím. Někdy se mi stane že mám dva objekty a potřebuju mezi ně třeba do 1/6 nakopírovat něco. Vytvořil jsem si utilitku rozdel, ale volám ji vrámci příkazu. A ta mi to má provést. Ale mám problém s tím že mi ten výsledný bod sice dobře spočítá ale vždy přichytí k uchopovacím funkcím. Tak jsem tam nastavil vypnutí, teď to funguje bezvadně, ale vždy vypne uchop. Nevíte jak to opětovně zapnout? Problém je v tom že výsledkem funkce musí být (xyz)....
Tady je lsp:
(defun rozdel (dist / b1 b2 b)
(setq b1 (getpoint (getvar "LASTPOINT") "\nDefinuj první bod :")) (setq b2 (getpoint (getvar "LASTPOINT") "\nDefinuj druhý bod :")) (if (< (getvar "OSMODE") 16384) (setvar "OSMODE" (+ 16384 (getvar "OSMODE")))
)
(setq b (polar b1 (angle b1 b2)(* dist (distance b1 b2)))) ) Funguje takto, mám dva prvky. Vemu jeden, dám kopie, a teď určuju bod vložení a já napíšu : (rozdel 0.166666), spustí se funkce, zadám první bod, druhý bod, a prvek se nakreslí do 1/6 ale jak pak zapnout uchop ???
Vždy musím znovu f3.....
|
|
![]() |
|
Kackac ![]() TOP uživatel ![]() Přihlášen: 11.úno.2006 Lokalita: ČR (Pha) Používám: AutoCAD Stav: Offline Bodů: 469 |
![]() |
mám v některých svých lispech:
(setq osold (getvar "OSMODE")) - na začátku programu (command "_-osnap" "") - před vložením bloku, resp. ukázáním místa vložení (setvar "OSMODE" osold) - na konci možná to není nejhladší způsob, ale mělo by to fungovat i u toho vašeho lispu |
|
![]() |
|
Seiner ![]() CAD/BIM manager ![]() Přihlášen: 01.říj.2004 Lokalita: ČR (PA) Používám: Mechanical 2017, Inventor 2017 a starší Stav: Offline Bodů: 1662 |
![]() |
Nojo - to je notoricky známá věc, jejíž první část taky p.Chlebovský ve svém lispu (korektněji napsaný) má. Jenže jste si asi nevšimnul, že on chce zadat příkaz normálně (tlačítkem, zkratkou...) a někde uprostřed vkládání parametrů použít předdefinovanou funkci.
Nějak mne nenapadá jiné řešení, něž napsat lispy, které by zahrnovaly i vlastní modifikační funkci (kopírování aj.). Pak není problém vrátit uchopovací mód zpátky. Ztrácí se tak ona flexibilita použití. Na druhou stranu si myslím, že vypisovat pořád "(rozdel 0.166666)" taky není příklad uživatelského konfortu :-)
|
|
Vítězslav Seiner
Chrudim |
|
![]() |
|
chlebovsky ![]() 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
Zasloužilý člen ![]() ![]() Přihlášen: 18.čer.2007 Lokalita: ČR (JM) Používám: Autocad R9 - 2022 Stav: Offline Bodů: 112 |
![]() |
Použití zpětného nastavení osold, nelze, z důvodu jak zmiňuje i p. Seiner. Poněvadž kdybych použil na konci lispu nastavení (setvar osmode tak hodnota co funkce vrátí je číslo uchopu a nikoliv hodnota spočítaného bodu. Samo že nevypisuju (rozdel.....) ale mám to defunované v ikoně.
Prostě kliknu na ikonu 1/6 a ta volá celou funkci.
Jen mě napadlo, jestli to co funkce vrátí by nemusel být celý bod, ale posloupnost příkázu
např
(setvar "OSMODE" 0)(list x y z)(setvar "OSMODE" old).... jenže nějak to nemůžu rozchodit.... prostě že výstupem bude celý proces nastavení i bodu...
|
|
![]() |
|
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 Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Implementujeme řešení Autodesk Stav: Offline Bodů: 21992 |
![]() |
Nezkoušel jsem to, ale myslím, že by mohlo v tomto případě pomoci nastavení OSNAPCOORD na 1 - nemusíte pak OSMODE vůbec vypínat.
|
|
![]() |
|
chlebovsky ![]() 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
Zasloužilý člen ![]() ![]() Přihlášen: 18.čer.2007 Lokalita: ČR (JM) Používám: Autocad R9 - 2022 Stav: Offline Bodů: 112 |
![]() |
pane Michl tak Vám jsem dával největší šanci, ale taky né. Taky to pořád chytá za uchopovací body....
To předělání funkcí (kopie, ....) dle p. Seinera moc nechci dělat...
Způsob že bych jako vrácenou hodnotu použil
(setvar "OSMODE" 0)(list x y z)(setvar "OSMODE" old) nelze taky protože to sice, vypne, nakreslí bod, a tapne, ale i ty dvě nastavení bere jako info o bodu, takže ve skutečnosti nakreslí 3 body.
Jen mě napadlo, kterou funkci vyvolává klávesa F3 jestli by se to nedalo řešit přímo takto :
(funkce F3)(list x y z)(funkce F3) jen vědět co ta F3 spouští za funkci, a hlavně musí vracet nil..
|
|
![]() |
|
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 Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Implementujeme řešení Autodesk Stav: Offline Bodů: 21992 |
![]() |
ne, to na to jdete špatně
zkuste do té vaší rutiny připsat na konec ještě převod na text:
(strcat (rtos(car b)) "," (rtos (cadr b)))
pak bude chodit ten postup s OSNAPCOORD
|
|
![]() |
|
Seiner ![]() CAD/BIM manager ![]() Přihlášen: 01.říj.2004 Lokalita: ČR (PA) Používám: Mechanical 2017, Inventor 2017 a starší Stav: Offline Bodů: 1662 |
![]() |
Hezké - ono to skutečně funguje. Logika mi sice uniká, ale pokusím si to zapamatovat :-)
|
|
Vítězslav Seiner
Chrudim |
|
![]() |
|
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 Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Implementujeme řešení Autodesk Stav: Offline Bodů: 21992 |
![]() |
Logika je ta, že musíte AutoCAD přesvědčit že jde o "souřadnici zadanou pomocí klávesnice" - pak zabere nastavení OSNAPCOORD.
|
|
![]() |
|
chlebovsky ![]() 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
Zasloužilý člen ![]() ![]() Přihlášen: 18.čer.2007 Lokalita: ČR (JM) Používám: Autocad R9 - 2022 Stav: Offline Bodů: 112 |
![]() |
Jo tak nakonec to funguje, moc moc díky všem.
A tady je teda výsledek :
(defun rozdel (dist / b1 b2 b)
(if (/= (getvar "OSNAPCOORD") 1)(setvar "OSNAPCOORD" 1)) (setq b1 (getpoint (getvar "LASTPOINT") "\nDefinuj první bod :")) (setq b2 (getpoint (getvar "LASTPOINT") "\nDefinuj druhý bod :")) (setq b (polar b1 (angle b1 b2)(* dist (distance b1 b2)))) (strcat (rtos(car b)) "," (rtos (cadr b))) ) a pak mám dvě ikonky :
a v makru mám lispík : (rozdel 0.5)
a druhý (rozdel (/ 1.0 3.0))
díky.
|
|
![]() |
|
Sedláček ![]() TOP uživatel ![]() Přihlášen: 15.dub.2005 Lokalita: Czech Republic Používám: AutoCad 2024 LT Stav: Offline Bodů: 384 |
![]() |
Nebylo by to jednodušší pře geometrickou kalkulačku _CALC?
Já to sice nepoužívám (ani nemohu - mám LT) ale dle helpu by to mělo jít.
|
|
![]() |
|
Seiner ![]() CAD/BIM manager ![]() Přihlášen: 01.říj.2004 Lokalita: ČR (PA) Používám: Mechanical 2017, Inventor 2017 a starší Stav: Offline Bodů: 1662 |
![]() |
BTW, tu polovinu teď už nemusíte řešit - uchopení _M2P.
(Ale takhle to máte jednotné a můžete případně přidávat další zlomky.)
|
|
Vítězslav Seiner
Chrudim |
|
![]() |
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 0,216 sekund.