Đế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
2847 replies to this topic

#1581 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 18 April 2013 - 04:56 AM

Hix. Mình làm các bạn vất vả quá! Mình cũng không ngờ khi bóc tách cụ thể thì nó lại trở lên phức tạp như vây, cũng bởi vì mình chưa có thời gian để suy nghĩ về nó, khi nêu vấn đề bản thân mình cũng chưa tính được đến những trường hợp mà các bạn nêu bên trên. 

Vì vấn đề đã trở lên phức tạp hơn mình tưởng nên mình thu hẹp và cụ thể hơn yêu cầu: Chuỗi nhập vào là 1 chuỗi đảm bảo để hàm Cal hiểu đó là 1 phép tính số học, giống như khi bạn gõ lệnh Cal và nhập phép tính vậy. Cảm ơn các bạn  :)

Mình chỉ xử thêm cái chữ "E" trong CAL là xong ấy mà

 
(defun Tue-int-real(str / str-res str2)
;;;write by Tue_NV
  ;;;;;example: (Tue-int-real "a2b3.1c5") -> "a2.0b3.1c5.0"
  ;;;;;(Tue-int-real "aa2222b3.1c56") -> "aa2222.0b3.1c56.0"
  ;;;;;(Tue-int-real "sqrt(5E10+6E9)") -> "sqrt(50000000000.0+6000000000.0)"
 (vl-load-com)
(setq str-res "" str2 str)
  (while (/= (strlen str2) 0)
    (setq str2 (vl-string-left-trim "ABCDEFGHIKLMNOPQRSTUYZXY+-*/%( ),#@$^!~_&^\\"  (strcase str2)))
    (if (/= (strlen str2) 0) 
(setq str-res (strcat str-res (substr str 1 (- (strlen str) (strlen str2))) (vl-string-right-trim "0" (rtos (atof str2) 2 9))))
(setq str-res (strcat str-res (substr str 1 (- (strlen str) (strlen str2))) ))
    )
    (if (= (substr str-res (strlen str-res) 1) ".") (setq str-res (strcat str-res "0")))
    (setq str2 (vl-string-left-trim "E1234567890 ."  str2)
 str (substr str (1+ (- (strlen str) (strlen str2))) (strlen str))
    )
  )
str-res
  )

  • 1

#1582 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 18 April 2013 - 07:03 AM

Bác Tue_NV: viết cái lisp này chẳng "sướng" chút nào nhỉ? Bởi không biết đến bao giờ thì nó mới hết... lỗi! :lol:

Hiểu như thế nào với máy của tôi đây trong 2 ví dụ này (không biết máy các bạn có bị vầy không):

 

(Tue-int-real "1sqrt(5E10+6E9)") => "1sqrt(5+6)"

(Tue-int-real "1...2") => "1"

(Tue-int-real "1sqrt(5E10+6E9)") => "1sqrt(5+6)"
(Tue-int-real "1...2") => "1"

  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1583 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 18 April 2013 - 08:13 AM

Bác Tue_NV: viết cái lisp này chẳng "sướng" chút nào nhỉ? Bởi không biết đến bao giờ thì nó mới hết... lỗi! :lol:

Hiểu như thế nào với máy của tôi đây trong 2 ví dụ này (không biết máy các bạn có bị vầy không):

 

(Tue-int-real "1sqrt(5E10+6E9)") => "1sqrt(5+6)"

(Tue-int-real "1...2") => "1"

(Tue-int-real "1sqrt(5E10+6E9)") => "1sqrt(5+6)"
(Tue-int-real "1...2") => "1"

 

1./ Không hiểu máy bác bị lỗi gì chứ, Tue_NV gọi ra vầy :

 

 
Command: (Tue-int-real "1sqrt(5E10+6E9)")
"1.0sqrt(50000000000.0+6000000000.0)"

2 Trong CAL không chấp nhận số như vầy "1..2"

 

Viết Lisp nhanh gọn, sướng quá chứ lị!

Command: (Tue-int-real "1sqrt(5E10+6E9)")
"1.0sqrt(50000000000.0+6000000000.0)"
 
2./ Trong CAL không có số như vầy : "1..2"
 
Viết Lisp nhanh, gọn , sướng quá chứ lị!

 

 

Command: (Tue-int-real "1sqrt(5E10+6E9)")
"1.0sqrt(50000000000.0+6000000000.0)"
 
2./ Trong CAL không có số như vầy : "1..2"
 
Viết Lisp nhanh gọn, sướng quá chứ lị!
 
Command: (Tue-int-real "1sqrt(5E10+6E9)")
"1.0sqrt(50000000000.0+6000000000.0)"
 
Trong CAL không chấp nhận "số như vầy"  "1..2"

  • 0

#1584 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 18 April 2013 - 08:38 AM

1). Liệu có thể bị 1 biến hệ thống nào không nhỉ? Cùng nghĩ xem sao, chứ máy tôi hoạt động tốt.

2). Cho đến ngay lúc này tôi mới thực sự hiểu được ý đồ của bạn TL, chứ hôm kia tới giờ tôi cứ lơ mơ. Tôi tóm tắt câu hỏi như thế này xem có đúng không nhé:

Có 1 chuỗi là 1 biểu thức đúng của lệnh CAL. Do hạn chế của integer nên muốn chuyển tất cả integer trong chuỗi đó sang real để phép tính luôn cho kết quả đúng.

Hoặc ngắn gọn hơn: làm sao để tính đúng biểu thức CAL với 1 chuỗi, cho dù nó chứa integer?.

Nếu vậy, chắc bài toán sẽ đơn giản hơn.


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1585 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

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

Đã gửi 18 April 2013 - 08:40 AM

Mình chỉ xử thêm cái chữ "E" trong CAL là xong ấy mà

 

 
(defun Tue-int-real(str / str-res str2)
;;;write by Tue_NV
  ;;;;;example: (Tue-int-real "a2b3.1c5") -> "a2.0b3.1c5.0"
  ;;;;;(Tue-int-real "aa2222b3.1c56") -> "aa2222.0b3.1c56.0"
  ;;;;;(Tue-int-real "sqrt(5E10+6E9)") -> "sqrt(50000000000.0+6000000000.0)"
 (vl-load-com)
(setq str-res "" str2 str)
  (while (/= (strlen str2) 0)
    (setq str2 (vl-string-left-trim "ABCDEFGHIKLMNOPQRSTUYZXY+-*/%( ),#@$^!~_&^\\"  (strcase str2)))
    (if (/= (strlen str2) 0) 
(setq str-res (strcat str-res (substr str 1 (- (strlen str) (strlen str2))) (vl-string-right-trim "0" (rtos (atof str2) 2 9))))
(setq str-res (strcat str-res (substr str 1 (- (strlen str) (strlen str2))) ))
    )
    (if (= (substr str-res (strlen str-res) 1) ".") (setq str-res (strcat str-res "0")))
    (setq str2 (vl-string-left-trim "E1234567890 ."  str2)
 str (substr str (1+ (- (strlen str) (strlen str2))) (strlen str))
    )
  )
str-res
  )

Bạn Tue_NV xem lại truờng hợp này

(Tue-int-real "6*.1")

Mình chạy thử thì nó không thoát đuợc khỏi vòng lặp. Các bạn thông cảm vì máy tính của mình bị hư, đang chờ kỹ thuật sửa. hiện tại mình chỉ tranh thủ muợn máy đồng nghiệp để test kết quả chạy lisp của các bạn chứ chưa có thời gian để xem kỹ để trả lời các bạn. Code của bạn KangKung chạy gần đáp ứng đuợc nhu cầu rồi. chỉ còn truờng hợp E nữa thôi.

@ĐVH: Bạn hiểu chính xác ý định của mình rồi, đúng là cách nêu yêu cầu của mình đã làm phức tạp hoá vấn đề lên rất nhiều. Rút kinh nghiệm lần sau ^^


  • 0

#1586 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 18 April 2013 - 08:54 AM

Bạn Tue_NV xem lại truờng hợp này

(Tue-int-real "6*.1")

Mình chạy thử thì nó không thoát đuợc khỏi vòng lặp. Các bạn thông cảm vì máy tính của mình bị hư, đang chờ kỹ thuật sửa. hiện tại mình chỉ tranh thủ muợn máy đồng nghiệp để test kết quả chạy lisp của các bạn chứ chưa có thời gian để xem kỹ để trả lời các bạn. Code của bạn KangKung chạy gần đáp ứng đuợc nhu cầu rồi. chỉ còn truờng hợp E nữa thôi.

@ĐVH: Bạn hiểu chính xác ý định của mình rồi, đúng là cách nêu yêu cầu của mình đã làm phức tạp hoá vấn đề lên rất nhiều. Rút kinh nghiệm lần sau ^^

 

 

Mình test ra vầy : 

 
Command: (Tue-int-real "6*.1")
"6.0*0.1"
Command: (Tue-int-real "6*.1")
"6.0*0.1"

Có thể do chức năng down Lisp bị thiếu chi đó . Tue_NV gửi Lisp gốc các bác test thử

Command: (Tue-int-real "6*.1")
"6.0*0.1"
 
Command: (Tue-int-real "6*.1")
 
Command: (Tue-int-real "6*.1")
 
Command: (Tue-int-real "6*.1")
 
Command: (Tue-int-real "6*.1")
 

http://www.mediafire...roc8ub9yt96403j

Command: (Tue-int-real "6*.1")
"6.0*0.1"
 
Có thể do chức năng Down Lisp bị thiếu chi đó. Tue_NV gửi Lisp gốc, các bác Test thử
 
@bác DVH : Vấn đề đơn giản như bác viết vậy. Do bác nghĩ phức tạp về số thực "'" hơn thôi 

 

 

Command: (Tue-int-real "6*.1")
"6.0*0.1"
 
Có thể do chức năng Down Lisp bị thiếu chi đó. Tue_NV gửi Lisp gốc, các bác Test thử
 
@bác DVH : Vấn đề đơn giản như bác viết vậy. Do bác nghĩ phức tạp về số thực "'" hơn thôi 
Command: (Tue-int-real "6*.1")
"6.0*0.1"
 
Nhiều khi chức năng Download của Diễn đàn bị thiếu chi đó.
Tue_NV gửi Lisp gốc các bác Test thử : 
 
@Bác DVH : Vấn đề đơn giản là vậy, do bác hiểu số thực "." nó phức tạp lên mà thôi

  • 1

#1587 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 18 April 2013 - 10:37 AM

Khi số đã biểu diễn ở dạng E rồi thì làm j còn giới hạn Integer nữa các bác hầy ^^


  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#1588 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 18 April 2013 - 10:42 AM

Khi số đã biểu diễn ở dạng E rồi thì làm j còn giới hạn Integer nữa các bác hầy ^^

Biểu diễn thành dạng E là real nhưng làm sao biết trong chuỗi cal có những gì? Thậm chí có E nhưng E ở 1 vị trí khác, còn các vị trí khác không có E thì Cal vẫn có thể chạy bậy. Ví dụ: "1E3+123456789^10"


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1589 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 18 April 2013 - 10:56 AM

Biểu diễn thành dạng E là real nhưng làm sao biết trong chuỗi cal có những gì? Thậm chí có E nhưng E ở 1 vị trí khác, còn các vị trí khác không có E thì Cal vẫn có thể chạy bậy. Ví dụ: "1E3+123456789^10"

 

Không biết bác DVH test được chưa?

 

 
Command: (TUE-INT-REAL "1E3+123456789^10")
"1000.0+123456789.0^10.0"

  • 0

#1590 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 18 April 2013 - 11:00 AM

Ẹ quá! Chẳng hiểu vì sao?

 

Command: (TUE-INT-REAL "1E3+123456789^10")

"1+123456789^1"


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1591 classicgt

classicgt

    biết zoom

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

Đã gửi 18 April 2013 - 11:26 AM

Chào tất cả các bác cao thủ về lisp.

Em không biết viết bài mới ở Cadviet như thế nào cả đành nhờ trong bài viết này vậy.

Em có một nguyện vọng muốn nhờ các bác viết giúp cho em 1 lisp với nội dung như sau:

lisp lấy thông số của nhiều đường poline cùng một lúc rồi xuất sang EXcel như dạng sau:

VD: Có 2 đường Poline 

 

TT                                  Thông số của Poline (có thể 2 (đầu, cuối) hoặc 3 điểm (đầu, giữa cuối)

 1                                                     at point  X=? Y=?  Z=   ?

                                                        at point  X=? Y=?  Z=   ?

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

 2                                                      at point  X=? Y=?  Z=   ?

                                                         at point  X=? Y=?  Z=   ?

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

....

....

 

 

Em rất mong các bác có thể giúp em, vì bình thường lệnh "LI" chỉ lấy được thông số của 1 đối tượng Poline

Em muốn dùng lisp dùng một lệnh lấy được thông số của nhiều đường cùng một lúc rồi xuất ra EXcel như trên.

   Cám ơn các bác nhiều lắm.

Giúp em nhé! 

 

 

 

 

=> Câu này trên diễn đàn hoặc Google có nhiều lắm rồi bạn nhé


  • 0

#1592 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 18 April 2013 - 11:28 AM

Biểu diễn thành dạng E là real nhưng làm sao biết trong chuỗi cal có những gì? Thậm chí có E nhưng E ở 1 vị trí khác, còn các vị trí khác không có E thì Cal vẫn có thể chạy bậy. Ví dụ: "1E3+123456789^10"

Bậy là sao bác ơi ^^  kết quả sai ạ :o. Ket k có máy để check :) Nếu đã không biết trong chuỗi có gì, thì đề bài này không có đáp án rồi ^^.

Ngoài ra, cal cho phép tính với cả biến các bác ạ, nhỡ e của người ta là biến có giá trị thì ... giết người rồi ^^

 

Mà, các bác chỉ cần nói giải pháp là bạn TL code được mà, mò code để biết giải thuật mệt quá , hic hic

 

@Bác Tuệ :Cal nhập được unicode, không biết bác liệt kê được hết không :( 

 

Code bác nào cũng đẹp, ketxu thanks hết rồi nhá. Học được nhiều quá


  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#1593 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 18 April 2013 - 11:36 AM

Ẹ quá! Chẳng hiểu vì sao?

 

Command: (TUE-INT-REAL "1E3+123456789^10")

"1+123456789^1"

 

 

Bác đã test code gốc của Tue_NV ở bài viết #1586 chưa?

 

@Bác Tuệ :Cal nhập được unicode, không biết bác liệt kê được hết không :(

 

Cái này chắc phải dùng hàm để liệt kê là xong

Hình như CAL đâu có cho nhận biến nhỉ? 


  • 0

#1594 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 18 April 2013 - 11:43 AM

Bậy là sao bác ơi ^^  kết quả sai ạ :o. Ket k có máy để check :) Nếu đã không biết trong chuỗi có gì, thì đề bài này không có đáp án rồi ^^.

Ngoài ra, cal cho phép tính với cả biến các bác ạ, nhỡ e của người ta là biến có giá trị thì ... giết người rồi ^^

 

Mà, các bác chỉ cần nói giải pháp là bạn TL code được mà, mò code để biết giải thuật mệt quá , hic hic

 

@Bác Tuệ :Cal nhập được unicode, không biết bác liệt kê được hết không :(

 

Code bác nào cũng đẹp, ketxu thanks hết rồi nhá. Học được nhiều quá

1). Khi các số nguyên quá lớn thì các phép tính với nó có thể cho kết quả sai, không cứ gì CAL. Chỉ có real thì tính toán vô tư. Đây là nguyên tắc của cad.

2). Đây là bài toán thực tế nên chủ TP muốn E biểu diễn số chứ không phải biến. Đó là ý muốn của chủ TP.

@Tue_NV: #1586 đây!

 

Command: (Tue-int-real "6*.1")

"6*0.1"

Command: (Tue-int-real "6*.1")

"6*0.1"


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1595 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 18 April 2013 - 11:50 AM

1). Khi các số nguyên quá lớn thì các phép tính với nó có thể cho kết quả sai, không cứ gì CAL. Chỉ có real thì tính toán vô tư. Đây là nguyên tắc của cad.

2). Đây là bài toán thực tế nên chủ TP muốn E biểu diễn số chứ không phải biến. Đó là ý muốn của chủ TP.

@Tue_NV: #1586 đây!

 

Command: (Tue-int-real "6*.1")

"6*0.1"

Command: (Tue-int-real "6*.1")

"6*0.1"

Thì ra nó chịu ảnh hưởng của biến DimZin

Bác set biến dimzin = 0 rồi chạy thử với các ví dụ mà bác chạy chưa được thử xem

 

Muốn e làm biến cũng đơn giản thôi, có điều CAL không chấp nhận biếne! Tên Ket đoán bừa  :D


  • 0

#1596 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 18 April 2013 - 11:53 AM

1). Đúng rồi: Dimzin

2). Cal chấp nhận biến đã lượng giá.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1597 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 18 April 2013 - 11:56 AM

1). Đúng rồi: Dimzin

2). Cal chấp nhận biến đã lượng giá.

 

1> ok rồi nhé bác.

2> Bác có thể ví dụ rõ hơn


  • 0

#1598 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 18 April 2013 - 12:17 PM

Command: (setq a 5)

5

Command: cal

>> Expression: a*2

10


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1599 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 18 April 2013 - 01:07 PM

Command: (setq a 5)

5

Command: cal

>> Expression: a*2

10

E như này :

 
command: (setq e 2)
2
Command: (cal "e*2")
0.0

  • 0

#1600 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 18 April 2013 - 02:48 PM

Mình làm lisp như sau:

Để sửa các đối tượng là text, att trong block thuộc tính, giá trị dim.

Nhưng ko biết sai chổ nào mà dim không tài nào sửa được.

Các bác xoi giúp với. Cám ơn!

(defun duy:docgt (/ dchon)
(setq dchon (car (nentselp "\nChon")))
(while
(or
(null dchon)
(and (= (cdr (assoc 1 (entget dchon))) nil)
)
)
(princ "\nDoi tuong khong hop le")
(setq dchon (car (nentselp "\nChon")))
)
dchon)



(defun c:edd (/ doituong noidung suathanh DTMs)
(command "undo" "be")
(setq doituong (duy:docgt))
(setq noidung (cdr (assoc 1 (entget doituong))))
(setq suathanh (lisped noidung))
(setq DTMs (subst (cons 1 suathanh) (assoc 1 (entget doituong)) (entget doituong)))
(entmod DTMs)
(command ".move" doituong "" "_non" (list 0 0 0) "_non" (list 0 0 0))
(command "undo" "end")
(princ)
)


  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D