1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Tài liệu Hướng dẫn lập trình AutoCAD

101 692 5

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 101
Dung lượng 1,83 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

L 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 2

L 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 3

3 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 4

IV 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 5

1 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 6

CH 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 8

Chú ý, 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 9

2.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 10

S 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 11

Ngoà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 13

6 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 15

Cú 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 16

Command : (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 19

None 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 20

11 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 23

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

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 24

Gi 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 25

S 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 27

3 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 29

MsgBox 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 30

If 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 31

Cá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 32

Sub 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 33

Vp.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 34

l 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 35

End 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 36

NAME 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 37

GetEntity 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 38

Set 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 39

The 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 40

The 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 <

Ngày đăng: 10/05/2015, 20:55

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w