Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
53 replies to this topic

#41 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:15 PM

bản vẽ kè theo


  • 0

#42 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 29 September 2014 - 02: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

Bạn này nói là cái lisp ở mục #26 của bác Bình, cái đó mới dính tới pline, còn cái lsp của hung_xu thì chẳng dính tới pline nào cả.


  • 0

#43 2899nb

2899nb

    biết vẽ line

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

Đã gửi 30 September 2014 - 08:15 AM

tất nhiên yêu cầu của tôi là đánh cấp theo đường pline có sẵn

nhưng chỉ đánh cấp 1 đoạn nằm trên đường pline thôi vì đường pline rất dài và tôi chỉ cần đánh cấp 1 đoạn thôi


  • 0

#44 2899nb

2899nb

    biết vẽ line

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

Đã gửi 30 September 2014 - 08:21 AM

tôi viết lại yêu cầu

1. cần đánh cấp theo pline có sẵn

2. cần nhập đánh cấp theo chiều cao hoặc bề rộng.

3. đánh cấp 1 đoạn thuộc pline đựơc giới hạn bởi 2 điểm: điểm đầu đánh cấp và điểm cuối đánh cấp cả hai điểm này được xác định trước nà nằm trên đường pline có sẵn

4. đánh cấp từ trên xuống dưới

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


  • 0

#45 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 30 September 2014 - 11:28 AM

tôi viết lại yêu cầu

1. cần đánh cấp theo pline có sẵn

2. cần nhập đánh cấp theo chiều cao hoặc bề rộng.

3. đánh cấp 1 đoạn thuộc pline đựơc giới hạn bởi 2 điểm: điểm đầu đánh cấp và điểm cuối đánh cấp cả hai điểm này được xác định trước nà nằm trên đường pline có sẵn

4. đánh cấp từ trên xuống dưới

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

Hề hề hề,

Hãy dùng thử lisp ở bài viết số 28 coi đã ưng ý chưa nhé.


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

#46 2899nb

2899nb

    biết vẽ line

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

Đã gửi 04 October 2014 - 04:12 PM

Hề hề hề,

Hãy dùng thử lisp ở bài viết số 28 coi đã ưng ý chưa nhé.

không được bạn ơn file kiểu gì không tải về được bạn up lại cho tôi nhé thank


  • 0

#47 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 04 October 2014 - 04:28 PM

- ko biết nói sao nữa haizzz "file kiểu gì" ^^

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.c...-lisp-danh-cap/

(defun c:dcapr (/ cur B sp ep Lx n po1 po2 po3 i oldos ans ss )
(vl-load-com)
(command "undo" "be")
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setvar "cmdecho" 0)
(setq cur (car (entsel "\n Ban Pick chon Pline :")) 
         ss (ssadd))
(while (null cur) 
       (setq cur (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-getClosestPointTo cur (getpoint "\n Chon diem bat dau danh cap")))			
(setq ep (vlax-curve-getClosestPointTo cur (getpoint "\n Chon diem ket thuc danh cap")))	
;;(if (> (car sp) (car ep))
;;(progn			
;;(setq ep (vlax-curve-getClosestPointTo cur (getpoint "\n Chon diem bat dau danh cap")))			
;;(setq sp (vlax-curve-getClosestPointTo cur (getpoint "\n Chon diem ket thuc danh cap")))		
;;)
;;)
(setq Lx (abs (- (car ep) (car sp)) ))
(setq n (abs(fix (/ (- Lx (rem Lx b )) b ))) i 1)
(setq po1 sp)
(Repeat n
    (if (> (car po1) (car ep))
        (setq dvi (list (- (car sp) (* i b)) (cadr sp) 0))
        (setq dvi (list (+ (car sp) (* i b )) (cadr sp) 0))
    )
    (command "Xline" "Ver" dvi "")
    (setq po3 (car (giaodt cur (entlast))) )
    (entdel (entlast))
    (if  (= ans "D") 
         (if (> (cadr po3) (cadr po1))
             (setq po2 (list (car po3) (cadr po1) 0))
             (setq po2 (list (car po1) (cadr po3) 0))
         )
         (if (< (cadr po3) (cadr po1))
              (setq po2 (list (car po3) (cadr po1) 0))
              (setq po2 (list (car po1) (cadr po3) 0))
         )
    )
    (setq ss (ssadd (dline po1 po2) ss))
    (setq ss (ssadd (dline po2 po3) ss))
    (setq po1 po3)
    (setq i (1+ i))
)
(if (= ans "D" )
     (if (> (cadr ep) (cadr po1))
          (setq po2 (list (car ep) (cadr po1) 0))
          (setq po2 (list (car po1) (cadr ep) 0))
     )
     (if (< (cadr ep) (cadr po1))
          (setq po2 (list (car ep) (cadr po1) 0))
          (setq po2 (list (car po1) (cadr ep) 0))
     )
)
(setq ss (ssadd (dline po1 po2) ss))
(setq ss (ssadd (dline po2 ep)  ss))
(command "pedit" "m" ss "" "Y" "j" "0" "")
(setvar "osmode" oldos)
(command "undo" "end")
(princ)
);
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:dcapc (/ cur B sp ep Lx n po1 po2 po3 i oldos ans ss )
(vl-load-com)
(command "undo" "be")
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setvar "cmdecho" 0)
(setq cur (car (entsel "\n Ban Pick chon Pline :")) 
         ss (ssadd))
(while (null cur) 
       (setq cur (car (entsel "\n Ban Pick chon lai Pline :")))
)
(setq B (getdist "\n Nhap chieu cao danh cap :"))
(initget "T D")	
(setq ans (getkword "\n Ban danh cap Tren hay Duoi duong pline < T / D > :"))
(setq sp (vlax-curve-getClosestPointTo cur (getpoint "\n Chon diem bat dau danh cap")))			
(setq ep (vlax-curve-getClosestPointTo cur (getpoint "\n Chon diem ket thuc danh cap")))
;;(if (> (cadr sp) (cadr ep))
;;(progn			
;;(setq ep (vlax-curve-getStartPoint cur))			
;;(setq sp (vlax-curve-getEndPoint cur))		
;;)
;;)
(setq Lx (abs (- (cadr ep) (cadr sp)) ))
(setq n (abs(fix (/ (- Lx (rem Lx b )) b ))) i 1)
(setq po1 sp)
(Repeat n
    (if (> (cadr po1) (cadr ep))
        (setq dvi (list  (car sp) (-  (cadr sp) (* i b )) 0))
        (setq dvi (list  (car sp) (+ (* i b ) (cadr sp)) 0))
    )
    (command "Xline" "Hor" dvi "")
    (setq po3 (car (giaodt cur (entlast))) )
    (entdel (entlast))
    (if  (= ans "D") 
         (if (> (cadr po3) (cadr po1))
             (setq po2 (list (car po3) (cadr po1) 0))
             (setq po2 (list (car po1) (cadr po3) 0))
         )
         (if (< (cadr po3) (cadr po1))
              (setq po2 (list (car po3) (cadr po1) 0))
              (setq po2 (list (car po1) (cadr po3) 0))
         )
    )
    (setq ss (ssadd (dline po1 po2) ss))
    (setq ss (ssadd (dline po2 po3) ss))
    (setq po1 po3)
    (setq i (1+ i))
)
(if (= ans "D" )
     (if (> (cadr ep) (cadr po1))
          (setq po2 (list (car ep) (cadr po1) 0))
          (setq po2 (list (car po1) (cadr ep) 0))
     )
     (if (< (cadr ep) (cadr po1))
          (setq po2 (list (car ep) (cadr po1) 0))
          (setq po2 (list (car po1) (cadr ep) 0))
     )
)
(setq ss (ssadd (dline po1 po2) ss))
(setq ss (ssadd (dline po2 ep)  ss))
(command "pedit" "m" ss "" "Y" "j" "0" "")
(setvar "osmode" oldos)
(command "undo" "end")
(princ)
);
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun dline(p1 p2)
(entmakex (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 nil
          sd (fix (/ (length g) 3)))
(repeat sd
      (setq kq (append kq (list (list (car g) (cadr g) (caddr g)))) 
                g (cdddr g))
)
kq
)
nil
)
)
;;;

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

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








#48 2899nb

2899nb

    biết vẽ line

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

Đã gửi 06 October 2014 - 04:37 PM

có những biết chút mà to mồm

sửa được cái lisp của người khác có ra hồn đâu

1. chế độ bắt điểm bị tắt

2. chế độ đánh cấp bị loạn đi khai báo chiều cao nhưng kết quả chỗ được chổ không

haizzzzzz


  • -2

#49 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 06 October 2014 - 05:13 PM

- ok bạn thích nói sao cũng đc, lỗi nhoc ko nói rõ giờ nhoc nói oạch tẹt ra là bạn ko pit cách tải mà bạn đã nói người ta up file kỉu gì

- file lsp trên là nhoc tải đc nguyên gốc lsp của a PTB chưa hề chỉnh sửa 1 tí nào cả

 

 

- bạn yêu cầu mà cách nói như ra lệnh

P/s: lsp góc anh PTB chỉnh cho bạn nhoc đã chạy thử chả lỗi lầm gì cả, còn vụ bắt điểm trong yêu cầu bạn có đã động gì tới đâu, file mình họa cũng ko nói cụ thể cứ chỉ đại điểm đầu điểm cuối trong đoạn pline thì ai pit mà mò bạn thíck bắt điểm kiểu nào mà set, ảnh chỉ viết đúng nguyên tắc cần thiết để lsp chạy ko lỗi thui


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

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








#50 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 06 October 2014 - 09:02 PM

có những biết chút mà to mồm

sửa được cái lisp của người khác có ra hồn đâu

1. chế độ bắt điểm bị tắt

2. chế độ đánh cấp bị loạn đi khai báo chiều cao nhưng kết quả chỗ được chổ không

haizzzzzz

Hề hề hề,

Chớ nóng chứ.

Chuyện lisp sửa chửa ra hồn cũng là điều bình thường thôi mà. Vậy nên mới bảo bạn test thử xem có lỗi gì không. Nếu có thì lại sửa chứ có chi mà nóng.

Về các lỗi bạn nói:

1/- Chế độ bắt điểm bị tắt đi trong quá trình chạy lisp để người dùng không bị bắt nhầm điểm. Sau khi hoàn tất lisp sẽ trả chế độ bắt điểm về ban đầu mà. Nếu khi bạn chạy lisp xong mà vẫn bị mất chế độ bắt điểm là do quá trình thao tác của bạn có thể bị trật khi bắt điểm (giả sử là bắt không trúng điểm thuộc pline) và lisp thoát ra giữa chừng nên nó không trả về truy bắt điểm trước đó được.

2/- Chế độ đánh cấp bị loạn đi có thể là do bạn chưa hiểu cách dùng lisp này. Lisp này sẽ đánh cấp từ điểm bắt đầu đến điểm kết thúc mà không quan tâm là từ trên xuống hay từ dưới lên. Vì thế bạn cần chọn đúng trật tự điểm đầu và điểm cuối theo mong muốn của bạn là từ trên xuống hay từ dưới lên. Việc lisp có lúc được lúc không có nhẽ là do bạn cẩu thả trong thao tác chọn điểm đầu và điểm cuối nên lisp không chọn được đúng các điểm trên pline. Bạn hãy thử sửa dòng code (setvar "osmode" 0) thành (setvar "osmode" 512) xem sao nhé.

3/- Chúc bạn vui và kiên nhẫn hơn khi gặp điều chưa vừa ý mình.


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

#51 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 07 October 2014 - 07:09 AM

- hi hôm qua sốt nên dễ cáu có gì mấy anh bỏ quá cho nhoc ^^


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

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








#52 tientaiutc

tientaiutc

    Chưa sử dụng CAD

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

Đã gửi 26 October 2016 - 10:17 AM

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

anh bình ơi lisp a viết ok lắm nhưng a giúp em them chút với ạ

lisp này của anh nó đánh cấp trên toàn bộ pline mình chọn

nhưng công việc của e là đánh cấp trong phạm vi đắp đất thôi

nên e muốn có thế chọn điểm đầu điểm cuối để lisp nó đánh cấp trong phạm vi đó thôi ạ

a giúp em với nha


  • -1

#53 tientaiutc

tientaiutc

    Chưa sử dụng CAD

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

Đã gửi 29 October 2016 - 03:07 PM

:(  k có ai giúp em với ạ


  • 0

#54 zxcv14789

zxcv14789

    Chưa sử dụng CAD

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

Đã gửi 10 November 2016 - 09:39 PM

Cái lips dcapr_dcapc.lsp

Dùng rất ổn nhưng em có đóng góp mong chỉnh sửa lại cái lisp này cho hoàn chỉnh hơn.

Mong rằng lisp này chỉnh lại đừng bỏ osnap sau khi dùng. Có vòng lặp để được nhấn đánh cấp nhiều đoạn trên cùng đoạn pline đó. Chứ cái này nếu có nhiều chỗ đánh cấp trên 1 đường tự nhiên thì phải nhấn chọn lại từ đầu.

 

Nhân tiện có bác nào có lisp vét bùn không cho em xin.


  • 0