Đến nội dung


Hình ảnh
- - - - -

[Nhờ chỉnh sửa] Lisp trừ 1 text có sẵn cho 1 khoảng cách đo trên cad


  • Please log in to reply
7 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 14 September 2012 - 10:15 AM

E đang dùng lisp này để trừ 1 text có sẵn cho 1 số được nhập vào bằng tay. Kết quả được ed vào 1 text có trước.
Mong các bác chỉnh sửa thêm chức năng cho lisp ở thao tác: chọn số trừ
- Có thể chọn số trừ là khoảng cách d giữa 2 điểm A-B trên cad bằng cách pick vào lần lượt 2 điểm đó. Lisp sẽ tự động xác định khoảng cách d và chọn d làm số trừ.
Kết hợp cả 2 hình thức lựa chọn số bị trừ là d và nhập số bằng tay sẽ hoàn thiện lisp hơn và làm được nhiều việc hơn.
Mong được các bác giúp đỡ. Thanks

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=4077&pid=192557&st=0&#entry192557

(defun c:ths (/ Ename Elist Msg Oldtext Oldlist Newtext Newlist)
(command "undo" "be")
(setq donvi (/ (getvar "viewsize") 40))
(setq ddd (entsel "\nChon text bi tru"))
(while
(or
(null ddd)
(/= "TEXT" (cdr (assoc 0 (entget (car ddd)))))
)
(princ "\nDoi tuong khong phai la text! Chon lai")
(setq ddd (entsel "\nChon text bi tru"))
)
(setq DTDTT (car ddd))
(setq DTTT (entget DTDTT))
(setq NDTTT (cdr (assoc 1 DTTT)))
(setq NDTTT (atof NDTTT))
(setq DIEMVIETTEXT (cdr (assoc 10 DTTT)))
(setq diemvt1 (polar DIEMVIETTEXT pi donvi))
(setq diemvt2 (polar DIEMVIETTEXT (* 2 pi) donvi))
(setq diemvt3 (polar DIEMVIETTEXT (/ pi 2) donvi))
(setq diemvt4 (polar DIEMVIETTEXT (- 0 (/ pi 2)) donvi))
(grdraw diemvt1 diemvt2 3)
(grdraw diemvt3 diemvt4 3)
(if (= droffln nil)
(setq droffln1 2.00)
(setq droffln1 droffln)
)
(setq
droffln (GETREAL (strcat "\nNhap hang so tru: <" (rtos droffln1 2 2) ">"))
)
(if (= droffln nil)
(setq droffln droffln1)
)
(setq ketquaxuat (- NDTTT droffln))
(setq ketquaxuat (rtos ketquaxuat 2 2))
(setq dddsn (entsel "\nChon text xuat ket qua"))
(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 tru"))
)
(setq DTDTTsn (car dddsn))
(setq DTMs (entget DTDTTsn))
(setq DTMs (subst (cons 1 ketquaxuat) (assoc 1 DTMs) DTMs))
(entmod DTMs)
(command "undo" "end")
(Princ))


  • 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 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 14 September 2012 - 11:53 AM

Phong văn giống của bác Duy. Bạn hãy hỏi ở đúng topic của lisp này ^^
  • 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


#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 14 September 2012 - 01:10 PM

hjhj đúng là con đẻ của bác Duy. Lần trước cũng là bác Duy tốt bụng viết nó cho mình. Bác Duy ơi..............help me!
  • 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 VoHoan

VoHoan

    biết lệnh move

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

Đã gửi 14 September 2012 - 03:54 PM

E đang dùng lisp này để trừ 1 text có sẵn cho 1 số được nhập vào bằng tay. Kết quả được ed vào 1 text có trước.
Mong các bác chỉnh sửa thêm chức năng cho lisp ở thao tác: chọn số bị trừ
- Có thể chọn số bị trừ là khoảng cách d giữa 2 điểm A-B trên cad bằng cách pick vào lần lượt 2 điểm đó. Lisp sẽ tự động xác định khoảng cách d và chọn d làm số bị trừ.
Kết hợp cả 2 hình thức lựa chọn số bị trừ là d và nhập số bằng tay sẽ hoàn thiện lisp hơn và làm được nhiều việc hơn.
Mong được các bác giúp đỡ. Thanks


;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=4077&pid=192557&st=0&#entry192557

(defun c:ths (/ Ename Elist Msg Oldtext Oldlist Newtext Newlist)
(command "undo" "be")
(setq donvi (/ (getvar "viewsize") 40))
(setq ddd (entsel "\nChon text bi tru"))
(while
(or
(null ddd)
(/= "TEXT" (cdr (assoc 0 (entget (car ddd)))))
)
(princ "\nDoi tuong khong phai la text! Chon lai")
(setq ddd (entsel "\nChon text bi tru"))
)
(setq DTDTT (car ddd))
(setq DTTT (entget DTDTT))
(setq NDTTT (cdr (assoc 1 DTTT)))
(setq NDTTT (atof NDTTT))
(setq DIEMVIETTEXT (cdr (assoc 10 DTTT)))
(setq diemvt1 (polar DIEMVIETTEXT pi donvi))
(setq diemvt2 (polar DIEMVIETTEXT (* 2 pi) donvi))
(setq diemvt3 (polar DIEMVIETTEXT (/ pi 2) donvi))
(setq diemvt4 (polar DIEMVIETTEXT (- 0 (/ pi 2)) donvi))
(grdraw diemvt1 diemvt2 3)
(grdraw diemvt3 diemvt4 3)
(if (= droffln nil)
(setq droffln1 2.00)
(setq droffln1 droffln)
)
(setq
droffln (GETdist (strcat "\nNhap hang so tru: <" (rtos droffln1 2 2) ">"))
)
(if (= droffln nil)
(setq droffln droffln1)
)
(setq ketquaxuat (- NDTTT droffln))
(setq ketquaxuat (rtos ketquaxuat 2 2))
(setq dddsn (entsel "\nChon text xuat ket qua"))
(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 tru"))
)
(setq DTDTTsn (car dddsn))
(setq DTMs (entget DTDTTsn))
(setq DTMs (subst (cons 1 ketquaxuat) (assoc 1 DTMs) DTMs))
(entmod DTMs)
(command "undo" "end")
(Princ))

Sửa đoạn bôi màu đỏ trong lisp là dược theo ý ban rồi.
droffln (GETdist (strcat "\nNhap hang so tru: <" (rtos droffln1 2 2) ">"))
  • 1

#5 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 14 September 2012 - 04:10 PM

Sửa đoạn bôi màu đỏ trong lisp là dược theo ý ban rồi.
droffln (GETdist (strcat "\nNhap hang so tru: <" (rtos droffln1 2 2) ">"))

Bạn mới phát hiện ra chức năng mới của hàm GETdist à?
  • 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.


#6 VoHoan

VoHoan

    biết lệnh move

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

Đã gửi 14 September 2012 - 04:17 PM

Bạn mới phát hiện ra chức năng mới của hàm GETdist à?

Hàm (GETDIST ....)
Chức năng: chờ người nhập vao một số:
- Một số thực là một khoảng cách
- Tọa độ của 2 điiểm (Autolisp trả về khoảng cách giữa 2 điểm)
Mình biết về hàm này thế thôi!
  • 1

#7 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 14 September 2012 - 04:22 PM

Sửa đoạn bôi màu đỏ trong lisp là dược theo ý ban rồi.
droffln (GETdist (strcat "\nNhap hang so tru: <" (rtos droffln1 2 2) ">"))

Hề hề hề,
Không ổn rồi,
Như vậy sẽ mất chức năng chọn text có sẵn của bác Duy.
Theo thiển ý của mình thì cần bổ sung thêm đoạn lisp điều kiện để người dùng lựa chọn một trong hai phương án nhập liệu. Nếu chọn text thì chạy code của bác Duy còn nếu chọn nhập số hay khoảng cách thì sử dụng gợi ý của bạn VoHoan mới ổn.
Bạn Bach1212 là người đã sử dụng lisp khá nhiều rồi và theo mình bạn có thể tự làm điều này xem sao. Hãy làm đi rồi vui7o71ng chỗ nào hỏi chỗ đó sẽ tốt hơn cho bạn nhiều.
Chúc thành công.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#8 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 15 September 2012 - 06:35 AM

Hàm (GETDIST ....)
Chức năng: chờ người nhập vao một số:
- Một số thực là một khoảng cách
- Tọa độ của 2 điiểm (Autolisp trả về khoảng cách giữa 2 điểm)
Mình biết về hàm này thế thôi!

Bổ sung:
Bên cạnh đó, còn có chức năng khi dùng kết hợp với hàm initget
(initget "a")
(setq var (getdist "\nNhap khoang cách :"))
-> Khi bạn đo khoảng cách thì biến var nhận giá trị là khoảng cách 2 điểm.
-> Khi bạn nhập số thì biến var nhận giá trị số đó
-> Khi bạn nhập "a" -> Return -> "a"
=> Thì biến var sẽ nhận giá trị "a" -> Có thể dùng để lựa chọn rẽ nhánh thực hiện 1 hàm khác
  • 2