Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
xuantran15

viết giúp em cái lisp rải mái taluy

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

Trong thiết kế các công trình giao thông cũng như thuỷ lợi rất hay phải rải mái taluy cho mái đào, mái đắp. việc làm thủ công rất mất thời gian nên mạo muội nhờ mấy bác viết giúp cho cái lisp có nội dung như sau:

 

fdfd_1.bmp

 

1: Kí hiệu mái được rải kéo dài từ đỉnh đến chân đối với nét dài, nét ngắn có chiều dài =1/3 nét dài

2: Nét ngắn(màu đỏ) đậm bằng 3 lần nét dài(màu trắng), (có thể là 0.2 và 0.05), hai nét được tạo trên hai layer khác nhau cho dễ quản lý

3: Kí hiệu mái vuông góc với chân mái đối với mái đào, và đỉnh mái đối với mái đắp (mái đào hay mái đắp sẽ được quy định)

4: Khoảng cách giữa hai kí hiệu, hai nét (nét ngắn và nét dài) do người dùng nhập vào

5: Mỗi ký hiệu có 4 nét dài và 3 nét ngắn

Tóm lai:

Khi dánh lệnh vào command: ... enter, pick vào hai đường chân vào đỉnh của mái (hai đường này có thể là spl, pl, line . . .) sau đó người dùng chỉ cần nhập vào mái đào hay đắp(bbước này có thể bỏ qua nếu quy định dược lần pick chuột đầu tiên là đường có kí hiệu mái vuông góc với nó), khoảng cách giữa hai kí hiệu, khoảng cách giữa hai nét là lisp sẽ tự vẽ kí hiệu mái taluy.

 

Các bác giúp giùm em tí nhé: em đã cố gắng trình bày kỹ hy vọng các bác hiểu yêu cầu của em và giúp dùm: thanks :leluoi:

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 làm về GT, TL chắc biết dùng Nova chứ? Có thể mở bản vẽ bằng NOVA rồi dùng lệnh rải ta luy (Lệnh tắt : TL). Lệnh này tương đối hoàn thiện, chỉ có điều chưa rải được cho từng đoạn, muốn rải từng đoạn bắt buộc fải break polyline ra. Trên diễn đàn cũng có lisp nhưng chưa hoàn thiện lắm và ko đẹp bằng Nova đâu.

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 làm về GT, TL chắc biết dùng Nova chứ? Có thể mở bản vẽ bằng NOVA rồi dùng lệnh rải ta luy (Lệnh tắt : TL). Lệnh này tương đối hoàn thiện, chỉ có điều chưa rải được cho từng đoạn, muốn rải từng đoạn bắt buộc fải break polyline ra. Trên diễn đàn cũng có lisp nhưng chưa hoàn thiện lắm và ko đẹp bằng Nova đâu.

Nova thì mình cũng nghe nói nhưng chưa dùng thử bởi mình là dân thuỷ lợi nên it dùng. có lẽ sẽ dùng thử xem sao. cám ơn snow nhé. Nhưng nếu bác nào viết giúp cho mình cái lisp như trên thì hay và hiệu quả quá. Ai có thế giúp em vớ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

cái màu đó không quan trọng, chủ yếu là mấy cái kia thôi. màu chẳng qua cho dễ nhìn thôi mà. nếu philipdn có thì cho mình xin với. cám ơn nhé :leluoi:

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

Em tranh thủ viết cái Rải taluy theo yêu cẩu trên trước mắt chạy trên cad 2004->2006, phiên bản 2007,08,... sẽ có trong nay mai. Có cả hướng dẫn sử dụng nhé bao gồm:

Cách rải taluy.

Hiệu chỉnh taluy

+ Nắn đường chân, đường đỉnh -> Taluy nắm theo

+ Thay đổi tham số thưa dày còn độ rộng đường cần thiết thì làm phiên bản khác

Chúc mọi người vui vẻ.

Download tại www.cad-app.com

  • 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

Thanks pp nhé, cái này dùng hay đấy, hay hơn cái bữa trước của pp nhiều.hehe. Flex a, nếu bạn có ý kiến gì hay thì phát huy nhé. lần nữa cám ơn mọi người :leluoi:

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 phillip có thể sửa lisp này thành lisp trải mái mà các ký hiệu của taluy cách nhau 1 khoảng do người dùng nhập vào không ạ. Giống hệt như hình vẽ của a Xuân tran ý', e thấy trải mái mà các ký hiệu mái taluy liền tù tỳ nhau thì bản vẽ se bị rối lắm.

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àm thủy lợi thì phải biết phần mềm TKK 2005 (Thiết kế kênh mương -Hamony C0.) .Trong đó tả luy của nó cực kỳ hoàn thiện và tùy biến cao.

Hãy dùng trong dó luôn.

Topo,nova của HAmony co. cũng thế.

Hiện nay về tính năng và hiệu quả thì chưa phần lisp nào đạt được điều đó 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

Đây nè, cho các bác bộ mã nguồn luôn

Về nghiên cứu thêm nhé

 

(defun c:batter	()
 (setvar "CMDECHO" 0)
 (setq osmode (getvar "osmode"))
 (setvar "osmode" 0)
 (setvar "unitmode" 0)
 (setvar "dimzin" 0)
 (setvar "blipmode" 0)
 (setvar "aunits" 0)
 (setvar "angbase" (/ pi 2))
 (setvar "angdir" 1)
 (if (not lint)
   (setq lint 10.0)
 )
 (setq int (getdist (strcat "\nInterval <" (rtos lint 2 3) ">: ")))
 (if int
   (setq lint int)
   (setq int lint)
 )
 (command "line" (list 0.0 0.0) (list 0.0 0.0001) "")
 (if (tblsearch "block" "tadtick")
   (command "block" "tadtick" "y" (list 0.0 0.0) (entlast) "")
   (command "block" "tadtick" (list 0.0 0.0) (entlast) "")
 )
 (while (setq refent (entsel "\nSelect reference line: "))
   (command "undo" "group")
   (redraw (car refent) 3)
   (initget 1 "Cut Fill")
   (setq reply (getkword "\n[C]ut or [F]ill batter: "))
   (setq s (ssget))
   (command "measure" refent "b" "tadtick" "y" int)
   (setq p  (ssget "p")
  cn 0
   )
   (if	s
     (progn
(while (< cn (sslength p))
(setq en (entget (ssname p cn))
p0 (cdr (assoc 10 en))
pt1 p0
pt2 nil
b (cdr (assoc 50 en))
)
(entdel (ssname p cn))
(setq p1 (polar p0 (+ (/ pi 2) b )  0.0001))
  (command "line" p0 p1 "")
  (command "extend" s "" (list (entlast) p1) "")
  (setq xent (entget (entlast)))
  (setq	xdist
	 (distance (cdr (assoc 10 xent)) (cdr (assoc 11 xent)))
  )
  (if (not (equal xdist 0.0001 0.0001))
    (setq pt2 (cdr (assoc 11 xent)))
    (progn
      (command "extend" s "" (list (entlast) p0) "")
      (setq xent (entget (entlast)))
      (setq xdist (distance (cdr (assoc 10 xent))
			    (cdr (assoc 11 xent))
		  )
      )
      (if (not (equal xdist 0.0001 0.0001))
	(setq pt2 (cdr (assoc 10 xent)))
      )
    )
  )
  (entdel (entlast))
  (if pt2
    (if	(= reply "Fill")
      (if (= (rem cn 2) 0)
	(command "line" pt1 pt2 "")
	(command
	  "line"
	  pt1
	  (polar pt1 (angle pt1 pt2) (/ (distance pt1 pt2) 2))
	  ""
	)
      )
      (if (= (rem cn 2) 0)
	(command "line" pt2 pt1 "")
	(command
	  "line"
	  pt2
	  (polar pt2 (angle pt2 pt1) (/ (distance pt2 pt1) 2))
	  ""
	)
      )
    )
  )
  (setq cn (1+ cn))
)
     )
   )
   (command "undo" "en")
 )
 (setvar "blipmode" 1)
 (setvar "osmode" osmode)
 (princ)
)

  • 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

Nghiên cứu sơ qua chẳng biết nó hoạt động như thế nào. (dốt tiếng anh mà)

Nhưng xem bài đầu tiên thấy việc thể hiện mái taluy có vẻ không chuẩn lắm vì cái ký hiệu đó đâu cần thiết phải kéo từ đỉnh đến chân, với nhưng mái dốc lớn thì nhìn xấu lắm, chỉ cần thể chiện chiều mái dốc là được thôi.

Còn việc vẽ mấy cái gạch gạch kia sao không dùng file.lin nhỉ, đơn giản, hiệu chỉnh nhanh chóng. Trong Express có sẵn công cụ tạo file.lin sao không tận dụng nhỉ.

Có lẽ nhiều người chưa biết làm cái này, tôi xin mạo muội hướng dẫn, ai biết rồi làm ngơ cho nhé.

1. Nhập lệnh DSETTINGS, chọn Tab Snap And Grid rồi chỉnh bên (F9), (F7) bằng 1 (cho nhẹ thôi chứ không ảnh hưởng gì đến kết quả) Check vào (F9) và (F7) để hiện lưới và đặt bước nhảy vào mắt lưới

2. Vẽ 1 line nằm ngang có chiều dài bằng 2 bước nhảy, 1 đường đứng có chiều dài bằng 4 bước nhảy, 1 đường đứng nữa có chiều cao bằng 2 bước nhảy theo dạng sau |_I_ (đây chính là ký hiệu mái dốc, chúng sẽ được nối tiếp nhau khi vẽ sau này)

3. Vào menu Express>Tools>Make shape sẽ xuất hiện hộp thoại yêu cầu nhập tên file, hãy nhập tên tùy ý (giả sử là Taluy). Trên dòng lệnh yêu cầu nhập tên của Shape, hãy nhập tên bất kỳ (giả sử là MaiDoc) Tiếp theo tôi chẳng biết là cái quái gì nhưng bỏ qua cũng được (Enter), tiếp theo nó yêu cầu chọn điểm chèn, Hãy chọn 1 đầu của đường nằm ngang, sau đó nó đòi chọn đối tượng hãy chọn những gì vừa vẽ (3 line). Vậy là 1 Shape có tên MAIDOC đã được tạo ra.

4. Sử dụng lệnh SHAPE để chèn cái SHAPE MAIDOC vừa tạo vào bản vẽ, hãy để tỷ lệ là 1, góc xoay là 0 theo mặc định hoặc có thể tùy chỉnh theo ý muốn

5. Vào menu Express>Tools>Make linetype, Nhập tên file Lin giả sử là TaLuy.lin, nhập tên nét giả sử MaiDoc rồi viết vài dòng chú thích nếu thấy cần sau đó chọn điểm đầu và điểm cuối (đầu và cuối của đoạn thẳng nằm ngang), select object hãy chọn cái SHAPE vừa chèn rồi Enter vậy là 1 kiểu nét mới đã được tạo ra và load vào bản vẽ hiện hành

Bây giờ hãy thử dùng nó để vẽ xem thế nào.

Chúc vui.

  • 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

Bạn nào .....

 

Nghiên cứu sơ qua chẳng biết nó hoạt động như thế nào. (dốt tiếng anh mà)

 

thì vào đây nhé. Hehe

 

(defun c:taluy (/)
 (setvar "CMDECHO" 0)
 (setq osmode (getvar "osmode"))
 (setvar "osmode" 0)
 (setvar "unitmode" 0)
 (setvar "dimzin" 0)
 (setvar "blipmode" 0)
 (setvar "aunits" 0)
 (setvar "angbase" (/ pi 2))
 (setvar "angdir" 1)

 (if (not (tblsearch "layer" "BATTER"))
   (command "layer" "n" "BATTER" "color" "8" "BATTER" "s" "BATTER" \n)
   (command "layer" "s" "BATTER" \n)
 )

 (if (not lint)
   (setq lint 10.0)
 )
 (setq	int (getdist (strcat "\nNhap khoang cach chia taluy <"
		     (rtos lint 2 3)
		     ">: "
	     )
    )
 )
 (if int
   (setq lint int)
   (setq int lint)
 )
 (command "line" (list 0.0 0.0) (list 0.0 0.0001) "")
 (if (tblsearch "block" "tadtick")
   (command "block" "tadtick" "y" (list 0.0 0.0) (entlast) "")
   (command "block" "tadtick" (list 0.0 0.0) (entlast) "")
 )
 (while (setq refent (entsel "\nChon doi tuong can rai taluy : "))
   (command "undo" "group")
   (redraw (car refent) 3)
   (initget 1 "daO daP")
   (setq
     reply (getkword "\nChon kieu taluy Nen Da[O] hay Nen Da[P]: ")
   )
   (print "\n")
   (print "Chon cac doi tuong can batter :")
   (setq s (ssget))
   (command "measure" refent "b" "tadtick" "y" int)
   (setq p  (ssget "p")
  cn 0
   )
   (if	s
     (progn
(while (< cn (sslength p))
(setq en (entget (ssname p cn))
p0 (cdr (assoc 10 en))
pt1 p0
pt2 nil
b (cdr (assoc 50 en))
)
(entdel (ssname p cn))
(setq p1 (polar p0 (+ (/ pi 2) b ) 0.0001))
  (command "line" p0 p1 "")
  (command "extend" s "" (list (entlast) p1) "")
  (setq xent (entget (entlast)))
  (setq	xdist
	 (distance (cdr (assoc 10 xent)) (cdr (assoc 11 xent)))
  )
  (if (not (equal xdist 0.0001 0.0001))
    (setq pt2 (cdr (assoc 11 xent)))
    (progn
      (command "extend" s "" (list (entlast) p0) "")
      (setq xent (entget (entlast)))
      (setq xdist (distance (cdr (assoc 10 xent))
			    (cdr (assoc 11 xent))
		  )
      )
      (if (not (equal xdist 0.0001 0.0001))
	(setq pt2 (cdr (assoc 10 xent)))
      )
    )
  )
  (entdel (entlast))
  (if pt2
    (if	(= reply "daP")
      (if (= (rem cn 2) 0)
	(command "line" pt1 pt2 "")
	(command
	  "line"
	  pt1
	  (polar pt1 (angle pt1 pt2) (/ (distance pt1 pt2) 2))
	  ""
	)
      )
      (if (= (rem cn 2) 0)
	(command "line" pt2 pt1 "")
	(command
	  "line"
	  pt2
	  (polar pt2 (angle pt2 pt1) (/ (distance pt2 pt1) 2))
	  ""
	)
      )
    )
  )
  (setq cn (1+ cn))
)
     )
   )
   (command "undo" "en")
 )
 (setvar "blipmode" 1)
 (setvar "osmode" osmode)
 (princ)
)

 

 

Bon...on...n

  • 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

Các bác ui, cho mình ý kiến tý nha.

Bên ngành thủy lợi thì rải mái như thế này nè:

- Vẽ 4 đường mái dài và 3 đường mái ngắn

- Nét của mái dài gấp đôi mái ngắn

- Chiều dài của mái dài kéo từ đỉnh đến chân, chiều dài của mái ngắn thì bằng 1/2 mái ngắn

- Màu của 2 mái cũng khác nháu

Bác nào có thể làm giúp mình cái lisp như vậy được khô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

Bạn nào .....

 

 

 

thì vào đây nhé. Hehe

 

(defun c:taluy (/)  (setvar "CMDECHO" 0)  (setq osmode (getvar "osmode"))  (setvar "osmode" 0)  (setvar "unitmode" 0)  (setvar "dimzin" 0)  (setvar "blipmode" 0)  (setvar "aunits" 0)  (setvar "angbase" (/ pi 2))  (setvar "angdir" 1)  (if (not (tblsearch "layer" "BATTER"))    (command "layer" "n" "BATTER" "color" "8" "BATTER" "s" "BATTER" \n)    (command "layer" "s" "BATTER" \n)  )  (if (not lint)    (setq lint 10.0)  )  (setq	int (getdist (strcat "\nNhap khoang cach chia taluy <"		         (rtos lint 2 3)		         ">: "	         )    	)  )  (if int    (setq lint int)    (setq int lint)  )  (command "line" (list 0.0 0.0) (list 0.0 0.0001) "")  (if (tblsearch "block" "tadtick")    (command "block" "tadtick" "y" (list 0.0 0.0) (entlast) "")    (command "block" "tadtick" (list 0.0 0.0) (entlast) "")  )  (while (setq refent (entsel "\nChon doi tuong can rai taluy : "))    (command "undo" "group")    (redraw (car refent) 3)    (initget 1 "daO daP")    (setq      reply (getkword "\nChon kieu taluy Nen Da[O] hay Nen Da[P]: ")    )    (print "\n")    (print "Chon cac doi tuong can batter :")    (setq s (ssget))    (command "measure" refent "b" "tadtick" "y" int)    (setq p  (ssget "p")  	cn 0    )    (if	s      (progn	(while (< cn (sslength p))(setq en (entget (ssname p cn))p0 (cdr (assoc 10 en))pt1 p0pt2 nilb (cdr (assoc 50 en)))(entdel (ssname p cn))(setq p1 (polar p0 (+ (/ pi 2) b ) 0.0001))  	(command "line" p0 p1 "")  	(command "extend" s "" (list (entlast) p1) "")  	(setq xent (entget (entlast)))  	(setq	xdist	     (distance (cdr (assoc 10 xent)) (cdr (assoc 11 xent)))  	)  	(if (not (equal xdist 0.0001 0.0001))    	(setq pt2 (cdr (assoc 11 xent)))    	(progn      	(command "extend" s "" (list (entlast) p0) "")      	(setq xent (entget (entlast)))      	(setq xdist (distance (cdr (assoc 10 xent))			    	(cdr (assoc 11 xent))		  	)      	)      	(if (not (equal xdist 0.0001 0.0001))		(setq pt2 (cdr (assoc 10 xent)))      	)    	)  	)  	(entdel (entlast))  	(if pt2    	(if	(= reply "daP")      	(if (= (rem cn 2) 0)		(command "line" pt1 pt2 "")		(command	  	"line"	  	pt1	  	(polar pt1 (angle pt1 pt2) (/ (distance pt1 pt2) 2))	  	""		)      	)      	(if (= (rem cn 2) 0)		(command "line" pt2 pt1 "")		(command	  	"line"	  	pt2	  	(polar pt2 (angle pt2 pt1) (/ (distance pt2 pt1) 2))	  	""		)      	)    	)  	)  	(setq cn (1+ cn))	)      )    )    (command "undo" "en")  )  (setvar "blipmode" 1)  (setvar "osmode" osmode)  (princ))

 

 

Bon...on...n

Come on!

Không hiểu sao khi dùng lisp này em rất hay gặp lỗi. Quá trình chạy lisp thì vẫn bình thường nhưng kết quả thu được là 1 mớ các Line dài loằng ngoằng nằm tận đẩu đâu. Đôi lúc với trường hợp chân và đỉnh taluy là các Pline gấp khúc thì lại gặp phải lỗi các Line không nối hết khoảng trống giữa 2 Line chân và đỉnh taluy.

Nhưng nếu Copy bản vẽ sang bản vẽ mới thì lại rải được bình thường, cũng có lúc làm mọi cách vẫn không được, kể cả thử trên bản vẽ mới hoàn toàn! Nói chung là rất bực mình! :huh: :huh: :huh:

Mong các bác giúp đỡ!

Thankssssssssssssssssssss!

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

Come on!

Không hiểu sao khi dùng lisp này em rất hay gặp lỗi. Quá trình chạy lisp thì vẫn bình thường nhưng kết quả thu được là 1 mớ các Line dài loằng ngoằng nằm tận đẩu đâu. Đôi lúc với trường hợp chân và đỉnh taluy là các Pline gấp khúc thì lại gặp phải lỗi các Line không nối hết khoảng trống giữa 2 Line chân và đỉnh taluy.

Nhưng nếu Copy bản vẽ sang bản vẽ mới thì lại rải được bình thường, cũng có lúc làm mọi cách vẫn không được, kể cả thử trên bản vẽ mới hoàn toàn! Nói chung là rất bực mình! :huh: :huh: :huh:

Mong các bác giúp đỡ!

Thankssssssssssssssssssss!

Hề hề hề,

Bạn hãy gửi cái bản vẽ mà bạn dùng lisp này không được lên thì mới có cơ sở để phán chứ chỉ đọc lisp thì hơi khó. Rõ ràng lisp không hề sai bởi vì nó đã chạy đúng ở một số bản vẽ của bạn.

vậy thì vấn đề nằm ở cái bản vẽ chứ không phải ở lisp. Có thể trên bản vẽ của bạn đã dùng các đối tượng mà người làm lisp không quan tâm tới nên không xử lý nó. vậy đối tượng đó là cái chi thì bạn phải gửi bản vẽ lên mới có cơ sở để mò và từ đó mới có thể bổ sung để hoàn chỉnh cái lisp này theo các đối tựơng thường gặp của bạn được.

Hề hề hề, tiên trách kỷ hậu trách nhân, bạn hãy cố gắng tìm hiểu sự khác nhau giữa các bản vẽ của bạn để có thể phát hiện ra lỗi nếu như bạn không muốn post cái bản vẽ của bạn lên.

Hãy nhớ rằng lisp không phải là vạn năng mà các lisp chỉ luôn đúng với một số hữu hạn các trường hợp được người làm lisp quan tâm tới. Với các trường hợp ngoài phạm vi đó thì người sử dụng phải biết cân nhắc và tự chịu trách nhiệm khi sử dụng nó. Khi người dùng am tường về lisp thì sẽ có lựa chọn đúng, Vì vậy cũng như tất cả mọi món đồ khác hãy cố găng làm " người dùng lisp thông thái " bạn nhé.

Hề hề hề,....

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

Hề hề hề,

Bạn hãy gửi cái bản vẽ mà bạn dùng lisp này không được lên thì mới có cơ sở để phán chứ chỉ đọc lisp thì hơi khó. Rõ ràng lisp không hề sai bởi vì nó đã chạy đúng ở một số bản vẽ của bạn.

vậy thì vấn đề nằm ở cái bản vẽ chứ không phải ở lisp. Có thể trên bản vẽ của bạn đã dùng các đối tượng mà người làm lisp không quan tâm tới nên không xử lý nó. vậy đối tượng đó là cái chi thì bạn phải gửi bản vẽ lên mới có cơ sở để mò và từ đó mới có thể bổ sung để hoàn chỉnh cái lisp này theo các đối tựơng thường gặp của bạn được.

Hề hề hề, tiên trách kỷ hậu trách nhân, bạn hãy cố gắng tìm hiểu sự khác nhau giữa các bản vẽ của bạn để có thể phát hiện ra lỗi nếu như bạn không muốn post cái bản vẽ của bạn lên.

Hãy nhớ rằng lisp không phải là vạn năng mà các lisp chỉ luôn đúng với một số hữu hạn các trường hợp được người làm lisp quan tâm tới. Với các trường hợp ngoài phạm vi đó thì người sử dụng phải biết cân nhắc và tự chịu trách nhiệm khi sử dụng nó. Khi người dùng am tường về lisp thì sẽ có lựa chọn đúng, Vì vậy cũng như tất cả mọi món đồ khác hãy cố găng làm " người dùng lisp thông thái " bạn nhé.

Hề hề hề,....

Bản vẽ của em đây:

http://www.cadviet.c...les/3/sdw_1.dwg

Mong các bác chỉ giáo!

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ản vẽ của em đây:

http://www.cadviet.c...les/3/sdw_1.dwg

Mong các bác chỉ giáo!

Thanks!!!!!!!!!!!!

Hề hề hề,

Bác ĐoanvanHa đã giải quyết giúp bạn rùi, tuy nhiên khi test lisp mình thấy còn một vài điểm có thể cần cải thiện như việc với các đường gấp khúc có thể xảy ra các nét vẽ taluy chồng lên nhau hay như chưa phân biệt được các loại taluy âm và dương,( mặc dầu trong lisp đã cho các lựa chọn O, P, nhưng rất dể gây nhầm lẫn cho người sử dụng).

Về góp ý của bác ĐoanVanHa, bạn nên bổ sung luôn đoạn code chuyển hệ tọa độ về World trong lisp sẽ thuận lợi hơn khi dùng. Cụ thể là bổ sung dòng code (command "ucs" "w") vào bên dưới dòng code (command ":undo" "group").

Chúc bạn thành cô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

Thêm 1 vấn đề nữa:

Lisp này không xài được đối với 2DPolyline.

Hề hề hề,

bạn cần phải nói chính xác hơn. 2Dpolyline có các đối tượng loại LWpolyline và loại Polyline. Với LWpolyline thì bạn dùng tốt nhưng với Polyline thì có vấn đề.Bởi vì người viết lisp không xét tới loại đối tượng này,

Nhưng chính cái bản vẽ bạn post lên cũng đâu có sử dụng đối tượng loại này đâu mà bạn yêu cầu nhỉ???

Nay bạn muốn xét cả loại đối tượng này nữa thì..... hãy đợi đấy!!!!!

Bạn có thể tham khảo thêm khá nhiều lisp về việc vẽ taluy này mà trên diễn đàn đã có. May ra nó đáp ứng được đòi hỏi của bạn đấy.

Hề hề hề,....

  • 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

Thêm 1 vấn đề nữa:

Lisp này không xài được đối với 2DPolyline.

Sau một hồi loay hoay Convert với các tham số khác nhau của Plinetype chả hiểu thế nào lại rải đước tất tần tật cả Polyline lẫn Lwpolyline.

Thử đổi Plinetype với các tham số khác nhau rồi Convert, chẳng làm sao cho để nó lại lỗi như trước!hik2

Tóm lại là OK roài!

Thank các PRO!

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

&nbsp;

Đây nè, cho các bác bộ mã nguồn luôn

Về nghiên cứu thêm nhé

 

 

(defun c:batter	()  (setvar "CMDECHO" 0)  (setq osmode (getvar "osmode"))  (setvar "osmode" 0)  (setvar "unitmode" 0)  (setvar "dimzin" 0)  (setvar "blipmode" 0)  (setvar "aunits" 0)  (setvar "angbase" (/ pi 2))  (setvar "angdir" 1)  (if (not lint)    (setq lint 10.0)  )  (setq int (getdist (strcat "\nInterval &lt;" (rtos lint 2 3) "&gt;: ")))  (if int    (setq lint int)    (setq int lint)  )  (command "line" (list 0.0 0.0) (list 0.0 0.0001) "")  (if (tblsearch "block" "tadtick")    (command "block" "tadtick" "y" (list 0.0 0.0) (entlast) "")    (command "block" "tadtick" (list 0.0 0.0) (entlast) "")  )  (while (setq refent (entsel "\nSelect reference line: "))    (command "undo" "group")    (redraw (car refent) 3)    (initget 1 "Cut Fill")    (setq reply (getkword "\n[C]ut or [F]ill batter: "))    (setq s (ssget))    (command "measure" refent "b" "tadtick" "y" int)    (setq p  (ssget "p")	  cn 0    )    (if	s      (progn	(while (&lt; cn (sslength p))(setq en (entget (ssname p cn))p0 (cdr (assoc 10 en))pt1 p0pt2 nilb (cdr (assoc 50 en)))(entdel (ssname p cn))(setq p1 (polar p0 (+ (/ pi 2) b )  0.0001))	  (command "line" p0 p1 "")	  (command "extend" s "" (list (entlast) p1) "")	  (setq xent (entget (entlast)))	  (setq	xdist		 (distance (cdr (assoc 10 xent)) (cdr (assoc 11 xent)))	  )	  (if (not (equal xdist 0.0001 0.0001))	    (setq pt2 (cdr (assoc 11 xent)))	    (progn	      (command "extend" s "" (list (entlast) p0) "")	      (setq xent (entget (entlast)))	      (setq xdist (distance (cdr (assoc 10 xent))				    (cdr (assoc 11 xent))			  )	      )	      (if (not (equal xdist 0.0001 0.0001))		(setq pt2 (cdr (assoc 10 xent)))	      )	    )	  )	  (entdel (entlast))	  (if pt2	    (if	(= reply "Fill")	      (if (= (rem cn 2) 0)		(command "line" pt1 pt2 "")		(command		  "line"		  pt1		  (polar pt1 (angle pt1 pt2) (/ (distance pt1 pt2) 2))		  ""		)	      )	      (if (= (rem cn 2) 0)		(command "line" pt2 pt1 "")		(command		  "line"		  pt2		  (polar pt2 (angle pt2 pt1) (/ (distance pt2 pt1) 2))		  ""		)	      )	    )	  )	  (setq cn (1+ cn))	)      )    )    (command "undo" "en")  )  (setvar "blipmode" 1)  (setvar "osmode" osmode)  (princ))
&nbsp;

 

==========================================

Nhờ các bác giúp em sửa cái lisp này với:

Yêu cầu:

- gõ BATTER

- chọn đối tượng cần vẽ Taluy (có thể chọn nhiều đối tượng vẽ Taluy 1 lúc)

- pick phía cần dải Taluy

- chọn đối tượng chân Taluy

- xong!

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 có thể download chương trình này về dùng thử

http://www.mediafire.com/download/a9whuo8b9p2aum6/Khungten+V3.1+%28DEMO%29.rar

Chạy setup, đánh pass : LECUONG

Vào Autocad load file *.VLX ở thư mục cài đặt lên thì sẽ có MENU load tự động trên nền AUtocad

Lệnh : BATBD sẽ đánh batter theo yêu cầu của bạn như trên

Có thể xem file hướng dẫn sử dụng PDF ở thư mục cài đặt nhé

  • Vote giảm 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

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
Đăng nhập để thực hiện theo  

×