Đến nội dung


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

[Đã xong] Tính tổng diện tích các hình trên bản vẽ, "Ed" vào text sẵn có


  • Please log in to reply
100 replies to this topic

#41 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 01 November 2010 - 10:30 PM

Bác Tue và các cao thủ không giúp được e sao?

Chào bạn 790312,
Bạn là một thành viên có máu mặt của diễn đàn rồi mà sao bạn vẫn post bài như vầy, Bạn pót vầy thì ai mà giúp được. Bạn cần phải trình bày cụ thể hơn chứ.
Cái bảng mà bạn muốn hiện lên nó như thế nào???
Cái chu vi mà bạn nói là chu vi của từng vùng kín hay là tổng chu vi của các vùng???
Cái diện tích mà bạn muốn hiện ra là tổng diện tích như kết quả của lisp này hay là diện tich của từng vùng pick chọn???
Hãy trả lời hết các vấn đề nêu trên thì may ra mới có người giúp bạn được
Chào 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.

#42 790312

790312

    biết lệnh fillet

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

Đã gửi 01 November 2010 - 10:48 PM

http://www.cadviet.c...files/2/udt.lsp
Đây là lisp của bác Tue viết,lúc xuất ra kết quả thì yêu cầu chọn text để cho ra kết quả,mình thì muốn hiện ra bảng(bảng như thế nào cũng được) kết quả diện tích của từng pick chọn(hoặc đối tượng chọn) và chu vi của vùng pick chọn (hoặc đối tượng chọn)thôi.Xin lỗi vì diễn đạt không hết ý và cảm ơn sự góp ý của bạn.Thanks
  • 1

#43 tski259

tski259

    biết vẽ pline

  • Members
  • PipPip
  • 66 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 02 March 2011 - 03:49 PM

Ko biết mọi người thấy sao chứ lisp tính diện tích trên diễn đàn mình đều có thử cả và thấy có 1 vài nhược điểm nên chế ra cái này mọi người dùng thử nha.( Bản vẽ kĩ thuật thường là đơn vị mm tính kết quả ra đơn vị là m2).Lisp tính được với các bản vẽ tỉ lệ bất kì.Có thể tính tổng 1 lúc nhiều hình.Rất tiện khi tính đào và bóc khối lượng.
http://www.cadviet.c...files/3/dti.lsp
;------------------------------------tinh dien tich (dti)-----------------------------------
(Defun c:dti()
(setvar "cmdecho" 0)
(initget "Heso Do")
(command "style" "DT" "vn-abc.shx" "" "0.8" "0.6" "" "" "")
(if (not tpo) (setq tpo 1))
(setq SC (getint (strcat "\n Nhap ti le <" (itoa tpo) "> :")))
(if (not SC) (setq SC tpo) (setq tpo SC))
(if (not tp1) (setq tp1 2))
(setq tp (getint (strcat "\n Nhap So chu so thap phan <" (itoa tp1) "> :")))
(if (not tp) (setq tp tp1) (setq tp1 tp))
(setq pt (getpoint "\n chon diem:"))
(if (= pt "Heso")
(progn
(setq am (getreal "\n loccoc259.co.cc : "))
(if (and (null am) (/= ac 0))
(setq am ac)
)
(setq pt (getpoint "\n Chon diem: "))
)
(setq ac am))

(if (or (= am 0) (null am)) (setq am 1))
(setq s 0)
(progn
; (setq pt (getpoint "\n Chon diem: "))
(while pt
(setq entold (cdr (assoc 5 (entget (entlast)))))
(command "boundary" pt "")
(setq entnew (cdr (assoc 5 (entget (entlast)))))
(if (/= entold entnew)
(progn
(setq entnew (entget (entlast)))
(if (assoc 62 entnew)
(setq entnew (subst (cons 62 (+ 3 (cdr (assoc 62 entnew)))) (assoc 62 entnew) entnew))
(setq entnew (append entnew (list (cons 62 (+ 3 (cdr (assoc 62 (tblsearch "layer" (cdr (assoc 8 entnew))))))))))
)
(entmod entnew)
(Command "area" "o" (entlast))
(setq s (+ s (getvar "area")))
(setq pt (getpoint "\n Chon diem: "))
(entdel (entlast))
)
(progn
(princ "chon diem sai")
(setq pt (getpoint "\n Chon diem: "))
)
)
)

)

"(command "osnap" "intersection")"

(princ (* s am))
(princ)
(command "style" "DT" "vn-abc.shx" "" "0.85" "0.6" "" "" "")
(setq pt1 (getpoint "Chon vi tri ghi dien tich: "))
(setq dt1 (* s am SC SC))
(setq dt (/ dt1 1000000))
(setq dt (strcat (rtos dt 2 tp)))
(command "text" pt1 2 0 (strcat dt))
)
Thấy hay thì nhớ thanks nha.
  • 5

#44 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 02 March 2011 - 04:06 PM

Tks bạn đã đóng góp vào quỹ lisp 4room :")
Mình có 1 góp ý nhỏ nữa là nếu bạn đã cất công độ chế LISP và đã thành công rồi thì tại sao không đi thêm 1 bước nữa là nghiên cứu các cấu trúc lệnh của lisp nhỉ? Lúc đó kết quả sẽ không chỉ dừng lại ở việc "chế" nữa. Chúc bạn ngày càng phát triển khả năng và thành công
  • 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


#45 phuquang113

phuquang113

    biết vẽ line

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

Đã gửi 10 March 2011 - 01:53 AM

mà sao tôi tải líp về lại không dùng được vậy các bác?
  • 1

#46 namtrantt206xd

namtrantt206xd

    biết vẽ circle

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

Đã gửi 04 May 2011 - 10:58 PM

mà sao tôi tải líp về lại không dùng được vậy các bác?

tôi cũng không dùng được,không biết tại sao?hic
  • 0

#47 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 04 May 2011 - 11:15 PM

tôi cũng không dùng được,không biết tại sao?hic

Nếu bạn không đưa ra được thông báo lúc sử dụng Lisp thì câu hỏi của bạn mãi mãi k có đáp án :)
  • 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


#48 namtrantt206xd

namtrantt206xd

    biết vẽ circle

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

Đã gửi 04 May 2011 - 11:16 PM

ặc ặc nhầm,để mình gởi lại file nha,mình gởi nhầm(http://www.cadviet.c.../2/progam05.rar),mọi ngưòi thử lại nha,tên lệnh là dt,dt0 giống nhử mình đã hướng dẫn ở trên nha

lisp của bác đuôi fas dùng thế nào vậy?
  • 0

#49 namtrantt206xd

namtrantt206xd

    biết vẽ circle

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

Đã gửi 04 May 2011 - 11:19 PM

Nếu bạn không đưa ra được thông báo lúc sử dụng Lisp thì câu hỏi của bạn mãi mãi k có đáp án :)

bác ketxu post lại link lisp hoàn chỉnh được không?em down lisp udt.lisp về thì khi ap lên rồi mà gõ lệnh udt vẫn không nhận lệnh?
  • 0

#50 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 04 May 2011 - 11:29 PM

Nguyên văn lisp "udt" ở bên trên, cũng không biết có phải lisp bạn đề cập không, cũng không rõ việc không nhận lệnh là như thế nào. Hy vọng bạn hiểu ý mình :)
(defun c:udt(/ ss tong ham tmp tt hstl oldim toe frome cur dt)
(prompt "\n Kich thuoc cua chuong trinh tinh theo don vi mm ")
(if (not hstlo) (setq hstlo 0.001))
(setq hstl (getreal (strcat "\n Nhap ti le chuyen doi don vi <" (rtos hstlo 2 3) "> :")))
(if (not hstl) (setq hstl hstlo) (setq hstlo hstl))
(if (not tpo) (setq tpo 2))
(setq tp (getint (strcat "\n Nhap So chu so thap phan <" (itoa tpo) "> :")))
(if (not tp) (setq tp tpo) (setq tpo tp))
(setq oldim (getvar "Dimzin"))
(setvar "Dimzin" 0)
(prompt "\n Chon doi tuong de tinh dien tich hay Enter de tinh dien tich theo Pick diem ")
(setq
ss (ssget '((-4 . "<OR")(0 . "LWPOLYLINE")(0 . "REGION")(0 . "CIRCLE")(0 . "ARC")(-4 . "OR>")))
tong 0.0
ham (lambda (x) (command ".area" "o" x) (setq tong (+ tong (getvar "area"))))
tmp (mapcar 'ham (ss2ent ss))
)

(if (not ss) (progn
(setq tong 0.0 ss (ssadd))
(while (setq p (getpoint "\n Pick vao vung tinh dien tich :"))
(setq frome (entlast))
(command ".boundary" p "")
(setq toe (entlast))

(setq cur frome)
(while (not (eq cur toe))
(setq
cur (entnext cur)
ss (ssadd cur ss))
(command "area" "S" "O" ss "" "")
(setq dt (getvar "area"))
(setq tong (+ tong dt))
)
(command "area" "A" "O" "L" "" "")
(setq dt (getvar "area"))
(setq tong (+ tong (* dt 2)))
(sssetfirst ss ss)
)
(command "erase" ss "")
))


(setq tt (entget (car (entsel "\nChon text ket qua: ")))
tong (vl-string-right-trim "." (vl-string-right-trim "0" (rtos tong)))
)
(entmod (subst (cons 1 (rtos (* (atof tong) hstl hstl) 2 tp)) (assoc 1 tt) tt))

(setvar "Dimzin" oldim)


(princ)
)
;
(defun ss2ent(ss / sodt index lstent)
(setq
sodt (if ss (sslength ss) 0)
index 0
)
(repeat sodt
(setq ent (ssname ss index)
index (1+ index)
lstent (cons ent lstent)
)
)
(reverse lstent)
)
(princ "\nUpdate Area - free lisp from cadviet.com")
(princ "\nUse UDT command to start!")
(vl-load-com)

  • 3

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


#51 trandanxd

trandanxd

    biết vẽ circle

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

Đã gửi 04 May 2011 - 11:32 PM

Cái này dùng list tính rất nhanh.
Mình cũng đang làm đồ án nên thấy cũng tiện.
  • 0
Người ta thường cô đơn bởi vì người ta thường chỉ lo xây tường chứ không lo xây dựng những nhịp cầu.
Hình đã gửi

#52 namtrantt206xd

namtrantt206xd

    biết vẽ circle

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

Đã gửi 04 May 2011 - 11:41 PM

Cái này dùng list tính rất nhanh.
Mình cũng đang làm đồ án nên thấy cũng tiện.

sao mình tính toàn ra 0.00 nhỉ?là sao vậy bạn?
  • 0

#53 tski259

tski259

    biết vẽ pline

  • Members
  • PipPip
  • 66 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 08 May 2011 - 06:54 PM

sao mình tính toàn ra 0.00 nhỉ?là sao vậy bạn?

Hi.Cụ thể là dùng lisp nào vậy.Lệnh udt hay dti.Có thể là do bạn tính với tỉ lệ quá nhỏ và diện tích cũng nhỏ nên nó không thể hiện hết diện tích bạn cần đo được.Bạn thử dùng lisp dti có lựa chọn tỉ lệ và số chữ số sau dấu phẩy xem.
  • 0

#54 xuandao0708

xuandao0708

    biết lệnh scale

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

Đã gửi 14 May 2011 - 01:43 PM

Bạn ketxu ơi cho mình hỏi là khi muốn nhập tỷ lệ để tính diện tích thì như thế nào nếu mình nhập tỷ lệ là 2.5, ngoài ra bạn có thể cho nó tự tạo ra 1 text mới(bên cạnh việc điền kết quả vào text có sẵn) và điền diện tích vào text đó khi mình chưa có 1 text có sẵng, text mới đó được đặt trong 1 layer diện tích. Thank bạn nhiều.
  • 0

#55 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 14 May 2011 - 07:33 PM

Bạn ketxu ơi cho mình hỏi là khi muốn nhập tỷ lệ để tính diện tích thì như thế nào nếu mình nhập tỷ lệ là 2.5, ngoài ra bạn có thể cho nó tự tạo ra 1 text mới(bên cạnh việc điền kết quả vào text có sẵn) và điền diện tích vào text đó khi mình chưa có 1 text có sẵng, text mới đó được đặt trong 1 layer diện tích. Thank bạn nhiều.

Bạn đang nói đến lisp nào ?? Vì như mình nói có quá nhiều lisp tính DT trên 4room. Bạn post lisp bạn dùng + file CAD mô tả layer, text giúp mình dễ hiểu nhé
  • 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


#56 xuandao0708

xuandao0708

    biết lệnh scale

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

Đã gửi 14 May 2011 - 11:54 PM

Ý mình nói là lisp udt mà bạn pots lên đó. Bạn nên cho thêm phần nhập tỷ lệ bản vẽ và tạo 1 text mới điền giá trị diện tích vào khi không có sẵn text.
  • 0

#57 V77

V77

    Chưa sử dụng CAD

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

Đã gửi 21 May 2011 - 05:16 PM

Ý mình nói là lisp udt mà bạn pots lên đó. Bạn nên cho thêm phần nhập tỷ lệ bản vẽ và tạo 1 text mới điền giá trị diện tích vào khi không có sẵn text.

Em cũng xin nhờ các bác trên diễn dàn chỉnh lại lisp udt thêm phần "chọn điểm ghi diện tích" với,em đang cần ghi lại diện tích để ban A kiểm tra cho tiện,nhưng cứ phải copy text trước rồi lại edit text hơi lâu.
Em cũng mày mò thử chỉnh mà khôngđưcợc,em xin cảm ơn ạh.
  • 0

#58 mokara30

mokara30

    biết zoom

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

Đã gửi 02 June 2011 - 04:13 PM

Em thấy Lisp "udt" của bác Tue_NV chỉnh lại rất hay, nhưng em muốn góp chút ý kiến thế này. Có thể tự động ghi kết quả diện tích bằng cách Pick vào 1 điểm trong hình đó rồi ghi text theo kiểu text mà mình đang chọn current được không.
Còn em có ý thế này, trong bản vẽ em sẽ dùng 1 layer vẽ rất nhiều polyline, khi đó em muốn có 1 lệnh ghi diện tích của tất các polyline đó vào tâm của của các hình đó một cách nhanh nhất được không.
Cảm ơn diễn đàn và các bác nhiều.
  • 0

#59 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 02 June 2011 - 04:30 PM

XIn lỗi các bạn, không hiểu sao chủ đề bị trôi mất, nên mình không kíp trả lời kịp thời :

Ý mình nói là lisp udt mà bạn pots lên đó. Bạn nên cho thêm phần nhập tỷ lệ bản vẽ và tạo 1 text mới điền giá trị diện tích vào khi không có sẵn text.

- Không khó. Không biết bạn còn cần không ? Tỷ lệ bản vẽ có thể nhập hoặc lấy tỉ lệ Dim hiện thời

Em cũng xin nhờ các bác trên diễn dàn chỉnh lại lisp udt thêm phần "chọn điểm ghi diện tích" với,em đang cần ghi lại diện tích để ban A kiểm tra cho tiện,nhưng cứ phải copy text trước rồi lại edit text hơi lâu.
Em cũng mày mò thử chỉnh mà khôngđưcợc,em xin cảm ơn ạh.

- Yêu cầu này đã được bác Bình sửa ở topic Viết Lisp theo yêu cầu rồi bạn nhé ^^ Trang 180

Em thấy Lisp "udt" của bác Tue_NV chỉnh lại rất hay, nhưng em muốn góp chút ý kiến thế này. Có thể tự động ghi kết quả diện tích bằng cách Pick vào 1 điểm trong hình đó rồi ghi text theo kiểu text mà mình đang chọn current được không.
Còn em có ý thế này, trong bản vẽ em sẽ dùng 1 layer vẽ rất nhiều polyline, khi đó em muốn có 1 lệnh ghi diện tích của tất các polyline đó vào tâm của của các hình đó một cách nhanh nhất được không.
Cảm ơn diễn đàn và các bác nhiều.


- Xanh : được, và trên diễn đàn cũng đã có. CÒn làm trên phôi "UDT" thì bạn nhờ thẳng bác TUệ ^^
- Đỏ : được, trong trường hợp các Pline đó kín . K kín vẫn có thuộc tính area nhưng chưa chắc đã đúng ^^ Nếu bạn ưng cái bụng thì mình mần luôn ^^
P/S : layer đó là layer nào, nhập vào lisp bằng cách nào ? (chọn đối tượng mẫu, hay viết trong lisp, hay nhập tay ??")
  • 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


#60 mokara30

mokara30

    biết zoom

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

Đã gửi 03 June 2011 - 01:21 PM

Rất cảm ơn bác ketxu đã quan tâm vấn đề này.
Vấn đề của em là như thế này:
- thứ nhất em dùng 1 Pline vẽ các đường cong kín (để bắt diện tích các phòng, diện tích hành lang ...)
- sau đó em sẽ đo diện tích các Pline kín đó rồi ghi vào giữa các phòng (Pline kín)
- cuối cùng là tạo 1 cái bảng ghi tên phòng và diện tích.
Thực ra đây là công việc của họa viên, nhưng em thấy autolisp tuyệt vời quá.
Không biết là bác ketxu và các cao thủ khác có ý tưởng gì về vấn đề của em không.
Cảm ơn các bác nhiều và chúc một buổi chiều làm việc vui vẻ.
PS: em không thấy cái nút thanks chỗ nào cả, có phải là click vào dấu "+" chỗ bình chọn cho bài viết này không?
  • 0