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

[Hỏi] ứng xử với biến "DIMASSOC" và lisp cắt dim,bằng dim ( "cd", "bd")

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

Biến DIMASSOC là biến quy định cách liên kết của DIM với đối tượng mà nó bắt dính, cái này mọi người tra trên diễn đàn là có ngay. Mình nghĩ biến này tốt nhất nên đặt với giá trị là 2(tương đương với việc vô "option" check :Make new Dimmension Dimassoc và tương đương với việc Dim luôn bắt dính với đối tượng) là tốt nhất, dễ quản lý dễ sửa

Nhưng khi để biến này là 2(như trên) thì khi sử dụng hai lisp cắt dim và bằng dim("CD,BD") có điều bất tiện thế này.

Trước khi sử dụng lệnh "move, copy, scale" tất cả các đối tượng và Dim tương ứng đều đã trình bày rất đẹp thế này:

truoc_zps71421322.png

Do biến DIMASSOC =2 nên khi sử dụng lệnh CD,BD, vị trí chân DIM (mã DXF 10,11 gì đấy) được thay đổi lại theo ID điểm pick chuột khi sử dụng lệnh cắt dim, bằng dim như vậy đồng nghĩa CAD phải hiểu đồng thời như thế này: 1 DIM phải gắn liền với đối tượng, 2 Diểm gắn liền bắt đầu từ một điểm không phải điểm thuộc đối tượng

Kết quả là khi "move, copy, scale" Cad "đơn giản hóa" 2 vấn đề trên như sau: nó gắn lại 2 điểm (DXF 10,11) về trùng với điểm thuộc đối tượng, và thế là như sau:(không phải tất cả mọi trường hợp nhé)

sau_zps6ea76953.png

Như vậy làm cho một số DIM thì bị "như kiểu move hoàn toàn về gốc bắt đối tượng"(kích thước 300,100 trên hình)" và một số DIM thì lại đi đo 2 điểm trùng nhau và trả về giá trị 0(xem hình) lại có cái thì bị "move" đi một chỗ trả liên quan gì cả(kích thước 200 có lúc gần xát với kích thước 500 của hình)

Vậy mình hỏi mọi người có cách nào khắc phục , hoặc tránh được nhược điểm trên không, thực tế việc sửa lại không lâu, không khó, nhưng khá dễ mắc sai xót khi vài DIm bị chuyển ra vị trí khác, vừa xấu lại vừa tưởng chưa được DIM, dim lại và thế là trùng nhau, công cốc

Cảm ơn mọi ngườ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

Biến DIMASSOC là biến quy định cách liên kết của DIM với đối tượng mà nó bắt dính, cái này mọi người tra trên diễn đàn là có ngay. Mình nghĩ biến này tốt nhất nên đặt với giá trị là 2(tương đương với việc vô "option" check :Make new Dimmension Dimassoc và tương đương với việc Dim luôn bắt dính với đối tượng) là tốt nhất, dễ quản lý dễ sửa

Nhưng khi để biến này là 2(như trên) thì khi sử dụng hai lisp cắt dim và bằng dim("CD,BD") có điều bất tiện thế này.

Trước khi sử dụng lệnh "move, copy, scale" tất cả các đối tượng và Dim tương ứng đều đã trình bày rất đẹp thế này:

 

Do biến DIMASSOC =2 nên khi sử dụng lệnh CD,BD, vị trí chân DIM (mã DXF 10,11 gì đấy) được thay đổi lại theo ID điểm pick chuột khi sử dụng lệnh cắt dim, bằng dim như vậy đồng nghĩa CAD phải hiểu đồng thời như thế này: 1 DIM phải gắn liền với đối tượng, 2 Diểm gắn liền bắt đầu từ một điểm không phải điểm thuộc đối tượng

Kết quả là khi "move, copy, scale" Cad "đơn giản hóa" 2 vấn đề trên như sau: nó gắn lại 2 điểm (DXF 10,11) về trùng với điểm thuộc đối tượng, và thế là như sau:(không phải tất cả mọi trường hợp nhé)

 

Như vậy làm cho một số DIM thì bị "như kiểu move hoàn toàn về gốc bắt đối tượng"(kích thước 300,100 trên hình)" và một số DIM thì lại đi đo 2 điểm trùng nhau và trả về giá trị 0(xem hình) lại có cái thì bị "move" đi một chỗ trả liên quan gì cả(kích thước 200 có lúc gần xát với kích thước 500 của hình)

Vậy mình hỏi mọi người có cách nào khắc phục , hoặc tránh được nhược điểm trên không, thực tế việc sửa lại không lâu, không khó, nhưng khá dễ mắc sai xót khi vài DIm bị chuyển ra vị trí khác, vừa xấu lại vừa tưởng chưa được DIM, dim lại và thế là trùng nhau, công cốc

Cảm ơn mọi người

1. AutoLisp rất tiện ích nếu xài đúng chỗ. Chúng ta không nên lạm dụng thay thế những lệnh đã có sẵn trong CAD. Điển hình trong trường hợp này, bậu xài lệnh lisp CB, BD gì đó để "cắt dim, bằng dim" thì sẽ xảy ra tình trạng như trong BV của bậu. Lý do rất dễ hiểu: khi thiết kế lệnh CB và BD trong Lisp, người soạn thảo đâu lường đến tính năng Associas của kích thước, do đó khi áp dụng lệnh này các link liên kết giữa kích thước và đối tượng bị phá bỏ hoàn toàn (sau khi "cắt dim, bằng dim" bậu bật biến ANNOMONITOR = 2 thì sẽ thấy toàn là dấu chấm than ở các kích thước bị điều chỉnh).

 

2. Tại sao có kích thước = 0 ? Do thao tác tạo kích thước bị lỗi (có thể về mặt chủ quan bậu cũng chẳng biết mình gây ra lỗi gì). Bậu theo dõi nội dung sau sẽ phát hiện ra vấn đề của mình.

Khi sử dụng kích thước với DIMASSOC = 2 ta cần chú ý một số vấn đề sau:

a. Chỉ xài các Osnap "xác định" như: END,MID,CEN,NOD,QUA,INT,INS (OSMODE = 127). các osnap như: EXT,PER,TAN,NEA,APP,PAR quá "trừu tượng" nên rất dễ gây ra "lỗi".

b. Khi ghi kích thước cho đối tượng hãy chú ý mình đang bắt dính (osnap) vào cái gì (thường thì bắt dính vào điểm cuối, điểm giữa, giao điểm,...). Điều này rất quan trọng, vì kể từ lúc này bậu đã "chốt" ý tưởng trình bày, nếu muốn thay đổi chỉ có nước xóa kích thước cũ và tạo lại cái khác.

c. Tận dụng lệnh DIMCONTINUE và lệnh DIMBASELINE để ghi kích thước.

d. Tuyệt đối không nhân bản các kích thước bằng lệnh copy, mirror,... vì các kích thước này không link với đối tượng nào cả.

e. Sau khi ghi kích thước xong cần hiệu chỉnh các phong cách thể hiện ở các tỷ lệ khác nhau (1/20 - 1/50 - 1/100 - 1/200) bằng lệnh DIMSPACE.

f. Bậu tham khảo file bản vẽ sau đây và TEST thử sẽ không có "lỗi" khi MOVE, SCALE hay gì...gì... đó.

ACAD2010: http://www.cadviet.c...3/1833_anno.dwg

 

3. Dimstyle: để tránh việc sử dụng lệnh "cắt dim" thì trong dimstyle nên bật biến DIMFXLON = ON và biến DIMFXL = 6-10

1833_d_1.jpg

 

4. Làm "bằng dim" thì xài lệnh gì? trong CAD có lệnh DIMSPACE rất hay sao bậu không sử dụng. Khi DIMSPACE với giá trị = 0 thì các kích thước sẽ "bằng dim". Nếu để ở chế độ Auto thì các kích thước sẽ cách nhau (Baseline) 1 khoảng bằng 2 lần chiều cao Textdim. Còn nếu bậu thích Lisp quá thì từ DIMSPACE chế ra lệnh tắt theo kiểu (command "dimspace" "đt nguồn" "đt đích" "giá trị gì đó") thì theo thiển ý của Qua có lẽ hay hơn lệnh BD nhiều.

 

Dưới đây là hình minh họa kích thước có biến DIMFXLON = ON và cách xài lệnh DIMSPACE:

1833_dimspace.gif

  • 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

1. AutoLisp rất tiện ích nếu xài đúng chỗ. Chúng ta không nên lạm dụng thay thế những lệnh đã có sẵn trong CAD. Điển hình trong trường hợp này ....

Chà cảm ơn bác, đọc xong bài của bác thấy sáng ra nhiều quá, như vậy có nghĩa là không nên đặt biến Dimassoc là 2 đúng không ạh,

Trước giờ ý nghĩa mấy biến DIMFXLON, DIMFXL đều biết, và cả lệnh DIMSPACE nhưng chưa bao giờ nghĩ là sẽ có cách sử dụng hay như thế này, thậm chí em còn nghĩ không bao giờ phải xài đến luôn, ha ha,

Nếu được Like nhiều hơn chắc chắn em phải like bác 20,30 cái, cảm ơn bác rất nhiều ạh. Bác thật nhiệt tình

Chúc diễn đàn mình ngày càng phát triển, cảm ơn diễn đà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

1. AutoLisp rất tiện ích nếu xài đúng chỗ. Chúng ta không nên lạm dụng thay thế những lệnh đã có sẵn trong CAD. Điển hình trong trường hợp này, bậu xài lệnh lisp CB, BD gì đó để "cắt dim, bằng dim" thì sẽ xảy ra tình trạng như trong BV của bậu. Lý do rất dễ hiểu: khi thiết kế lệnh CB và BD trong Lisp, người soạn thảo đâu lường đến tính năng Associas của kích thước, do đó khi áp dụng lệnh này các link liên kết giữa kích thước và đối tượng bị phá bỏ hoàn toàn (sau khi "cắt dim, bằng dim" bậu bật biến ANNOMONITOR = 2 thì sẽ thấy toàn là dấu chấm than ở các kích thước bị điều chỉnh).

 

2. Tại sao có kích thước = 0 ? Do thao tác tạo kích thước bị lỗi (có thể về mặt chủ quan bậu cũng chẳng biết mình gây ra lỗi gì). Bậu theo dõi nội dung sau sẽ phát hiện ra vấn đề của mình.

Khi sử dụng kích thước với DIMASSOC = 2 ta cần chú ý một số vấn đề sau:

a. Chỉ xài các Osnap "xác định" như: END,MID,CEN,NOD,QUA,INT,INS (OSMODE = 127). các osnap như: EXT,PER,TAN,NEA,APP,PAR quá "trừu tượng" nên rất dễ gây ra "lỗi".

b. Khi ghi kích thước cho đối tượng hãy chú ý mình đang bắt dính (osnap) vào cái gì (thường thì bắt dính vào điểm cuối, điểm giữa, giao điểm,...). Điều này rất quan trọng, vì kể từ lúc này bậu đã "chốt" ý tưởng trình bày, nếu muốn thay đổi chỉ có nước xóa kích thước cũ và tạo lại cái khác.

c. Tận dụng lệnh DIMCONTINUE và lệnh DIMBASELINE để ghi kích thước.

d. Tuyệt đối không nhân bản các kích thước bằng lệnh copy, mirror,... vì các kích thước này không link với đối tượng nào cả.

e. Sau khi ghi kích thước xong cần hiệu chỉnh các phong cách thể hiện ở các tỷ lệ khác nhau (1/20 - 1/50 - 1/100 - 1/200) bằng lệnh DIMSPACE.

f. Bậu tham khảo file bản vẽ sau đây và TEST thử sẽ không có "lỗi" khi MOVE, SCALE hay gì...gì... đó.

ACAD2010: http://www.cadviet.c...3/1833_anno.dwg

 

3. Dimstyle: để tránh việc sử dụng lệnh "cắt dim" thì trong dimstyle nên bật biến DIMFXLON = ON và biến DIMFXL = 6-10

1833_d_1.jpg

 

4. Làm "bằng dim" thì xài lệnh gì? trong CAD có lệnh DIMSPACE rất hay sao bậu không sử dụng. Khi DIMSPACE với giá trị = 0 thì các kích thước sẽ "bằng dim". Nếu để ở chế độ Auto thì các kích thước sẽ cách nhau (Baseline) 1 khoảng bằng 2 lần chiều cao Textdim. Còn nếu bậu thích Lisp quá thì từ DIMSPACE chế ra lệnh tắt theo kiểu (command "dimspace" "đt nguồn" "đt đích" "giá trị gì đó") thì theo thiển ý của Qua có lẽ hay hơn lệnh BD nhiều.

 

Dưới đây là hình minh họa kích thước có biến DIMFXLON = ON và cách xài lệnh DIMSPACE:

1833_dimspace.gif

 

Có cách nào mặc định Dimspace = 0 không bạn? Mỗi lần move hoặc scale lại phải làm lại với ngần ấy dim thì mệt quá.

Vấn đề nữa là Dimspace chỉ giải quyết được 1 hàng dim, nếu dim 2 hàng trở lên, khi scale đối tượng, dim các hàng sẽ bị nhảy chồng lẫn lộn lên nhau, làm sao có thể pick dim thủ công để mà dóng hàng lại đượ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

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

×