Thứ Sáu, 17 tháng 7, 2009

Lisp dời điểm chèn block

Bạn có bản vẽ mà trong đó có cái block đã chèn nhiều vị trí, rotate, scale, mirror chuyễn layer nói chung là lung tung hết cả và đến 1 lúc bạn nhận ra cái điểm chèn của nó lúc tạo ra lại không nằm đúng chổ mình ưng tí nào bạn muốn chuyển cái điểm chèn này vào ngay tâm block để tiện chỉnh sửa làm sao đây :
-Dể òm mà dùng lệnh BEDIT định lại cái basepoint là xong ................ đúng là cái điểm chèn nằm chổ ưng ý rồi nhưng mấy cái block thì nhảy loạn xạ không còn mằm chổ cũ nửa
-Bạn muốn là dời điểm chèn nhưng mấy cái block đứng im kìa ==> đây dùng lisp vậy.
-Tên lệnh: DBL.-Chọn Block cần chỉnh.-Chọn điểm chèn mới.=> Lisp báo ra tên block và số lượng của block vừa chỉnh (tất nhiên là đã làm công việc chỉnh xong rồi đúng cả với trường hợp block bị mirror, tỉ lệ x và y khác nhau, góc quay )
-Ưu điểm không thay đổi tên block sau khi hoàn tất công việc và không có block rác.
-Nhược điểm: nếu block lựa chọn còn nằm trong 1 block khác nửa thì quá trình thay đổi sẽ không hoàn tất dẩn đến việc song song tồn tại block cũ và block trung gian lúc này các block đã dời điểm chèn sẽ mang tên block trung gian bao gồm tên cũ + taothem.




Bạn copy nội dung và tạo file lisp hay tải file về cũng được!


(defun c:dbl ()
(command "undo" "be")

(setq doituong1 (entsel "\nChon Block muon chinh diem chen"))
(while
(or
(null doituong1)
(/= "INSERT" (cdr (assoc 0 (entget (car doituong1)))))
)
(princ "\nDoi tuong khong phai la Block! Chon lai")
(setq doituong1 (entsel "\nChon Block muon chinh diem chen"))
)

(command "ucs" "ob" doituong1)
(setq DIEMCHENMOI (getpoint "\n Chon diem chen moi cho Block nay :"))
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)
(command "layer" "s" 0 "")
(setq doituong (car doituong1))
(setq doituong (entget doituong))
(setq TENKHOI (cdr (assoc 2 doituong)))
(setq TENKHOIMOI (strcat TENKHOI "TAOTHEM"))
(setq TYLEX (cdr (assoc 41 doituong)))
(setq TYLEY (cdr (assoc 42 doituong)))
(setq DIEMTINH (list (/ (car DIEMCHENMOI) TYLEX) (/ (cadr DIEMCHENMOI) TYLEY)))
(setq XDIEMTINH (car DIEMTINH))
(setq YDIEMTINH (cadr DIEMTINH))
(setq DAICHUAS (distance (list 0 0) DIEMTINH))
(setq GOCCHUAS (angle (list 0 0) DIEMTINH))
(setq DIEMCHENTUONGDOI (polar (LIST 0 0) GOCCHUAS DAICHUAS))
(command ".INSERT" TENKHOI (LIST 0 0) 1 1 0)
(Command "EXPLODE" "last" "")
(Command "Block" TENKHOIMOI DIEMCHENTUONGDOI "Previous" "")
(command "ucs" "p")


(setq xx (ssget "X" (list( cons 0 "INSERT") (cons 2 TENKHOI))))

(setq L 0)
(setq M (sslength XX))
(while (< L M)
(setq DTs (ssname XX L))
(setq DTMs (entget DTs))
(command "ucs" "ob" DTs)
(setq TYLEX1 (cdr (assoc 41 DTMs)))
(setq TYLEY1 (cdr (assoc 42 DTMs)))
(setq DIEMDOI (list (* XDIEMTINH TYLEX1) (* YDIEMTINH TYLEY1)))

(setq DTMs (subst (cons 2 TENKHOIMOI) (assoc 2 DTMs) DTMs))
(entmod DTMs)
(setq DIEMDOI (trans DIEMDOI 1 0))
(setq DTMs (subst (cons 10 DIEMDOI) (assoc 10 DTMs) DTMs))
(entmod DTMs)
;(command "move" DTs "" (list 0 0) DIEMDOI)
(command "ucs" "p")
(setq L (1+ L))
)


(setvar "osmode" luubatdiem)
(Command "Purge" "B" TENKHOI "Y" "Y")
(command "rename" "b" TENKHOIMOI TENKHOI)
(command "undo" "end")

(princ (strcat "\nVua chinh tam cua block <" TENKHOI "> :" (itoa L) " doi tuong"))
(setvar "MODEMACRO" "**CHUC BAN LAM VIEC HIEU QUA** PHAM QUOC DUY - BINH SON - QUANG NGAI")
(Princ))

Thứ Ba, 14 tháng 7, 2009

Chỉnh màn hình khởi động cad2007 khi bị lổi 3d:

Trong khi cài cad ở bước gần hoàn tất có mục hỏi giao diện mặc định khi khởi động. Cad mặc định để ở giao diện 3d Modeling nếu bạn không để ý và ok lun thì khi khởi động cad lên nó ra cái màn hình thấy ghét như này:

Mặc dù bạn đã chọn lại giao diện là AutoCAD Classic nhưng hể khởi động lại cad là lại ra cái màn hình thấy ghét dù nó vẫn ở AutoCAD Classic. Có bấy nhiêu mà cài lại thì mắc công quá. Bạn làm như sau:
Vào menu: Tools => Options... Chọn thẻ Files, đến mục Template Settings nhấn vào mủi tên màu trắng cho nó xổ xuống, Chọn mục Default Template File Name for QNEW cho nó xổ xuống như trong hình: Nhấn chọn dòng này nhấn Remove.
Khời động cad là xong rồi ế bạn.




Linetype: tôn và taluy

Mình giới thiệu 9 kiểu đường gồm:
-6 kiểu đường taluy.
-3 kiểu đường mái tôn: tôn lạnh sóng vuông và tôn kẽm sóng tròn.

Khi tạo các kiểu đường có hình dáng đặc biệt tí thì thường phải tạo các shape lưu giữ trong các file *.shp và *.shx lúc này nếu máy nào không có các file này thì các đường line sẽ hiển thị hkông đầy đủ (mất đi các shape) việc này gây ít nhiều phiền phức cho người dùng.
Mình cố gắng dùng shape TRACK1 là shape có sẳn trong cad để bất cứ máy nào có cad đều dùng được.
Các bạn chỉ cần load file cad này về insert vào bản vẽ (mình lưu ở cad R14) và dùng lệnh MA bôi qua thôi.





http://www.4shared.com/file/106507133/deb2402d/talyuvaton.html

Thứ Hai, 13 tháng 7, 2009

Hướng dẫn viết lisp bài 7

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ự!
**Bây giờ thêm 1 dòng giúp bạn quyết định số lượng sẽ Array.
-Để nhập 1 chuổi vào lisp dùng dòng sau:
(setq sl (getstring 5"\nSo luong:"))
-Bạn lưu ý con số 5 này nhé, nếu không có nó thì khi nhập chuổi nút Space sẽ tương đương với enter nghĩa là kết thúc quá trình nhập chuổi, còn có nó thì Space là khoảng trắng.

Tùy theo nhu cầu chuổi cần nhập mà quyết định có số 5 này hay không.
-Để thấy lisp làm việc từng bước mình thêm dòng hỏi số lượng này vào sau dòng vẽ line và circle.
Sau khi bạn nhập số lượng vào thì thực hiện lệnh array như vậy thú vị hơn là chọn 2 điểm và hỏi số lượng hết rồi mới vẽ 1 lần xong lun.
(defun c:doanthang ()
(setq a (getpoint "\nChon diem: "))
(setq b (getpoint a"\nChon diem: "))
(command ".line" a b "")
(setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
(command ".circle" c a)
(command ".circle" a b)
(setq sl (getstring "\nSo luong:"))
(command ".array" "last" "" "p" c sl "" "")
(princ))

Chạy thử sẽ thấy sau khi chọn 2 điểm trên màn hình lisp sẽ vẻ ra:
-Đường thẳng từ a đến b.
-Đường tròn tâm c đường kính ab.
-Đường tròn tâm a bán kính ab. Lúc này lisp dừng lại và hỏi số lượng bạn nhập vào lisp tiếp tục array cái hình tròn này ra theo số mà bạn nhập vào và kết thúc lệnh.

Hướng dẫn viết lisp bài 6

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ự!
Bây giờ bỏ bớt cái hình tròn tâm b đường kính ab đi.
Áp dụng lệnh Array với cái hình tròn tâm a đường kính ab.
Cho nó Array thành 8 đối tượng quanh điểm c nhé.
-Cú pháp lệnh Array như sau:
+Vì trong lệnh Array có hỏi chọn đối tượng nhưng mình muốn nó chọn tự động cái hình tròn thì làm sao? Giải pháp đưa ra là lựa chọn last nghĩa là chọn đối tượng mới tạo ra muốn vậy cái đường tròn này mình đừng vẽ vội mà chỉ vẽ nó trước khi thực hiện lệnh Array thôi.
(command ".circle" a b)
(command ".array" "last" "" "p" c "8" "" "")
+Giải thích dòng trên: gọi lệnh Array, gỏ last để chọn đối tượng vừa tạo trước đó, enter kết thúc chọn đối tượng, gõ p để chọn kiểu Array là Polar, chọn điểm tâm quay là c, gỏ 8 để xác định số lượng tạo ra là 8, enter hai lần để kết thúc lệnh Array.

(defun c:doanthang ()
(setq a (getpoint "\nChon diem: "))
(setq b (getpoint a"\nChon diem: "))
(command ".line" a b "")
(setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
(command ".circle" c a)
(command ".circle" a b)
(command ".array" "last" "" "p" c "8" "" "")
(princ))


*Chạy thử đoạn trên. Khớ khớ đẹp chưa có nguyên cái bông rồi nhưng sao nhiều cánh quá á? Yên tâm sẽ có cách cho bạn quyết định số lượng cánh của cái bông này…….



Hướng dẫn viết lisp bài 5

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ự!
Đoạn lisp trên mình viết rất cơ bản làm từng bước 1 để bạn làm quen, thực chất bạn có thể làm gọn lại bằng cách gộp các đoạn lại với nhau.

-Cụ thể đoạn
(setq xa (car a))
(setq xb (car b))
(setq xab (+ xa xb))
-Có thể thay bằng
(setq xab (+ (car a) (car b)))
-Tương tự sau khi gộp bước 1 từ đoạn:
(setq xa (car a))
(setq ya (cadr a))
(setq xb (car b))
(setq yb (cadr b))
(setq xab (+ xa xb))
(setq yab (+ ya yb))
(setq xc (/ xab 2))
(setq yc (/ yab 2))
(setq c (list xc yc))
-Ta có
(setq xab (+ (car a) (car b)))
(setq yab (+ (cadr a) (cadr b)))
(setq c (list (/ xab 2) (/ yab 2)))
-Tương tự sau khi gộp bước 2 ta có
(setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
*Đoạn lisp bây giờ còn như sau:
(defun c:doanthang ()

(setq a (getpoint "\nChon diem: "))
(setq b (getpoint a"\nChon diem: "))
(command ".line" a b "")(command ".circle" a b)
(command ".circle" b a)
(setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
(command ".circle" c a)
(princ))
*Chạy thử kết quả giống y như trước nhưng ngắn được 1 số dòng. Nếu mới bắt đầu viết gộp quá rối thì bạn cứ viết từng bước như cũ đến khi nào rành rành thì bắt đầu gộp lại.
*Mới có pick 2 điểm mà đã đủ thứ chuyện vậy đó. Tất nhiên cái hình mà lisp này vẽ ra giống y như cái mạng nhện vậy chẳng để làm gì cả nhưng khi đã nắm vấn đề thì bạn muốn làm gì mà chả được.

Hướng dẫn viết lisp bài 4

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ự!
Từ 2 điểm a và b lisp sẽ làm được rất nhiều việc.

-Giới thiệu 1 số hàm đối với 1 điểm:

(setq xa (car a)) tọa độ x của điểm a
(setq ya (cadr a)) tọa độ y của điểm a
(setq za (caddr a)) tọa độ z của điểm a
-Giới thiệu 1 số hàm đối với 2 điểm:
(setq daiab (distance a b)) khoảng cách từ a đến b
(setq gocab (angle a b)) góc mà đoạn ab tạo với trục x
-Giới thiệu hàm tính toán:Cú pháp các hàm toán học hơi ngược với cách thông thường:(dấu sốđầu sốsau) nghĩa là nếu muốn có a+b thì viết (+ a b) đối với + - * / điều như vậy.
**Từ hai điểm a và b kết hợp các hàm trên chúng ta bắt đầu cho việc tính toán cho ra những kết quả phục vụ cho việc mình cần.
-Tìm điểm nằm chính giữa a và b:
+Ngoài việc xác định 1 điểm bằng cách pick điểm thông qua hàm getpoint như trên thì 1 điểm trong lisp còn biểu diển như sau:
(setq c (list xc yc zc))
Trong đó:Xc, yc, zc lần lượt là tọa độ x, y,z của điểm c các giá trị này được xác định kiểu gì cũng được. Trong trường hợp này xác định từ các giá trị của điểm a và b. Để đơn giản mình chỉ tính toán trên mặt phẳng xy khi nào lisp vẽ phối cảnh mình hãy đưa giá trị z vào từ bây giờ 1 điểm chỉ cần biểu diển bằng x và y nên xác định điểm c như sau: (setq c (list xc yc))
(setq xab (+ xa xb)) xác định 1 biến tạm bằng tổng x điểm a và x điểm b

(setq yab (+ ya yb)) xác định 1 biến tạm bằng tổng y điểm a và y điểm b
(setq xc (/ xab 2)) xác định x điểm c bằng cách lấy xab chia 2
(setq yc (/ yab 2)) xác định y điểm c bằng cách lấy yab chia 2
(setq c (list xc yc)) xác định điểm c bằng x và y vừa tính được.

(defun c:doanthang ()
(setq a (getpoint "\nChon diem: "))
(setq b (getpoint a"\nChon diem: "))
(command ".line" a b "")
(command ".circle" a b)
(command ".circle" b a)
(setq xa (car a))
(setq ya (cadr a))
(setq xb (car b))
(setq yb (cadr b))
(setq xab (+ xa xb))
(setq yab (+ ya yb))
(setq xc (/ xab 2))
(setq yc (/ yab 2))
(setq c (list xc yc))
(command ".circle" c a)
(princ))
*Bây giờ chạy thử đoạn trên bạn sẽ thấy có thêm 1 vòng tròn tâm là trung điểm đoạn ab đường kính bằng ab.
*Hai hàm: distanceangle trong bài này chưa xài tới nhưng nhân tiện nói về đểm mình nói luôn bạn hãy ghi nhớ cho sau này.


Hướng dẫn viết lisp bài 3

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ự!
Cũng với đoạn trên nhưng bây giờ không vẽ đường thẳng nửa mà vẽ đường tròn:

Thay dòng(command ".line" a b "")
Bằng dòng(command ".circle" a b)
Bạn để ý nhé dòng vẽ line có "" sau khi chọn a và b còn vẽ circle thì không. Vì khi vẽ line sau khi nhập hai điểm sẽ tiếp tục lệnh line muốn kết thúc phải enter, còn circle thì chỉ cần chọn tâm và bán kính là kết thúc lệnh nên không có enter để kết thúc.
-Để thấy cái lợi của lisp bạn lưu đoạn sau thành file lsp rồi chạy thử.
(defun c:doanthang ()

(setq a (getpoint "\nChon diem: "))
(setq b (getpoint a"\nChon diem: "))
(command ".line" a b "")
(command ".circle" a b)(command ".circle" b a)
(princ))
Sẽ thấy sau khi chọn 2 điểm trên màn hình lisp sẽ vẻ ra:
-Đường thẳng từ a đến b.
-Đường tròn tâm a bán kính ab.
-Đường tròn tâm b bán kính ab.
**Kinh nghiệm rút ra:
-Từ 1 kiểu dữ liệu nhập vào lisp có thể làm nhiều việc (đây mới là sử dụng nguyên gốc hai điểm a và b chưa kể đến tính toán và cho ra điểm mới phục vụ mục đích nào đó).
-Sau khi dử liệu được nhập (điểm a và b) có thể dùng vào mọi việc không cần đến thứ tự ví dụ nhập a trước nhưng vẫn có thể dùng b trước như dòng vẽ circle thứ 2.

Hướng dẫn viết lisp bài 2

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ự!
Đây là những gì hiển thị trên dòng lệnh khi chạy lệnh doanthang.

Command: doanthang
Chon diem: Chon diem:
nil

*Phân tích:
-Hai câu hỏi của lisp là Chon diem và Chon diem dính liền nhau trên 1 hàng và cuối cùng xuất hiện chữ nil không được đẹp mắt lắm.
-Khi bạn chọn điểm thứ nhất trên màn hình lisp sẽ tiếp tục chọn điểm thứ hai nhưng không xuất hiện “dây tóc” nối điểm thứ nhất với con trỏ như thường thấy ở lệnh line của cad làm việc chọn điểm thứ hai không được bài bản cho lắm.
*Khắc phục:Sửa đoạn lisp lại như sau:
(defun c:doanthang ()

(setq a (getpoint "\nChon diem: "))
(setq b (getpoint a"\nChon diem: "))
(command ".line" a b "")
(princ))
Bây giờ load lại và thực hiện lệnh doanthang sẽ thấy:
Command: DOANTHANG
Chon diem:
Chon diem:
Hai câu hỏi của lisp đưa ra xuống hàng đàng hoàn.Chữ nil cuối lệnh đã biến mất.Có dây tóc giúp việc chọn điểm thứ hai trực quan hơn.
*Phân tích:\n sẽ làm cho các nội dung phía sau đó nhảy xuống hàng.
Thêm chữ a sau getpoint sẽ làm xuất hiện dây tóc nối con trỏ với điểm a
(princ) sẽ ghi ra 1 dòng trắng giúp triệt tiêu các thông báo lòng thòng khi chạy lisp còn dư.
!^__^! Theo dỏi các bài tiếp theo nhé.


Hướng dẫn viết lisp bài 1

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ự!
*Để chọn 1 điểm (để làm gì thì tùy bạn) dùng dòng sau:

(setq a (getpoint "Chon diem: "))
Trong đó:
-a: là điểm xác định bằng cách pick chuột.
-Chon diem: là dòng chữ sẽ hiển thị trên dòng lệnh khi chạy lệnh.

*Để thực hiện 1 lệnh cad trong lisp thì gỏ đúng trình tự mà lệnh cad chạy, lưu ý "" là thay cho enter.
Ví dụ:(command ".line" a b "")
Tác dụng:
-Thực hiện lệnh line, chọn điểm a, chọn điểm b, enter.
-Bạn thấy chưa giống y như vẽ cad thôi có gì đâu.
*Bây giờ ví dụ gọn gọn nhé:

Bắt đầu bằng cái lisp vẽ đoạn thẳng nhé.
(defun c:doanthang ()

(setq a (getpoint "Chon diem: "))
(setq b (getpoint "Chon diem: "))
(command ".line" a b ""))
-Bạn lưu đoạn trên ra file vdt.lsp-Khởi động CAD.-Gỏ lệnh AP. Chọn đến file vdt.lsp load nó lên.
-Rồi bạn chỉ cần nhập lệnh doanthang nó hỏi bạn Chon diem bạn chọn 1 điểm nó lại hỏi Chon diem bạn lại chọn nó vẽ ra đoạn thẳng qua 2 điểm bạn vừa chọn.
-Khớ khớ chắc bạn kiu lisp gì mà mắc cười vậy. Đừng nôn nóng cái này là bước đầu mà từ từ rồi bạn sẽ thấy cái hay của lisp đem lại.
!^__^! Theo dỏi các bài tiếp theo nhé.


Hướng dẫn viết lisp bài mở đầu

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 các loạt bài viết này mình sẽ dùng ngôn ngữ bình dân như nói chuyện để hướng dẩn và diển tả cách lập trình lisp cho dể hiểu và cũng dể cho mình khi viết bài.
*Công cụ dùng viết lisp:
-Tất cả các chương trình có thể soạn và lưu file txt.-Cá nhân mình dùng Notepad.

-Lưu file bằng phần mở rộng (đuôi) lsp là thành file lisp (chạy được hay không tính sau)
*Khái niệm nôm na về lập trình lisp.
-Cách mình viết là cách thô sơ nhất: Trong khi vẽ CAD có 1 số thao tác lặp đi lặp lại có cả việc tính toán nếu làm thủ công thì mệt và nhàm nên mình lưu các thao tác này vào 1 file txt có đuôi là lsp để nó làm cho mình.
*Cấu trúc 1 lệnh lisp:
-Nguyên tắc chung: cứ mở ngoặc ra thì phải đóng lại trong 1 file lisp số lượng dấu “(” và “)” luôn bằng nhau.
-Mở đầu luôn luôn có dòng sau:(defun c:lenlenh ()
Trong đó tenlenh là cái mà bạn gỏ vào thanh command để thực thi lệnh lisp
-Kết thúc luôn là dấu ngoặc đơn đóng:)
-Toàn bộ phần giữa quyết định việc lệnh lisp của bạn làm việc gì, từ nay về sau mình sẽ nói về cách viết đoạn giữa này còn cái mở đầu và kết thúc luôn như vậy.


Cách gỏ các ký tự đặc biệt trong cad

Trong quá trình gỏ text trong bản vẽ có 1 số ký tự đặc biệt ví dụ mét vuông, mét khối, chử pi .v.v. Khi gỏ text bằng MTEXT thì có chức năng Symbol => other... nó ra bảng như này .
Cứ chọn cái ký hiệu nào bạn cần và chèn vào là xong.Nhưng anh em nhà ta ít dùng MTEXT mà hay dùng DTEXT (cho nhẹ bảng vẽ) thì làm nào để gỏ các ký tự này. Mình có 1 mẹo nhỏ giúp bạn làm việc này dể dàng.Bạn gỏ bằng font gì thì dùng lệnh MTEXT => Symbol => other... nó ra cái bảng hổi nảy đó bạn để ý khi chọn vào ký tự nào thì phía dưới bên phải bảng có 1 dòng hiển thị như này


Bạn học thuộc cái này để khi gỏ DTEXT thì có cái sử dụng.Bạn chỉ cần thay Alt+0 trong dòng hiển thị hồi nảy bằng %% là được.
Ví dụ:
Alt+0254 = %%254 = pi thường.
Alt+0222 = %%222 = pi hoa
Alt+0178 = %%178 = mũ 2
Alt+0179 = %%178 = mũ 3
Mổi font chử có thể khác nhau về các tổ hợp này bạn chỉ cần làm cách trên là lúc nào cũng tìm ra được hết

Thứ Ba, 7 tháng 7, 2009

Load và điều chỉnh menu trong cad!

**Cách load 1 menu.
Gỏ lệnh menuload xuất hiện bảng:

Chọn nút Bro chọn đến file *.mns chọn nút load.
**Cách làm menu hiển thị tiếng việt có dấu.
-File *.mns phải gỏ tiếng việt có dấu (ví dụ mình dùng font VNI.**)
-Load menu như trên.
-Ra màn hình trống làm như hình. (bạn gỏ font gì thì chọn file đó)
-Cách này làm thay đổi toàn bộ font menu cuả toàn bộ các chương trình (kể cả win) chứ không riêng gì cad bạn nhé.

Menu cad

-Bạn còn có thể gọi 1 menu hình ảnh tại dòng lệnh bằng cách nhập (menucmd "i=tlkt.THUVIEN")(menucmd "i=*")
-Hoặc lưu đoạn lisp như sau thì khi gỏ lệnh tv sẽ gọi menu THUVIEN lên.


(Defun c:tv ( )
(menucmd "i=tlkt.THUVIEN")
(menucmd "i=*")
(Princ) )

-Cách điều chỉnh hiển thị của menu bằng dòng lệnh.
(menucmd "Gtlkt.pop1=-") Tắt menu pop1 thuộc menu tlkt đi.
(menucmd "P15=+tlkt.pop1") Làm xuất hiện menu pop1 thuộc menu tlkt tại vị trí thứ 15 của menu tính từ trái qua phải.
-Cách làm mờ 1 mục của menu:
Ví dụ làm mờ dòng Noi dung dong 4 trong menu tlkt.
+Làm mờ ngay từ khi mới tải lên: Thêm dấu ~ trong dòng định nghĩa menu. ID_a4 [~Noi dung dong 4]^C^C_tenlenh-4
+Làm mờ bằng dòng lệnh sau khi tải lên: dùng dòng lệnh sau.
(MENUCMD "Gtlkt. ID_a4=~")
-Đánh dấu 1 mục của menu: Ví dụ đánh dấu dòng Noi dung dong 4 trong menu tlkt trên.
+Đánh dấu ngay từ khi mới tải lên: Thêm dấu ! trong dòng định nghĩa menu. ID_a4 [!Noi dung dong 4]^C^C_tenlenh-4
+Đánh dấu bằng dòng lệnh sau khi tải lên: dùng dòng lệnh sau.
(MENUCMD "Gtlkt. ID_a4=!")
-Vô hiệu hóa việc đánh dấu, làm mờ 1 mục của menu bằng dòng lệnh. (MENUCMD "Gtlkt. ID_a4=")
*Bây giờ ứng dụng các kiến thức trên vào việc cụ thể nhé:
-Đặt vấn đề: khi viết 1 menu nếu là tiếng việt có dấu thì nhìn có vẻ ngon lành hơn nhưng vấn đề mình muốn nhiều người dùng cái menu của mình mà việc hiển thị được tiếng việt có dấu trên thanh menu thì không phải ai cũng biết cách chỉnh nên nó mà hiển thị không đúng thì càng khó đọc hơn là không có dầu nửa.
-Giải pháp đưa ra là trong menu của mình viết 2 pop có chức năng y hệt nhau 1 cái có dấu và 1 cái không dấu. Trong đó có 1 mục giúp chuyễn qua lại giữa có dấu và không dấu. Ứng dụng dòng tắt và làm xuất hiện menu cho việc này.
-Bây giờ mình sửa cái menu bài trước như sau: (mình bỏ đoạn menu hình ảnh đi nhé)

***MENUGROUP=tlkt
***POP1 ID_1tieude [TLKT]
ID_1a1 [Noi dung dong 1]^C^C_tenlenh-1
ID_1a2 [Noi dung dong 2]^C^C_tenlenh-2
ID_1a3 [Noi dung dong 3]^C^C_tenlenh-3
ID_1a4 [Noi dung dong 4]^C^C_tenlenh-4
[--]
ID_1b1 [->Xep lop]
ID_1b2 [Noi dung lop 1]^C^C_tenlenh-5
ID_1b3 [Noi dung lop 2]^C^C_tenlenh-6
ID_1b4 [<-Noi dung lop 3]^C^C_tenlenh-7 [--] ID_c1 [Goi co dau]^C^C (menucmd "Gtlkt.pop1=-") (menucmd "P15=+tlkt.pop2") ***POP2 ID_2tieude [TLKT] ID_2a1 [Nội dung dòng 1]^C^C_tenlenh-1 ID_2a2 [Nội dung dòng 2]^C^C_tenlenh-2 ID_2a3 [Nội dung dòng 3]^C^C_tenlenh-3 ID_2a4 [Nội dung dòng 4]^C^C_tenlenh-4 [--] ID_2b1 [->Xếp lớp]
ID_2b2 [Nội dung lớp 1]^C^C_tenlenh-5
ID_2b3 [Nội dung lớp 2]^C^C_tenlenh-6
ID_2b4 [<-Nội dung lớp 3]^C^C_tenlenh-7 [--] ID_c1 [Gọi không dấu]^C^C (menucmd "Gtlkt.pop2=-") (menucmd"P15=+tlkt.pop1")

*Rồi bây giờ load menu tlkt lên cho cái pop1 hiển thị bạn sẽ thấy menu là tiếng việt không dấu. phía dưới cùng có mục Goi co dau khio bạn chọn nó sẽ tắt cái pop1 đi và gọi cáo pop2 lên là tiếng việt có dấu. Lúc này dòng dưới cùng là Gọi không dấu. Bạn chọn vào nó lại chuyễn sang không dấu.

*Một ví dụ như vậy để bạn dể hình dung và linh hoạt trong sử dụng các kiến thức về menu mình nêu trên tùy trường hợp cụ thể bạn ứng dụng các cái còn lại nhé.

Tạo menu trong cad

Ban đầu khi bước vào công việc tùy biến autocad từ mức độ ít hay nhiều thì bước tạo cho riêng mình 1 menu hầu như ai cũng có nhu cầu. Mình giới thiệu một cách đơn giản để các bạn nắm giúp cho công việc được dể dàng.-File điều khiển menu trong cad là file *.mns. Đây là file tlkt.mns mình cố gắng rút gọn nội dung lại để dể theo dỏi. Trong này gồm 3 phần chính:+Menu chính.+Menu con xếp theo chiều dọc.+Dấu gạch ngang phân cách.+Menu xếp lớp từ đây sẽ có các menu xuất hiện bên cạnh.+Menu hình ảnh. Cái này dùng làm thư viện được (ở mức độ mới bắt đầu thì đây là lựa chọn tốt nhất để làm thư viện)

***MENUGROUP=tlkt

***POP1

ID_tieude [TLKT]ID_a1 [Noi dung dong 1]^C^C_tenlenh-1

ID_a2 [Noi dung dong 2]^C^C_tenlenh-2

ID_a3 [Noi dung dong 3]^C^C_tenlenh-3

ID_a4 [Noi dung dong 4]^C^C_tenlenh-4

[--]

ID_b1 [->Xep lop]

ID_b2 [Noi dung lop 1]^C^C_tenlenh-5

ID_b3 [Noi dung lop 2]^C^C_tenlenh-6

ID_b4 [<-Noi dung lop 3]^C^C_tenlenh-7

[--]

ID_c1 [Goi menu thu vien]^C^C_$i=tlkt.THUVIEN1 $i=*

***IMAGE

**THUVIEN1

[THU VIEN CHI TIET]

[hinh-1]^C^C_tenlenh8

[hinh-2]^C^C_tenlenh9

[hinh-3]^C^C_tenlenh10

[hinh-4]^C^C_tenlenh11

*Giải thích:

***MENUGROUP=tlkt định nghĩa tên của menu là tlkt.

***POP1 Quyết định đây là 1 menu treo.

ID_tieude [TLKT] Quyết định dòng chử xuất hiện trên thanh menu là TLKT.

ID_a1 [Noi dung dong 1]^C^C_tenlenh-1 :Noi dung dong 1 : Sẽ xuất hiện ở menu khi chọn nó sẽ thực hiện tenlenh-1. Có thể là lệnh cad hoặc 1 chuỗi lệnh.

[--] Làm xuất hiện dòng gạch ngang trong menu.

ID_b1 [->Xep lop] Quyết định mở đầu 1 menu xếp lớp.

ID_b4 [<-Noi dung lop 3]^C^C_tenlenh-7 :Quyết định kết thúc 1 menu xếp lớp.

***IMAGE :định nghĩa menu hình ảnh

**THUVIEN1 :tên của menu hình ảnh. Dùng để gọi lên.

[THU VIEN CHI TIET] : dòng chử xuất hiện trên tiêu đề menu hình ảnh.

[hinh-1]^C^C_tenlenh8 : hinh-1 là tên của file sld sẽ xuất hiện tại ô hình ảnh. khi chọn nó sẽ thực hiện tenlenh8. Có thể là lệnh cad hoặc 1 chuỗi lệnh. (cụ thể nếu dùng làm thư viện thì đây là lệnh insert). Ví dụ dòng làm xuất hiện ảnh nguoi-1.sld khi nhấn vào và ok sẽ chèn file nguoi-1.dwg. (hai tên file này có thể khác nhau nhưng làm giống nhau cho đở lộn).

[nguoi-1]^C^C_-insert nguoi-1;\1;1;0;

Giải thích: thực hiện lệnh insert, nhập tên block là nguoi-1 enter chọn điểm chèn tỉ lệ theo trục x là 1 enter, tỉ lệ theo trục y là 1, góc quay là 0.

+Dấu ; thay cho enter.

+Dấu \ tạm hoản chuổi lệnh chờ chọn bằng chuột tại màn hình.

ID_c1 [Goi menu thu vien]^C^C_$i=tlkt.THUVIEN1 $i=* đây là dòng dùng gọi menu hình ảnh có tên THUVIEN1 . bạn lưu ý chử tlkt chính là tên của menu ở dòng***MENUGROUP=tlkt nếu muốn thay đổi phải làm cho đồng bộ nếu không nó không lên ảnh đâu. (hồi mình mới mò thì mất hơn tháng mới tìm được nguyên tắc này đó)




Các biến hệ thống:

Một số biến hệ thống gây ảnh hưởng đến việc dùng CAD. Thông thường các lisp phá hoại thường thay đổi các biến này rất phiền phức mình đọc trong sách tổng hợp lại 1 số cái hay bị nhất đưa lên bà con có gặp thì biết cách chỉnh lại.

*Tên biến: Pickauto
Tác dụng: Điều khiển cửa sổ tự động tại dấu nhắc Select objects
0= cửa sổ bị vô hiệu
1= cửa sổ được hiệu lực hóa

*Tên biến: Pickdrag
Tác dụng: Điều khiển cách các cửa sổ chọn được sử dụng
0= nhấp vào mổi góc cửa sổ
1= nhấp và giữ góc đầu tiên, kéo rê và nhả chuột cho góc thứ hai

*Tên biến: Pickfirst
Tác dụng: Điều khiển việc chọn các đối tượng trước khi thực hiện lệnh
0= vô hiệu
1= hiệu lực hóa

*Tên biến: Pickadd
Tác dụng: Điều khiển việc chọn đối tượng
0= chọn 1 lần được 1 đối tượng
1= chọn 1 lần được nhiều đối tượng

*Tên biến: Pellipse
Tác dụng: Điều khiển đối tượng tạo ra bằng lệnh Ellipse
0= đối tượng là ellipse
1= đối tượng là pline

*Tên biến: Trimmode
Tác dụng: Điều khiển việc các đường bị cắt tỉa trong các lệnh Chamfer và Fillet
0= không cắt tỉa
1= cắt tỉa

*Tên biến: Osmode
Tác dụng: Xác lập chế độ Osnaps (bắt điểm tự động)
0= 0
1= điểm cuối
2= điểm giữa
4= tâm
8= nút
16= cung 1/4
32= giao điểm
64= điểm chèn
128= vuông góc
256= gần nhất
512= nhanh
Nếu cần nhiều chế độ một lúc thì nhập tổng các chế độ đó

*Tên biến: Mirrtext
Tác dụng: Điều khiển đối xứng gương của text khi thực hiện lệnh Mirror
0= vô hiệu
1= hiệu lực hóa

*Tên biến: Mbuttonpan
Tác dụng: Điều khiển cách hoạt động của bánh xe hay nút thứ 3 của thiết bị chuột.
0= hoạt động quyết định bằng file menu
1= sự dịch chuyễn bằng thao tác nhấp và rê

*Tên biến: Isavebak
Tác dụng: Điều khiển việc tạo file *.bak hay không
0= không tạo file bak
1= có tạo file bak

*Tên biến: Fillmode
Tác dụng: Điều khiển trạng thái điền đầy trong hiển thị các hatch
0= trống rỗng
1= điền đầy

*Tên biến: Filedia
Tác dụng: Điều khiển việc hiển thị hộp thoại open file
0= không hiển thị hộp thoại
1= hiển thị hộp thoại

*Tên biến: Explmode
Tác dụng: Điều khiển tình trạng các block với giá trị x,y,z khác nhau
0= các block không thể explode
1= các block có thể explode

*Tên biến: Blipmode
Tác dụng: Điều khiển tình trạng hiển thị các dấu “+” khi kích chuột
0= không hiển thị
1= hiển thị

*Tên biến: Cmddia
Tác dụng: Điều khiển việc hiển thị hộp thoại cho 1 số lệnh
0= không hiển thị hộp thoại
1= hiển thị các hộp thoại

*Tên biến: Angdir
Tác dụng: Điều khiển hướng dương của góc
0= ngược chiều kim đồng hồ
1= cùng chiều kim đồng hồ

UBND huyện Bình Sơn


Cái nì mặt đứng hướng tây chưa có xây nhưng mà TKP thì nhận rồi he he

Giá đậu phộng

Vừa đi công tác đảo Lý Sơn về. Bình thường trong đất liền người ta làm giá đổ bằng đậu xanh như ngoài đảo lại làm bằng đậu váng cọng nào cọng nấy to ù en cũng hay hay và cũng thấy quen quen. Nhớ là mình en ở đâu rồi.
Ngày xưa giữa con sông và nhà mình là 1 đám vườn người ta trồng đủ loại hoa màu trong đó có đậu phộng. Đến mùa thu hoạch người ta nhổ đậu bằng cách nắm gốc lôi lên phần lớn củ (thực chất là trái nhưng nằm dưới đất nên quen gọi là củ) lên theo còn 1 số thì nằm lại bên dưới. Lúc này tụi con nít mới mở chiến dịch đi mót. Vậy mà vẫn không hết các chú vẩn còn nằm bên dưới để.....................chờ mưa. Sau cơn mưa khoảng 1 2 ngày thì mặt đất đã trở lại phẳng lì không còn dấu vết gì của chiến dịch nhổ và mót cả. Lúc này thì bắt đầu việc thu hoạch giá. Cứ dòm chổ nào mặt đất nứt ra và nhô lên cao tí thì lật ra thế nào cũng có vài (ít nhất thì cũng được 1)chú mầm đậu phộng trắng toát mập mĩm. Cái thời xưa ấy thiếu en cái gì cũng en được tất và thấy ngon mới lạ chứ. Hèn gì mà mình thấy món giá đậu váng quen quen.

Ngày xưa

KHOAI VÀ MỲ.
Bây giờ ra đường nhiều khi thấy người ta bán rong củ khoai, củ mỳ (phía bắc gọi là sắn) nấu (hoặc nướng) và các bạn nhỏ ăn như ăn quà vặt mà nhớ lại cái thời mình ăn cái món này thay cơm.
Chưa xa lắm, đâu chừng cách nay khoảng 25 năm lúc mình bắt đầu biết chuyện được 1 chút thì mình đã dùng 2 loại củ này cho bửa ăn hàng ngày, các bửa chính thì còn có sự xuất hiện của gạo còn buổi sáng thì độc mỗi 2 loại này cấm có gì lẫn vào được.
Quê mình lúc đó có 1 vùng đất xám bạc màu chỉ có dương liễu và khoai lang là sống nổi và không hiểu sao củ khoai lúc đó to đặc biệt (hay lúc đó mình còn nhỏ nhỉ).
Mổi sáng 2 anh em được biên chế 1 củ khoai nấu cắt làm 2 theo chiều dọc. Kiếm chổ nào ngồi rồi lấy muổng múc 1 lát thì còn lại phần vỏ giống cái thuyền, cất muổng và lủm luôn phần còn lại là xong bửa sáng (không có chuyện bỏ vỏ đâu nghen). Ăn khoai nấu hoài rồi cũng có ngày ngán và cũng như các bà mẹ ngày nay ma ma tổng quản làm mọi cách để 2 ông con suy dinh dưỡng mổi sáng phải hoàn thành chỉ tiêu và thế là các cách chế biến khoai và mỳ với sự tham gia của nước, nắng, mắm, muối, đường (có hoành tráng thì có thêm tí dầu) dưới bàn tay của ma ma các món ăn được ra đời, và đây >>>>> xin giới thiệu thực đơn buổi sáng của kts-Duy cách nay 25 năm.

BỘT KHOAI LANG HOÀ TAN.
*Chế biến:
-Lựa hôm trời nắng nấu lấy một mớ khoai (nấu cho chín chứ không thì hoà không tan).
-Lấy cái sàng (hay cái dần gì đó đại khái là 1 cái trong bộ: nong, nia, dần , sàng mà có lổ to khoảng 3 ly)
-Để nó lên cái thau, lấy củ khoai (đã nguội chứ không nóng chít) mài lên cho nó rớt bột xuống dưới cái thau (hạt to chắc bằng ¼ hạt bắp vậy đó).
-Đem cái thau hột này đem phơi cho khô, bỏ bị cất.
*Cách dùng:
-Lấy bột đổ dô chén, bát, ly gì gì cũng được.
-Đổ nước sôi, thêm muối, đường, wậy wậy chờ cho tan rồi muốn làm gì thì làm.
*Nhận xét:
-Ngon nếu có nhiều đường.

BÁNH KHOAI LANG NƯỚNG.
*Chế biến:
-Lựa hôm trời nắng nấu lấy một mớ khoai (tất nhiên phải nấu cho chín).
-Lột bỏ vỏ (dụ này có 2 ông con ngồi chầu hẩu 1 bên làm) bỏ khoai vào cối giã cho dẻo dẻo tí.
-Kím 1 cái chai và 2 miếng nilon to to tí, bỏ bột đã giã nhuyễn vào giữa 2 miếng nilon lấy cái chai cán lên lăn qua lăn lại cho nó mòng lét ra, lột miếng nilon phía trên ra, lấy cái tô hay cái thau gì đó úp lên gạt bỏ phần chung quanh còn lại phần tròn bên trong giống như cái bánh xèo, lột luôn miếng ni lon phía dưới đem phơi khô bỏ bị cất.
*Cách dùng:
-Đem nướng lên giống nướng bánh tráng vậy.
*Nhận xét:
-Ngon , rất thơm dưng mà mất công lắm à nha.

*!_!* Còn cập nhật tiếp nha bạn.


UBND huyện Ba Tơ


Cái nì đang xây. Mặt chính hướng Đông.


Tiện ích Autolisp tổng hợp

*Giới thiệu bộ công cụ tiện ích hổ trợ trên tất cả các đời cad. Đây là tổng hợp các lisp mình sưu tầm và viết mới phục vụ nhu cầu công việc bản thân.
-Bạn load về giải nén ra thư mục TLKT. Copy vào ổ C.
-Trong thư mục tlkt\run có 2 file: cai.lsp và chạy.lsp
+Để chạy thử : khởi động cad gỏ lệnh AP chọn đến file chay.lsp load lên. Cad của bạn có thêm menu TLKT bạn vào đó có đầy đủ các thứ bạn cứ xem thấy thích và phù hợp công việc thì cài.
+Để cài : khởi động cad gỏ lệnh AP chọn đến file cai.lsp load lên. Xuất hiện bảng hường dẩn bảo bạn gỏ lệnh TLKT. Bạn tắt bảng này đi rồi gỏ lệnh TLKT. Bây giờ luôn luôn khi khởi động cad sẽ có bảng giới thiệu chương trình.



@Lưu ý chương trình thật ra không phải được cài đặt nên không có phần gở bỏ muốn gở bỏ phải làm thủ công.
*Khi dùng tienich của tôi có 3 điều khó chịu sau bạn chấp nhận thì hãy dùng:
-Nó chép đè các mẫu hatch lên máy của bạn.
-Có 1 dòng chử hiển thị thông tin về tác giả góctrái dưới màn hình.
-Xuất hiện bảng giới thiệu tác giả khi khởi động.

Tải về máy!

Giao diện Blog

Sau hai ngày mò mẫn thay đổi cuối cùng cũng quay lại cái giao diện này chỉ vì mình thích cách nó thể hiện nhản các chuyên mục và các web yêu thích theo kiểu các nút chọn sếp hàng ngang. Những cái khác thì mình thích màu sắc hơn (mình thích trắng đen cho nó ra vẽ kỹ thuật) nhưng mà không có cái nào có cách hiển thị như này cả. Thôi vậy ai biểu mình hông rành chi . Bạn nào biết có cái nào giống dầy mà màu xám hoặc đen thì cho mình xin nhé. Cảm ơn!


Đây là giao diện mình đang dùng. Bạn thấy thích thì load về giải nén. Dùng quyền chỉnh sửa blog chọn chức năng chình sửa html, chọn nút browss chọn đến cái file này rồn tải lên là có giao diện này. http://www.4shared.com/file/116690990/69be805d/revolution-lifestyle-blog.html

Ưu điểm: các chuyên mục sẽ sếp hàng ngang tại dòng thứ 2, các web liên kết sếp hàng ngang tại dòng thứ nhất.
Nhược: Tiêu đề bị lỗi tiếng Việt.
Cách chỉnh: mở html lên tìm Georgia và thay bằng arial.
Lưu ý: Cái mà bạn thấy hiện nay trên blog của mình hơi khác với cái bạn load về vì mình đã thay đổi 1 số hình ảnh và màu sắc theo sở thích cá nhân và đây là cái mình đã chỉnh:
http://www.4shared.com/file/119489715/207b6408/revolution-lifestyle-blog-edit.html

Có thêm một điểm bất tiện là giao diện này mất đi phần đăng nhập khiến mất công trong khi muốn chỉnh hoặc viết bài mới. Mình khắc phục như sau:
Tại phần Web yêu thích hoặc các liên kết khác miển có cho liên kết tới đường dẩn nào đó thì bạn tạo thêm 1 mục và cho liên kết tới
https://www.blogger.com/start và đặt cho nó tên là đăng nhập là xong.

Còn đây

http://www.4shared.com/file/116691753/ee20d484/TemplateOutono.html

là 1 giao diện khác cũng có được cách sếp nhản hàng ngang tương tự lại màu đen mình rất ưng nhưng lại lỗi tiếng việt trầm trọng. Mình làm 1 blog thử dùng giao diện này bạn xem ở đây

http://kts-duy.blogspot.com/