Đến nội dung


Hình ảnh
- - - - -

Đánh cốt tự động bằng lisp DC


  • Please log in to reply
93 replies to this topic

#41 nguyenhoangvuong83

nguyenhoangvuong83

    biết vẽ circle

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

Đã gửi 28 May 2008 - 11:55 AM

Đây là bảng báo lỗi khi sử dụng: pó tay
http://www.cadviet.com/upfiles/thu.rar
  • 0
CHình đã gửiDVietHình đã gửi

#42 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 28 May 2008 - 12:01 PM

em đã thử lại rồi mà cũng không được, chỉ ra được block cost thôi anh à, còn chỉ số cost thì không hiện ra. không biết bị lỗi gì nữa

Sau khi dùng lệnh DC, bạn nhấn F2 rồi copy nội dung CAD thông báo và post lên đây được không?
  • 0

#43 nguyenhoangvuong83

nguyenhoangvuong83

    biết vẽ circle

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

Đã gửi 28 May 2008 - 12:54 PM

Sau khi dùng lệnh DC, bạn nhấn F2 rồi copy nội dung CAD thông báo và post lên đây được không?

Em đã bỏ file DANHCOT.DWG vào support rồi. sử dụng lệnh nó hiện lên cái hộp thoại như em đã post, rồi ra cái block của cost thôi. Không biết có do thiếu font không nữa.
Đây là nội dung nè anh:
Command: cot00

Diem co cot 0.000:
Command:
Command: dc

Vao diem can danh cot: .insert Enter block name or [?]: danhcot
C:\Program Files\AutoCAD 2006\UNG DUNG\HO TRO TK THEP2006\Fonts CAD\vns.shx is
a normal text font file, not a big-font file.

C:\Program Files\AutoCAD 2006\UNG DUNG\HO TRO TK THEP2006\Fonts CAD\vns.shx is
a normal text font file, not a big-font file.

C:\Program Files\AutoCAD 2006\UNG DUNG\HO TRO TK THEP2006\Fonts CAD\vns.shx is
a normal text font file, not a big-font file.

ARX_ERROR: eNotThatKindOfClassSubstituting [simplex.shx] for [tvromanc].

C:\Program Files\AutoCAD 2006\UNG DUNG\HO TRO TK THEP2006\Fonts CAD\vns.shx is
a normal text font file, not a big-font file.

C:\Program Files\AutoCAD 2006\UNG DUNG\HO TRO TK THEP2006\Fonts CAD\vns.shx is
a normal text font file, not a big-font file.

Units: Millimeters Conversion: 1
Specify insertion point or
[Basepoint/Scale/X/Y/Z/Rotate/PScale/PX/PY/PZ/PRotate]:
Enter X scale factor, specify opposite corner, or [Corner/XYZ] <1>:
100.0000000000000 Enter Y scale factor <use X scale factor>: 100.0000000000000
Specify rotation angle <0>: 0.000000000000000
Enter attribute values

C:\Program Files\AutoCAD 2006\UNG DUNG\HO TRO TK THEP2006\Fonts CAD\vns.shx is
a normal text font file, not a big-font file.
AMDUONG <#>: +
C:\Program Files\AutoCAD 2006\UNG DUNG\HO TRO TK THEP2006\Fonts CAD\vns.shx is
a normal text font file, not a big-font file.

C:\Program Files\AutoCAD 2006\UNG DUNG\HO TRO TK THEP2006\Fonts CAD\vns.shx is
a normal text font file, not a big-font file.
GIATRI <#>: 4.100
C:\Program Files\AutoCAD 2006\UNG DUNG\HO TRO TK THEP2006\Fonts CAD\vns.shx is
a normal text font file, not a big-font file.

C:\Program Files\AutoCAD 2006\UNG DUNG\HO TRO TK THEP2006\Fonts CAD\vns.shx is
a normal text font file, not a big-font file.

C:\Program Files\AutoCAD 2006\UNG DUNG\HO TRO TK THEP2006\Fonts CAD\vns.shx is
a normal text font file, not a big-font file.

C:\Program Files\AutoCAD 2006\UNG DUNG\HO TRO TK THEP2006\Fonts CAD\vns.shx is
a normal text font file, not a big-font file.
  • 0
CHình đã gửiDVietHình đã gửi

#44 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 28 May 2008 - 01:33 PM

Em đã bỏ file DANHCOT.DWG vào support rồi. sử dụng lệnh nó hiện lên cái hộp thoại như em đã post, rồi ra cái block của cost thôi. Không biết có do thiếu font không nữa.
Đây là nội dung nè anh:
Command: cot00

Diem co cot 0.000:
Command:
Command: dc

Đơn giản là bạn bị lỗi font. Bạn hãy dùng lệnh style, chọn font Romans, bỏ ô check ở bigfont đi.
  • 1

#45 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 28 May 2008 - 01:34 PM

http://www.cadviet.com/upfiles/270421_Beuz..._123_124_C1.rar

Khi dùng lisp đánh cốt cho bản vẽ này thì lẽ ra cốt phải là 2.56 chẳng hạn thì lisp lại cho kết quả là 0.003. Em nghĩ là đơn vị đã bị thay đổi 1/1000 lần. Bác thử dùng lisp cho bản vẽ của em sẽ thấy rõ hơn. Bác chỉ cho em cách sửa cho lisp này với. Em cám ơn bác.


bạn tìm dòng code (- (cadr diem) cot00) thay bằng bằng (* 1000.0 (- (cadr diem) cot00)) là được.
  • 1

#46 nguoi_mong_du

nguoi_mong_du

    biết zoom

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

Đã gửi 26 September 2008 - 01:32 AM

Nếu đánh cốt trong 1 bản vẽ nhưng ở các tỷ lệ khác nhau thì hay quá. Có thể thay đổi tỷ lệ trước khi đánh cốt đc không???
  • 0

#47 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 26 September 2008 - 07:50 AM

Nếu đánh cốt trong 1 bản vẽ nhưng ở các tỷ lệ khác nhau thì hay quá. Có thể thay đổi tỷ lệ trước khi đánh cốt đc không???

'Tỷ lệ' của bạn được hiểu theo nghĩa nào?
Bạn có thể nói rõ hơn không?
  • 0

#48 nguoi_mong_du

nguoi_mong_du

    biết zoom

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

Đã gửi 26 September 2008 - 11:48 PM

Ví dụ trong 1 bản vẽ ta đánh cốt 2 mặt cắt tỷ lệ là 1/100 hoặc 1/50 chẳng hạn. Trước khi đánh cốt mà có lựa chọn tỷ lệ mặt cắt mà mình định đánh thì hay quá.
  • 0

#49 Nộ Thiên

Nộ Thiên

    biết lệnh ddedit

  • Members
  • PipPipPipPip
  • 297 Bài viết
Điểm đánh giá: 133 (tàm tạm)

Đã gửi 27 September 2008 - 12:09 AM

Ví dụ trong 1 bản vẽ ta đánh cốt 2 mặt cắt tỷ lệ là 1/100 hoặc 1/50 chẳng hạn. Trước khi đánh cốt mà có lựa chọn tỷ lệ mặt cắt mà mình định đánh thì hay quá.

Vậy thì nên nhân thêm "scale factor" của dimstyle hiện thời.
  • 0

#50 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 27 September 2008 - 10:36 AM

Ví dụ trong 1 bản vẽ ta đánh cốt 2 mặt cắt tỷ lệ là 1/100 hoặc 1/50 chẳng hạn. Trước khi đánh cốt mà có lựa chọn tỷ lệ mặt cắt mà mình định đánh thì hay quá.

bạn thử gõ chữ TYLE rồi nhập vào 50, hoặc 100 trước khi vẽ các tỷ lệ 50 và 100 xem sao?
  • 0

#51 tuanlongtl

tuanlongtl

    biết vẽ arc

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

Đã gửi 08 November 2008 - 02:26 PM

Bạn đã bao giờ mệt vì phải tính toán để đánh cốt cao độ của mặt cắt và mặt đứng hay chưa?
vừa phải tính xem từ điểm cần tính đến cốt 0.00 có khoảng cách h bao nhiêu, rồi lại nhập vào bản vẽ.

Bây giờ, bạn có thể làm điều này một cách nhanh chóng và tự động nhờ vào lisp dc của cadviet.
với lisp này, bạn chỉ cần gõ lệnh dc, chương trình sẽ hỏi bạn điểm bạn cần đánh cốt, sau đó chương trình sẽ chèn ký hiệu cốt vào đúng vị trí và giá trị mà bạn cần. Bạn dùng lệnh cot00 để định nghĩa điểm có cao độ là cot00.

Để sử dụng lệnh, trước tiên phải copy file cot.dwg vào thư mục support - Đây là file chứa nội dung của ký hiệu cốt. Sau đó appload file danhcot.lsp để sử dụng lệnh.

(defun c:cot00 ()
(setq Cot00 (cadr (getpoint "\nDiem co cot 0.000: ")))
(princ)
)
(defun c:dc (/ diem caodo dau giatri dodaichuoi)
(if (not cot00)
(progn
(alert "chua co cot 0.000")
(c:cot00)
)
)
(grdraw (list (+ (car (getvar "VIEWCTR")) (* -1.0 (getvar "VIEWSIZE")))
cot00
)
(list (+ (car (getvar "VIEWCTR")) (* 1.0 (getvar "VIEWSIZE")))
cot00
)
1
1
)
(setq
diem (getpoint "\nVao diem can danh cot: ")
caodo (- (cadr diem) cot00)
dau (cond
((equal caodo 0.0 0.01) "%%p")
((> caodo 0.0) "+")
(t "-")
)
giatri (rtos caodo 2 0)
)
(if (= "-" (substr giatri 1 1))
(setq giatri (substr giatri 2))
)
(while (< (strlen giatri) 4)
(setq giatri (strcat "0" giatri))
)
(setq dodaichuoi (strlen giatri)
giatri (strcat (substr giatri 1 (- dodaichuoi 3))
"."
(substr giatri (- dodaichuoi 2))
)
)
(command ".insert" "danhcot" diem 100.0 100.0 0.0 dau giatri)
(redraw)
)
file danhcot.lsp: http://www.cadviet.com/upfiles/danhcot.lsp
file danhcot.dwg: http://www.cadviet.com/upfiles/DANHCOT.zip

Lưu ý: Với mỗi file DWG mà bạn vẽ, bạn phải đặt lại biến ATTDIA về 0 trước khi dùng lệnh DC (chỉ cần đặt 1 lần cho mỗi file).

Rất mong có được sự phản hồi.
Cảm ơn.

trong kiến trúc các bạn dùng cos 0.00 làm mức so sánh. Nhưng trong giao thông và thuỷ lợi thì không dùng như thế.Theo tôi hiểu thì trong lsp của anh khi đánh lệnh cot00 thì nó hiểu điểm đó là cao độ 0.00. Khi đánh lệnh dc thì nó sẽ cộng khoảng cách theo phương đứng với 0.00? Anh có cách nào để thay cos 0.00 bằng cos bất kỳ không? Sau đó khi dùng lệnh dc thì nó sẽ cộng từ cos bất kỳ đó chứ không phải là cộng với 0.00?
  • 0

#52 Snowman

Snowman

    biết lệnh mirror

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

Đã gửi 08 November 2008 - 11:35 PM

trong kiến trúc các bạn dùng cos 0.00 làm mức so sánh. Nhưng trong giao thông và thuỷ lợi thì không dùng như thế.Theo tôi hiểu thì trong lsp của anh khi đánh lệnh cot00 thì nó hiểu điểm đó là cao độ 0.00. Khi đánh lệnh dc thì nó sẽ cộng khoảng cách theo phương đứng với 0.00? Anh có cách nào để thay cos 0.00 bằng cos bất kỳ không? Sau đó khi dùng lệnh dc thì nó sẽ cộng từ cos bất kỳ đó chứ không phải là cộng với 0.00?

Bạn có thể thêm vào lệnh sau Cotxx : dùng để định nghĩa cốt bất kỳ (tương tự cốt 0.00)
(defun c:cotxx ()
(setq Cotxx (getreal "\nNhap cot can dinh nghia: ")
Cot00 (+ (cadr (getpoint (strcat "\nDiem co cot " (rtos cotxx 2 3) ": "))) Cotxx)
)
(princ)
)


Bạn cũng có thể kết hợp với lệnh tăng giảm cốt đồng loạt, tham khảo tại đây
http://www.cadviet.c...o...ost&p=37756
  • 0

. - ' * ' - .. - ... "Sống trong đời sống cần có một tấm lòng..." . - ' * ' - .. -
-----------------------------------------------------------------------------------

Hình đã gửi Hình đã gửi


#53 ForLogin

ForLogin

    biết pan

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

Đã gửi 10 March 2009 - 01:50 PM

Đầu tiên là cảm ơn bạn về lisp này, đỡ cho mình nhiều lắm.
Hai là mình gặp vấn đề như bạn này:

Trích dẫn(nguoi_mong_du @ Sep 26 2008, 23:48) *
Ví dụ trong 1 bản vẽ ta đánh cốt 2 mặt cắt tỷ lệ là 1/100 hoặc 1/50 chẳng hạn. Trước khi đánh cốt mà có lựa chọn tỷ lệ mặt cắt mà mình định đánh thì hay quá.

bạn thử gõ chữ TYLE rồi nhập vào 50, hoặc 100 trước khi vẽ các tỷ lệ 50 và 100 xem sao?


Nói chung là trong bản vẽ mình hay dùng các tỷ lệ khác nhau (1/100, 1/50, 1/25...) nhưng mình chỉ dùng lisp này ở các mặt cắt có tỷ lệ của bản vẽ (giả sử là 1/100), ở các mặt cắt khác (giả như là 1/50, mình vẽ bằng cách scale 2) thì lisp này không dùng được nữa, bạn có cách nào có câu hỏi xác định lỷ lệ trước được không? (mình gõ TYLE mà cad không hiểu lệnh này, set dym hiện hành khác cũng không được).
Mình nghĩ câu hỏi tỷ lệ này nên có giá trị mặc định để chỉ thay đổi khi cần thiết thôi, chứ mỗi lần dùng lại một lần xác định thì cũng hơi mất công. Hoặc sét tỷ lệ theo thông số của dim style hiện hành thì càng tốt.

Cảm ơn bạn
  • 0

#54 ForLogin

ForLogin

    biết pan

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

Đã gửi 11 March 2009 - 12:10 PM

Đầu tiên là cảm ơn bạn về lisp này, đỡ cho mình nhiều lắm.
Hai là mình gặp vấn đề như bạn này:
Nói chung là trong bản vẽ mình hay dùng các tỷ lệ khác nhau (1/100, 1/50, 1/25...) nhưng mình chỉ dùng lisp này ở các mặt cắt có tỷ lệ của bản vẽ (giả sử là 1/100), ở các mặt cắt khác (giả như là 1/50, mình vẽ bằng cách scale 2) thì lisp này không dùng được nữa, bạn có cách nào có câu hỏi xác định lỷ lệ trước được không? (mình gõ TYLE mà cad không hiểu lệnh này, set dym hiện hành khác cũng không được).
Mình nghĩ câu hỏi tỷ lệ này nên có giá trị mặc định để chỉ thay đổi khi cần thiết thôi, chứ mỗi lần dùng lại một lần xác định thì cũng hơi mất công. Hoặc sét tỷ lệ theo thông số của dim style hiện hành thì càng tốt.

Cảm ơn bạn


Mọi người có thể sửa giúp mình vụ này không?
  • 0

#55 macico

macico

    biết zoom

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

Đã gửi 17 March 2009 - 05:23 PM

Bạn đã bao giờ mệt vì phải tính toán để đánh cốt cao độ của mặt cắt và mặt đứng hay chưa?
vừa phải tính xem từ điểm cần tính đến cốt 0.00 có khoảng cách h bao nhiêu, rồi lại nhập vào bản vẽ.

Bây giờ, bạn có thể làm điều này một cách nhanh chóng và tự động nhờ vào lisp dc của cadviet.
với lisp này, bạn chỉ cần gõ lệnh dc, chương trình sẽ hỏi bạn điểm bạn cần đánh cốt, sau đó chương trình sẽ chèn ký hiệu cốt vào đúng vị trí và giá trị mà bạn cần. Bạn dùng lệnh cot00 để định nghĩa điểm có cao độ là cot00.

Để sử dụng lệnh, trước tiên phải copy file cot.dwg vào thư mục support - Đây là file chứa nội dung của ký hiệu cốt. Sau đó appload file danhcot.lsp để sử dụng lệnh.

(defun c:cot00 ()
(setq Cot00 (cadr (getpoint "\nDiem co cot 0.000: ")))
(princ)
)
(defun c:dc (/ diem caodo dau giatri dodaichuoi)
(if (not cot00)
(progn
(alert "chua co cot 0.000")
(c:cot00)
)
)
(grdraw (list (+ (car (getvar "VIEWCTR")) (* -1.0 (getvar "VIEWSIZE")))
cot00
)
(list (+ (car (getvar "VIEWCTR")) (* 1.0 (getvar "VIEWSIZE")))
cot00
)
1
1
)
(setq
diem (getpoint "\nVao diem can danh cot: ")
caodo (- (cadr diem) cot00)
dau (cond
((equal caodo 0.0 0.01) "%%p")
((> caodo 0.0) "+")
(t "-")
)
giatri (rtos caodo 2 0)
)
(if (= "-" (substr giatri 1 1))
(setq giatri (substr giatri 2))
)
(while (< (strlen giatri) 4)
(setq giatri (strcat "0" giatri))
)
(setq dodaichuoi (strlen giatri)
giatri (strcat (substr giatri 1 (- dodaichuoi 3))
"."
(substr giatri (- dodaichuoi 2))
)
)
(command ".insert" "danhcot" diem 100.0 100.0 0.0 dau giatri)
(redraw)
)
file danhcot.lsp: http://www.cadviet.com/upfiles/danhcot.lsp
file danhcot.dwg: http://www.cadviet.com/upfiles/DANHCOT.zip

Lưu ý: Với mỗi file DWG mà bạn vẽ, bạn phải đặt lại biến ATTDIA về 0 trước khi dùng lệnh DC (chỉ cần đặt 1 lần cho mỗi file).

Rất mong có được sự phản hồi.
Cảm ơn.

nếu lỡ chon 1 điểm không đúng làm cốt 00 rồi, muốn bỏ đi điểm đấy đi lấy 1 điểm khác kiểu gì các bác ơi
  • 0

#56 VIENCAT_ARC

VIENCAT_ARC

    Chưa sử dụng CAD

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

Đã gửi 16 April 2009 - 01:29 PM

Cảm ơn.
[/quote]
em lam dc rui. cam on bac nhieu nhe! :cheers:
  • 0

#57 tamtron

tamtron

    biết vẽ arc

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

Đã gửi 18 April 2009 - 09:27 AM

Cảm ơn.

em lam dc rui. cam on bac nhieu nhe! :cheers:


thay vì post bài vô ích này sao bạn ko click thanks



@macico
đây là câu trả lời của bạn

Nếu muốn thay đổi cốt 0.0 thì chỉ việc nhập lệnh cot00 rồi nhập vào cao độ 0.0 mới.


  • 0

#58 maianla

maianla

    biết zoom

  • Members
  • Pip
  • 13 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 18 April 2009 - 09:52 AM

Bạn sửa dòng lệnh này:
(command ".insert" "danhcot" diem 100.0 100.0 0.0 dau giatri)

số 100.0 chính là tỷ lệ. Bạn sửa về 1 là ok.

Bác Hoành ơi. Em vẽ theo tỷ lệ 1:1 . Tức là 1 m = 1000 đơn vị trong cad. Vậy sao khi đánh cốt thì hình cốt thì thấy rõ, nhưng text thì nhỏ không thấy. Mặc dù vào ed thì chỉ số nó đúng cao độ. Bác giúp em thể hiện text to ra nhé.
  • 0
Không được trì hoãn ngày hôm nay những gì có thể trì hoãn ngày mai.

#59 phan manh thang

phan manh thang

    biết pan

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

Đã gửi 26 November 2010 - 04:52 PM

cảm ơn bác Nguyen Hoanh rất nhiều!
  • 0

#60 Nghia_XD

Nghia_XD

    biết vẽ polygon

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

Đã gửi 26 November 2010 - 07:17 PM

anh cho em hỏi, khi muốn thay đổi cốt 0,000 thì như thế nào. có nghĩa là 1 bản vẽ em có nhiêu hình, mỗi hình ở 1 vị trí, khi đó em muốn thay đổi cốt 0,000 cho phùi hợp
  • 0

Xây dựng dân dụng và công nghiệp