Đến nội dung


Hình ảnh
* * * * - 1 Bình chọn

[Đã xong] Lisp thống kê diện tích Hatch theo Layer


  • Please log in to reply
81 replies to this topic

#61 huaductiep

huaductiep

    biết vẽ rectang

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

Đã gửi 14 July 2013 - 06:49 PM

Lisp tuyệt vời quá. Cám ơn các Bro..Cám ơn Cadviet ^^


  • 0

#62 hung_xu20032000

hung_xu20032000

    biết vẽ ellipse

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

Đã gửi 10 January 2014 - 01:57 PM

Mình thấy lisp này rất hay. Mình là dân khai thác mỏ, mình muốn các bác hỗ trợ cho mình thêm phần này 1 tý nữa. Mình chỉ muốn tính diện tích trong khu vực khai thác và nhất là thống kê theo tầng (mỗi 1 mặt cắt có tầng tính khác nhau). Xin cảm ơn rất nhiều. 

file đính kèm http://www.cadviet.c...3/8800_hung.dwg


  • 0

#63 tranductuyen1984

tranductuyen1984

    Chưa sử dụng CAD

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

Đã gửi 22 March 2014 - 03:43 PM

Mình muốn một lisp thống kê khoảng 1000 hatch ( hàng loạt) rồi xuất ra excel một vài thong số như diện tích, tọa độ, cao độ.... mong các bác giúp đỡ
  • 0

#64 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 22 March 2014 - 10:20 PM

Bạn muốn thì bạn cần phải thuê, hoặc bạn cần giúp thì bạn phải có file miêu tả :) Chứ nhõn cái lời bạn nói, k ai làm được đâu ^^


  • 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


#65 tranductuyen1984

tranductuyen1984

    Chưa sử dụng CAD

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

Đã gửi 23 March 2014 - 07:07 AM

 Cảm ơn bạn Ketxu, mình mới tham gia diễn đàn nên chưa rõ nhiều điều, bạn có thể viết giúp mình lisp xuất dữ liệu (geometry) trong cad ra excel với nội dung xuất tọa độ của các : Line, PLine, Polyline, Point, hatch (X, Y, Z, diện tích với vùng từng vùng hatch) http://www.cadviet.com/upfiles/3/54457_ban_ve_trien_khai.dwg

Cảm ơn bạn nhiều!


  • 0

#66 nhatphong

nhatphong

    biết vẽ circle

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

Đã gửi 27 April 2014 - 01:16 AM

Mình không nhận các chữ pro của bạn được, vì mình không phải thế ^^.Và lisp viết theo yêu cầu của Hoangvu, vì vậy bạn không nên nói như nào là pro hơn, mà đó chỉ là cách bạn cảm thấy tiện hơn cho công việc của bạn thôi.Mà việc đó bạn dùng Qselect cũng được smile.gif
Lisp sửa lại theo yêu cầu của bạn ( cũng vì thế mà đã chọn là tính hết, khỏi chọn vùng luôn )
 

(defun c:tkh (/ lst msp pt ss lay ar txtsiz pt ent)
  (if (> (atof (substr (getvar "ACADVER") 1 4)) 16.1)
  (progn
  (vl-load-com)
  (acet-sysvar-set (list "cmdecho" 0))
  (grtext -1 "S\U+01A1n T\U+00F9ng' Lisp")  
  (if (setq ent (car (entsel "\nCh\U+1ECDn Hatch \U+0111i\U+1EC3n h\U+00ECnh : ")))
  (progn
   (setq ss (ssget "X" (list (cons 0 "HATCH")(cons 8 (vla-get-layer (vlax-ename->vla-object ent))))))    
      (foreach e (mapcar 'vlax-ename->vla-object (st-ss->ent ss))
		(setq lay (vlax-get-property e 'Layer)) 
        (if (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-get-area (list e))))
(setq ar (*  0.000001 (vlax-get-property e 'Area)))
(progn
(setq ar 0)(princ (strcat "\nC\U+00F3 Hatch thu\U+1ED9c layer " lay " kh\U+00F4ng t\U+00EDnh \U+0111\U+01B0\U+1EE3c di\U+1EC7n t\U+00EDch.\n\U+0110\U+00E3 highlight v\U+00E0 t\U+00EDnh di\U+1EC7n t\U+00EDch b\U+1EB1ng 0"))
(redraw (vlax-vla-object->ename e) 3)
)
)
        (if (not (assoc lay lst))
          (setq lst (cons (cons lay ar) lst))
          (setq lst (subst (cons lay (+ ar (cdr (assoc lay lst))))
                           (assoc lay lst) lst))))
      (setq lst (vl-sort lst '(lambda (x y) (< (car x) (car y))))
		
            txtsiz (* (getvar "dimtxt")(getvar "dimscale"))
            msp (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) i -1)
			
      (while (setq e (nth (setq i (1+ i)) lst)) 
        (wtxt_l (strcat (car e) " : " (rtos (cdr e) 2 2) "m2") '(0 0 0))
(setq pt (ACET-SS-DRAG-MOVE (ssadd (entlast)) '(0 0 0) (strcat "\n\U+0110i\U+1EC3m \U+0111\U+1EB7t ghi ch\U+00FA t\U+1ED5ng di\U+1EC7n t\U+00EDch Hatch thu\U+1ED9c layer " (car e))))
(command ".move" (entlast) "" '(0 0 0) pt)
)
(princ "\n\U+0110\U+00E3 th\U+1EF1c hi\U+1EC7n xong !")
)
    (alert "Kh\U+00F4ng c\U+00F3 Hatch n\U+00E0o \U+0111\U+01B0\U+1EE3c ch\U+1ECDn !"))
)
(alert "Phi\U+00EAn b\U+1EA3n CAD c\U+1EE7a b\U+1EA1n kh\U+00F4ng h\U+1ED7 tr\U+1EE3 t\U+00EDnh di\U+1EC7n t\U+00EDch Hatch !")
)
  (acet-sysvar-restore)(princ))
  (defun st-ss->ent (ss / n e l)
  (setq n -1)
  (while (setq e (ssname ss (setq n (1+ n))))
    (setq l (cons e l))
  )
)
(defun wtxt_l(txt p / sty d h1 h2 wf h);;;Write txt on graphic screen at p
(setq    sty (getvar "textstyle")
d (tblsearch "style" sty)
h1 (cdr (assoc 40 d))
h2 (cdr (assoc 42 d))
wf (cdr (assoc 41 d)))
(if (> h1 0) (setq h h1) (setq h h2))
(entmake (list (cons 0 "TEXT") (cons 7 sty) (cons 40 h) (cons 41 wf)(cons 72 1)(cons 11 p) (cons 1 txt) (cons 10 p))))
P/S : lisp có 2 biến txtsiz với msp thừa quên chưa xóa, mà để cũng không sao ^^

Bạn có thể sửa lại không ketxu lisp này có  2 cái bất tiện:

1.Điểm đặt text giá trị bị nhảy xa tí mù tắp (nếu mà bản vẽ nặng chắc mình  kg biết nó ở đâu nữa)

2.Các vị trí đều nhảy về 1 điểm mà kg ra bảng thống kê,có theo tên layer nhưng kg phân tách rời mà gộp tất làm 1


  • 0

#67 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 11 September 2014 - 12:23 PM

Mình bắt đầu có việc phải quan tâm tới hatch. Mình thấy các lisp ở tính diện tích Hatch rất hay nhưng khá chậm, đôi lúc đến vài chục phút khi gặp hatch nhiều điểm và lỗ hổng. Có cách nàu cải thiện được vấn đề?

Trước nay mình chưa nghiên cứu về Hatch nên hơi lạc hậu, các bạn đã rành cho mình hỏi tý:

- Làm các nào tính tọa độ đường bao của đồi tượng phức tạp thành danh sách tọa độ đủ chính xác (ý mình nói nếu gặp đường cong thì phân nhỏ ra) để tính diện tích có sai số không đáng kể khi tính bằng lệnh area của cad

- Làm các nào tính danh sách tọa độ các đường bao (ngoài và trong) nguyên thủy tạo nên Hatch với yêu cầu như trên.

Cám ơn các bạn.


  • 0

#68 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 11 September 2014 - 02:57 PM

1). Hơi khó hiểu ở chỗ "đường bao của đối tượng phức tạp"?

2). Có thể dùng lisp theo link dưới đây để vẽ các đường bao của hatch. Sau đó vi phân các đường bao để tính tọa độ.

http://www.cadviet.c...showtopic=51566


  • 1

* 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.


#69 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 11 September 2014 - 05:05 PM

Vài chục phút thì quả là khủng rồi đây. Có điều hình như lisp ket viết là đọc diện tích chứ có tính đâu ta ^^


  • 1

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


#70 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 12 September 2014 - 09:06 AM

Mình trả lời chung cho hai bạn.

1/ Đường bao phức tạp có ý là hatch tạo bởi từ một số đối tượng bao khác line như đg tròn, elip hay spline ...

2/ Mình down hai lisp tkh và tkh1 về, một cái chạy được còn một cái thiếu hàm gì đó.

Mình nghĩ cad không có thuộc tính diện tích, môi lần kích vào đối tượng cho hiện diện tích lên khung properties thì nó mới tính, thời gian hiện trên khung này tương đương thời gian tính bằng lệnh area. Có lẽ các bạn chưa thử trên bảv vẻ có nhiều hatch như hệ thống giao thông thuỷ hệ của một huyện. Lúc đầu mình dùng cad2006 vào vài lần với hatch nhỏ thì được, sau đó vào hatch lớn hơn nó treo luôn, bây giờ đụng vào hatch lơn nhỏ gì nó cũng thoát chương trình ngang xương, có lẽ cad nó sợ hatch. Sau đó mình dùng cad 2013, 2015 cũng rất chậm


  • 0

#71 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 12 September 2014 - 09:23 AM

mình kèm file đây: http://www.cadviet.c...7170_fhatch.dwg


  • 0

#72 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 12 September 2014 - 09:59 AM

File đây nữa

http://www.cadviet.c...70_fhatch_1.dwg


  • 0

#73 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 12 September 2014 - 10:06 AM

mình kèm file đây: http://www.cadviet.c...7170_fhatch.dwg

File lisp này vẽ đường bao của Hatch ngon ơ. Từ các đường bao thì vi phân chúng sẽ được các list điểm.

(defun c:bh1( / sl n)
  (setq sl (acet-ss-to-list (ssget '((0 . "HATCH")))))
  (foreach n sl
    (command "hatchedit" n "b" "p" "y")))
(defun c:bh2 ()
  (princ "\nCh\U+1ECDn c\U+00E1c Hatch c\U+1EA7n t\U+1EA1o l\U+1EA1i Boundary : ")
  ((lambda (ss / n e) 
(setq n (sslength ss))
(while (setq e (ssname ss (setq n (1- n))))
(command "-hatchedit" e "B" "P" "")))
(ssget (list (cons 0 "HATCH")))))
 


  • 1

* 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.


#74 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 12 September 2014 - 10:58 AM

File lisp này vẽ đường bao của Hatch ngon ơ. Từ các đường bao thì vi phân chúng sẽ được các list điểm.

(defun c:bh1( / sl n)
  (setq sl (acet-ss-to-list (ssget '((0 . "HATCH")))))
  (foreach n sl
    (command "hatchedit" n "b" "p" "y")))
(defun c:bh2 ()
  (princ "\nCh\U+1ECDn c\U+00E1c Hatch c\U+1EA7n t\U+1EA1o l\U+1EA1i Boundary : ")
  ((lambda (ss / n e) 
(setq n (sslength ss))
(while (setq e (ssname ss (setq n (1- n))))
(command "-hatchedit" e "B" "P" "")))
(ssget (list (cons 0 "HATCH")))))
 

Hình như nó chạy kg đúng đâu bác với file mình up đây

http://www.cadviet.c.../37170_h1_2.dwg


  • 0

#75 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 12 September 2014 - 11:10 AM

Cái file của bác thì pick chọn không đã chết rồi. Hatch không Associative, chưa kể save 1 2 lần thì cũng toi luôn cả thuộc tính Area chứ k còn j mà đọc ^^

Chuyện Hatch lỗi rất hay gặp thô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


#76 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 12 September 2014 - 11:24 AM

Mình vẫn có thể viết lisp tính diện tích hatch trong file mình up (chỉ vài s) vì gốc của nó tòan line, nhưng với những hatch phức tạp thì cần phải tìm được nguồn gốc sinh ra nó trong CSDL đối tượng, cái này mình chịu


  • 0

#77 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 15 September 2014 - 07:54 AM

Các bác cho hỏi, có thể kiểm tra để biết hatch đc tạo có nguồn gốc kg chỉ từ line kg các bác, để khi gặp hatch này biết đg mà xử lý. Mình chưa hiểu hết ý nghĩa các code trong CSDL đối tượng Hatch. Cảm ơn các bác


  • 0

#78 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 21 September 2014 - 12:52 AM

Các đối tượng Hatch mình đang đề cập nó được lấy ra từ phần mềm MicroStation, đôi lúc mã màu đối tượng không phải là một số tự nhiên từ 1-255 như thường thấy mà nó ở dạng RGB (VD 180,255,255 hay 170,255,255). Hai loại màu ngày khi truy xuất qua cdoe 62 đều cho màu 131. Vậy làm cách nào chọn riêng được hai đối tượng trên. Bạn nào biết chỉ giúp mình. Cám ơn các bạn


  • 0

#79 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

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

Chọn đối tượng theo mã màu RGB.

(defun ColRGB(r g b)
 (ssget (list (cons 420 (+ (lsh (fix r) 16) (lsh (fix g) 8) (fix b))))))
 


  • 1

* 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.


#80 bienxanhsautham

bienxanhsautham

    Chưa sử dụng CAD

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

Đã gửi 06 July 2015 - 04:31 PM

Bạn có thể sửa lại không ketxu lisp này có  2 cái bất tiện:

1.Điểm đặt text giá trị bị nhảy xa tí mù tắp (nếu mà bản vẽ nặng chắc mình  kg biết nó ở đâu nữa)

2.Các vị trí đều nhảy về 1 điểm mà kg ra bảng thống kê,có theo tên layer nhưng kg phân tách rời mà gộp tất làm 1

Mình cũng không thấy text kết quả ở đâu hết. Mình tìm hoài dù chọn gốc tọa độ 0,0 để đặt text nhưng không có thấy kết quả. Mong các bạn giúp với. Mình cần gấp dù đã tắt đi cái truy bắt ortho mode. Mình dùng cad 2012.


  • -1