Đế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

#521 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 10 March 2008 - 09:00 AM

Ai có thể viết hộ e lisp này đc không.
E muốn mỗi khi mở cad ra nó sẽ tự load 1 số lisp của e( khoảng 30file) mà không cần phải gõ lệnh gì hết, giống như Startup của windown ấy. Em đã thử làm 1file acad.lsp rồi để vào trong thư mục C:\ProgramAuto Cad 2007\acad.lsp rồi mà không ăn thua.File acad.lsp e port phía dưới.Mong các anh giúp đỡ!!!!!!!
http://www.cadviet.com/upfiles/acad.lsp


Dối với cad 2007 thì file này có ten là acaddoc.lsp
  • 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


#522 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 10 March 2008 - 09:53 AM

Hic, bác làm gì mà nặng lời thế. Em ko biết khi bác view file của em có lỗi gì ko mà tim lại nát như tương, nhưng ảnh sau đây em capture lại khi đã trim cái đoạn bên trái đi, pline đó sẽ có độ dài 110,37.

http://www.cadviet.com/upfiles/cd2.jpg

Lúc đầu em cũng định ngồi vẽ 1 cái vuông vắn, đơn giản nhưng em nghĩ làm gì để các bác trên này hiểu ý mình là được, ko nghĩ vì file cad đó mà để bác phải nặng lời thế này <_<

Em gửi lại file cad, bác xem giúp em nhé. Sorry làm phiền bác nhiều quá.
http://www.cadviet.com/upfiles/cd2.dwg

@ATnguyen:
Mong rằng bạn hiểu cho, chương trình luôn luôn có tính máy móc, nó không có cái gọi là "thông minh" để hiểu vấn đề như con người! Mọi dữ liệu đầu vào cho chương trình phải chính xác đến từng chi tiết nhỏ. Yêu cầu của bạn không có gì khó, nhưng người lập trình buộc phải hiểu chính xác ý bạn. Ví dụ minh hoạ bằng file *.dwg là phương tiện tốt nhất để diễn đạt ý.
Ví dụ là ví dụ, nhưng thông qua ví dụ bằng số liệu cụ thể, người lập trình sẽ hiểu đúng ý bạn muốn gì. Bởi vậy, yêu cầu của ví dụ là phải chính xác. Với file bản vẽ bạn post lần đầu, chương trình biết lấy đâu ra con số 110.37 để tính toán và xử lý? Hãy tự trách mình trước khi cho rằng anh Hoành nặng lời!

@Anh Hoành:
Cũng mong rằng anh thông cảm phần nào với thành viên mới. Chỉ 1 lần là anh bạn ATnguyen hiểu ra và tự rút kinh nghiệm. Ssg sẽ không làm cái này, "để dành" cho anh chứng tỏ rằng mình không cố chấp!
  • 1

#523 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 10 March 2008 - 09:07 PM

Hic, bác làm gì mà nặng lời thế. Em ko biết khi bác view file của em có lỗi gì ko mà tim lại nát như tương, nhưng ảnh sau đây em capture lại khi đã trim cái đoạn bên trái đi, pline đó sẽ có độ dài 110,37.

Lúc đầu em cũng định ngồi vẽ 1 cái vuông vắn, đơn giản nhưng em nghĩ làm gì để các bác trên này hiểu ý mình là được, ko nghĩ vì file cad đó mà để bác phải nặng lời thế này <_<

Em gửi lại file cad, bác xem giúp em nhé. Sorry làm phiền bác nhiều quá.


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: http://www.cadviet.com/upfiles/muitendoc.zip. 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"][url="http://www.cadviet.com/upfiles/muitendoc.dwg"][url="http://www.cadviet.com/upfiles/muitendoc.dwg"]http://www.cadviet.com/upfiles/muitendoc.dwg 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)
)


@ssg: Cảm ơn bác.
  • 2

#524 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 11 March 2008 - 12:05 AM

E từng thấy trên diên đàn có nói về lisp vẽ cửa đi, cửa sổ trên mặt bằng mà khi vẽ xong không bị mất bắt điểm và bày cho đoạn code khắc phục lỗ đó nhưng giờ tìm mãi mà không thấy nữa! Ai có thể tìm giúp e không ?
Xin đa tạ!!!!!!!!!
  • 0

#525 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

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

E từng thấy trên diên đàn có nói về lisp vẽ cửa đi, cửa sổ trên mặt bằng mà khi vẽ xong không bị mất bắt điểm và bày cho đoạn code khắc phục lỗ đó nhưng giờ tìm mãi mà không thấy nữa! Ai có thể tìm giúp e không ?
Xin đa tạ!!!!!!!!!

Topic bàn về vấn đề bị mất bắt điểm ở đây: http://www.cadviet.c...-Lisp-t371.html
  • 0

#526 tranchan

tranchan

    biết lệnh break

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

Đã gửi 12 March 2008 - 09:31 AM

Hỏi bác Nguyễn Hoành tí xíu:

Toi hay xài lệnh tcase cua Express ma nó ko có fần bỏ gạch chân của text nen toi da them vào. Song ko dc. Mong bác chi giáo them .
Toi post file len bác xem giùm nhé> Thanks in advance.

http://www.cadviet.c...files/tcase.zip
  • 0

#527 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 12 March 2008 - 06:13 PM

E có 1 lisp thế này :


;-------------------

(Defun C:taoduongdan ( )
(setq OD (GETENV "ACAD"))
(setq NEW (strcat OD ";C:\\Tkxd30\DATA;C:\\Tkxd30\DMXAY;C:\\Tkxd30\\SUPPORT;C:\\Tkxd30\TVDL_V30;C:\\Tkxd30\\Vdien;C:\\Tkxd30\\CTK;C:\\Tkxd30\\Library\\lisp"))
(setenv "ACAD" NEW)

(Princ)
)

;-


Làm thế nào để Lisp tự thực hiên việc tạo đường dẫn như trên mà không cần gõ lệnh :TAODUONGDAN. Biết rằng Lisp này tưj động load mỗi khi mở Cad!
  • 0

#528 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 12 March 2008 - 09:17 PM

E có 1 lisp thế này :


;-------------------

(Defun C:taoduongdan ( )
(setq OD (GETENV "ACAD"))
(setq NEW (strcat OD ";C:\\Tkxd30\DATA;C:\\Tkxd30\DMXAY;C:\\Tkxd30\\SUPPORT;C:\\Tkxd30\TVDL_V30;C:\\Tkxd30\\Vdien;C:\\Tkxd30\\CTK;C:\\Tkxd30\\Library\\lisp"))
(setenv "ACAD" NEW)

(Princ)
)

;-


Làm thế nào để Lisp tự thực hiên việc tạo đường dẫn như trên mà không cần gõ lệnh :TAODUONGDAN. Biết rằng Lisp này tưj động load mỗi khi mở Cad!


Bạn xóa dòng (defun C:taoduongdan() và dấu ) cuối cùng đi là được (dấu ngoặc sau chữ (Princ))
  • 0

#529 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 12 March 2008 - 09:20 PM

Hỏi bác Nguyễn Hoành tí xíu:

Toi hay xài lệnh tcase cua Express ma nó ko có fần bỏ gạch chân của text nen toi da them vào. Song ko dc. Mong bác chi giáo them .
Toi post file len bác xem giùm nhé> Thanks in advance.

http://www.cadviet.com/upfiles/tcase.zip

Cảm ơn bạn đã tin tưởng.

Dò kim đáy bể giúp bạn kiểu này thì tôi xin chịu rồi.
  • 0

#530 tranchan

tranchan

    biết lệnh break

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

Đã gửi 12 March 2008 - 10:58 PM

Cảm ơn bạn đã tin tưởng.

Dò kim đáy bể giúp bạn kiểu này thì tôi xin chịu rồi.


Bac chắc đã xài qua lệnh tcase rồi . Vay thì toi vắn tắt thé này nhé.
Truớc hết toi sủa lại fần hộp thoại dcl, add them một mục lua chon nua. Nhung cai tcase nguyen cua cad dung vlisp check no cung bao nhu cua moi toi sua. Song khi load lenh thi no lai bao undefinition dialog. (Tôi nghĩ vấn đề lớn nhất là chỗ này).

Còn trong file tcasesup chỉ them 1 fucntion để bỏ gạch chân của text mà thôi. Trong tcase lisp thi thêm fần rẽ nhánh chọn lụa Underline.

Nói chung lệnh này khá hay đa năng xài cho text mtext và attribute đều đc. Vậy nên tôi muốn cai tiến nó thêm mà.
  • 0

#531 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 12 March 2008 - 11:51 PM

Bac chắc đã xài qua lệnh tcase rồi . Vay thì toi vắn tắt thé này nhé.
Truớc hết toi sủa lại fần hộp thoại dcl, add them một mục lua chon nua. Nhung cai tcase nguyen cua cad dung vlisp check no cung bao nhu cua moi toi sua. Song khi load lenh thi no lai bao undefinition dialog. (Tôi nghĩ vấn đề lớn nhất là chỗ này).

Còn trong file tcasesup chỉ them 1 fucntion để bỏ gạch chân của text mà thôi. Trong tcase lisp thi thêm fần rẽ nhánh chọn lụa Underline.

Nói chung lệnh này khá hay đa năng xài cho text mtext và attribute đều đc. Vậy nên tôi muốn cai tiến nó thêm mà.

Tôi biết vậy, nhưng khi download, giải nén và nhìn vào đống code của tcase mà bạn vừa upload lên muốn lăn ra ốm luôn.

Bạn sửa chỗ nào thì post đoạn sửa đó lên, mọi người có thể góp ý giúp bạn. Chứ bạn trộn lẫn gạo của bạn với gạo của AutoDesk rồi nhờ mọi người kiểm tra chất lượng gạo của bạn thì chắc chẳng ai giúp bạn được.
  • 0

#532 dacvien2007

dacvien2007

    biết vẽ polygon

  • Members
  • PipPip
  • 75 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 13 March 2008 - 12:30 PM

Mình muốn cần 1 lisp
để xử lý việc tính diện tính một hình đa giác bất kỳ của mốt thửa đất
Vẽ kích thứơc cạnh trên các đọan thẩng ,ghi ra bảng tọa độ các điểm góc hình đa giác và chiều dài các cạnh đó và chung bảng
Rất mong cac anh giúp
  • 0

#533 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 13 March 2008 - 12:32 PM

Mình muốn cần 1 lisp
để xử lý viện tính diện tính một hình đa giác bất kỳ
Vẽ kích thứơc cạnh trên các đọan thẩng ,ghi ra bảng tọa độ các điểm góc hình đa giác và chiều dài các cạnh đó và chung bảng
Rất mong cac anh giúp

Bạn nói rõ hơn được không?

Bạn muốn gì? nếu có file cad thì tốt!
  • 0

#534 dacvien2007

dacvien2007

    biết vẽ polygon

  • Members
  • PipPip
  • 75 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 13 March 2008 - 12:37 PM

Như là công việc đo đạc đất đai
Khi đo xong ta vẽ hình thửa đất
Sử dụng tính diện tích hình đó , thể hiện chiều dài các cạnh thửa đất
Xong nó tư động ghi các tọa độ đỉnh của hình và chiều dài qua các điểm vào bảng
  • 0

#535 tnmtpc

tnmtpc

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 370 Bài viết
Điểm đánh giá: 206 (khá)

Đã gửi 13 March 2008 - 01:03 PM

Như là công việc đo đạc đất đai
Khi đo xong ta vẽ hình thửa đất
Sử dụng tính diện tích hình đó , thể hiện chiều dài các cạnh thửa đất
Xong nó tư động ghi các tọa độ đỉnh của hình và chiều dài qua các điểm vào bảng

Bạn phải yêu cầu bác Hoành thế này này, yêu cầu như bạn thì pick từng đám đất để ghi diện tích à? Không ổn. Nhờ Bác hoành như sau: có một mảnh bản đồ đã thể hiện hình thể các thửa đất, nhờ lisp tính diện tích và ghi vào tâm thửa đất ,tất nhiên là tính tất cả các thửa chỉ một lần nhập lệnh. Tương tự ghi text thể hiện chiều dài dọc theo cạnh thửa đất. còn việc "ghi vào bảng" có lẽ ý bạn là tạo file hồ sơ kỹ thuật?
  • 0

#536 themanh01

themanh01

    biết zoom

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

Đã gửi 13 March 2008 - 05:53 PM

Bác viết dùm em cái list như sau: bây giờ em có vùng tô vật liệu hath em muốn đưa một text ( hoặc cái gì đó ) vào trong vùng hath đó và chỗ nào có text thì hath bị mất đi còn chỗ khác thì vẫn giữ nguyên. thank!
  • 0

#537 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 13 March 2008 - 06:04 PM

Như là công việc đo đạc đất đai
Khi đo xong ta vẽ hình thửa đất
Sử dụng tính diện tích hình đó , thể hiện chiều dài các cạnh thửa đất
Xong nó tư động ghi các tọa độ đỉnh của hình và chiều dài qua các điểm vào bảng

bạn có thể upload file dwg lên diễn đàn không?
  • 0

#538 tranchan

tranchan

    biết lệnh break

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

Đã gửi 13 March 2008 - 07:43 PM

Bác viết dùm em cái list như sau: bây giờ em có vùng tô vật liệu hath em muốn đưa một text ( hoặc cái gì đó ) vào trong vùng hath đó và chỗ nào có text thì hath bị mất đi còn chỗ khác thì vẫn giữ nguyên. thank!

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. <_<
  • 1

#539 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 - 01:44 AM

Ai có thể viết hộ e lisp này với :
Em muốn giới hạn thời gian sử dụng 1 lisp nào đó.Nhưng khác với lisp trong diễn đàn này ở chỗ :
-Trong Lisp có 1 danh sách các lệnh(hoặc các lisp có đường dẫn đã biết) sẽ bị giớ hạn thời gian
-Lisp chạy staup cùng với cad nên không cần dùng lệnh để giới hạn(chỉ dùng 1 lệnh khác có trong lisp để gỡ bỏ hoàn toàn việc giớ hạn đó(ko phải là resert))
-Khi hết thời gian sử dụng nó sẽ tự hiện ra 1 dialog thông báo nếu người dùng dùng lệnh bị giới hạn.
Mong mọi người giúp đỡ!!!!!!!!!!!
  • 0

#540 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 14 March 2008 - 09:00 AM

Ai có thể viết hộ e lisp này với :
Em muốn giới hạn thời gian sử dụng 1 lisp nào đó.Nhưng khác với lisp trong diễn đàn này ở chỗ :
-Trong Lisp có 1 danh sách các lệnh(hoặc các lisp có đường dẫn đã biết) sẽ bị giớ hạn thời gian
-Lisp chạy staup cùng với cad nên không cần dùng lệnh để giới hạn(chỉ dùng 1 lệnh khác có trong lisp để gỡ bỏ hoàn toàn việc giớ hạn đó(ko phải là resert))
-Khi hết thời gian sử dụng nó sẽ tự hiện ra 1 dialog thông báo nếu người dùng dùng lệnh bị giới hạn.
Mong mọi người giúp đỡ!!!!!!!!!!!

Bạn xem ở đây: http://www.cadviet.c...lisp-t1024.html
  • 0