Đến nội dung


Hình ảnh

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


  • Please log in to reply
4 replies to this topic

#1 quansla

quansla

    biết lệnh xclip

  • Members
  • PipPipPipPipPipPipPip
  • 643 Bài viết
Điểm đánh giá: 224 (khá)

Đã gửi 17 October 2012 - 10:01 PM

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:
Hình đã gửi
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é)
Hình đã gửi
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

#2 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 17 October 2012 - 10:49 PM

Mình thì k có thói quen gắn Dim assoc (chưa)
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3 kncam

kncam

    biết lệnh rotate

  • Members
  • PipPipPip
  • 133 Bài viết
Điểm đánh giá: 98 (tàm tạm)

Đã gửi 18 October 2012 - 04:05 AM

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
Hình đã gửi

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:
Hình đã gửi
  • 2
nongdan@sg

#4 quansla

quansla

    biết lệnh xclip

  • Members
  • PipPipPipPipPipPipPip
  • 643 Bài viết
Điểm đánh giá: 224 (khá)

Đã gửi 18 October 2012 - 09:40 AM

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
  • 0

#5 kts.nguyenvanhieu

kts.nguyenvanhieu

    biết pan

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

Đã gửi 19 January 2014 - 05:09 PM

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.


  • 0