Đến nội dung


Hình ảnh
- - - - -

Yêu cầu


  • Please log in to reply
14 replies to this topic

#1 anhvan2512

anhvan2512

    biết pan

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

Đã gửi 09 April 2015 - 04:06 PM

Em cần 1 lisp tính tổng các chiều dài đoạn thẳng đã chọn và xuất ra exel. hoặc text

em cũng tìm nhiều lisp rồi nhưng ko phù hợp nay nhờ các anh chị giúp

cụ thể như sau ví dụ có 2 đoạn  thẳng AB và CD em cần tính tổng chiều dài của đoạn A-a1 và d1-D thay vì tính như các lisp khác là cả đoạn AB và CD

em cám ơn nhiều

 


  • -1

#2 nhoclangbac

nhoclangbac

    biết vẽ circle

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

Đã gửi 09 April 2015 - 04:22 PM

Bạn ôi! iu cầu này chắc tốn nhiuề Nơ tron + IQ lắm nên chắc phải đặt hàng riêng :blink:


  • 0

#3 anhvan2512

anhvan2512

    biết pan

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

Đã gửi 09 April 2015 - 04:34 PM

em lam bên PCCC nên lúc bốc khổi lượng các ống chữa cháy rất phức tạp, đặc biệt là hệ thống ống xương cá, ngồi dim từng cái .. ôi thôi rồi lượm ơi!!

vậy nên đành lên đây tìm cao thủ trợ giúp


  • 0

#4 anhvan2512

anhvan2512

    biết pan

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

Đã gửi 10 April 2015 - 01:13 PM

Khôgn có cao thủ nào giúp e với.?


  • 0

#5 quansla

quansla

    biết lệnh xclip

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

Đã gửi 10 April 2015 - 02:03 PM

không có file rất khó để hình dung yêu cầu của bạn. bạn hãy gửi file nên
  • 0

#6 trumlenmang

trumlenmang

    biết lệnh trim

  • Members
  • PipPipPip
  • 193 Bài viết
Điểm đánh giá: 29 (tàm tạm)

Đã gửi 10 April 2015 - 02:16 PM

Em cần 1 lisp tính tổng các chiều dài đoạn thẳng đã chọn và xuất ra exel. hoặc text

em cũng tìm nhiều lisp rồi nhưng ko phù hợp nay nhờ các anh chị giúp

cụ thể như sau ví dụ có 2 đoạn  thẳng AB và CD em cần tính tổng chiều dài của đoạn A-a1 và d1-D thay vì tính như các lisp khác là cả đoạn AB và CD

em cám ơn nhiều

Theo mình hiểu công việc của bạn bị khó khăn khi bốc khổi lượng ở những đoạn thẳng dài mà đường kính ống khác nhau, do đó cần cắt ra mỗi đoạn chỉ có một đường kính thôi để dễ chọn tính tổng, bạn thử tìm lisp breakobjects trên diễn đàn dùng thử đi, nó sẽ cắt những đoạn thẳng giao nhau tại vị trí giao đó, sau đó bạn có thể dùng lisp tính tổng các đoạn thẳng để bốc khối lượng.


  • 1

#7 anhvan2512

anhvan2512

    biết pan

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

Đã gửi 11 April 2015 - 09:43 AM

Theo mình hiểu công việc của bạn bị khó khăn khi bốc khổi lượng ở những đoạn thẳng dài mà đường kính ống khác nhau, do đó cần cắt ra mỗi đoạn chỉ có một đường kính thôi để dễ chọn tính tổng, bạn thử tìm lisp breakobjects trên diễn đàn dùng thử đi, nó sẽ cắt những đoạn thẳng giao nhau tại vị trí giao đó, sau đó bạn có thể dùng lisp tính tổng các đoạn thẳng để bốc khối lượng.

không có file rất khó để hình dung yêu cầu của bạn. bạn hãy gửi file nên

em vừa gửi file bản vẽ đính kèm, mấy anh chị xem thử và hướng dẫn e chút

ví dụ em muốn tính tổng chiều dài các đoạn DN 40.

@trumlenmang em đã thử nhưng ko được hoặc do chưa hiểu rõ lệnh, anh có thể hướng dẫn dùng lisp này được kohttp://www.cadviet.c..._drawing1_1.dwg


  • 0

#8 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 11 April 2015 - 11:07 AM

em vừa gửi file bản vẽ đính kèm, mấy anh chị xem thử và hướng dẫn e chút

ví dụ em muốn tính tổng chiều dài các đoạn DN 40.

@trumlenmang em đã thử nhưng ko được hoặc do chưa hiểu rõ lệnh, anh có thể hướng dẫn dùng lisp này được kohttp://www.cadviet.c..._drawing1_1.dwg

Hề hề hề,

Yêu cầu của bạn không quá khó nhưng bạn đã tự làm khó cho mình mà thôi. Nếu bạn quản lý bản vẽ với cách quản lý phù hợp thì việc lấy tổng các đoạn thẳng yêu cầu sẽ không quá khó đâu.

Tỷ như các đoạn ống có cùng ký hiệu bạn nhét chúng vào chung một layer hay có màu riêng biệt ....... Khi đó có thể dễ dàng tách riêng các đoạn ống này để tính toán bạn ạ.

Việc bạn sử dụng một line để thể hiện chung cho các đoạn ống như vậy sẽ làm khó khăn hơn cho việc tính toán. Không phải không có cách làm nhưng nó sẽ tốn công sức hơn khá nhiều.

Nếu bạn không thể tổ chức quản lý lại bản vẽ theo hướng thuận lợi hơn thì đành chờ mấy bữa, khi rảnh rỗi mình sẽ viết thử lisp với bản vẽ bạn đã gửi.


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

#9 anhvan2512

anhvan2512

    biết pan

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

Đã gửi 11 April 2015 - 01:29 PM

@phamthanhbinh Cám ơn bạn nhiệt tình giúp đỡ. Không phải là ko muôns làm như bạn nói nhưng một phần là do bản vẽ thiết kế là của đơn vị khác, mình chỉ là bốc khốiương vật tư để thi công thôi.
  • 0

#10 pphung183

pphung183

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 384 Bài viết
Điểm đánh giá: 425 (tốt)

Đã gửi 11 April 2015 - 04:23 PM

Nhìn bản vẽ này của bạn thì có lẽ chỉ đi theo hướng là chọn đường thẳng, pick 2 điểm trên đường thẳng chọn lấy khoảng cách. Và cứ thế lặp lại cho đến khi hết muốn đo :huh: . thấy có vẽ hơi bị thủ công. Nếu bạn muốn thế thì mai rãnh tôi làm cho 1 lisp theo hướng này :)


  • 1

#11 anhvan2512

anhvan2512

    biết pan

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

Đã gửi 11 April 2015 - 04:44 PM

Có vẻ cũng khá thủ công, nhưng có còn hơn ko. Cung do hơn là ngồi dim từng đoạn rồi nhập vào bảng tính. thanks bạn đã trợ giúp, chờ thêm lisp của bác phamthanhbinh nữa
  • 0

#12 pphung183

pphung183

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 384 Bài viết
Điểm đánh giá: 425 (tốt)

Đã gửi 12 April 2015 - 09:32 AM

Lisp đây ! Líp làm việc như tôi đã nói, có thể chọn đối tượng để Pick 2 điểm là : LINE, ARC, SPLINE, POLYLINE, LWPOLYLINE , có thể chơi được luôn với đường bao kín như CIRCLE, ELLIPSE :) ...Ko dùng cho Mline :P :

(defun C:TCD (/ en ms os L str) (vl-load-com)
(princ "\nChon 1 curve : LINE, ARC, SPLINE, *POLYLINE can do")
(while (not (setq en (ssget ":S" (list (cons 0 "LINE,ARC,SPLINE,*POLYLINE"))))))
(setq ms (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
(setq os (getvar 'osmode)) (setvar 'osmode 545)
(setq L 0.0 en (ssname en 0)) (while en (lentcon en) 
(setq en (car (entsel "\nChon curve can do tiep or Enter lay ket qua"))) )
(setq str (rtos L 2 2)) (setq pt (getpoint "\nChọn điểm đặt kết quả :"))
(vla-AddText ms str (vlax-3d-point pt) (getvar 'dimtxt)) 
(setvar 'osmode os) (princ))
(defun lentcon (en / p1 p2 kc ent Li)
(while (not (setq p1 (getpoint "\n Chon diem dau tren curve "))))
(setq p1 (vlax-curve-getClosestPointTo en p1)) 
(while (not (setq p2 (getpoint p1 "\n Chon diem thu hai tren curve")))) 
(setq p2 (vlax-curve-getClosestPointTo en p2)) 
(setq kc (- (vlax-curve-getdistatpoint en p2) (vlax-curve-getdistatpoint en p1)))
(vla-copy (vlax-ename->vla-object en)) (setq ent (entlast))
(vl-cmdf "break" ent "non" (if (> kc 0) p2 p1) "non" (vlax-curve-getendpoint ent))
(vl-cmdf "break" ent "non" (if (> kc 0) p1 p2) "non" (vlax-curve-getstartpoint ent))
(setq Li (vlax-curve-getDistAtPoint ent (vlax-curve-getendpoint ent)))
(setq L (+ L Li)) (vla-erase (vlax-ename->vla-object ent)) )


  • 2

#13 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 12 April 2015 - 11:17 AM

@phamthanhbinh Cám ơn bạn nhiệt tình giúp đỡ. Không phải là ko muôns làm như bạn nói nhưng một phần là do bản vẽ thiết kế là của đơn vị khác, mình chỉ là bốc khốiương vật tư để thi công thôi.

Hề hề hề,

Bạn dùng thử lisp dưới đây coi sao nhé:

(defun c:tocc (/ oldos ssl1 txt tg pls ssl pls1 p n i p1 p2 sst len )
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(alert "\n Hay chon cac line chua cac doan ong can tinh" )
(setq ssl1 (acet-ss-to-list (ssget  (list (cons 0 "line")))))
(setq txt (cdr (assoc 1 (entget (car (entsel "\n Chon text ky hieu doan ong can tinh"))))))
(setq tg 0)
(foreach e1 ssl1
         (setq pls (list (cdr (assoc 10 (entget e1))) (cdr (assoc 11 (entget e1)))))
         (setq ssl (acet-ss-to-list (ssget "f" pls (list (cons 0 "insert") (cons 2 "spr-u")))))
         (setq pls1 (list))
         (foreach blk ssl
                 (setq p (cdr (assoc 10 (entget blk))))
                 (setq pls1 (append pls1 (list p)))
         )
         (setq n (length pls1))
         (setq i 0)
         (while (< i (1- n))
                (setq p1 (nth i pls1) p2 (nth (1+ i) pls1)
                         sst (ssget "w" (list (car p1) (- (cadr p1) 500)) (list (car p2) (+ (cadr p2) 500)) (list (cons 0 "text") (cons 1 txt))) )
               (if sst
                     (progn
                            (setq len (distance p1 p2))
                            (setq tg (+ len tg))
                     )
               )
               (setq i (1+ i))
         )
)
(alert  (strcat " \nTong chieu dai doan ong " txt " la : " (rtos tg 2 2) " dvbv"))
 
(setvar "osmode" oldos)
)

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

#14 anhvan2512

anhvan2512

    biết pan

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

Đã gửi 14 April 2015 - 08:47 AM

cám ơn pphung183 và phamthanhbinh rất nhiều

@phamthanhbinh  hình như cac đoạn thẳng theo trục Oy không  hoạt động,bạn xem lại giúp.
có thể sửa lisp lại thành tùy chọn điểm đầu và cuối bất kỳ để tính toán ko ạ. em cám ơn nhiều.
 


  • 0

#15 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 14 April 2015 - 12:46 PM

cám ơn pphung183 và phamthanhbinh rất nhiều

@phamthanhbinh  hình như cac đoạn thẳng theo trục Oy không  hoạt động,bạn xem lại giúp.
có thể sửa lisp lại thành tùy chọn điểm đầu và cuối bất kỳ để tính toán ko ạ. em cám ơn nhiều.
 

Hề hề hề, 

Xin lỗi bạn vì mình chưa check kỹ lisp.

Đúng là khi line thẳng đứng theo trục oy thì không chọn được text ký hiệu đọn ống. 

Mình đã sửa lại trong lisp bên dưới. 

Tuy nhiên ban cần lưu ý vài điểm sau đây khi sử dụng lisp này:

1/- Lisp chỉ tính được các đoạn ống nếu hai đầu của đoạn ống có gắn block SPR-U và ký hiệu đoạn ống phải nằm  trên đoạn ống cần tính. Nếu các đoạn ống không có các ký hiệu này sẽ không tính được.

2/- Các ký hiệu đoạn ống phải được dùng thống nhất trên bản vẽ.và không được cách quá xa (> 500) so với tim ống.

(defun c:tocc (/ oldos ssl1 txt tg pls ssl pls1 p n i p1 p2 sst len )
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(alert "\n Hay chon cac line chua cac doan ong can tinh" )
(setq ssl1 (acet-ss-to-list (ssget  (list (cons 0 "line")))))
(setq txt (cdr (assoc 1 (entget (car (entsel "\n Chon text ky hieu doan ong can tinh"))))))
(setq tg 0)
(foreach e1 ssl1
         (setq pls (list (cdr (assoc 10 (entget e1))) (cdr (assoc 11 (entget e1)))))
         (setq ssl (acet-ss-to-list (ssget "f" pls (list (cons 0 "insert") (cons 2 "spr-u")))))
         (setq pls1 (list))
         (foreach blk ssl
                 (setq p (cdr (assoc 10 (entget blk))))
                 (setq pls1 (append pls1 (list p)))
         )
         (setq n (length pls1))
         (setq i 0)
         (while (< i (1- n))
                (setq p1 (nth i pls1) p2 (nth (1+ i) pls1))
                (if (not (equal (car p1) (car p2) 1))
                    (setq     sst (ssget "c" (list (car p1) (- (cadr p1) 500)) (list (car p2) (+ (cadr p2) 500)) (list (cons 0 "text") (cons 1 txt))) )
                    (setq     sst (ssget "c" (list (- (car p1) 500)  (cadr p1) ) (list (+ (car p2) 500) (cadr p2) ) (list (cons 0 "text") (cons 1 txt))) )
               )
               (if sst
                     (progn
                            (setq len (distance p1 p2))
                            (setq tg (+ len tg))
                     )
               )
               (setq i (1+ i))
         )
)
(alert  (strcat " \nTong chieu dai doan ong " txt " la : " (rtos tg 2 2) " dvbv"))
 
(setvar "osmode" oldos)
(princ)
)

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