Đến nội dung


Hình ảnh
- - - - -

[Hỏi]DCL


  • Please log in to reply
18 replies to this topic

#1 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 04 April 2011 - 09:47 PM

Mình có cái Lisp như thế này:
(defun c:test ()
(setq dcl_id (load_dialog "test1.dcl"))
;;;--- Load the dialog definition if it is not already loaded
(if (not (new_dialog "TEST1" dcl_id ))
(progn
(alert "The TEST1.DCL file could not be loaded!")
(exit)
)
)
;;;--- If an action event occurs, do this function
(action_tile "pick" "(setq ddiag 1)(done_dialog)")
(action_tile "cancel" "(setq ddiag 2)(done_dialog)")
(start_dialog)
(unload_dialog dcl_id)
;;;--- If the user pressed the PICK button
(if(= ddiag 1)
(Pick)
)
;;;--- If the user pressed the Cancel button
(if(= ddiag 2)
(princ "\nCancelled!")
)
(princ)
)
(defun Pick(); Pick chon blok
(setq maublk (car (entsel "\nChon Block khung ten: "))
)
)

DCL:

TEST1 : dialog {
label = "TESS1";
: boxed_row {
: button {
key = "pick";
label = " PICK ";
is_default = true;
}
: button {
key = "cancel";
label = " Cancel ";
is_default = false;
is_cancel = true;
}

}
}

Cho e hỏi làm sao để sau khi chọn nút Pick thì nó lại hiện lên bảng chọn tiếp!!!
  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#2 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 04 April 2011 - 11:42 PM

Hi. E làm dc rồi các bác ạ, thanks :lol:
  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#3 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 10 November 2011 - 02:55 PM

Mọi người cho e hỏi nhanh 1 câu là : làm sao để cái text trong Edit_box nó nằm bên phải nhỉ ^^ Cad e đang đơ rồi ^^
  • 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


#4 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 10 November 2011 - 03:12 PM

Mọi người cho e hỏi nhanh 1 câu là : làm sao để cái text trong Edit_box nó nằm bên phải nhỉ ^^ Cad e đang đơ rồi ^^


Chắc là chịu thôi Ket à!
  • 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.


#5 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 10 November 2011 - 03:44 PM

E Gia Cát Dự là cái alignment nó chỉ có tác dụng sắp xếp thằng edit_box này trong tile mẹ, chứ không có cho Text trong chính edit_box, hóa ra đúng thật ạ ? Hề hề
  • 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


#6 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 10 November 2011 - 03:49 PM

E Gia Cát Dự là cái alignment nó chỉ có tác dụng sắp xếp thằng edit_box này trong tile mẹ, chứ không có cho Text trong chính edit_box, hóa ra đúng thật ạ ? Hề hề


Đúng là thằng alignment là để xác định vị trí của edit_box trong dialoge chứ không phải xác định vị trí text trong edit_box.
  • 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.


#7 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 10 November 2011 - 09:19 PM

Ôi, ketxu gà DCL quá.Mọi người cho ketxu hỏi, khi gán action_tile vào 1 edit_box, hình như là phải đến lúc thay đổi focus thì nó mới apply đúng không ?
Ví dụ có 2 edit_box A và B. Đặt action cho edit_box A là hiển thị bên edit_box B nội dung tương tự => kết quả là khi đánh xong text ở A rồi, phải pick chuột ra chỗ khác mới thấy nhảy text ở B. Vậy có cách nào khắc phục không ?
(Cái này hình như nói ở bên topic Tiếng Việt trong hộp thoại rồi thì phải ^^)
  • 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


#8 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 10 November 2011 - 09:30 PM

Ôi, ketxu gà DCL quá.Mọi người cho ketxu hỏi, khi gán action_tile vào 1 edit_box, hình như là phải đến lúc thay đổi focus thì nó mới apply đúng không ?
Ví dụ có 2 edit_box A và B. Đặt action cho edit_box A là hiển thị bên edit_box B nội dung tương tự => kết quả là khi đánh xong text ở A rồi, phải pick chuột ra chỗ khác mới thấy nhảy text ở B. Vậy có cách nào khắc phục không ?
(Cái này hình như nói ở bên topic Tiếng Việt trong hộp thoại rồi thì phải ^^)

Câu hỏi của Ket cũng là câu trả lời rồi đó! Theo những gì tôi biết thì không thể. Cái này cũng có nhược nhưng cũng có ưu:
* Nhược: ít nhất là không thoả mãn nhu cầu của Ket trong trường hợp này.
* Ưu: khi nhập liệu vào edit_box chúng ta thường vẫn phải kèm theo 1 hàm để kiểm tra số liệu nhập (tương tự initget trong các câu lisp vậy). Do đó, nếu nhập đến đâu mà nó apply đến đó thì nguy hiểm lắm. VD: Ket muốn số a nhập vào phải thoả 15<a<20, và Ket dự định nhập a=17. Tuy nhiên, khi Ket mới nhập xong số 1 (mà chưa nhập số 7) thì nếu apply sẽ bị lỗi ngay, đúng không.
Biết đến đâu nói đến đó vậy thôi.
Thân thương!
P/S: bên Topic đó không hề thấy bàn về vấn đề này Ket ạ.
  • 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.


#9 LoveLisp

LoveLisp

    biết lệnh extend

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

Đã gửi 29 November 2012 - 01:17 PM

Mình có đoạn DCL như sau:


: radio_button {
label = "Button-Label";
key = "Button-Key";
}
Mình muốn Button-Label thay đổi động theo tham số truyền vào từ AutoLisp có được không? Mình đã thử dùng hàm (set_tile mà không có tác dụng.
  • 0

#10 soluuhuong2903

soluuhuong2903

    biết vẽ rectang

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

Đã gửi 29 November 2012 - 01:50 PM

Mình có đoạn DCL như sau:


: radio_button {
label = "Button-Label";
key = "Button-Key";
}
Mình muốn Button-Label thay đổi động theo tham số truyền vào từ AutoLisp có được không? Mình đã thử dùng hàm (set_tile mà không có tác dụng.

ý lovelisp là radio button nhớ lần chọn trước ấy hả
  • 0

#11 LoveLisp

LoveLisp

    biết lệnh extend

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

Đã gửi 29 November 2012 - 02:02 PM

Không bạn ạ! Hộp thoại của mình như thế này:
Hình đã gửi
Mình muốn:
- Khi chọn vào nút "Add" thì nút "Select1" sẽ biến thành "Select addends".
- Khi chọn vào nút "Subtract" thì nút "Select1" sẽ biến thành "Select subtrahend".
- Khi chọn vào nút "Multiply" thì nút "Select1" sẽ biến thành "Select multiplier".
- Khi chọn vào nút "Divide" thì nút "Select1" sẽ biến thành "Select dividend".
  • 0

#12 soluuhuong2903

soluuhuong2903

    biết vẽ rectang

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

Đã gửi 29 November 2012 - 02:47 PM

mình nghĩ là ko được.set_tile chỉ để đặt giá trị cho một nút điều khiển.còn đặt label chắc là ko nổi.
  • 1

#13 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 29 November 2012 - 03:03 PM

Không bạn ạ! Hộp thoại của mình như thế này:
Hình đã gửi
Mình muốn:
- Khi chọn vào nút "Add" thì nút "Select1" sẽ biến thành "Select addends".
- Khi chọn vào nút "Subtract" thì nút "Select1" sẽ biến thành "Select subtrahend".
- Khi chọn vào nút "Multiply" thì nút "Select1" sẽ biến thành "Select multiplier".
- Khi chọn vào nút "Divide" thì nút "Select1" sẽ biến thành "Select dividend".

bạn thay button bằng image_button sẽ biến được
  • 1

#14 LoveLisp

LoveLisp

    biết lệnh extend

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

Đã gửi 29 November 2012 - 03:03 PM

Nghĩa là thuộc tính Label của button là "chết", không thay đổi được hả bạn?
  • 0

#15 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 29 November 2012 - 06:24 PM

Nếu bạn vẫn thích thay đổi label của button thì trong trường hợp đơn giản, ví dụ với dialoge bạn gởi lên, bạn có thể tạo thêm các dialoge trong file dcl, để khi 1 radio_button được chọn thì nó sẽ unload dialoge này và load dialoge kia.
  • 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.


#16 LoveLisp

LoveLisp

    biết lệnh extend

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

Đã gửi 30 November 2012 - 08:55 AM

Cách của bác Hạ là đơn giản nhất, có điều, sau khi chọn radio_button thì màn hình sẽ bị nhấp nháy một lần để tắt và tải hộp thoại khác.
  • 0

#17 LoveLisp

LoveLisp

    biết lệnh extend

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

Đã gửi 30 November 2012 - 09:05 AM

Cho mình hỏi, muốn tạo đối tượng trong hộp thoại là text, cho bôi đen và copy nhưng không cho sửa (như ô màu đỏ) thì dùng loại đối tượng nào trong DCL?
Hình đã gửi
  • 0

#18 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 30 November 2012 - 09:10 AM

Cách của bác Hạ là đơn giản nhất, có điều, sau khi chọn radio_button thì màn hình sẽ bị nhấp nháy một lần để tắt và tải hộp thoại khác.

Tất nhiên là như thế rồi! Nó hoán đổi dialoge mà. Với lại, nếu dialoge cần đọc số liệu nhiều thì chờ hơi bị lâu nữa.
Có mẹo này nữa, để khỏi hoán đổi dialoge:
Bạn tách button "Select1" ra làm 2 column liền kề nhau: column1 là text, column2 là button (ví dụ chỉ gồm dấu "<<"). Khi chọn 1 radio_button thì value của text thay đổi theo.
  • 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.


#19 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 30 November 2012 - 09:35 AM

Cho mình hỏi, muốn tạo đối tượng trong hộp thoại là text, cho bôi đen và copy nhưng không cho sửa (như ô màu đỏ) thì dùng loại đối tượng nào trong DCL?
Hình đã gửi

1). Dialoge này không tạo bằng DCL.
2). Bạn dùng edit_box nhưng gán action link đến một giá trị nào đó thì sửa sẽ không hiệu nghiệm. Dù bạn có delete nó nhưng khi mouse nhảy qua tile khác thì nó trở về giá trị cũ ngay.
  • 2

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