Rated 5/5 based on 240179 internet user reviews

Đến nội dung


Hình ảnh
- - - - -

lisp tính tổng chiều dài các line hay pline


  • Please log in to reply
22 replies to this topic

#1 smilingman82

smilingman82

    biết vẽ arc

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

Đã gửi 06 May 2008 - 07:53 PM

Các bạn cho mình xin lisp tính tổng chiều dài các line hay pline đc chọn , líp thống kê các line theo 1 khoảng chiều dài cho trước VD như tó mún đếm xem trong các line đc chọn có bao nhiêu đối tượng có chiều dài từ 3 tới 5 (đơn vị vẽ) ..cám ơn nhìu
  • 0

#2 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 3841 Bài viết
Điểm đánh giá: 4356 (đỉnh cao)

Đã gửi 06 May 2008 - 09:31 PM

Các bạn cho mình xin líp tính tổng chiều dài các line hay pline đc chọn , líp thống kê các line theo 1 khoảng chiều dài cho trước VD như tó mún đếm xem trong các line đc chọn có bao nhiêu đối tượng có chiều dài từ 3 tới 5 (đơn vị vẽ) ..cám ơn nhìu

Bạn hãy dùng chức năng tìm kiếm của diễn đàn.
  • 0

#3 smilingman82

smilingman82

    biết vẽ arc

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

Đã gửi 06 May 2008 - 09:39 PM

Các bạn cho mình xin líp tính tổng chiều dài các line hay pline đc chọn , líp thống kê các line theo 1 khoảng chiều dài cho trước VD như tó mún đếm xem trong các line đc chọn có bao nhiêu đối tượng có chiều dài từ 3 tới 5 (đơn vị vẽ) ..cám ơn nhìu

mình tìmthấy lisp tính tổng chiều dài trên 4rom rồi ,,,còn cái líp thống kê nữa ,,,,bác hoành júp hộ cái nhá
  • 0

#4 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 3841 Bài viết
Điểm đánh giá: 4356 (đỉnh cao)

Đã gửi 06 May 2008 - 10:37 PM

mình tìmthấy lisp tính tổng chiều dài trên 4rom rồi ,,,còn cái líp thống kê nữa ,,,,bác hoành júp hộ cái nhá

bạn hãy nêu cụ thể yêu cầu.
  • 0

#5 smilingman82

smilingman82

    biết vẽ arc

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

Đã gửi 07 May 2008 - 07:51 PM

bạn hãy nêu cụ thể yêu cầu.

Giả sử mình có nhiều đối tượng line hay pline có chiều dài từ 3 đến 10 đơn vị vẽ, mình mún một lisp thống kê xem có bao nhiêu object có chiều dài từ 3 tới 5, từ 5 tới 7, từ 7 tới 10................Tưc là khi chạy lip chỉ cần chọn các đối tượng, chọn khoảng chiều dài cần thống kê, chương trình sẽ thống kê đc số lượng các object .....tớ đang làm phân tấm mặt đường BTXM, cần phải thống kê các khe co, khe giãn nên rất cần lisp này.....xin cám ơn bạn trước
  • 0

#6 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 3841 Bài viết
Điểm đánh giá: 4356 (đỉnh cao)

Đã gửi 08 May 2008 - 08:12 AM

Giả sử mình có nhiều đối tượng line hay pline có chiều dài từ 3 đến 10 đơn vị vẽ, mình mún một lisp thống kê xem có bao nhiêu object có chiều dài từ 3 tới 5, từ 5 tới 7, từ 7 tới 10................Tưc là khi chạy lip chỉ cần chọn các đối tượng, chọn khoảng chiều dài cần thống kê, chương trình sẽ thống kê đc số lượng các object .....tớ đang làm phân tấm mặt đường BTXM, cần phải thống kê các khe co, khe giãn nên rất cần lisp này.....xin cám ơn bạn trước

Nhập dữ liệu đầu vào như thế nào? Đầu ra như thế nào?

Hãy rút kinh nghiệm: mỗi khi mà người viết lisp đã giúp bạn, bạn không có điều kiện yêu cầu người ta cải tiến hay viết lại lisp. Vì vậy, bạn hãy thận trọng, kỹ lưỡng nêu đầu đủ và rõ ràng yêu cầu ngay từ đầu, để có lisp đúng ý bạn luôn. Người viết lisp nói chung không thích sự thông minh đến muộn của người yêu cầu lisp, hãy thông minh ngay từ ban đầu.
  • 3

#7 smilingman82

smilingman82

    biết vẽ arc

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

Đã gửi 08 May 2008 - 08:06 PM

Nhập dữ liệu đầu vào như thế nào? Đầu ra như thế nào?

Hãy rút kinh nghiệm: mỗi khi mà người viết lisp đã giúp bạn, bạn không có điều kiện yêu cầu người ta cải tiến hay viết lại lisp. Vì vậy, bạn hãy thận trọng, kỹ lưỡng nêu đầu đủ và rõ ràng yêu cầu ngay từ đầu, để có lisp đúng ý bạn luôn. Người viết lisp nói chung không thích sự thông minh đến muộn của người yêu cầu lisp, hãy thông minh ngay từ ban đầu.

Tớ nêu cụ thể nhá:
Đã có sẵn rất nhiều đối tượng line hay pline;
mục đích là khi chạy lips: command sẽ yêu cầu chọn các object, sau đó yêu cầu nhập khoảng chiều dài của các object được chọn cần thống kê , sau đó sẽ thống kê ra có bao nhiêu đối tượng nằm trong khoảng chiều dài vừa nhập đó, đấy là tớ diễn nôm như thế vì mới tìm hiểu về lisp ,,,cậu thông cảm nhá. nó gần như kiểu một hàm filter , lọc ra được bao nhiêu object có chiều dài nằm trong khoảng mình yêu cầu ....cám ơn cậu trước nhá
  • 0

#8 smilingman82

smilingman82

    biết vẽ arc

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

Đã gửi 08 May 2008 - 08:22 PM

Nhập dữ liệu đầu vào như thế nào? Đầu ra như thế nào?

Hãy rút kinh nghiệm: mỗi khi mà người viết lisp đã giúp bạn, bạn không có điều kiện yêu cầu người ta cải tiến hay viết lại lisp. Vì vậy, bạn hãy thận trọng, kỹ lưỡng nêu đầu đủ và rõ ràng yêu cầu ngay từ đầu, để có lisp đúng ý bạn luôn. Người viết lisp nói chung không thích sự thông minh đến muộn của người yêu cầu lisp, hãy thông minh ngay từ ban đầu.

tớ đang làm phân tấm BTXM mặt đuong, phải thống kê khe co khe dãn, vấn đề đang gặp phải là có rất nhiều line -khe- (trên 1 km đường với tấm BTXM dài 5m rộng 3.5m có khoảng 200 khe co, khe dãn có chiều dài khác nhau)tớ mún thống kê xem có bao nhiêu khe có chiều dài nằm trong khoảng cho trước...... VD : sau khi chạy líp>>>>>command: chọn các object (line or pline)>>>>nhập khoảng chiều dài cần thống kê (VD từ 3-5m *** chiều dài min=3 ; chiều dài max=5), >>>>>>>chương trình sẽ thống kê ra số lượng các line có length từ 3-5m ....................theo tớ nghĩ, biến thực sự ở đây là length của đoạn thẳng, nếu mở rộng ra , thì ta có thể thống kê được nhiều biến.....VD như màu, layer , bề rộng , thậm chí diện tích các hình mà giống nhau >>>cũng có thể thống kê đc sl các object có S bằng nhau ......cám ơn cậu nhá
  • 0

#9 smilingman82

smilingman82

    biết vẽ arc

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

Đã gửi 09 May 2008 - 10:38 PM

Nhập dữ liệu đầu vào như thế nào? Đầu ra như thế nào?

Hãy rút kinh nghiệm: mỗi khi mà người viết lisp đã giúp bạn, bạn không có điều kiện yêu cầu người ta cải tiến hay viết lại lisp. Vì vậy, bạn hãy thận trọng, kỹ lưỡng nêu đầu đủ và rõ ràng yêu cầu ngay từ đầu, để có lisp đúng ý bạn luôn. Người viết lisp nói chung không thích sự thông minh đến muộn của người yêu cầu lisp, hãy thông minh ngay từ ban đầu.

bác hoành đã nghiên cứu đc món này chưa , rất mong sự giúp đỡ của bác nhá
  • 1

#10 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 3841 Bài viết
Điểm đánh giá: 4356 (đỉnh cao)

Đã gửi 09 May 2008 - 11:36 PM

bác hoành đã nghiên cứu đc món này chưa , rất mong sự giúp đỡ của bác nhá


Lệnh TKD (thống kê dài) dưới đây sẽ giúp bạn.
Chương trình sẽ yêu cầu bạn chọn các đối tượng, yêu cầu bạn nhập khoảng cách max, yêu cầu bạn nhập khoảng cách min. Sau đó nó sẽ hiển thị một hộp thoại thông báo cho bạn biết có bao nhiêu đối tượng thỏa mãn.
(defun c:tkd ( / ss dmax dmin i ent dai tong)  (setq	ss  (ssget '((0 . "*LINE")))	dmax (getdist "\nVao khoang cach max: ")	dmin (getdist "\nVao khoang cach min: ")	i 0	tong 0)  (repeat (sslength ss)    (setq ent (ssname ss i)	  i (1+ i))    (command ".lengthen" ent "")    (setq dai (getvar "perimeter"))    (if (and (<= dai dmax)(<= dmin dai))      (setq tong (1+ tong))    )  )  (alert (strcat "Co " (itoa tong) " doi tuong co khoang cach\nTu " (rtos dmin) " - " (rtos dmax)))  (princ))

  • 2

#11 smilingman82

smilingman82

    biết vẽ arc

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

Đã gửi 10 May 2008 - 10:06 PM

Lệnh TKD (thống kê dài) dưới đây sẽ giúp bạn.
Chương trình sẽ yêu cầu bạn chọn các đối tượng, yêu cầu bạn nhập khoảng cách max, yêu cầu bạn nhập khoảng cách min. Sau đó nó sẽ hiển thị một hộp thoại thông báo cho bạn biết có bao nhiêu đối tượng thỏa mãn.

(defun c:tkd ( / ss dmax dmin i ent dai tong)  (setq	ss  (ssget '((0 . "*LINE")))	dmax (getdist "\nVao khoang cach max: ")	dmin (getdist "\nVao khoang cach min: ")	i 0	tong 0)  (repeat (sslength ss)    (setq ent (ssname ss i)	  i (1+ i))    (command ".lengthen" ent "")    (setq dai (getvar "perimeter"))    (if (and (<= dai dmax)(<= dmin dai))      (setq tong (1+ tong))    )  )  (alert (strcat "Co " (itoa tong) " doi tuong co khoang cach\nTu " (rtos dmin) " - " (rtos dmax)))  (princ))

cám ơn bác hoành nhiều nhá ...............tối về nhà sẽ chạy thử lisp của bác , a em làm đuờng cám ơn bác nh lắm đấy ....he he
  • 0

#12 ToTo08

ToTo08

    biết vẽ line

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

Đã gửi 30 October 2010 - 11:24 AM

Mình thấy trên diễn đàn có lisp tính tổng chiều dài như thế này
(defun add_mline ()
(foreach e_record_sub e_record
(cond ((= 10 (car e_record_sub))
(setq pt1 (cdr e_record_sub)
mline_len 0.0
)
)
((= 11 (car e_record_sub))
(setq pt2 (cdr e_record_sub)
mline_len (+ mline_len (distance pt2 pt1))
pt1 pt2
)
)
)
)
(setq tot_len (+ tot_len mline_len))
(ssdel e_name ss)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun C:tg (/ tot_len ss e_name e_record e_type)
(princ "\nCADViet.com © 2007")
(setq tot_len 0.0)
(setq ss (ssget))
(if (null ss)
(exit)
)
(while (> (sslength ss) 0)
(setq e_name (ssname ss 0))
(setq e_record (entget e_name))
(setq e_type (cdr (assoc '0 e_record)))
(cond ((wcmatch e_type "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")
(command "lengthen" e_name "")
(setq tot_len (+ tot_len (getvar "PERIMETER")))
(ssdel e_name ss)
)
((wcmatch e_type "MLINE") (add_mline))
(e_type (ssdel e_name ss))
)
)
(prompt (strcat "\nTotal length is: " (rtos tot_len 2 2)))
(princ)
)
(princ "\ntg - free lisp from www.cadviet.com")
(princ)
Bây giờ muốn mọi người sửa giúp kết quả cuối cùng là chọn text để ghi thay cho kết quả hiện ra trên màn hình, thanks.
  • -1

#13 khang

khang

    biết zoom

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

Đã gửi 06 December 2013 - 02:54 PM

     Mình thấy lisp tg (tính tổng chiều dài các đoạn thẳng rất hay). Mình có thêm yêu cầu nhỏ nữa các pro có thể giải quyết giúp mình được không: có thể thêm chức năng cộng thêm số đoạn nối của các đoạn thẳng vượt quá chiều dài tiêu chuẩn cho trước được không?

    Ví dụ: có n thanh thép (đường kính xác định) chiều dài l1, l2, ...ln. Trong đó, có một số đoạn thẳng có chiều dài >11.7m. Những thanh này được cộng thêm đoạn nối bằng (30, 40 )* đường kính.Yêu cầu tính tổng chiều dài tất cả các thanh thép có đường kính đó (có cộng thêm đoạn nối). Thanks các bạn


  • 0

#14 khang

khang

    biết zoom

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

Đã gửi 06 December 2013 - 03:00 PM

mình có file đính kèm đây


  • 0

#15 khang

khang

    biết zoom

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

Đã gửi 06 December 2013 - 03:02 PM

file mình đây

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


  • 0

#16 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 06 December 2013 - 04:03 PM

file mình đây

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

Hề hề hề,

Thiệt không hiểu nổi bạn muốn cái gì nữa khi gửi một file bản vẽ không có một lời chú thích nào kèm theo.

Cái bạn nói hoàn toàn không phải là không thể nhưng tiêu chí nào để xác định công thêm 40 hay 30 , đơn vị đo là mm hay cm ..... và cái đường kính thep thì lấy ở đâu, tự bịa hay sao???

Là dân làm kỹ thuật mà bạn trình bày kiểu này thì những người thuộc quyền của bạn chắc phải rất giỏi đó.


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

#17 khang

khang

    biết zoom

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

Đã gửi 07 December 2013 - 09:05 AM

hì. cám ơn bạn phạm thanh bình (pro của pro của cadviet)

xin lỗi vì mình diễn đạt không hết ý và cũng không hiểu hêt các yêu cầu dữ liệu đầu vào khi viết lisp.

Hum qua mình gấp quá nên quên không chú thích

Mình xin gửi lại nhé. có j thiếu sót bạn nhắn lại mình biết. Mình có ghi trong bản vẽ rùi.http://www.cadviet.c...8_thep_mong.dwg


  • 0

#18 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 08 December 2013 - 09:59 AM

Rảnh nên làm bậy, bác Bình đừng quở nhé ! :D

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/topic/3778-lisp-tinh-tong-chieu-dai-cac-line-hay-pline/
;;;;;;;;;;;;;;;;;;;;;;;;;;

;;; Sua theo yeu cau cua Khang (Cadviet) de thong ke thep co cong them doan noi = 30\40*d khi Lthanh >1170mm, luu y ham add_mline ko sua vi thep thuong ko ve bang mline

(defun add_mline ()
(foreach e_record_sub e_record
(cond ((= 10 (car e_record_sub))
(setq pt1 (cdr e_record_sub)
mline_len 0.0
)
)
((= 11 (car e_record_sub))
(setq pt2 (cdr e_record_sub)
mline_len (+ mline_len (distance pt2 pt1))
pt1 pt2
)
)
)
)
(setq tot_len (+ tot_len mline_len))
(ssdel e_name ss)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;Doi ten lenh thanh TKT = thong ke thep de khoi lan lon !


(defun C:TKT (/ tot_len ss e_name e_record e_type dk hs len_i)
(princ "\nCADViet.com © 2007")
(setq cmd (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq tot_len 0.0)
(setq ss (ssget))
(initget 1)
(setq dk (getreal "\nNhap duong kinh thanh thep (mm): "))
(initget 1 "30d 40d")
(setq hs (atof (getkword "\nNhap chieu dai doan noi <30d/40d>: ")))
(if (null ss)
(exit)
)
(while (> (sslength ss) 0)
(setq e_name (ssname ss 0))
(setq e_record (entget e_name))
(setq e_type (cdr (assoc '0 e_record)))
(cond ((wcmatch e_type "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")
(command "lengthen" e_name "")
(setq len_i (getvar "PERIMETER"))
(setq len_i (+ (* hs dk (fix (/ len_i 1170))) len_i))
(setq tot_len (+ tot_len len_i))
(ssdel e_name ss)
)
((wcmatch e_type "MLINE") (add_mline))
(e_type (ssdel e_name ss))
)
)
(prompt (strcat "\nTong chieu dai thep (da tinh phan moi noi): " (rtos tot_len 2 2)))
(princ)
)
(setvar "cmdecho" cmd)
(princ)

  • 2

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#19 khang

khang

    biết zoom

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

Đã gửi 09 December 2013 - 09:07 AM

cám ơn bạn hiepttr nhiều.

mình đã dùng và chạy rất k

cám ơn Cadviet


  • 0

#20 tienquyet123

tienquyet123

    biết vẽ polygon

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

Đã gửi 21 August 2014 - 08:15 AM

Mình thấy trên diễn đàn có lisp tính tổng chiều dài như thế này

(defun add_mline ()
(foreach e_record_sub e_record
(cond ((= 10 (car e_record_sub))
(setq pt1 (cdr e_record_sub)
mline_len 0.0
)
)
((= 11 (car e_record_sub))
(setq pt2 (cdr e_record_sub)
mline_len (+ mline_len (distance pt2 pt1))
pt1 pt2
)
)
)
)
(setq tot_len (+ tot_len mline_len))
(ssdel e_name ss)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun C:tg (/ tot_len ss e_name e_record e_type)
(princ "\nCADViet.com © 2007")
(setq tot_len 0.0)
(setq ss (ssget))
(if (null ss)
(exit)
)
(while (> (sslength ss) 0)
(setq e_name (ssname ss 0))
(setq e_record (entget e_name))
(setq e_type (cdr (assoc '0 e_record)))
(cond ((wcmatch e_type "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")
(command "lengthen" e_name "")
(setq tot_len (+ tot_len (getvar "PERIMETER")))
(ssdel e_name ss)
)
((wcmatch e_type "MLINE") (add_mline))
(e_type (ssdel e_name ss))
)
)
(prompt (strcat "\nTotal length is: " (rtos tot_len 2 2)))
(princ)
)
(princ "\ntg - free lisp from www.cadviet.com")
(princ)
Bây giờ muốn mọi người sửa giúp kết quả cuối cùng là chọn text để ghi thay cho kết quả hiện ra trên màn hình, thanks.

Mình đang sử dụng lisp này ở cad 2012 trở xuống OK

Nhưng khong hiểu sao khi dùng trên Cad 2015 bản quyền thì lại bị lỗi,rõ ràng đã thông báo load thành công?

Bác nào có thể giải thích giúp em không,liệu có phải sửa gì không ah.

Nó báo:error funtion cancelled

Các bác giup em với.thanks


Bài viết đã được chỉnh sửa nội dung bởi tienquyet123: 22 August 2014 - 04:01 PM

  • 0

Email : ntq.0123@gmail.com
O948855599

************************