Chủ Nhật, 30 tháng 5, 2010

Ghi chép tào lao.

-Những ghi chép của Duy cập nhật hàng ngày (thỉnh thoảng) tại đây.
-Nếu bạn đọc thấy có gì không thích hoặc có ý kiến khác cũng mong vui lòng không bình luận.
-Nếu bạn là người quen khi gặp mình vui lòng không đề cập đến những nội dung đã đọc trên này.



















6 - 7 - 2010

Làm thèn tư vấn thiết kế bây giờ nhục như con chó. Mình bán sức lao động và chất xám mà nhiều lúc không khác gì thèn ăn mày là mấy. Nhục.


27 - 7 - 2010

Ngủ dậy thì thấy đầu hơi ấm, lại cảm rồi! Trưa và tối en cháo lại làm 1 mớ thuốc (mua của mấy lang băm ngoài đường) hi vong mai lai cày cấy tốt kẻo lại thất thu. À mai lại co quả đám cưới. Ớn.


30 - 5 - 2010

.......Cả ngày chủ nhật cúp điện. Ông bạn Quảng Ngãi ra hú đi biển ổng dẩn theo vợ còn mình ............ Tủi thân gì đâu! Đi cả ngày en uống linh tinh mệt.


31 - 5 - 2010

.......Bố của thủ quỹ mới mất hôm qua. Nay lại cuối tháng tới kỳ lương kiểu này chắc là chờ mỏi cổ đây ...................... Trưa nay còn nhiệm vụ sửa cái máy bơm, trời thì nắng điên. Bể khổ vô biên!

Thứ Hai, 24 tháng 5, 2010

Ánh xạ giá trị đối tượng text, nguồn đổi giá trị, đích bị sửa (Sưu tầm)


Bạn muốn một số đối tượng text link giá trị với một đối tượng text nào đó. Nhưng bạn không muốn biến nó thành block, làm thế nào đây?

Hãy làm như sau:
- Tại dòng command, dùng lệnh FIELD.
- Tại bảng lệnh Field, phần Field names chọn Object, tại phần Object type: bạn sẽ thấy một nút có biểu tượng con chuột, bạn nhấn vào biểu tượng này. Màn hình CAD sẽ được hiện ra để bạn chọn đối tượng text nguồn - là đối tượng mà bạn muốn giá trị của nó là gốc và sẽ được tự động link vào các text khác. Chọn xong đối tượng text nguồn, bảng lệnh Field sẽ xuất hiện.
- Tại bảng lệnh Field vừa mới xuất hiện trở lại, trong phần Property hãy chọn Contents. Lúc này, bạn liếc vào phần Preview, sẽ thấy xuất hiện giá trị của text vừa chọn. Liếc xuống Field expression bạn sẽ thấy cấu cấu trúc dạng: %<\AcObjProp Object(%<\_ObjId xxxxxxxxxx>%).Backward \f "%bl2">% trong đó xxxxxxxxxx sẽ là mã ID của đối tượng text vừa chọn. Hãy copy dòng biểu thức trong Field expression - bằng cách tô xanh dòng chữ này rồi phải chuột chọn copy.
- Nhấn Cancel để thoát khỏi bảng lệnh Field.
- Trở lại màn hình CAD, bạn tạo một đối tượng TEXT bằng lệnh DTEXT rồi paste giá trị vừa copy vào đối tượng TEXT. Hoặc bạn cũng có thể edit một đối tượng đã có để paste giá biểu thức rồi vào. Nói một cách tổng quát, AutoCAD trong lúc REGEN sẽ tìm các text có biểu thức %<\AcObjProp Object(%<\_ObjId xxxxxxxxxx>%) và thay bằng giá trị của đối tượng text ánh xạ.

-Khi hoàn thành cái text đích nằm trên cái nền mờ mờ ảo ảo không ưng lắm. Bạn ưng nó giống mấy cái text khác thì:
Bạn đánh lệnh FIELDDISPLAY và nhập giá trị 0

Thứ Ba, 18 tháng 5, 2010

Hướng dẩn viết lisp bài 29:

Bạn nên theo dỏi theo tên bài viết tăng từ nhỏ tới lớn thì mới đúng trình tự!

Một chức năng hay của lisp là có thể thao tác lặp lại một vài thao tác trên từng đối tượng của tập hợp chọn.
Ứng dụng vòng lặp While.
Ví dụ bạn có tập hợp tapdoituong gồm các text hình thành từ
(setq tapdoituong (ssget '((0 . "text"))))
Bây giờ bạn muốn vẽ 1 hình tròn tâm tại điểm chèn text bán kính 100.
Việc vẽ 1 hình tròn bằng lisp khi biết tâm và bán kính bằng lisp thì đơn giản rồi.
(command "circle" diemve 100)
Vấn đề là làm lần lượt cho từng text trong cả tập hợp chọn.
Dùng hàm sslength để lấy ra số lượng đối tượng trong tập hợp chọn
(setq sodoituong (sslength tapdoituong))
Hàm ssname lấy ra đối tượng thứ thutu trong tập hợp tapdoituong
(setq doituong (ssname tapdoituong thutu))
Đầu tiên cho thutu = 0 sau đó áp dụng vòng lặp While với điều kiện thutu< sodoituong, cuối vòng lặp cho thutu = thutu+1 đến khi thutu= sodoituong thì vòng lặp sẽ dừng lại.

Đoạn lisp như sau:
(defun c:vht ()
(command "undo" "be")
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)

(Princ "\nChon cac text :")
(setq tapdoituong (ssget '((0 . "text"))))
(setq thutu 0)
(setq sodoituong (sslength tapdoituong))

(while (< thutu sodoituong)
(setq doituong (ssname tapdoituong thutu))
(setq laynoidung (entget doituong))
(setq diemve (cdr (assoc 10 laynoidung)))
(command "circle" diemve 100)
(setq thutu (+ thutu 1))
)
(command "undo" "end")
(setvar "osmode" luubatdiem)
(Princ)
)

Bạn chạy thử lisp này chọn các text nó sẽ vẽ các hình tròn vào điểm chèn của từng text.
Đoạn sau giúp lấy ra điểm chèn của text:
(setq laynoidung (entget doituong))
(setq diemve (cdr (assoc 10 laynoidung)))
Bài sau mình sẽ nói về cách lấy các thông tin về đối tượng cad bằng lisp, có bao hàm cả hai dòng trên. Bài này bạn chấp nhận nó đã nhé.
*Để thực hành mình ra 1 đề bài bạn viết thử nhé.
Viết lisp hỏi chọn các text, hỏi chọn điểm canh lề, move các text được chọn sao cho điểm canh lề của text thẳng hàng theo phương thẳng đứng.
*Gợi ý:
-Cơ bản đoạn lisp như trên.
-Sau khi chọn đối tượng thêm phần hỏi chọn điểm canh lề. (diemchuan)
-Sau khi lấy được điểm canh lề text (trường hợp này là diemve). Bỏ dòng vẽ hình tròn mà thay bằng dòng move.
-Move từng text từ điểm canh lề (diemve) đến điểm mới. Điểm mới xác định bằng cách lấy giá trị x của diemchuan và y của diemve.
*Sẽ có đáp án trong bài tới.

Hướng dẩn viết lisp bài 28:

Bạn nên theo dỏi theo tên bài viết tăng từ nhỏ tới lớn thì mới đúng trình tự!

*Trong khi viết lisp đôi khi có các dữ liệu nhập vào lặp lại cứ mỗi lần lisp hỏi lại phải nhập vào. Cách hay hơn là dữ liệu nào nhập vào rồi thì ghi nhớ lại cho lần sau nếu cần giá trị khác thì nhập vào còn nếu vẫn dùng giá trị cũ thì chỉ cần enter là có giá trị cũ để dùng.
-Sau đây là đoạn lisp giúp cho bạn có thêm 2 hàm có tác dụng lưu giữ giá trị nhập vào. Mình tìm thấy nó trong 1 đĩa cd ko biết rỏ tác giả và cũng không tìm hiểu cách làm việc của nó cứ biết tác dụng và ứng dụng vào công việc thôi. Bạn cũng vậy nhé cứ lưu đoạn này lại sau đó dùng theo cách mình hướng dẩn.

;---------------------------------------
(defun nstr (stri def)
(princ stri)
(princ "<")
(princ " ")
(princ def)
(princ ">")
(princ ":")
(princ " ")
);defun nstr
;--------------------
(defun nstr1 (stri)
(princ stri)
(princ "<")
(princ "Nhap vao")
(princ ">")
(princ ":")
(princ " ")
);defun nstr1
;---------------------
(defun nint (prompt def / temp)
(if def
(setq temp (getint (nstr prompt def)))
(setq def (getint (nstr1 prompt)))
);if def
(if temp
(setq def temp)
def
);if temp
);defun nint
;---------------------
(defun dnint (prompt def / temp)
(if def
(setq temp (getreal (nstr prompt def)))
(setq def (getreal (nstr1 prompt)))
);if def
(if temp
(setq def temp)
def
);if temp
);defun nint
;--------------------
(defun ndist (po prompt def / temp) ;nhan kh/cach va luu gia tri mac dinh
(if def
(setq temp (getdist po (nstr prompt def)))
(setq def (getdist po (nstr1 prompt)))
)if def
(if temp
(setq def temp)
def
);if temp
);defun ndist
;-----------------------------------


Cách dùng:
-Hàm ndint: lưu giữ giá trị số. Giá trị số này được nhập từ bàn phím.


(setq giatri (dnint "\nTi le chinh "giatri1))
(setq giatri1 giatri)

Ví dụ đoạn lisp scale với tỉ lệ scale được lưu lại.

(Defun c:sclt (a)
(command "undo" "be")
(Prompt "\nChon doi tuong muon chinh ti le")
(setq dtthu (ssget))
(setq a (getpoint "\nChon tam phong: "))
(setq tilechinh (dnint "\nTi le chinh "tiledchinh1))
(setq tiledchinh1 tilechinh)
(command "scale" dtthu "" (list (car a)(cadr a)) tilechinh)
(command "undo" "end")
(Prin I)
)

*Cách dùng:
-Hàm ndist: lưu giữ giá trị khoảng cách. Giá trị này được chuyễn thành số, giá trị này có thể được nhập từ bàn phím.

(setq giatri (ndist a "\nDo cao khoi muon ve "giatri1))
(setq giatri1 giatri)
Trong đó a là điểm đã được xác định.
Ví dụ đoạn lisp vẽ box với cao độ khối được lưu lại.

(Defun c:khoi (a)
(command "undo" "be")
(setq a (getpoint "\nDiem thu nhat:"))
(setq b (getcorner a"\nDiem thu hai: "))
(setq dckhoive (ndist a "\nDo cao khoi muon ve "cckhoive1))
(setq cckhoive1 dckhoive)
(command "box" (list (car a) (cadr a) (caddr a)) (list (car b) (cadr b) (caddr b)) dckhoive)
(command "undo" "end")
(Prin I)
)


Bạn lưu ý đoạn định nghĩa hai hàm này chỉ cần load lên 1 lần trong 1 phiên làm việc thì các lisp có dùng 2 hàm này điều chạy được cả nhé.

Thứ Hai, 17 tháng 5, 2010

Thư viện các file trường học (sưu tầm)



Thứ Ba, 11 tháng 5, 2010

Buông xuôi!


Nắng chiều soi xuyên những ngón tay gầy
Lá vàng rơi xao xác dưới ngót chân
Cứ muội mê hoang mang tới đời mình
Chợt bước xa xôi về cõi mung lung nào có ai biết
Chốn trần gian ta lê bước dài qua bao lợi danh vẫy gọi
Cứ vờ xem ta như lá khô rơi rơi nhẹ theo cơn gió
Xoáy lòng ta theo dãy cát vàng khi đêm trời mưa đổ xuống
Để thấy ta như chợt đã hư vô tình như trong cơn mơ

Muộn màng tay trắng ôm bao ngậm ngùi đây tay ta quá mỏi mệt
Chỉ cần ta yên một phút thôi cho đời sẽ qua
Niềm khát khao bây giờ mãi chỉ còn lại một nắm tro tàn bay đi mất
Dừng lại suy nghĩ cho cuộc đời mình bao năm bon chen làm gì
Để rồi xua tay ngọn gió bay ngang vài nhánh hoa
Một chút hương thơm cỏ dại một tiếng than van mệt nhoài
Buông xuôi