Grafikus tervezőrendszerek programozása

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Algoritmusok.
Grafikus tervezőrendszerek programozása 10. előadás.
Grafikus tervezőrendszerek programozása 2. előadás.
Algoritmus és programozás
3. A programozás eszközei, programozás-technikai alapismeretek
MINTA1 Element of the Theory of the Computation Lecture x. Title.
JavaScript.
Programozás alapjai.
Programozási nyelvek.
Bevezetés a Java programozásba
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
C A C nyelv utasításai.
Mutatók, tömbök, függvények
C A C nyelv utasításai. Ismétlés Utasítások csoportosítása.
Alapok 2013/2014, őszi szemeszter gyakorlati foglalkozás Automatizálási tanszék.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Operációs rendszerek gyakorlat sed, awk parancsok.
Programozás I. Egymásba ágyazott szelekciók, többágú szelekció
Grafikus tervezőrendszerek programozása 3. előadás.
Vizuális és web programozás II.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
C nyelv utasításai.
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
Funkcionális programozás 2. gyakorlat
Grafikus tervezőrendszerek programozása 8. előadás.
Grafikus tervezőrendszerek programozása 6. előadás.
Grafikus tervezőrendszerek programozása 9. előadás.
Grafikus tervezőrendszerek programozása 7. előadás.
Grafikus tervezőrendszerek programozása 11. előadás.
Programozási nyelvek Páll Boglárka.
A Pascal programozási nyelv alapjai
A Pascal programozási nyelv alapjai
Programozási nyelvek, Pascal
1.3. Pascal program felépítése Az els ő program. Program ; … Begin … End. Program fej Deklarációs rész Végrehajtó rész.
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
Operátorok Értékadások
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
Objektum orientált programozás
Objektum orientált programozás
A Visual Basic nyelvi elemei
Operátorok Vezérlési szerkezetek Gyakorlás
Fontos tudnivalók A MATLAB egy fajta objektummal dolgozik (Mátrix)
C Programozási alapok.
Algoritmizálás, adatmodellezés
Típuskonverzió a C++ nyelvben
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Excel programozás (makró)
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
Alapok Gyakorlat 2015/16 őszi szemeszter Automatizálási tanszék.
Alkalmazásfejlesztés F#-ban Dunaújvárosi Főiskola Kiss Gyula mérnökinformatikus hallgató Nemzeti Tehetség Program Tehetségútlevél Program „NTP-TÚP ”
Programozási nyelvek csoportosítása.
Script nyelvek előadás
Adatstruktúrák Algoritmusok Objektumok
Script nyelvek előadás
Script nyelvek előadás
Kifejezések C#-ban.
Script nyelvek előadás
Excel programozás (makró)
Készítette:Roppantóné Lévay Mária
Compiler illetve interpreter nyelvek
Programozás C# -ban Elágazások.
Programozási nyelvek alapfogalmai
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás másolata:

Grafikus tervezőrendszerek programozása Iványi Péter

Lisp programozási nyelv Kifejlesztése: 1960-ban, John McCarthy, Massachusetts Institut of Technology LISt Processing – Lista feldolgozás Fortran –nal egyidős Szakértői rendszerekben, mesterséges intelligencia kutatásban használj(t)ák „Programozható programnyelv”-ként is szokták definiálni

AutoCAD „programozása” AutoCAD egy alap CAD rendszer A CAD rendszer szinte minden aspektusa módosítható ActiveX Visual Basic AutoLisp és Visual Lisp ObjectARX Menük módosítása DIESEL – szöveg processzálás, pl. státusz sor

AutoCAD és ActiveX Microsoft COM (Component Object Model) technológiára épül A rajzok és rajz elemek megosztása más alkalmazásokkal, Word, Excel Feladatok automatizálása Több programozási nyelven elérhető Visual Basic Java C++

AutoCAD ActiveX Automation Interface

AutoCAD és ObjectARX AutoCAD Runtime Extension DLL (Dynamic Link Library) C és C++ nyelven új parancsokat lehet létrehozni Közvetlenül az AutoCAD objektumokat kezeli

AutoLisp AutoCAD rendszer hatékonyságát növelheti Rutin feladatokat automatizálhat Módosítani lehet rendszerváltozókat Módosítani lehet rajzokat, rajz elemeket AutoCAD legrégebbi programozói környezete Sok AutoCAD parancs maga is AutoLisp függvény

ObjectARX void chngAtt() { ads_name entres; ads_point ptres; AcDbObjectId _Id, _attId; AcDbObjectIterator *pIttr = NULL; if(acedEntSel("Select a Block Reference", entres, ptres) != RTNORM ) //Selection failed return; } acdbGetObjectId(_Id, entres); AcDbObjectPointer pRef(_Id,AcDb::kForRead); if(pRef.openStatus()!=Acad::eOk) //Open failed

ObjectARX while(!pIttr->done()) { _attId = pIttr->objectId(); pIttr = pRef->attributeIterator(); while(!pIttr->done()) { _attId = pIttr->objectId(); AcDbObjectPointer pAtt(_attId,AcDb::kForWrite); if(pAtt.openStatus()==Acad::eOk) pAtt->setTextString("We changed this"); break; } pIttr->step(); delete pIttr;

Visual Basic Option Explicit Sub chngAtt() Dim objEnt As AcadObject Dim objRef As AcadBlockReference Dim varAtts As Variant Dim objAtt As AcadAttributeReference Dim emptyPt As Variant ThisDrawing.Utility.GetEntity objEnt, emptyPt, "Select Block: „ If objEnt.ObjectName = "AcDbBlockReference" Then Set objRef = objEnt If objRef.HasAttributes Then varAtts = objRef.GetAttributes Set objAtt = varAtts(0) objAtt.TextString = "We changed this" End If End Sub

AutoLisp (defun C:chngAtt (/ Mainent entList entAtt entNewAttVal) (setq Mainent (entsel)) (setq entList (entget (car Mainent))) (setq entAtt (entget (entnext (cdr (assoc -1 entList))))) (setq entNewAttVal (subst (cons 1 "We changed this") (assoc 1 entAtt) entAtt) ) (entmod entNewAttVal) (entupd (car Mainent)) (princ) )

Visual Lisp Az AutoLisp „új generációja” Nem teljesen kompatibilis Foglalt szimbólumok nem újradefiniálhatók Függvények nem listák Fejlesztő környezet Editor Szintaxis ellenőrzés és szintaxisnak megfelelő szinezés Debugger hibakereséshez Több file menedzselése

Lisp Language of Infinite Stupid Parantheses (megszámlálhatatlan ostoba zárójelek nyelve) ; megjegyzés (elem1 (elem2 (elem3 elem4) (elem5 ‘(elem6 . elem7)) )

Lisp megjegyzések Egyszerű megjegyzés: pontos vesszőtől ( ; ) a sor végéig Több soros megjegyzés: két jel közötti rész a megjegyzés ;| szöveg |;

Lisp megjegyzések példa ; Megjegyzés teljes sorban (elema elemb elemc) ; sorvégi megjegyzés (elem1 ;| megjegyzés |; (elem2 elem3)) (elem4 ;| több soros megjegyzés, akár Lisp is lehet (elem1) |; elem5) Bizonyos jelek speciálisan értelmezendők Syntax highlighting, Visual Lisp is hasonlóan csinálja

A nyelv jelkészlete Betűk, számok, szimbólumok Elválasztó jelek Szóköz, sor vége, TAB Speciális jelek Kettős aposztrof (”), sztring esetén Vezérlőjelek: backslash ( \ ) „le nem írható jelek esetén”, Speciális jelek ( Kezdő zárójel ) Bezáró zárójel . Pont ‘ Aposztrof ; Pontosvessző

Vezérlőjelek Kód Jelentés \\ Backslash ( \ ) karakter \” Kettős aposztrof karakter sztringben \e Escape karakter \n Új sor karakter \r Return karakter \t TAB karakter \nnn nnn oktális kódú jel

Jelkészlet példa (elem1 ”adat: \”4\”\n”) (elem2 elem3 . elem4) (elem5 ;megjegyzés elem6 elem7 ‘(elem8 elem9) )

AutoLisp alapelemek A nyelv programok és adatok leírására egyetlen szerkezetet használ, a John Carthy által kidolgozott szimbólikus kifejezéseket, S-kifejezéseket.

AutoLisp alapelemek Alapelemek: Listák Atomok Speciális atomok nil, t Atomok sorozata zárójelek között Atomok Definíció: „minden ami nem lista”, a nyelv eszközeivel nem bontható tovább Konstans atomok Szimbólikus atomok Speciális atomok nil, t

Konstans atomok Az atom értéke maga az atom. Számok: egész (integer), valós (real) szám 1234, 56.78, 123.56e-3 Szövegek (string), kettős aposztrof között ”abcdefghijk...” Kiválasztási halmaz (selection set) Objektum név (entity name) File leíró (file descriptor)

Szimbólikus atomok Szimbólikus atomok = Változók A változó neve betűvel kezdődik és minden jel követheti, kivétel az elválasztó jelek Példa: point1, point2, teljes_hossz A változó egy értéket jelöl, tárol

Speciális atomok Értékét nem lehet/szabad felüldefiniálni t – igaz értéket jelöli nil – hamis érték és üres lista () (atom amely lista is !!!) pi – 3.141592 pause – ”\\”

Listák Kerek zárójelek között elhelyezett, szóközökkel elválasztott atomok listája. A listák egymásba ágyazhatók. Egymásba ágyazás szintjeinek nincs korlátja. Üres lista: ()vagy nil ( 1 2 3 ) ( 1 ( 2 3 ) ( 4 ( 5 6 ) ) ) ( 1 ”text” 145.67 )

Hibás listák (ez (nincs befejezve) (ez mar)(ket lista) (tul (sok (a)) bezaro) zarojel) )hibasan kezdodik a lista) hianyzik a kezdo zarojel (ez egy list (es egy)) atom

Lista típusok Adat lista: (123 345.56 ”qwerty” 78e-6) Pont lista: Függvény lista: (+ 3 4) (setq qq 1.2)

Kiértékelés LISP = Lista feldolgozás Feldolgozás folyamata = kiértékelés AutoLISP egy interpretált nyelv Interpreter szíve az evaluator = kiértékelő, értelmező A felhasználó interaktív módon párbeszédet folytat az értelmezőprogrammal. Mivel programozási nyelv ezért valamit csinálnia kell: értékek meghatározása, stb.

Kiértékelési ciklus Az értelmező program beolvas egy S-kifejezlst A kifejezést kiértékeli meghatározza a kifejezés értékét mintha függvény lenne lehetnek mellékhatások A kifejezés értékét kiírja, majd kezdi az 1. ponttól

Kiértékelési ciklus A három lépésnek megfelel egy-egy LISP függvény: READ, EVAL, PRINT Ezért nevezik ezt a végtelen ciklust: read-eval-print ciklusnak A beolvasás előtt még kiírhatja a prompt-ot Parancs: Command:

Kiértékelés sorrendje Konstans atom értéke: maga az atom Szimbólikus atom értéke: a szimbólumhoz rendelt értéke Lista esetén függvényként értékeli ki

AutoLisp függvények A függvények általános formája: (művelet A ... B) így sohasem kérdés hogy melyik művelet hajtódik végre először Ellentétben a matematikai kifejezéssel: 3 + 5 * 4 amit csak megfelelő gyakorlás után tudunk megoldani: először a szorzást majd az összeadást hajtjuk végre

Kezdjünk el programozni! Az egyik legegyszerűbb számítógép a zsebkalkulátor Egyszerű számítási műveletek: (+ 5 5) (+ -5 5) (+ 5 -5) (- 5 5) (* 3 4) (/ 8 12)

Függvény lista kiértékelése A kiértékelés balról jobbra történik Először az argumentumokat értékeli ki, majd a teljes kifejezést A kiértékelés eredménye is egy kifejezés: atom vagy lista !!! Mivel az adat lista és a függvény lista „azonos” ezért megvalósítja a Neumann elvet: adat és program nem különböztethető meg

Műveletek egymásba ágyazása Egy művelet argumentuma lehet szám vagy egy másik művelet. Egymásba ágyazás esetén először a legbelső zárójel közötti részt redukáljuk számmá, majd a követkető szintet és így tovább.

Kiértékelési példa 1. (* (+ 2 2) (/ (* (+ 3 5) (/ 30 10)) 2)) = (* 4 (/ (* 8 3) 2)) = (* 4 (/ 24 2)) = (* 4 12) = 48

Kiértékelési példa 2. (+ 2 (/ 12 4) (* 2 2)) Argumentumok kiértékelése 2 = 2 (/ 12 4) = 3 (* 2 2) = 4 Kifejezés kiértékelése (+ 2 3 4) = 9

Kiértékelési példa 3. (+ 2 (/ 5 10)) Argumentumok kiértékelése 2 = 2 (/ 5 10) = 0 !!! Kifejezés kiértékelése (+ 2 0) = 2 Ha az összes argumentum integer akkor az eredmény is integer !!! Egész és valós számok közötti viszony

Kiértékelési példa 4. (+ 2 (/ 5.0 10)) Argumentumok kiértékelése 2 = 2 (/ 5.0 10) = 0.5 !!! Kifejezés kiértékelése (+ 2 0.5) = 2.5

Kiértékelés elkerülése Kifejezés „szó szerinti, konstansként” való kezelése: (quote (1 2 3)) = (1 2 3) ‘(1 2 3) = (1 2 3) (1 2 3) = error

AutoCAD parancs használata AutoCAD parancsot hajt végre az AutoLISP programból (command argumentumok ... ) Vonalat rajzol a 0,0 ponttól vízszintesen (command ”vonal” ”0,0” ”1,0” ””) Az üres sztring (””) jelentése: a SPACE vagy az ENTER billentyű lett lenyomva Még visszatérünk rá

Függvények definíciója (defun szimbólum (arg1 arg2 ...) kifejezések ... ) szimbólum – a függvény neve arg1, arg2, ... – a függvény argumentumai kifejezések – a függvény végrehajtása során értékelődnek ki Még visszatérünk rá Függvény argumentum listája lehet üres is

Példa (defun xy () (command ”vonal” ”0,0” ”1,0” ””)

Definiált atomok, függvények listázása A változók alapértéke: nil (speciális atom) Definiált atomok, szimbólumok listázása: (atoms-family 0) Változó definiált-e? (atoms-family 1 ‘(”setq” ”pp”)) Rendszerváltozók lekérdezése AutoCAD paranccsal: setvar