Đến nội dung


Hình ảnh
- - - - -

Nhờ Giúp Lisp Đánh Cấp


  • Please log in to reply
53 replies to this topic

#21 2899nb

2899nb

    biết vẽ line

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

Đã gửi 28 June 2014 - 09:49 AM

có đựoc đau bạn oi tôi copy về nhưng dùng xong kết quả chẳng được gì chỉ hiện ra đường xline thôi bác có thể mở bản vẽ của tôi ra xem không


  • 0

#22 2899nb

2899nb

    biết vẽ line

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

Đã gửi 28 June 2014 - 09:58 AM

tôi cũng Reply copy hết về nhưng sao đánh cấp kiểu gì chỉ hiện ra được 1 đường Xline thôi hay lỗi gì.bác gửi giúp tôi vào mail thuyloi68@gmail.com xem sao cảm ơn nhiều tôi đang cần


  • 0

#23 buithengan1

buithengan1

    biết vẽ line

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

Đã gửi 19 September 2014 - 08:12 AM

Bạn dkkx3a và bạn xaakiii_mboet có thể cho biết bạn đánh cấp cho Pline gấp khúc, nhưng bạn đánh cấp với trường hợp các cấp nằm dưới Pline sử dụng trong trường hợp thực tế nào không?
Tue_NV sử dụng Lisp đánh cấp với các cấp nằm trên Pline trong trường hợp đánh bậc cấp.
Tue_NV xin nâng cấp vào Lisp : đánh cấp cho pline gấp khúc ở 2 trường hợp :
1. Các cấp nằm trên pline
2. các cấp nằm dưới pline
Các bạn sử dụng thử xem : (áp dụng đúng luôn cho Spline)

(defun c:dcap(/ curve B sp ep Lx n po1 po2 po3 i oldos ans)(vl-load-com)(command "undo" "be")(setq oldos (getvar "osmode"))(setvar "osmode" 0)(setvar "cmdecho" 0)(setq curve (car(entsel "\n Ban Pick chon Pline :")) ss (ssadd))(while (null curve) (setq curve (car(entsel "\n Ban Pick chon lai Pline :")))) (setq B (getdist "\n Nhap be rong danh cap :"))(initget "T D")	(setq ans (getkword "\n Ban danh cap Tren hay Duoi duong pline < T / D > :"))(setq sp (vlax-curve-getStartPoint curve))(setq ep (vlax-curve-getEndPoint curve))	(if (> (cadr sp) (cadr ep))   		(progn			(setq ep (vlax-curve-getStartPoint curve))			(setq sp (vlax-curve-getEndPoint curve))		))(setq Lx (abs (- (car ep) (car sp)) ))(setq n (abs(fix (/ (- Lx (rem Lx B )) B ))) i 1)(setq po1 sp)(Repeat n(setq dvi (list (+ (car sp) (* i B )) (cadr sp) 0))(command "Xline" "Ver" dvi "")(setq po3 (car (giaodt curve (entlast))) )(entdel (entlast))(if (= ans "D")(setq po2 (list (car po3) (cadr po1) 0))(setq po2 (list (car po1) (cadr po3) 0)))(dline po1 po2) (dline po2 po3)(setq po1 po3)(setq i (1+ i)))(if (= ans "D")(setq po2 (list (car ep) (cadr po1) 0))(setq po2 (list (car po1) (cadr ep) 0)))(dline po1 po2)(dline po2 ep) (setvar "osmode" oldos)(command "undo" "end")(princ));(defun dline(p1 p2)(entmake (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2))));(defun GiaoDT (ent1 ent2)(setq ob1 (vlax-ename->vla-object ent1)ob2 (vlax-ename->vla-object ent2))(setq g (vlax-variant-value(vla-IntersectWith ob1 ob2 acExtendNone)))(if (/= (vlax-safearray-get-u-bound g 1) -1)(setq g (vlax-safearray->list g))(setq g nil))(if g(progn(setq kq nilsd (fix (/ (length g) 3)))(repeat sd(setq kq (append kq (list (list (car g) (cadr g) (caddr g))))g (cdddr g)))kq)nil))
Hiện nay chức năng download Lisp file của diễn đàn bị lỗi. Nếu bạn sử dụng chức năng download Lisp file của diễn đàn bị lỗi thì hãy nhấn nút Reply bài viết này của Tue_NV -> chép hết code về (không sót đấy nhé về chạy thử là được
Chúc thành công tongue2.gif

bạn tue-nv ơi bạn có thể sửa giùm mình cái lisp này thành  đánh cấp với chiều cao H cho trước được không. cảm ơn bạn trước nha


  • 0

#24 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 19 September 2014 - 05:47 PM

bạn tue-nv ơi bạn có thể sửa giùm mình cái lisp này thành  đánh cấp với chiều cao H cho trước được không. cảm ơn bạn trước nha

Hề hề hề,

Chác bác Tue_NV dạo này hơi bận. Mình mạn phép bác sửa lại và bổ sung chút chút vào lisp để hy vọng sẽ đáp ứng được yêu cầu của bạn. Bạn hãy dùng thử coi sao nhé. Nếu bạn sử dụng đánh cấp theo chiều rộng bậc thì dùng lệnh dcapr , Còn nếu sử dụng đánh cấp theo chiều cao bậc thì dùng lệnh dcapc nhé.

Chúc bạn vui.

http://www.cadviet.c.../5194_dcap_.lsp


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

#25 phamhuy1

phamhuy1

    biết vẽ rectang

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

Đã gửi 19 September 2014 - 05:55 PM

Anh phamthanhbinh post file kiểu này thí coi như mất cấp luôn í :o


  • 0

#26 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 19 September 2014 - 06:09 PM

Anh phamthanhbinh post file kiểu này thí coi như mất cấp luôn í :o

Hề hề hề,

Vậy kiểu này có được không hè???

 

http://www.mediafire...p-Modifier_.lsp


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

#27 phamhuy1

phamhuy1

    biết vẽ rectang

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

Đã gửi 19 September 2014 - 06:33 PM

Hehehe :D  như thế mới là có cấp!


  • 0

#28 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 20 September 2014 - 02:55 PM

tôi cũng Reply copy hết về nhưng sao đánh cấp kiểu gì chỉ hiện ra được 1 đường Xline thôi hay lỗi gì.bác gửi giúp tôi vào mail thuyloi68@gmail.com xem sao cảm ơn nhiều tôi đang cần

Hế hề hề,

Chắc bác Tue-NV bận mà cũng không rõ bạn có còn cần nữa không??? Mình mạo muội xin phép bác Tue_NV sửa lại cái lisp của bác ấy theo hai yêu cầu của bạn.

Trong lisp mình sửa này, việc dánh cấp sẽ được thực hiện từ điểm đầu tới điểm cuối trên pline do bạn quyết định khi chọn mà không nhất thiết là từ trên xuống hay từ dưới lên. Bạn có thể tùy hứng theo yêu cầu cụ thể của bạn.

Thực ra có thể ghép hai lệnh trong lisp này thành một lệnh duy nhất và thêm một tùy chọn đánh cấp theo chiều cao hay chiều rộng của bậc cấp. Tuy nhiên mình vẫn để thành hai lệnh như vầy có lẽ tốt hơn cho người sử dụng chăng?????

 

http://www.4shared.c...Modifier-1.html


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

#29 hung_xu20032000

hung_xu20032000

    biết vẽ ellipse

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

Đã gửi 21 September 2014 - 12:58 PM

Mình làm bên khai thác mỏ. May nhờ các bác mở Topic đánh cấp. Các bác hộ e với. Với bản vẽ của e điểm đầu đánh cấp tại mức +150. Các bác viết hộ e lisp đánh cấp với. Vẽ đánh cấp dựa vào các thông số: Điểm đầu đánh cấp, góc đánh cấp, chiều cao đánh cấp, khoảng cách đánh cấp, chiều rộng đánh cấp. Chi tiết theo bản vẽ e gửi kèm. Cảm ơn các bác

http://www.cadviet.c..._cad_viet_1.dwg


  • 0

#30 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 21 September 2014 - 09:11 PM

Mình làm bên khai thác mỏ. May nhờ các bác mở Topic đánh cấp. Các bác hộ e với. Với bản vẽ của e điểm đầu đánh cấp tại mức +150. Các bác viết hộ e lisp đánh cấp với. Vẽ đánh cấp dựa vào các thông số: Điểm đầu đánh cấp, góc đánh cấp, chiều cao đánh cấp, khoảng cách đánh cấp, chiều rộng đánh cấp. Chi tiết theo bản vẽ e gửi kèm. Cảm ơn các bác

http://www.cadviet.c..._cad_viet_1.dwg

Hề hề hề,

Chưa hiểu rõ yêu cầu của bạn.

iKhoảng cách đánh cấp và chiều cao đánh cấp có quan hệ vơi  nhau ra sao???


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

#31 hung_xu20032000

hung_xu20032000

    biết vẽ ellipse

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

Đã gửi 22 September 2014 - 07:32 PM

Cảm ơn bạn đã quan tâm. Khoảng cách đánh cấp và chiều cao đánh cấp có mối quan hệ với nhau. Ví dụ như bản vẽ của mình, khoảng cách đánh cấp chỉ cao 20 m (từ mức +150 đến +170). từ mức +170 lên đến mức +185 thì chiều cao đánh cấp và khoảng cách đánh cấp đều là 15m. Tương tự đến mức +185 đến +190 chiều cao đánh cấp và khoảng cách đánh cấp cao 5m. Mức +190 đến +210 thì chiều cao đánh cấp là 10m; khoảng cách đánh cấp là 20m. 


  • 0

#32 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 22 September 2014 - 08:29 PM

nhoc thì chưa viết đc nhưng nhoc góp ý xíu ^^, điểm đặt, góc, chiều rộng theo bản vẽ thì là hằng số cố định, còn chiều cao và khoảng cách đánh cấp theo nhoc hình như nó ko có quy luật nhất định thì phải. như file bạn đưa :10-10-15-5-10-10


  • 1
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#33 hung_xu20032000

hung_xu20032000

    biết vẽ ellipse

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

Đã gửi 22 September 2014 - 09:29 PM

Chính xác là như vậy. Mình cũng chỉ cần làm theo giai đoạn là được. Chỉ cần chiều cao đánh cấp là 10m; khoảng cách đánh cấp là 20m (10-20). Ý là theo từng đoạn cũng được. có thể là 10-30 hoặc là 15-20...


  • 0

#34 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 23 September 2014 - 09:29 AM

Bạn thử cái này.  Chon diem dau, diem cuoi, goc nghieng (theo do), be rong ngang, chieu cao.

 

(defun c:dca(/ dda dcu l pt0 pt os goc1 ngang1 dung1 ngang2)
  (defun d2r(a) (* pi (/ a 180)))  
  (setq dda (getpoint "\nDiem dau:") 
dcu (getpoint dda "\nDiem cuoi:")
l (list dda)
pt0 dda
pt pt0
os (getvar 'osmode))
  (setq goc1 (getreal (strcat "\nGoc nghieng <" (rtos (if (not goc) (setq goc 0) goc)) "> :")))
  (if goc1 (setq goc goc1))
  (setq ngang1 (getdist (strcat "\nChieu ngang <" (rtos (if (not ngang) (setq ngang 1) ngang)) "> :")))
  (if ngang1 (setq ngang ngang1))
  (setq dung1 (getdist (strcat "\nChieu cao <" (rtos (if (not dung) (setq dung 1) dung)) "> :")))
  (if dung1 (setq dung dung1)) 
  (if (> (car dcu) (car dda)) (setq lenh +) (setq lenh -))
  (setq ngang2 (* (cos (d2r goc)) (/ dung (sin (d2r goc)))))
  
  (while (> (cadr pt) (cadr dcu))
    (setq pt (polar (polar pt 0 (lenh ngang2)) (* -0.5 pi) dung))
    (if (> (cadr pt) (cadr dcu))
      (setq l (append l (list pt))
   pt (polar pt 0 (lenh ngang))
   l (append l (list pt))
   pt0 pt)
      (setq pt (inters pt0 pt (list 0 (cadr dcu)) (list 1 (cadr dcu)) nil)
   l (append l (list pt)))
    )
  )
  (setvar 'osmode 0)
  (command "pline") (foreach v l (command v)) (command "")
  (setvar 'osmode os)
)

 

p/s : Dao nay danh tieng viet co dau trong cadviet no nhay tum lum, danh phai danh khong dau vay.


  • 1

#35 hung_xu20032000

hung_xu20032000

    biết vẽ ellipse

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

Đã gửi 23 September 2014 - 07:12 PM

Cảm ơn bác Tot7 rất nhiều. Nhưng lisp của bác là từ trên xuống dưới. E muốn từ dưới lên trên cơ anh ạ. 


  • 0

#36 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 23 September 2014 - 07:34 PM

Ngoài cái đó bạn cần bổ sung gì nữa không?

Nếu không thì xài cái này.

(defun c:dca(/ dda dcu l pt0 pt os goc1 ngang1 dung1 ngang2)
  (defun d2r(a) (* pi (/ a 180)))  
  (setq dda (getpoint "\nDiem dau:") 
dcu (getpoint dda "\nDiem cuoi:")
l (list dda)
pt0 dda
pt pt0
os (getvar 'osmode))
  (setq goc1 (getreal (strcat "\nGoc nghieng <" (rtos (if (not goc) (setq goc 0) goc)) "> :")))
  (if goc1 (setq goc goc1))
  (setq ngang1 (getdist (strcat "\nChieu ngang <" (rtos (if (not ngang) (setq ngang 1) ngang)) "> :")))
  (if ngang1 (setq ngang ngang1))
  (setq dung1 (getdist (strcat "\nChieu cao <" (rtos (if (not dung) (setq dung 1) dung)) "> :")))
  (if dung1 (setq dung dung1)) 
  (if (> (car dcu) (car dda)) (setq lenh +) (setq lenh -))
  (setq ngang2 (* (cos (d2r goc)) (/ dung (sin (d2r goc)))))
  
  (while (< (cadr pt) (cadr dcu))
    (setq pt (polar (polar pt 0 (lenh ngang2)) (* 0.5 pi) dung))
    (if (< (cadr pt) (cadr dcu))
      (setq l (append l (list pt))
   pt (polar pt 0 (lenh ngang))
   l (append l (list pt))
   pt0 pt)
      (setq pt (inters pt0 pt (list 0 (cadr dcu)) (list 1 (cadr dcu)) nil)
   l (append l (list pt)))
    )
  )
  (setvar 'osmode 0)
  (command "pline") (foreach v l (command v)) (command "")
  (setvar 'osmode os)
)

  • 1

#37 hung_xu20032000

hung_xu20032000

    biết vẽ ellipse

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

Đã gửi 23 September 2014 - 09:20 PM

Chuẩn luôn rồi bạn ạ. Cảm ơn bạn nhiều nhá.


  • 0

#38 2899nb

2899nb

    biết vẽ line

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

Đã gửi 26 September 2014 - 04:31 PM

lisp của bạn cũng được nhưng nó đánh cấp trên toàn bộ pline

tôi chỉ muốn đánh 1 đoạn pline thôi thì làm thế nào

bác sửa giúp thành chọn điểm đầu điểm cuối pline được không


  • 0

#39 hung_xu20032000

hung_xu20032000

    biết vẽ ellipse

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

Đã gửi 26 September 2014 - 09:42 PM

bạn định nghĩa 1 đoạn pline là thế nào. Mình dùng thấy lisp trên là khá khoàn chỉnh rồi. Bạn đưa bản vẽ lên đi. mọi người mới giúp được chứ.


  • 0

#40 2899nb

2899nb

    biết vẽ line

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

Đã gửi 29 September 2014 - 02:14 PM

nghĩa là tôi có 1 poline rất dài rôi chỉ cần đánh cấp 1 đoạn trong đường pline đó thôi

làm cách nào để tôi chọn: điểm đầu đánh cấp(thuộc đường pline) , chọn điểm cuối đánh cấp(thuộc đường pline)


  • 0