Đến nội dung


Hình ảnh
- - - - -

[Nhờ chỉnh sửa] Lisp vẽ đường thẳng nhập chiều cao va khoảng cách liên tục


  • Please log in to reply
18 replies to this topic

#1 minhtu2004

minhtu2004

    biết lệnh chamfer

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

Đã gửi 01 December 2011 - 03:54 PM

- Chào diễn đàn, mình mới biết căn bản về lisp và có viết 1 đoạn lisp theo tài liệu của diễn đàn để phục vụ công việc vẽ 1 đường thẳng bằng cách nhập chiều cao và khoảng cách từng đoạn thẳng. Nhưng không có khả năng code phần nhập khoảng cách và lập đi lại nhiều lần nên nhờ diễn đàn chỉnh sửa giúp. Mình đính kèm file cad và phần code của mình nhờ mọi người giúp đỡ.

(defun c:dpl ()
(setq P1 (getpoint "cho diem dau: "))
(setq L (getreal "nhap chieu dai: "))
(setq D 80.000)
(setq D1 (* (- L D) 1000))
(setq P2 (polar P1 (/ Pi 2) D1))
(command "line" P1 P2 "")
(princ)
)
http://www.cadviet.c...35974_banve.dwg
  • 0

-Nhận thực hiện bản vẽ 3D bằng revit.
-Liên hệ: 01664793290.


#2 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 01 December 2011 - 04:11 PM

+nhâp

(defun c:dpl ()
(while
(and
(setq P1 (getpoint "cho diem dau: "))
(setq L (getreal "nhap chieu dai: "))
)
(setq D 80.000)
(setq D1 (* (- L D) 1000))
(setq P2 (polar P1 (/ Pi 2) D1))
(command "line" P1 P2 "")
) (princ) )
Bạn thêm while và and vào cho sự kiện chọn điểm + nhập chiều dài
  • 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


#3 minhtu2004

minhtu2004

    biết lệnh chamfer

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

Đã gửi 01 December 2011 - 04:37 PM

+nhâp


(defun c:dpl ()
(while
(and
(setq P1 (getpoint "cho diem dau: "))
(setq L (getreal "nhap chieu dai: "))
)
(setq D 80.000)
(setq D1 (* (- L D) 1000))
(setq P2 (polar P1 (/ Pi 2) D1))
(command "line" P1 P2 "")
) (princ) )
Bạn thêm while và and vào cho sự kiện chọn điểm + nhập chiều dài

-Mình cảm ơn bạn đã giúp, nhưng còn phần nhập khoảng cách thì như thế nào vậy.Nhu cầu của mình là chỉ việc nhập giá trị chiều cao và khoảng cách từng doạn thẳng.
-VD:Đầu tiên chọn điểm bắt đầu, nhập chiều cao được đường thẳng 1 và sao đó nhập khoảng cách 443.1 và chiều cao là đường thẳng thứ 2 cứ như vậy đến khi không nhập nữa.Như trong file cad mình đính kèm. Cám ơn bạn.
  • 0

-Nhận thực hiện bản vẽ 3D bằng revit.
-Liên hệ: 01664793290.


#4 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 01 December 2011 - 04:41 PM

-Mình cảm ơn bạn đã giúp, nhưng còn phần nhập khoảng cách thì như thế nào vậy.Nhu cầu của mình là chỉ việc nhập giá trị chiều cao và khoảng cách từng doạn thẳng.
-VD:Đầu tiên chọn điểm bắt đầu, nhập chiều cao được đường thẳng 1 và sao đó nhập khoảng cách 443.1 và chiều cao là đường thẳng thứ 2 cứ như vậy đến khi không nhập nữa.Như trong file cad mình đính kèm. Cám ơn bạn.


Dùng thử cái này xem. Về tỉ lệ, thêm bớt là do bạn đấy nhé. Tôi chỉ làm trên cơ sở lisp của bạn thôi.

(defun c:dpl ()
(command "undo" "begin")
(acet-sysvar-set (list "osmode" 0 "cmdecho" 0))
(setq P1 (getpoint "\ncho diem dau: "))
(setq L (getreal "\nnhap chieu dai: "))
(setq D 80.000)
(setq D1 (* (- L D) 1000))
(setq P2 (polar P1 (/ Pi 2) D1))
(command "line" P1 P2 "")
(while (setq kc (getreal "\nNhap khoang cach: "))
(setq L (getreal "\nnhap chieu dai: "))
(setq P1 (polar P1 0 kc))
(setq P2 (polar P1 (/ Pi 2) D1))
(command "line" P1 P2 ""))
(acet-sysvar-restore)
(command "undo" "end")
(princ)
)

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


#5 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 01 December 2011 - 04:55 PM

-Mình cảm ơn bạn đã giúp, nhưng còn phần nhập khoảng cách thì như thế nào vậy.Nhu cầu của mình là chỉ việc nhập giá trị chiều cao và khoảng cách từng doạn thẳng.
-VD:Đầu tiên chọn điểm bắt đầu, nhập chiều cao được đường thẳng 1 và sao đó nhập khoảng cách 443.1 và chiều cao là đường thẳng thứ 2 cứ như vậy đến khi không nhập nữa.Như trong file cad mình đính kèm. Cám ơn bạn.

Ồ, srr bạn mình chưa xem bản vẽ, chỉ add thêm while để tạo vòng lặp ^^
  • 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


#6 minhtu2004

minhtu2004

    biết lệnh chamfer

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

Đã gửi 01 December 2011 - 05:14 PM

-Cám ơn diễn đàn, bạn ketxu và bạn Doan Van Ha. Lisp đã đúng yêu cầu của mình.Không thấy nút thank chỗ nào hết.
  • 0

-Nhận thực hiện bản vẽ 3D bằng revit.
-Liên hệ: 01664793290.


#7 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 01 December 2011 - 05:16 PM

-Cám ơn diễn đàn, bạn ketxu và bạn Doan Van Ha. Lisp đã đúng yêu cầu của mình.Không thấy nút thank chỗ nào hết.


Nút "Thanks" bây giờ đổi thành nút "Like this" bạn ạ!
  • 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.


#8 minhtu2004

minhtu2004

    biết lệnh chamfer

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

Đã gửi 01 December 2011 - 05:43 PM

-Có 1 chút phát sinh bạn chỉnh dùm, la khi nhập khoảng cách nhỏ hơn 1 thì đường thẳng không vuông góc và khi chạy lisp truy bắt điểm bị tắt hết. Bạn chỉnh sửa dùm.Mình có đính kèm file cad và code

(defun c:dpl ()
(command "undo" "begin")
(acet-sysvar-set (list "osmode" 0 "cmdecho" 0))
(setq P1 (getpoint "\ncho diem dau: "))
(setq L (getreal "\nnhap chieu dai: "))
(setq D 80.000)
(setq D1 (* (- L D) 1000))
(setq P2 (polar P1 (/ Pi 2) D1))
(command "line" P1 P2 "")
(while (setq kc (* (getreal "\nNhap khoang cach: ") 100))
(setq L (getreal "\nnhap chieu dai: "))
(setq D 80.000)
(setq D1 (* (- L D) 1000))
(setq P1 (polar P1 0 kc))
(setq P2 (polar P1 (/ Pi 2) D1))
(command "line" P1 P2 ""))
(acet-sysvar-restore)
(command "undo" "end")
(princ)
)
http://www.cadviet.c...974_banve_1.dwg
  • 1

-Nhận thực hiện bản vẽ 3D bằng revit.
-Liên hệ: 01664793290.


#9 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 01 December 2011 - 10:35 PM

-Có 1 chút phát sinh bạn chỉnh dùm, la khi nhập khoảng cách nhỏ hơn 1 thì đường thẳng không vuông góc và khi chạy lisp truy bắt điểm bị tắt hết.


Thực ra, nói truy bắt điểm bị tắt cũng chưa đúng lắm. Nhưng xin nhận trách nhiệm: lỗi này là tại tôi sơ ý. Để đền bù những gì mà tôi sai sót mong bạn hãy nêu hết y/c để tôi làm 1 phát luôn thể.
Một lần nữa, srr bạn!
  • 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.


#10 minhtu2004

minhtu2004

    biết lệnh chamfer

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

Đã gửi 02 December 2011 - 07:42 AM


Thực ra, nói truy bắt điểm bị tắt cũng chưa đúng lắm. Nhưng xin nhận trách nhiệm: lỗi này là tại tôi sơ ý. Để đền bù những gì mà tôi sai sót mong bạn hãy nêu hết y/c để tôi làm 1 phát luôn thể.
Một lần nữa, srr bạn!

-Bạn không có lỗi gì hết mình đang nhờ bạn giúp mà. Cuối cùng yêu cầu của mình là chỉnh lại để nhập khoảng cách nhỏ hơn 1 mà không bị như file cad mình đính kèm và thêm dòng code chọn đối tượng text, mtext có sẳn và chuyển đối tượng đó sang số thực.Mong bạn giúp đỡ.
  • 0

-Nhận thực hiện bản vẽ 3D bằng revit.
-Liên hệ: 01664793290.


#11 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 02 December 2011 - 08:48 AM

Trông cái này giống 1 yêu cầu nào đó trên diễn đàn r ý nhỉ ^^
  • 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


#12 minhtu2004

minhtu2004

    biết lệnh chamfer

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

Đã gửi 02 December 2011 - 08:54 AM

Trông cái này giống 1 yêu cầu nào đó trên diễn đàn r ý nhỉ ^^

-Cái này mình mới đưa lên diễn đàn, còn có bài yêu cầu nào giống như thế này bạn có thể cho mình link để tham khảo. Cám ơn bạn nhiều.
  • 0

-Nhận thực hiện bản vẽ 3D bằng revit.
-Liên hệ: 01664793290.


#13 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 02 December 2011 - 09:09 AM

-Bạn không có lỗi gì hết mình đang nhờ bạn giúp mà. Cuối cùng yêu cầu của mình là chỉnh lại để nhập khoảng cách nhỏ hơn 1 mà không bị như file cad mình đính kèm và thêm dòng code chọn đối tượng text, mtext có sẳn và chuyển đối tượng đó sang số thực.Mong bạn giúp đỡ.


Số thực đó là số nào vậy bạn?
  • 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.


#14 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 02 December 2011 - 09:12 AM

-Cái này mình mới đưa lên diễn đàn, còn có bài yêu cầu nào giống như thế này bạn có thể cho mình link để tham khảo. Cám ơn bạn nhiều.

Bạn gửi yêu cầu thì gửi 1 thể. Còn nếu bạn muốn tự tay viết thì k nên đặt vấn đề dần dà kiểu như thế này ^^
Mình không ở trong ngạch của bạn, nhưng nhìn hình vẽ giống như vẽ đường cao độ hay trắc dọc trắc ngang gì đấy từ mấy số khoảng cách + cao độ bên dưới. Mà cái này bạn search trên 4room chắc thấy kha khá
  • 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


#15 minhtu2004

minhtu2004

    biết lệnh chamfer

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

Đã gửi 02 December 2011 - 09:13 AM

-Là những số text và mtext trong file cad đó bạn. Thay vì mình phải nhập những số đó thì mình chọn những số text và mtext đó. Xin lỗi vì không nói rõ ràng.
  • 0

-Nhận thực hiện bản vẽ 3D bằng revit.
-Liên hệ: 01664793290.


#16 minhtu2004

minhtu2004

    biết lệnh chamfer

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

Đã gửi 02 December 2011 - 09:25 AM

Bạn gửi yêu cầu thì gửi 1 thể. Còn nếu bạn muốn tự tay viết thì k nên đặt vấn đề dần dà kiểu như thế này ^^
Mình không ở trong ngạch của bạn, nhưng nhìn hình vẽ giống như vẽ đường cao độ hay trắc dọc trắc ngang gì đấy từ mấy số khoảng cách + cao độ bên dưới. Mà cái này bạn search trên 4room chắc thấy kha khá

-Mình xin lỗi vì đã làm phiền diễn đàn, mình cũng đã tìm trước khi nhờ diễn đàn chỉnh sửa dùm. Lúc đầu ý tưởng của mình là chỉ nhập số là sẽ được những đoạn thẳng và lisp trên có thể giải quyết được vấn đề. Nhưng trong file cad có sẳn những con số nên mình mới nhờ giúp thêm 1 đoạn code lấy giá trị từ những con số text đó và sửa lổi giá trị nhỏ hơn 1. Xin lỗi vì đã làm phiền.
  • 0

-Nhận thực hiện bản vẽ 3D bằng revit.
-Liên hệ: 01664793290.


#17 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 02 December 2011 - 10:06 AM

-Mình xin lỗi vì đã làm phiền diễn đàn, mình cũng đã tìm trước khi nhờ diễn đàn chỉnh sửa dùm. Lúc đầu ý tưởng của mình là chỉ nhập số là sẽ được những đoạn thẳng và lisp trên có thể giải quyết được vấn đề. Nhưng trong file cad có sẳn những con số nên mình mới nhờ giúp thêm 1 đoạn code lấy giá trị từ những con số text đó và sửa lổi giá trị nhỏ hơn 1. Xin lỗi vì đã làm phiền.


Tôi chỉ sửa theo y/c của bạn, còn việc +-*/ là lấy theo lisp của bạn, nếu không đúng y/c thì bạn tự sửa vì tôi không hiểu bản chất ý đồ của bạn.

(defun c:dpl ()
(command "undo" "begin")
(setq P1 (getpoint "\nChon diem dau: "))
(acet-sysvar-set (list "osmode" 0 "cmdecho" 0))
(princ "\nChon Text/Mtext de lay chieu dai...")
(setq L (atof (cdr (assoc 1 (entget (car (entsel)))))))
(setq P2 (polar P1 (/ Pi 2) (* (- L 80.0) 1000)))
(command "line" P1 P2 "")
(while (and (princ "\nChon Text/Mtext de lay khoang cach...") (setq kc (atof (cdr (assoc 1 (entget (car (entsel))))))))
(princ "\nChon Text/Mtext de lay chieu dai...")
(setq L (atof (cdr (assoc 1 (entget (car (entsel)))))))
(setq P1 (polar P1 0 kc))
(setq P2 (polar P1 (/ Pi 2) (* (- L 80.0) 1000)))
(command "line" P1 P2 ""))
(acet-sysvar-restore)
(command "undo" "end")
(princ))

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


#18 minhtu2004

minhtu2004

    biết lệnh chamfer

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

Đã gửi 02 December 2011 - 12:58 PM

-Cám ơn bạn. Lisp đã đúng theo ý mình rồi, nhưng bị tắt truy bắt điểm khi kết thúc lệnh nhưng không sao tuy hơi bất tiện 1 chút. Cám ơn bạn 1 lần nữa đã giúp.
  • 0

-Nhận thực hiện bản vẽ 3D bằng revit.
-Liên hệ: 01664793290.


#19 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 02 December 2011 - 01:18 PM

-Cám ơn bạn. Lisp đã đúng theo ý mình rồi, nhưng bị tắt truy bắt điểm khi kết thúc lệnh nhưng không sao tuy hơi bất tiện 1 chút. Cám ơn bạn 1 lần nữa đã giúp.


=> Chỉ xảy ra khi bạn dùng esc để kết thúc lệnh
  • 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