Jump to content
InfoFile
Tác giả: q288
Bài viết gốc: 60878
Tên lệnh: nn
Viết Lisp theo yêu cầu



Bạn thử cái này xem sao.

Filename: 60878_nn.lsp
Tác giả: gia_bach
Bài viết gốc: 36534
Tên lệnh: doi text
đổi thuộc tính cho text

Bạn thử LISP này xem sao :

Filename: 36534_doi_text.lsp
Tác giả: ThuyLinh313
Bài viết gốc: 222613
Tên lệnh: ed
- Tự động bật - tắt chế độ gõ tiếng việt trong CAD
Version 2.0 :D
- Hỗ trợ tự động Bật/Tắt chế độ gõ Tiếng Việt trong Cad: Khi nào bạn chỉnh sửa hoặc viết text thì Unikey tự động bật chế độ gõ Tiếng Việt. sau khi thực hiện xong lại tự động trả về chế độ gõ Tiếng Anh cho command.
- Tự động lựa chọn bảng mã thích hợp cho bộ gõ...
>>
Version 2.0 :D
- Hỗ trợ tự động Bật/Tắt chế độ gõ Tiếng Việt trong Cad: Khi nào bạn chỉnh sửa hoặc viết text thì Unikey tự động bật chế độ gõ Tiếng Việt. sau khi thực hiện xong lại tự động trả về chế độ gõ Tiếng Anh cho command.
- Tự động lựa chọn bảng mã thích hợp cho bộ gõ (đã có từ ver 1.0 nhưng thêm 1 vài chỉnh sửa nhỏ làm tăng tính chính xác của chương trình)
- Hỗ trợ thêm đối tượng Dimension

;===========================================================;
; A U T O U N I K E Y C O N T R O L R O U T I N E ;
;===========================================================;
; ;
; Version 1.0 - 14/12/2012 ;
; - Support Auto change table code (Unicode, TCVN, VNI) ;
; - Support for Text & Mtext objects ;
; ;
; Version 2.0 - 15/12/2012 ;
; - Added Auto toggle (On/Off) Vietnamese keys ;
; - Added support for Dimension objects ;
; - fixed Check-font-code function ;
; ;
;===========================================================;
; Cadviet.com - Le Thuy Linh 313 - Tri Tue Viet.jsc ;
;===========================================================;
;;; Go bo Reactor Auto-Unikey cu truoc khi load
(foreach x (cdar (vlr-reactors :vlr-sysvar-reactor))
(if (= (vlr-data x) "Auto-Unikey") (vlr-remove x)))
;;; Tao Reactor Auto-Unikey
(vlr-sysvar-reactor "Auto-Unikey" '((:vlr-sysvarchanged . callback-Unikey)))
;;; Dinh nghia lai lenh ED de lay ename doi tuong
(defun c:ed (/ textedit font ent)
(and (or (and (setq textedit (ssget "I"))
(setq textedit (ssname textedit 0)))
(setq textedit (car (entsel))))
(setq ent (cdr (assoc 0 (entget textedit))))
(cond ((wcmatch ent "*TEXT")
(setq font (vla-get-stylename (vlax-ename->vla-object textedit))))
((= ent "DIMENSION")
(setq font (vla-get-textstyle (vlax-ename->vla-object textedit)))))
(command "ddedit" textedit))
(princ))
;;; Ham callback dieu khien bo go tieng viet
(defun callback-Unikey (reactor sysvar / code Crfont)
(if (= (car sysvar) "TEXTEDITOR") (sendkeys "^+"))
(if (> (getvar "TEXTEDITOR") 0)
(progn
(if font (setq Crfont font) (setq Crfont (getvar "textstyle")))
(setq code (check-font-code Crfont))
(cond ((= code "TCVN3") (sendkeys "^+{F2}"))
((= code "UNICODE") (sendkeys "^+{F1}"))
((= code "VNI") (sendkeys "^+{F3}"))))))
;;; Ham kiem tra bang ma cua textstyle (su dung true type font)
;;; style: String - ten cua textstlye kiem tra
(defun Check-Font-Code (style / ts font Bold Italic charSet PitchandFamily)
(setq ts (vlax-ename->vla-object (tblobjname "style" style)))
(vla-GetFont ts 'font 'Bold 'Italic 'charSet 'PitchandFamily)
(if (= font "") (setq font (vla-get-fontfile ts)))
(cond ((wcmatch (setq font (strcase font)) "ARIAL*,TAHOMA*,TIMES*") "UNICODE")
((wcmatch font ".VN*") "TCVN3")
((wcmatch font "VNI*") "VNI")))

<<

Filename: 222613_ed.lsp
Tác giả: ketxu
Bài viết gốc: 222682
Tên lệnh: at
Em cần gấp - nhờ các a viết dùm e lisp chỉnh sửa text như thế này
Lisp thì cũng đơn giản thôi :

(defun c:at(/ a i)(vl-load-com)
(princ "\nSelect text objects :")
(while (not (ssget '((0 . "*TEXT")))))
(setq a (getstring "\nPrefix :") i 0)
(vlax-for obj (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object)))
(vla-put-textstring obj (strcat a " " (rtos (setq i (1+ i)) 2 0)))
)
)

Filename: 222682_at.lsp
Tác giả: tamkt
Bài viết gốc: 112665
Tên lệnh: coorn coor coort coor-geo ptxl
Viết lisp theo yêu cầu [phần 2]

Em có chủ đề này, đây là lisp xuất tạo độ em sưu tầm trên cadviet:




-------------------------------------------------------------------------------
xuất ra text có dạng tọa độ là:

32.9039,33.1631,0.0000
54.3737,33.1631,0.0000
54.3737,16.2295,0.0000
32.9039,16.2295,0.0000
-------------------------------------------------------------------------------
Giờ e muốn xuất ra có...
>>
Em có chủ đề này, đây là lisp xuất tạo độ em sưu tầm trên cadviet:




-------------------------------------------------------------------------------
xuất ra text có dạng tọa độ là:

32.9039,33.1631,0.0000
54.3737,33.1631,0.0000
54.3737,16.2295,0.0000
32.9039,16.2295,0.0000
-------------------------------------------------------------------------------
Giờ e muốn xuất ra có dạng:

1,d 16,38.2,38.2
2,d 16,38.2,878
3,d 16,572.6,878
4,d 16,572.6,38.2

Với:
1,2,3,4... là thứ tự các điểm nút pline
d là mặc định
16 thay đổi theo chiều dày của pline
còn lại là tọa độ x,y của điểm nút pline

Mong mấy bậc tiền bối giúp em.
<<

Filename: 112665_coorn_coor_coort_coor-geo_ptxl.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 222776
Tên lệnh: ha
[Yêu cầu] Lisp scale đối tượng quanh tâm của nó

Hồi sáng bạn y/c scale line nên đã làm xong. Giờ thêm scale text thì xét sau. Hay search trên cadviet để tìm lisp của Ketxu vậy.
Lisp Scale nhóm Lines tại tâm của mỗi Line.

Filename: 222776_ha.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 222794
Tên lệnh: ha
Tác giả: phamthanhbinh
Bài viết gốc: 222800
Tên lệnh: spsc
Lisp scale đối tượng quanh tâm của nó

Hề hề hề,
Dựa theo bản vẽ bạn gửi, mình đoán ý và viết cái lisp này, bạn dùng thử coi có ưng ý không. Lisp có hai lựa chọn phương án scale:
1/- Phương án A: lisp chỉ scale các đoạn thẳng.
2/- Phương án B: lisp scale các đoạn thẳng và các text đi kèm theo tâm là điểm giữa của đoạn thẳng.

http://www.cadviet.com/upfiles/3/5194_specialscale.lsp

...
>>

Hề hề hề,
Dựa theo bản vẽ bạn gửi, mình đoán ý và viết cái lisp này, bạn dùng thử coi có ưng ý không. Lisp có hai lựa chọn phương án scale:
1/- Phương án A: lisp chỉ scale các đoạn thẳng.
2/- Phương án B: lisp scale các đoạn thẳng và các text đi kèm theo tâm là điểm giữa của đoạn thẳng.

http://www.cadviet.com/upfiles/3/5194_specialscale.lsp



Lưu ý là lisp chỉ ứng dụng cho các đoạn thẳng là line chứ không dùng cho pline.
<<

Filename: 222800_spsc.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 31214
Tên lệnh: xd
Viết Lisp theo yêu cầu


Cảm ơn bạn vì một yêu cầu rất mạch lạc, dưới đây là lisp của bạn:

Lệnh XD sẽ yêu cầu bạn:
- pick vào 1 điểm thuộc mặt tiền nhà,
- sau đó yêu cầu bạn pick vào phía có ghi chữ (ngược lại phía với ống),
- sau đó nhập B và D (theo đơn vị m).

Khi bạn nhập xong, Chương trình sẽ cho bạn:
- Text B, D
- Point điểm tọa độ.
>>


Cảm ơn bạn vì một yêu cầu rất mạch lạc, dưới đây là lisp của bạn:

Lệnh XD sẽ yêu cầu bạn:
- pick vào 1 điểm thuộc mặt tiền nhà,
- sau đó yêu cầu bạn pick vào phía có ghi chữ (ngược lại phía với ống),
- sau đó nhập B và D (theo đơn vị m).

Khi bạn nhập xong, Chương trình sẽ cho bạn:
- Text B, D
- Point điểm tọa độ.

Từ đây bạn phải vẽ đường ống bằng cách nối line từ point đến point một cách thủ công. Nếu bạn lười, hãy dùng lisp JP (Joint Point) đã có trên diễn đàn (bạn hãy search nhé) để joint các point lại với nhau.
<<

Filename: 31214_xd.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 31938
Tên lệnh: xd
Viết Lisp theo yêu cầu

OK,
Đây là lisp đã cải tiến, bạn thử xem có đúng ý không:

Filename: 31938_xd.lsp
Tác giả: vndesperados
Bài viết gốc: 32410
Tên lệnh: i0 i1 i2 i3 i4
Viết Lisp theo yêu cầu




Còn lại thì Phiphi- viết tiếp nha

Filename: 32410_i0_i1_i2_i3_i4.lsp
Tác giả: Bommak
Bài viết gốc: 33972
Tên lệnh: dx
Viết Lisp theo yêu cầu
Em định viết 1 đoạn lisp thực hiện lệnh dimlinear của cad nhưng gặp khó khăn mong được các bác giúp đỡ. Đoạn code em viết thử thì thấy hoạt động bình thường (giống như CAD) đối với các đối tượng đơn (LINE, ARC) nhưng nếu đối tượng chọn (LINE, ARC) là một segment trong 1 LWPOLYLINE thì đoạn code của em không giải quyết được (lệnh dimlinear của CAD thì vẫn giải quyết ngon lành), điều...
>>
Em định viết 1 đoạn lisp thực hiện lệnh dimlinear của cad nhưng gặp khó khăn mong được các bác giúp đỡ. Đoạn code em viết thử thì thấy hoạt động bình thường (giống như CAD) đối với các đối tượng đơn (LINE, ARC) nhưng nếu đối tượng chọn (LINE, ARC) là một segment trong 1 LWPOLYLINE thì đoạn code của em không giải quyết được (lệnh dimlinear của CAD thì vẫn giải quyết ngon lành), điều này làm em băn khoăn mà không hiểu tại sao. Em không có kiến thức sâu về xử lý ENTITY data nên loay hoay mãi không biết cách làm. Em mong các bác giúp đỡ. Thanks


<<

Filename: 33972_dx.lsp
Tác giả: gia_bach
Bài viết gốc: 37274
Tên lệnh: tdd tdg
Viết Lisp theo yêu cầu

Từ LISP nhập tọa độ (x,y), bác xóa phần tọa độ theo phương x -> LISP nhập cao độ.

Filename: 37274_tdd_tdg.lsp
Tác giả: xuandao0708
Bài viết gốc: 65131
Tên lệnh: vc
Viết Lisp theo yêu cầu

Em xin nói lại yêu cầu của em:
- Đoạn lisp 1 của Bác SSG dùng để vẽ bảng Toạ Độ Góc Ranh có lệnh : vc

---Yêu cầu 1: thêm hình tròn có tô hatch tại các đỉnh ( nếu được thì mong Bác có thể cho người dùng nhập đường kính vòng tròn)
---Yêu cầu 2: chuyển lại font chữ giũa kích thước và số TT ( số TT cho font chữ nghiêng và kích thước cho font chữ thẳng và tô...
>>

Em xin nói lại yêu cầu của em:
- Đoạn lisp 1 của Bác SSG dùng để vẽ bảng Toạ Độ Góc Ranh có lệnh : vc

---Yêu cầu 1: thêm hình tròn có tô hatch tại các đỉnh ( nếu được thì mong Bác có thể cho người dùng nhập đường kính vòng tròn)
---Yêu cầu 2: chuyển lại font chữ giũa kích thước và số TT ( số TT cho font chữ nghiêng và kích thước cho font chữ thẳng và tô đậm)
---Yêu cầu 3: mong Bác có thể cho người dùng được chọn save lại hay không save lại bảng TĐGR ngay tại thư mục đã mở bản vẽ ra bằng file excel từng cột để cần thì có thể phục vụ cho công tác sau này.
Dưới đây là đường link file mẫu:

http://www.cadviet.com/upfiles/Mau_2_2.dwg

Do hôm nay Upload file len cadviet ko được nên nếu bài có dài quá thì mong các Bác thông cảm, do em chưa biết cách cho bài vào box
<<

Filename: 65131_vc.lsp
Tác giả: Tue_NV
Bài viết gốc: 65357
Tên lệnh: bgtext
Viết Lisp theo yêu cầu

Tue_NV viết trong trường hợp tổng quát :
Khi chạy Lisp hỏi :
Ban muon bot chuoi cach vi tri dau bao nhieu ki tu : (1)
So ki tu can bo bot : (2)

trong trường hợp của HoangSon thì :
Ban muon bot chuoi cach vi tri dau bao nhieu ki tu : 3
So ki tu can bo bot : 1

Filename: 65357_bgtext.lsp
Tác giả: gia_bach
Bài viết gốc: 65524
Tên lệnh: xy
Viết Lisp theo yêu cầu

Chào vnp84055
Thử LISP này xem có đúng ý bạn chưa?

Filename: 65524_xy.lsp
Tác giả: gia_bach
Bài viết gốc: 65531
Tên lệnh: plxy
Viết Lisp theo yêu cầu

Chào vnp84055
LISP XY không khác lệnh dist cua CAD ?
Gửi bạn LISP vẽ PLINE

Filename: 65531_plxy.lsp
Tác giả: xuandao0708
Bài viết gốc: 65728
Tên lệnh: themtext bottext
Viết Lisp theo yêu cầu
Trích dẫn(conghoan1003 @ Jun 28 2009, 12:14) *
Nhờ bác Tue_NV nâng cấp cái lisp tgtext này lên tí nha, lisp này mình mới thêm được ký tự cách vị trí đầu chứ chưa thêm được cách vị trí cuối.
Mình kiếm được trên diễn dàn ( nếu kô lầm thì cái lisp này của Bác Duy782006) cái lisp này, không biết có đúng theo yêu cầu của bạn kô nhưng nó có thề cho minh thêm chuỗi ký tự vào đầu và cuối...
>>
Trích dẫn(conghoan1003 @ Jun 28 2009, 12:14) *
Nhờ bác Tue_NV nâng cấp cái lisp tgtext này lên tí nha, lisp này mình mới thêm được ký tự cách vị trí đầu chứ chưa thêm được cách vị trí cuối.
Mình kiếm được trên diễn dàn ( nếu kô lầm thì cái lisp này của Bác Duy782006) cái lisp này, không biết có đúng theo yêu cầu của bạn kô nhưng nó có thề cho minh thêm chuỗi ký tự vào đầu và cuối những đối tượng text đuợc chọn. Tên lệnh là :themtext

:s_big:
<<

Filename: 65728_themtext_bottext.lsp
Tác giả: Tue_NV
Bài viết gốc: 65756
Tên lệnh: gch
Viết Lisp theo yêu cầu

Đã sửa lại. HoangSon thử nhé :

Filename: 65756_gch.lsp
Tác giả: Tue_NV
Bài viết gốc: 66418
Tên lệnh: danhtruc
Viết Lisp theo yêu cầu

Chào Phiphi
Lisp vẫn có thể thực hiện được yêu cầu này với điều kiện như thế này:
-> Với mỗi Text
ta lấy điểm chèn của nó -> thành điểm chèn của ATTDEF
ta lấy các canh chỉnh của text -> thành canh chỉnh của ATTDEF
ta lấy nội dung của nó -> thành nội dung của ATTDEF (đây chính là Tagval)
Chỉ còn Tagname là ta chưa có.
Vậy khi sử dụng hàm while -> qua mỗi...
>>

Chào Phiphi
Lisp vẫn có thể thực hiện được yêu cầu này với điều kiện như thế này:
-> Với mỗi Text
ta lấy điểm chèn của nó -> thành điểm chèn của ATTDEF
ta lấy các canh chỉnh của text -> thành canh chỉnh của ATTDEF
ta lấy nội dung của nó -> thành nội dung của ATTDEF (đây chính là Tagval)
Chỉ còn Tagname là ta chưa có.
Vậy khi sử dụng hàm while -> qua mỗi Text ta phải nhập cho nó 1 Tagname thì mới có thể thực hiện Lisp dượcĐó là một số ý kiến của Tue_NV. Các bác có ý kiến nào hay xin bổ sung. Thanks
<<

Filename: 66418_danhtruc.lsp

Trang 112/330

112