Chuyển đến nội dung
Diễn đàn CADViet
BigBill

Lisp gán text vào polyline

Các bài được khuyến nghị

Khi làm san nền e hay gặp trwờng họp thế này làm rất mất công, mong các anh làm giúp e 1 cái lisp để thực hiện công việc 1 cách nhanh chóng, e đã thấy trong Civil 3d 2009 có cái này rồi, rất thuân tiện.

E có các đwờng đòng mức bằng Polyline, khi chạy Hs thì phải nhập cao độ Z cho các đwờng này, sau đó viết text thể hiện cao độ của đwờng lên trên, rồi dùng lệnh Torient để text cùng hướng với Polyline đó, công việc này khá mất time, e thấy trong civil 2009 có cách chỉ cần pick vào Polyline là text cao độ tự động gắn vào đwờng Polyline ( xem video sau để biết http://www.megaupload.com/?d=7J43SYM0 ), tất nhiên là các Polyline này đã đc gắn cao độ Z. E muốn nhờ các bác viết giùm e 1 cái lisp như sau :

-Nhập lệnh

-Lisp hỏi chọn đường Polyline-> mình kích chọn Polyline

-Lisp hỏi cao độ -> mình nhập cao độ Z của đwờng Polyline đó (lisp se gan cao do Z cho Polyline )

-Lisp hỏi vị trí chèn text cao độ trên dwờng Polyline->mình chọn các điểm chèn text cao độ và kết quả đc in ra màn hình nhw hình phía dưới.

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

Mong mọi ngwời giúp đỡ

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Khi làm san nền e hay gặp trwờng họp thế này làm rất mất công, mong các anh làm giúp e 1 cái lisp để thực hiện công việc 1 cách nhanh chóng, e đã thấy trong Civil 3d 2009 có cái này rồi, rất thuân tiện.

E có các đwờng đòng mức bằng Polyline, khi chạy Hs thì phải nhập cao độ Z cho các đwờng này, sau đó viết text thể hiện cao độ của đwờng lên trên, rồi dùng lệnh Torient để text cùng hướng với Polyline đó, công việc này khá mất time, e thấy trong civil 2009 có cách chỉ cần pick vào Polyline là text cao độ tự động gắn vào đwờng Polyline ( xem video sau để biết http://www.megaupload.com/?d=7J43SYM0 ), tất nhiên là các Polyline này đã đc gắn cao độ Z. E muốn nhờ các bác viết giùm e 1 cái lisp như sau :

-Nhập lệnh

-Lisp hỏi chọn đường Polyline-> mình kích chọn Polyline

-Lisp hỏi cao độ -> mình nhập cao độ Z của đwờng Polyline đó (lisp se gan cao do Z cho Polyline )

-Lisp hỏi vị trí chèn text cao độ trên dwờng Polyline->mình chọn các điểm chèn text cao độ và kết quả đc in ra màn hình nhw hình phía dưới.

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

Mong mọi ngwời giúp đỡ

Mình nghĩ rằng thay vì bạ upload file hình ảnh thì bạn nên upload file .dwg và nói rõ hơn.

Còn video của bạn up lên không xem được. Mạng ở mình yếu lắm.

Bạn hãy upload file .dwg và nói rõ hơn bạn nhé.

Chào bạn.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Mình nghĩ rằng thay vì bạ upload file hình ảnh thì bạn nên upload file .dwg và nói rõ hơn.

Còn video của bạn up lên không xem được. Mạng ở mình yếu lắm.

Bạn hãy upload file .dwg và nói rõ hơn bạn nhé.

Chào bạn.

Cám ơn Tue_NV đã quan tâm.đây là file cad cùng yêu cầu của mình, mong bạn cố gắng giúp đỡ !

http://www.cadviet.com/upfiles/Drawing2_18.dwg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Cám ơn Tue_NV đã quan tâm.đây là file cad cùng yêu cầu của mình, mong bạn cố gắng giúp đỡ !

http://www.cadviet.com/upfiles/Drawing2_18.dwg

Chào bạn BigBill,

Bạn dùng thử lisp này, nếu có gì chưa ổn thì post lên nhé.

(defun c:chentext ()
(vl-load-com)
(setq osn (getvar "osmode"))
(setvar  "osmode" 0)
(setq dt (car (entsel "\n Chon duong Polyline"))
  text (getstring "\n Nhap gia tri cao do: ")
  pc (getpoint "\n Chon vi tri cao do:")
  dis (vlax-curve-getdistatpoint dt pc)
  par (vlax-curve-getparamatdist dt dis)
  vtt (vlax-curve-getFirstderiv dt par)
  h (getreal "\n Nhap chieu cao text: ")
)
(if (/= (car vtt) 0)
(setq gr (atan (/ (cadr vtt) (car vtt))))
)
(setq gd (* gr (/ 180 pi)))
(command "text" (list (- (car pc) (* (/ h 3)  (sin gr))) (+ (cadr pc) (* (/ h 3)  (cos gr)))) h gd text)
(setvar "osmode" osn)
(princ)
)

 

Chúc bạn vui.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Chào bạn BigBill,

Bạn dùng thử lisp này, nếu có gì chưa ổn thì post lên nhé.

(defun c:chentext ()
(vl-load-com)
(setq osn (getvar "osmode"))
(setvar  "osmode" 0)
(setq dt (car (entsel "\n Chon duong Polyline"))
  text (getstring "\n Nhap gia tri cao do: ")
  pc (getpoint "\n Chon vi tri cao do:")
  dis (vlax-curve-getdistatpoint dt pc)
  par (vlax-curve-getparamatdist dt dis)
  vtt (vlax-curve-getFirstderiv dt par)
  h (getreal "\n Nhap chieu cao text: ")
)
(if (/= (car vtt) 0)
(setq gr (atan (/ (cadr vtt) (car vtt))))
)
(setq gd (* gr (/ 180 pi)))
(command "text" (list (- (car pc) (* (/ h 3)  (sin gr))) (+ (cadr pc) (* (/ h 3)  (cos gr)))) h gd text)
(setvar "osmode" osn)
(princ)
)

 

Chúc bạn vui.

Cám ơn bạn ! Mình đã dùng thử lisp của bạn và vướng phải những lỗi sau :

-Giá trị text cao độ khi in ra màn hình không đúng với giá trị mà mình đã nhập, và thực tế cao độ của đường Polyline đó vẫn là 0, không thay đổi.

-Sau khi dùng lisp thì mất hết chế độ bắt điểm.

-Vị trí của text không đúng như mình muốn, tức là chiều của text không cùng với chiều của Polyline.Khoảng cách từ text đến Polyline cũng vậy.

Mong bạn tìm hiểu thêm và hoàn thiện Lisp ! Chào bạn

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bạn dùng cái này xem:

(defun C:CDM (/ cdo next dem)
 	(START_PG)
 	(setq phuongan (I_KEY "\nChon kieu nhap (theo Buoc lien tuc/theo Text co san)" "B T" phuongan))
 	(cond	(	(= phuongan "B")
			(setq cdo 	(I_REAL "\n Nhap cao do ban dau" cdo)
				  ccao	(I_REAL "\n Nhap chenh cao giua cac duong dong muc" ccao)
				  next	(strcat "dau tien (cao do la: " (rtos cdo 2 2) ")")
				  dem 	0
			)
		 	(while (setq pline (entsel (strcat "\n Chon duong dong muc " next)))
  				(if (and	(or	(= (cdr (assoc 0 (entget (car pline)))) "POLYLINE")
								(= (cdr (assoc 0 (entget (car pline)))) "LWPOLYLINE")
							)
							(/= (cdr (assoc 8 (entget (car pline)))) "DM so hoa")
					)
	  				(progn
					  	(cond	(	(= (length (assoc 10 (entget (car pline)))) 4)
					  				(setq	tdN		(R_POS (assoc 10 (entget (car pline))) (list 0.0 0.0 0.0 cdo) "z"))
					  				(entmod (subst tdN (assoc 10 (entget (car pline))) (entget (car pline))))
						  		)
						  		(	(= (length (assoc 10 (entget (car pline)))) 3)
					  				(entmod (subst (cons 38 cdo) (assoc 38 (entget (car pline))) (entget (car pline))))
						  		)
						)
					  	(entmod (subst (cons 8 "DM so hoa") (assoc 8 (entget (car pline))) (entget (car pline))))
				  		(setq 	dem 	(1+ dem)
								cdo		(+ cdo ccao)
								next 	(strcat "thu " (itoa dem) " (cao do la: " (rtos cdo 2 2) ") /An enter de ket thuc chon")
						)
				  	)
	  				(alert "Chon lai!!! . Doi tuong ban vua chon khong phai la Polyline hoac da duoc so hoa")
  				)
 				)
	 	)
		(	(= phuongan "T")

		 	(while	(and	(not (prompt "\n Chon duong dong muc /Enter de ket thuc... " ))
			  				(setq pline (if (setq ss (ssget '((-4 . ""))))
										  	(ssname  ss  0)
									  	nil)
						  	)
					)
 				(setq cdo 	(V_T (ssname (ES_TM "\nChon Text chua cao do") 0)))
  				(if (and	(or	(= (cdr (assoc 0 (entget pline))) "POLYLINE")
								(= (cdr (assoc 0 (entget pline))) "LWPOLYLINE")
							)
							(/= (cdr (assoc 8 (entget pline))) "DM so hoa")
					)
	  				(progn
					  	(cond	(	(= (length (assoc 10 (entget pline))) 4)
					  				(setq	tdN		(R_POS (assoc 10 (entget (car pline))) (list 0.0 0.0 0.0 cdo) "z"))
					  				(entmod (subst tdN (assoc 10 (entget (car pline))) (entget (car pline))))
						  		)
						  		(	(= (length (assoc 10 (entget pline))) 3)
					  				(entmod (subst (cons 38 cdo) (assoc 38 (entget pline)) (entget pline)))
						  		)
						)
					  	(entmod (subst (cons 8 "DM so hoa") (assoc 8 (entget pline)) (entget pline)))
				  	)
	  				(alert "Chon lai!!! . Doi tuong ban vua chon khong phai la Polyline hoac da duoc so hoa")
  				)
 				)
		 )
)
 	(END_PG)
)

Các hàm con của chương trình này bạn download tại đây

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Cám ơn bạn ! Mình đã dùng thử lisp của bạn và vướng phải những lỗi sau :

-Giá trị text cao độ khi in ra màn hình không đúng với giá trị mà mình đã nhập, và thực tế cao độ của đường Polyline đó vẫn là 0, không thay đổi.

-Sau khi dùng lisp thì mất hết chế độ bắt điểm.

-Vị trí của text không đúng như mình muốn, tức là chiều của text không cùng với chiều của Polyline.Khoảng cách từ text đến Polyline cũng vậy.

Mong bạn tìm hiểu thêm và hoàn thiện Lisp ! Chào bạn

Chào bạn BigBil,

Bạn hãy kiểm tra lại cái Text syle hiện hành của bản vẽ. Nếu trong text style đó, chiều cao text đã chọn khác 0 thì lisp sẽ chạy sai. Bạn hãy chuyển cái chiều cao đó về 0 bạn nhé.

Khi cái chiều cao đó khác 0 thì hàm lệnh (command "text" .....) tự chấp nhận nó và hiểu giá trị của biến h trong hàm là giá trị của góc text, biến gd trong hàm là giá trị của text , còn biến text nó không hiểu nên sẽ bị lỗi và thoat khỏi lisp. Vì thế mà phần khôi phục giá trị osnap cũ bị mất bạn ạ. Chứ thục ra mình đã có lệnh khôi phục giá trị đó trong lisp rồi bạn ạ.

Mình cũng đã gặp lỗi này khi đi mót lisp, nhưng chưa biết cách sửa trên lisp nên đành sửa thủ công như vậy. Sửa các thông số của style nó loằng ngoằng lắm, mình chưa rõ. Mong bạn thông cảm. Mình sẽ tìm hiểu thêm và bổ sung vào lisp sau nhé.

Còn về cái cao độ thực tế của đường polyline thì mình đâu có thay đổi gì đâu vì mình hiểu là chỉ thêm text vào vị trí đó chứ đâu có biến đổi cái đường polyline ấy thành đường mới đâu. Nếu bạn muốn vậy thì mình hiểu sai ý của bạn rồi. Đừng giận mình nha.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bạn dùng cái này xem:

(defun C:CDM (/ cdo next dem)
 	(START_PG)
 	(setq phuongan (I_KEY "\nChon kieu nhap (theo Buoc lien tuc/theo Text co san)" "B T" phuongan))
 	(cond	(	(= phuongan "B")
			(setq cdo 	(I_REAL "\n Nhap cao do ban dau" cdo)
				  ccao	(I_REAL "\n Nhap chenh cao giua cac duong dong muc" ccao)
				  next	(strcat "dau tien (cao do la: " (rtos cdo 2 2) ")")
				  dem 	0
			)
		 	(while (setq pline (entsel (strcat "\n Chon duong dong muc " next)))
  				(if (and	(or	(= (cdr (assoc 0 (entget (car pline)))) "POLYLINE")
								(= (cdr (assoc 0 (entget (car pline)))) "LWPOLYLINE")
							)
							(/= (cdr (assoc 8 (entget (car pline)))) "DM so hoa")
					)
	  				(progn
					  	(cond	(	(= (length (assoc 10 (entget (car pline)))) 4)
					  				(setq	tdN		(R_POS (assoc 10 (entget (car pline))) (list 0.0 0.0 0.0 cdo) "z"))
					  				(entmod (subst tdN (assoc 10 (entget (car pline))) (entget (car pline))))
						  		)
						  		(	(= (length (assoc 10 (entget (car pline)))) 3)
					  				(entmod (subst (cons 38 cdo) (assoc 38 (entget (car pline))) (entget (car pline))))
						  		)
						)
					  	(entmod (subst (cons 8 "DM so hoa") (assoc 8 (entget (car pline))) (entget (car pline))))
				  		(setq 	dem 	(1+ dem)
								cdo		(+ cdo ccao)
								next 	(strcat "thu " (itoa dem) " (cao do la: " (rtos cdo 2 2) ") /An enter de ket thuc chon")
						)
				  	)
	  				(alert "Chon lai!!! . Doi tuong ban vua chon khong phai la Polyline hoac da duoc so hoa")
  				)
 				)
	 	)
		(	(= phuongan "T")

		 	(while	(and	(not (prompt "\n Chon duong dong muc /Enter de ket thuc... " ))
			  				(setq pline (if (setq ss (ssget '((-4 . ""))))
										  	(ssname  ss  0)
									  	nil)
						  	)
					)
 				(setq cdo 	(V_T (ssname (ES_TM "\nChon Text chua cao do") 0)))
  				(if (and	(or	(= (cdr (assoc 0 (entget pline))) "POLYLINE")
								(= (cdr (assoc 0 (entget pline))) "LWPOLYLINE")
							)
							(/= (cdr (assoc 8 (entget pline))) "DM so hoa")
					)
	  				(progn
					  	(cond	(	(= (length (assoc 10 (entget pline))) 4)
					  				(setq	tdN		(R_POS (assoc 10 (entget (car pline))) (list 0.0 0.0 0.0 cdo) "z"))
					  				(entmod (subst tdN (assoc 10 (entget (car pline))) (entget (car pline))))
						  		)
						  		(	(= (length (assoc 10 (entget pline))) 3)
					  				(entmod (subst (cons 38 cdo) (assoc 38 (entget pline)) (entget pline)))
						  		)
						)
					  	(entmod (subst (cons 8 "DM so hoa") (assoc 8 (entget pline)) (entget pline)))
				  	)
	  				(alert "Chon lai!!! . Doi tuong ban vua chon khong phai la Polyline hoac da duoc so hoa")
  				)
 				)
		 )
)
 	(END_PG)
)

Các hàm con của chương trình này bạn download tại đây

Bác Nacata ơi,

Hình như lisp của bác bị lỗi thiếu ký tự ">" hay sao ấy bác ạ.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bác Nacata ơi,

Hình như lisp của bác bị lỗi thiếu ký tự ">" hay sao ấy bác ạ.

Không đâu bác ạ. Cái này do codebox của diễn đàn bị lỗi. Bác thử nhấn nút reply ở bài có code rồi xem nội dung xem. Em làm đi làm lại mấy lần vẫn thấy hiện như thế mặc dù đã kiểm tra copy đúng, đủ

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Không đâu bác ạ. Cái này do codebox của diễn đàn bị lỗi. Bác thử nhấn nút reply ở bài có code rồi xem nội dung xem. Em làm đi làm lại mấy lần vẫn thấy hiện như thế mặc dù đã kiểm tra copy đúng, đủ

Bác Nacata thử kiểm tra lại dòng code này xem. Vì mình chưa hiểu lắm về cái mã DXF là -4 nên chưa rõ về cái dòng code này bác ạ.

(setq pline (if (setq ss (ssget '((-4 . ") polyline="" (0="" lwpolyline="" )="" (-4="" .="" or="">")))) (ssname ss 0) nil))

Hình như nó có vấn đề từ dòng code này bác ạ, vì đến đây mình thấy các code không còn đổi màu như trước nữa nên nghi nó lắm bác ạ.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Không đâu bác ạ. Cái này do codebox của diễn đàn bị lỗi. Bác thử nhấn nút reply ở bài có code rồi xem nội dung xem. Em làm đi làm lại mấy lần vẫn thấy hiện như thế mặc dù đã kiểm tra copy đúng, đủ

Không thể dùng đc lisp b ơi, chả hỉu sao nữa ! Xem lại hộn mình nah ! Thanks

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bác Nacata thử kiểm tra lại dòng code này xem. Vì mình chưa hiểu lắm về cái mã DXF là -4 nên chưa rõ về cái dòng code này bác ạ.

(setq pline (if (setq ss (ssget '((-4 . ") polyline="" (0="" lwpolyline="" )="" (-4="" .="" or="">")))) (ssname ss 0) nil))

Hình như nó có vấn đề từ dòng code này bác ạ, vì đến đây mình thấy các code không còn đổi màu như trước nữa nên nghi nó lắm bác ạ.

Hx. Cám ơn bác. Nhưng cái này là do lỗi của diễn đàn hay sao ý. Cái (-4 . "") thì em nghĩ bác quá quen rồi. Thui để em gửi luôn file lisp lên vậy

Gan cao do duong dong muc

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Hx. Cám ơn bác. Nhưng cái này là do lỗi của diễn đàn hay sao ý. Cái (-4 . "") thì em nghĩ bác quá quen rồi. Thui để em gửi luôn file lisp lên vậy

Gan cao do duong dong muc

[/quot

 

 

 

 

command: cdm

 

em vừa thử lisp của bác nataca thì có vướng mắc như sau:

command: cdm

chọn kiểu nhập: B

nhập cao độ ban đầu: 2.5

nhập chênh cao giữa các đường đồng mức: 5

chọn đường đồng mức đầu tiên ( cao độ là 2.5): chonj

chọn đường đồng mức thứ 1 ( cao độ là 7.5)/ ấn Enter để kết thúc lựa chọn.

 

Khi em an Enter thì không thấy text cao độ hiện lên ở cac đường đồng mức?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Hx. Cám ơn bác. Nhưng cái này là do lỗi của diễn đàn hay sao ý. Cái (-4 . "") thì em nghĩ bác quá quen rồi. Thui để em gửi luôn file lisp lên vậy

Gan cao do duong dong muc

Khá ổn rồi bác ah`, còn mỗi cái là chưa gán đc text vào Polyline thôi, còn cao độ thì ok rồi ! Thanks bác, cố gắng hoàn thiện cho e nha bác,hìhì

Ps : Ah,còn 1 cái nữa, làm thế nào để đwờng sau khi nhập đc cao độ rồi thì đổi sang 1 màu mặc định nào đó, để phân biệt đc đwờng mình đã nhập và đường chưa nha a?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
chọn đường đồng mức đầu tiên ( cao độ là 2.5): chonj

Bạn chọn đường đồng mức ở dòng nhắc này tức là pick hoặc quét chọn đường đồng mức. Cái này có công dụng gán cao độ của text có sẵn vào đường đồng mức hoặc gán cao độ đường đồng mức theo bước cao độ (cái này mình dùng để số hoá đồng mức) . Còn như ý bạn thì là tạo đường đồng mức thiết kế trong quy hoạch thì mình sẽ viết thêm 1 vài dòng code cho bạn

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Khá ổn rồi bác ah`, còn mỗi cái là chưa gán đc text vào Polyline thôi, còn cao độ thì ok rồi ! Thanks bác, cố gắng hoàn thiện cho e nha bác,hìhì

Ps : Ah,còn 1 cái nữa, làm thế nào để đwờng sau khi nhập đc cao độ rồi thì đổi sang 1 màu mặc định nào đó, để phân biệt đc đwờng mình đã nhập và đường chưa nha a?

Lisp như ý của BigBill đây.

Gan cao do cho duong dong muc

Còn về màu sắc của đường đồng mức đã số hóa thì bạn có thể edit trực tiếp trong layer của đường đồng mức đã số hóa mới tạo ra. Mình nghĩ thế bởi vì sau này đặt đường nét in của bạn sẽ linh hoạt hơn.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Lisp như ý của BigBill đây.

Gan cao do cho duong dong muc

Còn về màu sắc của đường đồng mức đã số hóa thì bạn có thể edit trực tiếp trong layer của đường đồng mức đã số hóa mới tạo ra. Mình nghĩ thế bởi vì sau này đặt đường nét in của bạn sẽ linh hoạt hơn.

Lisp của ban sao mình không chạy được , không biết mình có thiếu hàm gì không.

Nhờ Bạn chỉ giúp

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Lisp của ban sao mình không chạy được , không biết mình có thiếu hàm gì không.

Nhờ Bạn chỉ giúp

Bạn down lại đi. Lần đầu up mình up thiếu, đã edit lại rồi

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bạn down lại đi. Lần đầu up mình up thiếu, đã edit lại rồi

Lỗi đây bác ơi !

Command:

Command: cdm

no function definition: I_KEY; error: An error has occurred inside the *error*

functionAutoCAD variable setting rejected: "OSMODE" nil

Hay là bác nén lại rồi Up File lên đi

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Lỗi đây bác ơi !

Command:

Command: cdm

no function definition: I_KEY; error: An error has occurred inside the *error*

functionAutoCAD variable setting rejected: "OSMODE" nil

Hay là bác nén lại rồi Up File lên đi

Mình biên dịch lại thành 1 file rồi đây. Không lo copy thiếu nữa. Lệnh là CDM Download

  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Mình biên dịch lại thành 1 file rồi đây. Không lo copy thiếu nữa. Lệnh là CDM Download

Mình dùng lisp của bạn rồi, nhưng do tính chất mà mình cần nên m muốn nhờ bạn sửa lại đôi chút, mình muốn tách đôi lisp của bạn thanh 2 lisp. có nghĩa là phần nhập cao đọ riêng, phần gán text vào đường đồng mức riêng. cụ thể như sau :

1.Phần gán cao độ :

-Nhập lệnh

-cad hỏi : Nhập cao độ đầu tiên->ta nhập cao độ

-Cad hỏi : Nhập chênh cao đường đồng mức -> ta nhap chenh cao

-Cad hỏi : Chọn dường đồng mức đầu tiên(cao độ là...)-> ta chọn đường đồng mức

-Cad hỏi : Chọn dường đồng mức đtiep theo (cao độ là...)-> ta chọn đường đồng mức

2. Phan nhap text cao do :

-Nhap lenh

-cad hoi : chon text mau-> ta chon kieu text mau (sau do luu thuoc tinh nay de lan sau cad ko hoi lai cau nay nua)

-Cad hoi : Chon duong dong muc->ta chon duong dong muc da gan cao do o tren

-cad hoi : chon diem dat text->ta chon diem dat text

-Cad hoi : diem chi huong 1 -> chonj diem thu 1

Cad hoi : diem chi huong 2 -> chon diem 2

sau do lisp se gan text vao pilyline voi khoang cach bang 1/3 cao text giong nhu lisp tren, giá trị của text gán vào chính là thuộc tính cao độ Z của Polyline đã đc nhập ở trên lisp gán cao độ

Mong bạn xem hộn mình làm sao các polyline sau khi đã đc gán cao độ thì đổi màu đúng với layẻ của nó,

Xin lỗi vì diễn đàn đoi lúc bị lỗi ko viết đc tiếng việt có dấu

Mong bạn giúp đỡ.cám ơn bạn.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Mình dùng lisp của bạn rồi, nhưng do tính chất mà mình cần nên m muốn nhờ bạn sửa lại đôi chút, mình muốn tách đôi lisp của bạn thanh 2 lisp. có nghĩa là phần nhập cao đọ riêng, phần gán text vào đường đồng mức riêng. cụ thể như sau :

1.Phần gán cao độ :

-Nhập lệnh

-cad hỏi : Nhập cao độ đầu tiên->ta nhập cao độ

-Cad hỏi : Nhập chênh cao đường đồng mức -> ta nhap chenh cao

-Cad hỏi : Chọn dường đồng mức đầu tiên(cao độ là...)-> ta chọn đường đồng mức

-Cad hỏi : Chọn dường đồng mức đtiep theo (cao độ là...)-> ta chọn đường đồng mức

2. Phan nhap text cao do :

-Nhap lenh

-cad hoi : chon text mau-> ta chon kieu text mau (sau do luu thuoc tinh nay de lan sau cad ko hoi lai cau nay nua)

-Cad hoi : Chon duong dong muc->ta chon duong dong muc da gan cao do o tren

-cad hoi : chon diem dat text->ta chon diem dat text

-Cad hoi : diem chi huong 1 -> chonj diem thu 1

Cad hoi : diem chi huong 2 -> chon diem 2

sau do lisp se gan text vao pilyline voi khoang cach bang 1/3 cao text giong nhu lisp tren, giá trị của text gán vào chính là thuộc tính cao độ Z của Polyline đã đc nhập ở trên lisp gán cao độ

Mong bạn xem hộn mình làm sao các polyline sau khi đã đc gán cao độ thì đổi màu đúng với layẻ của nó,

Xin lỗi vì diễn đàn đoi lúc bị lỗi ko viết đc tiếng việt có dấu

Mong bạn giúp đỡ.cám ơn bạn.

Bạn xem cái này được chưa : http://www.cadviet.com/upfiles/gan_dm.vlx

Lệnh BDM: để gán đường đồng mức theo bước.

Lệnh TDM: để gán cao độ từ text vào đường đồng mức

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bạn xem cái này được chưa : http://www.cadviet.com/upfiles/gan_dm.vlx

Lệnh BDM: để gán đường đồng mức theo bước.

Lệnh TDM: để gán cao độ từ text vào đường đồng mức

Bạn hiểu nhầm ý mình 1 chút, mình thấy lisp của bạn rất hay nhưng lại hơi nhiều bước, ý của mình là lisp BDM có thể tách thành 2 lisp riêng biệt như sau

Lisp 1 : chỉ giải quyết việc gán cao độ Z cho polyline thôi, tức là Lisp chỉ hỏi "Cao độ đầu tiên "và "Chênh cao giữa các đường đồng mức" và sau đó là mình chọn các đường Polyline. Lisp sẽ tiến hành gán cao độ và đổi màu cho Polylibe.

Lisp 2 : giải quyết vấn đề gán text cao độ vào Polyline. Sau khi nhập lệnh, lisp sẽ hỏi "Text làm mẫu" ( chỉ hỏi 1 lần đầu tiên ), "Chọn đường đồng mức" ( tức là chọn các đường polyline đã đc nhập cao độ ở trên, lisp sẽ lọc lấy thuộc tính cao độ Z của đường polyline đó va gan vao text cao do), "Chọn điểm chèn Text", "Chọn hướng chỉ thứ nhất", "Chọn hướng chỉ thứ 2",

Còn lisp TDM thì ổn rồi bạn ah, rất cảm ơn bạn đã nhiệt tình giúp đỡ !

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bình thường khi vẽ các đường đồng mức ta hay sử dụng đường SPL, vì khi vẽ sẽ "trơn" hơn. Mình cũng thử dùng lệnh Flatten để biến các đường SPL thành PL nhưng kết quả ko như mong muốn. Vậy bạn có cách nào gán cao độ cho đường SPL và tại vị trí gán nhãn cao độ text sẽ vuông goc với SPL tại điểm gán nhãn hay ko. Thanks!!!!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×