Đến nội dung


Hình ảnh
- - - - -

[ Yêu Cầu ] lisp kết hợp PL & UCS


  • Please log in to reply
6 replies to this topic

#1 angelofmine

angelofmine

    biết vẽ pline

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

Đã gửi 17 February 2012 - 08:02 PM

Yêu cầu: ( Kết hợp giữa UCS & PL)
- Nhập lệnh, chọn điểm bắt đầu. Sau đó chọn TEXT có sẵn trong bản vẽ (Hoặc có thể nhập tay), nó sẽ vẽ 1 đoạn thẳng đứng xuống dưới có chiều dài bằng giá trị TEXT.
- Đổi hệ trục về (0,0) tại tọa độ cuối đoạn thằng vừa vẽ
- Chuyển về lệnh PL bình thường (Bắt đầu lệnh)
( Có nghĩa là Lisp sẽ giúp đổi tọa độ về tại 1 điểm và bắt đầu thực hiện luôn lệnh PL từ gốc tọa độ mới)

Không biết có khả thi không. Nhưng e không làm được nên chỉ biết nhờ vả các bác trên này.
Cảm ơn các bác đã giúp đỡ.
File Cad cụ thể
http://www.cadviet.c...o_viet_lisp.dwg
  • 0
*** Đời thay đổi khi chúng ta thay đổi ***

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 17 February 2012 - 08:09 PM

Yêu cầu: ( Kết hợp giữa UCS & PL)
- Nhập lệnh, chọn điểm bắt đầu. Sau đó chọn TEXT có sẵn trong bản vẽ (Hoặc có thể nhập tay), nó sẽ vẽ 1 đoạn thẳng đứng xuống dưới có chiều dài bằng giá trị TEXT.
- Đổi hệ trục về (0,0) tại tọa độ cuối đoạn thằng vừa vẽ
- Chuyển về lệnh PL bình thường
( Có nghĩa là Lisp sẽ giúp đổi tọa độ về tại 1 điểm và thực hiện luôn lệnh PL từ gốc tọa độ mới)

Không biết có khả thi không. Nhưng e không làm được nên chỉ biết nhờ vả các bác trên này.
Cảm ơn các bác đã giúp đỡ.
File Cad cụ thể
http://www.cadviet.c...o_viet_lisp.dwg

Bạn đã biết vì sao bài của bạn bị mod xoá rồi ư?
Đây là lisp cho bạn (chú ý kích thước trên bản vẽ khác kết quả dim nhé)

(defun C:PL2( / p1 len p2)
(setq osm (getvar "osmode") cmd (getvar "cmdecho"))
(initget 1) (setq p1 (getpoint "\nChon diem bat dau: "))
(setq len (atof (cdr (assoc 1 (entget (car (entsel "\nChon Text de lay chieu dai: ")))))))
(setq p2 (polar p1 (/ pi -2) len))
(entmakex (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2)))
(setvar "osmode" 0) (setvar "cmdecho" 0)
(command "ucs" p2 "")
(setvar "osmode" osm) (setvar "cmdecho" cmd)
(command "pline"))
;----- CHU Y: Gia tri dim tren ban ve cho thay: muon co ket qua dung can phai nhan/chia chieu dai cho 1 he so.
P/S: đã thay các hàm Acet.
  • 2

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


#3 angelofmine

angelofmine

    biết vẽ pline

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

Đã gửi 17 February 2012 - 09:54 PM

Bạn đã biết vì sao bài của bạn bị mod xoá rồi ư?
Đây là lisp cho bạn (chú ý kích thước trên bản vẽ khác kết quả dim nhé)


(defun C:PL2( / p1 len p2)
(initget 1) (setq p1 (getpoint "\nChon diem bat dau: "))
(setq len (atof (cdr (assoc 1 (entget (car (entsel "\nChon Text de lay chieu dai: ")))))))
(setq p2 (polar p1 (/ pi -2) len))
(entmakex (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2)))
(acet-sysvar-set (list "osmode" 0 "cmdecho" 0))
(command "ucs" p2 "")
(acet-sysvar-restore)
(command "pline"))
;----- CHU Y: Gia tri dim tren ban ve cho thay: muon co ket qua dung can phai nhan/chia chieu dai cho 1 he so.


Trước hết cảm ơn Bác đã giành thời gian giúp em.
Em chạy lisp của bác nhưng nó báo lỗi:


Command: pl2

Chon diem bat dau:
Chon Text de lay chieu dai: ; error: no function definition: ACET-SYSVAR-SET
Bác xem lại giúp em
  • 0
*** Đời thay đổi khi chúng ta thay đổi ***

#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 17 February 2012 - 10:04 PM


Trước hết cảm ơn Bác đã giành thời gian giúp em.
Em chạy lisp của bác nhưng nó báo lỗi:


Command: pl2

Chon diem bat dau:
Chon Text de lay chieu dai: ; error: no function definition: ACET-SYSVAR-SET
Bác xem lại giúp em

Do máy bạn chưa cài Tool Express. Tôi đã sửa cho bạn. Vẫn Link cũ ở trê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.


#5 angelofmine

angelofmine

    biết vẽ pline

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

Đã gửi 17 February 2012 - 11:22 PM

Do máy bạn chưa cài Tool Express. Tôi đã sửa cho bạn. Vẫn Link cũ ở trên


Do máy bạn chưa cài Tool Express. Tôi đã sửa cho bạn. Vẫn Link cũ ở trên


Trên là báo lỗi do em dùng trên Cad 2005 chưa cài Tool Express
Nhưng em thử trên cad 2007 đã cài đủ Tool Express thì báo lỗi sau:


Command: pl2
Chon diem bat dau: _endp of
Chon Text de lay chieu dai:
Invalid option keyword.
; error: Function cancelled

Enter an option [New/Move/orthoGraphic/Prev/Restore/Save/Del/Apply/?/World]
<World>:

Đến dòng cuối cùng Enter thì kết thúc lệnh. Kết quả là chỉ vẽ được 1 PL có chiều dài bằng giá trị Text trên bản vẽ.
Bác xem lại giúp em.

PS: Giá trị dim trong bản vẽ e gửi chỉ mang tính minh họa cho giá trị text. Em muốn sau khi thực hiện xong bước chọn text thì hệ trục chuyển về tại cuối điểm PL(Tại B trên bản vẽ, k cần vẽ AB) và bắt đầu lại lệnh PL tại gôc tọa độ đó (Bỏ qua được các thao tác XĐ gốc tọa độ mới và chuyển hệ trục)
  • 0
*** Đời thay đổi khi chúng ta thay đổi ***

#6 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 18 February 2012 - 08:05 AM




Trên là báo lỗi do em dùng trên Cad 2005 chưa cài Tool Express
Nhưng em thử trên cad 2007 đã cài đủ Tool Express thì báo lỗi sau:


Command: pl2
Chon diem bat dau: _endp of
Chon Text de lay chieu dai:
Invalid option keyword.
; error: Function cancelled

Enter an option [New/Move/orthoGraphic/Prev/Restore/Save/Del/Apply/?/World]
<World>:

Đến dòng cuối cùng Enter thì kết thúc lệnh. Kết quả là chỉ vẽ được 1 PL có chiều dài bằng giá trị Text trên bản vẽ.
Bác xem lại giúp em.

PS: Giá trị dim trong bản vẽ e gửi chỉ mang tính minh họa cho giá trị text. Em muốn sau khi thực hiện xong bước chọn text thì hệ trục chuyển về tại cuối điểm PL(Tại B trên bản vẽ, k cần vẽ AB) và bắt đầu lại lệnh PL tại gôc tọa độ đó (Bỏ qua được các thao tác XĐ gốc tọa độ mới và chuyển hệ trục)

Tôi đã sửa cho bạn ở trên (bài ở #2) để có thể dùng với Cad từ R14. Đã check trên bản vẽ bạn gởi, không lỗi gì. Nếu lỗi thì bạn post bản vẽ lên cho tôi.
  • 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.


#7 angelofmine

angelofmine

    biết vẽ pline

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

Đã gửi 20 February 2012 - 09:13 AM

Tôi đã sửa cho bạn ở trên (bài ở #2) để có thể dùng với Cad từ R14. Đã check trên bản vẽ bạn gởi, không lỗi gì. Nếu lỗi thì bạn post bản vẽ lên cho tôi.


Dạ em đã test lại.
Ngon rồi bác ạ.
Em cảm ơn bác nhiều.
Chúc bác tuần làm việc mới hiệu quả.
  • 0
*** Đời thay đổi khi chúng ta thay đổi ***