Đến nội dung


Hình ảnh
- - - - -

[ Yêu Cầu] viết lisp tính chiều dài đường ống nước


  • Please log in to reply
27 replies to this topic

#21 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 21 April 2012 - 10:53 AM

Bản vẽ cải tạo lại theo hướng của Bác phanthanhbình.
http://www.cadviet.c...0_vidu2_1_1.dwg

Hề hề hề.
Do máy của minh đang bị trục trặc nên chưa thể giúp bạn ngay. Để tối nay mình sẽ làm thử bạn nhé. Hy vọng sẽ có bác khác giải quyết giúp bạn sớm hơn.

Hề hề hề,
Bạn thử dùng cái này xem đã đúng ý bạn chưa nhé. Nếu cần thay đổi gì thì hãy post lên:


(defun c:tton (/ ent els h l1 n1 ss1 ss0 l0 n0 i)
(vl-load-com)
(command "undo" "be")
(setq ent (car (entsel "\n Chon tuyen ong can thong ke"))
els (entget ent)
h (getreal "\n Nhap khoang cach lon nhat toi ho dan : ")
)
(if (and (= (cdr (assoc 0 els)) "LWPOLYLINE") (= (cdr (assoc 8 els)) "Tuyennuoc") )
(progn
(if (= (cdr (assoc 62 els)) 2)
(progn
(tko ent h)
(setq l1 (car tkl) n1 (cadr tkl) ss1 (caddr tkl) l0 0 i 1
sst (acet-ss-to-list (ssget "f" (acet-geom-vertex-list ent) (list (cons 0 "lwpolyline") (cons 62 1)))) )
(alert (strcat "\n Nhanh chinh dai " (rtos l1 2 0) " gom co " (rtos n1 2 0) " ho tieu thu nuoc"))
(foreach lt sst
(redraw lt 3)
(tko lt h)
(setq l0 (car tkl)
ss0 (caddr tkl) )
(foreach e ss0
(if (= (member e ss1) nil)
(setq ss1 (append ss1 (list e)))
(setq ss0 (vl-remove e ss0))
)
)
(setq n0 (length ss0))
(alert (strcat "\n Nhanh phu thu " (rtos i 2 0) " dai " (rtos l0 2 0) " gom co " (rtos n0 2 0) " ho tieu thu nuoc"))
(setq i (1+ i))
(redraw lt 4)
)
)
)
(if (= (cdr (assoc 62 els)) 1)
(progn
(tko ent h)
(setq l1 (car tkl) n1 (cadr tkl) )
(alert (strcat "\n Nhanh phu dai " (rtos l1 2 0) " gom co " (rtos n1 2 0) " ho tieu thu nuoc"))
)
)
)
)
(command "undo" "e")
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun tko (en h / l n ent1 ent2 ptls obj ang plst)
(vl-load-com)
(setq el (entget en)
obj (vlax-ename->vla-object en)
ptls (acet-geom-vertex-list en)
ang (angle (car ptls) (cadr ptls))
tkl (list) )
(command "offset" h en (polar (car ptls) (+ ang (/ pi 2)) h) "")
(setq ent1 (entlast))
(command "offset" h en (polar (car ptls) (- ang (/ pi 2)) h) "")
(setq ent2 (entlast))
(setq l (vlax-curve-getdistatpoint obj (vlax-curve-getendpoint obj)))
(setq plst (acet-geom-vertex-list ent1)
plst (append plst (reverse (acet-geom-vertex-list ent2))))
(command "erase" ent1 ent2 "")
(setq n (length (setq ss (acet-ss-to-list (ssget "cp" plst (list (cons 0 "text") (cons 8 "Hodan"))))))
tkl (append tkl (list l n ss)) )
tkl
)
Chúc bạn vui.

Bài viết đã được chỉnh sửa nội dung bởi phamthanhbinh: 21 April 2012 - 11:02 PM
Bổ sung lisp theo yeu cầu.

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

#22 Trang72

Trang72

    biết vẽ ellipse

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

Đã gửi 23 April 2012 - 04:55 PM

Em Cám ơn Bác Bình
  • Số hộ ở gần 2 nhánh hoặc ở gần 2 đường trục được tính 2 lần .
  • Khi zoom bản vẽ màn hình che số hộ thì không ra được kết quả.
  • Nếu có nhiều nhánh thì dễ bị nhầm giữa nhánh này với nhánh khác.
ta có thể đánh lại số hiệu từng đoạn cho đỡ nhầm VD : Đoạn A-B là đường trục, B - B1;B-B2 là đường nhánh.Cũng tương tự như vậy A-C là đường trục; C-C1 là đường Nhánh;C-C2 là đường nhánh .
4. Bác có thể xuất kết quả ra Bảng cad thì quả là tuyệt. Như ví dụ em up lên.
http://www.cadviet.c...0_vidu2_1_1.dwg
  • 0

#23 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 23 April 2012 - 05:46 PM

Vấn đề PICK ĐIỂM và tuyến có thể tính từ TRÁI QUA PHẢI và từ PHẢI QUA TRÁI của bạn nó nằm ở đâu bạn Trang72 ơi ??
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#24 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 23 April 2012 - 07:59 PM

Em Cám ơn Bác Bình

  • Số hộ ở gần 2 nhánh hoặc ở gần 2 đường trục được tính 2 lần .
  • Khi zoom bản vẽ màn hình che số hộ thì không ra được kết quả.
  • Nếu có nhiều nhánh thì dễ bị nhầm giữa nhánh này với nhánh khác.ta có thể đánh lại số hiệu từng đoạn cho đỡ nhầm VD : Đoạn A-B là đường trục, B - B1;B-B2 là đường nhánh.Cũng tương tự như vậy A-C là đường trục; C-C1 là đường Nhánh;C-C2 là đường nhánh .
4. Bác có thể xuất kết quả ra Bảng cad thì quả là tuyệt. Như ví dụ em up lên.
http://www.cadviet.c...0_vidu2_1_1.dwg

Hề hề hề.
1/- Điều đó chỉ xảy ra với các nhánh chính vì mình chỉ viết cho từng nhánh chính một chứ không phả cho toàn bộ bản vẽ,
2/- Điều đó là tất yếu vì hàm ssget chỉ nhận các đối tượng có trên màn hình. Do vậy để tính nhánh nào thì bạn phải zoom bản vẽ để thấy toàn bộ nhánh đó.
3/- Sẽ không có chuyện nhầm vì mỗi lần chạy lisp bạn chỉ chọn được một nhánh chính hoặc một nhánh phụ. Chả nhẽ bạn chọn nhánh nào mà còn không biết thì???
4/- Việc xuất ra bảng Excel không khó nhưng do không có yêu cầu nên chưa tính tới.

Nhìn chung các yêu cầu kể trên không phải là không thể khắc phục.
Tuy nhiên cái chính là bạn cần nói rõ yêu cầu, tỷ như với các hộ dân mà ở các khu vực giao nhau giữa các nhánh chính thì cách chọn ra sao??? Lisp mình viết là dựa vào khoảng cách offset của mỗi nhánh. do vậy với các hộ ở gần giao điểm của các nhánh chính sẽ bị trùng lắp, còn giữa các nhánh chình và nhánh phụ thì chúng đã được loại trừ chứ không có chuyện trùng đâu. Việc loại trừ các hộ trùng ở các nhánh chính sẽ được ưu tiên ra sao??? Vì giữa các nhánh phụ và nhánh chính thì mình ưu tiên cho nhánh chính trước, còn giữa các nhánh phụ với nhau thì thứ tự ưu tiên lại là thứ tự của các nhánh khi lập bộ chọn. Cái này thì hoàn toàn là do CAD nó quyết, mình chả biết thằng nào trước thằng nào sau đâu. Vì thế khi chạy lisp đến nhánh nào bạn sẽ thấy nhánh đó nháy mà thôi.
Việc đánh dấu như bạn nói cần phải theo một quy ước thống nhất và quy ước đó là gì, bạn cũng cần nói rõ mới làm lisp được.
Vì mình mới chỉ quan tâm cho từng nhánh chính nên không xét tới việc trùng này.
Việc zoom màn hình về để thấy hết thực ra chỉ cần dùng zoom extend là xong.
Đã có list thì việc xuất sang Excel không khó nhưng mình cần phải biết xuất cái gì sang đó mới làm chớ.
Vì vậy bạn hãy gửi bản vẽ hoàn chỉnh các yêu cầu như trên mình sẽ hoàn thiện lisp vì mình không muốn làm đi làm lại bạn ạ.....
Chúc bạn vui.
  • 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 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 23 April 2012 - 09:27 PM

@Trang72 và các bác đã quan tâm tới topic này!
Tôi đề nghị nên kết thúc topic này ở đây, dù đề nghị này có làm cho chủ topic hoặc các bác phật lòng.
Nhưng không thể chấp nhận: chỉ 1 đề bài mà tới 24 bài viết vẫn chưa ra vấn đề!
Trong lúc mọi người đang chắt chiu từng câu chữ, từng ý tưởng để chờ 4rum giúp đỡ, thậm chí có người khi hỏi còn sợ làm phiền người trả lời, thì chủ topic cứ nói mãi nói hoài cũng không ra vấn đề.
Tôi theo dõi từ đầu đến cuối nhưng thất vọng quá!
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#26 Trang72

Trang72

    biết vẽ ellipse

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

Đã gửi 23 April 2012 - 09:33 PM

Vâng nếu chạy 1 tuyến Ab và nhánh 1, nhánh 2 thì hoàn toàn đúng. Nhưng có nhánh AC và nhánh 3, nhánh 4 thì các số hộ trùng lặp tại khoảng offset như Bác nói.
Việc đánh dấu đường trục và nhánh lên quy ước theo chiều: "cùng chiều với kim đồng hồ" .
việc xuất kết quả là bảng cad thôi Bác Ạ gồm STT; Tuyếnống; hiều dài; hội dân; Ghi chú

Sao máy tính của em không hiện lên phần up lên em không thể up file lên được.
  • 0

#27 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 23 April 2012 - 10:14 PM

Vâng nếu chạy 1 tuyến Ab và nhánh 1, nhánh 2 thì hoàn toàn đúng. Nhưng có nhánh AC và nhánh 3, nhánh 4 thì các số hộ trùng lặp tại khoảng offset như Bác nói.
Việc đánh dấu đường trục và nhánh lên quy ước theo chiều: "cùng chiều với kim đồng hồ" .
việc xuất kết quả là bảng cad thôi Bác Ạ gồm STT; Tuyếnống; hiều dài; hội dân; Ghi chú

Sao máy tính của em không hiện lên phần up lên em không thể up file lên được.

Hề hề hề,
Mong bạn nghĩ kỹ về các yêu cầu của mình rồi hãy post lên. Theo chiều kim đồng hồ nhưng phải có điểm bắt đầu tính chứ??? Nếu bạn bắt dầu từ góc 0 độ sẽ khác với bạn bát đầu từ 90 độ bạn ạ.
Vả lại theo mình nghĩ thì việc phân loại theo góc của bạn là chưa hợp lý vì với một bản vẽ có vài chục hay vài trăm tuyến ống mà chúng lại chẳng phát xuất từ một điểm thì cái yếu tố góc ấy bạn sẽ xác định bằng cách chi????
Là người làm kỹ thuật thì bạn nên suy nghĩ một cách thấu đáo về công việc của mình để khi trình bày vấn đề được bao quát đầy đủ bạn ạ. Cách làm việc và suy nghĩ của bạn rất hời hợt và không có vẻ chi là nghiêm túc với công việc cả. Vấn đề của bạn mà bạn không chịu nghĩ cho kỹ thì gay đấy, có làm đi làm lại hàng trăm lần chưa chắc đã ra được cái bạn cần.
Bản thân mình là người ngoại đạo với công việc của bạn mà lại phải nghĩ thay cho bạn thì quả thật là cái kết quả nó không thể tốt được. Làm sao mình có thể hiểu được công việc của bạn như chính bạn được.
Rất mong bạn lưu tâm.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#28 haminhhuong

haminhhuong

    biết zoom

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

Đã gửi 04 October 2012 - 11:48 PM

Xin chào!
Mình cũng là dân nước nên chắc là hiểu ý của bạn, nhưng thiết nghĩ việc bố trí hộ dân lấy nước theo nhánh nào là phụ thuộc vào mặt bằng hiện trạng chứ không phụ thuộc vào khoảng cách đến ống cấp nước, trong trường hợp ống gần hơn mà lại đi đằng sau nhà người ta thì lấy nước kiểu gì hả bạn??? Thêm nữa là việc thống kê số hộ lấy nước thì cũng chỉ nên thống kê theo đoạn ống đấy là lưu lượng nước dọc đường, còn đòi hỏi thống kê cả tải lượng của ống thì bạn phải lập bảng tổng hợp lưu lượng chứ lisp sẽ không hiểu được nước của bạn chạy theo hướng nào mà đáp ứng được.
Mình biết là lisp rất tiện dụng nhưng nó chỉ là công cụ hỗ trợ thôi, không thể thay thế con người được, nếu đáp ứng được hết các yêu cầu của bạn thì chắc không cần học đến kỹ sư cấp nước đâu, ai cũng có thể làm được không cần hiểu bản chất.
Xin lỗi nếu quá nặng lời! nhưng mình thấy bức xúc vì việc không hiểu bạn có phải là người trong nghề này không mà đưa ra yêu cầu ngô nghê như vậy???
  • 0