Chuyển đến nội dung
Diễn đàn CADViet
Jin Yong

Hỏi về Lisp (thuật toán, ý tưởng, coding,...)

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

Cho Mình hỏi: Làm cách nào để Undo một cách nhanh chóng (chỉ Ctr-Z một lần) thì các đối tượng được tạo ra sau khi thực hiện 1 Lisp nào đó sẽ bị xóa hết nhanh chóng?

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
Lisp thì có thể hiểu được Nếu Polyline có 1 đầu tiếp xúc với 1 hình khác

"và chỉ chèn block vào phía đầu Polyline chưa tiếp xúc,"

 

đầu Pline chưa tiếp xúc có thể là điểm đầu và điểm cuối. Nếu hiểu thì Lisp sẽ hiểu cả điểm đầu và điểm cuối đều không tiếp xúc đấy bạn Tuanthietkedien à. Bạn muốn chèn vào đầu nào. Bạn hãy nói rõ ý

 

Ví dụ trong file mình đã gởi thì đầu tiếp xúc là đầu Polyline tiếp xúc với hình tròn, đầu còn lại chưa tiếp xúc với hình nào khác mình sẽ gắn mũi tên vào.

 

Mình đã thử làm cái Lisp này.

 

Do chưa biết cách để Lisp hiểu được Nếu Polyline có 1 đầu tiếp xúc với 1 hình khác nên

khi mình vẽ Polyline, mình luôn qui ước điểm đầu Polyline là điểm gắn với hình tròn,

điểm cuối Polyline là điểm Lisp sẽ gắn mũi tên vào.

 

Như vậy vấn đề điểm chèn mũi tên đã được giải quyết, vấn đề tìm góc Polyline.

Trong file dwg dưới đây có 2 Polyline góc 45 độ và 315 độ mình chưa biết cách giải quyết được.

Bạn tham khảo rồi giúp mình nha.

 

(defun c:test ( / osold ss i e dd dc goc )
(vl-load-com)
(setq osold (getvar "osmode"))
(setvar "osmode" 0)

(setq ss (ssget '((0 . "LINE,LWPOLYLINE")))
i 0)
(while (< i (sslength ss))
(setq e (ssname ss i))
(setq dd (vlax-curve-getStartPoint e))
(setq dc (vlax-curve-getEndPoint e))
(setq goc (angle dd dc))
(setq goc (fix(/ (* 180 goc) pi)))
(command ".insert" "mui ten" dc "" "" goc)
(setq i (1+ i))
)

(setvar "osmode" osold)
(princ)
)

 

http://www.cadviet.com/upfiles/Drawing2_21.dwg

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
Ví dụ trong file mình đã gởi thì đầu tiếp xúc là đầu Polyline tiếp xúc với hình tròn, đầu còn lại chưa tiếp xúc với hình nào khác mình sẽ gắn mũi tên vào.

 

Mình đã thử làm cái Lisp này.

 

Do chưa biết cách để Lisp hiểu được Nếu Polyline có 1 đầu tiếp xúc với 1 hình khác nên

khi mình vẽ Polyline, mình luôn qui ước điểm đầu Polyline là điểm gắn với hình tròn,

điểm cuối Polyline là điểm Lisp sẽ gắn mũi tên vào.

 

Như vậy vấn đề điểm chèn mũi tên đã được giải quyết, vấn đề tìm góc Polyline.

Trong file dwg dưới đây có 2 Polyline góc 45 độ và 315 độ mình chưa biết cách giải quyết được.

Bạn tham khảo rồi giúp mình nha.

 

(defun c:test ( / osold ss i e dd dc goc )
(vl-load-com)
(setq osold (getvar "osmode"))
(setvar "osmode" 0)

(setq ss (ssget '((0 . "LINE,LWPOLYLINE")))
i 0)
(while ((setq e (ssname ss i))
(setq dd (vlax-curve-getStartPoint e))
(setq dc (vlax-curve-getEndPoint e))
(setq goc (angle dd dc))
(setq goc (fix(/ (* 180 goc) pi)))
(command ".insert" "mui ten" dc "" "" goc)
(setq i (1+ i))
)

(setvar "osmode" osold)
(princ)
)

 

http://www.cadviet.com/upfiles/Drawing2_21.dwg

Đoạn Lisp bạn viết ra thì block mũi tên bao giờ cũng được chèn theo phương điểm đầu và điểm cuối của Pline mà thôi.

Ví dụ nhé : Pline của bạn có 2 phân đoạn tương ứng với các đỉnh là ABC => Vậy đoạn Lisp của bạn viết ra thì mũi tên của bạn chỉ chèn theo phương AC (điểm đầu và điểm cuối). Nhưng mục đích của bạn là chèn theo phương BC.

Không biết Tue_NV nói như vậy có đúng ý của bạn hay không?

 

Cho Mình hỏi: Làm cách nào để Undo một cách nhanh chóng (chỉ Ctr-Z một lần) thì các đối tượng được tạo ra sau khi thực hiện 1 Lisp nào đó sẽ bị xóa hết nhanh chóng?

Đầu đoạn Lisp bạn sử dụng :

(command "undo" "be")

.......

.......

Cuối đoạn Code bạn sử dụng :

(command "undo" "end")

  • Vote tăng 3

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
Xin lỗi ban ThanhBinh gì đó nha. Nếu như xem tài liệu mà hiểu được vấn đề thì mình không lên diễn đàn này để nhờ giúp đỡ, có những cái đơn giản với người này nhưng không đơn giản với người khác. Giống bạn lúc mới bắt đầu viết lisp thôi đúng hok.

Chào bạn Minhtu2004,

Đúng vậy bạn ạ. Tuy nhiên có một cái khác là nếu bạn đã đọc tài liệu và có ít nhiều suy nghĩ về nó thì khi bạn đặt câu hỏi sẽ dễ dàng và thuận lợi hơn cho mọi người giải đáp bạn ạ. Đồng thời khi bạn đọc giải đáp sẽ hiểu vấn đề nhanh hơn bạn ạ.

Ví dụ: nếu như bài hỏi trước của bạn, bạn hỏi là làm thế nào để xác định điểm đầu và điểm cuối của một lỉne thì sẽ khác với làm thế nào để xác định điểm đâu và điểm cuối của một đoạn thẳng bạn ạ.

Hay là nếu bạn hỏi : mã DXF nào của line để xác định điểm đầu và điểm cuối của một line chẳng hạn.

Bạn nên nhớ rằng, trong mọi tình huống thì việc tự bạn hiểu và giải quyết được vấn đề theo cách của bạn bao giờ cũng tốt hơn là việc chỉ áp dụng những cái có sẵn mà chả hiểu mô tê gì ở trong đó. Điều này hết sức nguy hiểm cho những người làm kỹ thuật bạn ạ.

Do đó mình vẫn bảo lưu ý kiến của mình rằng ta nên tự đọc tài liệu trước và sẽ hỏi những điều mà ta đọc nhưng chưa hiểu. Còn nếu chưa đọc, chưa tìm hiểu mà đã hỏi e rằng có đọc câu trả lời ta cũng chả hiểu nốt và như vậy thì vô ích cho cả người hỏi lẫn người trả lời.

Bạn cũng nên nhớ rằng cuộc đời làm việc của những cán bộ kỹ thuật là cả một quá trình tự học hỏi liên tục, tự đọc, tự tìm hiểu và tự rút ra những bài học cho mình chứ không phải đơn thuần là chỉ sao chép các kiến thức về sử dụng bạn ạ.

Có thể bạn chưa nhất trí với suy nghĩ của mình, nhưng biết sao được, mình chỉ có thể nói những suy nghĩ mà mình tự thấy là đúng, còn mình đâu có bắt bạn phải suy nghĩ giống mình đâu. Bạn hãy nghe những điều mình và mọi người nói rồi tự rút ra cho bạn những điều thuận lợi nhất, phù hợp với suy nghĩ của bạn. Có gì không đúng mong bạn bỏ quá cho.

Chúc bạn vui và đạt được những gì bạn muốn khi tham gia vào diễn đàn này.

  • 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
Ví dụ trong file mình đã gởi thì đầu tiếp xúc là đầu Polyline tiếp xúc với hình tròn, đầu còn lại chưa tiếp xúc với hình nào khác mình sẽ gắn mũi tên vào.

 

Mình đã thử làm cái Lisp này.

 

Do chưa biết cách để Lisp hiểu được Nếu Polyline có 1 đầu tiếp xúc với 1 hình khác nên

khi mình vẽ Polyline, mình luôn qui ước điểm đầu Polyline là điểm gắn với hình tròn,

điểm cuối Polyline là điểm Lisp sẽ gắn mũi tên vào.

 

Như vậy vấn đề điểm chèn mũi tên đã được giải quyết, vấn đề tìm góc Polyline.

Trong file dwg dưới đây có 2 Polyline góc 45 độ và 315 độ mình chưa biết cách giải quyết được.

Bạn tham khảo rồi giúp mình nha.

 

(defun c:test ( / osold ss i e dd dc goc )
(vl-load-com)
(setq osold (getvar "osmode"))
(setvar "osmode" 0)

(setq ss (ssget '((0 . "LINE,LWPOLYLINE")))
i 0)
(while ((setq e (ssname ss i))
(setq dd (vlax-curve-getStartPoint e))
(setq dc (vlax-curve-getEndPoint e))
(setq goc (angle dd dc))
(setq goc (fix(/ (* 180 goc) pi)))
(command ".insert" "mui ten" dc "" "" goc)
(setq i (1+ i))
)

(setvar "osmode" osold)
(princ)
)

 

http://www.cadviet.com/upfiles/Drawing2_21.dwg

Chào bạn Tuan_thietkedien,

Bác Tue_NV nhận xét đúng rồi đó. Bạn phải xem lại cái hàm lấy góc của bạn đi. Bạn thử sử dụng hàm (vlax-curve-getfirstderiv) hoặc (vlax-curve getsecondderiv) xem bạn 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
Đoạn Lisp bạn viết ra thì block mũi tên bao giờ cũng được chèn theo phương điểm đầu và điểm cuối của Pline mà thôi.

Ví dụ nhé : Pline của bạn có 2 phân đoạn tương ứng với các đỉnh là ABC => Vậy đoạn Lisp của bạn viết ra thì mũi tên của bạn chỉ chèn theo phương AC (điểm đầu và điểm cuối). Nhưng mục đích của bạn là chèn theo phương BC.

Không biết Tue_NV nói như vậy có đúng ý của bạn hay không?

 

Đúng đó bạn Tue.

Mình đang thử gợi ý bạn Bình như thế nào. Bạn có cách nào góp ý 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
Đúng đó bạn Tue.

Mình đang thử gợi ý bạn Bình như thế nào. Bạn có cách nào góp ý mình với.

Tue_NV có cách làm khác với bạn Bình :

Bạn thử đọc Code này nhé :

(defun c:test ( / osold ss i e dd dc goc )
(vl-load-com)
(setq osold (getvar "osmode"))
(setvar "osmode" 0)

(setq ss (ssget '((0 . "LINE,LWPOLYLINE")))
i 0)
(while ((setq e (ssname ss i))
(setq dd (vlax-curve-getPointAtParam e (- (vlax-curve-getEndParam e) 1)))
(setq dc (vlax-curve-getEndPoint e))
(setq goc (angle dd dc))
(setq goc (fix(/ (* 180 goc) pi)))
(command ".insert" "mui ten" dc "" "" goc)
(setq i (1+ i))
)

(setvar "osmode" osold)
(princ)
)

  • Vote tăng 3

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 có cách làm khác với bạn Bình :

Bạn thử đọc Code này nhé :

(defun c:test ( / osold ss i e dd dc goc )
(vl-load-com)
(setq osold (getvar "osmode"))
(setvar "osmode" 0)

(setq ss (ssget '((0 . "LINE,LWPOLYLINE")))
i 0)
(while ((setq e (ssname ss i))
(setq dd (vlax-curve-getPointAtParam e (- (vlax-curve-getEndParam e) 1)))
(setq dc (vlax-curve-getEndPoint e))
(setq goc (angle dd dc))
(setq goc (fix(/ (* 180 goc) pi)))
(command ".insert" "mui ten" dc "" "" goc)
(setq i (1+ i))
)

(setvar "osmode" osold)
(princ)
)

Chào bác Tue_NV,

Bác có thể giải thích giùm mình cái hàm này (- (vlax-curve-getEndParam e) 1)) không ạ?

Theo mình hiểu là ý bác muốn lấy cái parameter của đỉnh kề với điểm cuôi của polyline. Có đúng không bác? Nếu như vậy thì hàm (vlax-curve-getendparam e) sẽ trả về số thứ tự của đỉnh cuối cùng của polyline ạ?

Mình chưa hiểu rõ cái parameter của polyline lắm nhờ bác giải thích giùm một chút bác nhé.

Thank bác nhiều.

  • 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
Chào bác Tue_NV,

Bác có thể giải thích giùm mình cái hàm này (- (vlax-curve-getEndParam e) 1)) không ạ?

Theo mình hiểu là ý bác muốn lấy cái parameter của đỉnh kề với điểm cuôi của polyline. Có đúng không bác? Nếu như vậy thì hàm (vlax-curve-getendparam e) sẽ trả về số thứ tự của đỉnh cuối cùng của polyline ạ?

Mình chưa hiểu rõ cái parameter của polyline lắm nhờ bác giải thích giùm một chút bác nhé.

Thank bác nhiều.

 

Bạn Bình hỏi câu cũng đúng y như mình định hỏi bạn Tue vậy.

Hihi..Đúng là chiến hữu, chiến hữu.

Mình cũng tra thử trong Help nhưng không hiểu lắm, hình như lấy điểm của đường cong gì đấy, rồi có đọan trừ 1 là sao vậy hả bạn Tue.

Mấy hàm vlax này tiện dụng quá mà lại không hiểu nhiều. Trong Help tòan tiếng Anh không nhìn là chóang rồi.

Nhờ bạn giải thích hộ mình và bạn Bình nha.

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 Bình hỏi câu cũng đúng y như mình định hỏi bạn Tue vậy.

Hihi..Đúng là chiến hữu, chiến hữu.

Mình cũng tra thử trong Help nhưng không hiểu lắm, hình như lấy điểm của đường cong gì đấy, rồi có đọan trừ 1 là sao vậy hả bạn Tue.

Mấy hàm vlax này tiện dụng quá mà lại không hiểu nhiều. Trong Help tòan tiếng Anh không nhìn là chóang rồi.

Nhờ bạn giải thích hộ mình và bạn Bình nha.

Lấy ví dụ này cho đơn giản nhé : Giả sử có 1 Pline có 3 phân đoạn tương ứng với các điểm ABCD

Trong đó A là điểm đầu, D là điểm cuối.

điểm A ứng với Param là 0

điểm B ứng với Param là 1

điểm C ứng với Param là 2

điểm D ứng với Param là 3

 

Vậy thì điểm cuối D lấy Param là (vlax-curve-getEndParam e) -> trả về 3

điểm kế cuối C lấy Param là (- (vlax-curve-getEndParam e) 1) -> trả về 2

Vậy ta lấy toạ độ điểm C bằng cách sau :

(setq dC (vlax-curve-getPointAtParam e (- (vlax-curve-getEndParam e) 1)))

 

Dòng trên thực ra là lệnh gộp từ 2 câu lệnh :

(setq prC (- (vlax-curve-getEndParam e) 1)) : lấy Param của điểm C

(setq dC (vlax-curve-getPointAtParam e prC)) : lấy toạ độ điểm C từ param prC

 

Tương tự, lấy toạ độ điểm B sẽ là :

(setq prB (- (vlax-curve-getEndParam e) 2)) : lấy Param của điểm B

(setq dB (vlax-curve-getPointAtParam e prB)) : lấy toạ độ điểm B từ param prB

 

Việc lấy góc giữa 2 điểm trở nên đơn giản rồi phải không bạn Tuanthietkedien

  • 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
Bạn Tue cho mình hỏi thêm tí nha.

Mình đang muốn giải quyết vấn đề chèn block mũi tên vào 1 Polyline. Mình dùng lệnh Insert.

Lisp sẽ quét vào Polyline và tìm được góc Polyline đó.

Nếu Polyline có 1 đầu tiếp xúc với 1 hình khác vậy có cách nào làm lisp hiểu và chỉ chèn block vào phía đầu Polyline chưa tiếp xúc với hình nào hay không?

 

http://www.cadviet.com/upfiles/Drawing2_20.dwg

...................

Chào bạn.

Bạn dùng thử LISP này (đã test trên file http://www.cadviet.com/upfiles/Drawing2_20_1.dwg )

các file khác muốn chạy được phải thay vài thông số (tên block, tỉ lệ ...)

(defun c:test (/ osold ss i e dd dc)
 (vl-load-com)
 (setq osold (getvar "osmode"))
 (setvar "osmode" 0)
 (setq	ss (ssget '((0 . "*LINE,ARC")))
i  0
 )
 (while (< i (sslength ss))
   (setq e (ssname ss i))
   (setq dd (vlax-curve-getStartPoint e)
  dc (vlax-curve-getEndPoint e))
   (if (not(equal dd dc 0.001))
     (progn
(insert_block e dd "u0002" 0.0394 0.1)
(insert_block e dc "u0002" -0.0394 0.1)
)
     )
   (setq i (1+ i))
 )
 (setvar "osmode" osold)
 (princ)
)
;Ham chen block co ten bk_name tai diem pt thuoc ent voi ti le cho truoc
; Dieu kien : diem pt khong co doi tuong cat qua (sai so fuzz)
(defun insert_block (ent pt bk_name scale fuzz / param ang)
 (if (and (= 1 (sslength (ssget "_c" (polar pt (/ pi 4) (- fuzz)) (polar pt (/ pi 4) fuzz))))
   (setq param (vlax-curve-getParamAtPoint ent pt))
   )
   (progn
     (setq ang (- (angle '(0 0 0)
		  (vlax-curve-getFirstDeriv ent param))
	   pi))
     (setq ang (/ (* 180 ang) pi))
     (command "insert" bk_name pt scale  "" ang)
     )
   )
 )

  • 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

heo heo heo mi

 

mình có thằng này : C2/234:CH

cái này được đọc từ file txt.

vậy nó là cái gì (mình (type )nó thì báo là SYM), mình cắt nó = substr nó báo lỗi "bad argument type: stringp C2/234:CH; reset after error"

vậy các bác giải đáp giúp mình với. và cắt nó như thế nào

 

heo heo heo mi

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
heo heo heo mi

 

mình có thằng này : C2/234:CH

cái này được đọc từ file txt.

vậy nó là cái gì (mình (type )nó thì báo là SYM), mình cắt nó = substr nó báo lỗi "bad argument type: stringp C2/234:CH; reset after error"

vậy các bác giải đáp giúp mình với. và cắt nó như thế nào

 

heo heo heo mi

hơ. C2/234:CH nếu không có trong dấu nháy "" thì nó là 1 symbol bình thường. Nó giống như biến A, B, hay Z j đó mà

  • 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
các bác xem giùm sao nó cứ báo lỗi

Bác phải nói rõ đầu đuôi chứ. Có dẫn chứng nữa thì người đọc mới hiểu đc. Thực tình mình chẳng hiểu bác nói gì mặc dù mình cũng không đến nỗi gà lắm.

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
các bác xem giùm sao nó cứ báo lỗi

Hơ hơ, cái nhà bác Binharch77 này chả chịu đọc bài trả lời nè.

Bác Nacata đã nói rùi đó. Nó là Sym chứ có phải String đâu mà bác dùng hàm Substr (Cắt chuỗi) hở bác. Vậy nên nó báo lỗi thôi. bad argument type nghĩa là bác sai argument còn gi. Argument của hàm Substr phải là String bác ạ.

Còn như cắt Sym bằng cách nào thì Ứ hự, em chửa biết ạ. Để em kiếm chỗ mót đã 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

các bác ơi, mình có cái này hỏi thêm:

giả sử mình muốn gán lista với một giá trị được tính tóan.

tuy nhiên, cái lista này được chạy a từ 1 đến 100 (chẳn hạn)

(ví dụ gán giá trị list1 = 20 , list2 =40, list3 = 60 ... với list1,2,3 chạy bằng vòng lặp, 20, 40, 60 là thông số được định nghĩa bằng tính tóan theo vòng lặp đó)

làm sao được ?

e nghiên cứu mãi, khó quá các bác ơi

 

heo mi

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
các bác ơi, mình có cái này hỏi thêm:

giả sử mình muốn gán lista với một giá trị được tính tóan.

tuy nhiên, cái lista này được chạy a từ 1 đến 100 (chẳn hạn)

(ví dụ gán giá trị list1 = 20 , list2 =40, list3 = 60 ... với list1,2,3 chạy bằng vòng lặp, 20, 40, 60 là thông số được định nghĩa bằng tính tóan theo vòng lặp đó)

làm sao được ?

e nghiên cứu mãi, khó quá các bác ơi

 

heo mi

Chào bạn Binharch77,

Chưa hiểu rõ vấn đề bạn nêu. Bạn có thể cho ví dụ cụ thể về cái kết quả bạn cần được không? Đó là một list hay là các giá trị riêng lẻ?

Bạn thử tham khảo hàm mapcar kết hợp với hàm lambda được không?

Xem trong Developer Help của Cad có nói khá rõ về các hàm này bạn ạ.

Có gì chưa rõ bạn hãy post lên để cùng xem xét nhé.

Chúc bạn vui.

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
Chào bạn Binharch77,

Chưa hiểu rõ vấn đề bạn nêu. Bạn có thể cho ví dụ cụ thể về cái kết quả bạn cần được không? Đó là một list hay là các giá trị riêng lẻ?

Bạn thử tham khảo hàm mapcar kết hợp với hàm lambda được không?

Xem trong Developer Help của Cad có nói khá rõ về các hàm này bạn ạ.

Có gì chưa rõ bạn hãy post lên để cùng xem xét nhé.

Chúc bạn vui.

ví dụ như thế này :

(setq a 1)

(setq b 10)

(setq listcout 1)

(while (:mellow:

(setq (cái này đây) (* a :mellow:)

(setq a (1+ a))

(setq listcout (1+ cái này đây)

)

 

ý là làm sao có thể gán "cái này đây" là một biến nhưng chạy dược với vòng lặp

(trên chỉ là ví dụ thôi, chưa hoàn thiện, mong các bác bỏ qua)

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ó lisp tính diện tích dùng cũng khá hay, tuy nhiên sau mỗi lần dùng nó lại làm mât chế độ bắt điểm mà mình đã chọn trước đó, ai có thể sửa giúp mình với !

File lisp :

http://www.cadviet.com/upfiles/Tinh_Dien_Tich_Moi.rar

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ó lisp tính diện tích dùng cũng khá hay, tuy nhiên sau mỗi lần dùng nó lại làm mât chế độ bắt điểm mà mình đã chọn trước đó, ai có thể sửa giúp mình với !

File lisp :

http://www.cadviet.com/upfiles/Tinh_Dien_Tich_Moi.rar

Hề hề, bác BigBill ơi,

Bác chỉ cần thêm một phát code này vào trước dòng (princ) là Ok:

(setvar "osmode" oslast )

 

Chúc bác 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

ôi, cái trên thì mình đã làm được rùi, nhưng lại gặp típ một khó khăn lơn lớn nữa :

vd : (setq list1 (list 1 2 3 4 5))

vậy có cách này không đụng đến tên list1 mà vẫn gọi được danh sách của nó hay không?

vd : (cái này chỉ là vd thui, chứ sai rùi) (princ (strcat "l" "i" "s" "t" (itoa 1)))

í là kêu danh sách nhưng kg đụng đến tên list1 í mà

 

??????

cái bác giúp 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
ôi, cái trên thì mình đã làm được rùi, nhưng lại gặp típ một khó khăn lơn lớn nữa :

vd : (setq list1 (list 1 2 3 4 5))

vậy có cách này không đụng đến tên list1 mà vẫn gọi được danh sách của nó hay không?

vd : (cái này chỉ là vd thui, chứ sai rùi) (princ (strcat "l" "i" "s" "t" (itoa 1)))

í là kêu danh sách nhưng kg đụng đến tên list1 í mà

 

??????

cái bác giúp với

 

có phải như vầy k?

(setq list1 (list 1 2 3 4 5))

(eval (read (strcat "l" "i" "s" "t" (itoa 1))))

  • 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
có phải như vầy k?

(setq list1 (list 1 2 3 4 5))

(eval (read (strcat "l" "i" "s" "t" (itoa 1))))

 

 

yeah !!!!!!!!! :mellow:

đúng rùi đấy bác ơi. thế hàm eval là hàm gì vậy? bác lấy tài liệu đâu ra thế? cho xin với.

ở cái nơi khỉ ho cò gáy này chả có cuốn sách nào ra hồn cả.

 

ôi, nếu cadviet kg tồn tại chắc mình tiêu mất. thank cad viet

nếu nút thank còn hiệu lực 2 3 lần, chắc tui cũng thank cho bác vài cái cho sướng.

 

he he he.

:mellow:

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
yeah !!!!!!!!! :mellow:

đúng rùi đấy bác ơi. thế hàm eval là hàm gì vậy? bác lấy tài liệu đâu ra thế? cho xin với.

ở cái nơi khỉ ho cò gáy này chả có cuốn sách nào ra hồn cả.

 

ôi, nếu cadviet kg tồn tại chắc mình tiêu mất. thank cad viet

nếu nút thank còn hiệu lực 2 3 lần, chắc tui cũng thank cho bác vài cái cho sướng.

 

he he he.

:mellow:

 

Mình học từ bác Hoành đấy, trước đây cũng có ng hỏi, và bác H trả lời rồi, phải chuyển lời cám ơn cho bác Hoành.

Hàm eval cho ra giá trị thực của biến đứng sau

Hàm read cho ra phần tử đầu của chuỗi đứng sau, tức là nếu chuỗi có dấu cách thì chỉ lấy 1 từ đứng trước thôi.

Tài liệu thì đọc help thôi, chỉ cần tiếng anh sơ sơ cũng đọc đc mà, tốt nhất là đọc các ví dụ.

  • 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

×