Chuyển đến nội dung
Diễn đàn CADViet
federera6

[yêu cầu] xuất block nhanh !

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

Em làm bên kết cấu mới ra trường !

hiện tại có rất nhiều những chi tiết như dấu tích, chỉ dẫn thép, ...

vẽ lại những cái đó cũng mất 1 khoảng thời gian tương đối.

em muốn xin 1 lisp mà khi đặt tên các block tương ứng với các số 1,2,3,4,5 thì chỉ cần gõ lệnh F1,2,3,4,5 thì sẽ ra luôn những block đó mà không cần phải dùng lệnh insert rồi nhập tên block đó.

mong các anh chị trên diễn đàn giúp đỡ cho em !

nhân tiện có anh chị nào có bộ lisp vẽ nhanh các cấu kiện như vẽ nhanh thép sàn, vẽ nhanh lanh tô ... hoặc có những chi tiết hay mà em chưa được biết trong nghề có thể giúp đỡ cho em với !

Em xin chân thành cám ơn và chúc toàn thể các anh chị trên diễn đàn sức khỏe thành đạt và hạnh phúc !

Thân

nếu do sự bảo mật không muốn truyền ra rộng rãi các anh chị có thể gửi vào hòm thư cho em là federera6@yahoo.com

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

Em làm bên kết cấu mới ra trường !

hiện tại có rất nhiều những chi tiết như dấu tích, chỉ dẫn thép, ...

vẽ lại những cái đó cũng mất 1 khoảng thời gian tương đối.

em muốn xin 1 lisp mà khi đặt tên các block tương ứng với các số 1,2,3,4,5 thì chỉ cần gõ lệnh F1,2,3,4,5 thì sẽ ra luôn những block đó mà không cần phải dùng lệnh insert rồi nhập tên block đó.

mong các anh chị trên diễn đàn giúp đỡ cho em !

nhân tiện có anh chị nào có bộ lisp vẽ nhanh các cấu kiện như vẽ nhanh thép sàn, vẽ nhanh lanh tô ... hoặc có những chi tiết hay mà em chưa được biết trong nghề có thể giúp đỡ cho em với !

Em xin chân thành cám ơn và chúc toàn thể các anh chị trên diễn đàn sức khỏe thành đạt và hạnh phúc !

Thân

nếu do sự bảo mật không muốn truyền ra rộng rãi các anh chị có thể gửi vào hòm thư cho em là federera6@yahoo.com

 

1). Ai biết Block của bạn có những tên gì mà viết sẵn. Chí ít thì cũng phải nhập 1 lần chứ?

2). Trên CadViet có nhiều lisp vẽ sàn, dầm, cầu thang... Bạn chịu khó tìm. Hơn nữa mỗi nhu cầu lại cần 1 lisp khác nhau bạn ạ.

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

ý của em chỉ cần có block tên là 1 thì mình dùng lệnh F1 gọi được block tên là 1 đó ra ngay mà ko cần phải dùng lệnh I rồi chọn tên block. Cấu trúc của tên lệnh là F"tên của block cần gọi nhanh" .

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

nếu do sự bảo mật không muốn truyền ra rộng rãi các anh chị có thể gửi vào hòm thư cho em là federera6@yahoo.com

Do sự bảo mật nên ko thể gửi cho bạn được. :D

  • 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

ý của em chỉ cần có block tên là 1 thì mình dùng lệnh F1 gọi được block tên là 1 đó ra ngay mà ko cần phải dùng lệnh I rồi chọn tên block. Cấu trúc của tên lệnh là F"tên của block cần gọi nhanh" .

theo mình thì yêu cầu của bạn có lẽ ko phải là lisp, mà là đặt phím tắt F1 Cho lệnh insert block có tên là 1 có sẵn?

cái này thì phải biết cơ bản một chút về menu, tạo lệnh mới và đặt phím tắt

Theo hình của mình thì:

1) trước tiên vào customize nhấp vào biểu tượng new command

2)đặt tên lệnh là Block1

3)nhập đoạn code sau bào ô macro ^C^C-insert 1 \ 1 0

4)nắm lệnh Block1 (ở chỗ mình đánh số 2) kéo thả vào Shorcut key để tạo phím tắt

5) tại ô key nhấn phím F1

Apply rồi đóng lại, nhấn thử F1 xem thế nào?

chú ý là trong bản vẽ phải có sẵn block 1 như bạn nói nhé!

 

62991_menu.jpg

P/S Mọi thứ trên diễn đàn là Free và công khai nha bạn, các bác ở trên trêu bạn chút thôi. Chứ muốn bảo mật thì ko ai vào CadViet làm gì 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

theo mình thì yêu cầu của bạn có lẽ ko phải là lisp, mà là đặt phím tắt F1 Cho lệnh insert block có tên là 1 có sẵn?

cái này thì phải biết cơ bản một chút về menu, tạo lệnh mới và đặt phím tắt

Theo hình của mình thì:

1) trước tiên vào customize nhấp vào biểu tượng new command

2)đặt tên lệnh là Block1

3)nhập đoạn code sau bào ô macro ^C^C-insert 1 \ 1 0

4)nắm lệnh Block1 (ở chỗ mình đánh số 2) kéo thả vào Shorcut key để tạo phím tắt

5) tại ô key nhấn phím F1

Apply rồi đóng lại, nhấn thử F1 xem thế nào?

chú ý là trong bản vẽ phải có sẵn block 1 như bạn nói nhé!

 

P/S Mọi thứ trên diễn đàn là Free và công khai nha bạn, các bác ở trên trêu bạn chút thôi. Chứ muốn bảo mật thì ko ai vào CadViet làm gì nhỉ!

Hề hề hề, cho mình ké ý kiến của bác lp-hai nhé

Nếu như chắc chắn rằng cái block mang tên 1 đã có trên bản vẽ thì bạn chủ thớt có thể chơi thử thằng cu này xem có đúng ý bạn không nhé. Nếu sai thì bạn phải tìm cách khác, còn nếu đúng thì bạn cứ thế mà phát huy với các block bạn muốn


(defun c:f1 ()
(defun ins ()
(command "insert" "1" (getpoint "\n Chon diem nhap") 1 "" 0) )
(ins)
(while (= (strcase (setq ans (getstring "\n Ban muon tiep tuc <y or n> : "))) "Y")
	(ins)
)
(princ)
)

 

Lưu ý rằng code lisp này đượic bảo mật ở cấp không không thấy nên bạn hãy dè chừng khi sử dụng kẻo mà nó không được như ý bạn muốn đâu.

Hề hề hề,

  • 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

Hề hề hề, cho mình ké ý kiến của bác lp-hai nhé

Nếu như chắc chắn rằng cái block mang tên 1 đã có trên bản vẽ thì bạn chủ thớt có thể chơi thử thằng cu này xem có đúng ý bạn không nhé. Nếu sai thì bạn phải tìm cách khác, còn nếu đúng thì bạn cứ thế mà phát huy với các block bạn muốn


(defun c:f1 ()
(defun ins ()
(command "insert" "1" (getpoint "\n Chon diem nhap") 1 "" 0) )
(ins)
(while (= (strcase (setq ans (getstring "\n Ban muon tiep tuc <y or n> : "))) "Y")
(ins)
)
(princ)
)

 

Lưu ý rằng code lisp này đượic bảo mật ở cấp không không thấy nên bạn hãy dè chừng khi sử dụng kẻo mà nó không được như ý bạn muốn đâu.

Hề hề hề,

Hôm qua Chiron định học đòi viết thử 1 đoạn code lisp đơn giản giúp bạn í, nhưng vì Chiron thấy bạn í muốn mông lung quá. Giả sử federera6 có vài block tên 2, 3, 4... thì mình phải viết thêm vài code nữa sao? Lệnh cũng là tên hàm mà, đâu có tích hợp mấy tên block vô tên hàm được phải không bác PTB?

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

Hề hề hề, cho mình ké ý kiến của bác lp-hai nhé

Nếu như chắc chắn rằng cái block mang tên 1 đã có trên bản vẽ thì bạn chủ thớt có thể chơi thử thằng cu này xem có đúng ý bạn không nhé. Nếu sai thì bạn phải tìm cách khác, còn nếu đúng thì bạn cứ thế mà phát huy với các block bạn muốn


(defun c:f1 ()
(defun ins ()
(command "insert" "1" (getpoint "\n Chon diem nhap") 1 "" 0) )
(ins)
(while (= (strcase (setq ans (getstring "\n Ban muon tiep tuc <y or n> : "))) "Y")
(ins)
)
(princ)
)

 

Lưu ý rằng code lisp này đượic bảo mật ở cấp không không thấy nên bạn hãy dè chừng khi sử dụng kẻo mà nó không được như ý bạn muốn đâu.

Hề hề hề,

hheheh, cái vụ dùng lisp thì có lẽ lisp của bác Bình chưa tối ưu lắm!! :) vì thứ nhất chủ thớt yêu cầu khi nhấn "phím F1" chứ ko phải gõ lệnh f1 rồi enter. Thứ 2 là dù làm theo của em hay của bác cũng ko good lắm vì theo biết trên diễn đàn có cái vụ gì đấy mà mình ko cần tạo nhiều cái denfun c:f1 rồi defun c:f2 như vậy đâu, mà chỉ cần bác viết 1 code thôi nó tự hiểu mình gõ lệnh f1 là Insert thằng Block 1, f2 là lệnh insert thằng Block 2 ..... cứ thế em quên mất gọi là gì rồ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

hheheh, cái vụ dùng lisp thì có lẽ lisp của bác Bình chưa tối ưu lắm!! :) vì thứ nhất chủ thớt yêu cầu khi nhấn "phím F1" chứ ko phải gõ lệnh f1 rồi enter. Thứ 2 là dù làm theo của em hay của bác cũng ko good lắm vì theo biết trên diễn đàn có cái vụ gì đấy mà mình ko cần tạo nhiều cái denfun c:f1 rồi defun c:f2 như vậy đâu, mà chỉ cần bác viết 1 code thôi nó tự hiểu mình gõ lệnh f1 là Insert thằng Block 1, f2 là lệnh insert thằng Block 2 ..... cứ thế em quên mất gọi là gì rồi :)

Gọi là Reactor. Và yêu cầu của OP chính xác là gõ lệnh "F1", "F2" chứ k phải là phím tắt (chứ k thì đến Block 13 thì tịt à ^^)

Cái này ở topic Reactor và ứng dụng của nó Ketxu có viết ví dụ mẫu rồi, thay đổi thành Vla-insert là được . Bác Bình hay lp_hai thử xem có hợp yêu cầu k ?

  • Vote tăng 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

 

P/S Mọi thứ trên diễn đàn là Free và công khai nha bạn, các bác ở trên trêu bạn chút thôi. Chứ muốn bảo mật thì ko ai vào CadViet làm gì nhỉ!

Mình thì thấy có thứ trên diễn đàn không công khai đấy chứ? :D

Toàn là những thứ mang đầy tâm huyết và công sức lao động không à!!!

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

Gọi là Reactor. Và yêu cầu của OP chính xác là gõ lệnh "F1", "F2" chứ k phải là phím tắt (chứ k thì đến Block 13 thì tịt à ^^)

Cái này ở topic Reactor và ứng dụng của nó Ketxu có viết ví dụ mẫu rồi, thay đổi thành Vla-insert là được . Bác Bình hay lp_hai thử xem có hợp yêu cầu k ?

thế đấy! Tại dạo này cv hơi ít, tối ngày em hết đọc báo rồi chat chit nên hoa cả mắt, nhìn gà hóa cuốc hic.

sr bác Bình. hehhehe

  • 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
;@ketxu
(vl-load-com)
(if (null chenBlock)
(setq chenBlock (vlr-command-reactor nil '((:vlr-unknownCommand . ChenBlock)))))
;;*********************************************************************
(defun ChenBlock (calling-reactor endcommandInfo)
(cond ((= (substr (setq info (strcase (car endcommandInfo)) )1 1) "F")
 (cond ((tblsearch "BLOCK" (substr info 2))   
(vla-InsertBlock (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
    	(vlax-3d-point (getpoint "\nInsertion Point :"))
    	(substr info 2)
    	1
    	1
    	1
    	0
)
  )
  (T (alert (strcat "\nKhong co Block nao ten : " (substr info 2))))
 )
)
)
)

  • 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

Gọi là Reactor. Và yêu cầu của OP chính xác là gõ lệnh "F1", "F2" chứ k phải là phím tắt (chứ k thì đến Block 13 thì tịt à ^^)

Cái này ở topic Reactor và ứng dụng của nó Ketxu có viết ví dụ mẫu rồi, thay đổi thành Vla-insert là được . Bác Bình hay lp_hai thử xem có hợp yêu cầu k ?

Hề hề hề,

Cam ơn bác ketxu đã chỉ bảo. Thực tế cái món reactor này mình chưa thủng. Cũng có đọc cái bài post của bác về việc đổi màu, nhưng chưa dám mò mẫm vào sợ lạc lối. Nay bác đã khuyến cáo, để mình chút thời gian lần mò thử xem có tìm được lối đi không. nếu chưa được sẽ xin bác chỉ lối sau nhé. Đừng để mình lạc trong đó rồi quên đường về .... cadviet hỉ????

Chúc bác khỏe và vui.

 

Hề hề hề,

Nhờ bác ketxu chỉ giùm lỗi trong cái đoạn mình ăn trộm của bác nhé:


(vl-load-com)
(if (null InsBlk)
(setq InsBlk (vlr-command-reactor nil  '((:vlr-unknownCommand . call_back)))))
;;*********************************************************************
(defun call_back (calling-reactor comstrl )
(setq First_Key (strcase (substr (nth 0 comstrl) 1 1))
         End_key (substr (nth 0 comstrl) 2) )
(if (and (= First_Key "F") ;;;;; (= (strlen (rtos (atof End_key) 2 0)) (strlen End_key)) 
    ) 
   (addblk) 
   (princ "\nChua co lenh nao nhu the nay\n")
)
)
;;*********************************************************************
(defun addblk ( )
;;;;(setq bln  End_key) ;;;;;;;  ss (ssget) ) 
(if (tblsearch "block" End_key)
    (vla-InsertBlock (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
     (vlax-3d-point (getpoint "\nInsertion Point :"))
     End_key 1 1 1 0)
    (princ "\n Unknown the block's name \n")
) 
)

Thực ra thì nó cũng chạy bon ra phết xong cái lúc dừng lại nó lại cứ xóc một phát nên hơi tức bụng bác ạ. Hề hề hề. Mò hoài chửa biết tại sao nên post lên hỏi bác cho nó chắc.... Hề hề hề, cái món reactor này vậy mà khó xơi ra phết bác ạ.

Chỉnh sửa theo phamthanhbinh
Bổ sung tí code
  • Vote tăng 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

K hiểu sao e đang cặm cụi chép code của bác Bình r ấn F5 thì thấy bài của bác đâu mất tiêu >"< Bác Bình tí chịu khó pót lại code nhé :(

E đoán có lẽ cái phát xóc ruột bác nói là thông báo Unknown command : cái này là thông báo chuẩn của CAD bác ạ ^^ Mình đang xài ké anh UnknownCommand, (chặn tình huống các lệnh F1-> Fn do ta chưa định nghĩa), nên đành sống chung với lũ ^^

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

em ngồi chơi xơi nước 3 4 tháng nay , mấy hôm vừa rồi đựoc giao việc đầu tiên làm như điên cho bõ công lần đầu tiên được tiếp xúc với công việc, đã thế hôm nay mạng megavnn chập chờn từ công ty về đến nhà, vào được cadviet cả 20 phút đồng hồ , đọc đc những reply của các anh lp_hai, phanthanhbinh, voi anh ketxu em mừng chắc hết cả tối nay :D mặc dù em chưa thử nhưng em rất được cảm ơn đến những sự giúp đỡ quý báu đó.

p/s : mạng lởm quá nên em viết xong được những dòng này gửi đi cũng phải hết thêm gần 20 phút nữa hix.

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

Gọi là Reactor. Và yêu cầu của OP chính xác là gõ lệnh "F1", "F2" chứ k phải là phím tắt (chứ k thì đến Block 13 thì tịt à ^^)

Cái này ở topic Reactor và ứng dụng của nó Ketxu có viết ví dụ mẫu rồi, thay đổi thành Vla-insert là được . Bác Bình hay lp_hai thử xem có hợp yêu cầu k ?

 

Hề hề hề,

Cam ơn bác ketxu đã chỉ bảo. Thực tế cái món reactor này mình chưa thủng. Cũng có đọc cái bài post của bác về việc đổi màu, nhưng chưa dám mò mẫm vào sợ lạc lối. Nay bác đã khuyến cáo, để mình chút thời gian lần mò thử xem có tìm được lối đi không. nếu chưa được sẽ xin bác chỉ lối sau nhé. Đừng để mình lạc trong đó rồi quên đường về .... cadviet hỉ????

Chúc bác khỏe và vui.

 

Hề hề hề,

Nhờ bác ketxu chỉ giùm lỗi trong cái đoạn mình ăn trộm của bác nhé:

...

Thực ra thì nó cũng chạy bon ra phết xong cái lúc dừng lại nó lại cứ xóc một phát nên hơi tức bụng bác ạ. Hề hề hề. Mò hoài chửa biết tại sao nên post lên hỏi bác cho nó chắc.... Hề hề hề, cái món reactor này vậy mà khó xơi ra phết bác ạ.

Đúng là có quá nhiều thứ để học hỏi, không ngờ cái lệnh tên thay đổi mà cũng làm được... Nhờ các bác mà em được mở rộng tầm mắt. Đáng học hỏi, đáng khâm phục!!!

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

K hiểu sao e đang cặm cụi chép code của bác Bình r ấn F5 thì thấy bài của bác đâu mất tiêu >"< Bác Bình tí chịu khó pót lại code nhé :(

E đoán có lẽ cái phát xóc ruột bác nói là thông báo Unknown command : cái này là thông báo chuẩn của CAD bác ạ ^^ Mình đang xài ké anh UnknownCommand, (chặn tình huống các lệnh F1-> Fn do ta chưa định nghĩa), nên đành sống chung với lũ ^^

Hề hề hề,

Nó đây bác ạ: Unknown command "

". Press F1 for help.

Mình tìm hoài mà chửa biết cái "" này ở đâu chui vào bác ạ. Phải chăng là nó từ cái thằng '((:vlr-unknownCommand . call_back)) hử bác????

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

Mình tìm hoài mà chửa biết cái "" này ở đâu chui vào bác ạ. Phải chăng là nó từ cái thằng '((:vlr-unknownCommand . call_back)) hử bác????

Vâng. Chính xác là mình chặn thông điệp của CAD(cái này ngày xưa gọi là hook nè)

Nôm na với :vlr-unknownCommand :

Khi ta đánh 1 lệnh CAD k biết (event), CAD Editor sẽ gửi thông điệp "Tôi k biết" đến trung tâm xử lý và CAD trả ra Editor thông báo Unknown command.Sau khi ta đăng ký reactor này, CAD Editor sẽ nhảy vào họng ông thông điệp để làm theo ý mình trước (ở đây là các hàm xử lý), sau đó mới thả ông thông điệp đi.

THành ra sau khi xử lý xong hàm của mình r, CAD mới nhận được cái "Tôi k biết" và trả ra thông báo UnknownCommand.

Có thể có cách xử lý, ví dụ như popup menu có thể bị chặn hẳn bởi hàm Alert (chưa thử trong trường hợp này), n e thấy k ảnh hưởng tới nhu cầu nên cũng k tìm hiểu (mà giả sử có cho cái Alert ra thì cũng khó chịu k kém)

  • 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

Vâng. Chính xác là mình chặn thông điệp của CAD(cái này ngày xưa gọi là hook nè)

Nôm na với :vlr-unknownCommand :

Khi ta đánh 1 lệnh CAD k biết (event), CAD Editor sẽ gửi thông điệp "Tôi k biết" đến trung tâm xử lý và CAD trả ra Editor thông báo Unknown command.Sau khi ta đăng ký reactor này, CAD Editor sẽ nhảy vào họng ông thông điệp để làm theo ý mình trước (ở đây là các hàm xử lý), sau đó mới thả ông thông điệp đi.

THành ra sau khi xử lý xong hàm của mình r, CAD mới nhận được cái "Tôi k biết" và trả ra thông báo UnknownCommand.

Có thể có cách xử lý, ví dụ như popup menu có thể bị chặn hẳn bởi hàm Alert (chưa thử trong trường hợp này), n e thấy k ảnh hưởng tới nhu cầu nên cũng k tìm hiểu (mà giả sử có cho cái Alert ra thì cũng khó chịu k kém)

Hề hề hề,

Vậy là gỡ được một cái xương. Còn một vấn đề nữa mà minh thấy nó hơi khác khi dùng các lisp khác là:

Khi mình load cả cái reactor của bác Ketxu và cái reactor mình thử viết thì bất kể load cai nào trước cái nào sau, kết quả chạy lisp vẫn tòi ra đấy đủ các thông báo lỗi của cả hai lisp.

Như vậy phải chăng cái thằng reactor này sẽ kiểm soát luôn tất cả các reactor khác đã được load, và cứ có evnet là các reactor được load đều nhảy vào chơi chung. (Với các lisp khác thì khi load thằng nào sau, thằng ấy sẽ chi phối lệnh thực hiện cho dù có trùng lệnh với các lisp trước)

Điều này tuy chả chết thằng cu lisp nào nhưng thấy nó cứ kỳ kỳ bác ạ, không giống với cái mình đã biết.

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

Chính xác bác ạ. Truyền thống của cái này là xài chung ^^ Thậm chí nếu bác không vlr-remove cái cũ đi thì cả 2 thằng còn cùng làm việc (trong ví dụ trên e k làm việc này) . 1 VLR có thể chứa nhiều action cùng loại trong đó ^^ (chỗ '((:vlr-unknownCommand . call_back))) có thể gán nhiểu em, mỗi e là 1 dotted pair list như vậy)

  • 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


(vl-load-com)
(if (null InsBlk)
(setq InsBlk (vlr-command-reactor nil  '((:vlr-unknownCommand . call_back)))))
;;*********************************************************************
(defun call_back (calling-reactor comstrl )
(setq First_Key (strcase (substr (nth 0 comstrl) 1 1))
         End_key (substr (nth 0 comstrl) 2) )
(if (and (= First_Key "F") ;;;;; (= (strlen (rtos (atof End_key) 2 0)) (strlen End_key))
	)
   (ham-thuc-thi)
   )
)
;;*********************************************************************
(defun ham-thuc-thi()
 (command "copy" (ssget) "" (getpoint) (getpoint) "")
 )

Bác PTB và bác Ket cho em hỏi tý!

Cái Reactor này thì hay thiệt, nhưng với khả năng của em thì chưa hiểu thấu đáo về nó. Em hiểu nôm na là thế này:

Khi ta nhập lệnh từ command line thì cad sẽ xem text ta nhập vào là một string, mình dùng hàm để phân tích string này ra làm 2 phần, First_key và End_key (như bác PTB ),

tiếp đó ta xét nếu First_key là "F" (hoặc gì gì đó...) thì thực thi cái lệnh (hàm-thực-thi)....vậy có đúng ko ah?

Nếu trình tự nó là vậy thì em thắc mắc là sau em thay cái ham-thuc-thi đó theo một lệnh khác thì nó ko chạy dc ah?

cái nữa là cái dòng này:

(defun call_back (calling-reactor comstrl )

thì thằng calling-reactor có nghĩa gì ah, và nó thay đổi theo....tùy hứng của người viết thôi sao?

 

Mong chút ánh sáng từ các bác đi trước :)

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

Chú ý trong Reactor k dùng được các hàm Command.

calling-reactor là Object quản lý Reactor tương ứng. Trong hàm thục thi bạn có thể gán kết quả trả về là 2 đối số đó để nghiên cứu. Không phải lúc nào nó cũng là 1 String.

  • 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

theo mình thì yêu cầu của bạn có lẽ ko phải là lisp, mà là đặt phím tắt F1 Cho lệnh insert block có tên là 1 có sẵn?

cái này thì phải biết cơ bản một chút về menu, tạo lệnh mới và đặt phím tắt

Theo hình của mình thì:

1) trước tiên vào customize nhấp vào biểu tượng new command

2)đặt tên lệnh là Block1

3)nhập đoạn code sau bào ô macro ^C^C-insert 1 \ 1 0

4)nắm lệnh Block1 (ở chỗ mình đánh số 2) kéo thả vào Shorcut key để tạo phím tắt

5) tại ô key nhấn phím F1

Apply rồi đóng lại, nhấn thử F1 xem thế nào?

chú ý là trong bản vẽ phải có sẵn block 1 như bạn nói nhé!

 

62991_menu.jpg

P/S Mọi thứ trên diễn đàn là Free và công khai nha bạn, các bác ở trên trêu bạn chút thôi. Chứ muốn bảo mật thì ko ai vào CadViet làm gì nhỉ!

em làm giống hệt như của anh nhưng sao không được nhỉ ! em tìm phương pháp của anh trên diễn đàn nhưng không thấ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

Hề hề hề, cho mình ké ý kiến của bác lp-hai nhé

Nếu như chắc chắn rằng cái block mang tên 1 đã có trên bản vẽ thì bạn chủ thớt có thể chơi thử thằng cu này xem có đúng ý bạn không nhé. Nếu sai thì bạn phải tìm cách khác, còn nếu đúng thì bạn cứ thế mà phát huy với các block bạn muốn


(defun c:f1 ()
(defun ins ()
(command "insert" "1" (getpoint "n Chon diem nhap") 1 "" 0) )
(ins)
(while (= (strcase (setq ans (getstring "n Ban muon tiep tuc <y or n> : "))) "Y")
(ins)
)
(princ)
)

 

Lưu ý rằng code lisp này đượic bảo mật ở cấp không không thấy nên bạn hãy dè chừng khi sử dụng kẻo mà nó không được như ý bạn muốn đâu.

Hề hề hề,

lisp của anh, em sử dụng rất mượt, để gọi các block khác như block 2 3 4 em chỉ việc thay cấu trúc defun 2 3 4 và insert 2 3 4 là có thể đúng với mục đích của em .

tuy nhiên đối với block có gắn với lệnh ATT thì khi gọi block ra không được mượt nữa. Em cũng đang dự định làm thêm mấy cái block động ( Dynamic )

không biết lisp chạy có được không.

có gì anh update thêm vào trong lisp f1 cho em với !

em chân thành cám ơn !

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


×