Vytisknout stránku | Zavřít okno

dialogy

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=8262
Datum vytištění: 13.čer.2026 v 00:32


Téma: dialogy
Odeslal: Ferdinand
Předmět: dialogy
Datum odeslání: 12.bře.2009 v 09:12

Někde (zde?) jsem to již jednou našel, ale nepoznamenal, teď ať hledám jak hledám, nemohu nalézti... Jde o to: pokud v lispu použiju funkci, která nemá "bezdialogovou" variantu, tak lze vynutit vyvolání dialogu nějakým příkazem (ten právě hledám). Anebo lze to nějak elegantně obejít? (např. pro funkce overkill anebo pljoin)

...Omluva: pljoin není dialogový příkaz. Přesto ale bych ho chtěl použít v lispu - zatím se mi to nedaří.



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



Odpovědi:
Odeslal: zdrk
Datum odeslání: 12.bře.2009 v 09:17
Nestačilo by -OVERKILL


Odeslal: zdrk
Datum odeslání: 12.bře.2009 v 09:18
Jinak http://www.cadforum.cz/cadforum/qaID.asp?tip=1650 - TIP 1650 - Jak provést jediný příkaz s vypnutými dialogy?


Odeslal: Ferdinand
Datum odeslání: 12.bře.2009 v 09:57
-overkill jsem zkoušel v násl. variantách, ze kterých nefung ani jedna. Formy zápisu v lispu:
;;1;;
(load (findfile "overkill.lsp"))
(command "delay" 500)
(command "_-overkill" "_All" "" "_I" "ltype,color,lweight,plotstyle" "_F" 0.1 "_P" "_Y" "_T" "_Y" "_E" "_Y" "")
;;2;;
(load (findfile "overkill.lsp"))
(command "delay" 500)
_-overkill
_All
 ;
_I
ltype,color,lweight,plotstyle
_F 0.1
_P _Y
_T _Y
_E _Y
 ;
;;;3;;;
(load (findfile "overkill.lsp"))
(command "delay" 500)
(C:_-overkill)
(while(>(getvar "cmdactive")0)(command "_All" "" "_I" "ltype,color,lweight,plotstyle" "_F" 0.1 "_P" "_Y" "_T" "_Y" "_E" "_Y" ""))
;;;4;;;
(load (findfile "overkill.lsp"))
(command "delay" 500)
(setq QS1 (ssget "X" '((410 . "Model"))))
(command "_-overkill" QS1 "_I" "ltype,color,lweight,plotstyle" "_F" 0.1 "_P" "_Y" "_T" "_Y" "_E" "_Y" "")
Dokonce ani v p.ř. CADu to neprovede. Průběh si můžete vysledovat:
Command: -overkill
Select objects: all
5 found
Select objects:
2 objects were not in the current space.
...
...
Enter an option to change [Ignore/Fuzz/Plines/parTial/Endtoend] <done>:
po zadání Enter se nic nespojí (zkoušel jsem to pro 3 navazující čáry).
Edit: Další omluva - nějak jsem si to spletl dohromady... Chtěl jsem zkoušku pro příkaz -overkill a očekávám výsledek příkazu pljoin... Jedná se o příkaz -overkill, který na p.ř. samozřejmě zafunguje (musí tam ale být ty duplicity Smile...které jsem já tam neměl - po nakopírování 3 úseček x-krát za sebou na sebe to duplicity odstraní OK) Nicméně uvedené formy zápisu opravdu nevedou ke kýženému výsledku...


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


Odeslal: zdrk
Datum odeslání: 12.bře.2009 v 11:22
S tím lispem Vám moc neporadím.
Jen z vlastních zkušenostím vím, že příkaz[cmd]OVERKILL[/cmd] požaduje proměnnou [var]PEDITACCEPT[/var] na hodnotě "0".
A aby spojil čáry do jedné, musí být v naprosté rovině.


Odeslal: Martin Bielina
Datum odeslání: 12.bře.2009 v 16:33
Původně odeslal(a) Ferdinand Ferdinand napsal(a):

-overkill jsem zkoušel v násl. variantách, ze kterých nefung ani jedna. Formy zápisu v lispu:
;;1;;

(load (findfile "overkill.lsp"))(command "delay" 500)

(command "_-overkill" "_All" "" "_I" "ltype,color,lweight,plotstyle" "_F" 0.1 "_P" "_Y" "_T" "_Y" "_E" "_Y" "")



OVERKILL není vnitřní příkaz autocadu, pokud jej chcete/potřebujete volat, tak je potřeba použít zápis:

(c:overkill)

A další problém bude v těch parametrech. Tady si nejsem jistý jestli vůbec jde OVERKILL k něčemu podobnému donutit, myslím tím ve stavu jak je autodeskem distribuován. Nejlepší by asi bylo (autoři OVERKILL prominou) zkopírovat jeho kód a proměnné nastavit podle potřeby a celé to pak spouštět jako lokální subrutinu z té vaší.

asi nějak takhle:
(defun overkillferdinand
.... dle originálu, ale upravit to nastavení "na tvrdo"
)

a někde ve vašem kódu zapsat
(c:overkillferdinand)

Pro pljoin platí bohužel totéž ...


Odeslal: Ferdinand
Datum odeslání: 25.bře.2009 v 09:22
OK, šlo mi jen o to, zavolat v lispu tyto Express funkce, aby proběhly korektně tak jak jsou, bez úpravy (není nutné nastavovat, byl to jen příklad). Asi mám smůlu.
Nyní jiný dotazy týkající se také dialogu - neumím to a proto potřebuji s tím poradit:
1. Jak dostanu v dialog. panelu vedle sebe např. tři boxed_radio_column tak aby nebyly pod sebou jako nudle, ale narovnány vedle sebe?
2.  Má být několik radio_button společně v jednom boxed_radio_column. Vedle jednoho radio_button by měl být popup_list, který by se aktivoval pouze v případě aktivace (volby) tohoto jednoho radio_button , v případě volby kteréhokoliv jiného radio_buttonu má být nepřístupný. Jak do toho popup_list dostanu jednotlivé hodnoty seznamu a jak je definován výběr konkrétního řetězce pro použití v lispu (vidím, že tam má být nějaký key=...)?


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



Vytisknout stránku | Zavřít okno