Đến nội dung


Hình ảnh
* * * - - 2 Bình chọn

Viết Lisp theo yêu cầu


  • Chủ đề bị khóa Chủ đề bị khóa
2780 replies to this topic

#1841 tdvn

tdvn

    biết lệnh rotate

  • Members
  • PipPipPip
  • 134 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 14 April 2009 - 11:37 PM

Bạn tham khảo bài ðánh số cột ngay trên, nếu không ðýợc thì hãy gửi bản vẽ mẫu và ghi rõ yêu cầu (nhớ save cad từ 2004 về trýớc)

Quả là rối quá, mình không biết bài nào là của chủ ðề nào. Có lẽ mỗi chủ ðề các bạn nên ðặt riêng thì hay hõn.
  • 0

#1842 maihoathao

maihoathao

    biết pan

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

Đã gửi 15 April 2009 - 10:46 AM

Bác ơi viết hộ em lisp kiểm tra bắt snap giữa 2 đường với nhau, mỗi khi gặp lỗi thì đánh dẫu tại chỗ có lỗi đó.
cảm ơn bác nhiều nhé!
  • 0

#1843 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 15 April 2009 - 10:48 AM

Chào bác ndtnv,
Trong đoạn lisp trên đây của bác, bác sử dụng lệnh rotate để quay toàn bộ các đối tượng được chọn quanh điểm gốc p1 sau khi bác đã move nó về đó. Như vậy hoàn toàn có thể đảm bảo được vị trí tương đối giữa các đối tượng text và block. Tuy nhiên sẽ có trường hợp text bị lộn ngược bác ạ vì khi quay text không thể sắp lại theo ý người dùng được. Điều này cũng là điều mà mình cảm thấy bí khi phải giải quyết nó, làm sao cho text vừa không lộn ngược lại vừa đảm bảo vị trí tương đối với block. Bác có cách giải quyết nào trong trường hợp này không bác nhỉ? Hoặc giả bác gợi ý cho mình để mình thử mày mò xem sao. Cám ơn bác trước nhé.
Cái hàm lấy góc a0 và a1 của bác rất hay. Cám ơn bác đã chỉ dẫn.

Đây là VD đoạn lisp lấy tâm của 1 text
(setq e (entget (car (entsel "\nHay chon 1 text"))))
(setq tbx (textbox e))
(setq p0 (car tbx) p1 (cadr tbx))
(setq p (cdr (assoc 10 e)) a (cdr (assoc 50 e) ))
(setq cen (polar p (+ a (angle p0 p1)) (/ (distance p0 p1) 2) ))
Nếu dùng ROTATE text 180 độ, điểm chuẩn là cen. (chú ý OSMODE)
Nếu dùng endmod thì điểm chèn mới (dxf 10 hoặc 11 => phải xét align của text ) lấy đối xứng tâm qua cen, góc của text - pi
Mình nghĩ là chương trình này thì cứ để như vậy vì nếu trong trường hợp đường chuẩn gần như thẳng đứng thì các text gần nhau có thể có chiều ngược nhau rất khó xem. Còn việc tự động xoay text thì làm 1 hàm riêng để user có thể dùng theo ý muốn

Quả là rối quá, mình không biết bài nào là của chủ ðề nào. Có lẽ mỗi chủ ðề các bạn nên ðặt riêng thì hay hõn.

Bài đang xem là: Gửi vào: #1840
Thì bài ngay trên là: Gửi vào: #1839
Tham khảo bài trên là tham khảo bài Gửi vào: #1839 và các bài có liên quan trước đó của nguyenkhoadung98
  • 0

#1844 nguyenkhoadung98

nguyenkhoadung98

    biết vẽ pline

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

Đã gửi 15 April 2009 - 02:51 PM

Đây là VD đoạn lisp lấy tâm của 1 text

(setq e (entget (car (entsel "\nHay chon 1 text"))))
(setq tbx (textbox e))
(setq p0 (car tbx) p1 (cadr tbx))
(setq p (cdr (assoc 10 e)) a (cdr (assoc 50 e) ))
(setq cen (polar p (+ a (angle p0 p1)) (/ (distance p0 p1) 2) ))
Nếu dùng ROTATE text 180 độ, điểm chuẩn là cen. (chú ý OSMODE)
Nếu dùng endmod thì điểm chèn mới (dxf 10 hoặc 11 => phải xét align của text ) lấy đối xứng tâm qua cen, góc của text - pi
Mình nghĩ là chương trình này thì cứ để như vậy vì nếu trong trường hợp đường chuẩn gần như thẳng đứng thì các text gần nhau có thể có chiều ngược nhau rất khó xem. Còn việc tự động xoay text thì làm 1 hàm riêng để user có thể dùng theo ý muốn
Bài đang xem là: Gửi vào: #1840
Thì bài ngay trên là: Gửi vào: #1839
Tham khảo bài trên là tham khảo bài Gửi vào: #1839 và các bài có liên quan trước đó của nguyenkhoadung98



cảm ơn bạn Bình và bạn NDTVN nhiều lắm, lisp dsc của bạn NDTVN dùng rất ổn cho cả đường plolyline và spline. nhưng có 1 vấn đề là với đường spline thì lisp bắn đèn và đánh số xong thì lại chạy về điểm ban đầu và tiếp tục đánh số tại duy nhất điểm ấy và kô chịu dừng lại :cheers:.

- thứ 2 là lisp đánh số kô đúng với ý mình mình cần đánh là : text mẫu mình chọn là T1/L1-1A các số kế tiếp cần đánh là T1/L1-2B, T1/L1-3C, T1/L1-4A,T1/L1-5B.....tức là chỉ thay đổi 2 ký tự cuối cùng thôi còn lisp lại đánh là T2/L1-2B, T2/L1-3C,T2/L1-4A, T2/L1-5B....

- thứ 3 là sau khi dùng lisp thì mình bị mấy hết các object snap đã chọn.

cảm ơn 2 bạn đã quan tâm, mong sớm nhận đc phản hồi từ các bạn.thanks u so


file kèm theo (cadviet kô up đc nên đành up vào đây ) :) (đã chuyển về cad 2004 )

http://www.mediafire.com/?hdjdumntojl
  • 0

#1845 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 15 April 2009 - 05:30 PM

cảm ơn bạn Bình và bạn NDTVN nhiều lắm, lisp dsc của bạn NDTVN dùng rất ổn cho cả đường plolyline và spline. nhưng có 1 vấn đề là với đường spline thì lisp bắn đèn và đánh số xong thì lại chạy về điểm ban đầu và tiếp tục đánh số tại duy nhất điểm ấy và kô chịu dừng lại :cheers:.

- thứ 2 là lisp đánh số kô đúng với ý mình mình cần đánh là : text mẫu mình chọn là T1/L1-1A các số kế tiếp cần đánh là T1/L1-2B, T1/L1-3C, T1/L1-4A,T1/L1-5B.....tức là chỉ thay đổi 2 ký tự cuối cùng thôi còn lisp lại đánh là T2/L1-2B, T2/L1-3C,T2/L1-4A, T2/L1-5B....

- thứ 3 là sau khi dùng lisp thì mình bị mấy hết các object snap đã chọn.

cảm ơn 2 bạn đã quan tâm, mong sớm nhận đc phản hồi từ các bạn.thanks u so
file kèm theo (cadviet kô up đc nên đành up vào đây ) :) (đã chuyển về cad 2004 )

http://www.mediafire.com/?hdjdumntojl

Do không có thời gian nên mình chỉ test trên các đường trong bản vẽ mẫu, vì vậy có lỗi khi đường chuẩn là spline.
-Đánh số không đúng là vì mình đã nói hàm TachTen là hàm giả, trị default mình lấy theo bản vẽ mẫu.
Bạn nên sửa lại theo lisp của bạn để cho đúng với các trường hợp khác. Nếu không thì mỗi khi chạy với trị default khác, bạn sửa trực tiếp trong lisp này theo:
pre: tiền tố, id: số bắt đầu, pos: hậu tố đã bớt ký tự cuối nếu là ABCabc
asc=97 nếu là abc, =65 nếu là ABC. nếu không thì là nil
las= 0: A,a, =1: B,b, =2: C,c
-Lý do mất hết các object snap đã chọn là vì có lỗi nên dòng lệnh khôi phục lại object snap không thực hiện được
Đây là lisp đã fix lỗi spline
(defun c:dsc ( / i k e ss plObj p0 p1 a0 a1 kc d d0 len om pre id inc pos asc las)
(defun TachTen(s)
(setq pre "T1/l1-" id 1 pos "" asc 97 las 0)
)
(defun TenCotKe()
(setq id (+ id inc))
(if asc (setq las (rem (1+ las) 3)))
(strcat pre (itoa id) pos (if asc (chr (+ asc las)) ""))
)
; Main program
(princ "\nChon doi tuong va text :")
(setq ss (ssget ) i -1)
(repeat (sslength ss)
(setq i (1+ i)e (entget (ssname ss i)) )
(if (= "INSERT" (GetDxf 0 e))
(setq p1 (GetDxf 10 e))
)
(if (= "TEXT" (GetDxf 0 e))
(progn (TachTen (GetDxf 1 e)) (setq k i) )
)
)
(setq plObj (car (entsel "\nHay chon duong polyline ")))
(if (not (and k plObj)) (quit))
(setq p0 (getpoint "\nChon diem goc de copy : "))
(if (not p0) (setq p0 p1))
(if (not (setq p0 (vlax-curve-getClosestPointTo plObj p0))) (quit))
(setq inc (getint "\nHay nhap he so tang giam <1> : "))
(if (not inc ) (setq inc 1) )
(setq d (getreal "\nChon khoang cach giua cac doi tuong: "))
(setq om (getvar "OSMODE")) (setvar "OSMODE" 0)
(setq a0 (angle '(0 0) (vlax-curve-getFirstDeriv plObj (vlax-curve-getParamAtPoint plObj p0))))
(setq d0 (vlax-curve-getDistAtPoint plObj p0))
(setq len (vlax-curve-getDistAtPoint plObj (vlax-curve-getEndPoint plObj)))
(if (< d0 (/ len 2))
(setq len (- len d0))
(setq len d0 d (- d))
)
(setq d0 (+ d0 d) i (fix (abs (/ len d))))
(while (and (> i 0) (setq p1 (vlax-curve-getpointatdist plObj d0)))
(setq a1 (angle '(0 0) (vlax-curve-getFirstDeriv plObj (vlax-curve-getParamAtPoint plObj p1))))
(command "COPY" ss "" p0 p0)
(command "MOVE" ss "" p0 p1)
(command "ROTATE" ss "" p1 (/ (* 180 (- a1 a0)) pi))
(setq e (entget (ssname ss k)))
(ModDxf 1 (TenCotKe) e)
(setq d0 (+ d0 d) p0 p1 a0 a1 i (1- i))
)
(setvar "OSMODE" om)
)

  • 2

#1846 q288

q288

    biết lệnh fillet

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

Đã gửi 15 April 2009 - 07:56 PM

Bác ơi viết hộ em lisp kiểm tra bắt snap giữa 2 đường với nhau, mỗi khi gặp lỗi thì đánh dẫu tại chỗ có lỗi đó.
cảm ơn bác nhiều nhé!


không hiểu ý bạn, bắt snap là sao? thế nào gọi là lỗi?
  • 0

#1847 maihoathao

maihoathao

    biết pan

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

Đã gửi 16 April 2009 - 08:25 AM

sorry mình đã nói không rõ. Cụ thể nó là như sau : có 2 layer

+ layer 11 là load center line
+ layer 19 là line trich dan mã số đường

tớ muốn lisp kiểm tra và tạo ra point style hoặc cricle khi phát hiện ra lỗi undershoot (chưa tới) và overshoot (vượt quá) cụ thể là :

line layer 19 khi bắt snap vào load center line (layer 11) nếu phát hiện chưa tới hoặc vượt quá thì nó sẽ báo lỗi bằng point style or cricle .
đường dẫn file cụ thể đây ạ :

http://www.cadviet.c...s/check_loi.dwg


cảm ơn nhiều nhes
  • 0

#1848 nguyenkhoadung98

nguyenkhoadung98

    biết vẽ pline

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

Đã gửi 16 April 2009 - 09:34 AM

Do không có thời gian nên mình chỉ test trên các đường trong bản vẽ mẫu, vì vậy có lỗi khi đường chuẩn là spline.
-Đánh số không đúng là vì mình đã nói hàm TachTen là hàm giả, trị default mình lấy theo bản vẽ mẫu.
Bạn nên sửa lại theo lisp của bạn để cho đúng với các trường hợp khác. Nếu không thì mỗi khi chạy với trị default khác, bạn sửa trực tiếp trong lisp này theo:
pre: tiền tố, id: số bắt đầu, pos: hậu tố đã bớt ký tự cuối nếu là ABCabc
asc=97 nếu là abc, =65 nếu là ABC. nếu không thì là nil
las= 0: A,a, =1: B,b, =2: C,c
-Lý do mất hết các object snap đã chọn là vì có lỗi nên dòng lệnh khôi phục lại object snap không thực hiện được
Đây là lisp đã fix lỗi spline

(defun c:dsc ( / i k e ss plObj p0 p1 a0 a1 kc d d0 len om pre id inc pos asc las)
(defun TachTen(s)
(setq pre "T1/l1-" id 1 pos "" asc 97 las 0)
)
(defun TenCotKe()
(setq id (+ id inc))
(if asc (setq las (rem (1+ las) 3)))
(strcat pre (itoa id) pos (if asc (chr (+ asc las)) ""))
)
; Main program
(princ "\nChon doi tuong va text :")
(setq ss (ssget ) i -1)
(repeat (sslength ss)
(setq i (1+ i)e (entget (ssname ss i)) )
(if (= "INSERT" (GetDxf 0 e))
(setq p1 (GetDxf 10 e))
)
(if (= "TEXT" (GetDxf 0 e))
(progn (TachTen (GetDxf 1 e)) (setq k i) )
)
)
(setq plObj (car (entsel "\nHay chon duong polyline ")))
(if (not (and k plObj)) (quit))
(setq p0 (getpoint "\nChon diem goc de copy : "))
(if (not p0) (setq p0 p1))
(if (not (setq p0 (vlax-curve-getClosestPointTo plObj p0))) (quit))
(setq inc (getint "\nHay nhap he so tang giam <1> : "))
(if (not inc ) (setq inc 1) )
(setq d (getreal "\nChon khoang cach giua cac doi tuong: "))
(setq om (getvar "OSMODE")) (setvar "OSMODE" 0)
(setq a0 (angle '(0 0) (vlax-curve-getFirstDeriv plObj (vlax-curve-getParamAtPoint plObj p0))))
(setq d0 (vlax-curve-getDistAtPoint plObj p0))
(setq len (vlax-curve-getDistAtPoint plObj (vlax-curve-getEndPoint plObj)))
(if (< d0 (/ len 2))
(setq len (- len d0))
(setq len d0 d (- d))
)
(setq d0 (+ d0 d) i (fix (abs (/ len d))))
(while (and (> i 0) (setq p1 (vlax-curve-getpointatdist plObj d0)))
(setq a1 (angle '(0 0) (vlax-curve-getFirstDeriv plObj (vlax-curve-getParamAtPoint plObj p1))))
(command "COPY" ss "" p0 p0)
(command "MOVE" ss "" p0 p1)
(command "ROTATE" ss "" p1 (/ (* 180 (- a1 a0)) pi))
(setq e (entget (ssname ss k)))
(ModDxf 1 (TenCotKe) e)
(setq d0 (+ d0 d) p0 p1 a0 a1 i (1- i))
)
(setvar "OSMODE" om)
)



Cảm ơn NDTNV mình đã dùng thử lisp của bạn nhưng mà đến lúc nó hỏi chọn đối tượng và têxt xong mình chọn rồi enter thì lisp dừng lại không chạy nữa, kô bit lỗi này là thế nào vậy bạn, mong sớm nhận được phản hồi của bạn. chân thành cảm ơn bạn.
  • 0

#1849 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 16 April 2009 - 11:06 AM

Cảm ơn NDTNV mình đã dùng thử lisp của bạn nhưng mà đến lúc nó hỏi chọn đối tượng và têxt xong mình chọn rồi enter thì lisp dừng lại không chạy nữa, kô bit lỗi này là thế nào vậy bạn, mong sớm nhận được phản hồi của bạn. chân thành cảm ơn bạn.

Đó 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.
  • 2

#1850 quyennv01

quyennv01

    biết vẽ polygon

  • Members
  • PipPip
  • 77 Bài viết
Điểm đánh giá: 12 (tàm tạm)

Đã gửi 16 April 2009 - 11:31 AM

Bạn có thể post yêu cầu về autolisp ở topic này.

Mọi người giúp mình cái lisp này nhé.mình muốn các dòng text giãn đều nhau (tức là khi sắp xếp chúng vào một chỗ) thì mình muốn các dòng nó giãn cách đều nhau.mọi người giúp mình nhé.
  • 0

#1851 nguyenkhoadung98

nguyenkhoadung98

    biết vẽ pline

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

Đã gửi 16 April 2009 - 04:10 PM

Đó 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:
  • 0

#1852 svba1608

svba1608

    Tưởng Thị Tú Khuyên

  • Moderator
  • PipPipPipPipPipPipPip
  • 601 Bài viết
Điểm đánh giá: 620 (tốt)

Đã gửi 16 April 2009 - 06:37 PM

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.
  • 0
http://khuyen.space

#1853 haanh

haanh

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2875 Bài viết
Điểm đánh giá: 1554 (rất tốt)

Đã gửi 16 April 2009 - 07:29 PM

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.c...g_duoc_chon/69/
  • 0

“Sống trong đời sống cần có một tấm lòng / Để làm gì em biết không ? / Để gió cuốn đi, để gió cuốn đi...”


#1854 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 17 April 2009 - 07:27 AM

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

#1855 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 17 April 2009 - 09:21 AM

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é.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1856 tucdrom

tucdrom

    — T — U — N — A —

  • Members
  • PipPipPipPipPipPip
  • 497 Bài viết
Điểm đánh giá: 642 (tốt)

Đã gửi 17 April 2009 - 09:25 AM

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:
  • 0

Email : anhtu2101@gmail.com



 


#1857 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 17 April 2009 - 09:35 AM

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 ạ.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1858 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 17 April 2009 - 10:04 AM

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

#1859 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 17 April 2009 - 10:37 AM

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é.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1860 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 17 April 2009 - 11:30 AM

Ồ, 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é.
  • 0