Đến nội dung


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

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


  • Please log in to reply
2854 replies to this topic

#301 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 14 May 2009 - 12:20 PM

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

#302 tuan_thietkedien

tuan_thietkedien

    biết lệnh mirror

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

Đã gửi 14 May 2009 - 01:33 PM

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.c...Drawing2_21.dwg
  • 0

#303 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 14 May 2009 - 01:58 PM

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.c...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")
  • 3

#304 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 14 May 2009 - 02:19 PM

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

#305 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 14 May 2009 - 02:41 PM

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

#306 tuan_thietkedien

tuan_thietkedien

    biết lệnh mirror

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

Đã gửi 14 May 2009 - 04:06 PM

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

#307 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 14 May 2009 - 04:12 PM

Đú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 (< i (sslength ss))
(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)
)

  • 3

#308 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 14 May 2009 - 05:05 PM

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

#309 tuan_thietkedien

tuan_thietkedien

    biết lệnh mirror

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

Đã gửi 14 May 2009 - 11:01 PM

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

#310 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 15 May 2009 - 08:10 AM

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

#311 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 15 May 2009 - 08:56 AM

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.c...Drawing2_20.dwg
...................

Chào bạn.
Bạn dùng thử LISP này (đã test trên file http://www.cadviet.c...awing2_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)
)
)
)

  • 1

#312 binharch77

binharch77

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 372 Bài viết
Điểm đánh giá: 163 (tàm tạm)

Đã gửi 16 May 2009 - 07:03 PM

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

#313 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 16 May 2009 - 08:46 PM

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à
  • 1

#314 binharch77

binharch77

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 372 Bài viết
Điểm đánh giá: 163 (tàm tạm)

Đã gửi 17 May 2009 - 12:10 AM

các bác xem giùm sao nó cứ báo lỗi
  • 0

#315 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 17 May 2009 - 12:57 AM

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

#316 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 19 May 2009 - 12:33 PM

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

#317 binharch77

binharch77

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 372 Bài viết
Điểm đánh giá: 163 (tàm tạm)

Đã gửi 19 May 2009 - 04:57 PM

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

#318 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 19 May 2009 - 06:32 PM

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

#319 binharch77

binharch77

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 372 Bài viết
Điểm đánh giá: 163 (tàm tạm)

Đã gửi 19 May 2009 - 06:57 PM

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

#320 BigBill

BigBill

    biết vẽ circle

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

Đã gửi 20 May 2009 - 07:47 PM

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.c...en_Tich_Moi.rar
  • 0