Đến nội dung


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

Hướng dẫn lập trình Lisp


  • Please log in to reply
497 replies to this topic

#401 hienngocloveyou

hienngocloveyou

    biết vẽ line

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

Đã gửi 16 April 2012 - 09:52 AM


(defun c:dt1 ()
(setq p1 (getpoint "\n chon diem bat dau"))
(setq L (getint "\n nhap chieu dai nha: "))
(setq B (getint "\n nhap chieu rong nha: "))
(command "line" (list (Car p1) (+ (cadr p1) 195)) @B<0 "")
)
Cho mình hỏi mình vẽ line theo chiều dài và góc như trên sao ko dc nhỉ, có phải lệnh như vậy ko ?
  • 0

#402 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 16 April 2012 - 10:26 AM

@B<0 : symbol => có giá trị Nil => không có ý nghĩ gì trong câu lệnh này cả
Muốn dùng thì bạn phải strcat "@" B "<0" thành 1 chuỗi khi cho vào command.
Code thừa biến L
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#403 hienngocloveyou

hienngocloveyou

    biết vẽ line

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

Đã gửi 16 April 2012 - 11:05 AM


(setq A1 (strcat "@" B "<0")
mình thử thì A1 kết quả trả lại là @, nó ko hiểu B đã gán ở trên.
  • 0

#404 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 16 April 2012 - 11:16 AM


(setq A1 (strcat "@" B "<0")
mình thử thì A1 kết quả trả lại là @, nó ko hiểu B đã gán ở trên.


(setq A1 (strcat "@" (itoa B) "<0"))

  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#405 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 16 April 2012 - 11:55 AM

B của bạn là 1 số INTEGER, bạn phải chuyển nó về chuỗi trong hàm strcat đã chứ :| Mà cũng k có trường hợp nào bạn sai đối số mà nó trả về @ cho bạn như bạn nói được ^^
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#406 hienngocloveyou

hienngocloveyou

    biết vẽ line

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

Đã gửi 16 April 2012 - 01:48 PM


(defun c:sth()
(vl-load-com)
(setq p1 (getpoint "\n chon diem bat dau"))
(setq L (getint "\n nhap chieu dai nha: "))
(setq B (getint "\n nhap chieu rong nha: "))
(while
(or
(initget 1 "Bay Span Exit")
(/= "Exit"
(setq ANS
(getkword "\n Bay/Span/Exit: ")
)
)
)
(cond
((="Bay" ANS)
(setq A1 (strcat "@" (itoa B) "<90"))
(command "line" p1 A1"")
(while
(setq kc (getint "\n Khoang cach: "))
(setq L1 (vlax-ename->vla-object (entlast)))
(vla-offset L1 kc)
)
)
((="Span" ANS)
(setq A2 (strcat "@" (itoa L) "<180"))
(command "line" p1 A2"")
(while
(setq kc (getint "\n Khoang cach :"))
(setq L2 (vlax-ename->vla-object (entlast)))
(vla-offset L2 kc))
)
)
)

Em viết cái lisp này để vẽ các đường lưới giao nhau, nhưng bị trục trặc 1 chỗ, nó offset ko tạo ra các lưới giao nhau, ban đầu em nghĩ nó offset theo trục X,Y dương, nên em vẽ 2 line theo hướng 0 với 90 độ tức là điểm p1 góc dưới bên trái lưới,nhưng đến phần offset thì 2 phương đi 2 phương khác nhau, có cách nào khắc phục ko ạ. Thanks
  • 0

#407 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 16 April 2012 - 01:53 PM

Dùng command để chỉ định hướng Offset thay cho vla-offset, hoặc dùng vla-copy. Lưới đều thì nên dùng array, lưới lệch thì mới offset hoặc copy, tùy bạn chọn
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#408 hienngocloveyou

hienngocloveyou

    biết vẽ line

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

Đã gửi 16 April 2012 - 02:01 PM

Cám ơn anh đã trả lời, nếu dùng lệnh offset thông thường thì điểm chọn phía phụ thuộc điểm pick của mình,trong command offset có option nào chọn phía là trục dương ko nhỉ ???
  • 0

#409 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 16 April 2012 - 02:34 PM

Cám ơn anh đã trả lời, nếu dùng lệnh offset thông thường thì điểm chọn phía phụ thuộc điểm pick của mình,trong command offset có option nào chọn phía là trục dương ko nhỉ ???

Không có option nào chọn phía là trục dương,
bạn có thể tự tính toán phía điểm pick của mình
  • 0

#410 đinh văn sang

đinh văn sang

    Chưa sử dụng CAD

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

Đã gửi 16 April 2012 - 04:26 PM

Lần đầu tiên mình cảm thấy rất thích thú đối với Cad là khi mình dùng một Lisp để đo chiều dài của một cung hoặc một đường Spline, và cũng thắc mắc rất nhiều để làm sao tạo được Lisp.hihi. bây giờ thì sẽ cố gắng thui
  • 0

#411 hienngocloveyou

hienngocloveyou

    biết vẽ line

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

Đã gửi 16 April 2012 - 04:27 PM

Cho em hỏi cái thuộc tính của nội dung text là gì ạ, vd em có 1 chữ A, 1 chữ B, em muốn thay đổi chữ B thành A thì nó là thuộc tính gì
  • 0

#412 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 16 April 2012 - 04:35 PM

Cho em hỏi cái thuộc tính của nội dung text là gì ạ, vd em có 1 chữ A, 1 chữ B, em muốn thay đổi chữ B thành A thì nó là thuộc tính gì

Mã dxf của nội dung text là 1 bạn ạ. Đoạn dưới là dùng chọn 1 đối tượng TEXT và chỉnh nội dung nó thành noidung

(setq dddsn (entsel "\nChon text chinh noi dung"))
(while
(or
(null dddsn)
(/= "TEXT" (cdr (assoc 0 (entget (car dddsn)))))
)
(princ "\nDoi tuong khong phai la text! Chon lai")
(setq dddsn (entsel "\nChon text chinh noi dung"))
)

(setq DTDTTsn (car dddsn))
(setq DTMs (entget DTDTTsn))
(setq DTMs (subst (cons 1 "noidung") (assoc 1 DTMs) DTMs))
(entmod DTMs)

  • 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


#413 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 16 April 2012 - 04:40 PM

Cho em hỏi cái thuộc tính của nội dung text là gì ạ, vd em có 1 chữ A, 1 chữ B, em muốn thay đổi chữ B thành A thì nó là thuộc tính gì

Bạn đọc thêm file này của bác ssg
Xâm nhập kho cơ sở dữ liệu của AutoCAD
http://www.cadviet.c...?showtopic=1980
  • 1

#414 hienngocloveyou

hienngocloveyou

    biết vẽ line

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

Đã gửi 16 April 2012 - 04:51 PM

thanks all, cái dfx này khá hữu dụng :D
  • 0

#415 hienngocloveyou

hienngocloveyou

    biết vẽ line

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

Đã gửi 16 April 2012 - 05:00 PM


(setq pt2 (getpoint "\n Chon diem chen: "))
(command "._insert" "D:\\Hien\\DWG\\2C30030.dwg" pt2 1 1 0 )
Cho em hỏi nếu bản vẽ đã có thư viện block sẵn, thì chèn block như thế nào mà ko cần link đường dẫn. Nhu trên mình bỏ link D:\\Hien\\DWG\\2C30030.dwg đi thay bằng tên của block là 2C30030, sao nó ko hiểu, và cho hỏi thêm là thư viện block nó nằm ở đâu ạ
  • 0

#416 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 16 April 2012 - 05:10 PM


(setq pt2 (getpoint "\n Chon diem chen: "))
(command "._insert" "D:\\Hien\\DWG\\2C30030.dwg" pt2 1 1 0 )
Cho em hỏi nếu bản vẽ đã có thư viện block sẵn, thì chèn block như thế nào mà ko cần link đường dẫn. Nhu trên mình bỏ link D:\\Hien\\DWG\\2C30030.dwg đi thay bằng tên của block là 2C30030, sao nó ko hiểu, và cho hỏi thêm là thư viện block nó nằm ở đâu ạ

Nằm trong Support Search Path file là được. Hoặc nó nằm trong bản vẽ của bạn
  • 0

#417 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 16 April 2012 - 05:11 PM


(setq pt2 (getpoint "\n Chon diem chen: "))
(command "._insert" "D:\\Hien\\DWG\\2C30030.dwg" pt2 1 1 0 )
Cho em hỏi nếu bản vẽ đã có thư viện block sẵn, thì chèn block như thế nào mà ko cần link đường dẫn. Nhu trên mình bỏ link D:\\Hien\\DWG\\2C30030.dwg đi thay bằng tên của block là 2C30030, sao nó ko hiểu, và cho hỏi thêm là thư viện block nó nằm ở đâu ạ

Muốn chèn block không kèm path thì hoặc:
1). Bạn đưa các file block này vào trong thư mục hiện hành.
2). Bạn add Path của thư mục chứa bolck vào Support File Search Path
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#418 thonggtcc

thonggtcc

    biết zoom

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

Đã gửi 21 April 2012 - 10:33 AM

Hiện mình có 1 bài toán như sau nhưng chưa biết cách giải quyết, mong các cao thủ CadViet giúp đỡ:
Bản vẽ mình có các block. Mỗi block quy định một kiểu dữ liệu đầu vào. Các dữ liệu này được thông kê bằng tay và lập từ bảng excel sau đó cập nhật vào bản vẽ theo lý trình, số hiệu ....
Vấn đề khó khăn ở chỗ: Việc thống kê các số liệu này rất nhiều, nếu nhập thủ công vào bản vẽ sẽ mất rất nhiều thời gian.
Vậy nhờ các cao thủ hướng dẫn cách tự động lấy số liệu trong Excel và vẽ theo mẫu đã định sẵn.
Bản vẽ đính kèm: http://www.cadviet.c..._hoang_dieu.dwg
  • 0

#419 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 21 April 2012 - 10:41 AM

Hiện mình có 1 bài toán như sau nhưng chưa biết cách giải quyết, mong các cao thủ CadViet giúp đỡ:
Bản vẽ mình có các block. Mỗi block quy định một kiểu dữ liệu đầu vào. Các dữ liệu này được thông kê bằng tay và lập từ bảng excel sau đó cập nhật vào bản vẽ theo lý trình, số hiệu ....
Vấn đề khó khăn ở chỗ: Việc thống kê các số liệu này rất nhiều, nếu nhập thủ công vào bản vẽ sẽ mất rất nhiều thời gian.
Vậy nhờ các cao thủ hướng dẫn cách tự động lấy số liệu trong Excel và vẽ theo mẫu đã định sẵn.
Bản vẽ đính kèm: http://www.cadviet.c..._hoang_dieu.dwg

Bạn upload file Excel lên và mô tả kỹ hơn nhé!
Nhìn file dwg không hiểu ý bạn ra sao cả?

P/S: Chắc bạn đang ở Đà Nẵng phải không?
  • 0

#420 thonggtcc

thonggtcc

    biết zoom

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

Đã gửi 23 April 2012 - 12:24 PM

Bản vẽ mình đưa lên là minh hoạ cho bình đồ duỗi thẳng của 1 tuyến đường.
Trong đó bao gồm các dữ liệu sau: Chiều dài của tuyến, các giao cắt, kết cấu vỉa hè trên từng đoạn, biển báo giao thông, sơn kẻ vạch, hệ thống thoát nước, cây xanh, trụ điện, điện chiếu sáng, ....
Mình phải xây dựng cho từng đoạn 100m, 200 và tối đa là 500m cho mỗi tờ A3, mục đích để cập nhật dữ liệu trên bằng tay trên giấy A3 (vì trong quá trình quản lý các dữ liệu trên sẽ liên tục thay đổi). Sau đó mới vẽ lại trên bản vẽ Cad gốc sau mỗi 6 tháng 1 lần.
Với số liệu rất nhiều (vì quản lý rất nhiều tuyến) do đó việc cập nhật thủ công vào Cad rất mất thời gian và công sức.
Đồng thời các dữ liệu này còn phục vụ cho việc trích xuất để thống kê, báo cáo khi cần thiết.
Do đó mình nhờ các anh có phương pháp nào cập nhật các số liệu như: cây xanh, trụ điện, biển báo, hệ thống thoát nước ... từ bảng thống kê trên Excel qua Cad nhanh hơn không? Nếu được thì các bạn hướng dẫn phương pháp trích xuất số liệu ngược lại?
Thanks
File ví dụ: http://www.cadviet.c...05390_vi_du.rar
  • 0