Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
nguyentienthanhddksct

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

Các bài được khuyến nghị

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

ffb24373e25564a560efedb10265628f_43068092.t11.jpg

 

Thanks!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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

ffb24373e25564a560efedb10265628f_43068092.t11.jpg

 

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

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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.

c7c9a33c938fcbdfefbc11580790573f_43189525.t21.jpg

Ở 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!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×