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

#2761 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 04 May 2016 - 09:28 PM

Chú Lee Mac có 1 loạt các hàm convert. VD từ RGB->ACI:

(defun LM:RGB->ACI ( r g b / cObj aci ) (vl-load-com)
  (if
    (and
      (setq cObj
        (vla-getInterfaceObject (vlax-get-acad-object)
          (strcat "AutoCAD.AcCmColor." (substr (getvar 'ACADVER) 1 2))
        )
      )
      (not
        (vl-catch-all-error-p
          (vl-catch-all-apply 'vla-SetRGB (list cObj r g b))
        )
      )
    )
    (setq aci (vla-get-ColorIndex cObj))
  )
  (if cObj (vlax-release-object cObj))
  aci
)
 

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


#2762 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 05 May 2016 - 02:05 AM

Chú Lee Mac có 1 loạt các hàm convert. VD từ RGB->ACI:

(defun LM:RGB->ACI ( r g b / cObj aci ) (vl-load-com)
  (if
    (and
      (setq cObj
        (vla-getInterfaceObject (vlax-get-acad-object)
          (strcat "AutoCAD.AcCmColor." (substr (getvar 'ACADVER) 1 2))
        )
      )
      (not
        (vl-catch-all-error-p
          (vl-catch-all-apply 'vla-SetRGB (list cObj r g b))
        )
      )
    )
    (setq aci (vla-get-ColorIndex cObj))
  )
  (if cObj (vlax-release-object cObj))
  aci
)
 

Em cảm ơn bác Doan Van Ha nhiều. Hiii.

Chú Lee Mac có 1 loạt các hàm convert. VD từ RGB->ACI:

(defun LM:RGB->ACI ( r g b / cObj aci ) (vl-load-com)
  (if
    (and
      (setq cObj
        (vla-getInterfaceObject (vlax-get-acad-object)
          (strcat "AutoCAD.AcCmColor." (substr (getvar 'ACADVER) 1 2))
        )
      )
      (not
        (vl-catch-all-error-p
          (vl-catch-all-apply 'vla-SetRGB (list cObj r g b))
        )
      )
    )
    (setq aci (vla-get-ColorIndex cObj))
  )
  (if cObj (vlax-release-object cObj))
  aci
)
 

  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#2763 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 05 May 2016 - 09:00 AM

Chào bác Hạ!

Đêm qua em mới check qua nhưng chưa thực hành.

Em muốn gán màu sắc cho đối tượng theo TrueColor như hình vẽ. Như vậy có nhiều màu sắc hơn để gán màu cho đối tượng. Em gán màu sắc cho đường đồng mức ạ. Lại làm phiền bác Hạ và các bác rồi.

Thôi chết. Dc bác Hạ gợi ý lại quên béng mất. Em tìm trong Lee-Mac có rồi. Hii. Em ko biết cách xóa bài nên Edit ạ!

36665_se.jpg


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#2764 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 11 May 2016 - 05:12 PM

Chào các bác!

Em tạo 4 danh sách sau đó gộp lại thành một, nhưng khi test nó lại báo

Application ERROR: Bad argument type

Em test từng cụm thì thấy LtsRGB3 ảnh hưởng nhưng em không phát hiện ra lỗi sai. Nhờ các bác tư vấn dùm em. Em cảm ơn nhiều!


;;;test (GetListRGB 10)

(defun GetListRGB (iColor / BI GI GII Ri)
  (setq LtsRGB (list))
  (setq LtsRGB1 (list))
  (setq LtsRGB2 (list))
  (setq LtsRGB3 (list))
  (setq LtsRGB4 (list))
  
  (setq Gi 0)
  (while
    (< Gi (- 255 iColor))
     (setq Gi (+ Gi iColor))
     (setq LtsRGB1 (append LtsRGB1 (list (list 0 Gi 255))))
  )

  (setq Bi 255)
  (while
    (> Bi iColor)
     (setq Bi (- Bi iColor))
     (setq LtsRGB2 (append LtsRGB2 (list (list 0 255 Bi))))
  )

  (setq Ri 0)
  (while
    (< Ri (- 255 iColor))
    (setq Ri (+ Ri iColor))
    (setq LtsRGB3 (append LtsRGB3 (list (list Ri 255 0))))
  )

  (setq Gii 255)
  (while
    (> Gii iColor)
     (setq Gii (- Gii iColor))
     (setq LtsRGB4 (append LtsRGB4 (list (list 255 Gii 0))))
  )
  (setq LtsRGB (append LtsRGB1 LtsRGB2 LtsRGB3 LtsRGB4))
  LtsRGB
)


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#2765 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 11 May 2016 - 10:54 PM

 

Chào các bác!

Em tạo 4 danh sách sau đó gộp lại thành một, nhưng khi test nó lại báo

Application ERROR: Bad argument type

Em test từng cụm thì thấy LtsRGB3 ảnh hưởng nhưng em không phát hiện ra lỗi sai. Nhờ các bác tư vấn dùm em. Em cảm ơn nhiều!


;;;test (GetListRGB 10)

(defun GetListRGB (iColor / BI GI GII Ri)
  (setq LtsRGB (list))
  (setq LtsRGB1 (list))
  (setq LtsRGB2 (list))
  (setq LtsRGB3 (list))
  (setq LtsRGB4 (list))
  
  (setq Gi 0)
  (while
    (< Gi (- 255 iColor))
     (setq Gi (+ Gi iColor))
     (setq LtsRGB1 (append LtsRGB1 (list (list 0 Gi 255))))
  )

  (setq Bi 255)
  (while
    (> Bi iColor)
     (setq Bi (- Bi iColor))
     (setq LtsRGB2 (append LtsRGB2 (list (list 0 255 Bi))))
  )

  (setq Ri 0)
  (while
    (< Ri (- 255 iColor))
    (setq Ri (+ Ri iColor))
    (setq LtsRGB3 (append LtsRGB3 (list (list Ri 255 0))))
  )

  (setq Gii 255)
  (while
    (> Gii iColor)
     (setq Gii (- Gii iColor))
     (setq LtsRGB4 (append LtsRGB4 (list (list 255 Gii 0))))
  )
  (setq LtsRGB (append LtsRGB1 LtsRGB2 LtsRGB3 LtsRGB4))
  LtsRGB
)

Em là người xui tận mạng! Nhưng nhờ sự xui xẻo của em mà có thể nhiều người hưởng lợi. Theo 1 chú đã từng làm cho autodesk tiết lộ thì hãng này thú nhận là chúng nó cũng không sửa được (???). Hay là do chúng ta sử dụng phần mềm lậu nên chúng nó chơi đểu. Đó là lỗi của hàm list.

Ví dụ:

Command: (cons 219 (list 1.0 2.0 3.0)) => (219 1.0 2.0 3.0)

Command: (cons 220 (list 1.0 2.0 3.0)) => (220 1.0 2.0 3.0)

Application ERROR: Bad argument type


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


#2766 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 12 May 2016 - 08:15 AM

Em là người xui tận mạng! Nhưng nhờ sự xui xẻo của em mà có thể nhiều người hưởng lợi. Theo 1 chú đã từng làm cho autodesk tiết lộ thì hãng này thú nhận là chúng nó cũng không sửa được (???). Hay là do chúng ta sử dụng phần mềm lậu nên chúng nó chơi đểu. Đó là lỗi của hàm list.

Ví dụ:

Command: (cons 219 (list 1.0 2.0 3.0)) => (219 1.0 2.0 3.0)

Command: (cons 220 (list 1.0 2.0 3.0)) => (220 1.0 2.0 3.0)

Application ERROR: Bad argument type

Trời ơi! Không có cách khắc phục hả bác?

Em viết một list đơn giản mà không được ạ?

Em tạo một danh sách Red, Green, Blue

Ds1: Red = 0, Green tăng từ 0 đến 255 theo bước nhảy iColor cố định, Blue = 255

Ds2: Red = 0, Green =255, Blue giảm 255 về 0 hoặc gần về 0 (theo bước nhảy iColor cố định)

Ds3: Red tăng từ 0 đến 255 theo bước nhảy iColor cố định, Green = 255, Blue = 0

Ds4: Red =255, Green giảm 255 về 0 hoặc gần về 0 (theo bước nhảy iColor cố định), Blue = 0.

Sau đó gộp 4 danh sách với nhau.


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#2767 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 12 May 2016 - 08:17 AM

Em là người xui tận mạng! Nhưng nhờ sự xui xẻo của em mà có thể nhiều người hưởng lợi. Theo 1 chú đã từng làm cho autodesk tiết lộ thì hãng này thú nhận là chúng nó cũng không sửa được (???). Hay là do chúng ta sử dụng phần mềm lậu nên chúng nó chơi đểu. Đó là lỗi của hàm list.

Ví dụ:

Command: (cons 219 (list 1.0 2.0 3.0)) => (219 1.0 2.0 3.0)

Command: (cons 220 (list 1.0 2.0 3.0)) => (220 1.0 2.0 3.0)

Application ERROR: Bad argument type

Chạy thử 2 dòng trên với Cad 2015, 2016 có bản quyền thì bình thường.

Nhưng với Cad 2014 xxx thì bị lỗi giống như của bác HA.


  • 0

#2768 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 12 May 2016 - 08:47 AM

@Thanhduan: Cái khó ló cái khôn. Ví dụ cho em vài cách để xử tội chúng nó: 

1). Em đảo ngược vị ví của list chứa Ri từ (Ri 255 0) thành (0 255 Ri), sau khi lặp xong dùng mapcar để reverse lại.

2). Thay (list Ri 255 0) thành (vl-list* Ri 255 0).

3). Tự nghĩ sẽ ra...

@Gia_Bach: tôi đoán là autodesk dùng chiêu này để chơi khăm các người dùng lậu, hơn là bị lỗi.

Nói chung, trong hàm (list (list x a b c)), với x là biến số, thì chỉ lỗi nếu 220<=x<=239, còn nếu x nằm ngoài vùng đó thì OK.

Ta nghèo nên đành sống chung với lũ thôi.


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


#2769 tien2005

tien2005

    biết lệnh properties

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

Đã gửi 12 May 2016 - 01:58 PM

Thêm dấu chấm động vào

Command: (cons 220. (list 1.0 2.0 3.0)) => (220.0 1.0 2.0 3.0)


  • 0

#2770 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 12 May 2016 - 02:04 PM

integer khác real nhiều lắm.


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


#2771 tien2005

tien2005

    biết lệnh properties

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

Đã gửi 12 May 2016 - 10:26 PM

Đồng ý,

list trên vẫn có real, khi cần xử lý thì chuyển về integer


  • 0

#2772 nguyenvinhktkt

nguyenvinhktkt

    Chưa sử dụng CAD

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

Đã gửi 12 May 2016 - 10:49 PM

Chào anh!

em muốn hỏi bây giờ em muốn thống kê các đối tượng  ví dụ như đèn điện trong 1 bản cad, vì quá nhiều nên đếm thủ công rất khó khăn. Anh có lisp hay cách nào giúp em quét vùng để tự tính k ạ!

em cảm ơn!


  • 0

#2773 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 13 May 2016 - 12:30 PM

Các bác cho em hỏi xíu ạ!

Em muốn thay đổi chiều cao của Text Field thì làm như thế nào ạ? Em chỉ cần các bác gợi ý thôi ạ!

Em cảm ơn các bác nhiều.


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#2774 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 13 May 2016 - 02:09 PM

Các bác cho em hỏi xíu ạ!

Em muốn thay đổi chiều cao của Text Field thì làm như thế nào ạ? Em chỉ cần các bác gợi ý thôi ạ!

Em cảm ơn các bác nhiều.

Text field thì cũng là text, height cũng là assoc 40 thôi. Hay anh chưa hiểu ý em?


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


#2775 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 13 May 2016 - 02:42 PM

Text field thì cũng là text, height cũng là assoc 40 thôi. Hay anh chưa hiểu ý em?

Em bí quá nên nhờ Ketxu nên giải quyết dc rồi anh ạ! Nó liên quan đến textsize nên em điều chỉnh được rồi.


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#2776 quansla

quansla

    biết lệnh xclip

  • Members
  • PipPipPipPipPipPipPip
  • 641 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 25 May 2016 - 08:15 PM

[Hỏi về DCL dialog] em muốn hỏi một số vấn đề về dialog
Xin hỏi các bác trong Dialog của Cad em muốn làm một số điều sau đây, thì dùng lệnh/ từ khoá gì để làm được điều đó.
1. Mặc định khi Hộp thoại hiện lên sẽ đặt con trỏ chuột, (active key của Dialog) vào một key mà mình muốn, có áp dụng điều đó với key của edit_box { key .....} không?
2. Thay vì mặc định khi hiện H.Thoại là 1 key nào đó, giờ muốn khi chọn trong danh sách PopUp List1 thì mặc định của active key sau đó thay đổi do người lập trình quyết đinh?
Cảm ơn các bác
  • 0

#2777 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 25 May 2016 - 08:22 PM

Câu 1 ý 1 để đặt trỏ vào 1 key: is_default = true;

Câu 1 ý 2 để trỏ vào edit_box: dùng hàm mode_tile

Câu 2 chưa hiểu


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


#2778 quansla

quansla

    biết lệnh xclip

  • Members
  • PipPipPipPipPipPipPip
  • 641 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 25 May 2016 - 09:49 PM

Câu 1 ý 1 để đặt trỏ vào 1 key: is_default = true;
Câu 1 ý 2 để trỏ vào edit_box: dùng hàm mode_tile
Câu 2 chưa hiểu

Cảm ơn bác, em đã thử,
1. với is_deafault đã từng dùng, không thích lắm
2. em đọc Help thì mode_tile dùng với cấu trúc (mode_tile key flag)
flag nhận giá trị interger 0->4, giá trị 1,0 em thường dùng, giá trị 2->4 không dùng bao giờ đang tìm hiểu, có vẻ nó thoả mãn được nhu cầu của e.
3. Nếu 2 làm được, 3 em làm được, cảm ơn bác
  • 0

#2779 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 25 May 2016 - 11:23 PM

1. Không thích thì dùng (mode_tile key 2)


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


#2780 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 26 May 2016 - 05:22 PM

Mọi người cho hỏi tí:

Tại sao hàm vla-ZoomCenter khi chạy trong vòng lặp n lần thì dòng "command" cũng bị nhảy theo n lần, khiến nó nháy nháy ở dòng command, dù đã setvar cmdecho?


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