Jump to content
InfoFile
Tác giả: Doan Van Ha
Bài viết gốc: 185937
Tên lệnh: ha
Lisp lọc các block cùng tên



Có phải bạn muốn như thế này không?

@Ketxu: thank Ketxu, nhưng tôi chưa hề dùng Dyn_Block nên hơi bị... lạc hậu chuyện này.

Filename: 185937_ha.lsp
Tác giả: ketxu
Bài viết gốc: 185933
Tên lệnh: test
Chọn các Block cùng tên


^^
Theo như ý của bạn OP thì nó là effectivename, không phải xử lý trường hợp DB đã thực thi action

P/s : code :

(defun c:test(/ rn ssblk blkName)(vl-load-com)
(prompt "\nChon Block mau :")
(setq rn (lambda(x)(vla-get-EffectiveName (vlax-ename->vla-object x)))
blkName (rn (ssname (ssget ":S" (list (cons 0 "INSERT"))) 0)))
(prompt "\nChon khu vuc chua Block...
>>

^^
Theo như ý của bạn OP thì nó là effectivename, không phải xử lý trường hợp DB đã thực thi action

P/s : code :

(defun c:test(/ rn ssblk blkName)(vl-load-com)
(prompt "\nChon Block mau :")
(setq rn (lambda(x)(vla-get-EffectiveName (vlax-ename->vla-object x)))
blkName (rn (ssname (ssget ":S" (list (cons 0 "INSERT"))) 0)))
(prompt "\nChon khu vuc chua Block :")
(setq ssBlk (ssget (list (cons 0 "INSERT")(cons 2 (strcat "`*U*," blkName)))))
(mapcar '(lambda(x)(if (not (eq (rn x) blkName))(ssdel x ssblk)))
(mapcar 'cadr (vl-remove-if '(lambda(x)(listp (cadr x))) (ssnamex ssBlk)))) ;hoac thay bang acet neu thich nhe ^^
(sssetfirst nil ssBlk)
)

<<

Filename: 185933_test.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 186092
Tên lệnh: mtxtc
Lisp đếm đối tượng Mtext lập thành bảng

<p></p>
<p>hề hề hề,</p>
<p>Bạn dùng thử cái này coi sao nhé.</p>
<p></div>

Filename: 186092_mtxtc.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 186059
Tên lệnh: mkin
Rải và đánh số thứ tự cọc

Hề hề hề,
Bạn dùng thử cái này coi có ưng ý không nhé.
Mình sử dụng cái đoạn lisp enmake block thuộc tính của bác thaistreet. (chứ cái vụ này mình chưa rành rẽ lắm). Hãy nhớ cảm ơn bác ấy nếu bạn thấy hài lòng
Phần còn lại là mình xào nấu từ cái lisp cũ đã viết. Sở dĩ hơi lâu vì mình phải mò mẫm cái của bác Thái cho nó thung thủng rồi mới dám xài. Tuy vậy cũng...
>>

Hề hề hề,
Bạn dùng thử cái này coi có ưng ý không nhé.
Mình sử dụng cái đoạn lisp enmake block thuộc tính của bác thaistreet. (chứ cái vụ này mình chưa rành rẽ lắm). Hãy nhớ cảm ơn bác ấy nếu bạn thấy hài lòng
Phần còn lại là mình xào nấu từ cái lisp cũ đã viết. Sở dĩ hơi lâu vì mình phải mò mẫm cái của bác Thái cho nó thung thủng rồi mới dám xài. Tuy vậy cũng có thể có những điểm mà mình chưa hiểu hết nên không khai thác triệt để được, mong bạn thông cảm.
Lisp này có tiến bộ hơn lisp trước ở chỗ bạn có thể array với khoảng cách dòng và khoảng cach cột khác nhau vì mình không chơi với thằng measure nữa.
Còn nhanh hơn hay chậm hơn thì mình dành cho bạn tự rút ra kết luận.
Hề hề hề,

Bạn chú ý rằng mình chưa khử biến, điều này không quá khó với bạn nên mong bạn tự giải quyết nhé.
<<

Filename: 186059_mkin.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 186105
Tên lệnh: mtxtc
Lisp đếm đối tượng Mtext lập thành bảng


Do khi bác PTB up lên thì CadViet bị lỗi. Tôi sửa giùm cho bạn đây.
Bác PTB thức đến hơn 3h sáng để viết cho bạn, nên ngoài thanh+bia bạn cần nhấn nút "Like This" cho bác ấy đi nhé!

Filename: 186105_mtxtc.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 186210
Tên lệnh: c6 f6 ch6
lisp fillet,copy,champer, đo diện tích.


Nói chung là bạn hơi bị... làm biếng! Fillet chỉ nhập R có 1 lần, còn Chamfer chỉ nhập d1 và d2 cũng chỉ 1 lần rồi sau đó mặc định. Nhưng thôi kệ, code cho bạn đây. Lần sau y/c cái gì cho hoành tráng luôn (nhưng hoành tráng vừa vừa kẻo botay.com đó nghe).

Filename: 186210_c6_f6_ch6.lsp
Tác giả: lp_hai
Bài viết gốc: 108423
Tên lệnh: ad
Lisp sửa giá trị của dim

mình cũng chẵn biết nhiều lắm. mong giúp dc bạn

http://www.cadviet.com/upfiles/3/ad.lsp

Filename: 108423_ad.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 122259
Tên lệnh: xbl
Nhờ cao thủ sửa giúp em đoạn list Explode !

Chào bạn hhhhgggg,
Bạn xem cái mình sửa lại này đã ổn chưa nhé,

Chúc bạn vui.

Filename: 122259_xbl.lsp
Tác giả: gia_bach
Bài viết gốc: 66777
Tên lệnh: hcn
Vấn đề vát mép trong Autolisp

->to duy782006 :
thử tìm kiếm biến lưu giữ giá trị bán kính khi dùng lệnh rec nhưng không thấy đuợc thông tin gì ! <_<
Update Lisp Hình chử nhật

Filename: 66777_hcn.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 186295
Tên lệnh: f1
xuất block nhanh !

Hề hề hề, cho mình ké ý kiến của bác lp-hai nhé
Nếu như chắc chắn rằng cái block mang tên 1 đã có trên bản vẽ thì bạn chủ thớt có thể chơi thử thằng cu này xem có đúng ý bạn không nhé. Nếu sai thì bạn phải tìm cách khác, còn nếu đúng thì bạn cứ thế mà phát huy với các block bạn muốn


Lưu ý rằng code lisp này đượic bảo mật ở cấp không không thấy nên...
>>

Hề hề hề, cho mình ké ý kiến của bác lp-hai nhé
Nếu như chắc chắn rằng cái block mang tên 1 đã có trên bản vẽ thì bạn chủ thớt có thể chơi thử thằng cu này xem có đúng ý bạn không nhé. Nếu sai thì bạn phải tìm cách khác, còn nếu đúng thì bạn cứ thế mà phát huy với các block bạn muốn


Lưu ý rằng code lisp này đượic bảo mật ở cấp không không thấy nên bạn hãy dè chừng khi sử dụng kẻo mà nó không được như ý bạn muốn đâu.
Hề hề hề,
<<

Filename: 186295_f1.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 186297
Tên lệnh: c6 f6 ch6
lisp fillet,copy,champer, đo diện tích.

Hề hề hề, chả biết có phải là bạn cần cái này hay không, nhưng thú thực là mình không khoái cái thói ỷ lại của bạn. Là một thành viên có hạng của CADviet rồi, bạn cũng đã yêu cầu không ít các vấn đề, và cũng không phải là người không biết gì về lisp. Những yêu cầu đơn giản kiểu này bạn hoàn toàn có đủ khả năng tự làm nếu như bạn thực sự là cần nó và muốn tự làm...
>>

Hề hề hề, chả biết có phải là bạn cần cái này hay không, nhưng thú thực là mình không khoái cái thói ỷ lại của bạn. Là một thành viên có hạng của CADviet rồi, bạn cũng đã yêu cầu không ít các vấn đề, và cũng không phải là người không biết gì về lisp. Những yêu cầu đơn giản kiểu này bạn hoàn toàn có đủ khả năng tự làm nếu như bạn thực sự là cần nó và muốn tự làm ra nó. Đằng này bạn hoàn toàn chả có ý gì muốn tự mình làm mà chỉ muốn đi nhờ và ăn sẵn. Như vậy thực là không hay chút nào, và nó chỉ làm bạn trở nên người lợi dụng bạn bè chứ chả thể khá lên được đâu.
Cũng chính vì lý do này nên mặc dầu không quá khó nhưng người muốn giúp bạn sẽ chả bao giờ là nhiều cả. Mình viết cái này có nhẽ chả phải là cho riêng bạn đâu nhưng mong rằng qua cái này bạn sẽ tự hiểu được mình cần gì để mà cố gắng chứ đừng ỷ lại nhé.

Chúc bạn chóng thành công trong cuộc sống.
<<

Filename: 186297_c6_f6_ch6.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 186277
Tên lệnh: ha
các bác giúp em 1 lisp về lệnh Break


Code nhanh.

Filename: 186277_ha.lsp
Tác giả: phamngoctukts
Bài viết gốc: 112256
Tên lệnh: dv
Viết lisp theo yêu cầu [phần 2]

Của bạn đây

Filename: 112256_dv.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 186239
Tên lệnh: mtxtc
Lisp đếm đối tượng Mtext lập thành bảng

Hề hề hề,
Không biết cái này đã thỏa mãn yêu cầu của bạn hay chưa, song mình cứ post lên để hy vọng có thêm sự chỉ bảo của các bác khác. Cái này có khác một chút với cái truớc ở chỗ chỉ cần quét chọn toàn bộ các bản vẽ một lần chứ không phải chọn mỗi bản vẽ một lần theo thứ tự. Tuy nhiên do không thấy có yêu cầu nên mình không sắp xếp lại trật tự các bản...
>>

Hề hề hề,
Không biết cái này đã thỏa mãn yêu cầu của bạn hay chưa, song mình cứ post lên để hy vọng có thêm sự chỉ bảo của các bác khác. Cái này có khác một chút với cái truớc ở chỗ chỉ cần quét chọn toàn bộ các bản vẽ một lần chứ không phải chọn mỗi bản vẽ một lần theo thứ tự. Tuy nhiên do không thấy có yêu cầu nên mình không sắp xếp lại trật tự các bản vẽ theo bất kỳ một quy luật nào cả (như bác ketxu đã làm) mà cái trật tự các bản vẽ trong bảng này do cái trật tự của nó trong bộ chọn đượctạo thành khi quét chọn. cái trật tự này nhiều khi cũng khá oái oăm chứ chả phải đẹp như mơ đâu. Nếu bạn thấy khó chịu với cái trật tự này thì hãy tự trách mình đã nhé.
Tuy vậy do dựa vào cái bản vẽ đã post bên trên nên bạn lưu ý trong trường hợp khung tên của có cấu trúc khác so với cái khung tên đó thì có thể lisp sẽ không tìm được các ký hiệu của bản vẽ bạn nhé. Khi đó bạn chịu khó đọc lisp và sửa lại cái vùng chọn cho thích hợp là Ok.
Lisp sử dụng style hiện hành nên nếu bạn để bản vẽ ở style không sử dụng font tiếng Việt thì cái text bạn sẽ thấy không giống ai đâu. Vì thế hãy chuyển style cho thích hợp trước kh chạy lisp.
Lisp này cũng sửa lỗi của lisp trước khi tên bản vẽ có nhiều dòng.
Rất vui khi bạn tham gia vào topic này.

Chúc bạn vui.
@ bác ketxu: do mình xài CAD2004 nên chả thể có ý kiến phản hồi với bài post của bác được. Hề hề hề, hãy đợi khi mình xài được CAD2008 bác nhé.....
<<

Filename: 186239_mtxtc.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 121559
Tên lệnh: dagiac
hỏi vấn đề tạo liên kết LSP và dialog DCL

Hề hề hề,
Biếu bạn một cái dùng chơi cho biết nhé.
Cái này cho phép bạn xài cái button Help mà bạn đã mất công tạo ra để xem một phần cái file chm của bạn mà mình chơi kiểu củ chuối là chuyển nó thành file *.txt để đọc và hiển thị từng dòng của nó bằng hàm alert.
Đọc xong dòng nào bạn click vào nút OK trên bảng alert nó sẽ hiển thị dòng tiếp theo cho bạn đọc....
>>

Hề hề hề,
Biếu bạn một cái dùng chơi cho biết nhé.
Cái này cho phép bạn xài cái button Help mà bạn đã mất công tạo ra để xem một phần cái file chm của bạn mà mình chơi kiểu củ chuối là chuyển nó thành file *.txt để đọc và hiển thị từng dòng của nó bằng hàm alert.
Đọc xong dòng nào bạn click vào nút OK trên bảng alert nó sẽ hiển thị dòng tiếp theo cho bạn đọc. Tới khi hết văn bản thì thôi.
Cái củ chuối này chỉ để bạn hình dung thôi chứ chưa phải là cái bạn cần đâu nhé, vì nó có những bất tiện nhất định như chỉ đọc từng dòng, phải đọc hết mới thoát hộp thoại,.... Tuy nhiên nó là cái gợi ý để bạn có thể cải thiện nó ngon hơn. Việc khắc phục những nhược điểm trên không phải là không thể mà chỉ là mình chưa kịp nghĩ ra thôi. Hề hề hề.
Trước khi chạy lisp nhớ copy file văn bản mà mình gửi kèm ở đây vào notepad và đặt tên file là dialog.txt . Sau đó lưu nó vào một thư mục bất kỳ trên ổ đĩa của bạn. Khi lisp hiển thị hộp thoại chọn tên file thì bạn hãy dò đến cái thư mục đó nhé.

1/- File lisp:


Hề hề hề, hy vọng rằng bạn sẽ không chán cái củ chuối này...
<<

Filename: 121559_dagiac.lsp
Tác giả: philipdn
Bài viết gốc: 101818
Tên lệnh: exam
Giao diện hộp thoại trong AutoLisp
Các bác pro cho mình hỏi chút về hộp thoại DCL, tìm nhiều nơi nhưng ko thấy hướng dẫn đâu hết
Để các giá trị trong hộp thoại tự động cập nhật giá trị thì làm như thế nào nhỉ?
Ví dụ như tôi có đoạn code và dcl sau:


Làm sao để khi người dùng nhập giá trị vào ô X hoặc Y thì giá trị ô kết quả sẽ tự động hiển thị kết quả vậy
Thanks

Filename: 101818_exam.lsp
Tác giả: ndtnv
Bài viết gốc: 38145
Tên lệnh: extrim exextend exadjust
Dùng chương trình con để rút gọn code
Ví dụ 1:
Khi viết lisp, các hàm lấy mã dxf của đối tượng thường dùng rất nhiều là

Filename: 38145_extrim_exextend_exadjust.lsp
Tác giả: whatcholingon
Bài viết gốc: 186507
Tên lệnh: cv
Dấu "chấm" và dấu "phẩy" trong Autocad
Nếu khó gặm quá thì ta làm thủ công thui. Dùng lisp chuyển dấu “.’ Thành dấu “,” :


Lisp này của Mr. Hoanh nè!

Filename: 186507_cv.lsp
Tác giả: lp_hai
Bài viết gốc: 186599
Tên lệnh: lo
Hỏi về Block thuộc tính

Mình cũng ko chắc nhưng có lẽ là do dynamic block nen nó ko làm việc dc???
bạn có thể xài cái lisp mình viết, lisp này chỉ yêu cầu bạn chọn block mẫu, sau đó tự nó làm việc. Xong rồi bạn có thể test lại bằng lệnh attsync xem nó có bị nữa ko nhá!

(defun c:lo(/ ent dtc dt1 sdt id sl nd1 lst1 lt)
(setq dtc(car (entsel "\nchon block:")))
(get-block dtc)
(setq
sdt...
>>

Mình cũng ko chắc nhưng có lẽ là do dynamic block nen nó ko làm việc dc???
bạn có thể xài cái lisp mình viết, lisp này chỉ yêu cầu bạn chọn block mẫu, sau đó tự nó làm việc. Xong rồi bạn có thể test lại bằng lệnh attsync xem nó có bị nữa ko nhá!

(defun c:lo(/ ent dtc dt1 sdt id sl nd1 lst1 lt)
(setq dtc(car (entsel "\nchon block:")))
(get-block dtc)
(setq
sdt (sslength dt1)
id 0
lt (list))
(repeat sdt
(setq ent (ssname dt1 id)
id (1+ id)
nd1 (assoc 1 (entget (entnext ent)))
lt (cons nd1 lt)
)
)
(command "attsync" "s" dtc "y")
(setq sl -1
id (- id 1)
)
(repeat sdt
(setq ent (ssname dt1 id)
id (1- id)
lst1 (entget (entnext ent))
lst1 (subst (nth (+ sl 1) lt) (assoc 1 lst1) lst1)
)
(setq sl (+ sl 1))
(entmod lst1)

)
)

;;;;;;;;;;;;;;;;;;;;;;;
(defun get-block(entm / sdtb idb ent2 entb dtm namem name BBB entb)
(setq dtm (vlax-ename->vla-object entm))
(setq namem (if(vlax-property-available-p dtm 'effectivename)
(vla-get-effectivename dtm)
(vla-get-name dtm)
));;;
(setq BBB(SSGET "all" (list(cons 0 "INSERT") (assoc 8 (entget entm))))
sdtb (sslength BBB)
idb 0
dt1 (ssadd)
)
(repeat sdtb;;repeat
(setq entb (ssname BBB idb)
idb (1+ idb)
)
(setq ent2(vlax-ename->vla-object entb))
(setq name (if(vlax-property-available-p ent2 'effectivename)
(vla-get-effectivename ent2)
(vla-get-name ent2)
))
(if (= name namem)
(setq dt1 (ssadd entb dt1))
)
);;repeat
)

<<

Filename: 186599_lo.lsp
Tác giả: Luxury037
Bài viết gốc: 186643
Tên lệnh: noel xmastree
Các bạn muốn chơi game trên Cad thì vào đây
Tiếp cái này nữa : Tên lệnh : Noel
Một cây thông Noel sẽ được trang trí trên Acad

(defun c:noel () (c:XMASTREE))
(defun c:XMASTREE (/ rad R N Z dZ a da d H I J K +- s c)
(setq c (if (>= (getvar "acadver") "15")
vl-cmdf
command
)
)
(setq d distance
s setvar
)
(s "CMDECHO" 0)
(s "UCSICON" 0)
(s "TILEMODE"...
>>
Tiếp cái này nữa : Tên lệnh : Noel
Một cây thông Noel sẽ được trang trí trên Acad

(defun c:noel () (c:XMASTREE))
(defun c:XMASTREE (/ rad R N Z dZ a da d H I J K +- s c)
(setq c (if (>= (getvar "acadver") "15")
vl-cmdf
command
)
)
(setq d distance
s setvar
)
(s "CMDECHO" 0)
(s "UCSICON" 0)
(s "TILEMODE" 1)
(s "UCSFOLLOW" 0)
(s "HIGHLIGHT" 0)
(s "REGENMODE" 1)
(c "_.LINE" "0,0" "1,1" "")
(c "_.ZOOM" "_E")
(C "_.LAYER" "_U" "*" "")
(C "_.ERASE" (ssget "_X") "")
(c "_.UCS" "_W")
(C "_.VPOINT" "-3,-3,1.2")
(C "_.ZOOM" "_C" "0,0,7" 15)
(defun rad (Z) (* 0.75 (sqrt (- 12.0 Z))))
(setq N 25
Z 1.0
dZ 0.5
a 0.0
da (/ pi N)
hpi (* pi 0.5)
)
(while (< Z 12.0)
(setq R (rad Z))
(repeat N
(setq +- (if (= +- -)
+
-
)
H (list 0.0 0.0 (+- Z (* dz 0.25)))
I (polar H a R)
a (+ a da)
I (mapcar '+ I (list 0.0 0.0 (* dZ 0.5)))
J (polar H a (+ R R))
a (+ a da)
J (mapcar '+ J (list 0.0 0.0 dZ))
K (polar H a R)
K (mapcar '+ K (list 0.0 0.0 (* dZ 0.1)))
)
(entmake (list '(0 . "3DFACE")
'(62 . 3)
'(70 . 0)
(cons 10 H)
(cons 11 I)
(cons 12 J)
(cons 13 K)
)
)
(if (and (zerop (rem (1- Z) 1)) (zerop (rem N 5)))
(progn
(entmake (list '(0 . "CIRCLE")
(cons 10 J)
'(40 . 0.07)
'(39 . 0.35)
'(62 . 255)
)
)
(prompt " HO")
(setq J (mapcar '+ J (list 0.0 0.0 0.4)))
(entmake
(list '(0 . "3DFACE")
'(62 . 2)
'(70 . 0)
(cons 10 (polar J (+ a hpi) (* (d I K) 0.2)))
(cons 11 (polar J (- a hpi) (* (d I K) 0.2)))
(cons 12 (mapcar '+ J (list 0.0 0.0 (* dZ 0.5))))
(cons 13 (mapcar '+ J (list 0.0 0.0 (* dZ 0.5))))
)
)
)
)
)
(terpri)
(setq Z (+ Z dZ)
a (+ a (/ da 2))
)
)
(entmake '((0 . "3DFACE")
(62 . 7)
(10 -0.536 0.57073 13.225)
(11 0.5123 -0.545566 13.225)
(12 -0.011815 0.012582 12.6687)
(13 -0.0118153 0.012582 12.6687)
(70 . 0)
)
)
(entmake '((0 . "3DFACE")
(62 . 7)
(10 -0.3357 0.3575 12.325)
(11 -0.0118 0.01258 13.7813)
(12 0.18839 -0.200611 12.8812)
(13 0.188387 -0.200611 12.8812)
(70 . 0)
)
)
(entmake '((0 . "3DFACE")
(62 . 7)
(10 -0.536 0.57073 13.225)
(11 0.31212 -0.33237 12.3249)
(12 0.111916 -0.11918 13.225)
(13 0.111916 -0.119179 13.225)
(70 . 0)
)
)
; (c "_.SHADE")
(command "_zoom" "_e")
(command "_zoom" ".9x")
(command "_shademode" "_g")
(setvar "cmdecho" 1)
(alert "\nMerry Christmas!\Chuc Giang Sinh Vui ve !")
(princ)
)

<<

Filename: 186643_noel_xmastree.lsp

Trang 71/330

71