Giáo trình gồm các bài tập hướng dẫn sử dụng các hàm trong Autocad.Tài liệu tham khảo về Giáo trình AutoCAD nâng cao và lập trình trong AutoCAD
Trang 1L P TRÌNH TRONG AUTOCAD
Gi ng Viên : Tr n anh Bình
C p nh t ngày 25/8/2007
Sách tham kh o :
• AutoCAD 2004 Bible – Wileys & Sons
• Mastering in AutoCAD 2000 – George Omura
• AutoCAD 2004 For Dummies – John Wiley & Sons
• AutoCAD 2000 (1,2) – KTS.L u Tri u Nguyên
• AutoCAD 2004 (1,2) c b n và nâng cao – TS.Nguy n H u L c
• Các ti n ích thi t k trên AutoCAD – TS.Nguy n H u L c
– Nguy n Thanh Trung
• AutoCAD 2004 (1,2) c b n và nâng cao – TS.Nguy n H u L c
• AutoCAD 2004 Activex and VBA – KS.Hoàng Thành An
Trang 2L P TRÌNH TRONG AUTOCAD
CH NG 1 : GI I THI U CHUNG
I Ngôn ng l p trình trong CAD
II T ng quan v Activex Automation
III Ngôn ng l p trình AutoLisp
IV Ngôn ng l p trình Visual Lisp
V C b n v ngôn ng l p trình Visual Basic
VI Làm quen v i VBA
1 VBA Projects
2 T o m i project
3 T ch c các project v i VBA Manager
4 So n th o project v i VBA IDE
4 Property & Method (thu c tính & ph ng th c)
5 Truy c p đ n đ i t ng trong Object Hierarchy
6 Truy c p đ n đ i t ng Collection trong Object Hierarchy
7 Truy c p đ n Object Hierarchy b ng VB, VBA trong các môi tr ng khác
Trang 33 i u khi n s hi n th bên trong c a s b n v
III L y và thi t l p các thông s h th ng
1 L y và thi t l p các bi n h th ng
2 Grid và Snap
3 L y và thi t l p bi n h th ng trong Option
IV S d ng command line trong VBA
5 GetCorner Method, GetAngle Method, GetDistance Method
6 GetEntity Method, GetSubEntity Method
5 T o đ i t ng Region, các phép toán trên Region
II Thêm Text vào b n v
Trang 4IV Block và thu c tính c a block
1 Blocks và Block References
V Ch n đ i t ng
1 T o Selectionset
2 Thêm đ i t ng vào selection set
3 L c đ i t ng trong selection set
VI Làm vi c v i Group
1 T o m t Group Object
2 Truy c p t i các Group Object
3 Thêm b t th c th vào Group
4 Xóa Group Object
VII S d ng layer, color và linetype
CH NG 4 : TÙY BI N MENUS VÀ TOOLBARS
I C b n v menu group và toolbar
1 Menugroup collection
2 Menugroup Object
II Thay đ i menu bar
1 Chèn thêm menu vào menubar
2 Xoá b menu trên menubar
3 S p x p l i các menu trên menubar
III T o và ch nh s a Pull-down và Shorcut menus
1 T o m i Pull-down menu
2 Chèn m t menu Item vào Pull-down menu
3 Chèn m t kho ng tr ng vào Pull-down menu
4 Thêm m t Menu Item vào Shortcut Menu
5 T o Submenu cho menu item
6 Xóa b t menu item
Trang 51 T o m i toolbar
2 Thêm m t nút ch n vào toolbar
3 nh ngh a hình nh cho các nút Toolbar Button
4 Thêm m t kho ng tr ng vào toolbar
5 Floating và Docking Toolbars
2 Sets the extended data (XData) associated with an object
3 Gets the extended data (XData) associated with an object
Trang 6CH NG 1 : GI I THI U CHUNG
I Ngôn ng l p trình trong CAD
Các c p c a ng i dung khi thao tác v i AutoCAD :
– C p I : Bi t s d ng CAD
– C p II : Bi t qu n lý và làm ch môi tr ng CAD
– C p III : Bi t l p trình t đ ng hóa quá trình v
Autocad cho ta các cách đ có th t đ ng quá quá trình v nh sau :
– S d ng các ngôn ng l p trình, sau đó ki t xu t ra b n v d i d ng các file v n b n DFX – T đ ng hóa b ng các file Script
– L p trình trong môi tr ng CAD nh Lisp, Object ARX, VBA
AutoDesk cung c p cho chúng ta m t b các ph n m r ng đ ki m soát AutoCad t ngôn ng
Nh ng ph n m r ng này đ c g i là Object ARX ây là m t ph ng pháp ti p c n v i CAD m t cách chuyên nghi p nh t tuy nhiên nó l i quá ph c t p
AutoLisp là m t ngôn ng l p trình thông d ch, Nó là m t phiên b n m i nh t v ngôn ng l p trình nhân t o c nh t mà ngày nay v n còn đ c s d ng Autolisp n m trong b Common LISP LISP vi t t t c a LIST Processor ! Nói chung Lisp d h c b i cú pháp c a nó đ n gi n nh ng nó không t ng tác đ c v i các c s d li u nh Excel, access Nên vi c s d ng nó t o ra các ng
d ng ph c t p là r t khó Tuy nhiên m c đ ph c t p c ng đã đ c gi m b t đi r t nhi u trong Visual LISP!
VBA vi t t t c a Visual Basic Application C ng nh Object Arx thì VBA c ng là m t môi
tr ng l p trình h ng đ i t ng s d ng ngôn ng VB u đi m c a VBA là
– S d ng VB, m t ngôn ng l p trình t ng đ i thông d ng và d h c
– VBA n m trong CAD nên t c đ ch y c ng t ng đ i nhanh
– D dàng trong vi c t o ra các giao di n (h p tho i, menu)
– T ng tác v i các ng d ng khác và các c s d li u khác
– Cho phép ta ghi Project ra file riêng ho c tích h p luôn vào b n v T o đi u ki n đ phát tri n ng d ng m t cách m m d o trong vi c chia s d li u gi a các ng d ng khác trong môi tr ng Window
II T ng quan v Activex Automation
• 2 u đi m c a AutoCAD ActiveX
Activex automation là chu n m c đ c t o ra b i hãng Microsoft, tr c đây đ c g i là OLE activex, cho phép m t ng d ng Windows này ki m soát m t ng d ng Windows khác qua mô hình các đ i t ng rõ ràng
AutoCAD ActiveX là giao di n cho phép ng i l p trình làm vi c v i các đ i t ng c a AutoCAD AutoCAD Activex cho phép b n s d ng m t cách t đ ng không ch trong ph m vi AutoCAD mà ngoài c AutoCAD Các đ i t ng c a AutoCAD có th đ c truy nh p đ n b i nhi u ngôn ng l p trình khác nhau nh Ms word VBA, Ms Excel VBA,
Trang 7
• 2 u đi m c a AutoCAD ActiveX
• 2 u đi m c a AutoCAD ActiveX
– T t c các ngôn ng l p trình đ u có th làm vi c v i các đ i t ng trong AutoCAD (không
gi i h n v i C++ và AutoLISP nh tr c)
– T t c các ngôn ng l p trình đ u có th làm vi c v i các đ i t ng trong AutoCAD (không
gi i h n v i C++ và AutoLISP nh tr c) – Chia s d li u v i các ng d ng khác trên môi tr ng Windows (Excel, Word )
– Chia s d li u v i các ng d ng khác trên môi tr ng Windows (Excel, Word )
• Mô hình client server
M c dù Activex luôn luôn bao g m m t cu c h i tho i gi a hai ng d ng, nó không ph i là cu c
h i tho i hai chi u gi a các thành ph n t ng đ ng M i thành ph n ch ng trình Activex Automation bao g m hai ch ng trình v i các vai trò khác nhau Client là ng d ng kh i t o cu c h i tho i Server là ng d ng h i đáp client Mã Activex Automation ch y trong client, trong khi các hành
đ ng mã này đ c ki m soát th c hi n trên server Hình d i đây trình bày m i quan h gi a Client và Server trong m t cu c trao đ i Activex Automation đ c thù
M c dù Activex luôn luôn bao g m m t cu c h i tho i gi a hai ng d ng, nó không ph i là cu c
h i tho i hai chi u gi a các thành ph n t ng đ ng M i thành ph n ch ng trình Activex Automation bao g m hai ch ng trình v i các vai trò khác nhau Client là ng d ng kh i t o cu c h i tho i Server là ng d ng h i đáp client Mã Activex Automation ch y trong client, trong khi các hành
đ ng mã này đ c ki m soát th c hi n trên server Hình d i đây trình bày m i quan h gi a Client và Server trong m t cu c trao đ i Activex Automation đ c thù
Client
Starts conversation Request Object Supplies Object Invokes Method
Trang 8Chú ý, các Autocad activex s không ho t đ ng n u cad đang th c hi n l nh
III Ngôn ng l p trình AutoLisp
• C u trúc d li u c b n c a Lisp là danh sách (List)
• Danh sách là t p h p các ph n t ch a trong các d u ngo c đ n, các ph n t đc cách nhau b i m t ho c nhi u d u cách
• Danh sách có 2 lo i : Bi u th c toán h c (expression) và danh sách d li u (data list)
• Ph n t đ u tiên c a c a m t bi u th c luôn luôn là m t hàm
• M t bi u th c bao g m tên hàm và các tham s ch a trong các d u ngo c đ n Khác v i
bi u th c toán h c, các tham s trong bi u th c Lisp là các tham s có th t
• Tham s là các giá tr cung c p cho hàm đ tính toán
Trang 92.3 Các hàm s h c
Hàm c ng (+) : (+ [number 1] [number 2] [number 3]….)
Danh sách b t đ u b ng d u + báo cho lisp đó là hàm, các ph n t đ ng sau nó s là tham s
180.0 Command: (+ 140 10.10 30)↵
180.1 Command: (+ 10 a)↵
; error: bad argument type: numberp: nil
14.0625 Lisp l u tr t i 14 s th p phân nh ng k t qu tr v trên màn hình s ch có 6 ch s có ngh a tính t trái sang ph i
• Tên bi n c ng nh tên hàm ko ph n bi t ch hoa, ch th ng
• Bi n không nh t thi t c n khai báo
Gán giá tr cho bi n
S d ng hàm Setq đ gán giá tr cho m t bi n Cú pháp nh sau :
(SetQ Symbol1 value1 [symbol2 value2] …)
Gi ng nh các hàm khác, hàm SetQ tr v m t giá tr Giá tr này có th là “nill” (r ng), “T” (True) ho c các s , chu i, danh sách
Ví d :
Command (Setq x 3)↵
3 Command (Setq x 3 y 4)↵
4 Command (Setq z (+ x y)↵
7 Command (Setq A “Xyabg”)↵
Trang 10S d ng bi n trong dòng l nh
Command : (setq x 10)↵
10 Command : (!X)
10 Command : circle↵
3P/ <Center point> : Nh p t a đ tâm
Ho c Command : (Load E:\\toLisp\\T.lsp)
• S d ng hàm Appload (Application Load)
Trang 11Ngoài các hàm AutoCAD cung c p, ta còn có th t o ra các hàm t t o
nh ngh a hàm t t o
B ng cách s d ng hàm Defun (define function) Cú pháp nh sau :
(Defun Function_Name Argument_List expresstion…)
• Function_Name : tên hàm t t o Tuân theo quy t c đ t tên bi n
• Argument_List : g m hai ph n ng n cách nhau b i d u /, Ph n th nh t ch a các tham s
c n thi t khi g i là hàm Ph n th hai ch các bi n c c b c a hàm
• Expression : các bi u th c tính toán c a hàm Các bi u th c này s l n l t đc tính toán theo th t t trên xu ng d i
Ví d :
(Defun ZA() (command “Zoom” “all”) )
(Princ) ) ;ket thuc
Tham s S::Startup
Khi kh i đ ng AutoCAD, hàm S::startup đ nh ngh a trong file ACADRx.lsp s đ c t đ ng g i
và thi hành ây là hàm duy nh t có tính ch t này
)
Ho c : (Defun C: (/PT1) (setq PT1 (getpoint “\n Nhap diem thu nhat”)) (Command “Line” PT1 “2,2,0”)
Trang 12) Trình t các tham s hàm Command t ng ng v i trình t nh p l nh t i dòng nh c Cú pháp
li u ti p theo sau nó Cú pháp c a hàm nh sau :
(Initget [bits] [string])
• Bits là m t s nguyên Giá tr tham s này b ng t ng các bit code t ng ng v i các ch
đ ki m soát mà t among mu n
• Tham s String ch a danh sách các t khóa
1 Giá tr ph i đc nh p vào; không ch p nh giá tr null
2 Giá tr nh p vào ph i khác không
4 Giá tr nh p vào không đc là s âm
128 Cho phép nh p chu i ký t không có trong danh sách các t khóa Các
bit code khác s đc u tiên tr c
• Value =1 : K t qu tính toán trung gian s đc hi n lên trên màn hình
• Value =0 : K t qu tính toán trung gian s ko đc hi n lên trên màn hình
Trang 136 M t s hàm c b n
6.1 Hàm chuy n ki u d li u
Chuy n đ i m t s thành s th c : Hàm (Atof String)
Command : (Atof “15.4a”) 15.4
Chuy n đ i m t chu i thành m t s nguyên : hàm (Atoi String)
Command : (Atof “15.4a”)
Cú pháp : (Chr Integer) : chuy n đ i mã ascii thành ký t t ng ng trong b n mã ASCII Các
mã ascii chu n có giá tr t 32 đ n 126
6.2 Hàm toán h c
Hàm ki m soát d ng s
• (Fix Number) : tr v ph n nguyên c a m t s th c
• (Float Number) : Chuy n s Number thành ki u s th c
• (Abs Number) : tr v tr tuy t đ i c a m t s
Hàm max,min
• (Max Number1 Number 2 …) Chú ý không ch p nh n chu i
• (Mim Number1 Number 2 …)
Trang 14• (Expt Base Power) (Expt 4.0 4) tr v giá tr 64.0
• (SQRT Number)
• (Log Number) tr v logarit c a m t s
• (Exp Number) Tr v e m n
6.3 Các hàm v kho ng cách và góc đo
Hàm Cvunit (convert units)
Cú pháp : (cvunit Value From To)
• Value : s nguyên, s th c, ho c t a đ đi m 2D, 3D
• From – n v đo hi n t i (ki u chu i)
• To – n v đo s chuy n sang (ki u chu i)
Hàm hi n th thông tin ki u chu i
• Cú pháp : (Princ [Expr [file]] - Hàm này in ra màn hình ho c in ra file
• Cú pháp : (Print [Expr [file]] - Hàm này in ra màn hình ho c in ra file trên m t dòng m i
• Cú pháp : (Prin1 [Expr [file]] - Hàm này in ra màn hình ho c in ra file trên m t dòng
m i
Ví d :
Command: (princ "\nabc \nabc\n")
abc abc
"\nabc \nabc\n"
Command: (prin1 "\nabc \nabc\n")
"\nabc \nabc\n""\nabc \nabc\n"
Command: (print "\nabc \nabc\n")
"\nabc \nabc\n" "\nabc \nabc\n"
Các ký t đ c bi t cho hàm Princ
• \n : xu ng dòng
• \t : đ cách ra nh m t kho ng Tab
Hàm StrCase
Cú pháp : (StrCase String [switch])
• N u switch <> nill hàm s tr v chu i String trong đó các ký t hoa đc chuy n thành ch
Trang 15Cú pháp : (StrLen String [string]) : tr v chi u dài c a m t xâu N u có nhi u xâu hàm s tr v
t ng chi u dài c a các xâu tham s
Hàm SubStr
Cú pháp : (SubStr String Start [length]) : Tr v m t xâu con c a xâu String b t đ u t v trí Start
và dài length ký t Nêu không có length, nó s l y đ n t n cu i xâu
7 X lý danh sách
7.1 T ng quan
Danh sách (List) đ c phân làm 3 lo i chính
• Bi u th c (Expression list) : ch a tên hàm và các tham s c a hàm Bi u th c tr v giá
T t các d li u c a AutoCAD (Auotcad database) đ u đc l u d i d ng danh sách và đc đánh s
th t theo mã (DXF Code) Khi vi t ch ng trình, đ qu n lý d li u, thông th ng ta l u vào các
bi n Nh ng khi s l ng l u tr d li u t ng lên Lisp không cung c p ki u d li u đ ng và m ng
đ ng gi i quy t v n đ này, ta s d ng ki u d li u List
M t trong nhi u ph ng pháp t o ra danh sách là s d ng hàm List
Command: (setq a1 (quote("abc" 1 30 40)))↵
("abc" 1 30 40)
Ho c Command: (setq a1 '("abc" 1 30 40))↵
(nil nil nil) (Vì a b c là 3 bi n ch a có giá tr )
Trang 16Command : (setq a3 (CDR a1)↵
(1 30 40)
Hàm CADR, CADDR
• (CADR list) tr v ph n t th 2 c a danh sách
• (CADDR list) tr v ph n t th 3 c a danh sách
Hàm Last
Cú pháp : (Last list) : Tr v ph n t cu i cùng c a danh sách
Hàm Length
Cú pháp : (Length List) : tr v s l ng ph n t có trong danh sách
7.4 Hàm x lý danh sách nâng cao
Hàm Assoc (association)
Cú pháp : (Assoc Item AList) : Danh sách Alist ph i ch a ph n t Item, và là danh sách ph c
h p Hàm s tr v m t danh sách con c a Alist mà ph n t đ u tiên là Item N u không tìm th y ph n
t Item trong Alist thì hàm s tr v giá tr nill
Ví d :
Command: (Setq Alist '((1 "Name" "NGuyen hoang anh") (2 "Toan" 10) (3 "Ly" 6)))
((1 "Name" "NGuyen hoang anh") (2 "Toan" 10) (3 "Ly" 6))
Command: (setq Toan (assoc 2 Alist))
(3 4 5)
Hàm Append
Cú pháp : (Append list1 list2 … ) : G p nhi u danh sách thành m t danh sách
Command : (setq L2 (Append (member 3 L) (list 6))) (3 4 5 6)
Trang 17< (< Atom Atom ) Tr v T n u m i ph n t nh h n ph n t đ ng
bên ph i nó
<=; >=; > T ng t T ng t
EQ (EQ Expr1 Expr2) So sánh s trùng nhau c a 2 danh sách
Equal (Equal Expr1 Expr2
[fuzz]
Hàm đ nh giá tr các bi u th c và ki m tra các giá
tr này có b ng nhau hay không i v i d li u
ki u s Fuzz quy đ nh sai s trong phép so sánh Các hàm ki m tra d li u
Hàm Cú pháp Gi i thích
Atom (Atom Item.) Tr v giá tr Nil n u Item là list
Listp (Listp Item) Tr v T n u Item là danh sách ho c giá tr Nill
Numberp (numberp Item) Tr v T n u giá tr là s nguyên
Minusp (minusp Item) Tr v T n u giá tr là s âm
Zerop (Zerop Item) Tr v T n u d li u =0 or 0.0
Null (Null Item) Ki m tra m t bi n có r ng hay ko
Type (Type Item) Tr v ki u d li u c a bi n
8.2 Hàm If và Progn
C u trúc r nhánh v i If
Cú pháp :
• (If LogicExpr ThenExpr)
• (If LogicExpr ThenExpr ElseExpr) Chú ý :
• Hàm If ch ch p nh n m t bi u th c ThenExpr và ElseExpr N u s d ng nhi u h n m t
8.3 Hàm logic
(Setq A 10 b 20 c 30)
Hàm Cú pháp Ví d
And (And Expression ) (And (> 10 0) (< 10 20)) tr v giá tr T
Or (or Expression ) (Or (= A 10) (< b 0)) tr v giát tr T
Not (Not Item) (Not nill) = T (Not T) = nill
Trang 18(setq i (+ 2 i) (setq j (* 2 j) ) ; k t thúc hàm repeat
L p 10 l n khi đó I = 10+2*10 = 30; j= 2^10
Vòng l p While
Hàm while t o ra vòng l p có đi u ki n Vòng l p này s j t thúc khi đi u ki n Testexpr không
th a mãn
Cú pháp : (While testexpr Expr )
Ví d : V đ ng th ng đi qua 2 đi m
(defun c:L2P (/ ch PT1 pt2) (setq ch "Y")
(while (or (= ch "Y") (= ch "y") )
(setq PT1 (getpoint "\nnh?p vào ?i?m th? nh?t : ")) (setq PT2 (getpoint "\nnh?p vào ?i?m th? hai : ")) (command "Line" PT1 PT2 "")
(initget 1 "Y N y n") (Setq ch (getkword "\n b?n có v? n?a không (Y/N) : ")) ); ket thuc while
); ket thuc defun
9.2 Hàm foreach
Cú pháp : (Foreach Name List Expr …)
Hàm Foreach duy t t ng ph n t trong danh sách LIST T i m i th i đi m, giá tr c a t ng ph n
t trong danh sách s đc gán cho bi n Name Sau đó các bi u th c Expr s đc đ nh giá tr
Ví d :
(setq I 0) (foreach So (list 1 2 3 4 5 6 7 8 9 10)
(Setq I (1+ i)) (Princ (Strcat “\nCác giá tr th “ (itoa i) “trong danh sách là” (itoa so))) )
Trang 19None S d ng m i ph ng pháp ch n (hay dùng) (Ssget)
<Point> Ch n đ i t ng đi qua đi m Point (Ssget point)
“L” Last: ch n đ i t ng đc t o ra cu i cùng (Ssget “l”)
“CP” Crossing polygon (ssget “cp” PT-list
Ví d :
Setq PT1 ‘(0 0 0) PT2 ‘(4 0 0) PT3 ‘(4 4 0) PT4 ‘(0 4 0)) (setq SS (ssget “WP” (list pt1 pt2 pt3 pt4)))
B ng Group code
S d ng filter
Ví d :
(ssget ‘( (0 ”text”) (40 2.5))) (ssget ‘( (0 ”line”) (62 4)))
S d ng các phép so sánh Chú ý các phép so sánh ch áp d ng đ i v i các group code có ki u s
(nguyên ho c th c) Các phép so sánh bao g m “*” “=” “/=” “!=” “>” ”<” “>=” “<=” “<>”
Ví d :
(Ssget ‘((0 “Circle”) (-4 “<>”) (40 50) (-4 “>, <,*”) (10 0.0 0.0 0.0)))
ng tròn bán kính group code 40, to đ tâm group code 10
S d ng các phép toán logic Các phép toán logic And Or Not
Ví d :
(Ssget “X” ‘((-4 “<OR”) (0 “Text”) (0 “Line”) (0 “Circle”) (-4 “Or>”)))
M t vài group code : to đ đi m đ u, cu i c a Line : 10,11 Giá tr Text : 12
Trang 2011 L p trình v i c s d li u c a AutoCAD
11.1 L y Record d li u đ i t ng
Hàm EntGet (entity get)
Cú pháp : (ENTGET entname) : tr v danh sách bi u di n Record d li u c a đ i t ng có mã
là entname
11.2 Hi u ch nh record đ i t ng
Các b c hi u ch nh
• T o ra record m i ch a các field đã thay đ i b ng hàm Subst
• Thay th Record c c a đ i t ng b ng record m i b ng hàm Entmod
• C p nh t s thay đ i c a đ i t ng lên màn hình (thay cho l nh regen) S d ng hàm EntUpd
Hàm Subst
t o ra m t record m i b ng cách s đ i m t s ph n t c a record c
Cú pháp : (Subst new_Item Old_Item list)
N u không tìm th y old_Item, hàm s tr v danh sách gi ng danh sách ban đ u
Ví d :
(Setq al ‘(A 22 34 “yes” B 22)) (Subst 22 11 al) tr v A 11 34 “yes” B 22 (setq El ‘((-1.<entity name 2d3314>) (0.”Line”) (5 ”20”) (100 “ACDB entity”) (67 0) (8 “0”) (100 “acdbline”) (10 0 0 0) (11 5.0 5.0 0))
(setq el (subst ‘(8 “Layer Dim”) ‘(8 0) EL))
Các quy đ nh cho elist
• Tham s elist không nh t thi t ph i có đ các thông s
• Field th nh t b t bu c ph i là group code 0 ch a ki u đ i t ng
; while this command is active
Trang 21(cond
((= s "quit / exit abort") (princ))
((/= s "Function cancelled") (princ (strcat "\nError: " s)))
)
(setvar "cmdecho" CMD) ; Restore saved modes
(setvar "osmode" OSM)
(setq *error* OLDERR) ; Restore old *error* handler
(princ)
)
;******************************************************************************* (DEFUN C:CD (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI PT13I PT14I PT13N PT14N O13 O14 N13 N14 OSM OLDERR PT10 PT11)
(SETQ CMD (GETVAR "CMDECHO"))
(SETQ OSM (GETVAR "OSMODE"))
(SETQ OLDERR *error*
*error* myerror)
(PRINC "Please select dimension object!")
(SETQ SS (SSGET))
(SETVAR "CMDECHO" 0)
(SETQ PT (GETPOINT "Point to trim or extend:"))
(SETQ PT (TRANS PT 1 0)) ; chuyen tu current UCS sang WCS (world)
(SETQ GOCY (ANGLE PT10 PT14)) (SETQ GOCX (+ GOCY (/ PI 2))) )
)
(SETQ PTI (POLAR PT GOCX 2)) (SETQ PT13I (POLAR PT13 GOCY 2)) ; tao ra mot diem moi (SETQ PT14I (POLAR PT14 GOCY 2)) ; (polar PT angle distance) (SETQ PT13N (INTERS PT PTI PT13 PT13I NIL)) ; nill thi cac duong thang se dc keo dai,
(SETQ PT14N (INTERS PT PTI PT14 PT14I NIL)); kha nill thi se khong dc keo dai
(SETQ N13 (CONS 13 PT13N)) (SETQ N14 (CONS 14 PT14N))
Trang 22(SETQ DS (SUBST N13 O13 DS)) (SETQ DS (SUBST N14 O14 DS))
(SETVAR "OSMODE" OSM)
(setq *error* OLDERR) ; Restore old *error* handler
Trang 23IV Ngôn ng l p trình Visual Lisp
V C b n v ngôn ng l p trình Visual Basic
VI Làm quen v i VBA
Project nhúng đ c load ngay khi b n m b n v ch a nó
Project không nhúng đ c l u l i d i d ng file *.DVB, đ load project này: trên c a s VBA Manager, nh n nút Load
Trên h p tho i OpenFile, ch n file DVB can mo
xem n i dung cua Project, nhan Alt+F11 hoac dung lenh VBAIDE tren dong command-line
3 T ch c các project v i VBA Manager
Gi i thi u ch c n ng các nút trong h p tho i VBA Manager
Trang 24Gi i thi u các c a s c a VBA IDE
thêm 1 component (form, module, class module) vào project
Ch n project c n thêm thành ph n - component
Trên menu [Insert], ch n [UserForm], [Module], [Class Module] đ thêm các thành ph n này vào Project
Module, Class module đ c so n th o trên c a s Code
UserForm đ c so n th o trên c a s UserForm
so n th o các thành ph n Trên c a s Project Explorer, ch n thành ph n c n so n th o
Nh n nút [View code] đ m c a s Code
Nh n nút [View object] đ m c a s UserForm
Trang 25S d ng trình so n th o Code : Text Editor
5 Làm vi c v i các Macro
• m c a s Macro
Ch n menu Tools/Macro/Macro
Ho c s d ng l nh VBARUN trên dòng command-line
H p tho i Macro li t kê t t c các hàm c a b n v , project (tu theo l a ch n t i m c [Macro in])
Trang 273 i t ng Collection
AutoCAD nhóm h u h t các đ i t ng (Object) trong m t collections Cho dù các collections này ch a nhi u lo i d li u khác nhau, nh ng chúng có th có chúng đ c tao ra b ng cách s d ng các k thu t t ng t nhau M i m t collection có m t method đ thêm m t object vào collection H u
h t các collections s d ng Add method cho m c đích này Ví d , đ thêm m t th c th ta s d ng method Add<Entityname> For exam-ple, to add a line you would use the AddLine method
4 Property & Method (thu c tính & ph ng th c)
M i m t Object ch a nhi u thu c tính và ph ng th c khác nhau
5 Truy c p đ n đ i t ng trong Object Hierarchy
Ta có th truy c p đ n objects m t cách tr c ti p ho c thông qua m t bi n đ c đ nh ngh a
tr c
truy c p đ n đ i t ng m t cách tr c ti p
Ví d , dòng code sau thêm m t đ ng line trên model space Chú ý r ng cây ph h b t đ u b ng ThisDrawing
Dim startPoint(0 To 2) As Double, endPoint(0 To 2) As Double
Dim LineObj as AcadLine
startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0
endPoint(0) = 30: endPoint(1) = 20: endPoint(2) = 0
Set LineObj = ThisDrawing.ModelSpace.AddLine(startPoint,endPoint)
truy c p đ i t ng thông qua m t bi n đ c khai báo tr c u tiên ta ph i khai báo bi n
v i ki u t ng ng, sau đó đ t bi n đó lên c p trên c a đ i t ng đó trong cây ph h
Ví d : o n code sau khai báo bi n (moSpace) thu c ki u AcadModelSpace và
gán bi n này cho l p model space hi n hành:
Dim moSpace As AcadModelSpace
Set moSpace = ThisDrawing.ModelSpace
The following statement then adds a line to the model space using the userdefined
variable:
Dim startPoint(0 To 2) As Double, endPoint(0 To 2) As Double
Dim LineObj as AcadLine
startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0
endPoint(0) = 30: endPoint(1) = 20: endPoint(2) = 0
Set LineObj = moSpace.AddLine(startPoint,endPoint)
Truy c p đ n Application Object
B i vì ThisDrawing object cung c p link t i Document object, b n c ng có th tr d n t i th
m c g c c a cây ph h (Application object), Chúng ta c ng có th truy c p đ n Document object trong object hierarchy thông qua đ ng d n vòng Document object có m t thu c tính g i là Application, nó cung c p link t i Application object
Ví d : ThisDrawing.Application.Update
6 Truy c p đ n đ i t ng Collection trong Object Hierarchy
H u h t các collection objects có th đ c truy c p đ n trong Document object Document object
ch a thu c tính cho m i đ i t ng trong Collection objects Vú d , Ví d sau đ nh ngh a m t bi n và gán nó cho t p h p đ i t ng layer c a b n v hi n hành:
Dim layerCollection as AcadLayers
Set layerCollection = ThisDrawing.Layers
Documents collection, MenuBar collection, and MenuGroups collection
Trang 28đ c truy c p thông qua Application object The Application object ch a m t thu c tính cho m i
đ i t ng n m trong các collection này Ví d , o n code sau đ nh ngh a m t bi n và gán chúng cho
t p h p đ i t ng MenuGroups cho ng d ng
Dim MenuGroupsCollection as AcadMenuGroups
Set MenuGroupsCollection = ThisDrawing.Application.MenuGroups
Thêm m t đ i t ng vào Collection
Dim newLayer as AcadLayer
Set newLayer = ThisDrawing.Layers.Add("MyNewLayer")
Truy c p đ n m t đ i t ng trong collection
Truy c p đ n m t đ i t ng thu c t p h p, s d ng Item method Ta có th s d ng tên c a Item
ho c ch s (s th t c a Item) trong t p h p L u ý là Item method là method m c đ nh c a collection Ví d , 2 cách vi t sau là nh nhau :
ThisDrawing.Layers.Item("ABC")
ThisDrawing.Layers("ABC")
Xoá m t đ i t ng kh i Collection Object
S d ng Delete method Ví d , đo n mã sau xoá layer ABC:
Dim ABCLayer as AcadLayer
Set ABCLayer = ThisDrawing.Layers.Item("ABC")
ABCLayer.Delete
7 Truy c p đ n Object Hierarchy b ng VB, VBA trong các môi tr ng khác
Ta c ng có th truy c p đ n Object Hierarchy c a cad b ng các ngôn ng khác nh VB, VBA trong Excel, Word,… Vi c đ u tiên ta ph i Tham chi u đ n AutoCAD Type Library làm vi c này
ta làm nh sau :
Ch n References option t Project menu, h p tho i Reference dialog hi n lên Trong References dialog box, ch n Type library for AutoCAD, and then click OK
Khái ni m v Type library for AutoCAD Các đ i t ng, thu c tính và ph ng th c đ c đ a ra
b i k thu t t đ ng hoá đ i t ng có ch a m t type library M t type library là m t file ho c m t
ph n c a file miêu t ki u c a m t ho c nhi u đ i t ng.Type libraries không ch a Object; chúng
ch a các thông tin v Object truy c p đ n type library, applications và browsers có th xác đ nh
đ c đ c tr ng c a t ng object, nh là giao di n c a đ i t ng, tên và đ a ch c a t ng thành ph n c a dao di n đó.Tr c khi b n s d ng, B n ph i tham chi u đ n type library AutoCAD VBA s t tham chi u đ n AutoCAD type library i các môi tr ng khác b n ph i t o tham chi u t i AutoCAD type library, acax16enu.tlb File này m c đ nh n m trong th m c C:\program files\common files\autodesk shared
Tuy nhiên, s t t h n n u b n add type library reference vì nh ng u đi m sau :
- Ch ng trình s chay nhanh h n, n đ nh h n
- Function, properties, methods có th đ c ki m tra khi b n đánh code
- Ch c n ng tìm ki m và th xu ng sau d u ch m c a các đ i t ng
Sub Ch2_ConnectToAcad()
Dim acadApp As AcadApplication
On Error Resume Next Set acadApp = GetObject(, "AutoCAD.Application.16")
If Err Then
Err.Clear Set acadApp = CreateObject("AutoCAD.Application.16")
Trang 29MsgBox Err.Description Exit Sub
End If End If
MsgBox "Now running " + acadApp.Name + " version " + acadApp.Version End Sub
Dim acadDoc As AcadDocument
Set acadDoc = acadApp.ActiveDocument
………
acadApp.visible = True
N u AutoCad đang ch y – GetObject s không sinh ra l i Ng c l i n u sinh ra l i, t c là CAD
ch a ch y Khi đó CreatObject s kh i đ ng CAD N u có nhi u session c a CAD đang ch y thì
ch ng trình s l y Session đ u tiên trong Windows Running Object Table
Trang 30If Not (ThisDrawing.Saved) Then
If MsgBox("Do you wish to save this drawing?", vbYesNo) = vbYes Then ThisDrawing.Save
End If End If
End Sub
II i u khi n c a s b n v
1 i u khi n c a s AutoCAD
M c đích : Khi b n làm vi c v i 1 ng d ng khác, b n c n nh p s liêu t ng i dùng ch ng
h n B n c n thu nh ho c ki m tra tình trang c a c a s AutoCAD
S d ng methods và properties có trong Application object, b n có th thay đ i position, size và visibility c a c a s AutoCAD B n c ng có th s d ng WindowState property đ minimize,
maximize và có th ki m tra tình tr ng hi n t i c a c a s AutoCAD
Trang 31Các thu c tính c a Position và size c a Application window là WindowTop, WindowLeft,
Width, and Height properties
i u ch nh c a s Autocad :
Sub Ch3_PositionApplicationWindow()
ThisDrawing.Application.WindowTop = 0 ThisDrawing.Application.WindowLeft = 0 ThisDrawing.Application.width = 400 ThisDrawing.Application.height = 400 End Sub
Maximize the Application window
Sub Ch3_MaximizeApplicationWindow()
ThisDrawing.Application.WindowState = acMax End Sub
Minimize the Application window
Sub Ch3_MinimizeApplicationWindow()
ThisDrawing.Application.WindowState = acMin End Sub
End Sub
Make the Application window invisible
Sub Ch3_HideWindowState()
ThisDrawing.Application.Visible = False End Sub
2 i u khi n c a s b n v
i u khi n c a s b n v c ng gi ng nh đi u khi n c a s AutoCAD, ví d nh b n có th minimize, maximize, reposition, resize, và ki m tra tình tr ng c a b t k Document window nào Document window có th minimized ho c maximized b ng cách s d ng thu c tính WindowState, và b n có th l y tình tr ng c a Document window thông qua thu c tính WindowState
Ví d nh ta gán cho Width and Height c a b n v hi n hành là 400 x 400 pixel
Sub Ch3_SizeDocumentWindow()
ThisDrawing.Width = 400 ThisDrawing.Height = 400 End Sub
Maximize the active Document window
Sub Ch3_MaximizeDocumentWindow()
ThisDrawing.WindowState = acMax End Sub
Minimize the active Document window
Sub Ch3_MinimizeDocumentWindow()
ThisDrawing.WindowState = acMin End Sub
Trang 32Sub Ch3_CurrentWindowState()
Dim CurrWindowState As Integer Dim msg As String
CurrWindowState = ThisDrawing.WindowState msg = Choose(CurrWindowState, "normal","minimized", "maximized") MsgBox "The document window is " + msg
End Sub
3 i u khi n s hi n th bên trong c a s b n v
B n c ng có th thay đ i s hi n th bên trong c a s b n v b ng cách s d ng ph ng th c views, viewports, và zooming AutoCAD ActiveX cung c p r t nhi u cách đ đi u khi n s hi n th bên trong c a s b n v
• Di chuy n đ n các vùng khác nhau trên b n v
• Phóng to thu nh hay di chuy n đ n các v trí khác nhau trên b n v
• Ghi l i các khung nhìn và l y ra khi c n thi t
• Hi n th nhi u khung nhìn c a m t b n v b ng cách s d ng splitting the screen trong nhi u tiled viewports
• Position và Size the Document WindowUse the Document object to modify the position and size of any document window
Define a Zoom Window
S d ng ZoomWindow or ZoomPickWindow method
Sub Ch3_ZoomWindow()
' ZoomWindow
MsgBox "Perform a ZoomWindow with:" & vbCrLf &"1.3, 7.8, 0" & vbCrLf & _ "13.7, 2.6, 0", , "ZoomWindow"
-Dim point1(0 To 2) As Double
Dim point2(0 To 2) As Double
point1(0) = 1.3: point1(1) = 7.8: point1(2) = 0
point2(0) = 13.7: point2(1) = -2.6: point2(2) = 0
ThisDrawing.Application.ZoomWindow point1, point2
• S d ng Snap, Grid Alignment
Các đi u khi n Snap và Grid n m trong class Viewport
Sub textsnap()
Dim Vp As AcadViewport Set Vp = ThisDrawing.ActiveViewport Vp.SnapOn = True ‘B t ch đ snap lên Dim newBasePoint(0 To 1) As Double newBasePoint(0) = 1: newBasePoint(1) = 1
Trang 33Vp.SnapBasePoint = newBasePoint ' Thay đ i g c c a snap Dim Xspacing as Double, ySpacing as Double
xSpacing =20: ySpacing=20 VP.SetSnapSpacing(xspacing,ySpacing) ' Thay b c nh y c a chu t Dim rotationAngle As Double
rotationAngle = 0.575 Vp.SnapRotationAngle = totationangle ' Thay đ i góc quay c a Snap sang 30 đo hay 0.575 radians
' reset the viewport ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport End Sub
Chú ý : V i các l nh hi u ch nh các active Object nh active layer, active linetype, ActiveTextStyle, ta không th dùng ph ng th c update nh khi ta hi u ch nh các đ i t ng thông
th ng đ c Thay đ i các active object s không đ c hi n th ngay trên b n v Mu n quan sát s thay đ i này, ta ph i dùng ph ng th c Regen l i viewport nh sau : ThisDrawing.Regen (acNameViewports)
Riêng đ i v i ActiveUCS ho c ActiveViewport ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport Ph ng th c này áp d ng đ c cho t t c các active object
Các đi u khi n Grid c ng t ng t nh Snap
• S d ng Ortho Mode
ThisDrawing.ActiveViewport.OrthoOn = True
3 L y và thi t l p bi n h th ng trong Option
Trong m c options có 9 Objects, m i m t object đ c tr ng cho m t tab c a Options dialog box Các object này cung c p đ ng d n t i t t c các registry l u trong options trong Options dialog box
B n có th tùy bi n t t c các thi t l p c a AutoCAD b ng cách s d ng properties trong các Object này Các Object bao g m :
Dim acadPref as AcadPreferences Set acadPref = ThisDrawing.Application.Preferences
Ví d sau thi t l p 2 râu c a chu t dài kín màn hình :
Sub Ch2_PrefsSetCursor()
Dim acadPref As AcadPreferences Set acadPref = ThisDrawing.Application.Preferences acadPref.Display.CursorSize = 100
End Sub
IV S d ng command line trong VBA
S d ng SendCommand method đ g i l nh m t cách tr c ti p cho AutoCAD Ph ng th c SendCommand s g i m t chu i đ n t i dòng l nh command line Chu it ph i ch a các tham s cho
Trang 34l nh, th t vi t trong chu i nh vi t trong macro đã h c trong ph n Customize menu Phím cách
ho c mã ASCII t ng ng s t ng đ ng v i phím ENTER trên bàn phím keyboard
Ví d sau v m t đ ng tròn tâm A(2, 2, 0), bán kính R= 4 sau đó s d ng l nh Zoom All Sub Ch3_SendACommandToAutoCAD()
• 0 : Spaces Bar không cho phép (SPACEBAR s k t thúc nh p chu i)
• 1 : Chu i nh p vào có th ch a d u cách (ENTER s k t thúc nh p chu i)
Prompt không b t bu c, là chu i s đ c đ a ra t i dòng l nh v i m c đích thông báo
RetVal giá tr tr v , ki u Variant v i 3 t a đ (3D)
Ví d :
Sub Ch3_GetStringFromUser()
Dim retVal As String retVal = ThisDrawing.Utility.GetString(1, vbCrLf & "Enter your name: ") MsgBox "The name entered was: " & retVal
End Sub
2 Nh p t a đ m t đi m
GetPoint method prompts cho phép ng i dùng nh p t a đ m t đi m t bàn bàn phím ho c
b ng m t kích chu t trái trên b n v
Cú pháp nh sau :
RetVal = UtilityObject.GetPoint([Point][, Prompt]) Point không b t bu c, n u có s xu t hi n dây thun t đi m này Point ki u Variant v i 3 t a đ (3D)
Prompt không b t bu c, là chu i s đ c đ a ra t i dòng l nh v i m c đích thông báo
RetVal giá tr tr v , ki u Variant v i 3 t a đ (3D)
Ví d : Sub Ch3_GetPointsFromUser()
Dim startPnt As Variant Dim endPnt As Variant Dim prompt1 As String Dim prompt2 As String prompt1 = vbCrLf & "Enter the start point of the line: "
prompt2 = vbCrLf & "Enter the end point of the line: " ' Get the first point without entering a base point
startPnt = ThisDrawing.Utility.GetPoint(, prompt1) ' Use the point entered above as the base point
endPnt = ThisDrawing.Utility.GetPoint(startPnt, prompt2) ' Create a line using the two points entered
ThisDrawing.ModelSpace.AddLine startPnt, endPnt ThisDrawing.Application.ZoomAll
Trang 35End Sub
3 Nh p m t ký t đi n hình cho Option
GetKeyword Method prompts cho phép ng i dùng nh p m t ký t đi n hình t bàn bàn phím cho m t m c l a ch n
Cú pháp nh sau :
RetVal = UtilityObject.GetKeyword([Prompt]) Prompt không b t bu c, là chu i ch a l a ch n s đ c đ a ra dòng l nh v i m c đích thông báo l a ch n
RetVal giá tr tr v , ki u chu i
Ví d : Sub Ch3_KeyWord()
Dim keyWord As String ThisDrawing.Utility.InitializeUserInput 1, "Line Circle Arc"
keyWord = ThisDrawing.Utility.GetKeyword(vbCrLf & "Enter an option (Line/Circle/Arc): ")
MsgBox keyWord, , "GetKeyword Example"
End Sub
4 Nh p s th c, s nguyên
The GetInteger Method
Ph ng th c GetInteger cho phép ng i dung nh p vào m t s nguyên (giá tr nh p vào t
End With End Sub
The GetReal Method
Ph ng th c GetReal cho phép ng i dung nh p vào m t s th c (giá tr nh p vào t −32,768 to +32,767)
Cú pháp nh sau :
dblUserRealInput = UtilityObject.GetReal([Prompt])
5 GetCorner Method, GetAngle Method, GetDistance Method
The GetCorner Method
Tr v đi m góc c a m t hình ch nh t
Cú Pháp nh sau :
varUserCornerInput = UtilityObject.GetCorner(BasePoint [,Prompt])
Trang 36NAME TYPE DESCRIPTION
varUserCornerInput Variant Giá tr tr v 3D
The GetDistance Method
Ph ng th c GetDistance nh p kho ng cách t ng i dùng Khác v i GetReal, GetDistance có
th nh p vào m t s th c, s th c này t ng ng v i đ n v đang s d ng, ho c ta c ng có th pick 2
đi m trên b n v Cú pháp c a ph ng th c nh sau :
dblUserDistanceInput = UtilityObject.GetDistance([BasePoint] [,Prompt]) NAME TYPE DESCRIPTION
BasePoint Variant Là m t m ng 3 pt ki u double th hi n t a đ 3D
c a đi m đ u mà t đó ta b t đ u đo (trong WCS) N u
b n không cung c p đi m này, b n ph i nh p vào 2
Prompt String Chu i thông báo t i dòng l nh
Khi ta nh p kho ng cách b ng cách pick 2 đi m, t i v trí con chu t s xu t hi n dây thun M c
đ nh là t a đ 3D Có th dùng là InitializeUserInput v i Bit code 16 đ chi u các t a đ sang 2D AutoCAD s tính kho ng cách 2 đi m khi đã chi u sang 2D
6 GetEntity Method, GetSubEntity Method
GetEntity Method
S d ng ph ng th c GetEntity đ ch n m t đ i t ng AutoCAD b ng cách pick m t th c th
t b n v Ph ng th c có cú pháp nh sau :
UtilityObject.GetEntity PickedEntity, PickedPoint[, Prompt]
PickedEntity AcadEntity
object
Là d li u truy n ra i t ng này s tham chi u t i
đ i t ng v a đ c pick trên b n v PickPoint Variant D li u truy n ra Là m t m ng 3 ph n t ki u double,
là t a đ đi m b n v a pick trong h t a đ WCS
Prompt String Chu i thông báo trên dòng l nh
Ví d sau l y m t th c th b ng cách pick đ i t ng trên b n v :
Public Sub TestGetEntity()
Dim objEnt As AcadEntity Dim varPick As Variant
On Error Resume Next With ThisDrawing.Utility
.GetEntity objEnt, varPick, vbCr & "Pick an entity: "
If objEnt Is Nothing Then 'check if object was picked
.Prompt vbCrLf & "You did not pick as entity"
Trang 37GetEntity tr v m t l i n u giá tr nh p vào là null, nh khi b n pick không trúng m t th c th
đ h a nào c , ho c khi b n n Enter mà không ch n b t k m t th c th nào
The GetSubEntity Method
S d ng GetSubEntity đ nh p m t th c th ph c M t th c th ph c là m t th c th ch a nhi u
th c th đ n khác ví d nh đ ng polyline, block Ph ng th c có cú pháp nh sau :
UtilityObject.GetSubEntity PickedEntity, PickPoint, Matrix, Context[, Prompt]
NAME TYPE DESCRIPTION
PickedEntity AcadEntity Object Output Tr v tham chi u t i đ i m t đ i
t ng v a đ c pick
PickPoint Variant Output Là m t m ng 3 ph n t ki u double, là t a đ
đi m b n v a pick trong h t a đ WCS
Matrix Variant Output Tr v 1 m ng đ n 4x4 ph n t ki u doubles
Ch a ma tr n chuy n đ i c a đ i t ng v a đ c ch n
Context Variant Output Tr v m t m ng ki u long integer ch a
ObjectIds cho m i block cha, ch a các đ i t ng đ c
ch n, n u th c th đó là Bloock
Prompt String Chu i thông báo tai dòng l nh
Th c th v a ch n trong Model c a block, tham s Matrix là ma trân chuy n t h t a đ block sang h t o đ WCS c a b n v Nó bao g m t t c các phép bi n đ i t m t th c th đ c l u trong block sang m t th c th b n v , nh scale, rotation phép bi n đ i t a đ
Tham s Context output là m t m ng các ObjectIds c a các đ i t ng ch a đ i t ng v a đ c
ch n Ví d có m t đ ng th ng, n m trong block có tên là BL1 BL1 l i n m trong block chao (Block
n ng) có tên là BL2 Thì Context s là m ng 2 ph n t ch a ID c a BL1 và BL2
Ví d :
Chú ý : Th c th nh p vào b ng GetEntity ho c b ng GetSubEntity có th là đ i t ng n (Invisible) Vì khi b n ch n, thay vì pick object b n có th nh p vào ký t L (Last Object selection) Last Object Selection có th đã b đóng b ng hay thu c layer v a b t t đi
Trang 38Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint,endPoint)
Cách khác, khai báo bi n :
Dim moSpace As AcadModelSpace Dim paSpace As AcadPaperSpace Set moSpace = ThisDrawing.ModelSpace Set paSpace = ThisDrawing.PaperSpace
Set lineObj = moSpace.AddLine(startPoint,endPoint)
2 V Line, Arc, Circle, and Ellipse objects
V Line
Set LineObject = Object.AddLine(StartPoint, EndPoint)
StartPoint Variant M ng 3 ph n t ki u Double là t a đ 3D đi m đ u
c a đ ng th ng trong h t a đ WCS EndPoint Variant M ng 3 ph n t ki u Double là t a đ 3D đi m đ u
c a đ ng th ng trong h t a đ WCS
V polyline
Set LWPolylineObject = Object.AddLightWeightPolyline(Vertices)
Vertices Variant M t m ng ki u doubles ch ra danh sách t a đ
các đi m 2-D trong h t a đ WCS có d ng nh sau(i.e., p1x, p1y, p2x, p2y, etc.) M ng này t i thi u ph i
Trang 39The Spline Object
Set SplineObject = Object.AddSpline(FitPoints, StartTangent, EndTangent)
FitPoints Variant Là m ng m t chi u ki u double ch ra danh sách
các đi m mà SPLine s đi qua bao g m t a đ X, Y và
Z có d ng (i.e., p1x, p1y, p1z, p2x, p2y, p2z, etc.)
StartTangent Variant M ng g m 3 pt ki u doubles xác đ nh ti p tuy n
c a spline t i đi m đ u
EndTangent Variant M ng g m 3 pt ki u doubles xác đ nh ti p tuy n
c a spline t i đi m đ u
V cung tròn (Arc)
Set ArcObject = Object.AddArc(CenterPoint, Radius, StartAngle, EndAngle)
CenterPoint Variant M ng 3 ph n t ki u Double là t a đ 3D tâm
cung tròn trong h t a đ WCS
StartAngle Double Góc b t đ u c a cung tròn (radians), là góc h p
v i tr c X trong h t a đ WCS EndAngle Double Góc k t thúc c a cung tròn (radians), là góc h p
Trang 40The Circle Object
Set CircleObject = Object.AddCircle(CenterPoint, Radius)
CenterPoint Variant M ng 3 ph n t ki u Double là t a đ 3D tâm
đ ng tròn trong h t a đ WCS Radius Double Bán kính đ ng tròn
The Ellipse Object
Set EllipseObject = Object.AddEllipse(CenterPoint, MajorAxis, RadiusRatio)
CenterPoint Variant M ng 3 ph n t ki u Double là t a đ 3D tâm
Ellipse trong h t a đ WCS
MajorAxis Variant M ng 3 ph n t ki u Double là t a đ 3D m t đi m
mô t vector c a tr c l n Ellipse tính t tâm
RadiusRatio Double T l chi u dài c a tr c bé và tr c l n : 0 <