Đến nội dung


Hình ảnh
- - - - -

[Đã xong] Lisp gán TEXT cho các đường đồng mức


  • Please log in to reply
6 replies to this topic

#1 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 19 June 2011 - 09:57 PM

Em nhờ các bác sửa cho em đoạn lisp "Gán Text cho các đường đồng mức" sau:
(em đã gán được Text cho các đường Đ.Mức nhưng không vẽ được hình chữ nhật hoặc
hình ô van bao quanh Text - để che một phần đường ĐM dưới Text).
- Yêu cầu của em là các hình này (hình chữ nhật hoặc hình ô van) bao quanh Text
và quay (xoay or cùng chiềU) theo chiều của các đường Đ.Mức...
Xin cảm ơn các Bác trước !
Link đến Files ACAD và Video ví dụ: http://www.mediafire...zlrdmn9a92l6z#1

Hề hề hề,
Bạn có thể làm ơn post luôn cái hàm con (Du-rtd ....) lên không???
Thực tình mình chưa hiểu rõ cái hàm này vì mình thấy bạn dùng nó hơi khó hiểu:
1/- Ở trong dòng code này:
(command "_text" "J" "ML" (polar pi1 AM 0.05) (Du-rtd AM) (rtos cdo 2 2))
Thì mình hiểu rắng đây là hàm đổi số đo góc từ radian sang độ
2/- Nhưng ở các dòng code này :
(setq pi1a (polar pi1 (- (Du-rtd (- 6.28319 AM)) 90) (+ (* caotext 0.5) 0.1))
pi1b (polar pi1 (Du-rtd AM) (+ (* caotext 0.5) 0.1))
thì cái hàm đó có nghĩa chi nhỉ ??? Nếu là đổi số đo góc từ radian ra độ thì sao lại dùng với hàm polar được vì hàm polar yêu cầu tham số góc phải đo bằng radian cơ mà.....
Rất mong bạn gửi hàm đó lên để mình coi thử xem sao nhé.

Theo đoạn code :
(command "Osmode" 0 "_Wipeout" pi1a pi3a pi3b pi1b "")
thì đúng ra sau khi bạn tạo wipeout nó phải còn lại cái khung chữ nhật chứ tại sao lại không có nhỉ???
Do chưa có hàm con (du-rtd ...) nên mình chưa thể test cái lisp của bạn được. Chỉ là đọc code và phán đoán mà thôi. Trùng trật mong bạn chớ giận.

Hề hề hề, chúc bạn vui
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#2 lenhatanh

lenhatanh

    biết vẽ polygon

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

Đã gửi 20 June 2011 - 08:55 AM

Hề hề hề,
Bạn có thể làm ơn post luôn cái hàm con (Du-rtd ....) lên không???
Thực tình mình chưa hiểu rõ cái hàm này vì mình thấy bạn dùng nó hơi khó hiểu:
1/- Ở trong dòng code này:
(command "_text" "J" "ML" (polar pi1 AM 0.05) (Du-rtd AM) (rtos cdo 2 2))
Thì mình hiểu rắng đây là hàm đổi số đo góc từ radian sang độ
2/- Nhưng ở các dòng code này :
(setq pi1a (polar pi1 (- (Du-rtd (- 6.28319 AM)) 90) (+ (* caotext 0.5) 0.1))
pi1b (polar pi1 (Du-rtd AM) (+ (* caotext 0.5) 0.1))
thì cái hàm đó có nghĩa chi nhỉ ??? Nếu là đổi số đo góc từ radian ra độ thì sao lại dùng với hàm polar được vì hàm polar yêu cầu tham số góc phải đo bằng radian cơ mà.....
Rất mong bạn gửi hàm đó lên để mình coi thử xem sao nhé.

Xin lỗi các Bác, em xin bổ sung hàm đổi Radial thành độ:
(defun Du-dtr (a) (/ (* a 3.141592654) 180.0))
(defun Du-rtd (a) (/ (* a 180.0) 3.141592654))
và đúng là đoạn code đó em đã nhầm dơn vị đo...
Nhờ các Bác và bác PhamThanhBinh sửa lại luôn cho em.

(defun Du-rtd (a) (/ (* a 180.0) 3.141592654))
(defun C:Du-text (/ n cdo che pi1 pi2 pi3 Am sokytu caotext daitext AM
pi1a pi1b pi3a pi3b)

(setq cdo (getreal "\nCao Do Bat Dau Cua Duong Dong_Muc...: "))
(setq che (getreal "\nChenh Cao or Buoc nhay Cua Duong D.Muc...: "))
(while (setq n 1)
(command "Osmode" 512)
(setq pi1 (getpoint "\nDiem Dat Text <Esc to Cancel>...: "))
(setq pi2 (getpoint "\nDiem Thu Hai <Esc to Cancel>...: "))
(setq AM (angle pi1 pi2))
(setq sokytu (strlen (rtos cdo 2 2)) caotext (getvar "Textsize")
daitext (* sokytu caotext) pi3 (polar pi1 AM daitext))
(cond
((> (cadr pi1) (cadr pi2))
(setq pi1a (polar pi1 (- (Du-rtd (- 6.28319 AM)) 90) (+ (* caotext 0.5) 0.1))
pi1b (polar pi1 (Du-rtd AM) (+ (* caotext 0.5) 0.1))
pi3a (polar pi3 (/ pi 2) (+ (* caotext 0.5) 0.1))
pi3b (polar pi3 (-(/ pi 2)) (+ (* caotext 0.5) 0.1))))
((< (cadr pi1) (cadr pi2))
(setq pi1a (polar pi1 (/ pi 2) (+ (* caotext 0.5) 0.1))
pi1b (polar pi1 (-(/ pi 2)) (+ (* caotext 0.5) 0.1))
pi3a (polar pi3 (/ pi 2) (+ (* caotext 0.5) 0.1))
pi3b (polar pi3 (-(/ pi 2)) (+ (* caotext 0.5) 0.1))))
((= (cadr pi1) (cadr pi2))
(setq pi1a (polar pi1 (- pi) (+ (* caotext 0.5) 0.1))
pi1b (polar pi1 0.0 (+ (* caotext 0.5) 0.1))
pi3a (polar pi3 (- pi) (+ (* caotext 0.5) 0.1))
pi3b (polar pi3 0.0 (+ (* caotext 0.5) 0.1))))
(T
(setq pi1a (polar pi1 (/ pi 2) (+ (* caotext 0.5) 0.1))
pi1b (polar pi1 (-(/ pi 2)) (+ (* caotext 0.5) 0.1))
pi3a (polar pi3 (/ pi 2) (+ (* caotext 0.5) 0.1))
pi3b (polar pi3 (-(/ pi 2)) (+ (* caotext 0.5) 0.1))))
)
(command "Layer" "M" "Wipeout" "")
(command "Osmode" 0 "_Wipeout" pi1a pi3a pi3b pi1b "")
(command "layer" "M" "Text_Cai" "")
(command "_text" "J" "ML" (polar pi1 AM 0.05) (Du-rtd AM) (rtos cdo 2 2))
(setq n (+ n 1) cdo (+ cdo che))
)
(command "layer" "S" "0" "")
(command "Osmode" 33 "color" "Bylayer" "cmdecho" 1 "ortho" "on" "redraw")
)
Link đến Files ACAD và Video ví dụ: hthttp://www.mediafire...zlrdmn9a92l6z#1
  • 0

#3 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 20 June 2011 - 02:51 PM

Xin lỗi các Bác, em xin bổ sung hàm đổi Radial thành độ:
(defun Du-dtr (a) (/ (* a 3.141592654) 180.0))
(defun Du-rtd (a) (/ (* a 180.0) 3.141592654))
và đúng là đoạn code đó em đã nhầm dơn vị đo...
Nhờ các Bác và bác PhamThanhBinh sửa lại luôn cho em.
Link đến Files ACAD và Video ví dụ: hthttp://www.mediafire...zlrdmn9a92l6z#1

Hề hề hề,
Vấn đề của bạn chỉ là việc xác định các điểm pi1a pi3a pi3b pi1b sai mà thôi chứ cái wipeout hổng có sai.
Mình chưa rõ vì sao bạn phải dùng hàm cond phức tạp đến thế ????
Bạn hãy kiểm tra lại nhé vì việc so sánh hai giá trị (cadr pi1) và (cadr pi2) chỉ có thể có 3 dạng là < = > thôi chứ .....
Hề hề hề,...
Mình sửa tạm cái này để bạn dùng thử, hãy chú ý so sánh cái mình sửa và cái bạn có để rút kinh nghiệm nhé.
Đặc biệt cái hàm cond, mình để bạn tự chỉnh sửa cho phù hợp nhé. Mình sửa vậy để bạn thấy sự bất hợp lý của nó mà thôi. Bạn nên suy nghĩ tìm cách loại nó đi nhé.....


(defun C:Du-text (/ n cdo che pi1 pi2 pi3 Am sokytu caotext daitext AM
pi1a pi1b pi3a pi3b)
(command "undo" "be")
(setq cdo (getreal "\nCao Do Bat Dau Cua Duong Dong_Muc...: "))
(setq che (getreal "\nChenh Cao or Buoc nhay Cua Duong D.Muc...: "))
(setq n 1)
(while n
(command "Osmode" 512)
(setq pi1 (getpoint "\nDiem Dat Text <Esc to Cancel>...: "))
(setq pi2 (getpoint "\nDiem Thu Hai <Esc to Cancel>...: "))
(if (and pi1 pi2)
(progn
(setq AM (angle pi1 pi2))
(setq sokytu (strlen (rtos cdo 2 2)) caotext (getvar "Textsize")
daitext (* sokytu caotext) pi3 (polar pi1 AM daitext))
(cond
((> (cadr pi1) (cadr pi2))
(setq pi1a (polar pi1 (+ AM (/ pi 2)) (+ (* caotext 0.5) 0.1))
pi1b (polar pi1 (- AM (/ pi 2)) (+ (* caotext 0.5) 0.1))
pi3a (polar pi3 (+ AM (/ pi 2)) (+ (* caotext 0.5) 0.1))
pi3b (polar pi3 (- AM (/ pi 2)) (+ (* caotext 0.5) 0.1))))
((< (cadr pi1) (cadr pi2))
(setq pi1a (polar pi1 (+ AM (/ pi 2)) (+ (* caotext 0.5) 0.1))
pi1b (polar pi1 (- AM (/ pi 2)) (+ (* caotext 0.5) 0.1))
pi3a (polar pi3 (+ AM (/ pi 2)) (+ (* caotext 0.5) 0.1))
pi3b (polar pi3 (- AM (/ pi 2)) (+ (* caotext 0.5) 0.1))))
((= (cadr pi1) (cadr pi2))
(setq pi1a (polar pi1 (+ AM (/ pi 2)) (+ (* caotext 0.5) 0.1))
pi1b (polar pi1 (- AM (/ pi 2)) (+ (* caotext 0.5) 0.1))
pi3a (polar pi3 (+ AM (/ pi 2)) (+ (* caotext 0.5) 0.1))
pi3b (polar pi3 (- AM (/ pi 2)) (+ (* caotext 0.5) 0.1))))
(T
(setq pi1a (polar pi1 (+ AM (/ pi 2)) (+ (* caotext 0.5) 0.1))
pi1b (polar pi1 (- AM (/ pi 2)) (+ (* caotext 0.5) 0.1))
pi3a (polar pi3 (+ AM (/ pi 2)) (+ (* caotext 0.5) 0.1))
pi3b (polar pi3 (- AM (/ pi 2)) (+ (* caotext 0.5) 0.1))))
)
(command "Layer" "M" "Wipeout" "")
(command "Osmode" 0 "_Wipeout" pi1a pi3a pi3b pi1b "")
(command "layer" "M" "Text_Cai" "")
(command "_text" "J" "ML" (polar pi1 AM 0.05) (Du-rtd AM) (rtos cdo 2 2))
(setq n (+ n 1) cdo (+ cdo che))
)
(setq n nil)
)
)
(command "layer" "S" "0" "")
(command "Osmode" 33 "color" "Bylayer" "cmdecho" 1 "ortho" "on" "redraw")
(command "undo" "e")
(princ)
)

(defun Du-dtr (a) (/ (* a 3.141592654) 180.0))
(defun Du-rtd (a) (/ (* a 180.0) 3.141592654))

Chúc bạn vui.

Bài viết đã được chỉnh sửa nội dung bởi phamthanhbinh: 20 June 2011 - 03:27 PM
Bổ sung lisp

  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#4 lenhatanh

lenhatanh

    biết vẽ polygon

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

Đã gửi 20 June 2011 - 08:52 PM

Vấn đề của bạn chỉ là việc xác định các điểm pi1a pi3a pi3b pi1b sai mà thôi chứ cái wipeout hổng có sai.
Mình chưa rõ vì sao bạn phải dùng hàm cond phức tạp đến thế ????
Bạn hãy kiểm tra lại nhé vì việc so sánh hai giá trị (cadr pi1) và (cadr pi2) chỉ có thể có 3 dạng là < = > thôi chứ .....
Hề hề hề,...
Mình sửa tạm cái này để bạn dùng thử, hãy chú ý so sánh cái mình sửa và cái bạn có để rút kinh nghiệm nhé.
Đặc biệt cái hàm cond, mình để bạn tự chỉnh sửa cho phù hợp nhé. Mình sửa vậy để bạn thấy sự bất hợp lý của nó mà thôi. Bạn nên suy nghĩ tìm cách loại nó đi nhé...

Cám ơn bác PhamThanhBinh đã sửa giúp và chỉ dẫn, cám ơn mọi người
Lisp chay rất tốt, rất đúng yêu cầu...
Chúc mọi người vui, khỏe, mong Chủ đề và diễn đàn luôn phát triển.
(Tiện đây cho em hỏi làm sao add được tên như sau: "phamthanhbinh, on 19 June 2011 - 09:49 PM, said:" lên tiêu đề của phần trích dẫn ?)
  • 0

#5 tracdia2015

tracdia2015

    Chưa sử dụng CAD

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

Đã gửi 18 December 2015 - 02:42 PM

Cám ơn bác PhamThanhBinh đã sửa giúp và chỉ dẫn, cám ơn mọi người
Lisp chay rất tốt, rất đúng yêu cầu...
Chúc mọi người vui, khỏe, mong Chủ đề và diễn đàn luôn phát triển.
(Tiện đây cho em hỏi làm sao add được tên như sau: "phamthanhbinh, on 19 June 2011 - 09:49 PM, said:" lên tiêu đề của phần trích dẫn ?)

mình nhập xong các dòng lệnh nhưng chỉ vẽ được ô vuông, ko ra cao độ text bạn ạ. giúp mình với

 


  • 0

#6 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 18 December 2015 - 03:32 PM

 

Hề hề hề,

Lệnh là Du-text


  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#7 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 19 December 2015 - 11:06 PM

Ơ.....cái này em có. Hiii


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn