Đế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

#1 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 21 September 2007 - 06:08 PM

Mời mọi người thảo luận!
:unsure: :unsure: :unsure: :)
  • 0

#2 nguyenlevinh

nguyenlevinh

    biết zoom

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

Đã gửi 24 October 2007 - 01:20 PM

Mời mọi người thảo luận!
:unsure: :unsure: :) :unsure:

Mấy hôm nay www.cadviet.com bị làm sao thế a Hoành, em đăng ký thành viên,cung bị mất lun,bài viết của e cũng bị mất lun.
  • 0

#3 vndesperados

vndesperados

    biết lệnh xref

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

Đã gửi 06 November 2007 - 03:09 PM

Mời mọi người thảo luận!
:bigsmile: :) :) :)



Cái này cực hay mà lâu quá sao không thấy ai hết. Xin phép bác Hòanh lên tiếng trước nhé

Đây là file layer.DCL
LAYER:dialog {	
label="www.cadviet.Dialog000";
spacer_1;
:boxed_radio_column{
label="Cai dat Layer";
:radio_button{
label="Su dung Layer hien huu";
key="IsCuLA";
}
:radio_button{
label="Cai dat Layer";
key="IsSetLA";
}
:popup_list{
key="La";
}
}
ok_cancel;
}

Còn đâ là file LISP
(DEFUN DIALOG000 ()
(setq DCL_ID_DIALOG (load_dialog "layer.DCL"))
(if (not(new_dialog "LAYER" DCL_ID_DIALOG)) (exit))
(action_tile "IsCuLA" "(Is_Chk)")
(action_tile "IsSetLA" "(Is_Chk)")
(mode_tile "La" (atoi IsCuLa))

(action_tile "accept" "(GETOPTVALUE) (done_dialog 1)")
(action_tile "cancel" "(GETOPTVALUE) (done_dialog 2)")
(start_list "La")
(mapcar 'add_list LiLa)
(end_list)
(SETOPTVALUE)
(setq RES(start_dialog))
(if (= 1 RES)
(DOSOMETHING)
(DONOTHING)
)
(unload_dialog DCL_ID_DIALOG)
)

(DEFUN DOSOMETHING(/ msg)
(if (= IsSetLa "1")
(setq la la_temp)
)
(setq msg (strcat "Ban dang lam viec tren layer " (nth (atoi la) LiLa)))
(alert msg)
)

(DEFUN DONOTHING()
(alert "Khong lam gi ca!")
)

(DEFUN INIT()
(CREALILA)
(if (Null IsCuLa)
(setq IsCuLa "1")
)
(if (Null IsSetLa)
(setq IsSetLa "0")
)
(if (Null la)
(setq la "0")
)
)

(DEFUN Is_Chk ()
(if (= (get_tile "IsSetLA") "1")
(mode_tile "La" 0)
(mode_tile "La" 1)
)
)


(DEFUN SETOPTVALUE()
(set_tile "IsCuLA" IsCuLa)
(set_tile "IsSetLA" IsSetLa)
(set_tile "La" la)
)

(DEFUN GETOPTVALUE()
(setq IsCuLa (get_tile "IsCuLA"))
(setq IsSetLa (get_tile "IsSetLA"))
(setq la_temp (get_tile "La"))
)

(DEFUN CREALILA (/ NL)
(setq LiLa (List))
(setq NL (tblnext "LAYER" T))
(while NL
(setq LiLa (append LiLa (list (cdr (assoc 2 NL)))))
(setq NL (tblnext "LAYER"))
)
(setq LiLa (Acad_strlsort LiLa))
)

(DEFUN EXCUTE()
(INIT)
(DIALOG000)
)

(DEFUN C:DCL()
(EXCUTE)
)

Các bạn lấy về chạy với lệnh DCL, đọan code này có chức năng lấy layer hiện hữu

Cách viết của tôi có vẽ hơi dài dòng, tôi cố gắng chia ra thật nhỏ function code để hi vọng các bạn dễ hiểu.
Các câu hỏi các bạn cứ POST lên và tôi sẽ cố gắng trả lời.
  • 0

#4 vndesperados

vndesperados

    biết lệnh xref

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

Đã gửi 08 November 2007 - 10:19 AM

Có lẽ cái này khó quá hay dễ quá mà sao ít người quan tâm bác Hòanh ah.
Thôi kệ, không sao. Tôi sẽ giải thích rõ ràng về cách sử dụng và thể hiện một dialog như thế nào để trông có vẻ pro một chút.

Trong định nghĩa về dialog tôi dùng hai radio_button và một pop_list
:radio_button{
label="Su dung Layer hien huu";
key="IsCuLA";
}
:radio_button{
label="Cai dat Layer";
key="IsSetLA";
}
:popup_list{
key="La";
}

Việc sử dụng radio_button cho phép bạn lựa chọn một trong số nhiều option (bao giờ cũng chỉ một trong số nhiều, hi vọng sẽ có cơ hội nói về việc lựa chọn bằng toggle: lựa chọn nhiều option )

Còn sử dụng popup_list là dùng để hiện thị layer name trong bản vẽ hiện hành
popup_list này được gắn với một list Layername liLa (List LiLa tạo bởi DEFUN CREALILA (/ NL))
(start_list "La")  
(mapcar 'add_list LiLa)
(end_list)

Việc vẽ ra một dialog thì không khó, vấn đề là thao tác trên giao diện ấy như thế nào:
Đối với giao diện ở đây, cho phép người dùng có hai sự lựa chọn, chọn layer để thao tác hay dùng layer hiện hữu. Để nhìn pro một chút tôi disable list Layer khi người dùng chọn "Su dung Layer hien huu" và enable list layer khi người dùng chọn "Cai dat Layer"
(action_tile "IsCuLA" "(Is_Chk)")
(action_tile "IsSetLA" "(Is_Chk)")
(mode_tile "La" (atoi IsCuLa))

Sau khi đã lựa chọn người dùng nhấn nút OK, chương trình sẽ thực hiện action được gọi với các option được lựa chọn, ở đây tôi dùng một DEFUN GETOPTVALUE() để lưu lại các option và một DEFUN SETOPTVALUE() để trả về các option

(action_tile "accept" "(GETOPTVALUE) (done_dialog 1)")
(action_tile "cancel" "(GETOPTVALUE) (done_dialog 2)")

....

(setq RES(start_dialog))
(if (= 1 RES)
(DOSOMETHING)
(DONOTHING)
)


Các DEFUN DOSOMETHING và DEFUN DOTHING sẽ là các action khi người dùng nhấn nút OK

...
Hi vọng với một vài dòng trên sẽ có ích được các bạn trong việc xây dựng ứng dụng cho mình...

Trong cách tổ chức chương trình tôi tách ra những DEFUN thật nhỏ, để cho việc sữa chữa hay nâng cấp chương trình dễ dàng hơn
.... và nhìn cũng có vẻ pro hơn, các bạn nhỉ!
Heheheheheheheh
  • 0

#5 dclhelp

dclhelp

    Chưa sử dụng CAD

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

Đã gửi 22 November 2007 - 09:41 AM

Giúp mình với. Mình đang tạo một popup_list nhưng mình đang vướng ở chỗ.

Mình có 12 list (value được đánh số tử 0 -11) nhưng trong dòng lệnh của Lisp mình không biết lệnh nào để lấy giá trị của value này

Mình muốn lấy giá trị của value : vidu 1 --> bạn đã chọn list1


Gấp gấp, cần gấp
  • 0

#6 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 22 November 2007 - 09:57 AM

Giúp mình với. Mình đang tạo một popup_list nhưng mình đang vướng ở chỗ.

Mình có 12 list (value được đánh số tử 0 -11) nhưng trong dòng lệnh của Lisp mình không biết lệnh nào để lấy giá trị của value này

Mình muốn lấy giá trị của value : vidu 1 --> bạn đã chọn list1
Gấp gấp, cần gấp


bạn có 2 cách:
1. Dùng hàm (get_tile "listkey") để lấy giá trị index của phần tử được chọn. VD, phần tử đầu tiên sẽ có giá trị "0".
2. Bạn dùng (set_action "listkey" "(setq listindex $value)") từ lúc khởi tạo hộp thoại. Và biến listindex sẽ luôn mang giá trị index của danh sách.
  • 0

#7 Nộ Thiên

Nộ Thiên

    biết lệnh ddedit

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

Đã gửi 22 November 2007 - 01:10 PM

Giúp mình với. Mình đang tạo một popup_list nhưng mình đang vướng ở chỗ.

Mình có 12 list (value được đánh số tử 0 -11) nhưng trong dòng lệnh của Lisp mình không biết lệnh nào để lấy giá trị của value này

Mình muốn lấy giá trị của value : vidu 1 --> bạn đã chọn list1
Gấp gấp, cần gấp

========Tao danh sach ====================
(setq dsfont (fontlist))
(start_list "pop_fontTIEUDE")
(mapcar '(lambda (x) (add_list x)) dsfont)
(end_list)
(setq nn (length dsfont))
(setq n 0)
(while (and (< n nn) (/= (nth n dsfont) fontTIEUDE))
(setq n (1+ n))
)

========gán giá trị của biến fontTEUDE cho gtrị hiện tại của danh sách và ứng xử cho action_tile==================
(set_tile "pop_fontTIEUDE" (itoa n))
(action_tile "pop_fontTIEUDE" "(set_tile \"pop_fontTIEUDE\" (get_tile \"pop_fontTIEUDE\"))
(if (= $reason 1) (progn (mode_tile \"edit_txthigh1\" 2) (mode_tile \"edit_txthigh1\" 3)))")

========Gán gia trị hiện tại của danh sách cho biến fontTIEUDE của chương trình================================
(setq fontTIEUDE (nth (atoi (get_tile "pop_fontTIEUDE")) dsfont))
  • 0

#8 dclhelp

dclhelp

    Chưa sử dụng CAD

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

Đã gửi 22 November 2007 - 03:19 PM

Nói chung là không hiểu lắm. Bác coi lại cho em 2 file này nhé :
http://www.cadviet.com/upfiles/list.dcl
http://www.cadviet.com/upfiles/list_1.lsp

Xem sai chỗ nèo giúp hộ cái các bác.
  • 0

#9 Nộ Thiên

Nộ Thiên

    biết lệnh ddedit

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

Đã gửi 22 November 2007 - 11:53 PM

Nói chung là không hiểu lắm. Bác coi lại cho em 2 file này nhé :
http://www.cadviet.com/upfiles/list.dcl
http://www.cadviet.com/upfiles/list_1.lsp

Xem sai chỗ nèo giúp hộ cái các bác.

Bác viết lỗi nhiều lắm, kể ra thì nhiều lắm.
Kg biết Bác muốn "action" kiểu gì nên đưa ra 2 trường hợp cho bác
1 - Tile có tên "list1" sẽ nhận giá trị khi bấm "nhập số liệu"
2 - Tile có tên "list1" sẽ nhận giá trị khi select popup_list "lst_1"

file list_1.lsp của Bác đây
(defun c:lb1 ()
(setq DCL_ID (load_dialog "list.dcl"))
(if (not (new_dialog "list" DCL_ID )) (exit))

(action_tile "lst_1" "(setq lst_1 (get_tile \"lst_1\")) ")
(action_tile "nsl" "(cond ((= lst_1 \"0\") (set_tile \"list1\" \"10\" ))
((= lst_1 \"1\") (set_tile \"list1\" \"20\" ))
)
")
(action_tile "thoat" "(done_dialog)")
(start_dialog)
(unload_dialog DCL_ID)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:lb2 ()
(setq DCL_ID (load_dialog "list.dcl"))
(if (not (new_dialog "list" DCL_ID )) (exit))

(setq lst_1 (get_tile "lst_1"))
(cond ((= lst_1 "0") (set_tile "list1" "10" ))
((= lst_1 "1") (set_tile "list1" "20" ))
)

(action_tile "lst_1" "(setq lst_1 (get_tile \"lst_1\"))
(cond ((= lst_1 \"0\") (set_tile \"list1\" \"10\" ))
((= lst_1 \"1\") (set_tile \"list1\" \"20\" ))
)
")

(action_tile "thoat" "(done_dialog)")
(start_dialog)
(unload_dialog DCL_ID)
(princ)

Và đây là file list.dcl
list : dialog {
label = "List box : " ;
:row {
:popup_list {
label = "Lua chon" ;
width = 20;
list = "list0 \nlist1 ";
key = "lst_1";
}
: column {
label = "Bang thong bao" ;
:edit_box {
edit_width = 10;
label = "Da chon " ;
key = "list1" ;
}

}}
errtile;
:row {
:button{
label="Nhan so lieu";
key ="nsl";
// action = "(set_tile \"list1\" \"10\")";
width = 10;
}
:button{
label="Thoat";
key="thoat";
width = 10;
}
}
is_cancel=true;
}
------------------------------------------------------------------
  • 0

#10 Ar_Chanwoo

Ar_Chanwoo

    biết lệnh break

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

Đã gửi 15 March 2008 - 09:35 AM

Bác viết lỗi nhiều lắm, kể ra thì nhiều lắm.
Kg biết Bác muốn "action" kiểu gì nên đưa ra 2 trường hợp cho bác
1 - Tile có tên "list1" sẽ nhận giá trị khi bấm "nhập số liệu"
2 - Tile có tên "list1" sẽ nhận giá trị khi select popup_list "lst_1"

file list_1.lsp của Bác đây
(defun c:lb1 ()
(setq DCL_ID (load_dialog "list.dcl"))
(if (not (new_dialog "list" DCL_ID )) (exit))

(action_tile "lst_1" "(setq lst_1 (get_tile \"lst_1\")) ")
(action_tile "nsl" "(cond ((= lst_1 \"0\") (set_tile \"list1\" \"10\" ))
((= lst_1 \"1\") (set_tile \"list1\" \"20\" ))
)
")
(action_tile "thoat" "(done_dialog)")
(start_dialog)
(unload_dialog DCL_ID)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:lb2 ()
(setq DCL_ID (load_dialog "list.dcl"))
(if (not (new_dialog "list" DCL_ID )) (exit))

(setq lst_1 (get_tile "lst_1"))
(cond ((= lst_1 "0") (set_tile "list1" "10" ))
((= lst_1 "1") (set_tile "list1" "20" ))
)

(action_tile "lst_1" "(setq lst_1 (get_tile \"lst_1\"))
(cond ((= lst_1 \"0\") (set_tile \"list1\" \"10\" ))
((= lst_1 \"1\") (set_tile \"list1\" \"20\" ))
)
")

(action_tile "thoat" "(done_dialog)")
(start_dialog)
(unload_dialog DCL_ID)
(princ)

Và đây là file list.dcl
list : dialog {
label = "List box : " ;
:row {
:popup_list {
label = "Lua chon" ;
width = 20;
list = "list0 \nlist1 ";
key = "lst_1";
}
: column {
label = "Bang thong bao" ;
:edit_box {
edit_width = 10;
label = "Da chon " ;
key = "list1" ;
}

}}
errtile;
:row {
:button{
label="Nhan so lieu";
key ="nsl";
// action = "(set_tile \"list1\" \"10\")";
width = 10;
}
:button{
label="Thoat";
key="thoat";
width = 10;
}
}
is_cancel=true;
}
------------------------------------------------------------------



Anh có thể viết cho e 1 file lisp, 1file dcl, trong file dcl có 1 list_box lấy nội dung từ 1file TXT nào đó, mục đích của e là tạo ra 1 hộp thoại hướng dẫn ngưòi dùng (chứa trong file txt) về 1 cái gì đó thôi!!
Giúp e nhé Bro
  • 0

#11 roberto

roberto

    biết pan

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

Đã gửi 16 March 2008 - 09:08 AM

Anh có thể viết cho e 1 file lisp, 1file dcl, trong file dcl có 1 list_box lấy nội dung từ 1file TXT nào đó, mục đích của e là tạo ra 1 hộp thoại hướng dẫn ngưòi dùng (chứa trong file txt) về 1 cái gì đó thôi!!
Giúp e nhé Bro


Kiểu này chuối lắm dùng file *.chm hoặc *.hlp hay hơn nhiều
code đây không biết có đúng ý bạn không?
Thuty.dcl:

(defun read-txt (filename / open_f line_r list-out file_read)
(setq list-out nil)
(if (/= (findfile filename) nil)
(progn
(setq file_read (open filename "r"))
(while
(/= nil
(setq line_r (read-line file_read))
)
(setq list-out (append list-out (list line_r)))
)
(close file_read)
)
(princ)
)
list-out
)
;;;;;;;;;;;;;;;
;==== Load and check dialog ===========
; dia_name : string
(defun loadcl ( dia_name)
(if (= -1 (setq dcl_id (load_dialog (strcat dia_name ".dcl"))))
(progn
(alert (strcat dia_name ".dcl" "not found")
(setq dialogloaded nil)
)
);p
(setq dialogloaded 1)
);f
);defun
;;;;;;;;;;;=========================
(defun c:show (/ fname l1 dcl_id dialogloaded)
(setq fname (getfiled "chon file" "c:\\" "*" 16)); lựa chọn file
;(setq fname "c:\\abc\\abc.txt"); hoặc chỉ định file
(if (and
(/= fname nil)
(> (loadcl "thuty") 0); load and check dialog
)
(if (not (new_dialog "thuty" dcl_id))
(exit); Error
(progn;else
(start_list "doctxt")
(mapcar' add_list (read-txt fname))
(end_list)
(start_dialog)
(done_dialog)
(unload_dialog dcl_id)
);p

);if1
);if
(princ)
);defun

Have fun
  • 0

#12 h2c

h2c

    biết vẽ ellipse

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

Đã gửi 16 March 2008 - 04:35 PM

Các bác có thể cho em 1 lisp ví dụ về dialog được không ah . Khi đánh lệnh ABC.. gì đó thì sẽ hiện lên bảng dialog . 1 bên là có 3 dòng với nội dung "hình tròn" "hình vuông" "tam giác" , bên kia là slide của 3 hình đó . Khi mình click vào hình slide hay dòng chữ thì sẽ thực thi ngay lệnh chứ không cần phải nhấp ok . Tất nhiên sau khi click sẽ có giai đoạn nhập R đường tròn , cạnh hình vuông hoặc kích thước tam giác .
Lisp này để em học hỏi , chứ nhiều lisp trên máy quá phức tạp và rất dài , em còn học nhiều nên chưa hiểu hết .
Em cảm ơn rất nhiều .
  • 0

#13 Ar_Chanwoo

Ar_Chanwoo

    biết lệnh break

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

Đã gửi 16 March 2008 - 05:25 PM

Kiểu này chuối lắm dùng file *.chm hoặc *.hlp hay hơn nhiều
code đây không biết có đúng ý bạn không?
Thuty.dcl:


(defun read-txt (filename / open_f line_r list-out file_read)
(setq list-out nil)
(if (/= (findfile filename) nil)
(progn
(setq file_read (open filename "r"))
(while
(/= nil
(setq line_r (read-line file_read))
)
(setq list-out (append list-out (list line_r)))
)
(close file_read)
)
(princ)
)
list-out
)
;;;;;;;;;;;;;;;
;==== Load and check dialog ===========
; dia_name : string
(defun loadcl ( dia_name)
(if (= -1 (setq dcl_id (load_dialog (strcat dia_name ".dcl"))))
(progn
(alert (strcat dia_name ".dcl" "not found")
(setq dialogloaded nil)
)
);p
(setq dialogloaded 1)
);f
);defun
;;;;;;;;;;;=========================
(defun c:show (/ fname l1 dcl_id dialogloaded)
(setq fname (getfiled "chon file" "c:\\" "*" 16)); lựa chọn file
;(setq fname "c:\\abc\\abc.txt"); hoặc chỉ định file
(if (and
(/= fname nil)
(> (loadcl "thuty") 0); load and check dialog
)
(if (not (new_dialog "thuty" dcl_id))
(exit); Error
(progn;else
(start_list "doctxt")
(mapcar' add_list (read-txt fname))
(end_list)
(start_dialog)
(done_dialog)
(unload_dialog dcl_id)
);p

);if1
);if
(princ)
);defun

Have fun


Thanks Pro đã viết cho e nhưng ko đúng với ý e lắm! Anh viết lại hộ e như thế này đc ko:
Sau khi gõ lệnh, sẽ hiện ra hôp thoại "Doc file txt" luôn, không phải chọn đường dẫn nữa, mà em thắc mác cái "dùng file *.chm hoặc *.hlp hay hơn nhiều" của bác nói?
  • 0

#14 Ar_Chanwoo

Ar_Chanwoo

    biết lệnh break

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

Đã gửi 16 March 2008 - 05:28 PM

Thanks Pro đã viết cho e nhưng ko đúng với ý e lắm! Anh viết lại hộ e như thế này đc ko:
Sau khi gõ lệnh, sẽ hiện ra hôp thoại "Doc file txt" luôn, không phải chọn đường dẫn nữa, mà em thắc mác cái "dùng file *.chm hoặc *.hlp hay hơn nhiều" của bác nói?

Àh, em hiểu rồi, chỉ cần bỏ doạn code về chọn file là đc, để ở chế độ chỉ định file, mà cái dùng file *.chm hoặc *.hlp hay hơn nhiều" của bác nói giải thích cho e ty nha!
  • 0

#15 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 16 March 2008 - 05:28 PM

Thanks Pro đã viết cho e nhưng ko đúng với ý e lắm! Anh viết lại hộ e như thế này đc ko:
Sau khi gõ lệnh, sẽ hiện ra hôp thoại "Doc file txt" luôn, không phải chọn đường dẫn nữa, mà em thắc mác cái "dùng file *.chm hoặc *.hlp hay hơn nhiều" của bác nói?

bạn sửa dòng lệnh (setq fname (getfiled "chon file" "c:\\" "*" 16)) thành (setq fname "tenfilebancan.txt") là được.
  • 1

#16 Ar_Chanwoo

Ar_Chanwoo

    biết lệnh break

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

Đã gửi 16 March 2008 - 09:08 PM

bạn sửa dòng lệnh (setq fname (getfiled "chon file" "c:\\" "*" 16)) thành (setq fname "tenfilebancan.txt") là được.

Anh có biết cách tạo TAB trong file DCL không?
  • 0

#17 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 16 March 2008 - 09:43 PM

Anh có biết cách tạo TAB trong file DCL không?

Không biết.

Đúng hơn là DCL không có tab.
  • 0

#18 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 17 March 2008 - 07:57 AM

... mà em thắc mác cái "dùng file *.chm hoặc *.hlp hay hơn nhiều" của bác nói?

Bạn unzip file này, copy vào thư mục gốc của acad:

http://www.cadviet.com/upfiles/mcvhelp.zip

Sau đó gõ biểu thức lisp sau tại dòng nhắc Command sẽ thấy cái "hay hơn nhiều" nói trên:

(help "mcvhelp.chm")

Muốn biết cách tạo *chm hoặc *.hlp, bạn tìm hiểu trình "Microsoft HTML Help Image Editor" hoặc nhiều trình khác có chức năng tương tự. Cái này khá phổ biến, bạn tìm đâu cũng có.
  • 0

#19 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 17 March 2008 - 08:18 AM

Các bác có thể cho em 1 lisp ví dụ về dialog được không ah . Khi đánh lệnh ABC.. gì đó thì sẽ hiện lên bảng dialog . 1 bên là có 3 dòng với nội dung "hình tròn" "hình vuông" "tam giác" , bên kia là slide của 3 hình đó . Khi mình click vào hình slide hay dòng chữ thì sẽ thực thi ngay lệnh chứ không cần phải nhấp ok . Tất nhiên sau khi click sẽ có giai đoạn nhập R đường tròn , cạnh hình vuông hoặc kích thước tam giác .
Lisp này để em học hỏi , chứ nhiều lisp trên máy quá phức tạp và rất dài , em còn học nhiều nên chưa hiểu hết .
Em cảm ơn rất nhiều .

Bạn đọc code của Mechanical CadViet sẽ thấy có đủ cái bạn cần. Nếu còn vướng mắc, mình sẽ làm một ví dụ đơn giản để bạn dễ hiểu hơn. Thư thả nhé, hiện giờ mình đang bận, chỉ có thể có vài gợi ý để bạn tự tìm hiểu trước:
- Các File *.sld, *.slb và các lệnh Acad liên quan đến chúng. Nếu bạn có thể tự tạo được một file *.slb theo ý thích thì xem như bạn đã hiểu phần này.
- Đối tượng Image và Image_button trong dialog.
  • 0

#20 h2c

h2c

    biết vẽ ellipse

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

Đã gửi 17 March 2008 - 01:30 PM

Mình chỉ mới biết tạo file *.sld thôi , chưa tạo được *.slb . Mình đã làm theo như file help nhưng máy cứ báo là nó không hiểu lệnh slidelib .
  • 0