Đến nội dung


Hình ảnh
- - - - -

[Nhờ chỉnh sửa] Lisp Mắt lưới toạ độ


  • Please log in to reply
15 replies to this topic

#1 nguyentienthanhddksct

nguyentienthanhddksct

    biết vẽ polygon

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

Đã gửi 06 April 2012 - 03:18 PM

Mình có lsp chèn mắt lưới toạ độ vào bản vẽ các thao tác của lsp là :
Đầu tiên: chọn Snap and grid điều chỉnh khoảng bao nhiêu tuỳ ý ( theo tỷ lệ vd: tỷ lệ 500 thì sẽ điều chỉnh snap là 50
còn tỷ lệ 1000 thì snap sẽ là 100)
sau đó gọi lệnh của lsp nó sẽ chèn mắt toạ độ từng điểm mình pick vào.

Giờ mình muốn mọi người chỉnh sửa giúp vẽ một đường bao
sau đó gọi lệnh
chọn đường bao
chọn snap là bao nhiêu
lsp sẽ tự động chạy ra các mắt lưới như vậy..
Đây là lsp

;;;CT chich toa do tren ban do
;;;
(Defun Init()
(setvar "BLIPMODE" 0)
(setvar "CMDECHO" 0)
(setvar "LUPREC" 0)
(setq stl "standard")
(setq scale 500)
(setq hi (* 0.002 scale))
(setq wi 0.9)
)
(Defun Reinit()
(setvar "BLIPMODE" 1)
(setvar "CMDECHO" 1)
(setvar "LUPREC" 4)
(princ)
)
(Defun C:XY( / x y xx yy pt ptx pty)
(Init)
(setq pt (getpoint "Can lay toa do diem nao : "))
(setq y (car pt))
(setq x (cadr pt))
(command "_Line"
(list (- y (* 0.0025 scale)) x 0.0)
(list (+ y (* 0.012 scale)) x 0.0) ""
)
(command "_Line"
(list y (- x (* 0.0025 scale)) 0.0)
(list y (+ x (* 0.0025 scale)) 0.0) ""
)
(setq xx (rtos x 2))
(setq yy (rtos y 2))
(setq pt y)
(setq y x)
(setq x pt)
(setq ptx (list (+ x (* 0.001 scale)) (- y (* 0.0025 scale)) 0.0))
(setq pty (list (+ x (* 0.0025 scale)) (+ y (* 0.001 scale)) 0.0))
(Maketext ptx 0 xx)
(Maketext pty 90 yy)
(Reinit)
)
(Defun Maketext( diem ang string / etd)
(setq edt (list (cons 0 "text")
(cons 8 "GhichuTD")
(cons 62 5)
(cons 10 diem)
(cons 1 string)
(cons 7 stl)
(cons 40 hi)
(cons 41 wi)
(cons 50 (/ (* ang PI) 180.0))
)
)
(entmake edt)
)

đây là bước làm thủ công pick từng điểm một nó sẽ được như thế này
Hình đã gửi

Thanks!
  • 0

Các bạn mới học LISP vào đây học và cho ý kiến nhé:

http://www.vlisp.blo...-loi-mo-au.html


#2 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 06 April 2012 - 04:10 PM

Mình có lsp chèn mắt lưới toạ độ vào bản vẽ các thao tác của lsp là :
Đầu tiên: chọn Snap and grid điều chỉnh khoảng bao nhiêu tuỳ ý ( theo tỷ lệ vd: tỷ lệ 500 thì sẽ điều chỉnh snap là 50
còn tỷ lệ 1000 thì snap sẽ là 100)
sau đó gọi lệnh của lsp nó sẽ chèn mắt toạ độ từng điểm mình pick vào.

Giờ mình muốn mọi người chỉnh sửa giúp vẽ một đường bao
sau đó gọi lệnh
chọn đường bao
chọn snap là bao nhiêu
lsp sẽ tự động chạy ra các mắt lưới như vậy..
Đây là lsp

đây là bước làm thủ công pick từng điểm một nó sẽ được như thế này
Hình đã gửi

Thanks!

Hề hề hề,
Thật tình chư hiểu ý của bạn là chi.
Cái lisp bạn post lên dâu có cho chọn snap sờ niếc gì đâu . cái scale cũng đã mặc định là 500. Nó chỉ yêu cầu pick điể và nó ghi ra tọa độ tại điểm đó mà thôi.
Cái yêu cầu " lsp sẽ tự động chạy ra các mắt lưới như vậy.." là như thế nào??? bạn có thể nói rõ hơn không???
Phải chăng là bạn cần cái như thế này:


;;;CT chich toa do tren ban do
;;;
(Defun Init()
(setvar "BLIPMODE" 0)
(setvar "CMDECHO" 0)
(setvar "LUPREC" 0)
(setq stl "standard")
(setq scale 500)
(setq hi (* 0.002 scale))
(setq wi 0.9)
)
(Defun Reinit()
(setvar "BLIPMODE" 1)
(setvar "CMDECHO" 1)
(setvar "LUPREC" 4)
(princ)
)
(Defun XY( pt / x y xx yy ptx pty)
(Init)

(setq y (car pt))
(setq x (cadr pt))
(command "_Line"
(list (- y (* 0.0025 scale)) x 0.0)
(list (+ y (* 0.012 scale)) x 0.0) ""
)
(command "_Line"
(list y (- x (* 0.0025 scale)) 0.0)
(list y (+ x (* 0.0025 scale)) 0.0) ""
)
(setq xx (rtos x 2))
(setq yy (rtos y 2))
(setq pt y)
(setq y x)
(setq x pt)
(setq ptx (list (+ x (* 0.001 scale)) (- y (* 0.0025 scale)) 0.0))
(setq pty (list (+ x (* 0.0025 scale)) (+ y (* 0.001 scale)) 0.0))
(Maketext ptx 0 xx)
(Maketext pty 90 yy)
(Reinit)
)
(Defun Maketext( diem ang string / etd)
(setq edt (list (cons 0 "text")
(cons 8 "GhichuTD")
(cons 62 5)
(cons 10 diem)
(cons 1 string)
(cons 7 stl)
(cons 40 hi)
(cons 41 wi)
(cons 50 (/ (* ang PI) 180.0))
)
)
(entmake edt)
)

(defun c:td ()
(setq pl (car (entsel "\n chon duong bao can xac dinh toa do"))
plst (acet-geom-vertex-list pl))
(foreach pt plst
(xy pt)
)
)

Vì không rõ ý bạn nên mình đoán mò vậy, nếu chưa đúng xin chớ trách và hãy post cái đúng bạn cần lên nhé.
Hề hề hề.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#3 nguyentienthanhddksct

nguyentienthanhddksct

    biết vẽ polygon

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

Đã gửi 06 April 2012 - 04:44 PM

Thank bạn.
Cái lsp ở trên chưa đúng ý của mình:
bạn xem qua cái video này thì hiểu liền chỉ hơn 1mb thui
http://www.mediafire...8ro0ot5ahy72kox
  • 0

Các bạn mới học LISP vào đây học và cho ý kiến nhé:

http://www.vlisp.blo...-loi-mo-au.html


#4 nguyentienthanhddksct

nguyentienthanhddksct

    biết vẽ polygon

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

Đã gửi 07 April 2012 - 08:17 AM

Mọi người chỉnh sửa giùm mình với. :huh: :( :( :(
  • 0

Các bạn mới học LISP vào đây học và cho ý kiến nhé:

http://www.vlisp.blo...-loi-mo-au.html


#5 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 07 April 2012 - 08:23 PM

Mọi người chỉnh sửa giùm mình với. :huh: :( :( :(

Hề hề hề,
Trước hết phải nói là bạn gọi là chỉnh sửa nhưng hoàn toàn không phải vậy. Yêu cầu của bạn hoàn toàn khác với cái lisp bạn cung cấp. Có chăng cái lisp đó chỉ làm được duy nhất một việc là ghi tọa độ, còn các công việc khác phải hoàn toàn làm mới bạn ạ.
Từ chỉnh sửa chỉ dùng khi cái lisp của bạn đã cơ bản hoàn thành yêu cầu đặt ra, chỉ còn sai sót chút đỉnh thì mới chỉnh sửa được chứ còn yêu cầu hoàn toàn khác như vậy mà bảo là chỉnh sửa thì bạn coi thường cái việc viết lisp này quá.
Bạn hãy tìm hiểu thêm một chút về lisp sẽ thấy nó không thể đơn giản như bạn suy nghĩ đâu.
Điều thứ hai mình muốn nói với bạn là bạn chỉ nên đưa ra yêu cầu bằng bản vẽ trình bày cụ thể đầu vào bạn có và đầu ra bạn cần. Việc còn lại nên để cho các lisper được quyền tự quyết. Như vậy có lẽ sẽ thuận lợi hơn cho người viết lisp vì những điều bạn nghĩ chưa hẳn đã là cách duy nhất để đạt được tyêu cầu của bạn. Để lisp có thể đúng với yêu cầu của bạn chỉ cần bạn thể hiện rõ những yêu cầu đó bằng bản vẽ là đủ.
Cuối cùng: Sau khi xem cái video bạn gửi, mình cũng thực sự là không hiểu rõ lắm cái yêu cầu của bạn. Tuy nhiên mình cứ đoán mò một chút và dựa vào một số kinh nghiệm của bản thân để viết ra cái lisp sau, trong đó có sử dụng một phần cái lisp bạn gửi để ghi tọa độ theo kiểu của bạn quen dùng. Có thể nó chưa hoàn toàn đáp ứng yêu cầu của bạn, song bạn hãy dùng thử và nếu thấy cần bổ sung gì thì post lên mình sẽ chỉnh sửa lại.
Hy vọng bạn sẽ dùng được.


(defun c:gcoor (/ oldos k k1 p pl pls1 pmin pmax plst sc sh p1el ss1 ssl1 ssl2)
(vl-load-com)
(command "undo" "be")
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq k (getint "\n nhap ty le ban do: ")
k1 (/ k 10) )
;;; Ve duong bao
(command "pline")
(While (setq p (getpoint "\n chon lan luot cac dinh cua duong bao"))
(command p)
)
(command "c")
(setq pl (entlast)
pls1 (acet-ent-geomextents pl)
pmin (list (* (1- (fix (/ (caar pls1) k1))) k1) (* (1- (fix (/ (cadar pls1) k1))) k1))
pmax (list (* (1+ (fix (/ (caadr pls1) k1))) k1) (* (1+ (fix (/ (cadadr pls1) k1))) k1))
)
;;;;;;
Tao danh sach diem grid
(setq plst (list pmin)
sc 1)
(while (<= (+ (car pmin) (* sc k1)) (car pmax))
(setq p (list (+ (car pmin) (* sc k1)) (cadr pmin))
plst (append plst (list p))
sc (1+ sc)
)
)
(foreach p plst
(setq sh 1)
(while (<= (+ (cadr p) (* sh k1)) (cadr pmax))
(setq p1 (list (car p) (+ (cadr p) (* sh k1)))
plst (append plst (list p1))
sh (1+ sh)
)
)
)
plst
;;;;;;;;;;; Tao grid
(setq el (entlast)
ss1 (ssadd))
(foreach p plst
(xy p)
)
;;;; Loc grid
(while (setq el (entnext el))
(setq ss1 (ssadd el ss1))
)
(setq ssl1 (acet-ss-to-list ss1))
(setq ssl2 (acet-ss-to-list (ssget "cp" (acet-geom-vertex-list pl) )))
(foreach x ssl1
(if (not (member x ssl2))
(entdel x)
)
)


(setvar "osmode" oldos)
(command "undo" "e")
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;CT chich toa do tren ban do
;;;
(Defun Init()
(setvar "BLIPMODE" 0)
(setvar "CMDECHO" 0)
(setvar "LUPREC" 0)
(setq stl "standard")
(setq scale 500)
(setq hi (* 0.002 scale))
(setq wi 0.9)
)
(Defun Reinit()
(setvar "BLIPMODE" 1)
(setvar "CMDECHO" 1)
(setvar "LUPREC" 4)
(princ)
)
(Defun XY( pt / x y xx yy ptx pty)
(Init)

(setq y (car pt))
(setq x (cadr pt))
(command "_Line"
(list (- y (* 0.0025 scale)) x 0.0)
(list (+ y (* 0.012 scale)) x 0.0) ""
)
(command "_Line"
(list y (- x (* 0.0025 scale)) 0.0)
(list y (+ x (* 0.0025 scale)) 0.0) ""
)
(setq xx (rtos x 2))
(setq yy (rtos y 2))
(setq pt y)
(setq y x)
(setq x pt)
(setq ptx (list (+ x (* 0.001 scale)) (- y (* 0.0025 scale)) 0.0))
(setq pty (list (+ x (* 0.0025 scale)) (+ y (* 0.001 scale)) 0.0))
(Maketext ptx 0 xx)
(Maketext pty 90 yy)
(Reinit)
)
(Defun Maketext( diem ang string / etd)
(setq edt (list (cons 0 "text")
(cons 8 "GhichuTD")
(cons 62 5)
(cons 10 diem)
(cons 1 string)
(cons 7 stl)
(cons 40 hi)
(cons 41 wi)
(cons 50 (/ (* ang PI) 180.0))
)
)
(entmake edt)
)
Chúc bạn vui.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#6 nguyentienthanhddksct

nguyentienthanhddksct

    biết vẽ polygon

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

Đã gửi 07 April 2012 - 11:08 PM

Không biết nói thế nào hơn: Thanks bạn nhìu nhìu nhìu>
Bạn viết đúng theo ý của mình rùi đó:
Sau khi test thử lsp của bạn mình muốn chính sửa như sau:
+Có thể chọn luôn đường bao (pick chuột vào đường bào) chứ không pick từng đỉnh đường bao một
+có thể thêm là hỏi chiều cao chữ được ko?
+ lisp hiện tại chỉ hiện đường line theo trục x không hiển thị đường line trục y. và có một số các điểm toạ độ gần đường bao không có đường line. bạn sửa lại là hiển thị đường line cả trục x và trục y như lsp cũ của mình được ko.
+ Lisp này hình như ko chạy được trên cad 2004 bạn có thể cho nó chạy trên các đời cad gium mình với.
  • 0

Các bạn mới học LISP vào đây học và cho ý kiến nhé:

http://www.vlisp.blo...-loi-mo-au.html


#7 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 08 April 2012 - 12:42 AM

Không biết nói thế nào hơn: Thanks bạn nhìu nhìu nhìu>
Bạn viết đúng theo ý của mình rùi đó:
Sau khi test thử lsp của bạn mình muốn chính sửa như sau:
+Có thể chọn luôn đường bao (pick chuột vào đường bào) chứ không pick từng đỉnh đường bao một
+có thể thêm là hỏi chiều cao chữ được ko?
+ lisp hiện tại chỉ hiện đường line theo trục x không hiển thị đường line trục y. và có một số các điểm toạ độ gần đường bao không có đường line. bạn sửa lại là hiển thị đường line cả trục x và trục y như lsp cũ của mình được ko.
+ Lisp này hình như ko chạy được trên cad 2004 bạn có thể cho nó chạy trên các đời cad gium mình với.

Hề hề hề,
Vậy là đoán mò lại trúng.
1/- Việc mình cho pick các đỉnh của đường bao là do yêu cầu của bạn "Giờ mình muốn mọi người chỉnh sửa giúp vẽ một đường bao"
Bây giờ bạn muốn pick chọn vào đường bao thì đường bao này bạn phải thiết lập trước. Khi đó bạn mới có thể pick chọn nó được.
Muốn vậy bạn thay đoạn code vẽ đường bao :
;;; Ve duong bao
(command "pline")
(While (setq p (getpoint "\n chon lan luot cac dinh cua duong bao"))
(command p) )
(command "c")
(setq pl (entlast)
pls1 (acet-ent-geomextents pl)
pmin (list (* (1- (fix (/ (caar pls1) k1))) k1) (* (1- (fix (/ (cadar pls1) k1))) k1))
pmax (list (* (1+ (fix (/ (caadr pls1) k1))) k1) (* (1+ (fix (/ (cadadr pls1) k1))) k1)) )
bằng dòng code chọn đường bao như sau:
;;;; Chon duong bao
(setq pl (car (entsel "\n Pick chon duong bao"))
pls1 (acet-ent-geomextents pl)
pmin (list (* (1- (fix (/ (caar pls1) k1))) k1) (* (1- (fix (/ (cadar pls1) k1))) k1))
pmax (list (* (1+ (fix (/ (caadr pls1) k1))) k1) (* (1+ (fix (/ (cadadr pls1) k1))) k1)) )
2/- 3/- Mình sử dụng đoạn lisp của bạn để ghi ra tọa độ và vẽ các line đánh dấu điểm. Do vậy không thể có chuyện lisp không vẽ đường line theo trục y. Chiều cao text trong lisp bạn gửi cũng như độ dài các đoạn thẳng đánh dấu line cũng hoàn toàn xác định trước như lisp của bạn gửi chứ không hề có việc chọn chiều cao text.
Nay nếu bạn muốn chọn nhập chiếu cao text cũng chả khó chi chỉ cần thay dòng code:
(setq hi (* 0.002 scale))
Bằng dòng code sau:
(setq hi (getreal "\n Nhap gia tri chieu cao text: "))
Bạn hãy phóng to cái điểm ghi tọa độ của bạn lên xem có thấy line theo trục y hay không nhé. Mình tin là có vì mình đã test và thấy nó giống y chang cái hình bạn đả gửi phía trên.
4/- Mình dùng Cad 2004 và các lisp do mình viết đều có thể chạy ngon thì mình mới test được chứ. Việc Cad2004 của bạn không chạy được có thể là do bạn chưa cài Express Tools. Trong lisp có sử dụng các hàm (acet-....) nên nếu bạn không cài bộ Express tools thì nó sẽ không chạy được. Với các CAD đời cao thì có thể cài Express tools ngay từ khi cài CAD, nhưng Cad2004 thì bạn phải cài sau bạn ạ. Bộ Express tools cho CAD 2004 trên diễn đàn có đấy, bạn có thể tìm kiếm , down về và cài nhé.

Chúc bạn vui.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#8 nguyentienthanhddksct

nguyentienthanhddksct

    biết vẽ polygon

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

Đã gửi 08 April 2012 - 02:59 PM

ok. bạn quả là người tài.Lsp chạy ổn rui.
Còn cái chiều cao chữ mình thay
(setq hi (* 0.002 scale))
Bằng dòng code sau:
(setq hi (getreal "\n Nhap gia tri chieu cao text: "))

khi hỏi chiều cao chữ, mình nhập vào thì nó cứ hỏi Nhap gia tri chieu cao text:mình nhập 1 or 2 thì nó vẫn cứ hỏi lại như vậy.
  • 0

Các bạn mới học LISP vào đây học và cho ý kiến nhé:

http://www.vlisp.blo...-loi-mo-au.html


#9 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 09 April 2012 - 01:49 AM

ok. bạn quả là người tài.Lsp chạy ổn rui.
Còn cái chiều cao chữ mình thay
(setq hi (* 0.002 scale))
Bằng dòng code sau:
(setq hi (getreal "\n Nhap gia tri chieu cao text: "))

khi hỏi chiều cao chữ, mình nhập vào thì nó cứ hỏi Nhap gia tri chieu cao text:mình nhập 1 or 2 thì nó vẫn cứ hỏi lại như vậy.

Hề hề hề,
Nó cứ hỏi lại là do đoạn code đó nằm trong hàm con (init) mà mỗi lần ghi tọa độ bằng hàm (xy) lại phải lặp lại nó một lần.
Để tránh điều này bạn có thể đưa các hàm con (init) và (reinit) ra khỏi hàm con (xy) và đặt hàm (init) ở đầu hàm chính hàm (reinit) ở cuối hàm chính là ổn. Cụ thể như sau:


(defun c:gcoor (/ oldos k k1 p pl pls1 pmin pmax plst sc sh p1el ss1 ssl1 ssl2)
(Init)
(vl-load-com)
(command "undo" "be")
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq k (getint "\n nhap ty le ban do: ")
k1 (/ k 10) )
;;; Ve duong bao
;;;(command "pline")
;;;(While (setq p (getpoint "\n chon lan luot cac dinh cua duong bao"))
;;; (command p)
;;;)
;;;(command "c")
(setq pl (car (entsel "\n Pick chon duong bao " ))
pls1 (acet-ent-geomextents pl)
pmin (list (* (1- (fix (/ (caar pls1) k1))) k1) (* (1- (fix (/ (cadar pls1) k1))) k1))
pmax (list (* (1+ (fix (/ (caadr pls1) k1))) k1) (* (1+ (fix (/ (cadadr pls1) k1))) k1))
)
;;;;;;Tao danh sach diem grid
(setq plst (list pmin)
sc 1)
(while (<= (+ (car pmin) (* sc k1)) (car pmax))
(setq p (list (+ (car pmin) (* sc k1)) (cadr pmin))
plst (append plst (list p))
sc (1+ sc)
)
)
(foreach p plst
(setq sh 1)
(while (<= (+ (cadr p) (* sh k1)) (cadr pmax))
(setq p1 (list (car p) (+ (cadr p) (* sh k1)))
plst (append plst (list p1))
sh (1+ sh)
)
)
)
plst
;;;;;;;;;;; Tao grid
(setq el (entlast)
ss1 (ssadd))
(foreach p plst
(xy p)
)
;;;; Loc grid
(while (setq el (entnext el))
(setq ss1 (ssadd el ss1))
)
(setq ssl1 (acet-ss-to-list ss1))
(setq ssl2 (acet-ss-to-list (ssget "cp" (acet-geom-vertex-list pl) )))
(foreach x ssl1
(if (not (member x ssl2))
(entdel x)
)
)


(setvar "osmode" oldos)
(command "undo" "e")
(Reinit)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;CT chich toa do tren ban do
;;;
(Defun Init()
(setvar "BLIPMODE" 0)
(setvar "CMDECHO" 0)
(setvar "LUPREC" 0)
(setq stl "standard")
(setq scale 500)
(setq hi (getreal "\n Nhap gia tri chieu cao text: "))
(setq wi 0.9)
)
(Defun Reinit()
(setvar "BLIPMODE" 1)
(setvar "CMDECHO" 1)
(setvar "LUPREC" 4)
(princ)
)
(Defun XY( pt / x y xx yy ptx pty)


(setq y (car pt))
(setq x (cadr pt))
(command "_Line"
(list (- y (* 0.0025 scale)) x 0.0)
(list (+ y (* 0.012 scale)) x 0.0) ""
)
(command "_Line"
(list y (- x (* 0.0025 scale)) 0.0)
(list y (+ x (* 0.0025 scale)) 0.0) ""
)
(setq xx (rtos x 2))
(setq yy (rtos y 2))
(setq pt y)
(setq y x)
(setq x pt)
(setq ptx (list (+ x (* 0.001 scale)) (- y (* 0.0025 scale)) 0.0))
(setq pty (list (+ x (* 0.0025 scale)) (+ y (* 0.001 scale)) 0.0))
(Maketext ptx 0 xx)
(Maketext pty 90 yy)

)
(Defun Maketext( diem ang string / etd)
(setq edt (list (cons 0 "text")
(cons 8 "GhichuTD")
(cons 62 5)
(cons 10 diem)
(cons 1 string)
(cons 7 stl)
(cons 40 hi)
(cons 41 wi)
(cons 50 (/ (* ang PI) 180.0))
)
)
(entmake edt)
)
Chúc bạn vui.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#10 nguyentienthanhddksct

nguyentienthanhddksct

    biết vẽ polygon

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

Đã gửi 09 April 2012 - 08:46 AM

Thanks!
Sau khi sử dụng lisp mình gặp phải vấn đề sau:
chạy lisp ở tỷ lệ 1/500 để chiều cao text là 1 thì không có vấn đề gì.
nhưng khi ở tỷ lệ 1/1000 để chiều cao text là 2 cho đúng kích thước với tỷ lệ thì 2 đường line nó vẫn nhỏ như ở tỷ lệ 1/500. còn text tọa độ thì nó lớn hơn và bị đè lện nhau.
Hình đã gửi
Ở lsp cor cũ của mình mỗi khi sử dụng thì mình thay tỷ lệ ở dòng
(setq scale 5000)
VD: tỷ lệ 1/500 thay là 500 chiều cao chữ là 1
1/1000 thay là 1000 chiều cao chữ là 2
1/2000 thay là 2000 chiều cao chữ là 4
khi thay tỷ lệ vào thì lsp tự động đổi chiều cao chữ và 2 line thay đổi phù hợp với text tọa độ.

Bản chỉnh sửa giúp mình khi nhập chiều cao text thì 2 line sẽ tự động thay đổi cho phù hợp với text.
Thanks!
  • 0

Các bạn mới học LISP vào đây học và cho ý kiến nhé:

http://www.vlisp.blo...-loi-mo-au.html


#11 KangKung

KangKung

    biết lệnh array

  • Members
  • PipPipPip
  • 189 Bài viết
Điểm đánh giá: 227 (khá)

Đã gửi 09 April 2012 - 10:53 AM

Bạn dùng Lisp này thử xem sao

http://www.mediafire.com/?1cwaxbv1tvc5ina

Hướng dẫn:
1. Download và giải nén file "VE_LUOI_TOA_DO.zip"
2. Copy file "VE_LUOI_TOA_DO.DCL" vào thư mục "C:\Program Files\AutoCAD 2004\Support"

Chúc bạn vui vẻ.
  • 1

#12 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 09 April 2012 - 11:14 AM

Thanks!
Sau khi sử dụng lisp mình gặp phải vấn đề sau:
chạy lisp ở tỷ lệ 1/500 để chiều cao text là 1 thì không có vấn đề gì.
nhưng khi ở tỷ lệ 1/1000 để chiều cao text là 2 cho đúng kích thước với tỷ lệ thì 2 đường line nó vẫn nhỏ như ở tỷ lệ 1/500. còn text tọa độ thì nó lớn hơn và bị đè lện nhau.


Ở lsp cor cũ của mình mỗi khi sử dụng thì mình thay tỷ lệ ở dòng
(setq scale 5000)
VD: tỷ lệ 1/500 thay là 500 chiều cao chữ là 1
1/1000 thay là 1000 chiều cao chữ là 2
1/2000 thay là 2000 chiều cao chữ là 4
khi thay tỷ lệ vào thì lsp tự động đổi chiều cao chữ và 2 line thay đổi phù hợp với text tọa độ.

Bản chỉnh sửa giúp mình khi nhập chiều cao text thì 2 line sẽ tự động thay đổi cho phù hợp với text.
Thanks!

Hề hề hề,
Như mình đã nói từ trước là mình giữ nguyên cách nhập tọa độ của bạn mà không thay đổi gì. Sau đó bạn lại yêu cầu chỉ thay chiều cao text nên mới có cái sự này. Để làm như cũ thì rất đơn giản là bạn trả cái dòng code (setq hi (getreal "\n Nhap gia tri chieu cao text: ")) thành (setq hi (* 0.002 scale)) và thay dòng code (setq scale 500) bằng đoạn code .
(setq k (getint "\n nhap ty le ban do: ") k1 (/ k 10) ) (setq scale k)
Đồng thời xóa đoạn code (setq k (getint "\n nhap ty le ban do: ") k1 (/ k 10) ) trong hàm chính
Chúc bạn vui.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#13 nguyentienthanhddksct

nguyentienthanhddksct

    biết vẽ polygon

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

Đã gửi 09 April 2012 - 11:56 AM

Hề hề hề,
Như mình đã nói từ trước là mình giữ nguyên cách nhập tọa độ của bạn mà không thay đổi gì. Sau đó bạn lại yêu cầu chỉ thay chiều cao text nên mới có cái sự này. Để làm như cũ thì rất đơn giản là bạn trả cái dòng code (setq hi (getreal "\n Nhap gia tri chieu cao text: ")) thành (setq hi (* 0.002 scale)) và thay dòng code (setq scale 500) bằng đoạn code .
(setq k (getint "\n nhap ty le ban do: ") k1 (/ k 10) ) (setq scale k)
Đồng thời xóa đoạn code (setq k (getint "\n nhap ty le ban do: ") k1 (/ k 10) ) trong hàm chính
Chúc bạn vui.



OK
Lisp đã như ý muốn.
Từ giờ tiết kiệm được nhiều time rùi.

À Còn điều này nữa, hình như lisp này khi chọn đường bao mà trong đó có Arc nó không vẽ theo thì phải.
giờ muốn chọn đường bao có cả Arc trong đó thì làm thế nào bạn nhỉ?
Thanks
  • 0

Các bạn mới học LISP vào đây học và cho ý kiến nhé:

http://www.vlisp.blo...-loi-mo-au.html


#14 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 09 April 2012 - 01:54 PM

OK Lisp đã như ý muốn. Từ giờ tiết kiệm được nhiều time rùi. À Còn điều này nữa, hình như lisp này khi chọn đường bao mà trong đó có Arc nó không vẽ theo thì phải. giờ muốn chọn đường bao có cả Arc trong đó thì làm thế nào bạn nhỉ? Thanks

Hề hề hề,
Nếu muốn chơi cả các pline cong thì bạn thay đoạn code sau:

(setq ppl (list)
par 0
pob (vlax-ename->vla-object pl) )
(while (<= par (vlax-curve-getendparam pob))
(setq pa (vlax-curve-getpointatparam pob par)
ppl (append ppl (list pa))
par (+ par 0.1)
)
)
(setq ssl2 (acet-ss-to-list (ssget "cp" ppl )))
vào dòng code:
(setq ssl2 (acet-ss-to-list (ssget "cp" (acet-geom-vertex-list pl) )))

Hy vọng bạn hài lòng.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#15 nguyentienthanhddksct

nguyentienthanhddksct

    biết vẽ polygon

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

Đã gửi 09 April 2012 - 03:02 PM

Thanks! Đã xong.Lsp chạy tuyệt vời trên cả tuyệt vời rùi bạn.
Đúng là không có gì là không thể. chỉ có thể là mình không biết.
  • 0

Các bạn mới học LISP vào đây học và cho ý kiến nhé:

http://www.vlisp.blo...-loi-mo-au.html


#16 buivanha290

buivanha290

    Chưa sử dụng CAD

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

Đã gửi 18 September 2012 - 04:11 PM

ban chi lai cac buoc su dung cua gcoor voi
  • 0