Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
dhyl

hỏi vấn đề tạo liên kết LSP và dialog DCL

Các bài được khuyến nghị

phamthanhbinh    3.123
Rất cảm ơn sự nhiệt tình của anh npham, nhưng xin lỗi, tôi lại không làm được!!!

 

Bây giờ ví dụ cụ thể như thế này nhé:

 

Trước tiên download file này: http://s.cadviet.com/kv

 

1. Có sẵn một file help (trong file download trên!)

2. Sứa DCL Dialog.dcl hôm trước để có thêm nút help như sau:

(có sẵn trong file download trên!!)

 

===================dialog.dcl======

Polygon : dialog {

label = "POLYGON - dhyl - www.cadviet.com";

: column {

: popup_list {

key = "numside";

label = "So canh da giac deu:";

width = 5;

fixed_width_font = false;

}

: edit_box {

key = "L";

label = "Chieu dai canh:";

edit_width = 30;

value = "";

}

: row {

: button {

fixed_width=true;

width=13;

key="help";

label= "&Help";

is_help=true;

}: button {

key = "accept";

label = " Dong y ";

is_default = true;

}

}

}

}

===================dialog.dcl======

Anh npham có thể sửa lại cái LISP: dagiac.lsp (hôm trước anh viết) thêm vào nội dung: khi người dùng nhấp vào nút Help --> màn hình ACAD hiển thị file: Dialog.chm em đã cung cấp ở trên.

 

Chân thành cảm ơn!

 

Hề hề hề,

Tham vọng của bạn hình như hơi không nhỏ hỉ????

Theo mình biết thì lisp không hỗ trợ việc mở file *.chm bạn ạ. Do vậy nếu bạn muốn sử dụng hộp thoại để mở file này trước hết bạn hãy tìm cách đưa file đó về dạng *.txt, *.cvs thì họa may mới có thể bạn ạ.

Rất không vui vì chẳng thể giúp bạn hơn.

Hề hề hề....

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tue_NV    3.841
Hề hề hề,

Tham vọng của bạn hình như hơi không nhỏ hỉ????

Theo mình biết thì lisp không hỗ trợ việc mở file *.chm bạn ạ. Do vậy nếu bạn muốn sử dụng hộp thoại để mở file này trước hết bạn hãy tìm cách đưa file đó về dạng *.txt, *.cvs thì họa may mới có thể bạn ạ.

Rất không vui vì chẳng thể giúp bạn hơn.

Hề hề hề....

Bác đã thử mở file *.chm bằng hàm Help chưa?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
npham    75
Hề hề hề,

Tham vọng của bạn hình như hơi không nhỏ hỉ????

Theo mình biết thì lisp không hỗ trợ việc mở file *.chm bạn ạ. Do vậy nếu bạn muốn sử dụng hộp thoại để mở file này trước hết bạn hãy tìm cách đưa file đó về dạng *.txt, *.cvs thì họa may mới có thể bạn ạ.

Rất không vui vì chẳng thể giúp bạn hơn.

Hề hề hề....

 

Sao không đuwọc mấy bác hè. Cái ni tui vọc hoài mà.

 

thêm cái này vào lisp của bạn coi. Chú ý đường dẫn nhé. Tui test thử rồi đó

 

(action_tile "help" "(help \"c:/dagiac/dialog.chm\")")

 

Tất nhiên bác cũng có thể hiển thị luôn đến chi tiết của file help theo cú pháp: (help [helpfile ]]))

  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123
Rất cảm ơn sự nhiệt tình của anh npham, nhưng xin lỗi, tôi lại không làm được!!!

 

Bây giờ ví dụ cụ thể như thế này nhé:

 

Trước tiên download file này: http://s.cadviet.com/kv

 

1. Có sẵn một file help (trong file download trên!)

2. Sứa DCL Dialog.dcl hôm trước để có thêm nút help như sau:

(có sẵn trong file download trên!!)

 

 

Anh npham có thể sửa lại cái LISP: dagiac.lsp (hôm trước anh viết) thêm vào nội dung: khi người dùng nhấp vào nút Help --> màn hình ACAD hiển thị file: Dialog.chm em đã cung cấp ở trên.

 

Chân thành cảm ơn!

Hề hề hề,

Biếu bạn một cái dùng chơi cho biết nhé.

Cái này cho phép bạn xài cái button Help mà bạn đã mất công tạo ra để xem một phần cái file chm của bạn mà mình chơi kiểu củ chuối là chuyển nó thành file *.txt để đọc và hiển thị từng dòng của nó bằng hàm alert.

Đọc xong dòng nào bạn click vào nút OK trên bảng alert nó sẽ hiển thị dòng tiếp theo cho bạn đọc. Tới khi hết văn bản thì thôi.

Cái củ chuối này chỉ để bạn hình dung thôi chứ chưa phải là cái bạn cần đâu nhé, vì nó có những bất tiện nhất định như chỉ đọc từng dòng, phải đọc hết mới thoát hộp thoại,.... Tuy nhiên nó là cái gợi ý để bạn có thể cải thiện nó ngon hơn. Việc khắc phục những nhược điểm trên không phải là không thể mà chỉ là mình chưa kịp nghĩ ra thôi. Hề hề hề.

Trước khi chạy lisp nhớ copy file văn bản mà mình gửi kèm ở đây vào notepad và đặt tên file là dialog.txt . Sau đó lưu nó vào một thư mục bất kỳ trên ổ đĩa của bạn. Khi lisp hiển thị hộp thoại chọn tên file thì bạn hãy dò đến cái thư mục đó nhé.

 

1/- File lisp:

(defun c:dagiac (/)

(setq datalist (list 3 5 7 9 11 13 15 17))
(setq numside 5)
(setq L 30)

(setq id (load_dialog "dialog.dcl"))
(new_dialog "Polygon" id)

(start_list "numside")
(mapcar 'add_list (mapcar 'itoa datalist))
(end_list)

(set_tile "numside" (itoa (vl-position numside datalist)))
(set_tile "L" (rtos L 2 2))

(action_tile "numside" "(setq numside (nth (atoi $value) datalist))")
(action_tile "L" "(setq L (distof $value))")
(action_tile "help" "(done_dialog 2)")

(setq sta (start_dialog))
(done_dialog)
(unload_dialog id)

(if (= sta 1)
(progn
(setq a (/ pi numside))
(setq R (/ L 2 (sin a)))
(command "polygon" numside (setq p1 (getpoint "Center point")) "" (polar p1 (* pi 0.5) R))
)
)
(if (= sta 2)
   (progn
   (setq filename (getfiled "Select a File" "dialog" "txt" 0))
   (setq txt " ")
   (setq f (open filename "r"))
   (while (/= txt nil)

   (setq txt (read-line f))
   (alert (strcat "\n" txt "\n"))
   )
   )
)
(close f)
)

 

2/- file txt:]

 

Thank you for installing the AutoCAD Express Tools!

 

The AutoCAD Express Tools are a library of productivity tools designed to help you extend the power of AutoCAD. They are easy to use, easily integrated into your menus and toolbars, and cover a wide range of AutoCAD functions, including dimensioning, drawing, object selection, object modification, and much more.

 

The AutoCAD Express Tools are unsupported. However, if you have questions or comments about an Express Tool, you can visit the AutoCAD Express Tools newsgroup. In general, these utilities are provided as a courtesy to you by Autodesk and Autodesk does not assume any responsibility for their successful operation.

 

3/- file dcl

Polygon : dialog {
label = "POLYGON - dhyl - www.cadviet.com";
: column {
: popup_list {
key = "numside";
label = "So canh da giac deu:";
width = 5;
fixed_width_font = false;
}
: edit_box {
key = "L";
label = "Chieu dai canh:";
edit_width = 30;
value = "";
}
: row {
: button {
fixed_width=true;
width=13;
key="help";
label= "&Help";
is_help=true;
}
: button {
key = "accept";
label = " Dong y ";
is_default = true;
}
}
}
}

 

Hề hề hề, hy vọng rằng bạn sẽ không chán cái củ chuối này...

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123
Bác đã thử mở file *.chm bằng hàm Help chưa?

Hề hề hề,

Dạ, cái hàm Help này mình chưa vọc tới bao giờ bác ạ. Mình cứ ngở lisp chỉ có hàm open để mở file. Hề hề hề.

Cám ơn bác mình sẽ vọc cái hàm này rồi thử coi sao. Bác chờ xem nhé.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phuonganh    0
Hề hề hề,

Biếu bạn một cái dùng chơi cho biết nhé.

Cái này cho phép bạn xài cái button Help mà bạn đã mất công tạo ra để xem một phần cái file chm của bạn mà mình chơi kiểu củ chuối là chuyển nó thành file *.txt để đọc và hiển thị từng dòng của nó bằng hàm alert.

Đọc xong dòng nào bạn click vào nút OK trên bảng alert nó sẽ hiển thị dòng tiếp theo cho bạn đọc. Tới khi hết văn bản thì thôi.

Cái củ chuối này chỉ để bạn hình dung thôi chứ chưa phải là cái bạn cần đâu nhé, vì nó có những bất tiện nhất định như chỉ đọc từng dòng, phải đọc hết mới thoát hộp thoại,.... Tuy nhiên nó là cái gợi ý để bạn có thể cải thiện nó ngon hơn. Việc khắc phục những nhược điểm trên không phải là không thể mà chỉ là mình chưa kịp nghĩ ra thôi. Hề hề hề.

Trước khi chạy lisp nhớ copy file văn bản mà mình gửi kèm ở đây vào notepad và đặt tên file là dialog.txt . Sau đó lưu nó vào một thư mục bất kỳ trên ổ đĩa của bạn. Khi lisp hiển thị hộp thoại chọn tên file thì bạn hãy dò đến cái thư mục đó nhé.

 

Hề hề hề, hy vọng rằng bạn sẽ không chán cái củ chuối này...

 

Bác phamthanhbinh thân!

 

Không biết bác suy nghỉ thế nào mà hướng dẫn tôi như vậy!!!

 

Trong khi sài ACAD có rất nhiều hộp thoại có nút HELP. Có thể là một file Help định dạng *.chm chứa đựng thật nhiều mục. Khi hộp thoại bạn đang sài, liên quan đến vấn đề gì --> sẽ trích xuất cụ thể vấn đề đó lên để Help cho bạn.

 

Ví dụ cụ thể: trong Express có sẵn: overkill.lsp & overkill.dcl ---> khi sử dụng lệnh overkill hộp thoại có chứa nút HELP. khi nguời dùng nhấp nút này ---> truy xuất trực tiếp đến phần hướng dẫn sử dụng overkill của file: acet.chm (file này bao gồm rất nhiều hướng dẫn khác)

 

phuonganh có tham khảo phần LISP của overkill rùi, nhưng cách gọi help rất phức tạp + kiến thức bản thân còn kém wá xá. chưa hiểu được! Nên chỉ mong các anh chỉ cho cách gọi trực tiếp file *.chm lên luôn, không cần truy xuất cụ thể đến vấn đề "con" như vậy có lẽ là sẽ đỡ đi phần rắc rối!

 

Bi giờ bác Phamthanhbinh đã hiểu được vấn đề chưa?! mặc dù vậy, cá nhân tôi cũng rất trân trọng những hướng dẫn của bác! Thanks away!

 

===============================================================================

Sao không đuwọc mấy bác hè. Cái ni tui vọc hoài mà.

 

thêm cái này vào lisp của bạn coi. Chú ý đường dẫn nhé. Tui test thử rồi đó

 

(action_tile "help" "(help \"c:/dagiac/dialog.chm\")")

 

Tất nhiên bác cũng có thể hiển thị luôn đến chi tiết của file help theo cú pháp: (help [helpfile ]]))

 

Chân thành cám ơn anh npham! Vì tất cả những chỉ dạy tận tình của anh!

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tue_NV    3.841
Trong khi sài ACAD có rất nhiều hộp thoại có nút HELP. Có thể là một file Help định dạng *.chm chứa đựng thật nhiều mục. Khi hộp thoại bạn đang sài, liên quan đến vấn đề gì --> sẽ trích xuất cụ thể vấn đề đó lên để Help cho bạn.

 

Ví dụ cụ thể: trong Express có sẵn: overkill.lsp & overkill.dcl ---> khi sử dụng lệnh overkill hộp thoại có chứa nút HELP. khi nguời dùng nhấp nút này ---> truy xuất trực tiếp đến phần hướng dẫn sử dụng overkill của file: acet.chm (file này bao gồm rất nhiều hướng dẫn khác)

 

phuonganh có tham khảo phần LISP của overkill rùi, nhưng cách gọi help rất phức tạp + kiến thức bản thân còn kém wá xá. chưa hiểu được! Nên chỉ mong các anh chỉ cho cách gọi trực tiếp file *.chm lên luôn, không cần truy xuất cụ thể đến vấn đề "con" như vậy có lẽ là sẽ đỡ đi phần rắc rối!

......

Chào Phương Anh

Tue_NV thấy vấn đề nóđơn giản mà bạn

Này nhé : Bạn muốn gọi trực tiếp file *.chm lên khi nhấn Button Help thì bạn phải thiết lập 1 hành động thực thi khi nhấn button help bằng hàm Action_tile

Thiết lập như thế nào thì bác npham đã hướng dẫn

Bạn thêm dòng

(action_tile "help" "(help \"c:/dagiac/dialog.chm\")")

 

Trong 1 loạt các hành động

(action_tile "numside" "(setq numside (nth (atoi $value) datalist))")

(action_tile "L" "(setq L (distof $value))")

vô trong Lisp là được và chú ý đến đường dẫn nó nhé. Và đương nhiên nếu dialog.chm nằm trong Support file Search Path thì bạn cũng không cần chỉ thêm đường dẫn cho nó làm chi, tự nó sẽ mở lên cho bạn

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123
Bác phamthanhbinh thân!

 

Không biết bác suy nghỉ thế nào mà hướng dẫn tôi như vậy!!!

 

Trong khi sài ACAD có rất nhiều hộp thoại có nút HELP. Có thể là một file Help định dạng *.chm chứa đựng thật nhiều mục. Khi hộp thoại bạn đang sài, liên quan đến vấn đề gì --> sẽ trích xuất cụ thể vấn đề đó lên để Help cho bạn.

 

Ví dụ cụ thể: trong Express có sẵn: overkill.lsp & overkill.dcl ---> khi sử dụng lệnh overkill hộp thoại có chứa nút HELP. khi nguời dùng nhấp nút này ---> truy xuất trực tiếp đến phần hướng dẫn sử dụng overkill của file: acet.chm (file này bao gồm rất nhiều hướng dẫn khác)

 

phuonganh có tham khảo phần LISP của overkill rùi, nhưng cách gọi help rất phức tạp + kiến thức bản thân còn kém wá xá. chưa hiểu được! Nên chỉ mong các anh chỉ cho cách gọi trực tiếp file *.chm lên luôn, không cần truy xuất cụ thể đến vấn đề "con" như vậy có lẽ là sẽ đỡ đi phần rắc rối!

 

Bi giờ bác Phamthanhbinh đã hiểu được vấn đề chưa?! mặc dù vậy, cá nhân tôi cũng rất trân trọng những hướng dẫn của bác! Thanks away!

 

===============================================================================

Chân thành cám ơn anh npham! Vì tất cả những chỉ dạy tận tình của anh!

Hề hề hề,

Vì mình là dân đi mót, mà lại chưa mót được cái củ Help nên chưa biết cách làm mới làm kiểu củ chuối như vầy. Sau khi được các bác Tue_NV và npham hướng dẫn mới mót thêm được một tí của cái củ Help nên làm thử cái này, có nhẽ bạn cũng chả cần nữa xong cũng cứ khoe ra đây để bạn hiểu suy nghĩ của mình ra răng hỉ:

File dcl thì dùng cái bạn làm.

File lisp thì nó như thế này:

(defun c:dagiac (/)

(setq datalist (list 3 5 7 9 11 13 15 17))
(setq numside 5)
(setq L 30)

(setq id (load_dialog "dialog.dcl"))
(new_dialog "Polygon" id)

(start_list "numside")
(mapcar 'add_list (mapcar 'itoa datalist))
(end_list)

(set_tile "numside" (itoa (vl-position numside datalist)))
(set_tile "L" (rtos L 2 2))

(action_tile "numside" "(setq numside (nth (atoi $value) datalist))")
(action_tile "L" "(setq L (distof $value))")
(action_tile "help" "(done_dialog 2)")

(setq sta (start_dialog))
(done_dialog)
(unload_dialog id)

(if (= sta 1)
(progn
(setq a (/ pi numside))
(setq R (/ L 2 (sin a)))
(command "polygon" numside (setq p1 (getpoint "Center point")) "" (polar p1 (* pi 0.5) R))
)
)
(if (= sta 2)
   (progn

   (help "D:\\Autolisp tu hoc\\Samples\\dialog.chm" )

   )
)

)

 

Bạn lưu ý là cái đường dẫn của mình nó hơi khác do mình nhét tất cả mọi thứ về lisp vào cái thư mục autolisp tu hoc của mình bạn ạ. Hy vọn bạn thông cảm với cái sự dốt của mình hỉ....

 

@Bác Tue_NV và bác nPham: Cám ơn sự chỉ dẫn của các bác. Tuy nhiên có một vấn đề mình chưa rõ là khi đọc trong help thì thấy cái hàm (help ..... ) này ngoài tham số tên file còn có các tham số như topic và command. Cách sử dụng các tham số này mình chưa rõ lắm (mặc dù đã đọc trong help rồi). Rất mong các bác cho thêm mấy cái ví dụ cụ thể và giải thích thêm để mình vỡ ra.

Tỷ dụ khi mình dùng (help "D:\\Autolisp tu hoc\\Samples\\dialog.chm" "Contents")

Hay khi dùng (help "D:\\Autolisp tu hoc\\Samples\\dialog.chm" "Contents" "HH_DISPLAY_TOPIC")

Thì kết quả đều là:

(Rất tiếc không upload được hình do trang upload của diễn đàn có vấn đề, mình sẽ upload ngay khi có thể, mong các bác đừng giận)

http://www.mediafire.com/i/?fd24m37ejpt9ikb

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Thaistreetz    515
Theo mình biết thì lisp không hỗ trợ việc mở file *.chm bạn ạ.

Không những mở được CHM mà lisp còn có thể mở được rất nhiều định dạng file khác mà Hệ điều hành có thể hiểu được bác ạ. Em nhớ có lần tra cứu chức năng các hàm em đã thử dùng 1 hàm để open 1 file jpg và sử dụng chính hàm đó để khởi động 1 phần mềm nghe nhạc trong máy. rất tiếc em không nhớ đã lấy hàm đó ở đâu và bây giờ em không có cad để test. để hôm nào về cty em kiểm tra lại

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
gia_bach    1.442
Hề hề hề,

...............

Tuy nhiên có một vấn đề mình chưa rõ là khi đọc trong help thì thấy cái hàm (help ..... ) này ngoài tham số tên file còn có các tham số như topic và command. Cách sử dụng các tham số này mình chưa rõ lắm (mặc dù đã đọc trong help rồi). Rất mong các bác cho thêm mấy cái ví dụ cụ thể và giải thích thêm để mình vỡ ra.

Tỷ dụ khi mình dùng (help "D:\\Autolisp tu hoc\\Samples\\dialog.chm" "Contents")

Hay khi dùng (help "D:\\Autolisp tu hoc\\Samples\\dialog.chm" "Contents" "HH_DISPLAY_TOPIC")

Thì kết quả đều là:..........

Chào các bác

Các “topic và command” này liên quan đến cấu trúc của file Help mà bác gọi.

Nó phụ thuộc vào anh "thiết kế" bố trí các liên kết (Link) đến các “topic và command” trong file như thế nào.

Mỗi nguời có 1 "xì-tin" khác nhau, nên thuờng các đuờng link này cũng khác nhau. Mặc dù là có cách để xem các đuờng link này, nhưng thực tế thì ít khi dùng đến (vì đó là việc riêng của anh "thiết kế" file Help đó).

Dĩ nhiên với file của mình tạo ra thì đuơng nhiên mình phải hiểu rõ các đuờng link này.

 

VD : các bác sửa lại đuờng dẫn file *.chm cho phù hợp.

- với file Help của Express Tools

(help "e:\\ExpressTool.chm" "html\\bscale") sẽ mở file Help của Express Tools với topic Block Scale

(help "e:\\ExpressTool.chm" "html\\blockreplace") → topic : Block Replace

 

- với file Help của VBA Cad 2010

(help "e:\\acad2010auto.chm" "idh_intersectwith") → topic : intersectwith của file acad2010auto.chm

(help "e:\\acad2010auto.chm" "idh_selectionset_object") → topic : selectionset của file acad2010auto.chm

  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tue_NV    3.841
Không những mở được CHM mà lisp còn có thể mở được rất nhiều định dạng file khác mà Hệ điều hành có thể hiểu được bác ạ. Em nhớ có lần tra cứu chức năng các hàm em đã thử dùng 1 hàm để open 1 file jpg và sử dụng chính hàm đó để khởi động 1 phần mềm nghe nhạc trong máy. rất tiếc em không nhớ đã lấy hàm đó ở đâu và bây giờ em không có cad để test. để hôm nào về cty em kiểm tra lại

Bạn hãy thử lệnh ai_editcustfile thử xem nhé.

Nó mở các file lên nếu biết đường dẫn cho nó

  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
thanhduan2407    227

Chào các bác! Cho em hỏi ké một chút về liênkeersst DCL

Em đang làm 1 lisp để ghi chú Text lên màn hình với lựa chọn nhập nội dung, cao chữ, Layer, TextStyle, Color

Có một điều sau đây em chưa biết cách làm:

1. Sau mỗi lần chạy thì start_list của em lại nhân đôi lên (em biết nguyên nhân do (mapcar 'add_list  khi chưa kiểm duyệt) )

2. Hộp thoại màu sắc em vẫn chưa biết cách tạo

3. Em vẫn chưa gán được biến ở List layer và list TextStyle vào Text, nếu bỏ kiểu Layer,  TextStyle thì chạy ngon ạ.

 

Đây là Mã Code của em

GHICHU
: dialog
{
label = "Ch\U+01B0\U+01A1ng tr\U+00ECnh ghi ch\U+00FA";
	: boxed_column
	{
		: edit_box
		{
			label = "Nh\U+1EADp t\U+00EAn c\U+1EA7n vi\U+1EBFt ghi ch\U+00FA";
			key = "Text_ghichu";
			edit_width = 30;
			alignment = left;
			edit_limit = 50;
			value = "Vi\U+1EBFt ghi ch\U+00FA v\U+00E0o \U+0111\U+00E2y";

		}
		: edit_box
		{
			label = "Nh\U+1EADp chi\U+1EC1u cao ch\U+1EEF:";
			key = "Height_Text";
			edit_width = 3.0;
			alignment = left;
			edit_limit = 5;
			value = 1;
		}


	}
	: boxed_column
	{
        	: row
		{
		 : column
		 {
		      : popup_list
		      {
		          label       = "L\U+1EF1a ch\U+1ECDn Layer" ;
		          key         = "LTSLAY" ;
		          edit_width  = 50 ;  
		          list        = "" ;
		          alignment = left;
		      }
		      : popup_list
		      {
		          label       = "L\U+1EF1a ch\U+1ECDn TextStyle" ;
		          key         = "LTSTEXTSTYLE" ;
		          edit_width  = 50 ;  
		          list        = "" ;
		          alignment = left;
		      }
		 }
		}
	}	
	: boxed_column
	{
		: button
		{
			label = "Pick >>>";
			key = "Accept";
			is_default = true;
			fixed_width = centered;
		}
		: button
		{
			label = "H\U+1EE7y";
			key = "Cancel";
			is_default = false;
			fixed_width = centered;
		}

	}

}
(defun C:GCD ( / dcl_id  LtsLayer LtsStyle h Text_ghichu )
(setq dcl_id (load_dialog "GHICHU.DCL"))
(if (not (new_dialog "GHICHU" dcl_id))
 (exit)
)

  
(action_tile "Text_ghichu"  "(setq TextGhiChu $value)")
(mode_tile "Text_ghichu" 2)
(action_tile "Height_Text"  "(setq h $value)")
(mode_tile "Height_Text" 2)
(action_tile "Text_ghichu"  "(setq TextGhiChu $value)")

(setq LtsLayer (Getlayer))
(start_list "LTSLAY")
(mapcar 'add_list  LtsLayer)
(end_list)
(if #CurLay
	(set_tile "LTSLAY"  (setq CurLay #CurLay))
	(set_tile "LTSLAY"  (setq CurLay "0"))
)
(action_tile "LTSLAY" "(setq LayerText $value)")


(setq LtsStyle (GetTextStyle))
(start_list "LTSTEXTSTYLE")
(mapcar 'add_list  LtsStyle)
(end_list)
  
(if #CurStyle
	(set_tile "LTSTEXTSTYLE"  (setq CurStyle #CurStyle))
	(set_tile "LTSTEXTSTYLE"  (setq CurStyle "Standard"))
)
(action_tile "LTSTEXTSTYLE" "(setq TextStyle $value)")
  

(action_tile "Accept" "(setq UseButton 1)(done_dialog)")
(action_tile "Cancel" "(setq UseButton 2)(done_dialog)")

(start_dialog)
(unload_dialog dcl_id)
(if (= UseButton 1)
	(progn
		(GCT TextGhiChu h LayerText TextStyle)
	)
)
(if (= UseButton 2)
	(alert (strcat "\nTho\U+00E1t"))
)


(Princ)
)




(defun Getlayer ( / lyr)
(vlax-for lyr
	(vla-get-layers
		(vla-get-activedocument
			(vlax-get-acad-object)
	        )
        )		
(setq LstLayer (cons (vla-get-name lyr) LstLayer))
)
LstLayer
)




(defun GetTextStyle ( / styl_)
(vlax-for styl_
	(vla-get-textstyles
		(vla-get-activedocument
			(vlax-get-acad-object)
	        )
        )		
(setq LstTextStyle (cons (vla-get-name styl_) LstTextStyle))
)
LstTextStyle
)


(defun GCT(TextGhiChu h LayerText TextStyle / i Olmode Gocxoay);;;;GHI CHU TEXT
(setq i 0)
(while
  	(setvar "OSMODE" 0)
	(setq P1 (Getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m ch\U+00E8n TEXT ghi ch\U+00FA: :  "))
	(setq P2 (Getpoint  P1 "\nChon huong ghi chu TEXT:  "))
  	(setq Gocxoay (Angle (trans P1 1 0)
                             (trans P2 1 0)
		      )
	)
	(command "Style" "Times New Roman"  "Times New Roman"  0 1 0 "" "" "" )
	(entmake (list  (cons 0 "TEXT") (cons 10 P1) (cons 8 LayerText) (cons 40 (atof h)) (cons 50 Gocxoay) (cons 7 TextStyle) (cons 1 TextGhiChu)))
  	(setq i (1+ i))
)
)

;;;-------------------------------------------------------------


Nhờ các bác chỉnh sửa giúp

Em cảm ơn nhiều

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
thanhduan2407    227

Xin lỗi bác Hạ, em mải mê làm việc nên lúc viết quên béng mất điều viết. Em sửa lại rồi bác ạ.

Trong câu 2 là em muốn lựa chọn bảng màu sắc cho chữ đó bác. Nếu viết trong DCL thì viết như nào ạ? và cách gọi nó ra thì ntn ạ?

Trong 3 thì em chưa biết cách gán layer lựa chọn hay style  lựa chọn cho Text.

Em vừa sửa lại thấy tự dưng có layer mới xuất hiện mà em ko tạo ra. Cái này em cảm thấy hơi lạ

 

GHICHU
: dialog
{
label = "Ch\U+01B0\U+01A1ng tr\U+00ECnh ghi ch\U+00FA";
	: boxed_column
	{
		: edit_box
		{
			label = "Nh\U+1EADp t\U+00EAn c\U+1EA7n vi\U+1EBFt ghi ch\U+00FA";
			key = "Text_ghichu";
			edit_width = 30;
			alignment = left;
			edit_limit = 50;
			value = "Vi\U+1EBFt ghi ch\U+00FA v\U+00E0o \U+0111\U+00E2y";

		}
		: edit_box
		{
			label = "Nh\U+1EADp chi\U+1EC1u cao ch\U+1EEF:";
			key = "Height_Text";
			edit_width = 3.0;
			alignment = left;
			edit_limit = 5;
			value = 1;
		}


	}
	: boxed_column
	{
        	: row
		{
		 : column
		 {
		      : popup_list
		      {
		          label       = "L\U+1EF1a ch\U+1ECDn Layer" ;
		          key         = "LTSLAY" ;
		          edit_width  = 50 ;  
		          list        = "" ;
		          alignment = left;
		      }
		      : popup_list
		      {
		          label       = "L\U+1EF1a ch\U+1ECDn TextStyle" ;
		          key         = "LTSTEXTSTYLE" ;
		          edit_width  = 50 ;  
		          list        = "" ;
		          alignment = left;
		      }
		 }
		}
	}	
	: boxed_column
	{
		: button
		{
			label = "Pick >>>";
			key = "Accept";
			is_default = true;
			fixed_width = centered;
		}
		: button
		{
			label = "H\U+1EE7y";
			key = "Cancel";
			is_default = false;
			fixed_width = centered;
		}

	}

}

 

(defun C:GCD ( / dcl_id  LtsLayer LtsStyle h Text_ghichu )
(setq dcl_id (load_dialog "GHICHU.DCL"))
(if (not (new_dialog "GHICHU" dcl_id))
 (exit)
)

  
(action_tile "Text_ghichu"  "(setq TextGhiChu $value)")
(mode_tile "Text_ghichu" 2)
(action_tile "Height_Text"  "(setq h $value)")
(mode_tile "Height_Text" 2)
(action_tile "Text_ghichu"  "(setq TextGhiChu $value)")

(setq LtsLayer_ (Getlayer))
(start_list "LTSLAY")
(mapcar 'add_list  LtsLayer_)
(end_list)
(set_tile "LTSLAY" "0")
(action_tile "LTSLAY" "(setq LayerText_ $value)")


(setq LtsStyle_ (GetTextStyle))
(start_list "LTSTEXTSTYLE")
(mapcar 'add_list  LtsStyle_)
(end_list)

;;;(action_tile "LTSTEXTSTYLE" "(setq TextStyle_ $value)")
  

(action_tile "Accept" "(setq UseButton 1)(done_dialog)")
(action_tile "Cancel" "(setq UseButton 2)(done_dialog)")

(start_dialog)
(unload_dialog dcl_id)
(if (= UseButton 1)
	(progn
		(GCT TextGhiChu h LayerText_ )
	)
)
(if (= UseButton 2)
	(alert (strcat "\nTho\U+00E1t"))
)


(Princ)
)




(defun Getlayer ( / lyr LstLayer)
(vlax-for lyr
	(vla-get-layers
		(vla-get-activedocument
			(vlax-get-acad-object)
	        )
        )		
(setq LstLayer (cons (vla-get-name lyr) LstLayer))
)
LstLayer
)




(defun GetTextStyle ( / styl_  LstTextStyle)
(vlax-for styl_
	(vla-get-textstyles
		(vla-get-activedocument
			(vlax-get-acad-object)
	        )
        )		
(setq LstTextStyle (cons (vla-get-name styl_) LstTextStyle))
)
LstTextStyle
)


(defun GCT(TextGhiChu h LayerText  / i Olmode Gocxoay);;;;GHI CHU TEXT
(setq i 0)
(while
  	(setvar "OSMODE" 0)
	(setq P1 (Getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m ch\U+00E8n TEXT ghi ch\U+00FA: :  "))
	(setq P2 (Getpoint  P1 "\nChon huong ghi chu TEXT:  "))
  	(setq Gocxoay (Angle (trans P1 1 0)
                             (trans P2 1 0)
		      )
	)
	(command "Style" "Times New Roman"  "Times New Roman"  0 1 0 "" "" "" )
;;;	(entmake (list  (cons 0 "TEXT") (cons 10 P1) (cons 8 LayerText) (cons 40 (atof h)) (cons 50 Gocxoay) (cons 7 TextStyle) (cons 1 TextGhiChu)))
  	(entmake (list  (cons 0 "TEXT") (cons 10 P1) (cons 8 LayerText) (cons 40 (atof h)) (cons 50 Gocxoay)(cons 7 "Times New Roman")   (cons 1 TextGhiChu)))
  	(setq i (1+ i))
)
)

;;;-------------------------------------------------------------


Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Doan Van Ha    2.676

Gán Layer cho Text:

(vla-put-Layer (vlax-ename->vla-object ent_text))

Gán TextStyle cho Text:

(vla-put-TextStyle (vlax-ename->vla-object ent_text))

Hàm gọi bảng màu: ví dụ màu 3

(acad_colordlg 3)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tot77    501

Sửa lại cho bạn.

 

(defun C:GCD ( / dcl_id  LtsLayer LtsStyle h Text_ghichu )
(setq dcl_id (load_dialog "GHICHU.DCL"))
(if (not (new_dialog "GHICHU" dcl_id))
 (exit)
)
  
(action_tile "Text_ghichu"  "(setq TextGhiChu $value)")
(mode_tile "Text_ghichu" 2)
(action_tile "Height_Text"  "(setq h $value)")
(mode_tile "Height_Text" 2)
 
(start_list "LTSLAY")
(mapcar 'add_list (setq LstLayer (Getlayer)))
(end_list)
  
(if #CurLay
(set_tile "LTSLAY" #CurLay)
(set_tile "LTSLAY"  "0")
)
(action_tile "LTSLAY" "(setq #CurLay $value)")
 
(start_list "LTSTEXTSTYLE")
(mapcar 'add_list (setq LstTextStyle (GetTextStyle)))
(end_list)
  
 
(if #CurStyle
(set_tile "LTSTEXTSTYLE" #CurStyle)
(set_tile "LTSTEXTSTYLE" "Standard")
)
(action_tile "LTSTEXTSTYLE" "(setq #CurStyle $value)")
 
(if (not TextGhiChu) (setq TextGhiChu (get_tile "Text_ghichu")))
(if (not #CurLay) (setq #CurLay (get_tile "LTSLAY")))
(if (not #CurStyle) (setq #CurStyle (get_tile "LTSTEXTSTYLE")))
  
(action_tile "Accept" "(setq UseButton 1)(done_dialog)")
(action_tile "Cancel" "(setq UseButton 2)(done_dialog)")
 
(start_dialog)
(unload_dialog dcl_id)
(if (= UseButton 1)
(progn 
 (GCT TextGhiChu h #CurLay #CurStyle)
)
)
(if (= UseButton 2)
(alert (strcat "\nTho\U+00E1t"))
)
(Princ)
)
 
(defun Getlayer ( / lyr l)
  (setq l nil)
  (vlax-for lyr
(vla-get-layers
(vla-get-activedocument
(vlax-get-acad-object)
       )
        ) 
    (setq l (cons (vla-get-name lyr) l))
  )
  l
)
 
(defun GetTextStyle ( / styl_ l)
  (setq l nil)
  (vlax-for styl_
(vla-get-textstyles
(vla-get-activedocument
(vlax-get-acad-object)
       )
        ) 
    (setq l (cons (vla-get-name styl_) l))
  )
  l
)
 
 
(defun GCT(TextGhiChu h LayerText TextStyle / i Olmode Gocxoay);;;;GHI CHU TEXT
  (command "Style" "Times New Roman"  "Times New Roman"  0 1 0 "" "" "" )
  (while (setq P1 (Getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m ch\U+00E8n TEXT ghi ch\U+00FA: "))
(setq P2 (Getpoint  P1 "\nChon huong ghi chu TEXT: "))
   (setq Gocxoay (Angle (trans P1 1 0)
                             (trans P2 1 0)
     )
) 
(entmake (list  (cons 0 "TEXT") (cons 10 P1) (cons 8 (nth (atoi LayerText) LstLayer))
(cons 40 (atof h)) (cons 50 Gocxoay)
(cons 7 (nth (atoi TextStyle) LstTextStyle)) (cons 1 TextGhiChu)))   
  )
)
 
;;;-------------------------------------------------------------
 
 
  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
thanhduan2407    227

Dạ, bác chưa hiểu ý em rồi ạ. Em tạo Text chứ ko phải gán thuộc tính cho Text ạ

Em có hàm 

(entmake (list  (cons 0 "TEXT") (cons 10 P1) (cons 8 LayerText) (cons 40 (atof h)) (cons 50 Gocxoay)(cons 7 TextStyle)   (cons 1 TextGhiChu)))

Em muốn hàm Entmake này nó nhận LayerText và TextStyle do mình lựa chọn trên  hộp thoại.

Thêm vào đó, em muốn gán thêm màu sắc cho Text nữa ạ. 

Như kiểu hộp thoại Mtext đó ạ

36665_hhhhhhh.jpg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
thanhduan2407    227

Cho em hỏi đoạn này với ạ

(nth (atoi LayerText) LstLayer))

Em thắc mắc là hàm: (nth n lst)

n : The number of the element to return from the list (zero is the first element).

Nếu (atoi LayerText) ko phải number thì sao ạ?

Đâu thể dùng được đoạn này ạ: (nth (atoi LayerText) LstLayer))

Arguments
n
The number of the element to return from the list (zero is the first element).
lst
The list.
Return Values
 
Arguments
n
The number of the element to return from the list (zero is the first element).
lst
The list.
Return Values

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tue_NV    3.841

 

Cho em hỏi đoạn này với ạ

(nth (atoi LayerText) LstLayer))

Em thắc mắc là hàm: (nth n lst)

n : The number of the element to return from the list (zero is the first element).

Nếu (atoi LayerText) ko phải number thì sao ạ?

Đâu thể dùng được đoạn này ạ: (nth (atoi LayerText) LstLayer))

Arguments
n
The number of the element to return from the list (zero is the first element).
lst
The list.
Return Values
 
Arguments
n
The number of the element to return from the list (zero is the first element).
lst
The list.
Return Values

 

Biến #CurLay truyền cho biến LayerText qua hàm con GCT. Mà  #CurLay lấy kiểu string (thứ tự trong LstLayer) nên (atoi LayerText) chỉ có thể là number (integer) => (nth (atoi LayerText) LstLayer)) là lấy tên Layer tương ứng với thứ tự #CurLay trong danh sách LstLayer

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tot77    501

Thêm màu thì bạn làm như sau:

1. Trong file dcl thêm một khúc :

 

 :row { 
                  : text { label = "Nhap mau"; alignment =left; }
                  : image_button {  key = "imgC"; alignment = centered; height = 1.5; width = 1.0;
                        fixed_width = false;   fixed_height = true; }
                }

 

2. Trong lệnh C:GCD thêm 1 đoạn :

 

(if (not col) (setq col 1))
(action_tile "imgC" "(setq col (acad_colordlg col)) (tomau col)")
  (defun tomau(c)
    (start_image "imgC")
    (fill_image 0 0 (dimx_tile "imgC")  (dimy_tile "imgC") c)
    (end_image)
  )

 

3. Thêm biến col vào hàm 

(defun GCT(TextGhiChu h LayerText TextStyle col / i Olmode Gocxoay);;;;GHI CHU TEXT

 và trong entmake có (cons 62 col)

 

4. Dĩ nhiên cái dòng (gct ... col) phải thêm biến col.

 

 :row { 
                  : text { label = "Nhap mau"; alignment =left; }
                  : image_button {  key = "imgC"; alignment = centered; height = 1.5; width = 1.0;
                        fixed_width = false;   fixed_height = true; }
                }
 :row { 
                  : text { label = "Nhap mau"; alignment =left; }
                  : image_button {  key = "imgC"; alignment = centered; height = 1.5; width = 1.0;
                        fixed_width = false;   fixed_height = true; }
 
 :row { 
                  : text { label = "Nhap mau"; alignment =left; }
                  : image_button {  key = "imgC"; alignment = centered; height = 1.5; width = 1.0;
                        fixed_width = false;   fixed_height = true; }
                }
  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tue_NV    3.841

Bác Tot trả lời nhanh quá!

Mần cho Thanhduan rồi đây:

 

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/topic/27610-hoi-van-de-tao-lien-ket-lsp-va-dialog-dcl/page-3
(defun C:GCD ( / dcl_id  LtsLayer LtsStyle h Text_ghichu )
(setq dcl_id (load_dialog "GHICHU.DCL"))
(if (not (new_dialog "GHICHU" dcl_id))
 (exit)
)
  
(action_tile "Text_ghichu"  "(setq TextGhiChu $value)")
(mode_tile "Text_ghichu" 2)
(action_tile "Height_Text"  "(setq h $value)")
(mode_tile "Height_Text" 2)
 
(start_list "LTSLAY")
(mapcar 'add_list (setq LstLayer (Getlayer)))
(end_list)
  
(if #CurLay
(set_tile "LTSLAY" #CurLay)
(set_tile "LTSLAY"  "0")
)
(action_tile "LTSLAY" "(setq #CurLay $value)")
 
(if (null #Color) (setq #Color 2))
(fill-rec "color" #color )
(action_tile "color" "(if (setq #color (acad_colordlg #color)) (fill-rec \"color\" #color ))")
 
 
(start_list "LTSTEXTSTYLE")
(mapcar 'add_list (setq LstTextStyle (GetTextStyle)))
(end_list)
  
 
(if #CurStyle
(set_tile "LTSTEXTSTYLE" #CurStyle)
(set_tile "LTSTEXTSTYLE" "Standard")
)
(action_tile "LTSTEXTSTYLE" "(setq #CurStyle $value)")
 
(if (not TextGhiChu) (setq TextGhiChu (get_tile "Text_ghichu")))
(if (not #CurLay) (setq #CurLay (get_tile "LTSLAY")))
(if (not #CurStyle) (setq #CurStyle (get_tile "LTSTEXTSTYLE")))
  
(action_tile "Accept" "(setq UseButton 1)(done_dialog)")
(action_tile "Cancel" "(setq UseButton 2)(done_dialog)")
 
(start_dialog)
(unload_dialog dcl_id)
(if (= UseButton 1)
(progn
 (GCT TextGhiChu h #CurLay #CurStyle #color)
)
)
(if (= UseButton 2)
(alert (strcat "\nTho\U+00E1t"))
)
(Princ)
)
(defun Getlayer ( / lyr l)
  (setq l nil)
  (vlax-for lyr
(vla-get-layers
(vla-get-activedocument
(vlax-get-acad-object)
       )
        )
    (setq l (cons (vla-get-name lyr) l))
  )
  l
)
(defun GetTextStyle ( / styl_ l)
  (setq l nil)
  (vlax-for styl_
(vla-get-textstyles
(vla-get-activedocument
(vlax-get-acad-object)
       )
        )
    (setq l (cons (vla-get-name styl_) l))
  )
  l
)
(defun GCT(TextGhiChu h LayerText TextStyle col / i Olmode Gocxoay);;;;GHI CHU TEXT
  (command "Style" "Times New Roman"  "Times New Roman"  0 1 0 "" "" "" )
  (while (setq P1 (Getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m ch\U+00E8n TEXT ghi ch\U+00FA: "))
(setq P2 (Getpoint  P1 "\nChon huong ghi chu TEXT: "))
   (setq Gocxoay (Angle (trans P1 1 0)
                             (trans P2 1 0)
     )
)
(entmake (list  (cons 0 "TEXT") (cons 10 P1) (cons 8 (nth (atoi LayerText) LstLayer))
(cons 40 (atof h)) (cons 50 Gocxoay)
(cons 7 (nth (atoi TextStyle) LstTextStyle)) (cons 1 TextGhiChu) (cons 62 col) ))  
  )
)
;;;-------------------------------------------------------------
(defun fill-rec (MyTile col / x y)
(start_image MyTile)
(setq x (dimx_tile MyTile) y (dimy_tile MyTile))
(fill_image 0 0 x y col)
(end_image)

DCL:

GHICHU

: dialog

{

label = "Ch\U+01B0\U+01A1ng tr\U+00ECnh ghi ch\U+00FA";

            : boxed_column

            {

                        : edit_box

                        {

                                    label = "Nh\U+1EADp t\U+00EAn c\U+1EA7n vi\U+1EBFt ghi ch\U+00FA";

                                    key = "Text_ghichu";

                                    edit_width = 30;

                                    alignment = left;

                                    edit_limit = 50;

                                    value = "Vi\U+1EBFt ghi ch\U+00FA v\U+00E0o \U+0111\U+00E2y";

 

                        }

                        //:row{

                        : edit_box

                        {

                                    label = "Nh\U+1EADp chi\U+1EC1u cao ch\U+1EEF:";

                                    key = "Height_Text";

                                    edit_width = 3.0;

                                    alignment = left;

                                    edit_limit = 5;

                                    value = 1;

                        }

                        //}

            }

            : boxed_column

            {

            : row

                        {

                         : column

                         {

                              : popup_list

                              {

                                  label       = "L\U+1EF1a ch\U+1ECDn Layer" ;

                                  key         = "LTSLAY" ;

                                  edit_width  = 50 ; 

                                  list        = "" ;

                                  alignment = left;

                              }

                              : popup_list

                              {

                                  label       = "L\U+1EF1a ch\U+1ECDn TextStyle" ;

                                  key         = "LTSTEXTSTYLE" ;

                                  edit_width  = 50 ; 

                                  list        = "" ;

                                  alignment = left;

                              }

                                    :image_button{key = "color"; width=1; height=2; alignment=centered;}

                         }

                        }

            }         

            : boxed_column

            {

                        : button

                        {

                                    label = "Pick >>>";

                                    key = "Accept";

                                    is_default = true;

                                    fixed_width = centered;

                        }

                        : button

                        {

                                    label = "H\U+1EE7y";

                                    key = "Cancel";

                                    is_default = false;

                                    fixed_width = centered;

                        }

 

            }

 

}

;; free lisp from cadviet.com
(defun C:GCD ( / dcl_id  LtsLayer LtsStyle h Text_ghichu )
(setq dcl_id (load_dialog "GHICHU.DCL"))
(if (not (new_dialog "GHICHU" dcl_id))
 (exit)
)
  
(action_tile "Text_ghichu"  "(setq TextGhiChu $value)")
(mode_tile "Text_ghichu" 2)
(action_tile "Height_Text"  "(setq h $value)")
(mode_tile "Height_Text" 2)
 
(start_list "LTSLAY")
(mapcar 'add_list (setq LstLayer (Getlayer)))
(end_list)
  
(if #CurLay
(set_tile "LTSLAY" #CurLay)
(set_tile "LTSLAY"  "0")
)
(action_tile "LTSLAY" "(setq #CurLay $value)")
 
(if (null #Color) (setq #Color 2))
(fill-rec "color" #color )
(action_tile "color" "(if (setq #color (acad_colordlg #color)) (fill-rec \"color\" #color ))")
 
 
(start_list "LTSTEXTSTYLE")
(mapcar 'add_list (setq LstTextStyle (GetTextStyle)))
(end_list)
  
 
(if #CurStyle
(set_tile "LTSTEXTSTYLE" #CurStyle)
(set_tile "LTSTEXTSTYLE" "Standard")
)
(action_tile "LTSTEXTSTYLE" "(setq #CurStyle $value)")
 
(if (not TextGhiChu) (setq TextGhiChu (get_tile "Text_ghichu")))
(if (not #CurLay) (setq #CurLay (get_tile "LTSLAY")))
(if (not #CurStyle) (setq #CurStyle (get_tile "LTSTEXTSTYLE")))
  
(action_tile "Accept" "(setq UseButton 1)(done_dialog)")
(action_tile "Cancel" "(setq UseButton 2)(done_dialog)")
 
(start_dialog)
(unload_dialog dcl_id)
(if (= UseButton 1)
(progn 
 (GCT TextGhiChu h #CurLay #CurStyle #color)
)
)
(if (= UseButton 2)
(alert (strcat "\nTho\U+00E1t"))
)
(Princ)
)
(defun Getlayer ( / lyr l)
  (setq l nil)
  (vlax-for lyr
(vla-get-layers
(vla-get-activedocument
(vlax-get-acad-object)
       )
        ) 
    (setq l (cons (vla-get-name lyr) l))
  )
  l
)
(defun GetTextStyle ( / styl_ l)
  (setq l nil)
  (vlax-for styl_
(vla-get-textstyles
(vla-get-activedocument
(vlax-get-acad-object)
       )
        ) 
    (setq l (cons (vla-get-name styl_) l))
  )
  l
)
(defun GCT(TextGhiChu h LayerText TextStyle col / i Olmode Gocxoay);;;;GHI CHU TEXT
  (command "Style" "Times New Roman"  "Times New Roman"  0 1 0 "" "" "" )
  (while (setq P1 (Getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m ch\U+00E8n TEXT ghi ch\U+00FA: "))
(setq P2 (Getpoint  P1 "\nChon huong ghi chu TEXT: "))
   (setq Gocxoay (Angle (trans P1 1 0)
                             (trans P2 1 0)
     )
(entmake (list  (cons 0 "TEXT") (cons 10 P1) (cons 8 (nth (atoi LayerText) LstLayer))
(cons 40 (atof h)) (cons 50 Gocxoay)
(cons 7 (nth (atoi TextStyle) LstTextStyle)) (cons 1 TextGhiChu) (cons 62 col) ))   
  )
)
;;;-------------------------------------------------------------
(defun fill-rec (MyTile col / x y)
(start_image MyTile)
(setq x (dimx_tile MyTile) y (dimy_tile MyTile))
(fill_image 0 0 x y col)
(end_image)
)
;; free lisp from cadviet.com
(defun C:GCD ( / dcl_id  LtsLayer LtsStyle h Text_ghichu )
(setq dcl_id (load_dialog "GHICHU.DCL"))
(if (not (new_dialog "GHICHU" dcl_id))
 (exit)
)
  
(action_tile "Text_ghichu"  "(setq TextGhiChu $value)")
(mode_tile "Text_ghichu" 2)
(action_tile "Height_Text"  "(setq h $value)")
(mode_tile "Height_Text" 2)
 
(start_list "LTSLAY")
(mapcar 'add_list (setq LstLayer (Getlayer)))
(end_list)
  
(if #CurLay
(set_tile "LTSLAY" #CurLay)
(set_tile "LTSLAY"  "0")
)
(action_tile "LTSLAY" "(setq #CurLay $value)")
 
(if (null #Color) (setq #Color 2))
(fill-rec "color" #color )
(action_tile "color" "(if (setq #color (acad_colordlg #color)) (fill-rec \"color\" #color ))")
 
 
(start_list "LTSTEXTSTYLE")
(mapcar 'add_list (setq LstTextStyle (GetTextStyle)))
(end_list)
  
 
(if #CurStyle
(set_tile "LTSTEXTSTYLE" #CurStyle)
(set_tile "LTSTEXTSTYLE" "Standard")
)
(action_tile "LTSTEXTSTYLE" "(setq #CurStyle $value)")
 
(if (not TextGhiChu) (setq TextGhiChu (get_tile "Text_ghichu")))
(if (not #CurLay) (setq #CurLay (get_tile "LTSLAY")))
(if (not #CurStyle) (setq #CurStyle (get_tile "LTSTEXTSTYLE")))
  
(action_tile "Accept" "(setq UseButton 1)(done_dialog)")
(action_tile "Cancel" "(setq UseButton 2)(done_dialog)")
 
(start_dialog)
(unload_dialog dcl_id)
(if (= UseButton 1)
(progn 
 (GCT TextGhiChu h #CurLay #CurStyle #color)
)
)
(if (= UseButton 2)
(alert (strcat "\nTho\U+00E1t"))
)
(Princ)
)
(defun Getlayer ( / lyr l)
  (setq l nil)
  (vlax-for lyr
(vla-get-layers
(vla-get-activedocument
(vlax-get-acad-object)
       )
        ) 
    (setq l (cons (vla-get-name lyr) l))
  )
  l
)
(defun GetTextStyle ( / styl_ l)
  (setq l nil)
  (vlax-for styl_
(vla-get-textstyles
(vla-get-activedocument
(vlax-get-acad-object)
       )
        ) 
    (setq l (cons (vla-get-name styl_) l))
  )
  l
)
(defun GCT(TextGhiChu h LayerText TextStyle col / i Olmode Gocxoay);;;;GHI CHU TEXT
  (command "Style" "Times New Roman"  "Times New Roman"  0 1 0 "" "" "" )
  (while (setq P1 (Getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m ch\U+00E8n TEXT ghi ch\U+00FA: "))
(setq P2 (Getpoint  P1 "\nChon huong ghi chu TEXT: "))
   (setq Gocxoay (Angle (trans P1 1 0)
                             (trans P2 1 0)
     )
(entmake (list  (cons 0 "TEXT") (cons 10 P1) (cons 8 (nth (atoi LayerText) LstLayer))
(cons 40 (atof h)) (cons 50 Gocxoay)
(cons 7 (nth (atoi TextStyle) LstTextStyle)) (cons 1 TextGhiChu) (cons 62 col) ))   
  )
)
;;;-------------------------------------------------------------
(defun fill-rec (MyTile col / x y)
(start_image MyTile)
(setq x (dimx_tile MyTile) y (dimy_tile MyTile))
(fill_image 0 0 x y col)
(end_image)
)
  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
thanhduan2407    227

Hic hic. Em cảm động quá. 
Cảm ơn 2 anh đã nhiệt tình giúp đỡ.

Kiểu này em phải mần cho ra trò rồi giúp đỡ người khác.

Cảm ơn anh Tot77, anh Tue_NV và bác Doan Van Ha nhiều. 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay


×