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.
Nguyen Hoanh

Viết Lisp theo yêu cầu

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

Đó là do bạn chưa chọn đường chuẩn. Có lẽ bạn nên thêm 1 số thông báo lỗi cho dễ sử dụng hơn vì trong lisp trên, nếu không có text, điểm gốc hoặc đường chuẩn thì chương trình tự động thoát.

cảm ơn ndtnv !

mình thử rồi nhưng kô đc bạn ah,

 

- mình đánh lệnh "dsc" lisp sẽ hỏi "chọn đối tượng và text" -----> mình chọn đối tượng và text rồi enter lẽ ra nó sẽ hỏi là chọn đường chuẩn, nhưng mà đây nó lại chả hỏi j cả mà thoát luôn. thế mới lạ :cheers:

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
svba1608    624

Các bác ơi, cho em hỏi: có lisp nào hay lệnh nào giúp xoá toàn bộ vùng được chọn không nhỉ. Như thể là: giờ em có bản vẽ một ngôi nhà 10 tầng, muốn xoá đi 4 tầng một cách nhanh nhất vậy. Nhờ các bác chỉ cho.

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
haanh    1.586
Các bác ơi, cho em hỏi: có lisp nào hay lệnh nào giúp xoá toàn bộ vùng được chọn không nhỉ. Như thể là: giờ em có bản vẽ một ngôi nhà 10 tầng, muốn xoá đi 4 tầng một cách nhanh nhất vậy. Nhờ các bác chỉ cho.

 

Tức là tạm thời ẩn hết vùng xung quanh, chỉ hiển thị đối tượng được chọn. Giống như lệnh layiso ấy mà, chỉ khác ở đây là đối tượng mà thôi. Thực ra nếu có thể thì lisp này cũng không hữu dụng lắm, chỉ đối với máy có cấu hình hơi yếu thì nếu làm việc với một phần bản vễ sẽ nhẹ hơn thôi.

 

Bác xem bài viết này xem có áp dụng được không?

 

http://www.cadviet.com/cadtips/1351_Co_Lis...g_duoc_chon/69/

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
ndtnv    397
cảm ơn ndtnv !

mình thử rồi nhưng kô đc bạn ah,

 

- mình đánh lệnh "dsc" lisp sẽ hỏi "chọn đối tượng và text" -----> mình chọn đối tượng và text rồi enter lẽ ra nó sẽ hỏi là chọn đường chuẩn, nhưng mà đây nó lại chả hỏi j cả mà thoát luôn. thế mới lạ :cheers:

Mình đã thử với tất cả các đường trong các bản vẽ của bạn thì đều ổn cả.

Bạn thử lại lisp cũ cho đường pline, nếu ổn thì sửa thủ công theo cách này.

Nếu Bạn copy vào 1 file mới thì Lisp mới chỉ sửa 4 chỗ sau:

Dòng 3: "T2/l1-" => "T1/l1-"

 

Dòng 38: (setq d0 (+ d0 d) )

=> (setq d0 (+ d0 d) i (fix (abs (/ len d))))

Dòng 39 : (while (setq p1 (vlax-curve-getpointatdist plObj d0))

=> (while (and (> i 0) (setq p1 (vlax-curve-getpointatdist plObj d0)))

Dòng 46: (setq d0 (+ d0 d) p0 p1 a0 a1)

=> (setq d0 (+ d0 d) p0 p1 a0 a1 i (1- i))

 

Như vậy thì nếu việc thoát luôn là hơi vô lý vì chương trình chưa chạy đến chỗ sửa

Nếu còn lỗi thì gửi bản vẽ vào ndtnve@yahoo.com

  • Vote tăng 2

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
phamthanhbinh    3.123
Các bác ơi, cho em hỏi: có lisp nào hay lệnh nào giúp xoá toàn bộ vùng được chọn không nhỉ. Như thể là: giờ em có bản vẽ một ngôi nhà 10 tầng, muốn xoá đi 4 tầng một cách nhanh nhất vậy. Nhờ các bác chỉ cho.

Chào bạn SVBA1608,

Có đấy bạn, lệnh Erase trong Cad cho phép bạn chọn đối tượng bằng cửa sổ rồi Enter cái phạch là nó đi hết chả nể bố con thằng nào bạn ạ.

Bạn thử xem có đúng ý bạn không nhé.

  • 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
tucdrom    642
Chào bạn SVBA1608,

Có đấy bạn, lệnh Erase trong Cad cho phép bạn chọn đối tượng bằng cửa sổ rồi Enter cái phạch là nó đi hết chả nể bố con thằng nào bạn ạ.

Bạn thử xem có đúng ý bạn không nhé.

Câu trả lời rất thật,hay và chính xác.Chuẩn ko cần chỉnh!!

:cheers:

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
phamthanhbinh    3.123
Mình đã thử với tất cả các đường trong các bản vẽ của bạn thì đều ổn cả.

Bạn thử lại lisp cũ cho đường pline, nếu ổn thì sửa thủ công theo cách này.

Nếu Bạn copy vào 1 file mới thì Lisp mới chỉ sửa 4 chỗ sau:

Dòng 3: "T2/l1-" => "T1/l1-"

 

Dòng 38: (setq d0 (+ d0 d) )

=> (setq d0 (+ d0 d) i (fix (abs (/ len d))))

Dòng 39 : (while (setq p1 (vlax-curve-getpointatdist plObj d0))

=> (while (and (> i 0) (setq p1 (vlax-curve-getpointatdist plObj d0)))

Dòng 46: (setq d0 (+ d0 d) p0 p1 a0 a1)

=> (setq d0 (+ d0 d) p0 p1 a0 a1 i (1- i))

 

Như vậy thì nếu việc thoát luôn là hơi vô lý vì chương trình chưa chạy đến chỗ sửa

Nếu còn lỗi thì gửi bản vẽ vào ndtnve@yahoo.com

Chào bác ndtvn,

Bác thử kiểm tra lại xem, hình như lỗi là cái chỗ này bác ạ:

(if (= "TEXT" (GetDxf 0 e))

(progn (TachTen (GetDxf 1 e)) (setq k i) );;; Đóng hàm progn

) ;;; Đóng hàm if

) ;;; Ngoặc dư

Do dư một cái ngoặc đóng nên lisp nó tưởng là bác bắt nó dừng lại nên không chịu chạy tiếp xuống thằng chọn đường chuẩn bác ạ.

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
ndtnv    397
Chào bác ndtvn,

Bác thử kiểm tra lại xem, hình như lỗi là cái chỗ này bác ạ:

(if (= "TEXT" (GetDxf 0 e))

(progn (TachTen (GetDxf 1 e)) (setq k i) );;; Đóng hàm progn

) ;;; Đóng hàm if

) ;;; Ngoặc dư

Do dư một cái ngoặc đóng nên lisp nó tưởng là bác bắt nó dừng lại nên không chịu chạy tiếp xuống thằng chọn đường chuẩn bác ạ.

Mình đã không sửa gì ở đoạn đó cả, bạn thử để 2 cửa sổ lisp cũ và mới cạnh nhau hoặc chương trình copare nào đó (như là Norton Commander hay Total Norton Commander ) để kiểm tra thì thấy rõ ngay

Ngoặc đó là của

(repeat (sslength ss)

Nếu xoá ngoặc đó thì khi load sẽ hiện lên

error: malformed list on input

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
phamthanhbinh    3.123
Mình đã không sửa gì ở đoạn đó cả, bạn thử để 2 cửa sổ lisp cũ và mới cạnh nhau hoặc chương trình copare nào đó (như là Norton Commander hay Total Norton Commander ) để kiểm tra thì thấy rõ ngay

Ngoặc đó là của

(repeat (sslength ss)

Nếu xoá ngoặc đó thì khi load sẽ hiện lên

error: malformed list on input

Ồ, xin lỗi bác ndtvn, mình nhầm rồi. Tại vì mình đọc chưa kỹ bác ạ. Mới dò cái if mà chưa kiểm lại thằng repeat. Bác đừng giận nha, mình còn đang học mót mà. Khi thấy nói là lỗi ở chỗ trước khi chọn đường chuẩn nên mình mò vào đó tìm luôn, thấy chỗ đó là vội post lên không kiểm kỹ lại toàn bộ bác ạ. Một lần nữa mong bác tha thứ về cái tội lốp chốp nhé.

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
ndtnv    397
Ồ, xin lỗi bác ndtvn, mình nhầm rồi. Tại vì mình đọc chưa kỹ bác ạ. Mới dò cái if mà chưa kiểm lại thằng repeat. Bác đừng giận nha, mình còn đang học mót mà. Khi thấy nói là lỗi ở chỗ trước khi chọn đường chuẩn nên mình mò vào đó tìm luôn, thấy chỗ đó là vội post lên không kiểm kỹ lại toàn bộ bác ạ. Một lần nữa mong bác tha thứ về cái tội lốp chốp nhé.

Không sao đâu, mình biết bạn cũng là vì giúp người khác trong diễn đàn mà thôi.

Cứ gọi bạn là được rồi vì dù sao thì mình cũng nhỏ tuổi hơn bạn. Bạn thử nhớ xem trong buổi gặp mặt Autodesk năm ngoái thì mình là ai không?. Hôm nào rãnh sẽ gặp lại nhé.

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
svba1608    624
Chào bạn SVBA1608,

Có đấy bạn, lệnh Erase trong Cad cho phép bạn chọn đối tượng bằng cửa sổ rồi Enter cái phạch là nó đi hết chả nể bố con thằng nào bạn ạ.

Bạn thử xem có đúng ý bạn không nhé.

 

Bác phamthanhbinh ới ời! Bác toàn có những câu trả lời khiến cho người ta không cười không được. Cảm ơn bác đã chỉ. Nhưng ý em muốn nói là vừa xoá vừa trim cơ. Tức là nếu có một đối tượng vừa nằm trong, vừa nằm ngoài vùng được chọn thì chỉ xoá phần nằm trong, còn phần đối tượng nằm ngoài vẫn giữ nguyên.

Thực ra em cũng tìm ra câu trả lời rồi. Em xoá thủ công 1 ít, còn lại dùng Mylisp của bác tnmtpc để dọn dẹp nốt.

"Autolisp thật là tuyệt vời!". Cảm ơn tnmtpc, cảm ơn diễn đàn Cadviet! :cheers:

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
haanh    1.586
Bác phamthanhbinh ới ời! Bác toàn có những câu trả lời khiến cho người ta không cười không được. Cảm ơn bác đã chỉ. Nhưng ý em muốn nói là vừa xoá vừa trim cơ. Tức là nếu có một đối tượng vừa nằm trong, vừa nằm ngoài vùng được chọn thì chỉ xoá phần nằm trong, còn phần đối tượng nằm ngoài vẫn giữ nguyên.

Thực ra em cũng tìm ra câu trả lời rồi. Em xoá thủ công 1 ít, còn lại dùng Mylisp của bác tnmtpc để dọn dẹp nốt.

"Autolisp thật là tuyệt vời!". Cảm ơn tnmtpc, cảm ơn diễn đàn Cadviet! :cheers:

 

Theo "đuôi học mót" theo bác Bình cứ gọi là cười mỏi ...răng

 

Bác xem bài viết này thử xem

 

Cắt cúp đối tượng,

http://www.cadviet.com/forum/index.php?showtopic=615

 

Cắt cúp đối tượng, Theo một vùng

http://www.cadviet.com/cadtips/615_Cat_cup_doi_tuong/4/

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
thanchau_vn    0

Mình đang cần lệnh tính chiều dài của 1 pline cộng thêm 1 số bất kỳ nữa ai có thể giúp mình viết thế nào với ! quan trọng lắm nếu không có thì ngồi cả tuần cũng ko xong! thank các bác trước nhé! diễn đàn nay hay quá!

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
thanchau_vn    0

Em cũng đang cần 1 lips tính diện tích giới hạn bởi các layer nữa ! các giúp em cả hai lips trên suất ra text luôn với nhé! chắc em phải học cách viết lips thô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
thanchau_vn    0

(defun C:LL ( / sss s oslast he_so pt1 pt2 en elst)

(setq he_so (/ 1000.0 Ty_le))

(print)

(setq oslast (getvar "OSMODE"))

(setvar "osmode" 33)

(setq s 0.0

i 1)

(princ (strcat "* Doan" (rtos i 2 0) "\n"))

(setq pt1 (getpoint "From : "))

(if (= pt1 nil) (setq pt2 nil) (setq pt2 (getpoint "To : " PT1)))

(while (/= pt2 nil)

(while (/= pt2 nil)

(setq s (+ s (distance pt1 pt2)))

(setq pt1 pt2)

(setq pt2 (getpoint "To : " PT1))

)

(setq i (1+ i))

(princ (strcat "* Doan" (rtos i 2 0) "\n"))

(setq pt1 (getpoint "From : "))

(if (= pt1 nil) (setq pt2 nil) (setq pt2 (getpoint "To : " PT1)))

)

;

(setq sss (/ s he_so))

(print sss)

(setq en (car (entsel "Thay cho so : ")))

(setq elst (entget en))

(setq elst (subst (cons 1 (rtos sss 2 2)) (assoc 1 elst) elst))

(entmod elst)

(setvar "OSMODE" oslast)

)

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
Tue_NV    3.841
Mình đang cần lệnh tính chiều dài của 1 pline cộng thêm 1 số bất kỳ nữa ai có thể giúp mình viết thế nào với ! quan trọng lắm nếu không có thì ngồi cả tuần cũng ko xong! thank các bác trước nhé! diễn đàn nay hay quá!

Đây bạn :

;;;--------------------------------------------------------------------
(defun Length1(e) (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)))
;;;--------------------------------------------------------------------
(defun C:TL( / ss L e so so1)
(setq
ss (ssget (list (cons 0 "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")))
L 0.0
)
(if (not so) (setq so 1000))

(setq so1 (getreal (strcat "\nNhap so can cong  :")))

(if (not so1) (setq so1 so) (setq so so1))


(vl-load-com)
(while (setq e (ssname ss 0))
(setq L (+ L (length1 e)))
(ssdel e ss)
)
(setq soo (+ so1 L))
(alert (strcat "Total length = " (rtos soo)))
)
;;;--------------------------------------------------------------------

Em cũng đang cần 1 lips tính diện tích giới hạn bởi các layer nữa ! các giúp em cả hai lips trên suất ra text luôn với nhé! chắc em phải học cách viết lips thôi!

Bạn nói rõ hơn ý của bạn nhé. Chưa hiểu ý. Hãy post file .dwg lên đây và nói rõ ý của bạn.

Mọi người sẽ giúp bạn

  • 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
Phiphi-    175
Đây bạn :

;;;--------------------------------------------------------------------
(defun Length1(e) (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)))
;;;--------------------------------------------------------------------
(defun C:TL( / ss L e so so1)
(setq
ss (ssget (list (cons 0 "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")))
L 0.0
)
(if (not so) (setq so 1000))

(setq so1 (getreal (strcat "\nNhap so can cong <" (rtos so) "> :")))

(if (not so1) (setq so1 so) (setq so so1))
(vl-load-com)
(while (setq e (ssname ss 0))
(setq L (+ L (length1 e)))
(ssdel e ss)
)
(setq soo (+ so1 L))
(alert (strcat "Total length = " (rtos soo)))
)
;;;--------------------------------------------------------------------

Bác Tue_NV hãy bổ xung Lisp trên để cho phép khỏi phải nhập (số vừa cộng thêm) nếu lặp lại cho các đối tượng khác. Thank you.

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
Tue_NV    3.841
Bác Tue_NV hãy bổ xung Lisp trên để cho phép khỏi phải nhập (số vừa cộng thêm) nếu lặp lại cho các đối tượng khác. Thank you.

Ý của bạn là sao? Chưa hiểu ý. Bạn hãy nói rõ ý của bạn nhé.

Trong Lisp đã bổ sung giá trị số cộng thêm (đặt trong dấu móc ) Nếu chấp nhận giá trị cộng thêm trước đó thì user chỉ cần Nhấn Enter, còn user muốn nhập giá trị cộng thêm mới thì nhập vào và giá trị này lưu lại cho mỗi lần sử dụng về sau.

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
ph168xd    310

Nhiều bài viết qua nên cũng ko biết đã ai viết lish này chưa nữa.Mong các bác thông cảm nếu hỏi 2 lần

Mình đang cần lish chỉnh tỷ lệ của khung viewport.

VD.

Trong layout Khi muốn nhập tỷ lệ cho khung viewporrt thì thường mất công vào bảng

ctrl+1 để điều chỉnh tỷ lệ

Giờ mình cần lish ....Cần tỷ lệ của khung viewport là custom scale =3

thì nhập lệnh tắt-> chọn khung view -> ok

Lúc đó khung đã đc chọn sẽ có tỷ lệ phóng lên 3 lần

Anh em ai có mong giúp.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.rduong    0

Hi all !

Mình đang cần lisp check snap cho text

Cụ thể như sau : + Text để ở chế độ Middle center bắt snap vào Line center

Nếu vị trí nào chưa snap lisp sẽ báo lỗi bằng Point

Ảnh minh hoạ :http://www.cadviet.com/upfiles/textsnap_1.jpg

File demo :http://www.cadviet.com/upfiles/textsnap_1.jpg

 

Hi all !

Mình đang cần lisp check snap cho text nho cac ban giup

Cụ thể như sau : + Text để ở chế độ Middle center bắt snap vào Line center

Nếu vị trí nào chưa snap lisp sẽ báo lỗi bằng Point

Ảnh minh hoạ :textsnap_1.jpg

File demo :http://www.cadviet.com/upfiles/textsnap_1.jpg

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
Tue_NV    3.841
Hi all !

Mình đang cần lisp check snap cho text nho cac ban giup

Cụ thể như sau : + Text để ở chế độ Middle center bắt snap vào Line center

Nếu vị trí nào chưa snap lisp sẽ báo lỗi bằng Point

Ảnh minh hoạ :textsnap_1.jpg

File demo :http://www.cadviet.com/upfiles/textsnap_1.jpg

Bạn dùng thử đoạn Code này xem sao nhé :

(defun c:btd()
(setvar "Pdmode" 2)
(setvar "Pdsize" 200)
(Command "undo" "BEgin")
(vl-load-com)
(setq curve (car(entsel "\n Chon duong :")))
(while (null curve) (setq curve (car(entsel "\n Chon lai duong :"))))
(prompt "\n Chon Text : ")
(setq ss (ssget '((0 . "TEXT"))))
(Command "justifytext" ss "" "MC")
(setq n (sslength ss)
i 0)

(while ((setq sn (ssname ss i))
(setq ent (entget sn))
(setq po1 (cdr(assoc 11 ent)))
(setq po2 (vlax-curve-getClosestPointTo curve po1))
(setq dis (distance po1 po2))
(if (/= dis 0) (Command "point" po1))
(setq i (1+ i))
)
(setvar "Pdmode" 0)
(Command "undo" "END")
(Princ)
 )

Chúc thành công :cheers:

  • Vote tăng 2

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.rduong    0

Chào bạn Tue_NV

 

Mình test lisp ! khi chạy nó chỉ ra các điểm Middle Center chứ không tìm lỗi . Ý mình muốn là lisp chỉ bắt lỗi khi có text chưa snap vào line và tạo point ở những chỗ đó . Bạn xem lại giúp mình nhé !

(defun c:btd()

(setvar "Pdmode" 2)

(setvar "Pdsize" 200)

(Command "undo" "BEgin")

(vl-load-com)

(setq curve (car(entsel "\n Chon duong :")))

(while (null curve) (setq curve (car(entsel "\n Chon lai duong :"))))

(prompt "\n Chon Text : ")

(setq ss (ssget '((0 . "TEXT"))))

(Command "justifytext" ss "" "MC")

(setq n (sslength ss)

i 0)

 

(while (<= i n)

(setq sn (ssname ss i))

(setq ent (entget sn))

(setq po1 (cdr(assoc 11 ent)))

(setq po2 (vlax-curve-getClosestPointTo curve po1))

(setq dis (distance po1 po2))

(if (/= dis 0) (Command "point" po1))

(setq i (1+ i))

)

(setvar "Pdmode" 0)

(Command "undo" "END")

(Princ)

)

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
Tue_NV    3.841
Chào bạn Tue_NV

 

Mình test lisp ! khi chạy nó chỉ ra các điểm Middle Center chứ không tìm lỗi . Ý mình muốn là lisp chỉ bắt lỗi khi có text chưa snap vào line và tạo point ở những chỗ đó . Bạn xem lại giúp mình nhé !

(defun c:btd()

(setvar "Pdmode" 2)

(setvar "Pdsize" 200)

(Command "undo" "BEgin")

(vl-load-com)

(setq curve (car(entsel "\n Chon duong :")))

(while (null curve) (setq curve (car(entsel "\n Chon lai duong :"))))

(prompt "\n Chon Text : ")

(setq ss (ssget '((0 . "TEXT"))))

(Command "justifytext" ss "" "MC")

(setq n (sslength ss)

i 0)

 

(while (

(setq sn (ssname ss i))

(setq ent (entget sn))

(setq po1 (cdr(assoc 11 ent)))

(setq po2 (vlax-curve-getClosestPointTo curve po1))

(setq dis (distance po1 po2))

(if (/= dis 0) (Command "point" po1))

(setq i (1+ i))

)

(setvar "Pdmode" 0)

(Command "undo" "END")

(Princ)

)

Chào bạn 'm.rduong' . Bạn hãy kiểm tra kỹ lại xem : Đoạn Lisp trên Tue_NV viết dựa trên nguyên tắc là :

Ta dựng :

1. Một curve : đó là 1 SPline, PLine, line, Arc..

2. Ta lấy 1 điểm của text : chính là điểm Middle Center (Gọi là điểm Po1)

3. Tưởng tượng từ Po1 ta dựng 1 đường vuông góc Po1Po2 với Curve. Với Po2 chính là chân đường vuông góc và Po2 thuộc curve

4. Đặt khoảng cách dis=Po1Po2.

Vậy thì Nếu dis=0 => Text với điểm Middle Center đã bắt dính vào Curve => Không vẽ point vào Middle Center

Vậy thì Nếu dis/=0 (hay >0) => Text với điểm Middle Center đã không bắt dính vào Curve => Vẽ point vào Middle Center

Lisp trên chạy OK. Nếu điểm Middle Center của Text không nằm trên Curve (dis>0) => Kiểm tra lỗi (Vẽ point)

Mong rằng bạn hiểu và check lại xem.

Bạn nhớ phải bắt cho trúng điểm Middle Center của Text vào Curve. Nếu có hở 1 xí xi (dis/0) thì CAD cũng gọi là hở và bắt lỗi bằng point ngay.

  • 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.rduong    0
Chào bạn 'm.rduong' . Bạn hãy kiểm tra kỹ lại xem : Đoạn Lisp trên Tue_NV viết dựa trên nguyên tắc là :

Ta dựng :

1. Một curve : đó là 1 SPline, PLine, line, Arc..

2. Ta lấy 1 điểm của text : chính là điểm Middle Center (Gọi là điểm Po1)

3. Tưởng tượng từ Po1 ta dựng 1 đường vuông góc Po1Po2 với Curve. Với Po2 chính là chân đường vuông góc và Po2 thuộc curve

4. Đặt khoảng cách dis=Po1Po2.

Vậy thì Nếu dis=0 => Text với điểm Middle Center đã bắt dính vào Curve => Không vẽ point vào Middle Center

Vậy thì Nếu dis/=0 (hay >0) => Text với điểm Middle Center đã không bắt dính vào Curve => Vẽ point vào Middle Center

Lisp trên chạy OK. Nếu điểm Middle Center của Text không nằm trên Curve (dis>0) => Kiểm tra lỗi (Vẽ point)

Mong rằng bạn hiểu và check lại xem.

Bạn nhớ phải bắt cho trúng điểm Middle Center của Text vào Curve. Nếu có hở 1 xí xi (dis/0) thì CAD cũng gọi là hở và bắt lỗi bằng point ngay.

Uh ! Mình không hiểu tại sao mà khi chạy xong sửa lại các point đó rồi chạy lại nó lại vẫn bắt point vào những điểm đó mặc dù mình đã cố gắng sửa thật chính xác rồi. Có một điều mình muốn hỏi bạn đó là tại sao khi bắt đầu gõ lệnh :

Lisp hỏi :chon duong mà mình không thề select được vào đó mà chỉ bao được các đối tượng là text có phải đó là lý do ?

Xem giùm mình nhé ! Cảm ơn bạn nhiều !

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ách
Chủ đề này bây giờ đã bị đóng lại để trả lời thêm.

×