diesel programavimo kalba
Diesel programavimo kalba
Peržiūrėje Acad.mnu failą, pastebėsite daug meniu parinkčių, kuriose yra keistai atrodantis tekstas, prasidedantis dolerio simboliu ($). Kai kuriais atvejais dolerio simbolis nurodo išskleisti konteksto meniu. Tačiau dažniausiai šis simbolis yra Diesel makrokomandų kalbos dalis. Diesel yra viena iš daugelio AutoCAD remiamų makrokomandu kalbų. Ją galima naudoti paprastoms operacijoms atlikti. Kaip ir AutoLISP, šios kalbos kodas apskliaudžiamas. Susipažinsime su Diesel panaudojimo būdais. Pirmiausia Diesel paleisime komandų eilutėje. Taip pademonstruosime Diesel makrokomandų formata ir suteiksime galimybe pamatyti Diese/ veikimą. Tuomet pparodysime, kaip Diesel panaudoti meniu parinktyse, kad būtų patikrinta esama AutoCAD busena. Trečiojoje dalyje parodysime, kaip Diese/ panaudoti meniu pavadinimuose, kontroliuojant kas juose rodoma. Galiausiai išmoksite Diese/ panaudoti lauku (Field) objektuose, kai norėsite kontroliuoti tekstą brežinyje.
Diesel komandų eiluteje
AutoCAD komandų eilutėje Diese/ galima naudoti įvykdžius komandą Modemacro (makrokomandų rėžimas). Modemacro komanda informaciją persiunčia į būsenos juostą.
Diese/ galima naudoti makrokomandų rėžime paprastoms užduotims atlikti .
Išbandysime Diese/ šiame pratime:
1. Komandų eiluteje įveskite Modemacro
2. Paraginti įvesti naują MODEMACRO reikšmę arba nieko &<“ „>. (Enter new value for MODEMACRO, or . for none <“ „>:)>/vesklte $(/,25,2) Kairiajame būsenos juostos kampe pamatysite reiškinio atsakyma 12.5.
3. Kad išvalytumėte būsenos juostą, įveskite Modemacro .
Lygtis, įvesta 2-ajame veiksme, vadinama reiškiniu. Diese/ reiškinių struktūra panaši į AutoLISP. DDolerio simboliu nurodoma, kad po jo bus Diesel reiškinys.
Diese/ reiškinyje turi būti koks nors operacijos ženklas bei elementai operacijai atlikti. Operacijos ženklas nurodo tam tikrą veiksmą, pavyzdžiui, dviejų skaičių sumą arba skirtumą. Matematinių operacijų pavyzdžiai galėtų būti pliuso (+) ženklas sumai arba įžambus brukšnys (/) dalybai.
Operacijos ženklas dažnai vadinamas funkcija, o operacijos elementai kintamaisiais. Todėl (/,25,2) reiškinyje / yra funkcija, 025 ir 2 yra kintamieji. Visi Diesel reiškiniai, nepriklausomai nuo ju ilgio, turi tokią strukturą ir apskliaudžiami skliaustais. Skliaustai yra svarbi reiškinio dalis. Skliaustų kiekis turi būti subalansuotas, prie kiekvieno kairiojo skliausto turi būti dešinysis.
Su Diesel galima atlikti ne tik skaičiavimus. Getvar funkcija yra AutoLISP funkcija, kuria galima gauti brėžinio buvimo vietą ir pavadinimą. Šiais veiksmais išbandykite Diese/ funkciją Getvar:
1. VVėl įveskite Modemacro
2. Įveskite $ (getvar ,dwgprefix) . Esamo brėžinio vieta bus nurodyta būsenos juostoje.
3. Paspausdami , veėl ivykdykite Modemacro komandą; tuomet įveskite $ (getvar ,dwgname) . Dabar būsenos juostoje bus nurodytas brėžinio pavadinimas.
Šiame pavyzdyje Getvar funkcijos dėka sužinosime brėžinio buvimo vietą ir pavadinimą, kurie nurodomi būsenos juostoje. Getvar galima naudoti bet kokiam sisteminiam kintamajam gauti. Beveik visos AutoCAD nuostatos valdomos ir sisteminiais kintamaisiais. Tai labai praverčia kuriant individualius meniu, nes su Getvar galima sužinoti apie AutoCAD programos būseną. Pavyzdžiui, ggalima sužinoti, kokia komanda šiuo metu vykdoma. Kaip tai veikia, sužinosite atlikę, šį pratimą:
1. Braižymo (Drawing) įrankių juostoje spragtelekite linijos (Line) įrankį.
2. Įveskite ~Modemacro . Apostrofas prieš Modemacro komandą leidžia naudot šią komandą veikiant kitai komandai.
3. Įveskite $ (getvar ,cmdnames) . Būsenos juostoje atsiras žodis line, kuris rodo, kad vykdoma linijos (Line) komanda.
Diesel praverčia meniu, kai parinktis turi atlikti tam tikrą funkciją, priklausomai nuo to, kokia tuo metu vykdoma komanda.
Įspejimas. LT vartotojai negali naudoti AutoLISP, kad sužinotų AutoCAD failo vietą. Tačiau jie gali pasitelkti Diesel makrokomandų kalbą. Pavyzdžiui. kad sužinotų kelią iki žurnalo (log) failo, gali ivesti Modemacro. tuomet $ (getvar ,logfilepath). Kelias bus rodomas būsenos juostos kaireje.
Diesel naudojimas meniu
Iki šiol Diesel išbandėme tik su Modemacro komanda. Diesel meniu naudojamas šiek tiek kitaip. Taip pat naudojamas dolerio ženklas ir reiškinys, tačiau norint paleisti Diesel, nereikia Modemacro komandos. Vietoj jos naudojamas $M= – jį galima įsivaizduoti kaip Modemacro santrumpa. Meniu galima naudoti toki Diesel reiškinį:
[Blipmode on/off] ‘Blipmode $M=$(-,l,$(getvar,Blipmode))
Šia meniu parinktimi įjungiamos išjungiamos žymelės (Blipmode). Kaip atsimenate, žymelių (Blipmode) rėžime pažymėti taškai brėžinyje rodomi kaip maži kryžiukai. Šie kryžiukai, vadinami žymelėmis, nespausdinami ir gali būti išvalyti su perbraižymo komanda. Tačiau jie praverčia, kai norite matyti pažymėtus taškus. Šiame pavyzdyje vykdoma Blipmode (žymelės) kkomanda, 0 $M=nurodo, kad tai Diesel reiškinys. Reiškinys:
$(-,l,$(getvar,Blipmode) )
grąžina 1 arba 0, kuris naudojamas žymelių (Blipmode) komandoje, taip įjungiant arba išjungiant žymeles. Pirmiausia vykdoma giliausiai reiškinyje esantis reiškinys, todėl pirmiausia ivykdomas reiškinys.
$ (getvar,blipmode)
Ji grąžina 1 arba 0, priklausomai nuo to, ar žymelės (Blipmode) įjungtos, ar ne. Tuomet vykdomas kitas reiškinio lygis
$(-,l,getvar_rezultatas)
Čia getvar_rezultatas yra 1 arba 0. Jei getvar_rezultatas yra 1, reiškinys atrodytu taip:
$ (-,1,1)
ir grąžintu O. Jei getvar_rezultatas yra 0, reiškinys atrodytu taip:
$ (-,1,0)
ir grąžintu 1. Bet kuriuo atveju, žymelių (Blipmode) komandai butų priskirta reikšmė, kuri yra priešinga esamai žymelių (Blipmode) nuostatai.
Diesel meniu parinkties etiketėje
Ankstesniame pavyzdyje pademonstravome, kaip naudoti Diesel meniu, norint gauti komandos būsena ir grąžinti skaitinę reikšmę, kuria. pakeičiama toji būsena. Diesel galima naudoti kaip meniu parinkties etiketės dalį. Žemiau pateiktas reiškinys iliustruoja šiek tiek gudresnį meniu. Cia Diesel kodas parašytas meniu parinkties pavadinime:
[$ (eval,"Blipmode =" $ (getvar,blipmode) )) ‘BLIPMODE $M=$(-,l,$
(getvar,blipmode))
Patarimas. Kai Diesel naudojamas meniu pavadinime, $M=kodo nereikia.
Paprastai meniu pavadinimą matote laužtiniuose skliaustuose meniu sąrašo pradžioje, tačiau čia matote kelias Diesel komandas. Šiomis komandomis nurodoma rodyti meniu Blipmode = 1 arba Blipmode = 0, priklausomai nuo esamos žymelių nuostatos.
Tai veikia taip. Matote pažįstama reiškinį $ (getvar ,blipmode), tačiau šį kartą jis įterptas į kitą reiškinį. Žinote, kad $$ (getvar ,blipmode) grąžina 1 arba 0, priklausomai nuo to, ar žymelės įjungtos, ar ne. Išorinis reiškinys
$(eval,"Blipmode =" getvar_result)
parodo Blipmode =, kuri sujungia su getvar_rezultatu, kuris, kaip žinote, gali būti 1 arba 0.Funkcija eval įvertina tekstą ir grąžina jo turinį. Galutinis rezultatas yra Blipmode = 1 arba Blipmode = 0, priklausomai nuo žymelių būsenos.
Naudojant Diesel funkcija if (jeigu), meniu pavadinimą galima padaryti Blipmode On (ijungti žymeles) arba Blipmode fft (išjungti žymeles). Čia tas pats meniu punktas su papildomu Diesel kodu:
[$ (eval, „Blipmode " $ (i f, $ (getvar ,blipmode) , „off", „On") ) ] ‘BLIPMODE $M=$(-,l,$(getvar,blipmode) )
Šiame pavyzdyje paprastas $ (getvar ,blipmode) reiškinys išplėstas su if (jeigu) funkcija. Funkcija if (jeigu) pagal $ (getvar ,blipmode) rezultatą grąžina off (išjungta) arba On (įjungta) reikšmes, priklausomai nuo to, ar $ (getvar ,blipmode) grąžino 0.ar 1. Šis reiškinys atrodo taip:
$ (if, getvar rezultatas, „off“, „On“)
Jei getvar_rezultatas grąžina 1, funkcija if (jeigu) grąžina pirmąja reikšmę po getvar_rezultato, kuri yra off (išjungta). Jei getvar_rezultatas grąžina 1, funkcija if (jeigu) grąžina On (įjungta). Antroji reikšmė yra nebūtina.
Šiek tiek susipažinome su Diesel galimybėmis. Kad apie Diesel sužinotume daugiau, pasirinke Help (žinynas) AutoCAD Help (AutoCAD žinynas), atidarykite Help Topics (žinyno temos) dialogo langą. Spragtelėkite Index (rodyklė)
kortelę. Viršuje esančiame laukelyje įveskite Diesel, taip gausite temų, susijusių su Diesel, sąrašą. Įterpkite žymelių (Blipmode) meniu įrašą į Mymenu.mnu faila po [Continue Line[Continue Line]uomet iš naujo ikelkite meniu failą ir patikrinkite rezultatus:
[$ (eval, „B[$ (eval, „Blipmode " $ (if, $ (getvar ,blipmode) , „off", „On") ) ) ‘BLI PMODE$M=$(-,l,$(getvar,blipmode) )
Įsitikinkite, kad paskutinė meniu failo eilutė baigiama su
20.2 lenteleje pateiktos kai kurios dažnai naudojamos Diesel funkcijos.
20.2 lentele. Diesel funkciju pavyzdys. Diesel kalboje True (tiesa) arba False (netiesa) nurodome
su 1 aarba O.
Kodas Funkcija Pavyzdys Rezultatas Komentarai
+ Suma $(+,202,144) 346
– Skirtumas $(-,202,144) 58
* Sandauga $(*,202,144) 29,088
/ Dalyba $(/,202,144) 1,4028
= Lygu $(=,202,144) 0 Jei skaičiai lygūs, grąžina 1.
> Mažiau $(<,202,144) 0 Jei pirmasis skaičius mažesnis nei antras, grąžina 1.
< Daugiau $(>,202,144) 1 Jei pirmasis skaičius mažesnis nei antras, grąžina 0.
! Nelygu $(!,202,144) 1 Jei skaičiai lygūs, grąžina 0.
<= Mažiau arba lygu $(+,202,144) 0 Jei pirmas skaičius mažesnis arba lygus antram, grąžina 1.
>= Daugiau arba lygu $(+,202,144) 1 Jei pirmas skaičius mažesnis arba lygus antram, grąžina 0.
eq Vienoda eilutė $(eq,”Yes”,”No”) 0 Jei abi eilutės vienodos, grąžina 1.
eval Įvertinti tekstą $(eval,”Here I Am) Here I Am Grąžina tekstą kabutėse.
getvar Paimti sisteminio kintamojo reikšmę $(getvar,ltscale) Esamo linijos
tipo mastelis
if Jei/Tuomet $(if,1, ”Yes”,”No”) Yes Jei pirmojo argumento reikšmė yra 1, grąžinama antroli reikšmė. Kitu atveju grąžinama trečioji reikšmė. Trečioji reikšmė yra nebūtina.
Diesel nnaudojimas laukuose tekstui generuoti
Diesel reiškiniai būsenos juostoje arba meniu praverčia norint surinkti informaciją arba norint sukurti interaktyvesnę sąsają. Tačiau ką daryti, jei norite, kad Diesel reiškiniu rezultatas būtų brėžinio dalis? Tai galima padaryti su laukais. Pavyzdžiui, tarkime, kad norite sukurti uužraša, kuris rodytu brėžinio mastelį pagal esamą matmenų mastelį. Taip pat norite, kad užrašas automatiškai atsnaujintų, kai matmenų mastelis pakeičiamas. Galima įterpti lauko objektą ir susieti jį su Diesel reiškiniu, kuris parodys brėžinio mastelio santykį su esamu matmenų masteliu. Tai padarykite taip:
1. Braižymo (Draw) įrankių juostoje pasirinkite pastraipos (Multiline Text) įrankį ir dviem taškais nurodykite teksto padetį. Atsidarys Text Formatting (teksto formavimas) dialogo langas ir teksto langas.
2. Spragtelėkite dešiniuoju pelės klavišu teksto lange ir pasirinkite Insert Field (įterpti lauką). Atsidarys Field (laukas) dialogo langas.
3. Field Category (lauko kategorija) išskleidžiamajame sąraše pasirinkite Other (kiti); tuomet Field Names (laukų pavadinimai) sąraše pažymėkite Diesel Expression (Diesel reiškinys).
4. Diesel Expression (Diesel reiškinys) lauke dešinėje įveskite šį koda. Jei reikia praplėsti dialogo langą, tai galima aatlikti tempiant dešinįjį dialogo lango kraštą. $(eval."Dimension Scale: l/")$(/.$(getvar. dimscale).12)$(eval."inch = 1 foot")
5. Field (laukas) dialogo lange spragtelėkite OK; dar kartą OK spragtelėkite Text Formatting (teksto formavimas) dialogo lange. Brėžinyje matysite tokį tekstą: Dimension Scale: 1/0.08333333 inch = 1 foot (Matmenų mastelis: 1/ 0.08333333 colis = 1 pėda)
Gautas rezultatas neturės prasmės tol, kol nepakeisite matmenų mastelio į reikšmes, kurios nėra visiškai tokios pačios. Tai padarykite taip:
1. Komandų eilutėje įveskite Dimscale
2. Paraginti įvesti naują DIMSCALE reikšmę <1.0000>: (Enter new value for DDIMSCALE<1.0000>:), įrašykite 96. Tai 1/8" brėžinio mastelio reikšmę.
3. Pasirinkite View (radinys) Regen (perbraižyti) arba įveskite Re. Užrašas pasikeis:
Dimension Scale: 1/8 inch = 1 foot (Matmenų mastelis: 1/8 colis = 1 pėda)
Šiame pavyzdyje buvo panaudotos kelios Diesel operacijos. Pradžioje buvo panaudota eval (įvertinti) operaciją, kuri nurodo „pateikti teksto eilutę":