Đến nội dung


Hình ảnh
* * * - - 2 Bình chọn

Viết Lisp theo yêu cầu


  • Chủ đề bị khóa Chủ đề bị khóa
2780 replies to this topic

#541 Ar_Chanwoo

Ar_Chanwoo

    biết lệnh break

  • Members
  • PipPipPipPip
  • 224 Bài viết
Điểm đánh giá: 38 (tàm tạm)

Đã gửi 14 March 2008 - 11:41 PM

Bạn xem ở đây: http://www.cadviet.com/forum/code-gioi-han...lisp-t1024.html

cảm ơn anh Hoành đã giải thích, nhưng cái mà e đang cần là cái có khả năng liệt kê các lisp hoặc các lệnh bị giới hạn thời gian sử dụng, vì e có nhiều lisp muốn khoá, và lệnh reset để làm mất hoàn toàn chức năng đó chứ ko phải tạo lại vòng lặp đó, e đọc đoạn a hướng dẫn về lệnh FUNC mà vẫn chưa hiểu.

-A có biết lệnh copy muti divide ko, a có thể viết lại lisp đó, thay việc copy đối tượng bất kì thì lisp sẽ copy text số và text chữ ttheo 1 tham số tăng nào đó, riêng text chữ thì nếu copy quá 26 chữ thì quay lại vòng lặp a,b,c....kết quả của lisp này là khi copy theo 2 chế độ muti và divide thì sẽ đc : 1,2,3,4,5,6,7,8,9..........hoặc a,b,c,d,e....
  • 0

#542 thanhbinh166

thanhbinh166

    biết pan

  • Members
  • Pip
  • 6 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 15 March 2008 - 05:52 PM

Nhờ bác Hoành viết hộ cái lisp như thế này:
- Xác định tính diện tích các vùng được pick;
- Biên của các vùng được đặt vào 1 layer và sau đó ẩn đi (mục đích để kiểm tra sau này);
- Các vùng không được trùng nhau (bị pick 2 lần sẽ báo và diện tích chỉ được tính 1 lần); (đây là vấn đề cần quan tâm nhất)
- Kết quả được ghi ra text trên bản vẽ cad.
  • 0

#543 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4106 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 15 March 2008 - 06:00 PM

Nhờ bác Hoành viết hộ cái lisp như thế này:
1 - Xác định tính diện tích các vùng được pick;
2 - Biên của các vùng được đặt vào 1 layer và sau đó ẩn đi (mục đích để kiểm tra sau này);
3 - Các vùng không được trùng nhau (bị pick 2 lần sẽ báo và diện tích chỉ được tính 1 lần); (đây là vấn đề cần quan tâm nhất)
4 - Kết quả được ghi ra text trên bản vẽ cad.


1, 2, 4 đã có trên diễn đàn. Bạn hãy sử dụng chức năng search.
Chức năng 3 lisp không làm được (hoặc làm được thì quá phức tạp vượt ra ngoài khả năng của tôi).
  • 0

#544 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 16 March 2008 - 03:54 PM

Mình có một vấn đề như sau: khi in các trắc ngang thường phải edit lại số hiệu bản vẽ để tăng dần. Các bạn có thể giúp mình một lisp để khi mỗi lần click đúp vào số thứ tự đó thì nó tự động nhảy tăng thêm 1 không ? cám ơn rất nhiều.
  • 0

#545 Ar_Chanwoo

Ar_Chanwoo

    biết lệnh break

  • Members
  • PipPipPipPip
  • 224 Bài viết
Điểm đánh giá: 38 (tàm tạm)

Đã gửi 17 March 2008 - 09:02 AM

Ai có lisp đánh cốt tự động cập nhật theo tỉ lệ bản vẽ không, lisp sẽ hỏi bạn có muốn chên cốt điểm gốc không? sau đó cốt sẽ tự động cập nhật khi ta di con trỏ chuột, và 1 lisp là copy cốt, khi copy cốt sẽ tự nhảy theo khoang cách mà ta copy
  • 0

#546 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 17 March 2008 - 09:37 AM

1, 2, 4 đã có trên diễn đàn. Bạn hãy sử dụng chức năng search.
Chức năng 3 lisp không làm được (hoặc làm được thì quá phức tạp vượt ra ngoài khả năng của tôi).



Chức năng 3 nếu dùng cho đối tượng đã có trên bản vẽ (có nghĩa là object) thì được bác Hoành ạh.
Chỉ cần dùng một list ghi lại ID của đối tượng đã được tính diện tích (bài viết về tự động cập nhật Diện tích tôi có dùng cái này)
Tuy nhiên nếu mở lại bản vẽ thì sẽ không biết cái nào đã được tính
  • 0

#547 Ar_Chanwoo

Ar_Chanwoo

    biết lệnh break

  • Members
  • PipPipPipPip
  • 224 Bài viết
Điểm đánh giá: 38 (tàm tạm)

Đã gửi 17 March 2008 - 11:41 AM

Có Lisp nào để sau khi gõ lệnh cua lisp thì lisp sẽ giúp ta chèn 1 file ở 1đường dẫn cố định,vì e có 1 chương trình thống kê thép, cứ mỗi lần muốn thống kê thép lại cứ phải vào cái file ấy rồi mới thống kê đc!
  • 0

#548 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 17 March 2008 - 11:43 AM

Có Lisp nào để sau khi gõ lệnh cua lisp thì lisp sẽ giúp ta chèn 1 file ở 1đường dẫn cố định,vì e có 1 chương trình thống kê thép, cứ mỗi lần muốn thống kê thép lại cứ phải vào cái file ấy rồi mới thống kê đc!



Bạn có thể nói rõ hơn không???
  • 0

#549 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4106 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 17 March 2008 - 01:02 PM

Có Lisp nào để sau khi gõ lệnh cua lisp thì lisp sẽ giúp ta chèn 1 file ở 1đường dẫn cố định,vì e có 1 chương trình thống kê thép, cứ mỗi lần muốn thống kê thép lại cứ phải vào cái file ấy rồi mới thống kê đc!


Bạn copy file đó vào thư mục support của AutoCAD.

Sau đó, thay vì gõ lệnh lisp mà bạn yêu cầu, bạn dùng lệnh insert rồi gõ tên file (không cần đuôi dwg) vào mục block name.
  • 1

#550 Ar_Chanwoo

Ar_Chanwoo

    biết lệnh break

  • Members
  • PipPipPipPip
  • 224 Bài viết
Điểm đánh giá: 38 (tàm tạm)

Đã gửi 17 March 2008 - 05:20 PM

Bạn có thể nói rõ hơn không???

Có nghĩa là e có 1 chương trình thống kê thép, nó bắt e phải mở File dwg mà nó cho rồi sửa các thông số thép trên đó, bất tiện ở chỗ là cứ mỗi lần muốn thống kê thép lại phải mở thêm 1 cửa sổ cad nữa, khác với cửa sổ đang làm việc để thông kê thép, E từng thấy 1 lisp chỉ cần gõ lệnh thì sẽ insert đc bảng thống kê đó lên bản vẽ mình đang làm việc!
  • 0

#551 Ar_Chanwoo

Ar_Chanwoo

    biết lệnh break

  • Members
  • PipPipPipPip
  • 224 Bài viết
Điểm đánh giá: 38 (tàm tạm)

Đã gửi 17 March 2008 - 05:25 PM

Bạn copy file đó vào thư mục support của AutoCAD.

Sau đó, thay vì gõ lệnh lisp mà bạn yêu cầu, bạn dùng lệnh insert rồi gõ tên file (không cần đuôi dwg) vào mục block name.


cảm ơn Pác rất nhiều, e học đc rất nhiều từ pac đó, Còn cái kia, a viết lisp cho e đc ko, vì lisp thống kê đó e định dùng để chia sẻ cho những người khác, mà ko phải ai cũng biết gõ lệnh insert, gõ đúng tên file cad, rồi còn phải Explode file cad trong insert nữa chứ!!!!!!
  • 0

#552 ATnguyen

ATnguyen

    biết pan

  • Members
  • Pip
  • 6 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 17 March 2008 - 08:42 PM

Tên lệnh là XDD (xác định dốc).

Cách sử dụng như sau:
Trước khi sử dụng, hãy download file zip này về và bung nén rồi copy file muitendoc.dwg vào thư mục support: <a href="http://www.cadviet.com/upfiles/muitendoc.zip" target="_blank">http://www.cadviet.com/upfiles/muitendoc.zip</a>. Mục đích là tạo block mũi tên để chương trình chèn vào.
Bước 1. Khi gọi lệnh XDD, chương trình sẽ yêu cầu bạn pick vào một pline đường tim. Chương trình sẽ tự động nhận ra text cao độ. Và highlight 2 đối tượng mà chương trình tự động tìm được.
Bước 2. Nếu 2 đối tượng mà chương trình tìm là phù hợp, bạn chỉ cần pick vào tọa độ điểm chèn kết quả.
Bước 3 (nếu cần). Nếu 2 đối tượng mà chương trình tìm tại bước 1 không đúng, bạn hãy nhấn enter, chương trình sẽ yêu cầu bạn chọn 2 đối tượng text cao độ. Sau đó chương trình sẽ hỏi tọa độ điểm chèn như bước 2.


(defun c:xdd (/ dc)
(if (not (tblsearch "block" "muitendoc"))
(alert
"\nBan phai copy file muitendoc.dwg tu: [url="http://www.cadviet.com/upfiles/muitendoc.dwg"]<a href="http://www.cadviet.com/upfiles/muitendoc.dwg" target="_blank">http://www.cadviet.com/upfiles/muitendoc.dwg[/url]</a> vao thu muc support!"
)
(progn
(setq
sel (entsel "\nHay pick vao pline: ")
ent (car sel)
len (vla-get-length (vlax-ename->vla-object ent))
lst (vl-remove nil
(mapcar '(lambda (x)
(if (= (car x) 10)
(cdr x)
nil
)
)
(entget ent)
)
)
p1 (car lst)
p2 (car (reverse lst))
sst (ssget "X" '((0 . "TEXT") (8 . "1-cotduong")))
lstt (ss2ent sst)
lstt (mapcar '(lambda (e)
(setq p (cdr (assoc 10 (entget e)))
d1 (distance p p1)
d2 (distance p p2)
)
(list e d1 d2)
)
lstt
)
e1 (caar
(vl-sort lstt '(lambda (x1 x2) (< (cadr x1) (cadr x2))))
)
e2 (caar
(vl-sort lstt '(lambda (x1 x2) (< (caddr x1) (caddr x2))))
)
)

(redraw e1 3)
(redraw e2 3)
(while (not dc)
(setq dc
(getpoint
"\nHay vao diem chen ket qua, hoac nhan enter de chon lai 2 text: "
)
)
(if (not dc)
(progn
(redraw e1 4)
(redraw e2 4)
(setq e1 (car (entsel "\nVao text dau: ")))
(redraw e1 3)
(setq e2 (car (entsel "\nVao text cuoi: "))
)
)
)
)
(redraw e1 4)
(redraw e2 4)
(setq c1 (atof (cdr (assoc 1 (entget e1))))
c2 (atof (cdr (assoc 1 (entget e2))))
dh (- c2 c1)
i (/ dh len)
ang (* (angle p2 p1) (/ 180.0 pi))
)
(if (< i 0.0) (setq i (abs i) ang (+ ang 180.0)))
(putvalue dc ang i len)
)
)
(princ)
)
(defun putvalue (p a i l)
(command ".insert"
"muitendoc"
p
1.0
1.0
ang
(rtos l 2 2)
(rtos i 2 3)
)
)

(defun ss2ent (ss / sodt index lstent)
(setq
sodt (if ss
(sslength ss)
0
)
index 0
)
(repeat sodt
(setq ent (ssname ss index)
index (1+ index)
lstent (cons ent lstent)
)
)
(reverse lstent)
)


Bác ơi, đợt vừa rồi e bận đi công tác chưa dùng được, hôm nay test thử thì trước tiên là nó cứ báo chưa copy file vào /support mặc dù e đã copy rồi, dùng cả cách nhét qua Tool/Option/Files cũng ko được. Sau đó em phải dùng cách nông dân là insert tạm 1 cái block có tên như thế vào bản vẽ, dùng /xdd rồi, chọn pline rồi thì nó hiện
Hay pick vao pline: ; error: bad argument type: lentityp nil
E ko biết tại sao nữa, e dùng Cad2004. Bác thử chk lại hộ e với.
thanks Bác.

  • 0

#553 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4106 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 17 March 2008 - 11:26 PM

Bác ơi, đợt vừa rồi e bận đi công tác chưa dùng được, hôm nay test thử thì trước tiên là nó cứ báo chưa copy file vào /support mặc dù e đã copy rồi, dùng cả cách nhét qua Tool/Option/Files cũng ko được. Sau đó em phải dùng cách nông dân là insert tạm 1 cái block có tên như thế vào bản vẽ, dùng /xdd rồi, chọn pline rồi thì nó hiện
Hay pick vao pline: ; error: bad argument type: lentityp nil
E ko biết tại sao nữa, e dùng Cad2004. Bác thử chk lại hộ e với.
thanks Bác.

Bạn đã pick đúng pline chưa?

Bạn có thể upload file bạn chạy bị lỗi lên chưa?
  • 0

#554 Ar_Chanwoo

Ar_Chanwoo

    biết lệnh break

  • Members
  • PipPipPipPip
  • 224 Bài viết
Điểm đánh giá: 38 (tàm tạm)

Đã gửi 18 March 2008 - 12:22 AM

Có nghĩa là e có 1 chương trình thống kê thép, nó bắt e phải mở File dwg mà nó cho rồi sửa các thông số thép trên đó, bất tiện ở chỗ là cứ mỗi lần muốn thống kê thép lại phải mở thêm 1 cửa sổ cad nữa, khác với cửa sổ đang làm việc để thông kê thép, E từng thấy 1 lisp chỉ cần gõ lệnh thì sẽ insert đc bảng thống kê đó lên bản vẽ mình đang làm việc!

Giúp mình ĐI các Bạn!!!!!!!!!!
  • 0

#555 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4106 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 18 March 2008 - 05:46 AM

Giúp mình ĐI các Bạn!!!!!!!!!!


Giúp rồi mà:

Bạn copy file đó vào thư mục support của AutoCAD.

Sau đó, thay vì gõ lệnh lisp mà bạn yêu cầu, bạn dùng lệnh insert rồi gõ tên file (không cần đuôi dwg) vào mục block name.

Bạn cứ làm như tôi nói, không phải lisp làm gì cho mệt công appload. Hoặc bạn cứ quan niệm lisp tôi cho bạn có lệnh là I.
  • 0

#556 Ar_Chanwoo

Ar_Chanwoo

    biết lệnh break

  • Members
  • PipPipPipPip
  • 224 Bài viết
Điểm đánh giá: 38 (tàm tạm)

Đã gửi 18 March 2008 - 10:13 AM

Giúp rồi mà:

Bạn cứ làm như tôi nói, không phải lisp làm gì cho mệt công appload. Hoặc bạn cứ quan niệm lisp tôi cho bạn có lệnh là I.

Như thế này có đc không anh, nhưng khổ nỗi nó bị Block lại 1 khối
  • 0

#557 Ar_Chanwoo

Ar_Chanwoo

    biết lệnh break

  • Members
  • PipPipPipPip
  • 224 Bài viết
Điểm đánh giá: 38 (tàm tạm)

Đã gửi 18 March 2008 - 10:14 AM

Giúp rồi mà:

Bạn cứ làm như tôi nói, không phải lisp làm gì cho mệt công appload. Hoặc bạn cứ quan niệm lisp tôi cho bạn có lệnh là I.

Như thế này có đc không anh, nhưng khổ nỗi nó bị Block lại 1 khối

(defun c:btk()
(setvar "cmdecho" 0)
(command "insert" "bangtk" (list 0 0) "1" "1" "0")
(princ "\nLenh tu dong lap bang thong ke. BTK")
(princ "\nOK...")
(princ)
)
  • 0

#558 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 18 March 2008 - 01:59 PM

cảm ơn Pác rất nhiều, e học đc rất nhiều từ pac đó, Còn cái kia, a viết lisp cho e đc ko, vì lisp thống kê đó e định dùng để chia sẻ cho những người khác, mà ko phải ai cũng biết gõ lệnh insert, gõ đúng tên file cad, rồi còn phải Explode file cad trong insert nữa chứ!!!!!!


http://www.cadviet.c...mp;hl=duy782006

Bạn xem ở đây có vài cái cho bạn lựa chọn đấy.
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#559 themanh01

themanh01

    biết zoom

  • Members
  • Pip
  • 12 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 18 March 2008 - 08:19 PM

Ban xai lenh textmask cua Express ay. Muc dich nhu ban mong muon. Nhung cai nay co nhuoc diem la dung wipeout de che fan hatch cua text. Nhung có khi move text thì wipeout rớt lại thì vẫn bị nhu tình trạng hatch nằm chung với text. Song vẫn khác phuc đc. <_<

Cám ơn bác nhưng cái đó chỉ dùng cho text được thôi, em muốn bất cứ một cái gì cũng được ví dụ như hình tròn, hcn.....bác giúp thêm nhé. thank!
  • 0

#560 anhkhoa

anhkhoa

    Chưa sử dụng CAD

  • Members
  • Pip
  • 4 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 19 March 2008 - 11:07 AM

Mình muốn có 1 lisp, khi load lisp thì tự động format usb (ổ F). Bạn nào giúp mình nhé.
  • 0