Šiame įraše sužinosite, kaip sukurti pasirinktinius LISP rutinos dialogo langus naudojant DCL (Dialog Control Language). Viduje paskutinis įrašas sukūrėme pagrindinį dialogo langą, šiame įraše pridėsime varpelius ir švilpukus.

Norėdami gauti išsamią DCL komandų, skirtų BricsCAD, apžvalgą, galite peržiūrėti oficialius, BricsCAD DCL kūrėjų vadovas.


Šiame įraše aptariamos šios temos:


Greita DCL METACHARAKTERIŲ SANTRAUKA

DCL METACHARAKTERIS REIKŠMĖ
// (pasvirasis brūkšnys) Nurodo komentaro eilutę
/* (pasvirasis žvaigždutė) Pradeda komentarų skyrių
*/ (žvaigždutė pasvirusi) Baigė komentarų skyrių
: (dvitaškis) Pradeda plytelių apibrėžimą. Iš anksto nustatytose plytelėse, kaip ir tarpiklyje, dvitaškis nenaudojamas
{ (petnešos) Paleidžiamas dialogo langas ir plytelių atributai
(tarpas) Atskiria simbolius
= (lygus) Apibrėžia atributo reikšmes
“” (tiesi citata) Prideda teksto atributus
; (kabliataškis) Baigia atributo apibrėžimą. Kiekvienas požymis turi baigtis kabliataškiu
} (petnešos) Baigta plytelių ir dialogo atributai

 


Pradėti dialogo lango apibrėžimą

Kiekvieno .dcl failo turinys prasideda vardo atributu. Tai vardas, kuriuo susijusi LISP rutina iškviečia dialogo kodą. Pavadinimo funkcija atrodo taip:

vardas: dialogo langas {

Kaip ir LISP, atvirai petnešai reikia užsegimo, kad būtų parodytas dialogo lango apibrėžimo pabaiga:

}

Tarp dviejų petnešų rašote visą kodą, kuris nurodo BricsCAD, kad jis atrodytų dialogo lange.

Šiai mokymo programai pavadinkite dialogo langą „lastInput“ taip:

paskutinė įvestis: dialogo langas {

}

DCL vardai yra mažosios ir mažosios raidės, todėl „lastInput“ nėra tas pats, kas „LastINPUT“ arba „lastinput“.

Dialogo lango pavadinimas

Dialogo lango pavadinimo juostos tekstą nurodo etiketė nuosavybė, tokia:

vardas: dialogo langas {

etiketė = „Dialogo lango pavadinimas“;

}

Pažymėkite šį dialogo langą „Paskutinis įvestis“ taip:

paskutinis įvestis: dialogo langas {

etiketė = “Paskutinė įvestis“;

}

Pavadinimo tekstą reikia rašyti kabutėse (“). Etiketės ypatybė turi būti baigta kabliataškiu (;). Ir naudinga įterpti kodą, kad jis būtų skaitomas.

Gerai mygtukas

Kiekviename dialogo lange reikia išėjimo mygtuko, bent jau gero. („Windows“ deda numatytąjį X mygtuką
kiekvieno dialogo lango viršutinis dešinysis kampas, kuris taip pat veikia, jei norite išeiti iš dialogo langų, pagamintų naudojant DCL!)

Mygtukai yra apibrėžti su mygtuką nuosavybė, po kurios pateikiamos pridedamo mygtuko savybės
breketuose:

: mygtukas {

}

Kadangi dialogo languose gali būti keli mygtukai, kiekvienas mygtukas turi būti identifikuojamas pagal ypatybę
vadinamas „raktu“. Svarbiausia yra tai, kaip LISP pateikia instrukcijas mygtukams. Naudokite rakto atributą, kad pažymėtumėte šį mygtuką „OKButton“ kaip „OKButton“:

klavišas = „okButton“;

Mygtukas turi rodyti etiketę, kurią vartotojai galėtų skaityti. Tai yra mygtukas Gerai, todėl pažymėkite jį mygtuku „Gerai“ etiketė atributas taip:

etiketė = „Gerai“;

Sudėkime juos visus kartu. Čia parodytas mygtuko Gerai pridėtas kodas spalva, su raktu, etikete ir „is_default“ atributais. (Žr. Žemiau apie informaciją apie numatytąjį atributą.) Turime mygtuką, pažymėtą kaip „okButton“, pažymintį etiketę „Gerai“, ir jis yra nustatytas kaip numatytoji plytelė.

paskutinis įvestis: dialogo langas {

etiketė = „Paskutinė įvestis“;

: mygtukas {

klavišas = „okButton“;

etiketė = „Gerai“;

is_default = true;

}

}

PATARIMAS DCL kodas OK mygtukas yra tarsi paprogramė. Tą patį kodą galima naudoti dar kartą, kai reikia dialogo lango OK mygtuką, kurio beveik visą laiką nėra. Vėliau pamatysite, kaip sukurti paprogrames su DCL kodu.

Numatytoji plytelė

Kad vartotojams būtų lengviau gyventi, visada sukuriama viena dialogo lango plytelė numatytas plytelių. Vartotojams reikia tik paspausti Enter norėdami suaktyvinti numatytąją plytelę. Dialogo langeliai tam tikru būdu paryškina numatytąją plytelę, pavyzdžiui, brūkšniu ar spalvotu kontūru. Vartotojai gali paspausti Skirtukas perkelti numatytąjį sutelkti dėmesį (šiuo metu paryškinta plytelė) kitoms dialogo lango sritims.

Plytelė yra numatytoji su yra numatytasis atributas taip:

is_default = true;


LISP KODAS ĮKRAUTI IR VEIKTI DIALOGO DĖŽUTES

Šis LISP kodas yra tas, kurį naudojate įkeldami, paleisdami ir išeidami iš dialogo lango „lastInput.dcl“ apibrėžimo failo:

(netaikoma C: xx ()

(„setq dlg-id“ (load_dialog „c: \\ lastInput“))

(new_dialog „lastInput“ dlg-id)

(veiksmo_tile „priimti“ „(padaryta_dialog)“)

(pradžios_dialogas)

(„unload_dialog dlg-id“)

)

Pažiūrėkime, ką reiškia LISP kodas. Funkcija apibrėžiama kaip „xx“ su LISP neveikimo funkcija. Programavimas = derinimas, todėl man patinka naudoti lengvai įvedamą LISP programos pavadinimą, pvz., „Xx“.

(netaikoma C: xx ()

„LastInput.dcl“ failas įkeltas su „load_dialog“ funkcija. Nereikia nurodyti „.dcl“ plėtinio, nes tai yra vienintelis šios funkcijos tikslas: įkelti DCL failus.

  • „Windows“ sistemoje nurodykite disko pavadinimą, C: \\. Atminkite, kad LISP reikalauja, kad atskirtų katalogų pavadinimus naudotumėte \\, o ne \.

    („setq dlg-id“ (load_dialog „c: \\ lastInput“))

  • „Linux“ nepalikite disko pavadinimo:

    („setq dlg-id“ (load_dialog „lastInput“))

DCL failuose gali būti daugiau nei vienas dialogo lango apibrėžimas, todėl kitas žingsnis yra naudoti funkciją new_dialog ir pasakyti BricsCAD, kurį norite pasiekti. Šiuo atveju yra tik vienas, „lastInput“.

(new_dialog „lastInput“ dlg-id)

Dialogo lange yra mygtukas pavadinimu „okButton“, o jo paskirtį nustato LISP, o ne DCL! Čia naudojate „action_tile“ funkciją, kad priskirtumėte veiksmą „okButton“ plytelėms. Mygtuko paskirtis gyvenime yra vykdyti funkciją done_dialog, kuri išeina iš dialogo lango. Trumpai tariant, spustelėkite Gerai, jei norite išeiti iš dialogo lango. Tai galite perskaityti taip: „plytelės, pavadintos okButton, veiksmas yra…“.

(„action_tile“ okButton “„ (done_dialog) “)

Atlikus visus šiuos parengiamuosius darbus, ateina didysis momentas. „Start_dialog“ funkcija paleidžia dialogo langą ir laukia, kol paspausite jo mygtuką.

(pradžios_dialogas)

Kaip tvarkingi programuotojai, mes iškrauname dialogo langą iš atminties su „unload_dialog“ funkcija.

(„unload_dialog dlg-id“)

Ir paskutinis skliaustas baigiasi xx funkcija.

)


Tikrinti DCL kodą

Turite pakankamai DCL kodo, kad galėtumėte jį išbandyti dabar - tai leidžia pamatyti, kaip vystosi dialogo langas. Norėdami patikrinti kodą, atlikite šiuos veiksmus:

  1. Atidaryti užrašų knygelę, Teksto redagavimas, ar kitą ASCII teksto rengyklę.
  2. Įveskite DCL kodą, kurį sukūrėme anksčiau:
    dcl kodavimas pritaikant bricscad
    DCL kodo įvedimas į teksto rengyklę

    Svarbu: Įsitikinkite, kad šis DCL ir LSP failas naudoja tiesias kabutes, kurios atrodo taip: „. Jei juose yra kabučių („arba“), rutinos nepavyks. LISP skųsis: „klaida: blogo argumento tipas; laukiama “, o DCL įdės dialogo langą, kuriame bus skundžiamasi, sintaksės klaida: netikėta„ “.

  3. Įrašykite failą kaip lastinput.dcl. Kad LISP xx.lsp rutina galėtų lengvai ją rasti, išsaugokite failą aukščiausio lygio aplanke:
    • „Windows“ sistemoje išsaugokite DCL failą C: \ diske.
    • „Linux“ ir „Mac“ įrenginiuose išsaugokite DCL failą savo namų aplanke. Pavyzdžiui, aš prisijungiu prie „Linux“ naudodamas vartotojo vardą „ralphg“, todėl failą išsaugojau aplanke „ralphg“.
  4. Dabar atidarykite naują failą ir įveskite LISP kodą, aprašytą šiame puslapyje esančiame langelyje: „LISP kodas, kurį reikia įkelti ir paleisti dialogo langelius“.
    Įveskite LISP kodą į teksto rengyklę
  5. Įrašykite failą kaip xx.lsp, taip pat tame pačiame aplanke kaip ir DCL failas
  6. Perjunkite į BricsCAD, tada atidarykite xx.lsp failą BricsCAD:
    • „Windows“ sistemoje naudokite „Explorer“, norėdami vilkti xx.lsp failą į BricsCAD piešimo langą. (Vilkite failą daug greičiau nei įvesdami „AppLoad“ komandą arba naudodamiesi LISP įkėlimo funkcija!)
    • „Linux“ turite naudoti įkėlimo funkciją, nes failų negalima vilkti į „BricsCAD“ „Linux“ versiją. Raginime „:“ įveskite:

      : (įkelti „xx“)

  7. Tipas xx vykdyti rutiną, kuri įkelia dialogo langą:

    : xx

    Atminkite, kad pasirodys dialogo langas! Na, taip turėtų būti, jei nepadarėte jokių kodavimo klaidų.

    pasirinktiniai dialogo langai „Linux“ ir „Windows“
    Kairė: Dialogo langas „Windows 7“.
    Dešinė: Dialogo langas „Linux Mint“
  8. Spustelėkite OK išeiti iš dialogo lango.
    Čia yra DCL kodo dialogo lango sukūrimo žemėlapis:

    kaip kodas veikia BricsCAD dialogo langą
    Dialogo langas, sukurtas naudojant DCL kodą

DUOMENŲ Rodymas iš sistemos kintamųjų

Yra nustatyta pagrindinė dialogo lango struktūra: etiketė ir mygtukas Gerai. Dabar laikas pridėti duomenis, kuriuos norime parodyti sistemos kintamaisiais.

Sistemų duomenys iš dialogo lango atrodys taip:

Paskutinis kampas: 45
Paskutinis punktas: 1,2,3
Paskutinis raginimas: Linija

Aš parodau statinis tekstas į spalva. Jis niekada nesikeičia. Šis tekstas veikia kaip raginimas vartotojams pasakyti, ką reiškia skaičiai.

Juodas tekstas yra kintamąjį; jo rodymas keičiasi ir priklauso nuo susijusio sysvaro vertės.

Tekstas plytelė rodo tekstą dialogo languose, o jo kodas atrodys taip:

: tekstas {

etiketė = „Paskutinis kampas:“;

raktas = „paskutinis kampas“;

}

Ar galite atpažinti šios teksto plytelės atributus?

Pradėkite tekstą šia plytele:

: tekstas {

Kitas, etiketė atributas pateikia raginimą „Paskutinis kampas:“.

etiketė = „Paskutinis kampas:“;

Kitas, etiketė atributas pateikia raginimą „Paskutinis kampas:“.

etiketė = „Paskutinis kampas:“;

pagrindinio atributas nurodo teksto plytelę kaip „paskutinis anglis“.

pagrindinio = „Paskutinis kampas“;

Galiausiai teksto plytelė uždaroma petnešomis.

}

PATARIMAS Teksto plytelės gali turėti šiuos atributus:

  • išlyginimas
  • fiksuotas aukštis
  • fiksuotas plotis
  • ūgio
  • is_bold
  • pagrindinio
  • etiketė
  • vertės
  •  plotis

Pridėkite paryškintą kodą į DCL failą ...

BricsCAD DCL tinkintų dialogo langų kodas
DCL kodo pridėjimas teksto rengyklėje

... ir tada paleiskite xx.lsp vėl rutina. Atminkite, kad dialogo lange dabar rodomas tekstas „Paskutinis kampas:“:

Dialogo langas, atsirandantis dėl pridėto DCL kodo

Kitas žingsnis - parodyti sistemos kintamojo „LastAngle“ išsaugotą vertę. Pridėkite antrą teksto plytelę:

: tekstas {

reikšmė = “”;

raktas = „lastAngleData“;

}

vertės šios plytelės iš pradžių yra tuščia, nes ji neturi etiketės ir neturi vertės. Norėdami užpildyti teksto plytelę, turime naudoti funkciją LISP, kuri ištraukia vertę iš „LastAngle“ sistemos kintamąjį, tada įveda jį į dialogo langą.

Ryšys tarp LISP kodo ir DCL failo yra pagrindinio, kuris čia pavadintas „lastAngleData“. (Aš šiek tiek vėliau parodysiu LISP kodą.) Dabar DCL failas atrodo taip, naujas kodas rodomas spalva. Galite nukopijuoti šį kodą ir įklijuoti jį į teksto rengyklę.

paskutinis įvestis: dialogo langas {

etiketė = „Paskutinė įvestis“;

: tekstas {

etiketė = „Paskutinis kampas:“;

raktas = „paskutinis kampas“;

}

: tekstas {

reikšmė = “”;

raktas = „lastAngleData“;

}

: mygtukas {

klavišas = „okButton“;

etiketė = „gerai“;

is_default = true;

}

}

(Jei būtumėte paleidę šį DCL kodą dabar, dialogo langas atrodytų niekuo neišsiskiriantis. Jį vis tiek reikia LISP
pasakyti paskutinio kampo vertę. Tai bus kitą kartą.)

PAPILDYTI PAPILDOMĄ SĄLYGOS KODĄ

DCL kodo rašymas visada yra tik pusė darbo. Kita pusė yra papildomo kodo įrašymas į LISP. Ištraukite vertę iš „LastAngle“, atlikite šiuos du veiksmus:

1 žingsnis: Naudokite getvar funkcija, kad pasiektumėte „sysvar LastAngle“ vertę, o tada sukauptą vertę išsaugokite kintamajame lang (sutrumpintai „paskutinis kampas“) su setq funkcija, tokia:

(setq lang (getvar „Paskutinis anglis“))

2 žingsnis: Naudokite funkciją set_tile, kad nustatytumėte lang reikšmę į „lastAngleData“ plytelę:

(set_tile „LastAngleData“ (rtos lang 2 2))

PATARIMAS Plytelės veikia tik su tekstu, be skaičių. Tačiau vertė „LastAngle“ yra skaičius, todėl jūs turite jį konvertuoti į tekstą. Tai daroma su rtos funkciją:

(rtos lang 2 2))

Aš konvertuoju tikrąjį skaičių į eilutę (dar žinomą kaip tekstą), naudodamas 2 režimą (dešimtosios dalies) ir 2 tikslumą (dvi dešimtųjų tikslumu).

Kai naujos kodo eilutės rodomos spalva, LSP failas dabar atrodo taip:

(netaikoma C: xx ()

(„setq dlg-id“ (load_dialog „c: \\ lastInput“))

(new_dialog „lastInput“ dlg-id)

(„setq lang“ (getvar „paskutinis stačiakampis“))

(„set_tile“ lastAngleData “(„ rtos lang 2 2 “))

(„action_tile“ okButton “„ (done_dialog) “)

(pradžios_dialogas)

(„unload_dialog dlg-id“)

)

Įrašykite .dcl ir .lsp failus, tada įkelkite ir paleiskite xx.lsp BricsCAD.

Dabar dialogo langas atrodo taip:

Dialogo langas, nurodantis kampo vertę

KLASTERINIS TEKSTAS

Hmmm ... du teksto fragmentai yra sudedami vienas ant kito ir tai yra problema. Jie turėtų būti horizontalūs. Tekstas sudedamas vertikaliai, nes DCL deda plyteles stulpelius pagal nutylėjimą.

Sprendimas yra priversti dvi teksto plyteles pasirodyti viena šalia kitos su Eilutė plytelė:

: eilutė {

: tekstas {

etiketė = „Paskutinis kampas:“;

raktas = „paskutinis kampas“;

}

: tekstas {

reikšmė = “”;

raktas = „lastAngleData“;

}

}

Modifikuokite DCL failą, pridėdami eilutės plytelę, tada paleiskite LISP failą iš naujo. Rezultatas turėtų atrodyti geriau:

modifikuoti dialogo langus
Kampinis tekstas suformatuotas į vieną eilutę

Dabar, kai paskutinio kampo tekstas atrodo tinkamas, galite nukopijuoti ir įklijuoti jo kodą naudoti kitoms dviem eilutėms ir tada atlikti tinkamus pakeitimus. Pakeitimai, kuriuos turite atlikti, yra pavaizduoti spalva:

: eilutė {

: tekstas {

etiketė = „Paskutinis taškas: “;

raktas = “paskutinis taškas“;

}

: tekstas {

reikšmė = “”;

raktas = „paskutinisTaškasDuomenys “;

}

}

Ir galutinai paraginti:

: eilutė {

: tekstas {

etiketė = „Paskutinis greitą: “;

raktas = „paskutinisRaginama“;

}

: tekstas {

reikšmė = “”;

raktas = „paskutinisRaginamaDuomenys “;

}

}

Bėgimas xx.lsp pateikia dialogo langą visus tris raginimus, tačiau trūksta duomenų iš dviejų naujų:

modifikuoti ir pritaikyti BricsCAD
Pridėta informacijos eilutė

Tiekia kintamąjį tekstą

Duomenys pateikiami LISP kodu. Čia apžvelgsime, kaip tvarkyti 3D koordinates ir tekstą.

Prisiminkite, kad LISP grąžina taškų vertę kaip trijų skaičių sąrašą, kaip šis:

(1.0000 2.0000 3.0000)

Skaičiai nurodo atitinkamai x, y ir z koordinates. Turime trijų skaičių sąrašą paversti eilute - kodėl jis turi būti toks sunkus ?! Naudokite šį kodą, kuris daro prielaidą, kad kintamajame lpt yra (1.0000 2.0000 3.0000):

(automobilis lpt)

automobilis funkcija ištraukia x-koordinatę iš sąrašo kaip tikrąjį skaičių, pavyzdžiui, 1.0000. Panašiai:

(kadr lpt)

(kaddr lpt)

kadr ir kaddr funkcijos ištraukia y (2.0000) ir z (3.0000) koordinates. Norėdami konvertuoti tikruosius skaičius į eilutes, naudokite rtos funkciją:

(rtos (automobilis lpt))

(rtos (cadr lpt))

(rtos (caddr lpt))

Ir tada sujungti tris atskiras stygas į vieną eilutę, naudokite strcat (stygų sujungimas), tokia:

(strcat

(rtos (automobilis lpt))

(rtos (cadr lpt))

(rtos (caddr lpt))

)

Šis kodas rodo 1.000 2.000 3.000. Gražu būtų paliesti kablelius tarp skaičių:

(strcat

(rtos (automobilis lpt)) „,“

(rtos (cadr lpt)) „,“

(rtos (caddr lpt))

)

Sudėkite abi kodo eilutes ir mes pasiekiame LISP, reikalingą implantuoti „LastPoint“ sistemos kintamojo reikšmę dialogo lange:

(setq lpt („getvar“ paskutinistaškas“))

(„set_tile“ paskutinisTaškasDuomenys “ („strcat“ (rtos (automobilis lpt)) „,“ (rtos (kadro lpt)) „,“ (rtos 

(caddr lpt))))

Pridėkite kodą xx.lspir paleiskite jį BricsCAD, kad pamatytumėte rezultatą.

Paskutinio taško duomenų pridėjimas

Palikdami kambarį kintamam tekstui

Oi, skaičiai yra nukirpti. BricsCAD dydžiai - dialogo lango dydis nustatomas prieš LISP kodą įterpiant duomenis, todėl jis nežino, kad dialogo langas turi būti didesnis, kad tilptų x, y, z koordinatės - kurios gali trukti daug simbolių.

Sprendimas yra naudoti plotis kiekvienos teksto plytelių atributas, toks:

: tekstas {

reikšmė = “”;

raktas = „lastAngleData“;

plotis = 33;

}

Pridėjus prie DCL failo, rezultatas atrodo taip:

dialogo langus galima pritaikyti BricsCAD
Pridedami paskutiniai x, y taškų duomenys

MYGTUVO PLATUMO Tvirtinimas

Oi. Dabar mygtukas Gerai yra per platus. Norėdami susiaurinti (ty pataisyti jo plotį), naudokite fiksuotas plotis atributas DCL faile:

fiksuotas plotis = tiesa;

Nustačius ją tiesa, mygtukas padaromas tik tokio pločio, kaip etiketėje.

Daugiau pakeitimų

Mygtuko centravimas

Oi! Dabar mygtukas nebėra centre. Pagal numatytuosius nustatymus mygtukas yra pateisinamas kairiuoju mygtuku. Norėdami centruoti, naudokite išlyginimas atributas:  išlyginimas = centre;

Pridėkite naują kodą prie DCL failo mygtuko dalies…

: mygtukas {

klavišas = „okButton“;

etiketė = „gerai“;

is_default = true;

lygiavimas = centre;

fiksuotas plotis = tiesa;

}

... ir paleiskite xx.lsp failą, kad pamatytumėte tinkamo dydžio mygtuką OK.

DIALOGO LANGELIO TESTAVIMAS

Visada gera mintis išbandyti dialogo langą esant daugeliui situacijų. Naudokite komandą Linija
nubrėžti kelias linijas. Šis veiksmas keičia trijų sisvarų reikšmes. Pakartokite xx.lsp rutiną.
Dialogo lange rodomos vertės turėtų būti skirtingos.

Tinkamai suformatuotas dialogo langas

Apibrėždami komandą

Kol kas jūs vykdėte xx.lsp, kad sukurtumėte ir išbandytumėte dialogo langą. Dabar, kai jis veikia tinkamai, turėtumėte pakeisti „xx“ pavadinimą į labiau apibūdinantį. Pervardykite LISP failą kaip last.lsp, pakeiskite funkcijos pavadinimą į C: paskutinis, ir padarykite kintamuosius vietiniais taip:

(apgauti c:paskutinis (/ dlg-id lang lpt lcmd)

(„setq dlg-id“ (load_dialog „c: \\ lastInput“))

(new_dialog „lastInput“ dlg-id)

(„setq lang“ (getvar „paskutinis stačiakampis“))

(„set_tile“ lastAngleData “(„ rtos lang “))

(setq lpt (getvar „paskutinis taškas“))

(„set_tile“ lastPointData “(„ strcat “(rtos (automobilis lpt))„, “(rtos (cadr lpt))„, “

(rtos (caddr lpt))))

(„setq lcmd“ („getvar“ lastprompt “))

(„set_tile“ lastPromptData “lcmd)

(„action_tile“ okButton “„ (done_dialog) “)

(pradžios_dialogas)

(„unload_dialog dlg-id“)

)

Visas DCL failas atrodo taip:

paskutinis įvestis: dialogo langas {

etiketė = „Paskutinė įvestis“;

: eilutė {

: tekstas {

etiketė = „Paskutinis kampas:“;

raktas = „paskutinis kampas“;

}

: tekstas {

reikšmė = “”;

raktas = „lastAngleData“;

plotis = 33;

}

}

: eilutė {

: tekstas {

etiketė = „Paskutinis taškas:“;

klavišas = „lastPoint“;

}

: tekstas {

reikšmė = “”;

raktas = „lastPointData“;

plotis = 33;

}

}

: eilutė {

: tekstas {

etiketė = „Paskutinis raginimas:“;

klavišas = „lastPrompt“;

}

: tekstas {

reikšmė = “”;

raktas = „lastPromptData“;

plotis = 33;

}

}

: mygtukas {

klavišas = „okButton“;

etiketė = „gerai“;

is_default = true;

lygiavimas = centre;

fiksuotas plotis = tiesa;

}

}

Jei norite, kad ši komanda būtų automatiškai įkeliama kiekvieną kartą paleidus BricsCAD, pridėkite last.lsp į „AppLoad“ komandos paleisties sąrašas.

DCL plytelių pavyzdžiai

Turėdami pagrindinę mokymo programą, pažiūrėkime, kaip užkoduoti kitų tipų dialogo lango funkcijas.

Šioje paskutinėje šio įrašo dalyje mes žiūrime, kaip užkoduoti šias plyteles:

Prisiminkite, kad visada reikia dviejų kodo dalių:

  1. DCL kodas, kuris nurodo dialogo lango išdėstymą
  2. LISP kodas, kuris suaktyvina dialogo langą.

MYGTUKAI

prieš mokymą, jūs užkodavote mygtuką Gerai tai leido išeiti iš dialogo lango. Pasirodo, nereikia kodavimo, nes BricsCAD už jus užkoduoja daugybę mygtukų ir kitų dialogo lango elementų. Jie randami byloje, vadinamoje bazė.dcl paprastai įkeliama į BricsCAD automatiškai.

Iš anksto pastatytų plytelių pavadinimai yra šie:

Iš anksto pastatyta plytelė Rodomas mygtukas (-ai)
gerai_ vienintelis OK
gerai_atšaukti Gerai Atšaukti
ok_cancel_help Gerai Atšaukti Pagalba
ok_cancel_help_info Gerai Atšaukti Pagalbos informaciją. . .
„Ok_Cancel_Help_Errtile“ Gerai Atšaukti Pagalba, pridėjus vietos klaidų pranešimams.

Naudokite šias iš anksto pastatytas plyteles, kad užtikrintumėte nuoseklų dialogo langų vaizdą. Čia yra pavyzdys, kaip naudoti šiuos mygtukus DCL failuose:

gerai_ka tik;

Tai taip paprasta!

Atminkite, kad plytelių pavadinime nėra tradicinio priešdėlio dvitaškis (:), tačiau reikia kabliataškio (;) terminatoriaus.

DCL leidžia kurti mygtukus, kurių etiketės pagamintos iš teksto (mygtuką plytelės) arba vaizdai (image_button plytelės).

Norėdami nurodyti, kad mygtukas atidaro kitą dialogo langą, naudokite elipsę (…), pvz., Informacija….

Be teksto ir vaizdo mygtukų, nustatymus galima pakeisti naudojant žymimuosius laukelius (perjungti plytelės) ir radijo mygtukai (radijo mygtukas plytelės), kaip aprašyta toliau.

Padaryti mygtukai veikia

OK ir Atšaukti yra nesunkūs, nes jų funkcijos jau yra apibrėžtos. Vienas dalykas yra užpildyti dialogo langą su mygtukais; tai dar vienas jų reikalavimas vykdyti komandas.

Pažiūrėkime, kaip priversti mygtukus vykdyti komandas. Šiame vadove sukursite dialogo langą su Sklypas ir Peržiūra mygtukai. Žemiau pateiktas paveikslėlis parodo, kaip jis atrodys „Linux“ (panašiai atrodo „Windows“).

pasirinktiniai „Linux“ dialogo langai

Mygtuko Braižyti tikslas yra vykdyti Sklypas komandą ir mygtuką „Peržiūra“, jei norite vykdyti Peržiūra komandą.

Lengvas sprendimas būtų pridėti veiksmas kiekvieno mygtuko atributas LISP funkcijai vykdyti, pvz., (komanda „plot“). Bet mes negalime, nes DCL neleidžia to labai naudingo komandų funkcija, kuri bus naudojama veiksmo atribute!

Svarbiausias uždavinio sprendimas yra pagrindinio atributas. Tai suteikia mygtukus, identifikuojančius pavadinimus, pagal kuriuos LISP funkcijos gali juos nurodyti, pvz .:

raktas = „sklypas“;

Tada LISP faile naudojate veiksmo_tile funkcija vykdyti komandą Plot. Na, ne visai. Jis turi tą patį apribojimą nenaudojant komandų funkciją, todėl turite kreiptis į tai netiesiogiai gaudami veiksmo_tile nurodyti a antra LISP rutina, tokia kaip (veiksmo_tile „Sklypas“ (cmd-plot)”).

Bet net tai neveiks, nes jums reikia pasirinktinio dialogo lango, kad jis dingtų iš ekrano, o jį pakeis dialogo langas Plot. Sprendimas turi būti dar netiesioginis:

(veiksmo_tile „siužetas“ “(setq kitasDlg 1) (padaryta_dialog) “)

„Sklypas“ - per klavišą „plot“ identifikuoja mygtuką Plot.

(„setq nextDlg 1“) - įrašo, kad vartotojas spustelėjo mygtuką Sklypas, kad vėliau galėtų toliau tvarkyti.

(padarytas_dialogas) - uždaromas dialogo langas.

Tai daroma du kartus, po vieną kartą, kai vartotojas spustelėja mygtuką Brėžti arba Peržiūra. Mygtuko Peržiūra kodas yra panašus; pakeitimai yra paryškinti:

(veiksmo_tile “peržiūra“(„ Setq nextDlg 2 “(padaryta_dialog)“)

Tada jums reikia kažkokio kodo, kuris nuspręstų, ką daryti, kai „nextDlg“ yra 1 arba 2:

(jei (= kitasDlg 1) (cmd-plot))

(jei (= kitasDlg 2) („cmd“ peržiūra))

Kai nextDlg = 1, tada vykdoma ši paprogramė:

(nugriauti „cmd-plot“)

(komanda „spausdinti“)

)

Kai nextDlg = 2, tada vykdoma ši paprogramė:

(šmeižia „cmd“ peržiūra ()

(komanda „peržiūra“)

)

Kadangi planuojame projektą, pažvelkime į visą kodą. Pirmiausia į x.dcl failą pridedate pagrindinius atributus prie kiekvieno mygtuko. Kodas, susijęs su Braižymo mygtukas yra pavaizduotas paryškintas šriftas, tuo tarpu Su peržiūra susijęs kodas rodomas spalva:

x: dialogas {label = “Sklypas”;

: eilutė {

: mygtukas {label = „Sklypas“; mnemoninis = „P“; raktas = sklypas; }

: mygtukas {label = „Peržiūrėti“; mnemoninis = „v“; klavišas = „peržiūra“; }

atšaukti mygtuką;

} }

Antra, xx.lsp failą, pridedate kodą, kuris vykdo komandas „Plot“ ir „Preview“.

(netaikoma c: xx (/)

(„setq dlg-id“ („load_dialog“ c: \\ x “))

(„new_dialog“ x “dlg-id)

(„action_tile“ plot “„ (setq nextDlg 1) (done_dialog) “)

(„action_tile“ preview “„ (setq nextDlg 2) (done_dialog) “)

(pradžios_dialogas)

(„unload_dialog dlg-id“)

(if (= nextDlg 1) (cmd-plot))

(jei (= kitasDlg 2) („cmd“ peržiūra))

)

(nugriauti „cmd-plot“)

(komanda „spausdinti“)

)

(netenka „cmd“ peržiūros ()

(komanda „peržiūra“)

)

Atminkite, kad „Linux“ sistemoje reikia pašalinti „c: \\“, kad „load_dialog“ eilutė būtų tokia:

(„setq dlg-id“ („load_dialog“ x “))

Kai pasirodys dialogo langas, spustelėkite kiekvieną mygtuką, kad įsitikintumėte, jog jis vykdo susijusią komandą.

Žymės langeliai

Žymės langeliai leisti įjungti vieną ar daugiau parinkčių. Jie kontrastuoja su radijo mygtukai, kurie apsiriboja vienu pasirinkimu. Kontrolinius laukelius sukuria perjungti plytelių.

Šiame vadove sukursite žymimąjį langelį, kuris pakeis taškų objektų formą. Tai pasiekiama pakeitus „PdMode“ sistemos kintamasis. Taip, yra „DdPType“ komanda, kuri daro tą patį dalyką, tačiau tai yra kitoks požiūris, kaip pamatysite.

„PdMode“ sistemos kintamasis gali pasiimti šias reikšmes:

  • 0 taškų (.)
  • 1 nieko
  • 2 plius (+)
  • 3 kryžius (x)
  • 4 Trumpa vertikali linija (|)
  • 32 apskritimas
  • 64 kvadratas

Be to, šiuos skaičius galima sujungti pridedant. Pavyzdžiui, 34 (32 + 2) prideda apskritimą (32) prie pliuso simbolio (2).

Iš kairės į dešinę: „PdMode“ = 32, 33 ir 34.

Taškų, kuriuos reikia žinoti, ypatumas: 32 iš tikrųjų yra apskritimas su tašku (32 + 0), nes 0 brėžia tašką. Palyginimui, 33 (32 + 1) yra tik apskritimas, nes 1 rodo nieko!

Pažiūrėkime, kaip sukurti dialogo langą, kuris leistų mums pasirinkti pliuso, apskritimo ir kvadrato taško simbolių derinius. O kaip su dialogo langu, kuris atrodo maždaug taip ...

dialogo lango anatomija

Čia yra kodas, kurio reikia norint sugeneruoti dialogo langą:

x: dialogas {label = „Taško stilius“;

: stulpelis {label = “Pasirinkite taško stilių:”;

: perjungti {klavišas = „pliusas"; etiketė = „Plius“; reikšmė = „1“; }

: perjungti {raktas = „apskritimas“; etiketė = „Apskritimas“; }

: perjungti {raktas = „kvadratas"; etiketė = „Kvadratas“; }

}

ok_atšaukti;

}

Atkreipkite dėmesį į tai, kad reikšmė = „1“ įjungia parinktį „Plus“ (norint parodyti varnelę), paverčiant ją numatytąja verte.

Dabar parašykime LISP failą, kad dialogo langas veiktų. Kažkas tokio paprasto („action_tile“ plius “„ (setvar „pdmode“ 2) “) neveikia, nes vartotojas gali norėti pasirinkti daugiau nei vieną parinktį - tai yra visas perjungimo taškas. Kodas reikalingas norint atlikti tris veiksmus:

1 žingsnis: Perskaitykite, kurį variantą (-us) vartotojai patikrino.
2 žingsnis: Sudėkite nustatymą (-us).
3 veiksmas: Nustatykite „PdMode“, kad būtų rodomas norimas taško stilius.

Įgyvendinkime tai:

  1. Norėdami perskaityti vartotojo įvestį iš dialogo langų, naudokite LISP 1TP2vertė „Plus“ perjungimo kintamasis:

    (veiksmo_tile “plius“„ (Setq plusVar 1TP2vertė) “)

    Pakartokite kodą kitiems dviem perjungimams, apskritimui ir kvadratui:

    (veiksmo_tile “apskritimas“„ (Setq apskritimasVar 1TP2vertė) “)

    (veiksmo_tile “kvadratas„(Setq squareVar 1TP2vertė) “)

  2. 1TP2vertė kintamajame yra tik 1 ir 0. Vėliau mes naudosime paieškos lentelę, kad konvertuotume 1 ir 0 į reikšmes, kurių tikimasi „PdMode“. Pvz., Jei pasirinktas „Plus“ („1“), tada „PdMode“ tikisi 2 vertės. Peržvalgų lentelė numeriams taisyti naudoja „if“ funkciją:

    (if (= plusVar “1”) (setq pliusNum 2) (setq pliusNum 0))

    Tai galima skaityti taip:

    Jei plusVar = 1, tada nustatykite pliusNum = 2;

    priešingu atveju, nustatykite pliusNum = 0.

    Pakartokite kitų dviejų perjungimų, apskritimo ir kvadrato, paieškos kodą:

    (if (= squareVar “1”) (setq squareNum 64) (setq squareNum 0))

    (jei (= apskritimasVar „1“) (rink apskritimasNum 32) (setq apskritimasNum 0))

    PATARIMAS „Get_tile“ gauta „$value“ iš tikrųjų yra eilutė, tokia kaip „1“. Tačiau „PdMode“ sistemos kintamasis tikisi sveiko skaičiaus. Taigi, paieškos lentelė atlieka antrinę funkciją konvertuoti eilutes į sveikus skaičius.

    Kai reikšmės yra tokios, kokių tikimasi iš „PdMode“, pridėkite jas naudodami + funkciją:

    (setq vars (+ pliusNum apskritimasNum squareNum)

  3. Norėdami pakeisti „PdMode“, jūs dirbate LISP setvar funkcija, tokia:

    (setvar „Pdmode“ vars)

    Čia yra visas LISP kodas:

    (netaikoma c: xx (/)

    („setq dlg-id“ („load_dialog“ c: \\ x “))

    („new_dialog“ x “dlg-id)

    ;; Gaukite dabartines vertes iš kiekvienos perjungimo plytelės:

    („setq plusVar“ („get_tile“ plus “))

    („setq circleVar“ (gauti_tile „apskritimą“))

    („setq squareVar“ (get_tile „square“))

    ;; Peržiūrėkite, kuriuos mygtukus perjungia vartotojo paspaudimai:

    („action_tile“ plus “„ (setq plusVar $value) “)

    („action_tile“ circle “„ (setq circleVar $value) “)

    („action_tile“ square “„ (setq squareVar $value) “)

    (pradžios_dialogas)

    („unload_dialog dlg-id“)

    ;; Paieškos lentelė konvertuoja „0“ / „1“ eilutes į tinkamus sveikus skaičius:

    (jei (= plusVar „1“) (setq plusNum 2) (setq plusNum 0))

    (jei (= apskritimasVar „1“) („setq circleNum 32“ („setq circleNum 0“))

    (jei (= squareVar „1“) (setq squareNum 64) (setq squareNum 0))

    ;; Sudėkite sveikus skaičius ir tada pakeiskite sistemos kintamąjį

    („setq vars“ (+ plusNum apskritimasNum squareNum))

    (setvar „pdmode“ vars)

    )

Radijo mygtukai

Radijo mygtukus lengviau koduoti nei perjungimus, nes vienu metu gali būti aktyvus tik vienas.
Šiame vadove jūs sukursite dialogo langą, kuriame naudojant radijo mygtukus pakeisite lėktuvą. Dialogo langas keičia sistemos SnapIsoPair vertės kintamąjį, kuris užima šias reikšmes:

  • 0 Kairysis izoplanas (numatytasis)
  • 1 Viršutinis lėktuvas
  • 2 Dešinysis izoplanas

Norėdami sukurti tokį dialogo langą ...

... imasi šio kodo:

x: dialogas {label = “Isoplane”;

: stulpelis {label = „Pakeiskite izoplane į:“;

: radijo mygtukas {klavišas = „kairė"; etiketė = „Kairysis izoplanas“; reikšmė = „1“; }

 

: radijo mygtukas {klavišas = „viršuje"; etiketė = „Viršutinis lėktuvas“; }

: radijo mygtukas {klavišas = „dešinė"; etiketė = „Dešinysis lėktuvas“; }

tarpiklis;

}

ok_atšaukti;

}

Atkreipkite dėmesį į tai, kad reikšmė = „1“ įjungia žymės langelio X žymėjimą šalia Kairė.

Prieš eidami į pridedamą LISP failą, pirmiausia nustatykite BricsCAD, kad būtų rodomas izometrinis režimas:

  1. Įveskite Nustatymai komandą.
  2. Lauke Paieška įveskite „Snap Style“.pasirinktiniai dialogo langai
  3. „Snap Type“ sąraše pasirinkite Izometrinis pritraukimas.
  4. Spustelėkite X atsisakyti dialogo lango.

BricsCAD dabar veikia izometriniu režimu.

Kai naudojate žemiau aprašytą dialogo langą, žymeklis keičia savo orientaciją:

žymeklis izometriniu momentiniu režimu
Iš kairės į dešinę: kairės, viršutinės ir dešinės izoplanų žymeklis.

Dabar pereikime prie LISP failo, kuris veiks šį dialogo langą. Jis yra panašus į kodą, naudojamą
perjungia; pagrindinis skirtumas yra tas, kad vertės nesumuojamos:

(netaikoma c: xx (/)

(„setq dlg-id“ („load_dialog“ c: \\ x “))

(„new_dialog“ x “dlg-id)

;; Pažiūrėkite, kurį radijo mygtuką vartotojas spustelėja:

(„action_tile“ left “„ (setq leftVar $value) “)

(„action_tile“ top “„ (setq topVar $value) “)

(„action_tile“ right “„ (setq rightVar $value) “)

(pradžios_dialogas)

(„unload_dialog dlg-id“)

;; Apžvalgos lentelė:

(jei (= kair. var. „1“) (nustatykite 0 reikšmių)

(if (= „topVar“ 1 “) („ setq vars 1 “))

(if (= rightVar „1“) (setq vars 2))

;; Keisti sistemos kintamąjį:

(setvar „snapisopair“ varos)

)

Mes šiek tiek sukčiaujome, nes verčiame dialogo langą parodyti, kad kairioji izoplane yra numatytoji. Tai nebūtinai tiesa. Jūs tikrai turėtumėte modifikuoti DCL ir LISP kodus, kad dialogo lange iš pradžių būtų rodomas numatytasis lėktuvas - kairėje, viršuje arba dešinėje.

Numatytųjų nustatymas atliekamas naudojant LISP set_tile funkcija. Pirmiausia pakeiskite DCL kodą taip, kad jis netaptų numatytuoju kairiuoju izoplanu: pakeiskite reikšmė = „1“ kam:

vertė = „“

LISP kode turite atlikti šiuos veiksmus: (a) išskleisti „SnapIsoPair“ reikšmę naudodami getvarir tada (b) naudoti set_tile kaip atgalinis ryšys.

  1. Ištraukite dabartinę vertę „SnapIsoPair“ su getvaro funkcija:

    getvaras „snapisopair“))

  2. Nustatykite numatytąjį mygtuką su set_tile funkcija:

    set_tile „kairė“ „1“))

Tai išdėstoma taip:

Jei „SnapIsoPair“ vertė yra 0 (= 0 varinių),

tada įjunkite kairįjį izoplano radijo mygtuką (nustatykite pultą „į kairę“ „1“).

Parašykite panašų kodą kitiems dviem mygtukams:

(if (= 1 varis) (set_tile „top“ „1“))

(if (= 2 varis) (set_tile „right“ „1“))

Kitas pakeitimas, kurį turite atlikti, yra pakeisti kai kuriuos kintamuosius į vietinius:

(netaikoma c: xx (/ leftVar topVar rightVar)

Tai verčia tris kintamuosius prarasti savo vertę, kai baigiasi LISP rutina. Kitu atveju rightVar išlaiko savo vertę (ji yra paskutinė) ir kiekvieną kartą atidarius dialogo langą „Right Isoplane“ tampa numatytuoju numatytuoju.

Vietoje šių pakeitimų patobulintas kodas atrodo taip - pakeitimai paryškinti pusjuodžiu šriftu:

(išniekinti c: xx (/ kairysis, dešinysis, dešinysis, dešinysis)

(setq vars (getvar „snapisopair“))

(„setq dlg-id“ („load_dialog“ c: \\ x “))

(„new_dialog“ x “dlg-id)

;; Nustatyti numatytąjį mygtuką:

(if (= Varys 0) (set_tile „left“ “1“))

(if (= 1 varis) (set_tile „top“ „1“))

(if (= 2 varis) (set_tile „right“ „1“))

;; Pažiūrėkite, kurį radijo mygtuką vartotojas spustelėja:

(„action_tile“ left “„ (setq leftVar $value) “)

(„action_tile“ top “„ (setq topVar $value) “)

(„action_tile“ right “„ (setq rightVar $value) “)

(pradžios_dialogas)

(„unload_dialog dlg-id“)

;; Apžvalgos lentelė:

 (jei (= kair. var. „1“) (nustatykite 0 reikšmių)

(if (= „topVar“ 1 “) („ setq vars 1 “))

(if (= rightVar „1“) (setq vars 2))

;; Keisti sistemos kintamąjį:

(setvar „snapisopair“ varos)

)

Kiekvieną kartą paleidus dialogo langą, jis teisingai rodo numatytąjį plokštumą, pvz., „Dešinė“, kaip parodyta žemiau:

KLUSTERIAI

Klasteriai padės suderinti susijusias valdymo grupes. DCL leidžia nurodyti vertikalius, horizontalius, dėžutinius ir be dėžutės klasterius. Papildomai, radijo sankaupos reikalingi, kai norite vienu metu įjungti du radijo mygtukus. Visais kitais atvejais grupių reikia tik vizualiais ir organizaciniais tikslais.

BricsCAD priverčia atrodyti taip, tarsi yra aštuoni plytelės klasteriams gaminti:

Stulpelis Eilutė
„Boxed_Collection“ „Boxed_Row“
„Radio_Cumn“ „Radio_Row“
„Boxed_Radio_Collection“ „Boxed_Radio_Row“

Bet šiuos aštuonis galima sumažinti iki trijų, kai atsižvelgiama į šiuos dalykus:

  • stulpelis plytelių paprastai nereikia, nes BricsCAD automatiškai sudeda plyteles vertikaliai į stulpelius.
  • stulpelis ir eilė plytelėse rodoma dėžutė, kai tik pridedate joms skirtą etiketę.
  • Plytelės su radijas jų pavadinimuose yra tik jungiamieji radijo mygtukai.

Stulpeliai ir eilutės

BricsCAD paprastai sukrauna plyteles, taigi ne stulpelis reikia plytelių, kaip parodyta šiame DCL kode:

x: dialogo langas {

: mygtukas {label = “& Button”; }

: mygtukas {label = „& Click“; }

: mygtukas {label = “& Pasirinkite”; }

gerai_ka tik;

}

(Ampersand - & - nurodo spartųjį klavišo paspaudimą, kuriuo klaviatūra pasiekiamas mygtukas Alt klavišas, pavyzdžiui, paspaudimas Alt + B.)

Norėdami sukurti horizontalią plytelių eilę, naudokite {} eilutė plytelės, kaip parodyta pusjuodžiu šriftu žemiau:

x: dialogo langas {

: eilutė {

: mygtukas {label = “& Button”;}

: mygtukas {label = „& Click“; }

: mygtukas {label = “& Pick”;}

}

gerai_ka tik;

}

Horizontalios eilutės boksas nematomas, todėl aš jį paryškinau mėlynu stačiakampiu.

mygtukai pasirinktiniai dialogo langai

Nes gerai_ vienintelis plytelės yra išorėje {} eilutė plytelė, ji yra ne klasterio dalyje, sudedama vertikaliai žemiau trijų mygtukų eilutės.

Boksuota eilė

Norėdami iš tikrųjų parodyti stačiakampį (langelį) aplink tris mygtukus, pakeiskite „eilutę“ į „boxed_row“, taip:

x: dialogo langas {

: boxed_row {

// et cetera

}

gerai_ka tik;

}

Boxed eilutė su etikete

Galite pridėti tekstą, kad apibūdintumėte pakabinamų mygtukų, naudojamų mygtukais, paskirtį etiketė atributas, kaip parodyta pusjuodžiu šriftu žemiau:

x: dialogo langas {

: boxed_row {label = “Trys mygtukai”;

// et cetera

}

gerai_ka tik;

}

Įdomu tai, kad naudodamiesi. Jūs gausite tą patį efektą „boxed_row“ arba eilė plytelių. Teisingai: kai pridedate etiketę prie eilė plytelė, BCL automatiškai prideda langelį aplink klasterį.

Norėdami pašalinti langelį, eikite prieš eilutę tekstas pavadinimo plytelė, tokia:

x: dialogo langas {

: tekstas {label = „Trys mygtukai“;}

: eilutė {

// et cetera

}

gerai_ka tik;

}

dialogo langai

Specialios radijo mygtukų plytelės

Įprastas eilutės ir stulpelio plyteles galite naudoti su radijo mygtukais, išskyrus vieną atvejį: kai reikia įjungti daugiau nei vieną radijo mygtuką. Prisiminkite, kad vienu metu gali būti įjungtas tik vienas radijo mygtukas (rodomas juodas taškas); „BricsCAD“ automatiškai išjungia visus kitus radijo mygtukus, kurie gali būti įjungti (vertės = “1”).

Sprendimas yra naudoti du ar daugiau radijo kolonėlė plytelės, kiekviena laikanti vieną iš radijo mygtukų rinkinių, kuriuos reikia įjungti.

Nerekomenduojama naudoti radijo mygtukų eilučių, nes vartotojams tokia horizontali konfigūracija yra sunkiau.

Derinimas DCL

Dažniausiai pasitaikančios DCL kodavimo klaidos atsiranda dėl skyrybos klaidų, pvz., Paliekant uždarą kabliataškį ar kabutes. Apie šias problemas pranešama klaidų pranešimų dialogo languose, kuriuos paaiškinsiu vėliau šiame skyriuje.

DCL_SETTINGS

DCL yra derinimo priemonė tam tikroms kodavimo klaidoms surasti. Norėdami suaktyvinti derinimo įrankį, pridėkite audito_ lygis parametras iki DCL failo pradžios, prieš dialogo langas plytelė:

„dcl_settings“: defalut_dcl_settings { audito_ lygis = 3; } x: dialogas {// et cetera

Deriklis veikia keturiais lygiais:

Audito lygis Reikšmė 
0 Derinimas nebuvo atliktas
1 (Numatytas) Tikrinamos DCL klaidos, galinčios nutraukti BricsCAD, pvz., Neapibrėžtos plytelės ar apskrito prototipo apibrėžimai
2 Tikrinami nepageidaujami išdėstymai ir elgsena, pavyzdžiui, trūkstamų atributų ar neteisingų atributų reikšmių
3 Tikrina nereikalingų atributų apibrėžimus

DCL klaidų pranešimai

BricsCAD dialogo langeliuose rodo su DCL susijusius klaidų pranešimus. Galite susidurti su šiais dalykais:

Semantinė klaida (-os) yra DCL failas

Kartais klaidų dialogo langas siūlo pažiūrėti acad.dce failas - DCL klaidos failas. Problema ta, kad dialogo langas jums to nesako kur šis failas yra. Paleidęs „Windows Search“ savo kompiuterio C: ir D: diskuose, pagaliau radau failą D: \ dokumentai ir nustatymai \ administratorius \ mano dokumentai aplankas.

Faile yra informacijos apie klaidas, tokias kaip:

====== DCL semantinis c: \ x ====== auditas

Klaida. Valdiklis, pavadintas „asdfasfads“, neapibrėžtas.

Man neaišku, kodėl kai kurios klaidos rodomos tiesiogiai pranešimų dialogo languose, o kitos saugomos acad.dce byla.

Dialogas neturi nei mygtuko Gerai, nei Atšaukti

Dialogo langelius reikia išeiti per OK arba Atšaukti mygtuką. Bent jau pridėkite gerai_ vienintelis įklijuoti į DCL failą. DCL buvo parašyta anksčiau nei Windows automatiškai pridėjo x mygtukas (atšaukti) visuose dialogo languose, o „Autodesk“ nepavyko atnaujinti DCL, kad būtų atsižvelgta į šią naujovę.

Klaida dialogo faile „failo vardas.dcl“, eilutėje n

Jūsų DCL faile yra plytelės, nežinomos BricsCAD, pavadinimas. Patikrinkite jo rašybą. Šiame pavyzdyje gerai_ vienintelis buvo priešdėlis dvitaškis (:), o tai netinka iš anksto pastatytoms plytelėms.

Neteisingas:: vienintelis;

Teisingai: ok_only;

Dialogas per didelis, kad tilptų ekrane

Plokštė DCL faile sukuria dialogo langą, kuris neatitiks jūsų kompiuterio ekrano. Tai gali atsitikti, kai taisyti_editas, plotis, arba ūgio atributai yra per dideli.

Papildomi resursai

Yra dar daugiau informacijos apie dialogo langų rašymą naudojant DCL, pavyzdžiui, per šias DCL mokymo programas:

„AfraLisp“ sporto pamokosedaugiau informacijos dcl kodavimas

įskaitant šias temas:

  • Darbo pradžia
  • „DCL Primer“ - atsisiųskite
  • Dialogo lango išdėstymas
  • Dialogo dėžutės žingsnis po žingsnio
  • Veiksmų dialogo dėžutės
  • Lizdų ir slėpimų dialogai
  • Paslėpti dialogai peržiūrėti
  • LISP pranešimų dėžutė
  • LISP įvesties dėžutė
  • Nuorodos į DCL failus
  • Dialogo valdymo kalbos (DCL) LISP funkcijos
  • Funkcinė DCL rinkmenų santrauka
  • DCL atributai
  • Numatytieji dialogo langelio duomenys
  • DCL modelis
  • DCL progreso juosta
  • Atributai ir dialogo langeliai
  • DCL be DCL failo
  • „AfraLisp DCL“ vadovėliai
  • Įveskite redagavimo laukelius

Atsisiųskite BricsCAD 30 dienų nemokamai

Pradėkite naudoti „BricsCAD“ šiandien

Nuolatinės arba prenumeruojamos licencijos, veikiančios visomis kalbomis, visuose regionuose.


  1. Įvadas
  2. 55 patarimai BricsCAD vartotojams
  3. Nustatymai
  4. Aplinkos keitimas
  5. Individualizuota vartotojo sąsaja
  6. Įvadas į dialogo langą Tinkinti
  7. Tinkinkite meniu juostą ir kontekstinius meniu
  8. Įrankių juostos ir mygtukų piktogramos
  9. Makrokomandų ir diesel kodo rašymas
  10. Juostelės juostos ir skydai
  11. Klavišų paspaudimai, slapyvardžiai ir apvalkalo komandos
  12. Pelės, dukart spustelėkite ir planšetinio kompiuterio mygtukai
  13. Absoliučiai viskas, ką reikia žinoti apie keturkojį
  14. Apvirtimo savybės
  15. Darbo vietos ir vartotojo sąsaja
  16. Projektavimo įrankių ir konstrukcijų plokštės
  17. Sukurti paprasti ir sudėtingi linijiniai tipai
  18. Rašymo liukai
  19. Formų ir šriftų dekodavimas
  20. Kodavimas lauko tekstu
  21. Rašant scenarijus
  22. Programavimas naudojant LISP (įvadas)
  23. LISP funkcijos
  24. Paprastos LISP programos rašymas
  25. 7 LISP programavimo patarimai
  26. Dialogo dėžių su DCL projektavimas
  27. Padaryti pasirinktinius dialogo langelius