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 ()                   ;apibūdinkite komandinės eilutės funkciją „mysetup“
 (komanda „auditas“ „y“)                ;audituoti dabartinį brėžinį
 (komanda "-purge" "all" "*" "n")     ;išvalyti visus nenaudojamus stilius ir pan
 (komanda "-layer" "m" "1" "c" "1" "" "")  ; sukurti sluoksnį "1" spalva "1"
 (komanda "-layer" "m" "2" "c" "2" "" "")
 (komanda "-layer" "m" "3" "c" "3" "" "")
 (komanda "-layer" "m" "4" "c" "4" "" "")
 (komanda "viewres" "y" "20000")      ;nustatyti maksimalią vaizdo skiriamąją gebą
 (komanda "facetres" "10")            ;nustatykite aspekto skiriamąją gebą į maks
 (setvar "filedia" 1)                 ;įjunkite failų dialogus
 (setvar "attdia" 1)                  ;įjunkite atributų dialogus
 (setvar "attreq" 1)                  ;įgalinti atributų redagavimą paskirties vietoje
 (setvar "cecolor" "bylayer")         ;nustatyti dabartinę spalvą pagal sluoksnį
 (setvar "clayer" "0")                ;nustatyti dabartinį sluoksnį į „0“
 (nustatyti "maxsort" 5000)              ;nustatykite maksimalų sluoksnių rūšiavimą iki 5 000
 (komanda "zoom" "e" "zoom" "0.95x")  ;padidinkite mastelį, tada šiek tiek atitolinkite
 )                                    ;užbaikite funkciją
 

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 į komandai eilutes patys. Komandos su brūkšneliais (pvz -layer taip pat -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.

Tuo atveju, kai 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!

The komandai 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 (rasti failą „Layers.txt“))    ;“ne“ = neieškoma rezultato iš findfile
 (įspėjimas „Negaliu rasti Layers.txt!“)     ;Nėra failo? Šauk vartotojui ir išeik!
 (prog                               ;Priešingu atveju atlikite tai, kas yra progų grupėje
 (setq sluoksnio failas (atidaryti (rasti failą „Layers.txt“) „r“)) ;atidarykite layers.txt, kad „skaitytumėte“
 (while (setq sluoksnio pavadinimas (skaitymo eilutės sluoksnio failas))       ;skaitydami kiekvieną eilutę, išsaugokite tekstą sluoksnio pavadinime
 (komanda „-layer“ „m“ sluoksnio pavadinimas „“)                 ;padaryti sluoksnį su sluoksnio pavadinimu
 )                                    ;pabaikite while kilpą
 (uždaryti sluoksnio failą)                    ;uždarykite Layers.txt failą
 )                                    ;pabaikite prognozę
 )                                    ;baikite jei

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!