Professional Documents
Culture Documents
Chc nng:
Thit k cc bn v 3D
Chnh xc
c im ni bt:
V Vn Thin
C in t 1_K50
ObjectARX
AutoLISP : (LISt Processing :ngn ng x l danh sch) Lp trnh vin c th m rng tnh nng ca
AutoCAD bng cch vit cc lnh ca chnh h
ADS (AutoCAD Development System) : t AutoCAD R 10, do AutoLISP khng p ng c tc cao.
Mt chng trnh ADS thc cht l mt file kh thi (executable) cha cc hm nh ngha theo mt
quy tc nht nh c th gi t trong AutoCAD.
ADSRX (RX : Runtime Extension) : t AutoCAD R13, nhm tng kh nng giao tip vi AutoCad
Mt chng trnh ADSRX l mt th vin lin kt ng (DLL) cha cc hm c th thc hin t trong
AutoCAD
V Vn Thin
C in t 1_K50
ObjectARX
ObjectARX : (M rng hng i tng ca th vin ARX) xut hin cng AutoCAD R14.
Thay v cung cp mt th vin cc hm nh trong ARX, gi y mt th vin cc lp i tng tng ng
vi cc i tng (object) trong bn v AutoCAD cho php thao tc d dng hn rt nhiu.
Do cc chng ng dng c th d qun l v chy n nh hn
VBA :T phin bn R14, cho php pht trin ng dng AutoCAD bng Visual Basic for Application.
Nh mt i ng rt ln cc lp trnh vin Basic cng vi hiu bit v mi trng AutoCAD
c th pht trin cc ng dng phc v thit k k thut
VisualLISP : t AutoCAD R14. Ngoi nhng ci tin v ngn ng so vi AutoLISP, VisualLISP cn cung
cp mt mi trng pht trin (IDE : Intergrated Development Environment) hon chnh,
cho php son tho , chy th , g ri v dch chng trnh LISP d dng hn
V Vn Thin
C in t 1_K50
ObjectARX
V Vn Thin
C in t 1_K50
ObjectARX
ObjectARX l g ?
ObjectARX l mt th vin lp trnh ng dng hng i tng cho
mi trng AutoCAD
Phc v cc hu ht cc nhu cu cn thit pht trin AutoCAD :
Truy cp ti c s d liu bn v
Tng tc vi AutoCad Editor
To giao din ngi dng s dng
MFC
nh ngha i tng mi (Custom
Objects)
Tng tc mi trng lp trnh
khc .....
V Vn Thin
C in t 1_K50
ObjectARX
Yu cu khi lp trnh
ObjectARX
Chng trnh AutoCad: Thao tc to ra bn v,hiu cu trc d liu bn v...
K thut lp trnh hng i tng v mi trng Visual C++
Lp trnh vin phi nm vng cc khi nim quan trng ca lp trnh hng
i tng nh k tha (inheritance) , ng gi d liu (data encapsulation) ,
a hnh (polymorphism), hm o(virtual function) ...
ng thi phi nm c cc thc to v thay i thit lp cc project trong
mi trng Visual C++ , cc thao tc son tho , bin dch, g ri cc chng
trnh ...
K thut lp trnh ng dng trn Microsoft Windows vi
MFC(Microsoft Foundation Class) bi chng trnh ARX thc cht l
mt th vin lin kt ng (DLL) trong cc h iu hnh Windows 32-bit.
V Vn Thin
C in t 1_K50
ObjectARX
Ci t ObjectARX
1.AutoCAD
2.ObjectARX SDK
http://www.autodesk.com/objectarx
http://www.objectarx.com
3.Microsoft Visual C++ .NET
AutoCAD 2000,2000i and 2002 (plus verticals): ObjectARX 2000 and
Microsoft Visual C++ 6.0
AutoCAD 2004, 2005 and 2006 (plus verticals): ObjectARX 2004 and
Microsoft Visual C.NET 2002 (7.0)
AutoCAD 2007, 2008 and 2009 (plus verticals): ObjectARX 2007 and
Microsoft Visual C.NET 2005 (8.0)
4.ObjectARX Wizard
S dng ArxWizards.msi "<ObjectARX SDK folder>\utils\ObjARXWiz\"
V Vn Thin
C in t 1_K50
ObjectARX
V Vn Thin
C in t 1_K50
ObjectARX
V Vn Thin
C in t 1_K50
ObjectARX
V Vn Thin
10
C in t 1_K50
ObjectARX
To mt Project ObjectARX mi
Bc 1:Khi ng VS 2005 v to mt project mi nh hnh v
V Vn Thin
11
C in t 1_K50
ObjectARX
V Vn Thin
12
C in t 1_K50
ObjectARX
Bc 4: Ci t bin dch
+ Click vo tn Project chn Properties
V Vn Thin
13
C in t 1_K50
ObjectARX
V Vn Thin
14
C in t 1_K50
ObjectARX
V Vn Thin
15
C in t 1_K50
ObjectARX
V Vn Thin
16
C in t 1_K50
ObjectARX
V Vn Thin
17
C in t 1_K50
ObjectARX
V Vn Thin
18
C in t 1_K50
ObjectARX
ObjectARX Wizard
Installing ObjectARX Wizard
<ObjectARX SDK folder>\utils\ObjARXWiz\ArxWizards.msi
V Vn Thin
19
C in t 1_K50
ObjectARX
V Vn Thin
20
C in t 1_K50
ObjectARX
V Vn Thin
21
C in t 1_K50
ObjectARX
C s d liu ca bn v
AutoCad
V Vn Thin
22
C in t 1_K50
ObjectARX
Database
ModelSpace
Table
Entities
PaperSpace
Table
Dictionary
Entities
Objects
Dictionary
Dictionary
Layer
Textstyle
Block
View
Table
Table
Table
Table
Layer
Records
V Vn Thin
Textstyle
Records
Block
View
Records
Records
23
9 Bng k hiu
C in t 1_K50
ObjectARX
Bng cc bin trng thi (header variables) : Cc bin biu din trng thi
hin thi ca bn v nh ELEVATION, FILLMODE, LIMMIN
+ Cc bng k hiu (symbol tables): trong mt bn v lun c 9 bng k hiu
+ Cc dictionary (t in) : Trong t in gc (named object dictionary),
AutoCAD cho php cc chng trnh ng dng nh ngha cc bng k hiu
khc ngoi cc bng do AutoCAD nh ngha trc.
+Hai bng cha entity (MODEL _SPACE v PAPER _SPACE):
Bng MODEL_SPACE cha cc entity nm trong khng gian
m hnh (model space) ca bn v
Cc entity ca khng gian giy v (paper space) c cha
trong bng PAPER_SPACE
V Vn Thin
24
C in t 1_K50
ObjectARX
V Vn Thin
25
C in t 1_K50
ObjectARX
V Vn Thin
26
C in t 1_K50
ObjectARX
Truy cp c s d liu
1.Truy cp vo cc bin trng thi
Khi ly c con tr ti i tng c s d liu mt bn v, c th
truy cp cc bin trng thi ca bn v bng cch s dng cc
phng thc ca lp AcDbDatabase
Adesk::Boolean fillmode() const;
double elevation() const;
AcGePoint2d limmin() const;
Hay thay i gi tr
Acad::ErrorStatus setFillmode(Adesk::Boolean mode) ;
Acad::ErrorStatus setElevation(double elev) ;
Acad::ErrorStatus setLimmin(const AcGePoint2d& limmin) ;
V Vn Thin
27
C in t 1_K50
ObjectARX
Tn lp container
Tn lp Iterator
Block
Layer
Text style
Linetype
View
UCS
Viewport
Registered applications
Dimension styles
AcDbBlockTable
AcDbLayerTable
AcDbTextStyleTable
AcDbLinetypeTable
AcDbViewTable
AcDbUCSTable
AcDbViewportTable
AcDbRegAppTable
AcDbDimStyleTable
AcDbBlockTableIterator
AcDbLayerTableIterator
AcDbTextStyleTableIterator
AcDbLinetypeTableIterator
AcDbViewTableIterator
AcDbUCSTableIterator
AcDbViewportTableIterator
AcDbRegAppTableIterator
AcDbDimStyleTableIterator
3. Truy cp Dictionary
Dictionary (lp AcDbDictionary) c truy cp thng qua cc iterator (lp
AcDbDictionaryIterator)
V Vn Thin
28
C in t 1_K50
ObjectARX
void iterateLinetypes()
{
AcDbLinetypeTable *pLinetypeTbl;
acdbHostApplicationServices()->workingDatabase()
->getSymbolTable(pLinetypeTbl, AcDb::kForRead);
// Create a new iterator that starts at table
// beginning and skips deleted.
//
AcDbLinetypeTableIterator *pLtIterator;
pLinetypeTbl->newIterator(pLtIterator);
// Walk the table, getting every table record and
// printing the linetype name.
//
AcDbLinetypeTableRecord *pLtTableRcd;
const TCHAR *pLtName;
for (; !pLtIterator->done(); pLtIterator->step()) {
pLtIterator->getRecord(pLtTableRcd, AcDb::kForRead);
pLtTableRcd->getName(pLtName);
pLtTableRcd->close();
acutPrintf(_T("\nLinetype name is: %s"), pLtName);
}
delete pLtIterator;
pLinetypeTbl->close();
}
V Vn Thin
29
C in t 1_K50
ObjectARX
V Vn Thin
30
C in t 1_K50
ObjectARX
2.M v ng i tng
2.1.M
Acad::ErrorStatus
AcDbDatabase::acdbOpenObject(AcDbObject*& pObj,
AcDbObjectId objId,
AcDb::OpenMode mode,
Adesk::Boolean
openErasedObject = Adesk::kFalse)
Mt i tng c th m mt trong cc ch
AcDb::kForRead : c, khng thay i
thuc tnh
AcDb::kForWrite : ghi, thay i thuc tnh
AcDb::kForNotify : gi message
2.1.ng i tng
ng i tng , s dng phng thc close()
pObj->close();
V Vn Thin
EXLine
31
C in t 1_K50
ObjectARX
3.Xa i tng
Mun xo i tng, cn phi m chng ch kForWrite v gi phng
thc erase(). Ch l sau vn phi ng i tng
pObj->erase();
pObj->close();
V Vn Thin
32
C in t 1_K50
ObjectARX
//
:
:
:
:
%s",
%s",
%s",
%s",
Kiu t nh ngha
typeid(i).name());
typeid(d*10/i).name());
typeid(c).name());
typeid(world).name());
Type : int
Type : double
Type : char
Type : class
BigWorld
V Vn Thin
33
C in t 1_K50
ObjectARX
V Vn Thin
34
C in t 1_K50
ObjectARX
5.1.Extension Dictionary
Mi i tng trong c s d liu c th c mt extension Dictionary
trong c th cha bt k i tng k tha t AcDbObject
V Vn Thin
35
C in t 1_K50
ObjectARX
Thc th (Entity)
1.nh ngha
L cc i tng CSDL c th hin hnh hc (graphical Object)
2.Phn loi
Cc Entity n gin l bn thn n cha y thuc tnh ca mnh
Cc Entity phc tp cn cha thm cc tham chiu n i tng khc
nh ngha dy i tng.
V d: i tng POLYLINE l mt i tng phc hp v n tham
chiu n cc i tng VERTEX nh ngha cc ta nh.
3.Cc thuc tnh chung
Color :Biu din mu sc i tng
Linetype :Kiu ng cai tng
Layer :Lp cai tng
V Vn Thin
36
C in t 1_K50
ObjectARX
V Vn Thin
37
C in t 1_K50
ObjectARX
Thanks for
attention
V Vn Thin
38
C in t 1_K50