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

#101 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 14 January 2011 - 03:12 PM

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 ?!

Cảm ơn các bác Doan Van Ha, bạn Thái, anh giabach đã hồi âm.
Ý tưởng của Tue_NV xuất phát từ việc lưu lại các giá trị của các biến để sử dụng cho lần sau. Các biến đó chính là các giá trị trong các edit_box. Mình muốn pick vào 1 button để lưu các giá trị đó, không pick thì không lưu lại.
Tue_NV đã mò mẫm và tự giải quyết được công việc của mình được rồi. Cảm ơn các bác

Các bác cho Tue_NV hỏi 1 câu là mình có cách nào để Text trên 1 Button có nhiều dòng được không? Text ghi trên 1 Button chỉ có ghi được 1 dòng thì đôi lúc bất tiện lắm vì chưa diễn giải được hết ý của mình.
Còn nếu viết thì nó trên 1 dòng thực là dài lắm và chiếm chổ của dialog
Thực chưa biết giải quyết vấn đề này như thế nào?
Rất mong các bác quan tâm, giúp đỡ.
Xin chân thành cảm ơn
  • 0

#102 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 17 January 2011 - 08:34 AM

Tue_NV đọc trong Help thấy có chức năng paragraph viết xuống dòng cho Text trong hộp thoại.
Nhưng không thể làm được cho Text xuống dòng trong 1 Button?
Làm cách nào để Text trên 1 Button có nhiều dòng?
Rất mong sự giúp đỡ.
Tue_NV xin cảm ơn.
  • 0

#103 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 17 January 2011 - 09:25 AM

Tue_NV đọc trong Help thấy có chức năng paragraph viết xuống dòng cho Text trong hộp thoại.
Nhưng không thể làm được cho Text xuống dòng trong 1 Button?
Làm cách nào để Text trên 1 Button có nhiều dòng?
Rất mong sự giúp đỡ.
Tue_NV xin cảm ơn.

Tue_NV thử đọan này xem đúng ý em không ?
(defun c:para (/ dcflag dcl_id)   
(setq dcl_id (load_dialog "temp"))
(while (not (vl-position dcFlag '(1 0)))
(if (not (new_dialog "TUE" dcl_id)) (exit))
(setq dcFlag (start_dialog)))
(unload_dialog dcl_id)
(princ))


file temp.dcl
TUE : dialog { label = "Welcome to the paragraph.";
: paragraph {
: text_part { label = "paragraph 1"; }
: text_part { label = "paragraph 2"; }
: text_part { label = "paragraph 3"; }}

: paragraph {
: concatenation {
: text_part {label = "column 1";}
: text_part {label = "column 2";}
: text_part {label = "column 3";}}}

ok_cancel; }


Sorry : không đọc kỹ đề bài rồi !
Làm cách nào để Text trên 1 Button có nhiều dòng?

Bài viết đã được chỉnh sửa nội dung bởi gia_bach: 17 January 2011 - 09:28 AM

  • 1

#104 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 17 January 2011 - 09:39 AM

Tue_NV thử đọan này xem đúng ý em không ?

(defun c:para (/ dcflag dcl_id)   
(setq dcl_id (load_dialog "temp"))
(while (not (vl-position dcFlag '(1 0)))
(if (not (new_dialog "TUE" dcl_id)) (exit))
(setq dcFlag (start_dialog)))
(unload_dialog dcl_id)
(princ))


file temp.dcl
TUE : dialog { label = "Welcome to the paragraph.";
: paragraph {
: text_part { label = "paragraph 1"; }
: text_part { label = "paragraph 2"; }
: text_part { label = "paragraph 3"; }}

: paragraph {
: concatenation {
: text_part {label = "column 1";}
: text_part {label = "column 2";}
: text_part {label = "column 3";}}}

ok_cancel; }
Sorry : không đọc kỹ đề bài rồi !
Làm cách nào để Text trên 1 Button có nhiều dòng?

Em cảm ơn anh nhiều lắm.
Có cách khác không anh?
Em bó tay rồi :)
Thanks
  • 0

#105 duy267

duy267

    biết vẽ point

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

Đã gửi 04 January 2012 - 09:43 PM

Chủ để này khá lâu rồi không có người tham gia, em mới tập tành viết DCL xin hỏi các bác một chút. Em tạo một hộp thoại gồm có 3 edit_box với tên lần lược là a, b, c và một button với tên là "cong". Tác dụng của hộp thoại là khi nhập giá trị cho a và b sau đó nhấn button "cong" thì kết quả sẽ hiển thị ở c với c=a+b. Nhưng em vẩn chưa thể làm được mặc dù đã gán các thuộc tính cho tile.
Mong các bác giúp em. Em xin cảm ơn.
File DCL:
// Ten file CONG.DCL
CONG : dialog {
label = "Cong 2 so";
: boxed_row {
: edit_box {
label = "a";
key = "a";
edit_width = 6;
}
: edit_box {
label = "b";
key = "b";
edit_width = 6;
}
: edit_box {
label = "c";
key = "c";
edit_width = 6;
}
}
: boxed_row {
: button {
label = "Cong";
key = "cong";
}
: button {
label = "Cancel";
key = "cancel";
is_default = true;
is_cancel = true;
}
}
}

File LSP:
(defun C:CONG()
(setq DCL_ID (load_dialog "CONG"))
(if (not (new_dialog "CONG" DCL_ID)) (exit))
(action_tile "a" "(setq a $value)")
(action_tile "b" "(setq b $value)")
(setq c (rtos (+ (atof a) (atof b ))))
(action_tile "cong" "(set_tile \"c\" c)")
(start_dialog)
(unload_dialog DCL_ID)
(princ)
)
  • 0

#106 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 04 January 2012 - 10:31 PM

Bạn cho code vào thẻ code nhé.
Mình chưa test nhưng đọc code của bạn thì thấy có lỗi là gán giá trị của c = a+b, trong khi lúc mới chạy hộp thoại a,b vẫn chưa xác định (do chưa phát sinh hành động thay đổi edit box)
Bạn chỉ cần thế này thôi :

(defun C:CONG()
(setq DCL_ID (load_dialog "CONG"))
(if (not (new_dialog "CONG" DCL_ID)) (exit))

(action_tile "cong" "(set_tile \"c\" (rtos (+ (atof (get_tile \"a\")) (atof (get_tile \"b\")))))")

(start_dialog)
(unload_dialog DCL_ID)
(princ)
)

  • 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


#107 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 04 January 2012 - 10:59 PM

Sơ sơ thì như Ketxu là đúng ý bạn. Chứ muốn dialoge ấy bài bản hơn 1 chút thì bạn cần phải kiểm tra điều kiện nhập, rồi đặt giá trị mặc định cho lần sau nữa...
  • 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.


#108 duy267

duy267

    biết vẽ point

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

Đã gửi 06 January 2012 - 09:00 PM

@ketxu: Cảm ơn sự nhiệt tình của ketxu, thì ra phải bỏ nó vào trong "action_tile" thì nó mới hiều. Em đã cho vào thẻ code mà sao không được nhỉ.

@Doan Van Ha: vì em mới tập tành viết DCL nên chưa có nhiều kiến thức về nó. Nếu có thể bác viết thêm một vài dòng cho nó "đẹp đẽ" hơn. Em xin cảm ơn.
  • 0

#109 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 07 January 2012 - 07:47 AM

@ketxu: Cảm ơn sự nhiệt tình của ketxu, thì ra phải bỏ nó vào trong "action_tile" thì nó mới hiều. Em đã cho vào thẻ code mà sao không được nhỉ.

@Doan Van Ha: vì em mới tập tành viết DCL nên chưa có nhiều kiến thức về nó. Nếu có thể bác viết thêm một vài dòng cho nó "đẹp đẽ" hơn. Em xin cảm ơn.

Đây là một ví dụ
File Lisp

(defun C:CONG()
(setq DCL_ID (load_dialog "CONG"))
(if (not (new_dialog "CONG" DCL_ID)) (exit))
(if (not a) (setq a "0.00"))
(set_tile "a" a)
(if (not B) (setq b "0.00"))
(set_tile "b" B)
(action_tile "a" "(setq a $value) (KIEM_TRA_LOI)")
(action_tile "b" "(setq b $value) (KIEM_TRA_LOI)")
(action_tile "cong" "(set_tile \"c\" (rtos (+ (distof (get_tile \"a\")) (distof (get_tile \"b\")))))")
(start_dialog)
(unload_dialog DCL_ID)
(princ))
(defun KIEM_TRA_LOI()
(set_tile "error" "")
(if
(/= (type (distof a)) 'real)
(progn
(set_tile "error" "Cho em xin mot so thuc !")
(mode_tile "a" 2)))
(if
(/= (type (distof B)) 'real)
(progn
(set_tile "error" "Cho em xin mot con so !")
(mode_tile "b" 2))))
File Dcl

CONG : dialog { label = "Cong 2 so";
: boxed_row {
: edit_box { label = "a" ; key = "a" ; edit_width = 6; }
: edit_box { label = "b" ; key = "b" ; edit_width = 6; }
: edit_box { label = "c" ; key = "c" ; edit_width = 6; }
}
: boxed_row {
: button { label = "Cong" ; key = "cong"; }
: button { label = "Cancel" ; key = "cancel" ; is_default = true ; is_cancel = true; }
}
errtile;
}

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


#110 huunhantvxdts

huunhantvxdts

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 366 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 23 April 2012 - 05:25 PM

Đây là một ví dụ
File Lisp


(defun C:CONG()
(setq DCL_ID (load_dialog "CONG"))
(if (not (new_dialog "CONG" DCL_ID)) (exit))
(if (not a) (setq a "0.00"))
(set_tile "a" a)
(if (not B) (setq b "0.00"))
(set_tile "b" B)
(action_tile "a" "(setq a $value) (KIEM_TRA_LOI)")
(action_tile "b" "(setq b $value) (KIEM_TRA_LOI)")
(action_tile "cong" "(set_tile \"c\" (rtos (+ (distof (get_tile \"a\")) (distof (get_tile \"b\")))))")
(start_dialog)
(unload_dialog DCL_ID)
(princ))
(defun KIEM_TRA_LOI()
(set_tile "error" "")
(if
(/= (type (distof a)) 'real)
(progn
(set_tile "error" "Cho em xin mot so thuc !")
(mode_tile "a" 2)))
(if
(/= (type (distof B)) 'real)
(progn
(set_tile "error" "Cho em xin mot con so !")
(mode_tile "b" 2))))
File Dcl

CONG : dialog { label = "Cong 2 so";
: boxed_row {
: edit_box { label = "a" ; key = "a" ; edit_width = 6; }
: edit_box { label = "b" ; key = "b" ; edit_width = 6; }
: edit_box { label = "c" ; key = "c" ; edit_width = 6; }
}
: boxed_row {
: button { label = "Cong" ; key = "cong"; }
: button { label = "Cancel" ; key = "cancel" ; is_default = true ; is_cancel = true; }
}
errtile;
}

Làm sao chạy được
mình down về bỏ vào 1 thư mục ở ổ C sau đó mở cad2008 load lisp vào
nhưng khi chạy nó báo lỗi nên chẳng thây gì cả
mong mọi người giúp đỡ.
mình đang tìm hiểu về nó
  • 0

#111 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 23 April 2012 - 05:52 PM

Ổ C của bạn phải nằm trong Support Path. Cái này ở trong Options -> Files
Lỗi thì bạn phải post lỗi lên, chứ bảo báo lỗi nó có hàng trăm câu báo :D
  • 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


#112 huunhantvxdts

huunhantvxdts

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 366 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 23 April 2012 - 09:20 PM

Ổ C của bạn phải nằm trong Support Path. Cái này ở trong Options -> Files
Lỗi thì bạn phải post lỗi lên, chứ bảo báo lỗi nó có hàng trăm câu báo :D


Lỗi như sau
Command: cong
; error: quit / exit abort
  • 0

#113 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 23 April 2012 - 09:48 PM

Lỗi như sau
Command: cong
; error: quit / exit abort

1). Lỗi này bác Ketxu đã chỉ cho bạn ở trên rồi đó.
2). 3 tháng trôi qua, bây giờ mới đoái hoài tới câu hỏi của mình!
  • 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.


#114 huunhantvxdts

huunhantvxdts

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 366 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 24 April 2012 - 07:45 AM

1). Lỗi này bác Ketxu đã chỉ cho bạn ở trên rồi đó.
2). 3 tháng trôi qua, bây giờ mới đoái hoài tới câu hỏi của mình!

Mình đã chép 2 file đó vào suppurt rồi nhưng vẫn bị lỗi
Do mình không tìm hiểu nhiều về lisp mà chỉ là người chép lại của mọi người sau đó chế thêm mấy thứ nữa để dùng thôi. Hôm nay đang cần chế thêm cái hộp thoại mới seach để tìm hiểu mong bạn thông cảm.
Mình đang sủ dụng lisp đánh taluy. muốn làm hộp thoại như sau
1.Chọn màu cho cạnh ngắn
2. chọn màu cho cạnh dài
3.khoảng cách chia
4.số cạnh ngắn giưa cạnh dài
5. Nút vẽ
6.Nút cập nhật (khi vẽ xong thấy chưa hợp lý nhập lại các yêu cầu vẽ lại)
sau đây là lisp mà mình đã chỉnh sữa để sử dụng:
lisp này mình muốn sữa thêm cái nữa là chọn điểm bắt đầu và kết thúc nhưng chưa được

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=5947
;;; ======================== VE DUONG TALUY - LENH B1 (BATTER) =========================
;;; ================================================================================
=======
;; ============================================= Batter ================================================
(defun c:Batter()
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(setvar "aunits" 0)
(setvar "angbase" (/ pi 2))
(setvar "angdir" 1)
(if (not lint) (setq lint 10.0))
(setq int (getdist (strcat "\nKhoang cach giua vach ngan - vach dai <" (rtos lint 2 3) ">: ")))
(if int (setq lint int) (setq int lint))
(command "line" (list 0.0 0.0) (list 0.0 0.0001) "")
(if (tblsearch "block" "tadtick")
(command "block" "tadtick" "y" (list 0.0 0.0) (entlast) "")
(command "block" "tadtick" (list 0.0 0.0) (entlast) "")
)
(while (setq refent (entsel "\nChon duong thu nhat: "))
(command "undo" "group")
(redraw (car refent) 3)
(initget 1 "Dao Mai")
(setq reply (getkword "\nMai [D]ao or [M]ai dap: "))
(setq s (ssget))
(command "measure" refent "b" "tadtick" "y" int)
(setq p (ssget "p") cn 0)
(if s
(progn
(while (< cn (sslength p))
(setq en (entget (ssname p cn)) p0 (cdr (assoc 10 en)) pt1 p0 pt2 nil b (cdr (assoc 50 en)))
(entdel (ssname p cn))
(setq p1 (polar p0 (+ (/ pi 2) B) 0.0001))
(command "line" p0 p1 "")
(command "extend" s "" (list (entlast) p1) "")
(setq xent (entget (entlast)))
(setq xdist (distance (cdr (assoc 10 xent)) (cdr (assoc 11 xent))))
(if (not (equal xdist 0.0001 0.0001))
(setq pt2 (cdr (assoc 11 xent)))
(progn
(command "extend" s "" (list (entlast) p0) "")
(setq xent (entget (entlast)))
(setq xdist (distance (cdr (assoc 10 xent)) (cdr (assoc 11 xent))))
(if (not (equal xdist 0.0001 0.0001))
(setq pt2 (cdr (assoc 10 xent)))
)
)
)
(entdel (entlast))
(if pt2
(if (= reply "Mai")
(if (= (rem cn 2) 0)
(progn
(command "-layer" "set" "canh dai" "")
(command "line" pt1 pt2 "")
)
(progn
(command "-layer" "set" "canh ngan" "")
(command "line" pt1 (polar pt1 (angle pt1 pt2) (/ (distance pt1 pt2) 2)) "")
)
)
(if (= (rem cn 2) 0)
(progn
(command "-layer" "set" "canh dai" "")
(command "line" pt2 pt1 "")
)
(progn
(command "-layer" "set" "canh ngan" "")
(command "line" pt2 (polar pt2 (angle pt2 pt1) (/ (distance pt2 pt1) 2)) "")
)
)
)
)
(setq cn (1+ cn))
)
)
)
(command "undo" "en")
)
(setvar "blipmode" 1)
(princ)
)
(prompt "\nDraw cut/fill batter slope lines.")
;====================== BAT1 (BATTER)===========================================
(defun c:B1( / mode)
(command "-layer" "new" "canh dai" "color" "8" "canh dai" "")
(command "-layer" "new" "canh ngan" "color" "2" "canh ngan" "")
;(command "-layer" "set" "canh dai" "")
(setvar "osmode" 0)
(c:batter)
(setvar "blipmode" 0)
(setvar "osmode" 167)
)

  • 0

#115 kedensau88

kedensau88

    biết vẽ circle

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

Đã gửi 26 August 2012 - 03:55 PM

Chào các anh,nhờ các anh xem giúp cho em đoạn lisp em viết ở đây sai chỗ nào mà nó ko hiển thị ảnh được :
File .DCL :

//WELD
weld :dialog {label = "Welding Detail";
:boxed_row {label = "Select Type"; height = 12;
:list_box {key = "type1"; width = 30;}
: image {key = "img"; width = 30; color = 0;}
}
spacer;
:row {
:button {label = "OK"; key = "ok"; width = 15; fixed_width = true;}
:button {label = "Cancel"; is_cancel = true; key = "cancel"; width = 15; fixed_width = true;}
}
}
Hình đã gửi

File Lisp :

(defun saveVars()
(setq sStr1(get_tile "type1"))
(if(= sStr1 "")
(setq myItem1 "Nothing")
(setq myItem1 (nth (atoi sStr1) type1)))
)
;;;--------------------------------------------------------------
(defun weld_dialog( / i)
(setq type1(list "EXIT" "M-0" "M-1" "M-2"))
(setq i (load_dialog "weld\\weld.dcl"))
(if (not (new_dialog "weld" i)) (exit))
(start_list "type1" 3)
(mapcar 'add_list type1)
(end_list)
(action_tile "ok" "(setq ddiag 2)(saveVars)(done_dialog)")
(action_tile "cancel" "(setq ddiag 1)(done_dialog)")
(start_dialog) (unload_dialog i)
)
;;;--------------------------------------------------------
(start_image "img")
(fill_image 0 0 (dimx_tile "img") (dimy_tile "img") 0)
(slide_image 5 -10 (dimx_tile "img") (dimy_tile "img") "WELD")
(end_image)
;;;--------------------------------------------------------------
(defun C:weld()
(weld_dialog)
(if(= ddiag 1)
(princ "\n Weld cancelled!")
)
(if(= ddiag 2)
(progn
(command "-insert" myItem1 pause "" "" "")))
)
(princ)
;;;--------------------------------------------------------------


Em đã tạo được file WELD.slb đề cho nó hiện ảnh mà ko biết em làm sai chỗ nào nữa,các anh xem giúp em với.
Cảm ơn các anh nhiều.
  • 0

#116 VoHoan

VoHoan

    biết lệnh move

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

Đã gửi 26 August 2012 - 05:38 PM

Mình có file TL này không biết có ích cho cac bác không? Nhưng cũng up lên cho bà con ai cần thì dùng nhé.
http://www.cadviet.c...sp_tutorial.pdf
  • 0

#117 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 26 August 2012 - 06:28 PM

File "WELD.slb" em đã bỏ trong Support File Search path rồi.
Anh xem Lisp của em có sai chỗ nào ko ?

Sửa Lisp của cho bạn đây. Bạn tự tìm hiểu Lisp đã sửa so với Lisp của bạn bị lỗi chổ nào và tự rút ra kết luận nhé

(defun saveVars()
(setq sStr1(get_tile "type1"))
(if(= sStr1 "")
(setq myItem1 "Nothing")
(setq myItem1 (nth (atoi sStr1) type1)))
)
;;;--------------------------------------------------------------
(defun weld_dialog( / i)
(setq type1(list "EXIT" "M-0" "M-1" "M-2"))
(setq i (load_dialog "weld\\weld.dcl"))
(if (not (new_dialog "weld" i)) (exit))
(start_list "type1" 3)
(mapcar 'add_list type1)
(end_list)
(action_tile "ok" "(setq ddiag 2)(saveVars)(done_dialog)")
(action_tile "cancel" "(setq ddiag 1)(done_dialog)")
;;;--------------------------------------------------------
(start_image "img")
(fill_image 0 0 (dimx_tile "img") (dimy_tile "img") 0)
(slide_image 5 -10 (dimx_tile "img") (dimy_tile "img") "weld")
(end_image)
(start_dialog) (unload_dialog i)
)
;;;--------------------------------------------------------------
(defun C:weld()
(weld_dialog)
(if(= ddiag 1)
(princ "\n Weld cancelled!")
)
(if(= ddiag 2)
(progn
(command "-insert" myItem1 pause "" "" "")))
)
(princ)

  • 1

#118 kedensau88

kedensau88

    biết vẽ circle

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

Đã gửi 27 August 2012 - 11:46 AM

Cảm ơn anh.
  • 0

#119 kedensau88

kedensau88

    biết vẽ circle

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

Đã gửi 28 August 2012 - 09:42 AM

Sửa Lisp của cho bạn đây. Bạn tự tìm hiểu Lisp đã sửa so với Lisp của bạn bị lỗi chổ nào và tự rút ra kết luận nhé


(defun saveVars()
(setq sStr1(get_tile "type1"))
(if(= sStr1 "")
(setq myItem1 "Nothing")
(setq myItem1 (nth (atoi sStr1) type1)))
)
;;;--------------------------------------------------------------
(defun weld_dialog( / i)
(setq type1(list "EXIT" "M-0" "M-1" "M-2"))
(setq i (load_dialog "weld\\weld.dcl"))
(if (not (new_dialog "weld" i)) (exit))
(start_list "type1" 3)
(mapcar 'add_list type1)
(end_list)
(action_tile "ok" "(setq ddiag 2)(saveVars)(done_dialog)")
(action_tile "cancel" "(setq ddiag 1)(done_dialog)")
;;;--------------------------------------------------------
(start_image "img")
(fill_image 0 0 (dimx_tile "img") (dimy_tile "img") 0)
(slide_image 5 -10 (dimx_tile "img") (dimy_tile "img") "weld")
(end_image)
(start_dialog) (unload_dialog i)
)
;;;--------------------------------------------------------------
(defun C:weld()
(weld_dialog)
(if(= ddiag 1)
(princ "\n Weld cancelled!")
)
(if(= ddiag 2)
(progn
(command "-insert" myItem1 pause "" "" "")))
)
(princ)


Cảm ơn anh,em đã chạy được chương trình ở trên thành công với các file "sld" rồi.
Nhưng khi em thay bằng file "slb" có chứa các file "sld" trong đó thì nó ko hiển thị được từng ảnh trong "slb" đó.
Bây giờ mình có cần phải thêm gì vào chương trình để có thể chạy được các dạng file "slb" vậy anh?
  • 0

#120 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 28 August 2012 - 10:34 AM


Cảm ơn anh,em đã chạy được chương trình ở trên thành công với các file "sld" rồi.
Nhưng khi em thay bằng file "slb" có chứa các file "sld" trong đó thì nó ko hiển thị được từng ảnh trong "slb" đó.
Bây giờ mình có cần phải thêm gì vào chương trình để có thể chạy được các dạng file "slb" vậy anh?

Bạn đọc lại các bài viết của bác ssg tại trang 2 của topic này là sẽ làm được
Chúc thành công
  • 0