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

Lệnh insert block

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

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

 

Anh em load về rồi dùng thử, lệnh là DII hoặc II.

Anh em thử xem co hiệu quả không nhé.

Khi nào vợ nó ngủ thì mình sẽ viết thêm vài cái tặng anh em chơi. :s_dead:

  • Vote giảm 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

Hay, sáng tạo!

vndesperados đã tạo ra 1 cặp lệnh. DII để insert một block chuẩn đầu tiên, sau đó dùng lệnh II để insert 1 block theo cấu hình như lệnh DII vừa rồi.

Ưu điểm:

- Giúp người dùng có một cặp lệnh để hạn chế phải nhập thông tin insert nhiều khối cùng 1 tính chất.

- Giao diện tiếng Việt.

Nhược:

- Mã nguồn đóng.

 

Thật ra thì không đến mức phức tạp như chương trình của vndesperados chúng ta cũng có thể có được 2 lệnh trên. Sử dụng luôn hộp thoại insert của AutoCAD để làm thao tác insert block chuẩn. Vẫn dùng 2 lệnh DII và II như chương trình của vndesperados.

Đoạn mã của chương trình đó như sau:

(defun c:dii ()
 (command ".ddinsert" pause)
 (if (/= "*" (substr (getvar "INSNAME") 1 1))
   (setq tt	    (entget (entlast))
  cv_blname (getvar "INSNAME")
  cv_xscale (cdr (assoc 41 tt))
  cv_yscale (cdr (assoc 42 tt))
  cv_yscale (cdr (assoc 43 tt))
  cv_rotate (cdr (assoc 50 tt))
   )
   (setq 
  cv_blname (substr (getvar "INSNAME") 2)
  cv_xscale 1.0
  cv_yscale 1.0
  cv_yscale 1.0
  cv_rotate 0.0
   )
 )
 (princ)
)
(defun c:ii ()
 (if (and cv_blname cv_xscale cv_yscale cv_rotate)
   (command ".insert" cv_blname pause cv_xscale cv_yscale cv_rotate)
   (princ "\nBan phai dung lenh dii truoc khi dung lenh ii")
 )
 (princ)
)

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
Hay, sáng tạo!

vndesperados đã tạo ra 1 cặp lệnh. DII để insert một block chuẩn đầu tiên, sau đó dùng lệnh II để insert 1 block theo cấu hình như lệnh DII vừa rồi.

Ưu điểm:

- Giúp người dùng có một cặp lệnh để hạn chế phải nhập thông tin insert nhiều khối cùng 1 tính chất.

- Giao diện tiếng Việt.

Nhược:

- Mã nguồn đóng.

 

Thật ra thì không đến mức phức tạp như chương trình của vndesperados chúng ta cũng có thể có được 2 lệnh trên. Sử dụng luôn hộp thoại insert của AutoCAD để làm thao tác insert block chuẩn. Vẫn dùng 2 lệnh DII và II như chương trình của vndesperados.

Đoạn mã của chương trình đó như sau:

(defun c:dii ()
 (command ".ddinsert" pause)
 (if (/= "*" (substr (getvar "INSNAME") 1 1))
   (setq tt	    (entget (entlast))
  cv_blname (getvar "INSNAME")
  cv_xscale (cdr (assoc 41 tt))
  cv_yscale (cdr (assoc 42 tt))
  cv_yscale (cdr (assoc 43 tt))
  cv_rotate (cdr (assoc 50 tt))
   )
   (setq 
  cv_blname (substr (getvar "INSNAME") 2)
  cv_xscale 1.0
  cv_yscale 1.0
  cv_yscale 1.0
  cv_rotate 0.0
   )
 )
 (princ)
)
(defun c:ii ()
 (if (and cv_blname cv_xscale cv_yscale cv_rotate)
   (command ".insert" cv_blname pause cv_xscale cv_yscale cv_rotate)
   (princ "\nBan phai dung lenh dii truoc khi dung lenh ii")
 )
 (princ)
)

 

 

Lâu lắm mới gặp "đối thủ" nặng ký như bác NguyenHoanh. Nói chơi thôi chứ chẳng có ý định ganh đua gì ở đây.

Cách của bác rất hay nhưng gặp trường hợp người dùng sử dụng lệnh DII rồi vẽ thêm vài cái Object bằng các lệnh khác nữa thì lệnh II của bác "nỏ làm gì được mô" (Xin lổi anh em vì nghe tiếng vợ nói mãi thành quen thế).

Còn mục đích của mình khi viết lệnh này là giữ lại thông tin của lần chèn Block cuối cùng, bạn có thể sử dụng bất kỳ lệnh gì trong ACAD rồi gọi lại DII hay II cũng được.

Anh em muốn dùng lệng DII hay II trước thì cũng được.

DXX = Dialog - XX command

Câu lệnh cho hai lệnh trước là

DME = Dialog Measure, DM=Measure

DDV = Dialog Divide, DV=Divide

Mọi người sẽ hỏi cần gì phải viết lại các lệnh này?

Câu trả lời: Các lệnh này sẽ giữ lại thông tin về lần sử dụng lệnh trước đó.

Mà thôi anh em cứ dùng qua thì sẽ thấy hiệu quả.

Còn nữa; mình không phải là dân dùng CAD nên chẳng có ý tưởng gì hay đâu. Anh em nào có ý tưởng gì thì Post lên đây cùng giải quyết nhưng mà đừng có lan man giống như cái "đọc ổ USB bằng LISP" ấy. Cái chuyện đó để HĐH nó làm. Còn mình thì tập trung giải quyết các vấn đề trong CAD thôi kẻo lung tung quá "dở thầy dở thợ" thì không giống ai...

 

Còn bây giờ vào với vợ một lát, khổ thế, tối nào không có mình xoa lưng là vợ nó ngủ không được.

"Ừ, em ơi! Anh xong rồi đâ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
Cách của bác rất hay nhưng gặp trường hợp người dùng sử dụng lệnh DII rồi vẽ thêm vài cái Object bằng các lệnh khác nữa thì lệnh II của bác "nỏ làm gì được mô" (Xin lổi anh em vì nghe tiếng vợ nói mãi thành quen thế).

Được mà!

vndesperados cứ thử đi, chạy rất tốt.

 

Không được thì sao gọi là lệnh II đượ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
Được mà!

vndesperados cứ thử đi, chạy rất tốt.

 

Không được thì sao gọi là lệnh II được.

 

Bác NguyenHoanh oi. Mình copy nguyên đọan code của bác xuống rồi load vào ACAD2005, chay thì được nhưng không đúng ý định.

Đọan code ấy không sai nhưng nó có thể không tương thích trên các phiên bản CAD khác nhau hay có thể khác một vài thông số của biến hệ thống ACAD.

Mình là develop chuyên nghiệp nên mục tiêu đầu tiên là phải thỏa mãn được người dùng chứ không thể đến khi chạy chương trình phát hiện lỗi thì giải thích này nọ với khách hàng....

 

 

"Ừ, mình ơi, anh vào ngay đây.." (khổ thế mà ... sướng thế)

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
Ưu điểm:

- Giúp người dùng có một cặp lệnh để hạn chế phải nhập thông tin insert nhiều khối cùng 1 tính chất.

- Giao diện tiếng Việt.

Nhược:

- Mã nguồn đóng.

Em đồng ý với bác Hoành. Theo em những routine nào các bác có ý định thương mại hoá thì Compile là đương nhiên, còn những cái nào có thể chia sẻ cho anh em dùng thì các bác có thể open source được không ạ. Vì với những người đang bắt đầu học (như em chẳng hạn) thì nhờ các đoạn code của các bác mà bọn em có thể học thêm được rất nhiều.

Em xin cảm ơn các 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

Theo mình thì vấn đề đóng mã hay mở mã cũng là chuyện bình thôi. Không nên đòi hởi người khác chia sẻ. Vì nhiều khi đó lại là bí quyết làm ăn của họ hoạc của công ty họ. Nếu họ cảm thấy chia sẻ được mình nghĩ họ sẽ chia sẻ thô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

Mình thích cách làm việc của người nước ngòai, trong cuộc họp có thể phát biểu, tranh luận thậm chí chỉ trích nhau gay gắt để cùng nhau thống nhất quan điểm làm việc, xong đâu đó rồi thì coi như không có gì nữa.

Còn ngừơi VN mình mà bất đồng quan điểm trong công việc thể nào cũng dẫn đến bất đồng trong quan hệ, thậm chí nhìn mặt nhau là thấy ghét.

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ả 2 nick Nguyen Hoanh và Vndesperados nên dừng cuộc tranh luận đi lệch chủ đề ở đây.

Chính tôi xóa toàn bộ bài viết vừa rồi. Những bài viết lạc chủ đề tương tự cũng sẽ bị xóa.

 

Cảm ơn!

Admin.

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ì vấn đề đóng mã hay mở mã cũng là chuyện bình thôi. Không nên đòi hởi người khác chia sẻ. Vì nhiều khi đó lại là bí quyết làm ăn của họ hoạc của công ty họ. Nếu họ cảm thấy chia sẻ được mình nghĩ họ sẽ chia sẻ thôi.

 

Nhất trí với bác. Từ lần sau sẽ em sẽ không nhắc đến chuyện Open/Close Source nữa. Mà đi công tác 1 ngày về hình như em đã bỏ lỡ cái gì đó "nóng hổi" trong topic này đúng không nhỉ...

 

Mong cả nhà luôn vui vẻ...

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ôi thấy hài lòng hơn với lệnh Insert chuẩn của Acad. Biến nào cần và không cần lưu lại cho lần Insert sau thì Autodesk đã cân nhắc khá kỹ. Dùng lệnh này thay cho Insert chuẩn chỉ làm mất thời gian thêm!

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ôi thấy hài lòng hơn với lệnh Insert chuẩn của Acad. Biến nào cần và không cần lưu lại cho lần Insert sau thì Autodesk đã cân nhắc khá kỹ. Dùng lệnh này thay cho Insert chuẩn chỉ làm mất thời gian thêm!

 

Đây là bài tóan thực tế. Trong quá trình làm việc người dùng có thể quên mất đã INSERT một block tên gì, hệ số scale theo X, Y, Z là bao nhiêu, góc quay là bao nhiêu mặc dù vừa thực hiện trước đó. Vậy nên tôi đưa ra chương trình này để giúp người dùng làm việc ấy. Có lẽ vì đầu óc ssg cao siêu quá nên bác ấy nhớ hết tất cả những gì mình đã thao tác hoặc là bác ấy tìm đâu đó trên bản vẽ rồi copy lại cũng OK..

 

"Mình thích cách làm việc của người nước ngoài hơ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ũng không đúng lắm đâu vndesperados.

 

Nếu chỉ để insert lại một block nào đó với tên cũ, tỷ lệ cũ, độ nghiêng cũ, thì cần gì dùng lệnh insert. Hãy dùng lệnh copy! (dân kỹ thuật toàn thế thôi, không chỉ với block, mà với line, arc, circle,...). Lệnh copy trực quan hơn lệnh II nhiều chứ!

 

Không cần đục thêm 1 lỗ cửa cho mèo khi con mèo bé hơn con chó.

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ũng không đúng lắm đâu vndesperados.

 

Nếu chỉ để insert lại một block nào đó với tên cũ, tỷ lệ cũ, độ nghiêng cũ, thì cần gì dùng lệnh insert. Hãy dùng lệnh copy! (dân kỹ thuật toàn thế thôi, không chỉ với block, mà với line, arc, circle,...). Lệnh copy trực quan hơn lệnh II nhiều chứ!

 

Không cần đục thêm 1 lỗ cửa cho mèo khi con mèo bé hơn con chó.

 

 

Bác này mà thao tác trên bản vẽ Quy Họach là bảo đảm tắt tiếng liền. Trên những bản vẽ kích cỡ tương đối thì còn nhìn thấy cái block bên cạnh để copy chứ trên bản vẽ quy họach mà tìm lại cái block vừa insert để copy thì có khi mất cả tiếng đồng hồ.

 

Ngày mai sẽ tặng các bác Quy họach một công cụ xài chơ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

vndesperados nói chuyện đúng với dân quy hoạch này rồi.

 

Trước đây chưa có lisp của vndesperados, tìm lại cái block vừa vẽ mất để copy mất cả tiếng đồng hồ. Vì thế nên dân quy hoạch của Việt Nam lẫn thế giới vẽ môt bản vẽ quy hoạch mất mấy năm lận (do trong bản vẽ có đến cả nghìn block)? có lisp của vndesperados vẽ chắc mất 5 phút! Tôi nghĩ với lisp hay như vậy, bán ra thế giới được cả nghìn đô ấy chứ!

 

Đúng vndesperados number one trên thế giới rồi! Chúc mừng 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

Phản hồi ý kiến của anh vndesperados. Theo em nghĩ thì không nên tranh luận quá gay gắt cũng như dùng những lời lẽ chưa được chắt lọc cho lắm. Mọi vấn đề hãy đề cật nhẹ nhằnh vì trong số thành viên cũng như đội ngũ ban quản trị của CADViet có rất nhiều "cao thủ" . Chúng ta nên kiêm tốn lắng nghe và trình bày chứ không nên đẩy câu chuyện đi quá xa, dẫn đến to tiếng trong nội bộ cadviet.

 

Còn vấn đề "cách làm việc của tây". Em thì ngĩ tây hay ta đều là con người. Đều có cái tôi, sĩ diện. Trong công việc cũng như trong cuộc sống nếu kg tôn trong đối phương thì làm sao đối phương tôi trọng mì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

Tôi luôn luôn có một ý kiến trong các cuộc tranh luận:" Ở đời phải biết mình là ai".

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ẤN ĐỀ NÀY NÀY MÌNH CŨNG KHÔNG RÕ LẮM, AI CŨNG CÓ CÁI HAY VÀ CÁI KHÔNG HAY. RIÊNG VỚI vndesperados EM NGHĨ RẰNG NẾU ANH ĐÃ NGHIÊM TÚC TRONG CÔNG VIỆC VÀ RẤT CỞI MỞ TRONG DIỄN ĐÀN THÌ NÊN NGHIÊM TÚC TRONG CÁCH HÀNH SỬ VIẾT VĂN. EM NGHĨ NẾU ĐÃ LÀ VUI VẺ THÌ VUI VẺ HẾT MÌNH, NẾU NGHIÊM TÚC THÌ ĐỪNG NÊN THÊM MẤY CÂU MÀ THEO EM GỌI LÀ THỪA. NHƯNG RẤT CÁM ƠN ANH VÀ HOAN NGÊNH ANH ĐÉN VÀ THAM GIA VỚI BỌN EM. CẢM ƠN ANH THÊM 1 LẦN NỮ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

tranh luận là tốt, tranh luận sẽ nêu ra được những mặt mạnh và yếu của diễn đàn, nhưng các bạn đừng để tranh luận đi đến thành tranh cãi, như thế thành ra lại dở. Mọi người hãy đưa ra những ý kiến bằng kiến thức, bằng nhận định khách quan có logic chứ không nên châm chọc nhau.

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
vndesperados nói chuyện đúng với dân quy hoạch này rồi.

 

Trước đây chưa có lisp của vndesperados, tìm lại cái block vừa vẽ mất để copy mất cả tiếng đồng hồ. Vì thế nên dân quy hoạch của Việt Nam lẫn thế giới vẽ môt bản vẽ quy hoạch mất mấy năm lận (do trong bản vẽ có đến cả nghìn block)? có lisp của vndesperados vẽ chắc mất 5 phút! Tôi nghĩ với lisp hay như vậy, bán ra thế giới được cả nghìn đô ấy chứ!

 

Đúng vndesperados number one trên thế giới rồi! Chúc mừng nhé!

 

 

Chào!

Mình thấy Diễn đàn này có lẽ cũng hơn ngàn thành viên rồi và có lẽ duy nhất mình không là người làm về CAD, mình là Developer.

Mọn người tham gia trong này mục đích thì ai cũng có. Gọi là học hỏi và nâng cao trình độ, nhưng nói thẳng ra là để công việc "nhẹ nhàng" và "kiếm tiền" đỡ cực hơn thôi. Xin lỗi vì quen nói thật.

Với tư cách người dùng, các bác mong muốn có công cụ để dùng nhanh hơn và vẽ tốt hơn

Với tư cách là Develop thì mình mong muốn có thêm nhiều khách hàng

 

Nói tóm lại thì mục đích cuối cùng là như nhau = kiếm tiền

 

Nhưng có một điều thế này, mọi người trực tiếp dùng AutoCAD nên mới bết cái gì cần, cái gì không cần... nhưng cái cần và không cần ấy tùy thuộc vào mỗi người.

Còn mình không dùng CAD nên chẳng cần mấy đọan LISP ấy để làm gì, chẳng qua là có mấy đơn đặt hàng của khách đã hết thời gian bảo hành và bản quyền rồi thì chỉnh sữa lại và POST lên cho anh em dùng chơi thôi.

Nhưng mà nếu anh em nào phản ứng quá thì cũng dừng GET về làm gì cho có rác trong má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
Mọn người tham gia trong này mục đích thì ai cũng có. Gọi là học hỏi và nâng cao trình độ, nhưng nói thẳng ra là để công việc "nhẹ nhàng" và "kiếm tiền" đỡ cực hơn thôi. Xin lỗi vì quen nói thật.

Với tư cách người dùng, các bác mong muốn có công cụ để dùng nhanh hơn và vẽ tốt hơn

Với tư cách là Develop thì mình mong muốn có thêm nhiều khách hàng

 

Nói tóm lại thì mục đích cuối cùng là như nhau = kiếm tiền

 

Em đồng ý với quan điểm này của bác, mấy lần cũng định nói ra nhưng chưa tìm được cách diễn đạt.

Chúng ta tham gia cùng diễn đàn này chắc chắn là có điểm chung (bác đã nói) nhưng cũng có điểm riêng (bác cũng đã nói). Hiểu được những điểm đó thì em tin chắc "cả hội" sẽ chơi được với nhau thôi..

Chúc cả nhà luôn vui.

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

Bác có thể viết lại lệnh insert dưới dạng liên tục được không...chứ mỗi lần chỉ insert được có một đối tượng...

theo em: thì vẫn cứ insert bình thường, rồi copy thì sẽ hàng loạt...lại có được thuộc tính cũ cần chi Lisp này ta

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

@vndesperados

Lệnh của bác rất tuyệt.

Nhưng em đang bị 1 lỗi là Block khi chèn ok xong thì bị xoay 1 góc nhất định, không hiểu có phải do em dùng Block Att (hình như mọi người gọi là bl dynamic.. thì phải) 

Bác giúp em xem thế nào được ko ạ.

Cảm ơn bác 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

×