Rated 5/5 based on 240179 internet user reviews

Jump to content


Change Photo
- - - - -

LISP tính toán chiều dài đoạn thẳng


  • Please log in to reply
15 replies to this topic

#1 PUCH

PUCH

    biết vẽ circle

  • Members
  • PipPip
  • 36 posts
Danh tiếng: 1 (b́nh thường)

Gửi vào 22 December 2008 - 02:37 PM

HI!!!!!
Cho ḿnh hỏi có lisp nào có thể tự tính toán các đọan thẳng rùi sau đó cộng lại với nhau và cuối cùng là cho ra kết wả tổng chiều dài cuối hok
tương tự như lệnh list nhưng lệnh này chỉ hiện thông tin cho từng đọan thẳng và ho kcho ra tổng chiều dài
Có bạn nào bit chỉ ḿnh với
thankssUUUUU!
  • 0

#2 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1,242 posts
Danh tiếng: 1304 (rất tốt)

Gửi vào 22 December 2008 - 03:54 PM

HI!!!!!
Cho ḿnh hỏi có lisp nào có thể tự tính toán các đọan thẳng rùi sau đó cộng lại với nhau và cuối cùng là cho ra kết wả tổng chiều dài cuối hok
tương tự như lệnh list nhưng lệnh này chỉ hiện thông tin cho từng đọan thẳng và ho kcho ra tổng chiều dài
Có bạn nào bit chỉ ḿnh với
thankssUUUUU!

Bạn chạy thử LISP này :
(defun C:Chdai( / ss e d cdai total )  (setq ss (ssget '((0 . "LINE")))	total 0	)  (while (setq e (ssname ss 0))    (setq d (entget e)	  cdai (distance (cdr(assoc 10 d)) (cdr(assoc 11 d)))	  total ( + total cdai)	  )    (write-line (strcat "chieu dai : " (rtos cdai) ) )    (ssdel e ss)    )  (write-line (strcat "Tong chieu dai : " (rtos total) ) )  (textscr)  (princ)    )

  • 0

#3 PUCH

PUCH

    biết vẽ circle

  • Members
  • PipPip
  • 36 posts
Danh tiếng: 1 (b́nh thường)

Gửi vào 22 December 2008 - 04:33 PM

Bạn chạy thử LISP này :

(defun C:Chdai( / ss e d cdai total )  (setq ss (ssget '((0 . "LINE")))	total 0	)  (while (setq e (ssname ss 0))    (setq d (entget e)	  cdai (distance (cdr(assoc 10 d)) (cdr(assoc 11 d)))	  total ( + total cdai)	  )    (write-line (strcat "chieu dai : " (rtos cdai) ) )    (ssdel e ss)    )  (write-line (strcat "Tong chieu dai : " (rtos total) ) )  (princ)  )

Hi!!!!!!
thanks bạn
nhưng sao ḿnh thử hok dc
chỉ mới xong bước chọn đối tượng thui
soa đó ho k thấy có tác dụng ji hết
XIn bạn chỉ dẫn cho ḿnh tí
thank!!!!!!!!!
  • 0

#4 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 5,597 posts
Danh tiếng: 2955 (tuyệt vời)

Gửi vào 23 December 2008 - 10:32 AM

HI!!!!!
Cho ḿnh hỏi có lisp nào có thể tự tính toán các đọan thẳng rùi sau đó cộng lại với nhau và cuối cùng là cho ra kết wả tổng chiều dài cuối hok
tương tự như lệnh list nhưng lệnh này chỉ hiện thông tin cho từng đọan thẳng và ho kcho ra tổng chiều dài
Có bạn nào bit chỉ ḿnh với
thankssUUUUU!

Chào bạn puch,
Bạn hăy chịu khó t́m trên diễn đàn nhé. Cái lisp này đă có rồi. Hăy chịu khó t́m kiếm trước khi post yêu cầu của ḿnh.
Cám ơn bạn.
  • 0
Chúc các quư Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#5 PUCH

PUCH

    biết vẽ circle

  • Members
  • PipPip
  • 36 posts
Danh tiếng: 1 (b́nh thường)

Gửi vào 23 December 2008 - 11:33 AM

Chào bạn puch,
Bạn hăy chịu khó t́m trên diễn đàn nhé. Cái lisp này đă có rồi. Hăy chịu khó t́m kiếm trước khi post yêu cầu của ḿnh.
Cám ơn bạn.

:cheers: hi !!!!
ḿnh cũng bit chứ
nhưng hok thấy nên mới hỏi đó
bạn bit chổ nào chỉ cho ḿnh tí
hoặc có cách nào t́m nhanh tí,
ḿnh ṃ hoài chẳng ra
thankssss!!!!!
  • 0

#6 nataca

nataca

    biết lệnh adcenter

  • CVN Team
  • PipPipPipPipPipPipPip
  • 712 posts
Danh tiếng: 541 (tốt)

Gửi vào 23 December 2008 - 02:18 PM

:cheers: hi !!!!
ḿnh cũng bit chứ
nhưng hok thấy nên mới hỏi đó
bạn bit chổ nào chỉ cho ḿnh tí
hoặc có cách nào t́m nhanh tí,
ḿnh ṃ hoài chẳng ra
thankssss!!!!!

ko chạy được v́ đường của bạn có thể là polyline chứ không phải là line như bạn yêu cầu viết lisp. Chắc chắn trên diễn đàn có lisp tính tổng chiều dài không những chỉ đoạn thẳng mà c̣n cả đường cong...
  • 0

#7 doanduyhung

doanduyhung

    biết vẽ spline

  • Members
  • PipPip
  • 90 posts
Danh tiếng: 40 (tàm tạm)

Gửi vào 23 December 2008 - 02:28 PM

Nè cu thử nhé: :cheers: :s_big:
(defun c:dotongpl(/)
(setq chieudai 0.00)
(setq sspolyline (ssget))
(setq i 0)
(repeat (sslength sspolyline)
(setq polylinechon (ssname sspolyline i))
(setq polylinechon (vlax-ename->vla-object polylinechon))
(setq chieudai1 (vlax-get-property polylinechon 'length))
(setq chieudai (+ chieudai1 chieudai))
(setq i (+ i 1))
)
(princ (rtos chieudai 2 3))
)
  • 0

#8 PUCH

PUCH

    biết vẽ circle

  • Members
  • PipPip
  • 36 posts
Danh tiếng: 1 (b́nh thường)

Gửi vào 23 December 2008 - 02:40 PM

ko chạy được v́ đường của bạn có thể là polyline chứ không phải là line như bạn yêu cầu viết lisp. Chắc chắn trên diễn đàn có lisp tính tổng chiều dài không những chỉ đoạn thẳng mà c̣n cả đường cong...

hi
thanhs u!
nhưng bạn có ho k gởi cho ḿnh lun đi
thanks bạn ngen!!
  • 0

#9 PUCH

PUCH

    biết vẽ circle

  • Members
  • PipPip
  • 36 posts
Danh tiếng: 1 (b́nh thường)

Gửi vào 24 December 2008 - 11:54 AM

Nè cu thử nhé: :s_big: :s_big:
(defun c:dotongpl(/)
(setq chieudai 0.00)
(setq sspolyline (ssget))
(setq i 0)
(repeat (sslength sspolyline)
(setq polylinechon (ssname sspolyline i))
(setq polylinechon (vlax-ename->vla-object polylinechon))
(setq chieudai1 (vlax-get-property polylinechon 'length))
(setq chieudai (+ chieudai1 chieudai))
(setq i (+ i 1))
)
(princ (rtos chieudai 2 3))
)

:cheers:
cái lisp này cũng vậy bạn ơi
coi giúp lại ḿnh tí đi
thanks!!!!!! :s_big:
  • 0

#10 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1,228 posts
Danh tiếng: 1064 (rất tốt)

Gửi vào 24 December 2008 - 01:31 PM

HI!!!!!
Cho ḿnh hỏi có lisp nào có thể tự tính toán các đọan thẳng rùi sau đó cộng lại với nhau và cuối cùng là cho ra kết wả tổng chiều dài cuối hok
tương tự như lệnh list nhưng lệnh này chỉ hiện thông tin cho từng đọan thẳng và ho kcho ra tổng chiều dài
Có bạn nào bit chỉ ḿnh với
thankssUUUUU!

Lisp tính tổng chiều dài của mọi đối tượng có thuộc tính chiều dài (line, pline, spline, arc, circle, ellipse). Lệnh TL:

;;;--------------------------------------------------------------------(defun Length1(e) (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)));;;--------------------------------------------------------------------(defun C:TL( / ss L e)(setq    ss (ssget  (list (cons 0 "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")))    L 0.0)(vl-load-com)(while (setq e (ssname ss 0))    (setq L (+ L (length1 e)))    (ssdel e ss))(alert (strcat "Total length = " (rtos L))));;;--------------------------------------------------------------------

  • 1

#11 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 5,597 posts
Danh tiếng: 2955 (tuyệt vời)

Gửi vào 24 December 2008 - 02:01 PM

:cheers:
cái lisp này cũng vậy bạn ơi
coi giúp lại ḿnh tí đi
thanks!!!!!! :s_big:

Lisp này chạy ngon bạn ơi, chỉ có điều kết quả trả về giá trị tổng và lặp lại một lần nữa. Bạn thêm ḍng lệnh (princ) nữa là Ok.
  • 0
Chúc các quư Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#12 PUCH

PUCH

    biết vẽ circle

  • Members
  • PipPip
  • 36 posts
Danh tiếng: 1 (b́nh thường)

Gửi vào 26 December 2008 - 08:46 AM

Lisp tính tổng chiều dài của mọi đối tượng có thuộc tính chiều dài (line, pline, spline, arc, circle, ellipse). Lệnh TL:

;;;--------------------------------------------------------------------(defun Length1(e) (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)));;;--------------------------------------------------------------------(defun C:TL( / ss L e)(setq    ss (ssget  (list (cons 0 "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")))    L 0.0)(vl-load-com)(while (setq e (ssname ss 0))    (setq L (+ L (length1 e)))    (ssdel e ss))(alert (strcat "Total length = " (rtos L))));;;--------------------------------------------------------------------

Thanks U!
Có món này rùi mọi vic sẻ rất tiện lợi
M̀nh chờ mấy ngày nay mà hok thấy
cám ơn bạn lần nữa ngen, mà nó có tính dc các polyline hok vậy bạn
  • 0

#13 ngochop

ngochop

    biết vẽ ellipse

  • Members
  • PipPip
  • 51 posts
Danh tiếng: 11 (tàm tạm)

Gửi vào 10 September 2009 - 02:34 PM

Bạn chạy thử LISP này :

(defun C:Chdai( / ss e d cdai total )  (setq ss (ssget '((0 . "LINE")))	total 0	)  (while (setq e (ssname ss 0))    (setq d (entget e)	  cdai (distance (cdr(assoc 10 d)) (cdr(assoc 11 d)))	  total ( + total cdai)	  )    (write-line (strcat "chieu dai : " (rtos cdai) ) )    (ssdel e ss)    )  (write-line (strcat "Tong chieu dai : " (rtos total) ) )  (textscr)  (princ)    )

Em cũng đă dùng mấy cái lisp tính chiều dài rồi, nhưng dùng cái líp này không thấy kết quả đâu vậy , em dùng cad 2008, mong các bác xem lại
  • 0

#14 thiep

thiep

    biết dimdiameter

  • Members
  • PipPipPipPipPip
  • 331 posts
Danh tiếng: 247 (khá)

Gửi vào 10 September 2009 - 04:29 PM

Em cũng đă dùng mấy cái lisp tính chiều dài rồi, nhưng dùng cái líp này không thấy kết quả đâu vậy , em dùng cad 2008, mong các bác xem lại

Đây là lisp Thiep viết cho conghoan1003 dùng tính tổng tất cả các chiều dài curve: LWPOLYLINE, LINE, SPLINE, ARC, CIRCLE. Link đây:
http://www.cadviet.c...&...ost&p=62765
  • 1

#15 zippo.113

zippo.113

    biết pan

  • Members
  • Pip
  • 7 posts
Danh tiếng: 0 (b́nh thường)

Gửi vào 09 October 2009 - 03:56 PM

Xin các cao thủ chỉ giáo !
Trong cad em thấy để sửa nhiều đối tượng cùng một thật dài ḍng, ví dụ như sủa text trong b́nh đồ cứ phải ghơ như sau: SSX / select/ enter/ - CHT / select +P/ enter rồi tiếp tục chọn chiều cao, rộng...., mỗi lần làm như vậy thật khó chịu, em mong các bác cao thủ giúp em một cái lisp nào đó đơn giản hơn, ngắn hơn. Cảm ơn các bác nhiều !
  • 0

#16 ngkcuong

ngkcuong

    Chưa sử dụng CAD

  • Members
  • Pip
  • 3 posts
Danh tiếng: 0 (b́nh thường)

Gửi vào 19 June 2012 - 09:21 AM

Lisp tính tổng chiều dài của mọi đối tượng có thuộc tính chiều dài (line, pline, spline, arc, circle, ellipse). Lệnh TL:

;;;--------------------------------------------------------------------(defun Length1(e) (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)));;;--------------------------------------------------------------------(defun C:TL( / ss L e)(setq    ss (ssget  (list (cons 0 "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")))    L 0.0)(vl-load-com)(while (setq e (ssname ss 0))    (setq L (+ L (length1 e)))    (ssdel e ss))(alert (strcat "Total length = " (rtos L))));;;--------------------------------------------------------------------

Cám ơn bác nhiều.
  • 0