Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Lisp lập bảng các thông số kỹ thuật của đường cong tròn (Dùng cho giao thông)


  • Please log in to reply
8 replies to this topic

#1 bach1212

bach1212

    biết lệnh trim

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

Đã gửi 02 March 2012 - 03:44 PM

Một đường cong tròn thường có các thông số kỹ thuật là: góc ngoặt chuyển hướng tại đỉnh A, bán kính R, chiều dài đường cong K, độ dài đoạn tiếp tuyến T, độ dài đoạn phân giác P
Em thường phải thống kê các đường cong tại các nút giao ngã 3, ngã tư đường nên Em muốn nhờ các bác giúp e viết lisp lập được bảng các thông số trên như file đính kèm:http://www.cadviet.c...4_nutgiaohl.rar
Chúc các bác vui vẻ....
  • 0

Một môn tập luyện mang lại vô vàn lợi ích sức khỏe cho mọi người, nhiều bệnh tật nan y đều được chữa khỏi, hoàn toàn miễn phí. Hiệu quả chữa khỏi bệnh tật của nó lên đến hơn 90%.
Tài liệu tại đây: http://phapluan.org/

Rất vui được làm quen với mọi người trên facebook:
https://www.facebook...67946371&type=1

 

 


#2 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 02 March 2012 - 08:03 PM

Mình viết tạm cho bạn thế này thôi. ngại viết code lập bảng lắm.
Khi dùng, Chọn xong đường tròn sẽ thấy báo kết quả ở dòng command. nhấn tiếp Ctrl+V là được (không cần fải copy từ command nhá). Cũng không khác việc lập bảng là mấy..

(defun c:ytc (/ SetClipBoardText ytc-g i a r en ent)
(defun SetClipBoardText (text / htmlfile result ) ; By XShrimp
(if (= 'STR (type text))
(progn
(setq htmlfile (vlax-create-object "htmlfile")
result (vlax-invoke(vlax-get(vlax-get htmlfile'ParentWindow)'ClipBoardData)'SetData "Text" text ))
(vlax-release-object htmlfile) text)))
(defun ytc-g (goc / gd gp gs )
(setq Gd (fix Goc)
Gp (fix (* (- Goc Gd) 60))
Gs (* (- (* (- Goc Gd) 60) Gp) 60))
(strcat (if (< Gd 10) (strcat "0" (rtos Gd 2 0)) (rtos Gd 2 0)) "d"
(if (< Gp 10) (strcat "0" (rtos Gp 2 0)) (rtos Gp 2 0)) "'"
(if (< Gs 9.5) (strcat "0" (rtos Gs 2 0)) (rtos Gs 2 0)) "''"))
(and
(setq i (getint "nhap ten duong cong (nhap so):"))
(setq i (itoa i))
(not (while (not (and (setq en (car (entsel "\n chon duong can lay yeu to cong:\n")))
(wcmatch (cdr (assoc 0 (setq ent (entget en)))) "ARC")))))
(setq a (* (vlax-get-property (vlax-ename->vla-object en) 'TotalAngle) 0.5))
(SetClipBoardText (princ (strcat "A" i " = " (ytc-g (+ (/ (* (- pi a a) 180.) pi) 0.00002))
"\nR" i " = " (rtos (setq R (cdr (assoc 40 ent)))) "m"
"\nT" i " = " (rtos (/ (* R (sin a)) (cos a)) 2 2) "m"
"\nP" i " = " (rtos (- (/ R (cos a)) R) 2 2) "m"
"\nK" i " = " (rtos (vlax-curve-getDistAtParam en (vlax-curve-getEndParam en)) 2 2) "m"))))
(princ))

  • 1

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#3 bach1212

bach1212

    biết lệnh trim

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

Đã gửi 02 March 2012 - 08:45 PM

Mình viết tạm cho bạn thế này thôi. ngại viết code lập bảng lắm.
Khi dùng, Chọn xong đường tròn thì nhấn tiếp Ctrl+V là được. Cũng không khác việc lập bảng là mấy..


(defun c:ytc (/ SetClipBoardText ytc-g i a r en ent)
(defun SetClipBoardText (text / htmlfile result ) ; By XShrimp
(if (= 'STR (type text))
(progn
(setq htmlfile (vlax-create-object "htmlfile")
result (vlax-invoke(vlax-get(vlax-get htmlfile'ParentWindow)'ClipBoardData)'SetData "Text" text ))
(vlax-release-object htmlfile) text)))
(defun ytc-g (goc / gd gp gs )
(setq Gd (fix Goc)
Gp (fix (* (- Goc Gd) 60))
Gs (* (- (* (- Goc Gd) 60) Gp) 60))
(strcat (if (< Gd 10) (strcat "0" (rtos Gd 2 0)) (rtos Gd 2 0)) "d"
(if (< Gp 10) (strcat "0" (rtos Gp 2 0)) (rtos Gp 2 0)) "'"
(if (< Gs 9.5) (strcat "0" (rtos Gs 2 0)) (rtos Gs 2 0)) "''"))
(and
(setq i (getint "nhap ten duong cong (nhap so):"))
(setq i (itoa i))
(not (while (not (and (setq en (car (entsel "\n chon duong can lay yeu to cong:\n")))
(wcmatch (cdr (assoc 0 (setq ent (entget en)))) "ARC")))))
(setq a (* (vlax-get-property (vlax-ename->vla-object en) 'TotalAngle) 0.5))
(SetClipBoardText (princ (strcat "A" i " = " (ytc-g (+ (/ (* (- pi a a) 180.) pi) 0.00002))
"\nR" i " = " (rtos (setq R (cdr (assoc 40 ent)))) "m"
"\nT" i " = " (rtos (/ (* R (sin a)) (cos a)) 2 2) "m"
"\nP" i " = " (rtos (- (/ R (cos a)) R) 2 2) "m"
"\nK" i " = " (rtos (vlax-curve-getDistAtParam en (vlax-curve-getEndParam en)) 2 2) "m"))))
(princ))

e cám ơn bác. cho e hỏi, làm thế nào để rút bớt số chữ số thập phân sau dấu phẩy của thông số bán kính R khi dùng lisp này từ 4 về 2 con số thui ah?
  • 0

Một môn tập luyện mang lại vô vàn lợi ích sức khỏe cho mọi người, nhiều bệnh tật nan y đều được chữa khỏi, hoàn toàn miễn phí. Hiệu quả chữa khỏi bệnh tật của nó lên đến hơn 90%.
Tài liệu tại đây: http://phapluan.org/

Rất vui được làm quen với mọi người trên facebook:
https://www.facebook...67946371&type=1

 

 


#4 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 02 March 2012 - 09:22 PM

Yêu cầu của bạn có vẻ giống yêu cầu này, bạn tham khảo, tự tạo Block theo form của mình (miễn là có tên - thứ tự giống thế ) :
http://www.cadviet.c...showtopic=47442
  • 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


#5 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 02 March 2012 - 09:37 PM

e cám ơn bác. cho e hỏi, làm thế nào để rút bớt số chữ số thập phân sau dấu phẩy của thông số bán kính R khi dùng lisp này từ 4 về 2 con số thui ah?

thay
(rtos (setq R (cdr (assoc 40 ent))))
bằng
(rtos (setq R (cdr (assoc 40 ent))) 2 2)
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#6 bach1212

bach1212

    biết lệnh trim

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

Đã gửi 02 March 2012 - 09:55 PM

Yêu cầu của bạn có vẻ giống yêu cầu này, bạn tham khảo, tự tạo Block theo form của mình (miễn là có tên - thứ tự giống thế ) :
http://www.cadviet.c...showtopic=47442

cám ơn bác ketxu, e tìm trên diễn đàn mãi mà không được như ý, nên mới gửi yêu cầu
Chúc bác zui
  • 0

Một môn tập luyện mang lại vô vàn lợi ích sức khỏe cho mọi người, nhiều bệnh tật nan y đều được chữa khỏi, hoàn toàn miễn phí. Hiệu quả chữa khỏi bệnh tật của nó lên đến hơn 90%.
Tài liệu tại đây: http://phapluan.org/

Rất vui được làm quen với mọi người trên facebook:
https://www.facebook...67946371&type=1

 

 


#7 bach1212

bach1212

    biết lệnh trim

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

Đã gửi 02 March 2012 - 10:01 PM

thay
(rtos (setq R (cdr (assoc 40 ent))))
bằng
(rtos (setq R (cdr (assoc 40 ent))) 2 2)

được rùi ah.
Ctrl V lun không thấy j bác nhỉ? hjjj
e vẫn phải dùng tới F2 bôi đen rùi Ctrl C, rùi ed mtext rùi mới Ctrl V.
  • 0

Một môn tập luyện mang lại vô vàn lợi ích sức khỏe cho mọi người, nhiều bệnh tật nan y đều được chữa khỏi, hoàn toàn miễn phí. Hiệu quả chữa khỏi bệnh tật của nó lên đến hơn 90%.
Tài liệu tại đây: http://phapluan.org/

Rất vui được làm quen với mọi người trên facebook:
https://www.facebook...67946371&type=1

 

 


#8 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 02 March 2012 - 11:08 PM

được rùi ah.
Ctrl V lun không thấy j bác nhỉ? hjjj
e vẫn phải dùng tới F2 bôi đen rùi Ctrl C, rùi ed mtext rùi mới Ctrl V.

bạn thử copy cái này (vl-load-com) rồi paste vào command. xong rồi chạy lại lệnh. nếu Ctrl+V mà ra được thì đưa nó vào lisp luôn.
Làm như trên thì bạn thừa bước edit mtext. mặc định khi nhấn Ctrl+V trong cad thì nó sẽ tạo luôn đối tượng Mtext chứa nội dung trong Clipboard cho bạn.
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#9 bach1212

bach1212

    biết lệnh trim

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

Đã gửi 03 March 2012 - 07:54 AM

hề hề ngon rùi bác Thaistreetz ah. Thanhkiu bác nhìu nhìu
  • 0

Một môn tập luyện mang lại vô vàn lợi ích sức khỏe cho mọi người, nhiều bệnh tật nan y đều được chữa khỏi, hoàn toàn miễn phí. Hiệu quả chữa khỏi bệnh tật của nó lên đến hơn 90%.
Tài liệu tại đây: http://phapluan.org/

Rất vui được làm quen với mọi người trên facebook:
https://www.facebook...67946371&type=1