Phát triển AutoCAD 11

Khái niệm không gian mô hình và không gian

in

Không gian mô hình (Model Space): là nơi để vẽ, nơi mà người dùng sẽ tạo ra các

đối tượng hình học của một mô hình nào đó. Thông thường, khi bắt đầu vẽ trên

không gian mô hình, ta cần chỉ rõ giới hạn và đơn vị của bản vẽ.

Không gian in (Paper Space): là nơi thể hiện sự trình bày trên giấy của mô hình khi

được in ra. Trong không gian in, ta có thể bố trí các khung nhìn khác nhau của bản

vẽ, thu phóng các khung nhìn một cách độc lập và sắp xếp các khung nhìn khác

nhau của bản vẽ để in. Có thể có nhiều không gian in, mỗi không gian in là một

cách trình bày bản vẽ.

pdf 14 trang kimcuc 15700
Bạn đang xem tài liệu "Phát triển AutoCAD 11", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Phát triển AutoCAD 11

Phát triển AutoCAD 11
 Phát triển ứng dụng ActiveX và VBA | 233 
TẠO BỐ CỤC VÀ IN ẤN 
9
Trong chương này
ƒ Khái niệm không gian mô 
hình và không gian in 
ƒ Bố cục bản vẽ 
ƒ Khái niệm khung nhìn 
ƒ In bản vẽ 
Sau khi đã tạo bản vẽ trong AutoCAD, thông thường 
ta sẽ in bản vẽ ra giấy. Một bản vẽ in ra có thể chứa 
một ảnh đơn của bản vẽ hoặc là sự kết hợp, sắp xếp 
của nhiều ảnh khác nhau. Trong không gian in, ta có 
thể tạo nhiều cửa sổ gọi là các khung nhìn nổi, để 
hiển thị các ảnh khác nhau của bản vẽ. Tùy theo nhu 
cầu mà ta có thể in một hoặc nhiều khung nhìn, hoặc 
thiết lập các lựa chọn để xác định xem in cái gì và 
ảnh nằm vừa trong trang in như thế nào. 
 234 | Chương 9: Tạo bố cục và in ấn 
1. Khái niệm không gian mô hình và không gian 
in 
Không gian mô hình (Model Space): là nơi để vẽ, nơi mà người dùng sẽ tạo ra các 
đối tượng hình học của một mô hình nào đó. Thông thường, khi bắt đầu vẽ trên 
không gian mô hình, ta cần chỉ rõ giới hạn và đơn vị của bản vẽ. 
Không gian in (Paper Space): là nơi thể hiện sự trình bày trên giấy của mô hình khi 
được in ra. Trong không gian in, ta có thể bố trí các khung nhìn khác nhau của bản 
vẽ, thu phóng các khung nhìn một cách độc lập và sắp xếp các khung nhìn khác 
nhau của bản vẽ để in. Có thể có nhiều không gian in, mỗi không gian in là một 
cách trình bày bản vẽ. 
2. Bố cục bản vẽ 
Tất cả cấu tạo hình học của bản vẽ đều được chứa trong các Layout1. Không gian 
mô hình hình học được chứa trong một Layout riêng có tên là Model. Ta không thể 
thay đổi tên của Layout này cũng như tạo ra một Layout khác để chứa không gian 
mô hình hình học. Chỉ có một Layout chứa không gian mô hình trong một bản vẽ. 
Không gian in hình học được để trong nhiều Layout. Trong một bản vẽ có thể có 
nhiều Layout, mỗi cái thể hiện các cấu hình in khác nhau và ta có thể thay đổi tên 
của các Layout này. 
Trong ActiveX Automation, đối tượng ModelSpace bao gồm toàn bộ các đối tượng 
hình học trong Layout của không gian mô hình. Bởi vì Layout không gian in có thể 
nhiều hơn một trong cùng một bản vẽ nên đối tượng PaperSpace chỉ đến Layuot 
không gian in hiện hành cuối cùng. 
2.1. Mối quan hệ giữa Layout và Block 
Nội dung của bất cứ Layout nào đều được đặt giữa hai đối tượng ActiveX khác 
nhau, đó là đối tượng Layout và đối tượng Block. Đối tượng Layout chứa các thiết 
lập về in ấn và các đặc tính về hiển thị của Layout như là cách thể hiện trên giao 
diện của AutoCAD. Đối tượng Block chứa thuộc tính hình học cho Layout. Mỗi đối 
tượng Layout được liên kết duy nhất với một đối tượng Block. Để truy cập vào đối 
tượng Block đã liên kết với Layout trước, sử dụng thuộc tính Block của Layout đó. 
Ngược lại, mỗi đối tượng Block cũng được liên kết với duy nhất một đối tượng 
Layout, và để truy cập vào đối tượng Layout đã liên kết với Block trước, sử dụng 
thuộc tính Layout cho Block đó. 
2.2. Khái niệm về cấu hình in 
Đối tượng PlotConfiguration giống với đối tượng Layout ở chỗ chúng đều chứa các 
thông tin về in ấn. Khác biệt của chúng ở chỗ: đối tượng Layout được liên kết với 
1 Layout: là một khái niệm trong AutoCAD, nó thể hiện cách bố trí các đối tượng hình học trong 
bản vẽ. Bởi AutoCAD có hai loại không gian dùng để vẽ với mục đích khác nhau (Model Space và 
Paper Space) cho nên khái niệm Layout sẽ tương ứng với những không gian vẽ này. Do trong tiếng 
Việt chưa có từ tương đương cho nên chúng tôi tạm sử dụng từ nguyên gốc tiếng Anh 
 Phát triển AutoCAD bằng ActiveX và VBA | 235 
một đối tượng Block chứa các đối tượng hình học cần in còn đối tượng 
PlotConfiguration không liên kết với một đối tượng Block nào, nó chỉ là tên của 
một tập hợp các thông số in ấn có sẵn dùng cho bất cứ đối tượng hình học nào. 
2.3. Xác định các cấu hình của Layout 
Các cấu hình của Layout điều khiển kết quả in ra sau cùng. Những cấu hình này liên 
quan đến khổ giấy, tỷ lệ in, vùng in, gốc in và tên của thiết bị in. Việc hiểu rõ cách 
sử dụng một cách hợp lý các cấu hình trên sẽ đảm bảo kết quả in ra như mong 
muốn. Tất cả các cấu hình cần thiết lập và thay đổi đối với mỗi Layout có thể thực 
hiện thông qua các thuộc tính và phương thức của đối tượng Layout. 
2.3.1. Lựa chọn khổ giấy và đơn vị in 
Khổ giấy được lựa chọn phụ thuộc vào cấu hình của thiết bị in được thiết lập trong 
hệ thống. Mối thiết bị in khác nhau sẽ có sẵn một danh sách các khổ giấy tiêu 
chuẩn. Để thay đổi khổ giấy trong Layout, sử dụng thuộc tính CanonicalMedia-
Name. 
Đơn vị của bản in được xác định thông qua thuộc tính PaperUnits. Thuộc tính này 
có thể lấy một trong 3 giá trị là: acInches, acMillimeters, hoặc acPixels. Nếu 
thiết bị in được cấu hình in theo chế độ Raster thì buộc phải xác định kích thước 
theo đơn vị là Pixels (điểm ảnh) 
2.3.2. Điều chỉnh gốc bản in 
Gốc bản in (plot origin) nằm ở góc phía dưới bên trái của một vùng in xác định và 
được điều khiển thông qua thuộc tính PlotOrigin. Vị trí mặc định của gốc này là 
(0,0). Tuy nhiên, ta có thể chuyển sang chế độ in canh giữa bằng cách gán thuộc 
tính CenterPlot bằng TRUE, khi đó gốc bản in sẽ được tự động thay đổi. 
2.3.3. Thiết lập vùng in 
Khi chuẩn bị in một Layout cần chỉ rõ vùng in để xác định những gì cần in trong 
bản vẽ. Để chỉ định vùng in, ta sử dụng thuộc tính PlotType. Thuộc tính này có thể 
nhận một trong các giá trị dưới đây: 
acDisplay In tất cả các đối tượng đang thể hiện trong không gian mô hình. Tuỳ 
chọn này không có hiệu lực khi in từ một Layout không gian in 
acExtents In tất cả những đối tượng nằm trong đường biên hiện tại của không 
gian được lựa chọn 
acLimits In tất cả các đối tượng trong giới hạn của không gian hiện tại 
acView In cảnh nhìn được đặt tên bởi thuộc tính ViewToPlot 
acWindow In tất cả các đối tượng trong cửa sổ được chỉ định bằng phương thức 
SetWindowToPlot 
acLayout In tất cả các đối tượng nằm trong phần lề của khổ giấy được sử dụng. 
Tuỳ chọn này không có hiệu lực khi in trong không gian mô hình. 
Khi tạo một Layout không gian in mới, giá trị mặc định của tùy chọn này là 
acLayout. 
 236 | Chương 9: Tạo bố cục và in ấn 
2.3.4. Thiết lập Tỷ lệ in 
Thông thường, ta vẽ theo kích thước thật của đối tượng, còn khi in ta có thể chỉ ra 
tỷ lệ chính xác hay tỷ lệ tương đối để bản vẽ phù hợp với khổ giấy. Tỷ lệ in có thể 
theo chuẩn hoặc tự chọn. 
Để nhập tỷ lệ tiêu chuẩn, trước hết gán thuộc tính UseStandardScale thành TRUE, 
sau đó nhập tỷ lệ mong muốn thông qua thuộc tính StandardScale. 
Để nhập tỷ lệ tự chọn, trước hết gán thuộc tính UseStandardScale thành FALSE, 
sau đó nhập tỷ lệ đó thông qua phương thức SetCustomScale. 
Khi chỉ cần xem bản vẽ hay phác thảo thì tỷ lệ chính xác là không quan trọng, trong 
trường hợp này có thể sử dụng giá trị acScaleToFit của thuộc tính StandardScale 
để bản in có tỷ lệ lớn nhất vừa với trang giấy in. 
2.3.5. Thiết lập tỷ lệ cho độ dày nét vẽ 
Độ dày nét vẽ có thể được phóng đại một cách cân đối phù hợp với tỷ lệ in trong 
Layout. Điển hình là độ dày nét vẽ xác định bề rộng nét của đối tượng được in và 
được in ra với bề rộng nét không phụ thuộc vào tỷ lệ in. Thông thường nên sử dụng 
tỷ lệ in mặc định đối với mỗi Layout là 1:1. Tuy nhiên nếu muốn in một Layout vừa 
vào khổ giấy in khác với khổ của Layout đó thì cần chỉ rõ độ dày nét được phóng 
đại phù hợp với tỷ lệ in mới. 
Để phóng đại độ dày nét thì gán thuộc tính ScaleLineWeights thành TRUE và nếu 
không cần phóng đại nét vẽ thì gán thuộc tính này thành FALSE. 
2.3.6. Thiết lập thiết bị in 
Tên thiết bị in được xác định trong thuộc tính ConfigName, thuộc tính này có thể 
nhận bất cứ giá trị tên thiết bị nào có hiệu lực trong hệ thống1. Khi không thiết lập 
một giá trị cụ thể thì công cụ in sẽ được sử dụng là thiết bị in mặc định trong hệ 
thống. 
3. Khái niệm khung nhìn 
Khi làm việc trong không gian mô hình, ta vẽ trong các khung nhìn xếp cạnh nhau 
(tương ứng với đối tượng Viewport trong ActiveX Automation). Có thể hiển thị một 
hay vài khung nhìn khác nhau cùng một lúc. Nếu một vài khung nhìn được hiển thị, 
thì việc hiệu chỉnh trên một khung nhìn sẽ ảnh hưởng đến tất cả các khung nhìn còn 
lại. Tuy nhiên có thể gán độ phóng đại, điểm nhìn, lưới và bắt điểm độc lập cho mỗi 
khung nhìn. 
1 Hệ thống ở đây được hiểu là hệ thống máy tính hoặc hệ thống mạng máy tính. 
 Phát triển AutoCAD bằng ActiveX và VBA | 237 
Khung nhìn xếp cạnh nhau Khung nhìn nổi 
Trong không gian in, ta làm việc trong các khung nhìn nổi của nó (ứng với đối 
tượng PViewport trong ActiveX Automation) để có thể thể hiện được tất cả các ảnh 
khác nhau của mô hình. Khung nhìn kiểu nổi được coi như một đối tượng nên có 
thể di chuyển, thay đổi kích thước và định hình dạng cho phù hợp với Layout. Ta 
cũng có thể vẽ các đối tượng, chẳng hạn như tên các khối hay chú thích, một cách 
trực tiếp trong không gian in mà không ảnh hưởng đến bản vẽ trong không gian mô 
hình. 
Trong không gian in, sẽ không thể hiệu chỉnh các đối tượng vẽ trong không gian mô 
hình. Để truy cập vào mô hình trong đối tượng PViewport, cần chuyển từ không 
gian in sang không gian mô hình thông qua thuộc tính ActiveSpace. Khi đó ta có 
thể làm việc với mô hình trong khi vẫn quan sát được các Layout. trong đối tượng 
PViewport, việc hiệu chỉnh và thay đổi góc nhìn gần giống như trong Viewport. 
Tuy nhiên, ta có thêm quyền điều khiển cho từng khung nhìn. Ví dụ: có thể đóng 
băng hoặc tắt các lớp trong một vài khung nhìn mà không ảnh hưởng đến các khung 
nhìn khác, có thể thể hiện tất cả hay một số khung nhìn, có thể căn hàng vị trí giữa 
các khung nhìn cũng như tỷ lệ quan sát cho phù hợp với toàn bộ Layout. 
Minh họa dưới đây làm thể hiện cách hiển thị các cảnh nhìn khác nhau của mô hình 
trong không gian in. Mỗi không gian in đại diện cho một đối tượng Pviewport với 
một cảnh nhìn khác nhau. Trong một cảnh nhìn, lớp đường kích thước đã được tắt. 
Chú ý rằng phần tiêu đề, khung và ghi chú vẽ trong không gian in không xuất hiện 
trong không gian mô hình. Ngoài ra, lớp chứa khung của khung nhìn cũng đã được 
tắt. 
Mô hình Mô hình được hiển thị thông qua các 
khung nhìn nổi 
Khi làm việc với đối tượng Viewport, thuộc tính ActiveSpace phải được gán giá trị 
là acModelSpace và khi làm việc trong đối tượng PViewport, ActiveSpace có thể 
 238 | Chương 9: Tạo bố cục và in ấn 
nhận một trong hai giá trị acModelSpace hoặc acPaperSpace, do vậy cho phép 
chuyển không gian in sang không gian mô hình và ngược lại khi cần thiết. 
Các đối tượng PViewport, Viewport và thuộc tính ActiveSpace 
Kiểu khung nhìn Trạng thái Sử dụng 
PViewport ActiveSpace = 
acPaperspace 
Bố trí các Layout bằng cách tạo ra các khung nhìn 
nổi, có thêm các tiêu đề, khung hay chú thích. Các 
thay đổi không làm ảnh hưởng đến mô hình. 
PViewport ActiveSpace= 
acModelspace 
Làm việc trong khung nhìn nổi để thay đổi mô hình 
hoặc thay đổi cảnh nhìn. Có thể đóng băng hoặc tắt 
các lớp trong từng khung nhìn. 
Viewport ActiveSpace= 
acModelspace 
Chia màn hình thành các khung nhìn xếp cạnh nhau 
để hiệu chỉnh trên các cảnh nhìn khác nhau của mô 
hình 
Trong AutoCAD ActiveX Automation, thuộc tính ActiveSpace được sử dụng để 
điều khiển biến hệ thống TILEMODE. Gán 
ThisDrawing.ActiveSpace=acModelSpace tương đương với gán TILEMODE=on và 
khi gán ThisDrawing.AciveSpace=acPaperSpace tương đương với gán 
TILEMODE=off.
Tương tự, thuộc tính MSpace tương đương với hai lệnh của AutoCAD là MSPACE và 
PSPACE. Khi gán ThisDrawing.MSpace=TRUE sẽ tương đương với sử dụng lệnh 
MSPACE để chuyển sang không gian mô hình, và khi thuộc tính trên được gán giá trị 
FALSE sẽ tương đương với lệnh PSPACE để chuyển sang không gian in. 
Cần chú ý trước khi gán thuộc tính MSPACE thành TRUE cần sử dụng phương thức 
Display để khởi tạo các thông số đồ hoạ ban đầu trước khi chuyển sang không gian 
mô hình và để AutoCAD thực hiện các thao tác cần thiết khác. Tuy nhiên, trong 
giao tiếp ActiveX Automation, người lập trình cần phải cẩn trọng với phương thức 
khởi tạo này 
CHÚ Ý Nên ghi nhớ rằng cần phải bật màn hình bằng cách gọi phương thức Display cho 
ít nhất là một đối tượng Pviewport trước khi gán thuộc tính Mspace bằng TRUE. Nếu không 
bật được màn hình thì sẽ làm phát sinh lỗi do thuộc tính MSpace. 
3.1. Chuyển sang Layout của không gian in 
Từ không gian mô hình, có thể chuyển sang Layout của không gian in được kích 
hoạt gần nhất theo các bước sau: 
1 Gán thuộc tính ActiveSpace thành acPaperSpace: 
ThisDrawing.ActiveSpace=acPaperSpace 
2 Chuyển thuộc tính MSpace thành FALSE: 
ThisDrawing.MSpace=FALSE 
 Phát triển AutoCAD bằng ActiveX và VBA | 239 
Khi đang ở trong không gian in, AutoCAD sẽ hiển thị biểu tượng của UCS của 
không gian in ở góc dưới bên trái của màn hình đồ họa. Con trỏ vẽ của AutoCAD 
thể hiện rằng vùng Layout của không gian in (chứ không phải vùng hiển thị trong 
khung nhìn) có thể được hiệu chỉnh. 
3.2. Chuyển sang Layout của không gian mô hình 
Từ không gian in, có thể chuyển sang không gian mô hình trong khung nhìn xếp 
cạnh nhau hoặc khung nhìn nổi theo các bước sau: 
1 Dùng phương thức Display để khởi tạo các thông số đồ hoạ 
ThisDrawing.ActivePViewport.Display TRUE 
2 Chuyển thuộc tính MSpace thành TRUE: 
ThisDrawing.MSpace=TRUE 
Các bước thực hiện trên sẽ chuyển sang không gian mô hình và các khung nhìn nổi. 
CHÚ Ý Phải tạo khung nhìn nổi trước khi chuyển sang không gian mô hình. 
Để chuyển sang khung nhìn xếp cạnh nhau thì thực hiện thêm bước sau: 
ƒ Gán thuộc tính ActiveSpace thành acModelSpace: 
ThisDrawing.ActiveSpace=acModelSpace 
3.3. Tạo khung nhìn trong không gian in 
Các khung nhìn của không gian in được tạo bởi phương thức AddPViewport. 
Phương thức này cần có điểm giữa, bề rộng và chiều cao của khung nhìn mới. 
Trước khi tạo khung nhìn, sử dụng thuộc tính ActiveSpace không gian in thành 
không gian vẽ hiện tại (thông thường được sử dụng bằng cách gán TILEMODE=0). 
Sau khi tạo đối tượng PViewport, có thể gán các thuộc tính của chúng như: 
Direction, LensLength, GridOn, có thể điều khiển các thuộc tính của bản thân 
khung nhìn như Layer, LineType, LinetypeScale. 
Chuyển từ không gian mô hình sang không gian in 
Ví dụ dưới đây sẽ chuyển AutoCAD sang không gian in, tạo khung nhìn nổi, gán và 
kích hoạt khung nhìn. 
Sub Ch9_SwitchToPaperSpace() 
’ Gán không gian vẽ hiện tại thành không gian in 
ThisDrawing.ActiveSpace = acPaperSpace 
’ Tạo khung nhìn trong không gian in 
Dim newVport As AcadPViewport 
Dim center(0 To 2) As Double 
center(0) = 3.25 
center(1) = 3 
center(2) = 0 
Set newVport = ThisDrawing.PaperSpace.AddPViewport _ 
(center, 6, 5) 
’ Thay đổi hướng nhìn cho mỗi khung nhìn 
Dim viewDir(0 To 2) As Double 
viewDir(0) = 1 
 240 | Chương 9: Tạo bố cục và in ấn 
viewDir(1) = 1 
viewDir(2) = 1 
newVport.direction = viewDir 
’ Kích hoạt khung nhìn 
newVport.Display True 
’ Chuyển sang không gian mô hình 
ThisDrawing.MSpace = True 
’ Gán newVport thành khung nhìn hiện tại 
ThisDrawing.ActivePViewport = newVport 
’ Zoom Extents trong không gian mô hình 
ZoomExtents 
’ Tăt chế độ sửa đổi không gian mô hình 
ThisDrawing.MSpace = False 
’ ZoomExtents trong không gian in 
ZoomExtents 
End Sub 
Thứ tự các bước thực hiện trên rất quan trọng. Nói chung, mọi thứ phải được thực 
hiện theo trình tự như các dòng lệnh trong AutoCAD, nếu không thực hiện được 
như vậy thì điều không mong muốn sẽ ảnh hưởng đến việc định nghĩa và kích hoạt 
các khung nhìn. 
CHÚ Ý Để gán hay sửa các thông số của cảnh nhìn (hướng nhìn, ) thì phương thức 
Display của đối tượng Viewport cần được gán thành False, và trước khi gán khung 
nhìn hiện tại thì phương thức Display phải được gán trở lại giá trị True. 
Ví dụ tạo 4 khung nhìn nổi 
Ví dụ này lấy theo ví dụ ở phần trên và tiếp tục ví dụ đó bằng cách tạo ra 4 khung 
nhìn nổi và gán các góc nhìn khác nhau. 
Sub Ch9_FourPViewports() 
Dim topVport, frontVport As AcadPViewport 
Dim rightVport, isoVport As AcadPViewport 
Dim pt(0 To 2) As Double 
Dim viewDir(0 To 2) As Double 
ThisDrawing.ActiveSpace = acPaperSpace 
ThisDrawing.MSpace = True 
’ Lấy PViewport đang có và chuyển thành topVport 
pt(0) = 2.5: pt(1) = 5.5: pt(2) = 0 
Set topVport = ThisDrawing.ActivePViewport 
’Không cần thiết lập hướng nhìn cho khung nhìn phía trên 
topVport.center = pt 
topVport.width = 2.5 
topVport.height = 2.5 
topVport.Display True 
ThisDrawing.MSpace = True 
ThisDrawing.ActivePViewport = topVport 
ZoomExtents 
ZoomScaled 0.5, acZoomScaledRelativePSpace 
’Tạo và thiết lập frontVport 
pt(0) = 2.5: pt(1) = 2.5: pt(2) = 0 
Set frontVport = ThisDrawing.PaperSpace.AddPViewport _ 
(pt, 2.5, 2.5) 
viewDir(0) = 0: viewDir(1) = 1: viewDir(2) = 0 
frontVport.direction = viewDir 
frontVport.Display acOn 
ThisDrawing.MSpace = True 
 Phát triển AutoCAD bằng ActiveX và VBA | 241 
ThisDrawing.ActivePViewport = frontVport 
ZoomExtents 
ZoomScaled 0.5, acZoomScaledRelativePSpace 
’Tạo và thiết lập rightVport 
pt(0) = 5.5: pt(1) = 5.5: pt(2) = 0 
Set rightVport = ThisDrawing.PaperSpace.AddPViewport _ 
(pt, 2.5, 2.5) 
viewDir(0) = 1: viewDir(1) = 0: viewDir(2) = 0 
rightVport.direction = viewDir 
rightVport.Display acOn 
ThisDrawing.MSpace = True 
ThisDrawing.ActivePViewport = rightVport 
ZoomExtents 
ZoomScaled 0.5, acZoomScaledRelativePSpace 
’Tạo và thiết lập isoVport 
pt(0) = 5.5: pt(1) = 2.5: pt(2) = 0 
Set isoVport = ThisDrawing.PaperSpace.AddPViewport _ 
(pt, 2.5, 2.5) 
viewDir(0) = 1: viewDir(1) = 1: viewDir(2) = 1 
isoVport.direction = viewDir 
isoVport.Display acOn 
ThisDrawing.MSpace = True 
ThisDrawing.ActivePViewport = isoVport 
ZoomExtents 
ZoomScaled 0.5, acZoomScaledRelativePSpace 
’Kết thúc: thực hiện tái tạo lại toàn bộ các khung nhìn 
ThisDrawing.Regen True 
End Sub 
3.4. Thay đổi cảnh nhìn và nội dung khung nhìn 
Thay đổi cảnh nhìn trong đối tượng Viewport chỉ thực hiện được khi ở trong không 
gian mô hình và đối tượng Viewport đó phải đang được kích hoạt. 
Lưới và biểu tượng UCS trong hai 
khung nhìn 
Lưới trong một khung nhìn và biểu tượng 
UCS trong khung nhìn khác 
Hiệu chỉnh bản vẽ trong khung nhìn nổi : 
1 Trong không gian mô hình, kích hoạt khung nhìn cần hiệu chỉnh bằng cách gán 
thuộc tính ActiveViewport như sau: 
ThisDrawing.ActiveViewport=MyViewportObject 
2 Hiệu chỉnh bản vẽ. 
Đồng thời có thể tạo đối tượng khác như chú thích, kích thước trong không gian in, 
khi đó cần gán thuộc tính ActiveSpace thành FALSE và chuyển sang không gian in 
 242 | Chương 9: Tạo bố cục và in ấn 
bằng cách sử dụng thuộc tính MSpace. Các đối tượng được tạo ra trong không gian 
in sẽ không được nhìn thấy trong không gian mô hình. 
3.5. Đặt tỷ lệ cảnh nhìn theo không gian in 
Trước khi in cần lập tỷ lệ in chính xác cho mỗi phần của bản vẽ. Đặt tỷ lệ tương đối 
trong không gian in sẽ thiết lập nên tỷ lệ hợp lý cho từng nội dung được hiển thị. 
Hình vẽ minh họa dưới đây mô tả một bản vẽ với một số khung nhìn, mỗi khung 
nhìn có tỷ lệ khác nhau và cảnh nhìn khác. Để in bản vẽ này với một tỷ lệ chính xác 
thì mỗi cảnh nhìn cần được đặt tỷ lệ theo khổ giấy, chứ không phải là tỷ lệ so với 
cảnh nhìn trước hay so với toàn bộ mô hình. 
Khi làm việc trong không gian in, hệ số tỷ lệ thể hiện tỷ số giữa kích thước sẽ in và 
kích thước thực của mô hình thể hiện trong khung nhìn. Để nhận được tỷ lệ này, 
chia đơn vị của không gian in cho đơn vị của không gian mô hình. Ví dụ đối với 
bản vẽ tỷ lệ 1:4 thì hệ số phóng đại của một đơn vị trong không gian in tương ứng 
với 4 đơn vị của không gian mô hình. 
Sử dụng phương thức ZoomScaled để co giãn các khung nhìn tương ứng với đơn vị 
giấy in. Phương thức này cần 3 thông số đầu vào: khung nhìn cần đặt tỷ lệ, hệ số tỷ 
lệ, cách thức thay đổi tỷ lệ. Thông số thứ 3 là tuỳ chọn và xác định cách thức thay 
đổi tỷ lệ: 
ƒ Theo giới hạn vẽ 
ƒ Theo cảnh nhìn hiện tại 
ƒ Theo đơn vị giấy in 
Để chỉ ra tỷ lệ tương đối với đơn vị giấy in, nhập vào cho thông số thứ ba là hằng số 
acZoomScaleRelativePSpace. 
Như minh họa trong các hình vẽ dưới đây, nếu nhập tỷ lệ tương đối so với đơn vị 
của không gian in là 2 thì khung nhìn sẽ giãn ra gấp 2 lần kích thước theo đơn vị 
trong không gian in. Và hệ số tỷ lệ tương đối là 0.5 so với đơn vị của không gian in 
sẽ co khung nhìn lại bằng một nửa kích thước theo đơn vị của không gian in. Khi đó 
mô hình sẽ được in ra với kích thước bằng nửa kích thước thực tế. 
 Phát triển AutoCAD bằng ActiveX và VBA | 243 
3.6. Đặt tỷ lệ cho mẫu của kiểu đường trong không gian in 
Trong không gian in, ta có thể đặt tỷ lệ cho mẫu của kiểu đường theo hai cách. Cách 
thứ nhất là dựa vào đơn vị vẽ của không gian tạo ra đối tượng (không gian mô hình 
hoặc không gian in). Còn theo cách thứ hai, tỷ lệ của các kiểu đường đều được đặt 
thống nhất theo đơn vị của không gian in. Ta cũng có thể sử dụng biến hệ thống 
PSLTSCALE nhằm đảm bảo một tỷ lệ chung cho tất cả kiểu đường của các đối tượng 
khác nhau trong các khung nhìn có tỷ lệ phóng đại khác nhau. Điều này cũng có ảnh 
hưởng đến sự hiển thị của các đường thẳng trong không gian 3 chiều. 
Trong hình vẽ dưới đây, mẫu kiểu đường của các đường thẳng trong không gian mô 
hình đều được đặt cùng một tỷ lệ trong không gian in bằng cách sử dụng biến hệ 
thống PSLTSCALE. Điểm cần lưu ý là mặc dù các đối tượng trong hai khung nhìn có 
tỷ lệ phóng đại khác nhau nhưng kiểu đường đều có cùng một tỷ lệ. 
 Phóng theo tỷ lệ 0.5xp 
 Khung nhìn hiện tại Phóng theo tỷ lệ 2xp
psltscale=1, đường nét đứt thay đổi 
tỷ lệ theo không gian in 
psltscale=0, đường nét đứt có tỷ lệ 
theo không gian nơi tạo ra đối tượng 
 244 | Chương 9: Tạo bố cục và in ấn 
Để gán giá trị cho biến hệ thống PSLTSCALE, ta sử dụng phương thức SetVariable
3.7. Ẩn các đường thẳng trong khung nhìn khi in 
Khi bản vẽ chứa các đối tượng mặt 3D, lưới, đối tượng dập nổi, bề mặt, khối đặc, ta 
cần phải ẩn các đường khuất khi in. 
Để ẩn đi các đường khuất trong khung nhìn của không gian in (đối tượng 
PViewport) ta sử dụng thuộc tính RemoveHiddenLines của khung nhìn đó. Thuộc 
tính này nhận giá trị logic. Khi không muốn in đường khuất, ta gán giá trị TRUE và 
ngược lại ta gán giá trị FALSE. 
Để ẩn đi các đường khuất trong khung nhìn của không gian mô hình (đối tượng 
Viewport) khi in ấn, ta sử dụng thuộc tính PlotHidden của đối tượng Layout. Và 
tương tự, thuộc tính này nhận giá trị logic. Khi không muốn in đường khuất, ta gán 
giá trị TRUE và ngược lại ta gán giá trị FALSE. 
4. In bản vẽ 
Bản vẽ có thể được in giống như khi nhìn thấy trong không gian mô hình hoặc có 
thể tiến hành in sau khi đã tạo bố cục trang in trong không gian in. Thông thường, 
việc in ấn trong không gian mô hình thích hợp khi cần xem trước hoặc kiểm tra bản 
vẽ trước khi tạo bố cục trong không gian in. Sau khi đã hoàn thành bản vẽ trong 
không gian mô hình, ta sẽ bắt đầu tạo bố cục để in ấn trong không gian in. 
Việc in ấn liên quan đến hai đối tượng của ActiveX Automation là đối tượng 
Layout và đối tượng Plot. Đối tượng Layout chứa các thông số in cho một Layout 
đã có từ trước, còn đối tượng Plot chứa các phương thức và thuộc tính để khởi tạo 
và điều khiển quá trình in. 
4.1. Thao tác in cơ bản 
Với đối tượng Plot, có thể sử dụng các phương thức và thuộc tính sau: 
PlotToFile in bản vẽ thành tệp 
PlotToDevice in bản vẽ trên máy in 
DisplayPlotPreview xem trước khi in một vùng được chỉ định 
SetLayoutsToPlot lập danh sách các Layout sẽ được in trong lần gọi tiếp theo 
của phương thức PlotToTệp hoặc PlotToDevice 
StartBatchMode khởi tạo in theo nhóm 
QuietErrorMode bật/tắt chế độ báo lỗi ngầm1 đối với các lỗi in 
NumberOfCopies định số bản in của mỗi lần in. 
1 Báo lỗi ngầm (QuietErrorMode): là chế độ mà các lỗi xuất hiện trong quá trình in sẽ được ghi 
vào một tệp riêng do đó không ngắt quá trình in bằng các thông báo. Chế độ này rất thích hợp với 
những ứng dụng không được ngắt khi in, ví dụ khi tiến hành in theo nhóm. 
 Phát triển AutoCAD bằng ActiveX và VBA | 245 
BatchPlotProgress nhận trạng thái hiện tại của chế độ in theo nhóm hoặc ngắt 
chế độ in theo nhóm 
Phương thức SetLayoutsToPlot phải được gọi trước khi gọi phương thức 
PlotToFile hoặc PlotToDevice, nếu phương thức này không được gọi hoặc được 
gọi nhưng thông số đầu vào là giá trị NULL thì Layout hiện hành sẽ được in. 
Thuộc tính NumberOfCopies chỉ ra số lượng bản in. Nếu thuộc tính này không được 
khởi tạo trước mỗi lần gọi phương thức PlotToDevice thì giá trị được xác định gần 
nhất của thuộc tính này sẽ được sử dụng. 
Chế độ in thành nhóm được cung cấp để hỗ trợ việc áp dụng tiện ích BatchPlot. 
Trước khi khởi tạo chế độ này cần gán QuietErrorMode = TRUE để quá trình in 
không bị ngắt giữa chừng. Tiếp đó sử dụng phương thức StartBatchMode để khởi 
tạo chế độ in theo nhóm. Dùng thuộc tính BatchPlotProgress để kiểm tra quá 
trình in hoặc để ngắt chế độ này. 
4.2. In trong không gian mô hình 
Khi thực hiện in một bản vẽ lớn theo các hệ đơn vị khác nhau trong không gian mô 
hình, nếu không xác định các thông số cụ thể cho việc in ấn thì bản vẽ sẽ được in ra 
theo các giá trị mặc định như: phần bản vẽ in ra là toàn bộ những gì được biểu diễn, 
máy in mặc định của hệ thống, tỷ lệ co giãn vừa với khổ giấy, góc quay bằng 0, 
điểm mốc của bản vẽ là (0,0). Các thông số in nêu trên có thể sửa lại bằng cách thay 
đổi thuộc tính của đối tượng Layout liên kết với không gian mô hình. 
In phần mở rộng của không gian mô hình hiện hành 
Ví dụ dưới đây, trước hết kiểm tra để đảm bảo không gian mô hình là không gian 
đang làm việc, sau đó nó sẽ tạo một số thông số in, cuối cùng bản in sẽ được gửi 
đến máy in nhờ phương thức PlotToDevice 
Sub Ch9_PrintModelSpace() 
’ Kiểm tra không gian làm việc là không gian mô hình 
If ThisDrawing.ActiveSpace = acPaperSpace Then 
ThisDrawing.MSpace = True 
ThisDrawing.ActiveSpace = acModelSpace 
End If 
’ Xác định phạm vi và tỷ số co giãn cho vùng in 
ThisDrawing.ModelSpace.Layout.PlotType = acExtents 
ThisDrawing.ModelSpace.Layout. _ 
StandardScale = acScaleToFit 
’ Gán số lượng bản in là 1 
ThisDrawing.Plot.NumberOfCopies = 1 
’ Bắt đầu in 
ThisDrawing.Plot.PlotToDevice 
End Sub 
Tên thiết bị có thể được chỉ ra bằng cách sử dụng thuộc tính ConfigName, hoặc 
bằng cách dùng phương thức PlotToDevice có tham số chỉ đến tệp PC3 (tệp cấu 
hình thiết bị in). 
 246 | Chương 9: Tạo bố cục và in ấn 
4.3. In trong không gian in 
Có thể in một hay nhiều Layout trong không gian in cùng một lúc, có thể in Layout 
hiện hành như đã trình bày trong phần “In trong không gian mô hình” trang 245, 
hoặc in Layout được chỉ định theo tên của nó. 
In 2 bản vẽ trong không gian in 
Ví dụ dưới đây sẽ chuyển hai Layout trong không gian in “Layout1” và “Layout2” 
tới máy in. Cần chú ý là hai Layout này phải tồn tại trong bản vẽ khi dùng đoạn mã 
này. Ví dụ này đầu tiên sẽ tạo ra một mảng kiểu chuỗi (string) chứa tên của các 
Layout cần in, sau đó sử dụng mảng này để làm đầu vào đối với phương thức 
SetLayoutsToPlot, tiếp theo sẽ gán số lượng bản in và cuối cùng gửi các bản in đến 
máy in mặc định. 
Sub Ch9_PrintPaperSpace() 
’ Tạo các Layout để in trong không gian in 
Dim strLayouts(0 To 1) As String 
Dim varLayouts As Variant 
strLayouts(0) = "Layout1" 
strLayouts(1) = "Layout2" 
varLayouts = strLayouts 
ThisDrawing.Plot.SetLayoutsToPlot varLayouts 
’ Gán số lượng bản in là 1 
ThisDrawing.Plot.NumberOfCopies = 1 
’ Bắt đầu in 
ThisDrawing.Plot.PlotToDevice 
End Sub 

File đính kèm:

  • pdfphat_trien_autocad_11.pdf