Đến nội dung


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

Giao diện hộp thoại trong AutoLisp


  • Please log in to reply
208 replies to this topic

#81 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 29 June 2010 - 05:16 PM

Nghỉ xem WC 5 phút giải đáp với các bác ơi, Các cao thủ đau hết rồi ta, bế quan luyện công hết nà tết em gòi...............

Hề hề hề,
Chào bác dkkx3a,
Cái vụ này muốn cứu bồ, nhưng cứu không nổi vì lực bất tòng tâm.
Trong các lệnh về hộp thoại, mình thấy có các lệnh width và height để xác định kích thước các nút lệnh và các ô nhập liệu. Tuy nhiên khi sử dụng thì mình lại thấy lúc có lúc không.
Bác thử xài nó xem có hiệu quả gì không nhé.
Đây là một khúc lệnh tạo kích thước cho button:
: button {
key = "button1;
label = "Okay";
is_tab_stop = true;
is_cancel = false;
is_default = true;
width = 15;
height = 10;
mnemonic = "B";
}

Còn cái space_0 ý muốn nói là nó cần có một khoảng cách nhất định giữa các button hay các cell trong hộp thoại. Sử dụng cái space này để hiệu chỉnh cái giao diện của dialog cho ngon mắt.
space_1 ý muốn nói là khoảng cách giữa các button hay các cell trong hộp thoại được sử dụng ở mức độ tối thiểu và không điều chỉnh chi được nữa

Ấy là mấy thứ mà mình mót được của các cụ bề trên, còn xài thì chửa xài được bao nhiêu. Bác dùng thử coi 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.

#82 18011985

18011985

    biết lệnh properties

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

Đã gửi 30 June 2010 - 12:10 PM

Mình trình bày dialog chưa đẹp, các bạn cho mình hỏi, mình có lsp sau:
(defun c:aaa (/ dcl_id namefile fn1 fn)
(setvar "cmdecho" 0)
(dialog)
(princ)
); End defun
;;;;;;---------------------------Xu ly du lieu dau vao-------------------------------
(defun Value ()
(setq fn1 namefile)
)
(defun Get_value ()
(set_tile "fn" fn1)
)
(defun namefile1 ()
(setq namefile "abc")
)
(defun dialog ()
(namefile1)
(Value)
(setq dcl_id (load_dialog "123.DCL"))
(if (not (new_dialog "a123" dcl_id))
(exit))
(Get_value)
(action_tile "cancel" "(done_dialog)")
(action_tile "accept" "(done_dialog)")
(start_dialog)
(unload_dialog dcl_id)
)

Và DCL
a123 : dialog { label = "Test dialog";
:column {
:boxed_column {
label = "Xö lý ®iÓm";
:row {
:toggle {
key = "xf";
}
:text {
label = "";
edit_width = 50;
key = "fn";
}
:button {
key = "br";
label = "§æi";
}
}
}
:spacer {height=1;}
ok_cancel;
}
}

Mình muốn chữ abc gần ngay sát nút toggle các bạn chỉ cho mình cách trình bày nhé. Cảm ơn các bạn.
  • 0
Trăng 16 trăng tròn
Em 16 bụng ... như trăng

Hướng dẫn sử dụng diễn đàn:
Để cảm ơn hay bài viết có ích: Ấn dấu + cuối bài.
Không vừa lòng hay bài spam: Ấn dấu - cuối bài.

#83 dkkx3a

dkkx3a

    biết lệnh trim

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

Đã gửi 01 July 2010 - 10:59 AM

Hề hề hề,
Chào bác dkkx3a,
Cái vụ này muốn cứu bồ, nhưng cứu không nổi vì lực bất tòng tâm.
Trong các lệnh về hộp thoại, mình thấy có các lệnh width và height để xác định kích thước các nút lệnh và các ô nhập liệu. Tuy nhiên khi sử dụng thì mình lại thấy lúc có lúc không.
..........
Ấy là mấy thứ mà mình mót được của các cụ bề trên, còn xài thì chửa xài được bao nhiêu. Bác dùng thử coi nhé....


Vấn đề hôm trước mình hỏi các bác, nay tham khảo cái này cũng giải quyết được chút vấn đề, Cái DCL này:
about : dialog{
label="Gioithieu";
width=53;height=18;
spacer;
spacer;


Nhưng vẫn còn chút thắc mắc, nay mong các anh chị (các Bác) giải đáp hộ: các giá trị số trong WIDTH hay HEIGHT là 53 và 18 là chọn như thế nào, giá trị đơn vị nhỏ nhất của no tương quan ra sao, do có khi ở máy mình thì nhìn cái Dialog đẹp đẹp nhưng mang sang máy khác (nhất là màn hình tinh thể) thì nó biến dạng. Mong các bác giải đáp để em hoàn thiện tiện ích của mình, cảm ơn các bác. Thanks
  • 0
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......

#84 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 07 July 2010 - 09:12 AM

Anh gia_bach và các bác trên diễn đàn cho Tue_NV hỏi thêm là : để tạo 1 dialog tự động trải ra ở bên phải khi nhấn button thì mình làm thế nào ạ?. Ví dụ như trong dialog của lệnh Hatch này, khi nhấn button (được khoanh tròn màu đỏ) thì 1 dialoag tự động ở bên phải trải ra. Và khi ta nhấn button thì dialoag trải ra đó được tự động thu vào.

Hình đã gửi

- Một vấn đề nữa mà Tue_NV băn khoăn muốn hỏi là làm sao ta có thể tạo được nhiều TAB trong 1 dialog?. Ví dụ như trong dialog Hatch and Gradient thì gồm có Tab Hatch và Tab Gradient. Làm thế nào để tạo được 2 Tab như vầy? Mình thấy nếu tạo được dialog như vậy thì sẽ có nhiều chức năng hơn, có ích hơn
Rất mong nhận được sự giúp đỡ.
Tue_NV chân thành cảm ơn.
  • 0

#85 nataca

nataca

    biết lệnh adcenter

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

Đã gửi 07 July 2010 - 10:02 AM

Anh gia_bach và các bác trên diễn đàn cho Tue_NV hỏi thêm là : để tạo 1 dialog tự động trải ra ở bên phải khi nhấn button thì mình làm thế nào ạ?. Ví dụ như trong dialog của lệnh Hatch này, khi nhấn button (được khoanh tròn màu đỏ) thì 1 dialoag tự động ở bên phải trải ra. Và khi ta nhấn button thì dialoag trải ra đó được tự động thu vào.

Hình đã gửi

- Một vấn đề nữa mà Tue_NV băn khoăn muốn hỏi là làm sao ta có thể tạo được nhiều TAB trong 1 dialog?. Ví dụ như trong dialog Hatch and Gradient thì gồm có Tab Hatch và Tab Gradient. Làm thế nào để tạo được 2 Tab như vầy? Mình thấy nếu tạo được dialog như vậy thì sẽ có nhiều chức năng hơn, có ích hơn
Rất mong nhận được sự giúp đỡ.
Tue_NV chân thành cảm ơn.

Theo em thì bác đang hỏi đúng điểm yếu của Autolisp rồi đấy. Em cũng mày mò thử nhưng cuối cùng đành chấp nhận sự thật phũ phàng này
  • 1

#86 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 08 July 2010 - 08:05 AM

Theo em thì bác đang hỏi đúng điểm yếu của Autolisp rồi đấy. Em cũng mày mò thử nhưng cuối cùng đành chấp nhận sự thật phũ phàng này

Cảm ơn Nataca đã reply. Nhưng theo Tue_NV nghĩ rằng chắc phải có 1 cách nào đấy để tạo ra nhiều TAB trong 1 dialog, hay là tạo ra 1 buton như Tue_NV đã trình bày. Nếu tạo được 1 dialog như thế sẽ có nhiều tiện ích hơn, có ích cho nhiều người sử dụng hơn. Cảm ơn Natâc đã quan tâm và rất mong có bác trên diễn đàn mình biết về cái này xin cho một chút ý kiến về vấn đề này chút ạ.
Tue_NV xin cảm ơn

Anh gia_bach và các bác trên diễn đàn cho Tue_NV hỏi thêm là : để tạo 1 dialog tự động trải ra ở bên phải khi nhấn button thì mình làm thế nào ạ?. Ví dụ như trong dialog của lệnh Hatch này, khi nhấn button (được khoanh tròn màu đỏ) thì 1 dialoag tự động ở bên phải trải ra. Và khi ta nhấn button thì dialoag trải ra đó được tự động thu vào.

Hình đã gửi

- Một vấn đề nữa mà Tue_NV băn khoăn muốn hỏi là làm sao ta có thể tạo được nhiều TAB trong 1 dialog?. Ví dụ như trong dialog Hatch and Gradient thì gồm có Tab Hatch và Tab Gradient. Làm thế nào để tạo được 2 Tab như vầy? Mình thấy nếu tạo được dialog như vậy thì sẽ có nhiều chức năng hơn, có ích hơn


  • 0

#87 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 08 July 2010 - 10:43 AM

Cảm ơn Nataca đã reply. Nhưng theo Tue_NV nghĩ rằng chắc phải có 1 cách nào đấy để tạo ra nhiều TAB trong 1 dialog, hay là tạo ra 1 buton như Tue_NV đã trình bày. Nếu tạo được 1 dialog như thế sẽ có nhiều tiện ích hơn, có ích cho nhiều người sử dụng hơn. Cảm ơn Natâc đã quan tâm và rất mong có bác trên diễn đàn mình biết về cái này xin cho một chút ý kiến về vấn đề này chút ạ.
Tue_NV xin cảm ơn

Ssg cũng đồng quan điểm với bạn Nataca. Bó tay bạn ơi, không thể được chứ không phải là khó!
Lisp có những ưu thế tuyệt vời và cũng có những nhược điểm... đáng buồn, chính là cái mà bạn đã nêu. Nếu có nhu cầu đa dạng và phức tạp về giao diện người dùng như vậy thì nên dùng các công cụ lập trình khác, như VB, VBA, C++... Tuy nhiên, những công cụ "non-lisp" cũng có những nhược điểm rất lớn khi làm việc với AutoCAD (trên diễn đàn cũng có nhiều bài phân tích rồi). Được cái này thì mất cái kia!
  • 1

#88 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 08 July 2010 - 11:02 AM

Anh gia_bach và các bác trên diễn đàn cho Tue_NV hỏi thêm là : để tạo 1 dialog tự động trải ra ở bên phải khi nhấn button thì mình làm thế nào ạ?. Ví dụ như trong dialog của lệnh Hatch này, khi nhấn button (được khoanh tròn màu đỏ) thì 1 dialoag tự động ở bên phải trải ra. Và khi ta nhấn button thì dialoag trải ra đó được tự động thu vào.

- Một vấn đề nữa mà Tue_NV băn khoăn muốn hỏi là làm sao ta có thể tạo được nhiều TAB trong 1 dialog?. Ví dụ như trong dialog Hatch and Gradient thì gồm có Tab Hatch và Tab Gradient. Làm thế nào để tạo được 2 Tab như vầy? Mình thấy nếu tạo được dialog như vậy thì sẽ có nhiều chức năng hơn, có ích hơn
Rất mong nhận được sự giúp đỡ.
Tue_NV chân thành cảm ơn.

*Cái nút dùng mở rộng thì thay đổi cách nghỉ 1 chút đừng chăm chú là phải mở rộng mà đi theo con đường hơi bá đạo 1 chút:
-Thiết kế 1 hộp thoại 1 trước khi mở rộng, 1 sau khi mở rộng.
-Trong trong hộp thoại trước khi mở rộng thì nút đó dùng để gọi hộp thoại sau khi mở rộng.
-Trong trong hộp thoại sau khi mở rộng thì nút đó dùng để gọi hộp thoại trước khi mở rộng.
Hiệu ứng cũng tương đương không đến nổi nào. Tuệ đã thử cái lisp tổng hợp của mình thì thấy phần thư viện nút next và Previous là dùng cách này.
*Cái nhiều TAB trong 1 dialog thì hồi bộ lisp hổ trợ cho cad12 của anh kia dùng mình thấy có nên chắc là viết được nhưng đúng là mình tìm sách ko thấy nói thèn này. Bí lắm thì cũng dùng cách trên:
-Thiết kế 1 Nhiều hộp thoại trong đó có cái chung là có hàng button ngang hay dọc gì tùy.
-Khi nhấn vào button nào thì gọi hộp thoại đó lên.
  • 2

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


#89 dkkx3a

dkkx3a

    biết lệnh trim

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

Đã gửi 08 July 2010 - 12:29 PM

*Cái nút dùng mở rộng thì thay đổi cách nghỉ 1 chút đừng chăm chú là phải mở rộng mà đi theo con đường hơi bá đạo 1 chút:
-Thiết kế 1 hộp thoại 1 trước khi mở rộng, 1 sau khi mở rộng.
-Trong trong hộp thoại trước khi mở rộng thì nút đó dùng để gọi hộp thoại sau khi mở rộng.
-Trong trong hộp thoại sau khi mở rộng thì nút đó dùng để gọi hộp thoại trước khi mở rộng.
Hiệu ứng cũng tương đương không đến nổi nào. Tuệ đã thử cái lisp tổng hợp của mình thì thấy phần thư viện nút next và Previous là dùng cách này.
*Cái nhiều TAB trong 1 dialog thì hồi bộ lisp hổ trợ cho cad12 của anh kia dùng mình thấy có nên chắc là viết được nhưng đúng là mình tìm sách ko thấy nói thèn này. Bí lắm thì cũng dùng cách trên:
-Thiết kế 1 Nhiều hộp thoại trong đó có cái chung là có hàng button ngang hay dọc gì tùy.
-Khi nhấn vào button nào thì gọi hộp thoại đó lên.


Cái này cũng ko phải là không cách, bác dùng hỗ trợ ngoài xem, có cái phần mềm này nè, bác nghiên cứu nếu thấy IPÓC thì nghiên cứu và chia sẽ lại với anh em:
http://www.objectdcl...7.3.0-Setup.zip
  • 4
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......

#90 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 08 July 2010 - 10:25 PM

Cái này cũng ko phải là không cách, bác dùng hỗ trợ ngoài xem, có cái phần mềm này nè, bác nghiên cứu nếu thấy IPÓC thì nghiên cứu và chia sẽ lại với anh em:
http://www.objectdcl...7.3.0-Setup.zip

Cám ơn bạn đã gợi ý một hướng đi mới cho các anh em đã "lỡ" mê lisp nhưng cứ tức anh ách vì những công cụ DCL cực kỳ... nghèo nàn của nó! Theo gợi ý của bạn, ssg đã làm thử được cái này:
Hình đã gửi
Bấm vào button "Đi Nam Phi..." -> hiện ra lời chào của FIFA!

Lisp Code:

;;;-------------------------------------------------
(defun ObjectDCL_LoadArx()
(if (not (member "objectdcl.17.arx" (arx)))
(arxload "objectdcl.17.arx" "ObjectDCL.17.arx not found.")
)
)
;;;-------------------------------------------------
(defun c:DclForm1_TextButton1_onclicked ()
(Odcl_MessageBox "WELCOME TO WORLD CUP 2010!" "FIFA MESSAGE"))
;;;-------------------------------------------------
(defun C:VD()
(objectDCL_LoadArx)
(Odcl_LoadProject "Hello.odc" T)
(Odcl_Form_Show Hello_DclForm1)
(princ)
)
;;;-------------------------------------------------


Qua đó, ssg có vài nhận xét sau:
Link bạn post mới chỉ là phần ObjectDCL Editor, tức là chỉ tạo được cái "vỏ". Muốn có cả cái "ruột" phải thêm phần ObjectDCL ARX nữa (cũng trong website đó luôn).

Trình tự thực hiện tổng quát như sau:
1- Dùng ObjectDCL Editor để tạo form và các control tùy thích. Bước này khỏe re, chỉ việc drag and drop rồi chỉnh sửa, y như các công cụ mang tính "visual" khác. Kết quả là file *.odc
2- Trong ObjectDCL có các công cụ hỗ trợ để viết code chèn vào file *.lsp. Thao tác chủ yếu là: hiểu công dụng của các event và method, copy và paste, sau đó sửa chút ít theo ý riêng.
3- Load lisp và chạy. Trong code lisp phải có thao tác load "ObjectDCL.xx.arx" (ví dụ của ssg là function ObjectDCL_LoadArx), trong đó nó đã định nghĩa sẵn các functions để ta gọi. Ví dụ: (Odcl_MessageBox "WELCOME TO WORLD CUP 2010!" "FIFA MESSAGE"))

Không muốn làm các bạn nản, nhưng sau một hồi "vọc phá", ssg thấy có 2 vấn đề chẳng mê chút nào:
1- Cái mà ssg down được chỉ là bản trial, dùng 15 ngày là die, muốn dùng nghiêm chỉnh phải có $!
2- Trong ObjectDCL.xx.arx nói trên, xx là chữ số biểu diễn version của ObjectDCL, phù hợp với version của AutoCAD tương ứng. Mà đã phân biệt version tức là sẽ có sự phiền toái khi chạy: chương trình có thể chạy tốt trên máy này nhưng có thể sẽ không chạy được ở máy kia. Tóm lại, dùng ObjectDCL cũng không hơn gì những công cụ "non-lisp" khác. Nhìn ở mức tổng quan (và cũng có phần hơi chủ quan), ssg thấy có khi "chơi" bằng VB hoặc VBA còn sướng hơn!
  • 3

#91 VUVUZELA

VUVUZELA

    biết lệnh chamfer

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

Đã gửi 25 July 2010 - 08:55 PM

Cái này dễ lắm Tàu ơi
Chú cứ vào thư mục C:\Design\MY-TOOL\WALL-SEC.LSP mà 533 có mà nghiên cứu
chỉ cần thêm vài lệnh con khi action vào ô nhập dữ liệu là OK

Làm 533 thì nhớ giữ 1 chút đồ nghề mà phòng thân nhé, không thì có ngày "tay không trắng tay lại về không" và đâu đâu cũng thấy nhà nhà xài phần mềm (của tui), người người xài phần mềm (cũng của tui) ... HACKER nhiều lắm chú ạ
Chú đọc thêm bài này nhé
http://www.cadviet.c...showtopic=21680
  • 1

Hệ thống Liên Kết, Thiết Kế Tự Động

ttps://www.facebook...etThietKeTuDong


#92 VUVUZELA

VUVUZELA

    biết lệnh chamfer

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

Đã gửi 28 July 2010 - 08:58 AM

Cái này bạn chỉ cần khai báo trong câu lệnh mà thôi
Ví dụ như :
- Chạy file. Bấm câu lệnh ===> vô hộp thoại (input)
- Khi bấm phím OK thì sẽ về màn hình AutoCad chọn đối tượng
- Xong ==> thêm dòng câu lệnh vô lại hộp thoại (input) lại
(defun c:1 (/)
(input)
(setq ss (ssget))
;;; cập nhật dữ liệu mới vô hộp thoại
(input)
)
Tham khảo tại C:\Design\MY-LISP\ddgrid.lsp
Có gì chưa hiểu thì pm tiếp
  • 0

Hệ thống Liên Kết, Thiết Kế Tự Động

ttps://www.facebook...etThietKeTuDong


#93 pfievxd

pfievxd

    biết vẽ spline

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

Đã gửi 19 December 2010 - 03:47 PM

Em có 1 thắc mắc liên quan đến hộp thoại thế này, ko biết trong topic đã có chưa, em tạo một hộp thoại để lấy dữ liệu đầu vào, theo thói quen dùng cad thi thoảng nhấn escape 1 phát (^^) thế là Cad nó treo luôn, hum trước vứt đấy lượn đi chơi cả tiếng về vẫn thấy Cad chết ngẻo! Kiểm tra lại nút Cancel thì tình trạng cũng tương tự, ko bít là nguyên nhân do đâu nữa. hX, Các bác giúp em mấy :undecided:. Thank so so much! Ah` đây là đoạn Code điều khiển nút cancel :(action_tile "cancel" "(done_dialog)(exit)") (ko sai sót gì phải ko ah?!)
;----------------------------------------------------
Chẹp, em giải quyết xong roài, bỏ phứt cái dòng điều khiển nút cancel đi, (chả hiểu sao cái lệnh exit lại ko dùng được?!)
Giá mà chèn được ảnh minh họa với hình cho button như cái hình này thì quá tuyệt nhỉ :leluoi:

Hình đã gửi


  • 0

#94 Noob_Lisp

Noob_Lisp

    Chưa sử dụng CAD

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

Đã gửi 20 December 2010 - 09:30 AM

Nhân tiện đây cho hỏi về dcl một chút nữa (vì mình còn gà DCL lắm)
Làm thế nào để thực hiện lệnh của một Button xong thì sẽ quay trở lại hộp thoại để khai báo tiếp các tham số khác
Ví dụ: mình có dcl trong đó có button chọn đối tượng, khi nhấn button này thì sẽ chuyển sang màng hình cad để chọn đối tượng => chọn xong sẽ hiện lại hộp thoại (tất nhiên dữ liệu của các đối tượng vừa chọn đó sẽ lưu lại làm đối tượng chọn khi nhấn nút button OK)
Thanks and regards


Bạn sử dụng vòng lặp cho hộp thoại.

(setq butt 2)
(while (> butt 1)

(new_dialog...)
(action_tile "butt1" "(done_dialog 2)")
(action_tile "butt2" "(done_dialog 3)"

(setq butt (start_dialog))
(cond
((= butt 2) (thuchienlenh2))
((= butt 3) (thuchienlenh3))
)
)
(unload_dialog)

  • 0

#95 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 11 January 2011 - 04:26 PM

Chào các bác
Xin các bác cho Tue_NV hỏi :
Có cách nào thiết lập 1 biến khi mình nhấn vào Button/ hay không nhấn vào Button hay không?
Ví dụ : Có 1 Button B trong hộp thoại DCL
Khi ta nhấn vào Button B -> Thiết lập 1 biến a=1
Còn không nhấn vào Button B -> Xem như biến a=NIL

Mong các bác chỉ giúp. (Gợi ý cách làm cũng được ạ)
Tue_NV xin cảm ơn.
  • 0

#96 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 11 January 2011 - 05:19 PM

Chào các bác
Xin các bác cho Tue_NV hỏi :
Có cách nào thiết lập 1 biến khi mình nhấn vào Button/ hay không nhấn vào Button hay không?
Ví dụ : Có 1 Button B trong hộp thoại DCL
Khi ta nhấn vào Button B -> Thiết lập 1 biến a=1
Còn không nhấn vào Button B -> Xem như biến a=NIL

Mong các bác chỉ giúp. (Gợi ý cách làm cũng được ạ)
Tue_NV xin cảm ơn.

Bạn Tue_NV hãy khai báo biến a là biến cục bộ. Sau đó viết dòng lệnh (setq a 1) vào trong hàm action_tile.
VD:
(defun TEST ( / a)
...
(action_tile "nutB" "(setq a 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.


#97 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 11 January 2011 - 08:08 PM

Bạn Tue_NV hãy khai báo biến a là biến cục bộ. Sau đó viết dòng lệnh (setq a 1) vào trong hàm action_tile.
VD:
(defun TEST ( / a)
...
(action_tile "nutB" "(setq a 1)")
...

Cảm ơn bạn.
Mình quên nói thêm là trước đó mình đã thiết lập giá trị a là giá trị nào đó. Ví dụ a=6, chẳng hạn
Ví dụ :
(defun TEST ( / a)
̣̣(setq a 6)
...
(action_tile "nutB" "(setq a 1)")
...

Biến a khi kết thúc chương trình là biến lưu. Kết thúc chương trình là 1 phép gán => Nên không thể khai báo a là biến cục bộ đươc.
Nhấn vào Button "nutB" để thiết lập biến a =1 thì mình đã biết cách
Vấn đề làm sao là khi khởi động hộp thoại lên rồi. Mình không nhấn vào Button "nutB" thì biến a được thiết lập là NIL (hoặc 1 giá trị nào đó) (khi kết thúc lệnh)
Ví dụ không nhấn vào button B thì a được gán là giá trị NIL (setq a NIL), hoặc 1 giá trị nào đó (setq a 8) (khi kết thúc lệnh)=> Nên không thể khai báo a là biến cục bộ đươc. a là biến được lưu lại khi kết thúc chương trình.
a=NIL hoặc 1 giá trị nào đó khi User không nhấn vào Button B

Các bác có cách nào không?
Thành thật xin lỗi vì mình trình bày chưa được rõ ràng
  • 0

#98 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 11 January 2011 - 09:09 PM

Cảm ơn bạn.
Mình quên nói thêm là trước đó mình đã thiết lập giá trị a là giá trị nào đó. Ví dụ a=6, chẳng hạn
Ví dụ :
(defun TEST ( / a)
̣̣(setq a 6)
...
(action_tile "nutB" "(setq a 1)")
...

Biến a khi kết thúc chương trình là biến lưu. Kết thúc chương trình là 1 phép gán => Nên không thể khai báo a là biến cục bộ đươc.
Nhấn vào Button "nutB" để thiết lập biến a =1 thì mình đã biết cách
Vấn đề làm sao là khi khởi động hộp thoại lên rồi. Mình không nhấn vào Button "nutB" thì biến a được thiết lập là NIL (hoặc 1 giá trị nào đó) (khi kết thúc lệnh)
Ví dụ không nhấn vào button B thì a được gán là giá trị NIL (setq a NIL), hoặc 1 giá trị nào đó (setq a 8) (khi kết thúc lệnh)=> Nên không thể khai báo a là biến cục bộ đươc. a là biến được lưu lại khi kết thúc chương trình.
a=NIL hoặc 1 giá trị nào đó khi User không nhấn vào Button B

Các bác có cách nào không?
Thành thật xin lỗi vì mình trình bày chưa được rõ ràng

Mình hơi khó hiểu lời giải thích của bạn, nhưng có phải thế này không?
(defun TEST ()
̣̣(setq a nil)
...
(action_tile "nutB" "(setq a 6)")
...
  • 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.


#99 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 11 January 2011 - 11:29 PM

Cảm ơn bạn.
Mình quên nói thêm là trước đó mình đã thiết lập giá trị a là giá trị nào đó. Ví dụ a=6, chẳng hạn
Ví dụ :
(defun TEST ( / a)
̣̣(setq a 6)
...
(action_tile "nutB" "(setq a 1)")
...

Biến a khi kết thúc chương trình là biến lưu. Kết thúc chương trình là 1 phép gán => Nên không thể khai báo a là biến cục bộ đươc.
Nhấn vào Button "nutB" để thiết lập biến a =1 thì mình đã biết cách
Vấn đề làm sao là khi khởi động hộp thoại lên rồi. Mình không nhấn vào Button "nutB" thì biến a được thiết lập là NIL (hoặc 1 giá trị nào đó) (khi kết thúc lệnh)
Ví dụ không nhấn vào button B thì a được gán là giá trị NIL (setq a NIL), hoặc 1 giá trị nào đó (setq a 8) (khi kết thúc lệnh)=> Nên không thể khai báo a là biến cục bộ đươc. a là biến được lưu lại khi kết thúc chương trình.
a=NIL hoặc 1 giá trị nào đó khi User không nhấn vào Button B

Các bác có cách nào không?
Thành thật xin lỗi vì mình trình bày chưa được rõ ràng

Đọc một hồi em luân nó ra thế này anh xem có đuợc không nhé.
(defun c:test ()
(setq a 6)
....
(action_tile "nutB" "(setq a 1)")
(action_tile "cancel" "(setq a nil)(done_dialog)")
(action_tile "accept" "(setq a 8)(done_dialog)")

  • 1

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#100 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 12 January 2011 - 07:51 AM

........................
Các bác có cách nào không?
Thành thật xin lỗi vì mình trình bày chưa được rõ ràng

hề hề ...
Thành thật xin lỗi vì mình chưa hiểu ... !

Có thể vấn đề của Tue_NV là ý tưởng chứ không phải cách thể hiện ?!
  • 1