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

#41 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 22 March 2008 - 05:10 PM

Cám ơn ssg nhiều .

Em có 1 thư viện của mấy bác nc ngoài viết, trong 1lúc e có thể cho khoảng 400 bản vẽ cad nằm trong cùng 1 thư mục vào thư viện đó! Nó sẽ tự tạo cho ta 400 file sld chỉ trong chục giây! tất cả sẽ đc lưu lại dưới 1 file đuôi là LBA, trong file đó sẽ ghi lại đường dẫn của các file mà ta vừa đem vào thư viện! Mỗi khi muốn tìm thể loại thư viện nào ta chỉ cần chọn file LBA đó! Hạn chế của chương trình là chỉ có 1 khung view, không có next, preview, hay tạo, chỉnh sửa, thêm bớt 1cái nào đó đơn lẻ!
  • 0

#42 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 22 March 2008 - 05:14 PM

Em có 1 thư viện của mấy bác nc ngoài viết, trong 1lúc e có thể cho khoảng 400 bản vẽ cad nằm trong cùng 1 thư mục vào thư viện đó! Nó sẽ tự tạo cho ta 400 file sld chỉ trong chục giây! tất cả sẽ đc lưu lại dưới 1 file đuôi là LBA, trong file đó sẽ ghi lại đường dẫn của các file mà ta vừa đem vào thư viện! Mỗi khi muốn tìm thể loại thư viện nào ta chỉ cần chọn file LBA đó! Hạn chế của chương trình là chỉ có 1 khung view, không có next, preview, hay tạo, chỉnh sửa, thêm bớt 1cái nào đó đơn lẻ!

Mình nghĩ nên post lên để mọi ngưòi sửa những hạn chế mà mình nói chứ nhỉ?
  • 0

#43 ktsnvn

ktsnvn

    biết vẽ arc

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

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

Tất nhiên, chỉ dùng *.sld, thậm chí không cần, dùng ngay bản vẽ *.dwg cũng được. Tuy nhiên, *.slb có những cái hay hơn:
1) Đúng như bạn nhận định, *.slb là một package của các *.sld. Khi cấp cho người dùng chương trình của bạn không phải kéo theo dài lê thê một "đoàn quân" mấy chục, có khi hàng trăm cái *.sld, mà chỉ cần 1 file *.slb duy nhất (Autodesk cũng làm như vậy mà). Khi đã "chơi" món này, ai cũng thấy khoái chí và không bao giờ chịu làm một vài cái *.sld
2) Dùng *.slb bạn mới có thể làm được cái gọi là Image_Tile_Menu. Món này cũng hay lắm đó. Bạn vào: Menu - Draw - Surfaces - 3D Surfaces sẽ thấy.
3) Chẳng hiểu bạn thao tác thế nào mà không tạo được *.slb? Có 2 động tác để tạo *.slb từ các *.sld:
- Tạo file *.txt, là một list chứa các tên file *.sld. (động tác này làm thủ công cũng được, chẳng cần lệnh liếc gì)
- Tạo *.slb từ *.txt trên
Xin hỏi thêm: bạn đang dùng phiên bản Cad nào? Sau khi chạy function (C:SLB...) mình gởi ở trên, bạn có nhận được *.txt không? Nếu có, thử chạy lại (C:SLB...) lần nữa xem. Nếu vẫn không được, đọc kỹ lại Help của bản Cad bạn đang dùng, chắc chắn phải tạo được! Không lẽ Autodesk lừa bạn à?

Bạn dùng thử chương trình sau, đúng yêu cầu mà bạn đã nêu. Từ từ "ngâm cứu" code của nó sẽ hiểu ra mọi vấn đề:
http://www.cadviet.com/upfiles/Geo.zip

Unzip và đọc readme.txt

bạn ơi chương tình geo dùng như thế nào vây? dùng để làm gì mình tải về nhưng chẳng biết dùng vào đâu và dùng như thế nào nữa?
  • 0

#44 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 26 March 2008 - 11:19 AM

Ý em hỏi là cách tạo 1 >MNU nhanh cơ, chứ: ban đầu thì tạo ra *.sld, *.slb. đã lâu rồi, lại tạo ra các MNU tổng hợp lại thì mệt phết?


Hiện nay tôi đã viết xong lisp có thể hiển thị hộp thoại có 11 ảnh hiển thị được các ảnh *.sld trong 1 thư mục, bên dười là dòng text hiển thị tên của sld tương ứng với ảnh. Chọn ảnh và kích nút chèn thì chèn file*.dwg cùng tên nếu có.
Hiện nay mới ở dạng thô như vậy còn 1 số hạn chế: tôi dang hoàn thiện thêm. Cần mọi người giúp tôi vài vấn đề.
-Làm sao lấy đường dẩn của 1 thư mục (không phải file cái này tôi làm được) bằng cách hỏi chọn.
-Nếu giúp tôi được đoạn tạo sld hàng loạt cho tất cả *.dwg trong 1 thư mục thì càng tốt (không phải ai cũng có sẳn thư mục chứa sld rồi cả)
Nói chung cần hoàn thiện thêm nhiều nhưng cơ aan3 cái sườn nếu chỉ định thư mục cố định thì đã chạy được.
Mong mọi người cố gắng giúp.

*Nếu không có cách nào lấy đường dẩn 1 thư mục thì tôi nghỉ ra 1 hướng như thế này:
-Lấy tên 1 file trong thư mục đó có cả đường dẩn (cái này tôi làm được)
-Lấy tên file vừa rồi không có đường dẩn (thêm thông số gì đó có đọc mà giờ quên mất)
Tù đó tôi sẽ lấy được đường dẩn đến thư mục.
Cám ơn mọi người!
  • 0

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


#45 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 26 March 2008 - 02:22 PM

Hiện nay tôi đã viết xong lisp có thể hiển thị hộp thoại có 11 ảnh hiển thị được các ảnh *.sld trong 1 thư mục, bên dười là dòng text hiển thị tên của sld tương ứng với ảnh. Chọn ảnh và kích nút chèn thì chèn file*.dwg cùng tên nếu có.
Hiện nay mới ở dạng thô như vậy còn 1 số hạn chế: tôi dang hoàn thiện thêm. Cần mọi người giúp tôi vài vấn đề.
-Làm sao lấy đường dẩn của 1 thư mục (không phải file cái này tôi làm được) bằng cách hỏi chọn.
-Nếu giúp tôi được đoạn tạo sld hàng loạt cho tất cả *.dwg trong 1 thư mục thì càng tốt (không phải ai cũng có sẳn thư mục chứa sld rồi cả)
Nói chung cần hoàn thiện thêm nhiều nhưng cơ aan3 cái sườn nếu chỉ định thư mục cố định thì đã chạy được.
Mong mọi người cố gắng giúp.

*Nếu không có cách nào lấy đường dẩn 1 thư mục thì tôi nghỉ ra 1 hướng như thế này:
-Lấy tên 1 file trong thư mục đó có cả đường dẩn (cái này tôi làm được)
-Lấy tên file vừa rồi không có đường dẩn (thêm thông số gì đó có đọc mà giờ quên mất)
Tù đó tôi sẽ lấy được đường dẩn đến thư mục.
Cám ơn mọi người!

Bạn thử lần lượt 3 biểu thức lisp ví dụ dưới đây. Có phải là cái bạn muốn không?
(setq fn (findfile "acad.exe"))
(setq d (vl-filename-directory fn))
(setq L (vl-directory-files d))

Kết quả:
- d là directory
- L là list chứa toàn bộ filename có trong d

Nếu chỉ quan tâm đến *.dwg, bạn dùng:
(setq L (vl-directory-file d "*.dwg")) -> 1 list chứa toàn bộ filename của *.dwg có trong d. Với kết quả này, mình nghĩ là bạn tự làm được hàng loạt *.sld có trong thư mục?
  • 0

#46 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 26 March 2008 - 03:13 PM

Bạn thử lần lượt 3 biểu thức lisp ví dụ dưới đây. Có phải là cái bạn muốn không?
(setq fn (findfile "acad.exe"))
(setq d (vl-filename-directory fn))
(setq L (vl-directory-files d))

Kết quả:
- d là directory
- L là list chứa toàn bộ filename có trong d

Nếu chỉ quan tâm đến *.dwg, bạn dùng:
(setq L (vl-directory-file d "*.dwg")) -> 1 list chứa toàn bộ filename của *.dwg có trong d. Với kết quả này, mình nghĩ là bạn tự làm được hàng loạt *.sld có trong thư mục?

Để tạo 1 file*.txt chứa danh sách các *.dwg trong 1 thư mục thì mình làm được rồi nhưng không biết làm sao cho nó gọi lần lượt các file này lên và tạo ảnh *.sld cả.
  • 0

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


#47 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 26 March 2008 - 05:17 PM

Để tạo 1 file*.txt chứa danh sách các *.dwg trong 1 thư mục thì mình làm được rồi nhưng không biết làm sao cho nó gọi lần lượt các file này lên và tạo ảnh *.sld cả.

Mình có thể giúp bạn đó ! Hiện tại mình có 1 lisp có thể tạo ra 1lúc gần 400 file sld từ 400 file dwg trong cùng thư mục và lưu tên cùng đường dẫn của các file sld và dwg đó trong 1 file lba! Khi nào muốn lấy thư viện thì chỉ cần gọi file lba đó lên ! Bạn có thể tham khảo cole của chương trình ! Nếu bạn muốn mình sẽ post lên ! Hiên tại mình ko ở nhà nên ko post lên đc!
  • 0

#48 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 27 March 2008 - 08:58 AM

Để tạo 1 file*.txt chứa danh sách các *.dwg trong 1 thư mục thì mình làm được rồi nhưng không biết làm sao cho nó gọi lần lượt các file này lên và tạo ảnh *.sld cả.

Chương trình tạo hàng loạt file *.sld:


(defun C:MK( / fn d L i dwg f fnb fsld)
(setq
fn (getfiled "Select a Drawing File in Library" "" "dwg" 0)
d (vl-filename-directory fn)
L (vl-directory-files d "*.dwg")
i 0
)
(foreach dwg L
(setq
f (strcat d "\\" dwg)
fnb (vl-filename-base dwg)
fsld (strcat d "\\" fnb)
)
(if (not (findfile (strcat fsld ".sld")))
(progn
(command "insert" f (list 0 0 0) 1 1 0)
(command "zoom" "e")
(command "mslide" fsld)
(command "erase" (entlast) "")
(setq i (1+ i))
)
)
)
(alert (strcat (itoa i) " slide files created")))
(princ)
)


Hoạt động:
1) Lệnh MK, chọn 1 file *.dwg bất kỳ trong thư mục
2) Chương trình duyệt toàn bộ *.dwg trong thư mục đó. Cái nào chưa có *.sld thì tự tạo, đặt cùng tên và thư mục với *.dwg. Báo cáo kết quả tổng số file *.sld đã tạo được.
3) Bạn muốn lập danh sách các file *.sld thì tự bổ sung thêm vào chương trình. OK?
  • 1

#49 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 27 March 2008 - 09:58 AM

Chương trình tạo hàng loạt file *.sld:


(defun C:MK( / fn d L i dwg f fnb fsld)
(setq
fn (getfiled "Select a Drawing File in Library" "" "dwg" 0)
d (vl-filename-directory fn)
L (vl-directory-files d "*.dwg")
i 0
)
(foreach dwg L
(setq
f (strcat d "\\" dwg)
fnb (vl-filename-base dwg)
fsld (strcat d "\\" fnb)
)
(if (not (findfile (strcat fsld ".sld")))
(progn
(command "insert" f (list 0 0 0) 1 1 0)
(command "zoom" "e")
(command "mslide" fsld)
(command "erase" (entlast) "")
(setq i (1+ i))
)
)
)
(alert (strcat (itoa i) " slide files created")))
(princ)
)


Hoạt động:
1) Lệnh MK, chọn 1 file *.dwg bất kỳ trong thư mục
2) Chương trình duyệt toàn bộ *.dwg trong thư mục đó. Cái nào chưa có *.sld thì tự tạo, đặt cùng tên và thư mục với *.dwg. Báo cáo kết quả tổng số file *.sld đã tạo được.
3) Bạn muốn lập danh sách các file *.sld thì tự bổ sung thêm vào chương trình. OK?


Cám ơn. Sao mình lại không nghĩ ra cách này nhỉ. Do cứ chăm chú tìm cách open lên chứ không nghỉ inert ra rồi lại xóa. Đúng là nhiều khi lú lẩn thật.
  • 0

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


#50 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 30 March 2008 - 08:27 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

Anh có thể tạo giúp e trong list đó có các cột được không ! Ví dụ như là trong bảng layer thì có các cột là linetype, lineweight...e muốn trong bảng list box đó của e có các cột ma nội dung các cột chỉ là các text thôi!
  • 0

#51 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 31 March 2008 - 09:48 AM

Mình có thể giúp bạn đó ! Hiện tại mình có 1 lisp có thể tạo ra 1lúc gần 400 file sld từ 400 file dwg trong cùng thư mục và lưu tên cùng đường dẫn của các file sld và dwg đó trong 1 file lba! Khi nào muốn lấy thư viện thì chỉ cần gọi file lba đó lên ! Bạn có thể tham khảo cole của chương trình ! Nếu bạn muốn mình sẽ post lên ! Hiên tại mình ko ở nhà nên ko post lên đc!

Bạn có thể cho mình xin để học hỏi không? cám ơn bạn trước.
Cách của bác ssg bày thì làm được nhưng hơi lâu không biết của bạn dùng cách gì mà nghe tả có vẻ rất nhanh thì phải.
  • 0

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


#52 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 31 March 2008 - 07:39 PM

Bạn có thể cho mình xin để học hỏi không? cám ơn bạn trước.
Cách của bác ssg bày thì làm được nhưng hơi lâu không biết của bạn dùng cách gì mà nghe tả có vẻ rất nhanh thì phải.

http://www.cadviet.c...iles/TaoLib.rar
Bạn dùng thử xem! Rồi bạn có thể sửa cho nó 1 chút đc ko! Vẫn có đoi chỗ bất tiện! Có gì bạn cứ hỏi mình !
  • 1

#53 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 01 April 2008 - 08:57 AM

http://www.cadviet.com/upfiles/TaoLib.rar
Bạn dùng thử xem! Rồi bạn có thể sửa cho nó 1 chút đc ko! Vẫn có đoi chỗ bất tiện! Có gì bạn cứ hỏi mình !


Mình xem trong 3 file lisp bạn gửi thì chỉ có 1 lệnh là LIBRARY . Gọi lên xuất hiện hộp thoại có nút tạo mới nhưng khi chọn thì bảo là phải tạo bản vẽ mới thì mới tạo được thư viện.
Mình chưa hiểu cách dùng bạn chỉ giúp được không.
Mình quan tâm đến đoạn chọn 1 thư mục sẽ tạo ra các *.sld ấy mà.
  • 0

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


#54 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 01 April 2008 - 05:23 PM

Mình xem trong 3 file lisp bạn gửi thì chỉ có 1 lệnh là LIBRARY . Gọi lên xuất hiện hộp thoại có nút tạo mới nhưng khi chọn thì bảo là phải tạo bản vẽ mới thì mới tạo được thư viện.
Mình chưa hiểu cách dùng bạn chỉ giúp được không.
Mình quan tâm đến đoạn chọn 1 thư mục sẽ tạo ra các *.sld ấy mà.

Truoc tiên bạn phải load lisp vào,load ở dạng dùng cho những lần sau nữa, ko phải load tam thời !Chắc bạn đã quá rõ !
Bạn nhập lệnh Library, hộp htoại hiên ra !Chọn tạo mới!Chọn đường dẫn tới nơi thư mục mà bạn chứa các file dwg !List các file dwg sẽ hiện ra bên phải ! Bạn chọn file đầu tiên! Sau đó bạn nhấn Shift cùng với mũi tên đi xuống để chọn đc nhiều file 1 lúc! Sau đó nhấn đồng ý ! Chương trình sẽ hỏi bạn nơi lưu các file SLD và nơi lưu file LBA ( File danh sách )
Còn điều mà bạn nói ! Chưông trình sẽ tạo thư viện dựa theo thư mục và tạo 1lúc nhiều thư viện( không giống với cách thông thường là mở bản vẽ và cho tưnhg đối tượng 1 vào thư viện ) nên bạn sẽ phải mở 1 bản vẽ mới và tạo thư viện!
  • 0

#55 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 02 April 2008 - 10:11 AM

Truoc tiên bạn phải load lisp vào,load ở dạng dùng cho những lần sau nữa, ko phải load tam thời !Chắc bạn đã quá rõ !
Bạn nhập lệnh Library, hộp htoại hiên ra !Chọn tạo mới!Chọn đường dẫn tới nơi thư mục mà bạn chứa các file dwg !List các file dwg sẽ hiện ra bên phải ! Bạn chọn file đầu tiên! Sau đó bạn nhấn Shift cùng với mũi tên đi xuống để chọn đc nhiều file 1 lúc! Sau đó nhấn đồng ý ! Chương trình sẽ hỏi bạn nơi lưu các file SLD và nơi lưu file LBA ( File danh sách )
Còn điều mà bạn nói ! Chưông trình sẽ tạo thư viện dựa theo thư mục và tạo 1lúc nhiều thư viện( không giống với cách thông thường là mở bản vẽ và cho tưnhg đối tượng 1 vào thư viện ) nên bạn sẽ phải mở 1 bản vẽ mới và tạo thư viện!


Mình đã load cho các lần dùng sau rồi nhưng nó vẩn bảo phải tạo bản vẽ mới. Liệu lisp của bạn có liên kiết với file nào nửa không (ngoaì 3 file bạn gửi). ?
  • 0

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


#56 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 02 April 2008 - 06:39 PM

Mình đã load cho các lần dùng sau rồi nhưng nó vẩn bảo phải tạo bản vẽ mới. Liệu lisp của bạn có liên kiết với file nào nửa không (ngoaì 3 file bạn gửi). ?

Mình chưa hiểu cái mà bạn bảo là phải tạo bản vẽ mới ! Mình đang dùng bình thường, kể cả khi mở 1 bản vẽ đã có rồi dùng cái đó !Mình không nghĩ no liên quan gì đâu ! Bởi vì chương trình tạo ra 1 thư viện dự vào những file cad có trong 1 thư mục nên không ảnh hưởng gì tới file cad mà mình đang mở cả! Hiện giờ mình dùng rất tôt !
Bạn vào đây dăng kí tài khoản rồi download 2 file đó về ! Cài cả 2file, cài cái nào trước cũng đc! Trong đó có cái thư viện đó đấy !
http://forum.sanchoi...opic.php?t=1737
Còn đây là File nguyên gốc của nó mà mình download của mấy ông nc ngoài về !
http://www.cadviet.c...les/Library.zip
  • 1

#57 roberto

roberto

    biết pan

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

Đã gửi 07 April 2008 - 01:22 PM

Anh có thể tạo giúp e trong list đó có các cột được không ! Ví dụ như là trong bảng layer thì có các cột là linetype, lineweight...e muốn trong bảng list box đó của e có các cột ma nội dung các cột chỉ là các text thôi!


Cái này thị chịu thôi, Hình như "layer properties manager" Không viết bằng DCL. Nhờ các cao thủ trong diễn đàn giúp nhé.
  • 0

#58 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 11 April 2008 - 12:40 PM

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.

E không thể sư dụng đc chức năng cài đặt layer trong lisp của anh đc ! Khi e chuyển đến layer mà e muốn làm việc thì lisp dcl không thể chuyển đc băndf chúc năng cài đặt layer ! Mạc dù lisp có bào là bạn đang làm việc tren lisp mà e vừa chọn !

E có 1 câu hỏi muốn nhò a giúp đỡ : Ví dụ như e có 1 chương trình viết bằng lisp ! Làm thế nào để hạn chế số người dùng vậy anh ! kiểu như ai muốn cài đặt và sử dụng thì phải phone cho mình ấy ! Theo dạng như khi cài lisp vào cad, nó sẽ ăn vào registry và trả ra 1 giá trị nào đó cho người sử dụng biết ! Từ giá tri dó người sử dụng liên hệ với tác giả để có số mã cuối cùng và sử dụng số mã đó để đăng kí sử dụng !
Rất mong anh giúp đỡ !
  • 0

#59 truong_le

truong_le

    Chưa sử dụng CAD

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

Đã gửi 22 April 2008 - 08:49 PM

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

anh oi chi cho em cach cai dat cac tien ich tren cad voi gap
cam on
:)
  • 0

#60 nguyenhoangvuong83

nguyenhoangvuong83

    biết vẽ circle

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

Đã gửi 05 June 2008 - 11:27 AM

Tất nhiên, chỉ dùng *.sld, thậm chí không cần, dùng ngay bản vẽ *.dwg cũng được. Tuy nhiên, *.slb có những cái hay hơn:
1) Đúng như bạn nhận định, *.slb là một package của các *.sld. Khi cấp cho người dùng chương trình của bạn không phải kéo theo dài lê thê một "đoàn quân" mấy chục, có khi hàng trăm cái *.sld, mà chỉ cần 1 file *.slb duy nhất (Autodesk cũng làm như vậy mà). Khi đã "chơi" món này, ai cũng thấy khoái chí và không bao giờ chịu làm một vài cái *.sld
2) Dùng *.slb bạn mới có thể làm được cái gọi là Image_Tile_Menu. Món này cũng hay lắm đó. Bạn vào: Menu - Draw - Surfaces - 3D Surfaces sẽ thấy.
3) Chẳng hiểu bạn thao tác thế nào mà không tạo được *.slb? Có 2 động tác để tạo *.slb từ các *.sld:
- Tạo file *.txt, là một list chứa các tên file *.sld. (động tác này làm thủ công cũng được, chẳng cần lệnh liếc gì)
- Tạo *.slb từ *.txt trên
Xin hỏi thêm: bạn đang dùng phiên bản Cad nào? Sau khi chạy function (C:SLB...) mình gởi ở trên, bạn có nhận được *.txt không? Nếu có, thử chạy lại (C:SLB...) lần nữa xem. Nếu vẫn không được, đọc kỹ lại Help của bản Cad bạn đang dùng, chắc chắn phải tạo được! Không lẽ Autodesk lừa bạn à?

Bạn dùng thử chương trình sau, đúng yêu cầu mà bạn đã nêu. Từ từ "ngâm cứu" code của nó sẽ hiểu ra mọi vấn đề:
<a href="http://www.cadviet.com/upfiles/Geo.zip" target="_blank">http://www.cadviet.com/upfiles/Geo.zip</a>

Unzip và đọc readme.txt

Chào ssg, mình cũng đã làm như bạn hương dẫn rồi mà khi tạo ra *.txt ---> nhấn OK xong là file *.txt lại biến mất là sao hả bạn, và mình cũng chả thấy file *.slb đâu cả. Nếu tạo ra file *.txt bàng thủ công thi tạo ra *.slb bằng cách nào, mình không rõ lắm về khoản nay.
Khi dùng lệnh SLB2 xong thì máy báo thế này thì là xong rồi hả bạn:
Command: SLB2
shell
OS Command: slidelib D:\1AVUONG\LISP DOWN\Lisp VAL 1.0\symbol\dong
vat\VUONG222.slb < D:\1AVUONG\LISP DOWN\Lisp VAL 1.0\symbol\dong vat\mylist.txt
Command: T
khi xong rồi nó lại có dòng command: T là sao? Bạn chỉ giúp mình với, mình cảm ơn
  • 0
CHình đã gửiDVietHình đã gửi