(+84) 463.28.7979

Thêm Structure vào Diagram trong Visio 2010 sử dụng List và Container


Trong ứng dụng thiết kế mô hình Microsoft Visio 2010, 1 trong những tính năng được sử dụng nhiều nhất là gán thêm cấu trúc – Structure vào biểu đồ – Diagram sử dụng container, list và callout. Trong bài viết dưới đây, chúng tôi sẽ đi sâu và tìm hiểu kỹ về những khái niệm trên cũng như cách sử dụng sao cho phù hợp.

Trong bài thử nghiệm dưới đây, chúng tôi sẽ tập trung vào việc tạo sơ đồ chỗ ngồi dành cho khán giả trong nhà hát. Yếu tố được ưu tiên hàng đầu ở đây là đáp ứng được sự tiện lợi, linh hoạt khi di chuyển, tăng hoặc giảm số ghế theo yêu cầu mà không được ảnh hưởng đến các thành phần khác. Hơn nữa, khi tiến hành di chuyển ghế ngồi và số lượng hàng, đồ thị trên Visio cũng sự tự động tính toán và sắp xếp lại trật tự sau cho phù hợp nhất có thể.

Bước 1: sử dụng Container và List:

Điểm mấu chốt trong phương án giải quyết của chúng ta là danh sách các container đặc biệt sẽ duy trì toàn bộ thành phần liên quan theo trình tự cụ thể. Thuộc tính này cũng là phần cơ bản hoàn hảo và thích hợp nhất để khởi tạo và quản lý số lượng hàng ghế và chỗ ngồi trong khuôn viên nhà hát. Do đó, chúng ta sẽ phải tạo 2 danh sách tại bước này:

- Danh sách đầu tiên biểu trưng cho thành phần số lượng chỗ ngồi, và trong đó có chứa nhiều hàng ghế

- Danh sách thứ 2 chính là hàng ghế, và trong đó có chứa nhiều chỗ ngồi

Nhưng thật không may rằng, quá trình này không thực sự đơn giản như trình bày ở trên, vì trong mỗi danh sách của Visio 2010 thì không được phép chứa 1 danh sách bất kỳ nào khác, mà chỉ được phép chứa container shape. Do vậy, để giải quyết phương án về chỗ ngồi, chúng ta sẽ cần tới 1 quyết định khác.

Và cách giải quyết khả thi nhất tại đây là sử dụng 1 dạng của container. Trong khi list không thể chứa bất kỳ list nào khác, thì container lại khác hoàn toàn, đối tượng này có thể chứa đựng bất kỳ thành phần nào. Do vậy theo trình tự, chúng ta sẽ tiến hành “đóng gói” mỗi danh sách về chỗ ngồi thành 1 container. Sau đó, các bạn sẽ tiếp tục tạo ra nhiều bản copy của phần container này trong danh sách. Còn trong thực tế, chúng ta sẽ đặt danh sách bên trong container của danh sách khác.


Mô hình tổng quát

Và hình vẽ dưới đây sẽ chỉ ra các khối đối tượng của Visio:

- Hình bên trái là danh sách – List được đặt tên là Orchestra Left

- Phần ở giữa là Row bao gồm 1 danh sách (phần màu trắng) bên trong container (phần màu hồng)

- Còn thành phần bên phải là đơn vị tương ứng với chỗ ngồi

Bước 2: sử dụng Shape Data:

Shape data ở đây là 1 trong những thành phần ưu tiên và quan trọng nhất để hoàn tất quá trình tự động tính toán chỗ ngồi. Các trường dữ liệu của Shape data trên danh sách cho phép người dùng thiết lập các số lượng và tùy chọn sắp xếp theo thứ tự bảng chữ cái cho từng khu vực khác nhau trong nhà hát. Bên dưới đây là biểu đồ shape data của chúng ta:

- Danh sách có chứa các hàng ghế tương ứng với ký tự chữ cái (một số nơi không dùng ký tự I để tránh nhầm lẫn)

- Từng ký tự này sẽ được gán với hàng ghế đầu tiên

- Các hàng ghế này sẽ được đánh số theo thứ tự từ phải sang trái hoặc ngược lại

- Tương ứng với đó là số sẽ được gắn vào chỗ ngồi đầu tiên trong hàng

- Tùy theo yêu cầu thì số ghế sẽ được tăng thêm 1 hoặc 2 đơn vị theo trình tự

Bước 3: áp dụng các công thức tính toán ShapeSheet:

Chúng ta quay lại với hình biểu đồ đầu tiên của bài viết, tất cả có 4 kiểu shape khác nhau, và mỗi thành phần trong đó lại có chứa vài công thức khác nhau. Hầu hết các công thức này đều có khả năng đọc giá trị từ trường dữ liệu data shape trong danh sách các thành phần đi kèm, sau đó sẽ chuyển tới các shape được chứa đựng bên trong. Trong một vài trường hợp đặc biệt, thì các công thức như vậy lại đảm nhận nhiệm vụ chuyển đổi định dạng đơn vị sao cho phù hợp với những trường dữ liệu tương ứng. Ví dụ: hàng container với công thức được dùng để chuyển đổi số thứ tự trong dánh sách thành hàng, cụ thể là chuyển từ 3 thành C…

2 trong số 4 shape – hàng container và ghế ngồi, chứa công thức để tính toán vị trí bên trong danh sách. Còn phần shape của chỗ ngồi với công thức tính toán, xác định rằng chỗ ngồi đó hiện đang ở trong hàng hoặc trong thành phần nào khác. Nếu cả 2 điều kiện trên là đúng thì shape này sẽ hiển thị số ghế và ký tự hàng như hình dưới, còn nếu cả 2 điều kiện đều sai thì phần shape này sẽ không hiển thị thông tin nào cả:

Biểu đồ của chỗ ngồi:

Hình mô tả bên dưới mô tả việc sử dụng cấu trúc kết hợp list – container – list – seat (chỗ ngồi) trong mô hình nhà hát bất kỳ. Ví dụ trên đã kết hợp được đầy đủ ưu điểm của việc dùng shape data được bao gồm trong mỗi thành phần có liên quan, cụ thể như sau:

- Các chỗ ngồi trong khu vực Orchestra Center được đánh số theo thứ tự từ phải sang trái, bắt đầu bằng 101

- Khu vực Orchestra Left chứa các hàng ghế chẵn được đánh số bắt đầu 2 theo thứ tự từ phải sang trái

- Khu vực Orchestra Right chứa các hàng ghế lẻ bắt đầu từ 1 theo thứ tự từ trái sang phải

- Trong tổng cộng 3 dãy ghế như đã miêu tả, hàng đầu tiên sẽ bắt đầu với ký tự A

- Hàng đầu tiên gần Balcony là AA và các chỗ ngồi được đánh dấu từ phải qua trái bắt đầu bằng 201:

Phần “thú vị” nhất của bài thử nghiệm này là chúng ta đã đạt được mục đích chính: tất cả các dãy ghế đã được đánh dấu thứ tự và sắp xếp tự động mà không cần phải sử dụng đến bất kỳ kỹ năng lập trình nào. Nếu bạn muốn thêm hoặc xóa bớt hàng ghế hoặc chỗ ngồi bất kỳ, toàn bộ thành phần có liên quan xung quanh sẽ tự động thiết lập lại trật tự. Với hình vẽ sơ đồ bên dưới (hình bên trái), người sử dụng đang tiến hành chèn thêm 1 dãy vào phần Orchestra Left giữa 2 hàng đã có sẵn. Kết quả là hình ảnh hiển thị bên phải:

Để tham khảo kỹ hơn, các bạn có thể sử dụng file Visio mẫu tại đường dẫn sau:

- File *.vsd: http://www.mediafire.com/?epld95jflbl4boy

- File *.rar: http://www.mediafire.com/?iw7wcn6xswkp7id

Chúc các bạn thành công!

Theo Experts Exchange

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>