Sveiki sugrįžę! Tikiuosi, kad perskaitę mano ankstesnius tinklaraščio įrašus nusprendėte pradėti parašyti šiek tiek Lisp rutinų, kad palengvintumėte savo CAD darbą. Bet jei dar to nepadarėte, kaip geriausia pradėti? Manau, kad geriausia rutina, kuria galima pradėti, yra ta, kuri automatizuoja jūsų braižymo sąranką. Jei esate kaip aš, tikriausiai pakeičiate daugybę nustatymų, kiekvieną kartą pradėdami naują brėžinį. Daugelį šių parametrų: sluoksnius, stilius ir sistemos kintamuosius galite išsaugoti savo šablono brėžinyje (.dwt). Tačiau atidarę piešinį, kurį sukūrė kažkas kitas, niekada tiksliai nežinote, kaip jis buvo sukonfiguruotas.

Dėl šios priežasties failai iš išorinio šaltinio dažnai verčia jus skirti keletą minučių kiekvienam brėžinio failui pritaikyti. Kitoje tvoros pusėje: jei siunčiate failus klientui, norite dirbti „Jūsų būdu"kuriant brėžinį, bet tada pritaikyti parametrus, kad jie atitiktų jūsų kliento standartus. Pirmasis Lisp rutinos pavyzdys pateiktas kaip pagrindas brėžinių sąrankos procesui automatizuoti.

Paprastas sprendimas

Ši paprasta brėžinio sąrankos programa jums gali būti naudinga, atlikus tik minimalius pakeitimus. Štai kodas su užrašais ir detaliomis pastabomis žemiau esančiuose komentaruose:

(defun c:mysetup ()                   ;aprašoma funkcija “mysetup”
 (command “audit” “y”)                ;tikrinamas dabartinis brėžinys
 (command "-purge" "all" "*" "n")     ;ištrina nenaudojamus stilius ir t.t.
 (command "-layer" "m" "1" "c" "1" "" "")  ; sukuria sluoksnį “1” su spalva “1”
 (command "-layer" "m" "2" "c" "2" "" "")
 (command "-layer" "m" "3" "c" "3" "" "")
 (command "-layer" "m" "4" "c" "4" "" "")
 (command "viewres" "y" "20000")      ;nustato peržiūros rezoliuciją į maksimalią
 (command "facetres" "10")            ;nustato facet rezoliuciją į maksimalią
 (setvar "filedia" 1)                 ;įjungia failų dialogus
 (setvar "attdia" 1)                  ;įjungia atributų dialogus
 (setvar "attreq" 1)                  ;įjungia atributų redagavimą
 (setvar "cecolor" "bylayer")         ;nustato dabartinę spalvą pagal sluoksnį
 (setvar "clayer" "0")                ;nustato dabartinį sluoksnį į "0"
 (setvar "maxsort" 5000)              ;nustato maksimalų sluoksnių rūšiavimą į 5,000
 (command "zoom" "e" "zoom" "0.95x")  ;šiek tiek atitolina vaizdą
 )                                    ;funkcijos pabaiga
 

Kaip veikia ši brėžinio sąrankos rutina?

Pirmiausia pamatysite, kad kiekviena atskira šios brėžinio sąrankos rutinos eilutė galėjo būti įvesta komandinėje eilutėje BricsCAD - ir jūs tikriausiai tai ir darote. Sudėjus jas į Lisp rutiną, defun (apibrėžti funkciją) brėžinio sąrankos rutiną padaro „iššaukiamą“ iš meniu arba įvesdant jos pavadinimą BricsCAD komandinėje eilutėje.

  • Jei neįtrauksime defun, programa bus paleista vieną kartą, kai ją įkelsite pagal failo pavadinimą. Naudojant defunir įkeldami šią rutiną į savo lsp visada galėsite naudoti funkciją įvesdami jos pavadinimą: mysetup.

Toliau, pažiūrėkite į komandų eilutes patys. Komandos su brūkšneliais (pvz -layer ir -purge) yra naudojamos siekiant užkirsti kelią komandos dialogo langų paleidimui. Pirmiausia atidarydamas failus iš kitų aš paprastai vykdau audit, o tada Purge siekiant pašalinti nepanaudotus daiktus.

Purge komandos atveju, aš dažnai ją paleidžiu kelis kartus, kad pašalinčiau elementų krūvas. Štai šiek tiek pridėtinės Lisp logikos, leidžiančios pakartoti komandą tris kartus:

(repeat 3 (command "-purge" "all" "*" "n"))

Atkreipkite dėmesį į tai, kad Purge atliekama prieš pridedant naujus tuščius sluoksnius ... nes jie būtų pašalinti, jei mes tai darytume vėliau!

komandų iškvietimą sluoksnių nustatymui būtų galima sujungti į vieną komandos pranešimą, tačiau manau, kad lengviau skaityti, kai kiekviena eilutė yra atskira. Filedia yra globalus nustatymas (dar žinomas kaip „sistemos kintamasis“), todėl jis nėra priklausomas nuo brėžinio. Šiuos nustatymų tipus pridedu prie tokios įprastos tvarkos, kad įsitikinčiau, jog iš naujas brėžinys elgiasi, kaip tikiuosi.

Max ką?

Aš įtraukiau maxsort nustatymą dėl dviejų priežasčių. Pirmiausia, norėdamas parodyti, kad kai kuriems parametrams reikia ne žodinės, o skaitinės reikšmės (atkreipkite dėmesį į citatų nebuvimą maxsortkomandinėje eilutėje). Maxsort kontroliuoja didžiausią rūšiuojamų dialogo lango įrašų skaičių. Antra priežastis yra ta, kad „gamyklinis nustatymas“ maxsort yra 1000. Dabartiniuose kompiuteriuose ir dažnai aptinkamuose didesnių projektų failuose šis skaičius gali būti per mažas. Jei atidarysite brėžinius, kur sluoksnių pavadinimai nesirūšiuoja abėcėlės tvarka, numatytoji maxsort vertė gali būti priežastis!

Papildomi setvar „iškvietimai“ apima matmenų ir teksto stiliaus parametrus, įrenginio parametrus ir t.t..

Universalesnis sluoksnių kurėjas jūsų brėžinio sąrankos rutinai

Dabar paliksiu jums šį pavyzdį, kurį būtų galima pridėti prie jūsų mysetup.lsp versijos. Sukūrę paprastą tekstinį failą su redaktoriumi, pavyzdžiui, Notepad, galime pridėti sluoksnių pavadinimų, kuriuos reikia sukurti, kai vykdoma rutina, sąrašą. Tai yra aukščiau parodyto sunkiai užkoduoto proceso alternatyva. Naudodamas findfile funkciją, BricsCAD pirmiausia ieškos dabartiniame kataloge, tada nuosekliai per jūsų apibrėžtus palaikymo aplankus, kad surastų failą layers.txt. Tai žinant, numatytąjį sluoksnių nustatymų teksto failą galite padėti į palaikymo kelią ir į atskirus projekto aplankus sudėti alternatyvias jo versijas. Tokiu būdu galite lengvai palaikyti kelis sluoksnių išdėstymus.

 (if (not (findfile "Layers.txt"))    ;“not” = ieško rezultato iš findfile nebuvimo
 (alert "Can't find Layers.txt!")     ;Nėra failo? Pranešk vartotojui ir užbaik darbą
 (progn                               ;Kitu atveju, darky kas yra progn grupėje
 (setq layerfile (open (findfile "Layers.txt") "r")) ;atidarom layers.txt "nuskaitymui"
 (while (setq layername (read-line layerfile))       ;skaitant kiekvieną eilutę, įrašome tekstą į layername
 (command "-layer" "m" layername "")                 ;sukuria sluoksnį su layername pavadinimu
 )                                    ;užbaigiam while ciklą
 (close layerfile)                    ;uždarom Layers.txt failą
 )                                    ;užbaigiam progn
 )                                    ;užbaigiam if

Kitą kartą šį sąrankos programos procesą tęsime šiek tiek toliau, pridėdami šiek tiek papildomos informacijos prie jūsų išorinių nustatymų failo ir perkeldami esamus subjektus iš vieno sluoksnio į kitą. Iki tol, laimingo programavimo!