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

Khắc phục lisp dim nhanh

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

 

Em chào toàn thể cộng đồng, hiện em có 1 lisp về dim nhanh theo từng dimstyle mà em viết dựa trên việc tham khảo 1 số bài trên diễn đàn. Lisp ban đầu chỉ là dim nhanh ví dụ như lệnh 20 là dim theo tỉ lệ 1/20 (dimstyle TL20). Nhưng sau đó nhận ra là khi có 1 số dimstyle chưa có trong file thì nó sẽ lấy dimstyle hiện hành, và em khắc phục bằng cách thêm các dòng lệnh giữa (giật vào). Ấy vậy lại phát sinh khi đã có dimstyle đó rồi thì nó lỗi.

Hiện em muốn thêm 1 câu điều kiện để lisp hoạt động (chẳng hạn như khi chưa có dimstyle đó thì mới thực hiện câu lệnh giữa).

Và nếu thành công thì nhờ cộng đồng chỉ giúp cách tạo textstyle lồng vào trong đây  để thay thế textstyle Standard

(hiện vì lý do công việc dùng dimscale TL20 làm chuẩn nên em muốn làm lisp này để dim nhanh 1 số tỉ lệ 1/25, 1/50, 1/100 , 1/200 thường dùng khác)

Nhờ cộng đồng hỗ trợ ạ!

Lisp em có trình bày dưới bài và có up file đính kèm. 

(defun c:20 (/ ov)
    (setvar "DIMARCSYM" 0)
    (setvar "DIMASZ" 35)
    (setvar "DIMBLK" "ArchTick")
    (setvar "DIMBLK1" "ArchTick")
    (setvar "DIMBLK2" "ArchTick")
    (setvar "DIMCEN" 2.5)
    (setvar "DIMDEC" 0)
    (setvar "DIMDLE" 35)
    (setvar "DIMDLI" 0)
    (setvar "DIMEXE" 35)
    (setvar "DIMEXO" 0)
    (setvar "DIMFXL" 1)
    (setvar "DIMGAP" 20)
    (setvar "DIMSCALE" 1)
    (setvar "DIMTAD" 1)
    (setvar "DIMTDEC" 0)
    (setvar "DIMTMOVE" 1)
    (setvar "DIMCLRE" 7)
    (setvar "DIMCLRD" 7)
    (setvar "DIMCLRT" 3)
    (setvar "DIMTXSTY" "Standard")
    (setvar "DIMTXT" 45)
    (setvar "DIMLFAC" 1) (command "-dimstyle" "s" "TL20")
(setq ov (getvar 'clayer))
(setvar 'clayer "0")    ; 0 = ten layer trong ban ve
(command "-dimstyle" "restore" "TL20")    ;TL20 = Dimstyle trong ban ve
(command "dimlinear")    ;Dimlinear = lenh can thuc hien
(setvar 'clayer ov)
)
;*******************************************************************************

DIM20.lsp

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àm kiểm tra dimstyle có tồn tại hay không:

(tblsearch "DIMSTYLE" "tendimstyle")

 

Hàm tạo textstyle:

(command "-STYLE" "Arial" "Arial.ttf" 0 1 0 "No" "No" "No")

 

Góp ý: lisp của bạn chạy đến dòng gần cuối: (command "dimlinear") là hết lệnh rồi, nên dòng (setvar 'clayer ov) sẽ không thực hiện được. Cách giải quyết: dùng biến pause

(command "DIMLINEAR")
(while (> (getvar "CMDACTIVE") 0)
  (command pause)
  )
(setvar 'clayer ov)

 

  • Like 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
2 giờ trước, Duong Nhat Duy đã nói:

Hàm kiểm tra dimstyle có tồn tại hay không:


(tblsearch "DIMSTYLE" "tendimstyle")

 

Hàm tạo textstyle:


(command "-STYLE" "Arial" "Arial.ttf" 0 1 0 "No" "No" "No")

 

Góp ý: lisp của bạn chạy đến dòng gần cuối: (command "dimlinear") là hết lệnh rồi, nên dòng (setvar 'clayer ov) sẽ không thực hiện được. Cách giải quyết: dùng biến pause


(command "DIMLINEAR")
(while (> (getvar "CMDACTIVE") 0)
  (command pause)
  )
(setvar 'clayer ov)

 

Cảm ơn anh rất nhiều. Hiện lisp có chạy được nhưng câu lệnh đầu em chưa sử dụng vào được.

Hiện tại kiến thức autolisp của em còn hạn chế, phần hàm kiểm tra lisp có tồn tại không thì làm thế nào xử lý khi mà kiểm tra có dimstyle đó rồi nó có thể bỏ qua các câu lệnh giữa mà thực thi luôn dòng:  (setq ov (getvar 'clayer))  , tại vì khi em add lisp vào cad thì 1 số file có sẵn dim đó rồi nó hỏi là có redefine dimstyle TL20 hay k. Các dòng giữa đại loại là em muốn khi nào tìm k thấy dimstyle đó thì mới tạo dimstyle để thực thi lệnh dim theo dimstyle TL20, nếu có sẵn dimstyle đó rồi thì bỏ qua k tạo lại.

Em có thử dùng hàm if và while nhưng hình như sai dẫn đến lisp k chạy được.

Nhờ anh hỗ trợ giúp em. Cảm ơn anh 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
27 phút trước, VoTuanKiet đã nói:

Cảm ơn anh rất nhiều. Hiện lisp có chạy được nhưng câu lệnh đầu em chưa sử dụng vào được.

Hiện tại kiến thức autolisp của em còn hạn chế, phần hàm kiểm tra lisp có tồn tại không thì làm thế nào xử lý khi mà kiểm tra có dimstyle đó rồi nó có thể bỏ qua các câu lệnh giữa mà thực thi luôn dòng:  (setq ov (getvar 'clayer))  , tại vì khi em add lisp vào cad thì 1 số file có sẵn dim đó rồi nó hỏi là có redefine dimstyle TL20 hay k. Các dòng giữa đại loại là em muốn khi nào tìm k thấy dimstyle đó thì mới tạo dimstyle để thực thi lệnh dim theo dimstyle TL20, nếu có sẵn dimstyle đó rồi thì bỏ qua k tạo lại.

Em có thử dùng hàm if và while nhưng hình như sai dẫn đến lisp k chạy được.

Nhờ anh hỗ trợ giúp em. Cảm ơn anh nhiều ạ!

(if (tblsearch "DIMSTYLE" "TL20")
  (command "-dimstyle" "s" "TL20" "Y");Neu co dimstyle TL20 thi lam gi do
  (command "-dimstyle" "s" "TL20");Neu khong thi lam gi do
)

 

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
11 giờ trước, Duong Nhat Duy đã nói:

(if (tblsearch "DIMSTYLE" "TL20")
  (command "-dimstyle" "s" "TL20" "Y");Neu co dimstyle TL20 thi lam gi do
  (command "-dimstyle" "s" "TL20");Neu khong thi lam gi do
)

 

Anh có thể hoàn thiện lisp này hộ em được không ạ. Em mới nhập môn tập viết, viết chồng thêm 2 câu lệnh này cái là lisp k chạy được luô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
10 giờ trước, VoTuanKiet đã nói:

Anh có thể hoàn thiện lisp này hộ em được không ạ. Em mới nhập môn tập viết, viết chồng thêm 2 câu lệnh này cái là lisp k chạy được luôn @@

(defun c:20 (/ ov)
    (setvar "DIMARCSYM" 0)
    (setvar "DIMASZ" 35)
    (setvar "DIMBLK" "ArchTick")
    (setvar "DIMBLK1" "ArchTick")
    (setvar "DIMBLK2" "ArchTick")
    (setvar "DIMCEN" 2.5)
    (setvar "DIMDEC" 0)
    (setvar "DIMDLE" 35)
    (setvar "DIMDLI" 0)
    (setvar "DIMEXE" 35)
    (setvar "DIMEXO" 0)
    (setvar "DIMFXL" 1)
    (setvar "DIMGAP" 20)
    (setvar "DIMSCALE" 1)
    (setvar "DIMTAD" 1)
    (setvar "DIMTDEC" 0)
    (setvar "DIMTMOVE" 1)
    (setvar "DIMCLRE" 7)
    (setvar "DIMCLRD" 7)
    (setvar "DIMCLRT" 3)
    (setvar "DIMTXSTY" "Standard")
    (setvar "DIMTXT" 45)
    (setvar "DIMLFAC" 1)
(if (tblsearch "DIMSTYLE" "TL20")
  (command "-dimstyle" "s" "TL20" "Y");Neu co dimstyle TL20 thi lam gi do
  (command "-dimstyle" "s" "TL20");Neu khong thi lam gi do
  )
(setq ov (getvar 'clayer))
(setvar 'clayer "0")    ; 0 = ten layer trong ban ve
(command "-dimstyle" "restore" "TL20")    ;TL20 = Dimstyle trong ban ve
(command "dimlinear")    ;Dimlinear = lenh can thuc hien
(setvar 'clayer ov)
)

Mỗi copy paste thôi mà 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

Em vẫn không chạy được lisp này anh ơi

lệnh nó lại ra cái hộp thoại @@ image.png.50802a1b192214f061cdf3cbc3914c9c.png

em mới tìm hiểu viết lisp nên nhiều cái copy patse cũng chưa đúng nên nhờ anh ạ @@

Ý muốn ban đầu của em là muốn khi nào k có dimstyle đó thì nó sẽ tự tạo, còn nếu có sẵn rồi thì chạy tiếp mấy câu lệnh cuối để tự chọn dimstyle đó để 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

Gửi bản vẽ lên mình xem dimstyle như thế nào, chi mà setvar nhiều quá chóng mặt luô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
3 giờ trước, VoTuanKiet đã nói:

Em vẫn không chạy được lisp này anh ơi

lệnh nó lại ra cái hộp thoại @@ 

em mới tìm hiểu viết lisp nên nhiều cái copy patse cũng chưa đúng nên nhờ anh ạ @@

Ý muốn ban đầu của em là muốn khi nào k có dimstyle đó thì nó sẽ tự tạo, còn nếu có sẵn rồi thì chạy tiếp mấy câu lệnh cuối để tự chọn dimstyle đó để vẽ

Bạn F2 chụp lại mình xem lỗi ở đâ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
19 giờ trước, limfx đã nói:

Gửi bản vẽ lên mình xem dimstyle như thế nào, chi mà setvar nhiều quá chóng mặt luôn!

Em mới tự học viết lisp đc 1 thời gian ngắn nên là chưa biết 1 số cách để làm nó gọn hơn.

Em tìm hiểu trên diễn đàn có topic nói về cách tạo dim nên em làm theo ấy ạ, cũng lấy các thông số trong dim của công ty em dùng để tạo và em thấy nó khá ổn

Ban đầu là em chỉ muốn 1 lisp dim theo tỉ lệ ví dụ như nhập 20 enter rồi dim như bình thường là nó sẽ dim theo tỉ lệ 20, sau này những dim khác em nhận ra là phải có dim đó nó mới dim đúng k là nó lấy dim  hiện hành, sẽ sai nếu như em k tập trung chú ý khi làm, nên là em add thêm các dòng để tạo 1 dim nếu như dimstyle đó k có trong file cad

Gửi anh xem qua các tỉ lệ dim mà công ty em thường dùng vẽ kết cấu, scale factor TL20 là 1

https://drive.google.com/file/d/1-34t-0qOyQ1SpCnJb8iRD3x4gQG214dp/view?usp=sharing

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
19 giờ trước, Duong Nhat Duy đã nói:

Bạn F2 chụp lại mình xem lỗi ở đâu.

Dạ cảm ơn anh rất nhiều, em làm thiếu 1 dấu nên nó chạy sai, lisp trên nó hoàn toàn đúng ý em rồi anh, hiện em có thêm cái textstyle vào nữa ấy anh, về cơ bản em thấy nó cũng chạy như dimstyle.

Em có dựa theo câu lệnh của dimstyle làm thêm cái text style và nó chạy theo đúng ý em rồi anh.

Chân thành cảm ơn anh rất nhiều, em up lisp lên đây để chia sẻ cho mọi người luôn ạ :D


(defun c:D20 (/ ov)
  (if (tblsearch "STYLE" "KC")
   (command "-STYLE" "s" "KC" "Y")
   (command "-STYLE" "s" "KC")
  )
  (command "-STYLE" "KC" "VNI-Helve-Condense.TTF" 0 1 0 "No" "No" "No")
    (setvar "DIMARCSYM" 0)
    (setvar "DIMASZ" 35)
    (setvar "DIMBLK" "ArchTick")
    (setvar "DIMBLK1" "ArchTick")
    (setvar "DIMBLK2" "ArchTick")
    (setvar "DIMCEN" 2.5)
    (setvar "DIMDEC" 0)
    (setvar "DIMDLE" 35)
    (setvar "DIMDLI" 0)
    (setvar "DIMEXE" 35)
    (setvar "DIMEXO" 0)
    (setvar "DIMFXL" 1)
    (setvar "DIMGAP" 20)
    (setvar "DIMSCALE" 1)
    (setvar "DIMTAD" 1)
    (setvar "DIMTDEC" 0)
    (setvar "DIMTMOVE" 1)
    (setvar "DIMCLRE" 7)
    (setvar "DIMCLRD" 7)
    (setvar "DIMCLRT" 3)
    (setvar "DIMTXSTY" "KC")
    (setvar "DIMTXT" 45)
    (setvar "DIMLFAC" 1)
(if (tblsearch "DIMSTYLE" "TL20")
  (command "-dimstyle" "s" "TL20" "Y");Neu co dimstyle TL20 thi lam gi do
  (command "-dimstyle" "s" "TL20");Neu khong thi lam gi do
)
(setq ov (getvar 'clayer))
(setvar 'clayer "0")    ; 0 = ten layer trong ban ve
(command "-dimstyle" "restore" "TL20")    ;TL20 = Dimstyle trong ban ve
(command "dimlinear")    ;Dimlinear = lenh can thuc hien
(setvar 'clayer ov)
)

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
6 giờ trước, VoTuanKiet đã nói:

Dạ cảm ơn anh rất nhiều, em làm thiếu 1 dấu nên nó chạy sai, lisp trên nó hoàn toàn đúng ý em rồi anh, hiện em có thêm cái textstyle vào nữa ấy anh, về cơ bản em thấy nó cũng chạy như dimstyle.

Em có dựa theo câu lệnh của dimstyle làm thêm cái text style và nó chạy theo đúng ý em rồi anh.

Chân thành cảm ơn anh rất nhiều, em up lisp lên đây để chia sẻ cho mọi người luôn ạ :D


(defun c:D20 (/ ov)
  (if (tblsearch "STYLE" "KC")
   (command "-STYLE" "s" "KC" "Y")
   (command "-STYLE" "s" "KC")
  )
  (command "-STYLE" "KC" "VNI-Helve-Condense.TTF" 0 1 0 "No" "No" "No")
    (setvar "DIMARCSYM" 0)
    (setvar "DIMASZ" 35)
    (setvar "DIMBLK" "ArchTick")
    (setvar "DIMBLK1" "ArchTick")
    (setvar "DIMBLK2" "ArchTick")
    (setvar "DIMCEN" 2.5)
    (setvar "DIMDEC" 0)
    (setvar "DIMDLE" 35)
    (setvar "DIMDLI" 0)
    (setvar "DIMEXE" 35)
    (setvar "DIMEXO" 0)
    (setvar "DIMFXL" 1)
    (setvar "DIMGAP" 20)
    (setvar "DIMSCALE" 1)
    (setvar "DIMTAD" 1)
    (setvar "DIMTDEC" 0)
    (setvar "DIMTMOVE" 1)
    (setvar "DIMCLRE" 7)
    (setvar "DIMCLRD" 7)
    (setvar "DIMCLRT" 3)
    (setvar "DIMTXSTY" "KC")
    (setvar "DIMTXT" 45)
    (setvar "DIMLFAC" 1)
(if (tblsearch "DIMSTYLE" "TL20")
  (command "-dimstyle" "s" "TL20" "Y");Neu co dimstyle TL20 thi lam gi do
  (command "-dimstyle" "s" "TL20");Neu khong thi lam gi do
)
(setq ov (getvar 'clayer))
(setvar 'clayer "0")    ; 0 = ten layer trong ban ve
(command "-dimstyle" "restore" "TL20")    ;TL20 = Dimstyle trong ban ve
(command "dimlinear")    ;Dimlinear = lenh can thuc hien
(setvar 'clayer ov)
)

TEXTSTYLE sai bét rồi bạn ơi. Bạn đừng làm máy móc như vậy, trước tiên bạn phải hiểu tất cả các hàm command đều là lệnh của autocad, nên cách dùng thì rất trực quan, giả sử muốn tạo textstyle, trong cad bạn nhập -STYLE, sau đó cad nó sẽ hỏi bạn rất nhiều option như tên hiển thị, tên định dạng, cao chữ, ..., mỗi câu trả lời tương ứng với 1 tham số trong lệnh command ví dụ  (command "-STYLE" "KC" "VNI-Helve-Condense.TTF" .....). Vậy nên trong cad không có câu lệnh nào là như này cả (command "-STYLE" "s" "KC" "Y"), muốn biết nó là gì bạn phải tự test xem nếu style đã có rồi thì cad nó sẽ hỏi mình ntn, yêu cầu mình nhập cái gì, ...

Sử dụng (command thì có rất nhiều hạn chế ví dụ: lisp chạy chậm, bắt điểm nhầm, đặc biệt là nó tùy thuộc vào từng đời cad nên có thể lisp chạy ok trên đời cad này nhưng lỗi ở đời cad khác.

  • Like 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
2 giờ trước, VoTuanKiet đã nói:

Em mới tự học viết lisp đc 1 thời gian ngắn nên là chưa biết 1 số cách để làm nó gọn hơn.

Em tìm hiểu trên diễn đàn có topic nói về cách tạo dim nên em làm theo ấy ạ, cũng lấy các thông số trong dim của công ty em dùng để tạo và em thấy nó khá ổn

Ban đầu là em chỉ muốn 1 lisp dim theo tỉ lệ ví dụ như nhập 20 enter rồi dim như bình thường là nó sẽ dim theo tỉ lệ 20, sau này những dim khác em nhận ra là phải có dim đó nó mới dim đúng k là nó lấy dim  hiện hành, sẽ sai nếu như em k tập trung chú ý khi làm, nên là em add thêm các dòng để tạo 1 dim nếu như dimstyle đó k có trong file cad

Gửi anh xem qua các tỉ lệ dim mà công ty em thường dùng vẽ kết cấu, scale factor TL20 là 1

https://drive.google.com/file/d/1-34t-0qOyQ1SpCnJb8iRD3x4gQG214dp/view?usp=sharing

Sao các tỷ lệ trong scale factor  không đúng theo tỷ lệ của loai dim, no lung tung ko theo quy tac nào 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

Sao em thấy lisp chạy ổn ấy anh, lisp tự tạo được textstyle KC với font VNI-Healve-Condense khi k có, và khi có r thì nó bỏ qua lệnh tạo

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
49 phút trước, limfx đã nói:

Sao các tỷ lệ trong scale factor  không đúng theo tỷ lệ của loai dim, no lung tung ko theo quy tac nào cả!

này là cty em sử dụng model để trình bày in ấn luôn ấy anh, cứ 1 cấu kiện thì scale lên đúng tỉ lệ, dimscale sẽ khác, text nó vẫn giữ nguyên chiều cao
trong bản vẽ kết cấu bên em thì tỉ lệ 20 lấy scale factor =1 để vẽ cấu kiện 1/20 k cần scale, những mặt bằng 1/50, 1/100, 1/200... thì mới scale xuống hoặc những cấu kiện nhỏ thì scale lên 1/10, dim thì text giữ nguyên chiều cao nên sẽ có nhiều dimstyle

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
2 giờ trước, VoTuanKiet đã nói:

Sao em thấy lisp chạy ổn ấy anh, lisp tự tạo được textstyle KC với font VNI-Healve-Condense khi k có, và khi có r thì nó bỏ qua lệnh tạo

Vì dòng (command "-STYLE" "s" "KC" "Y") là vô nghĩa, bạn thử nhập nó trong cad là hiểu liề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
17 phút trước, Duong Nhat Duy đã nói:

Vì dòng (command "-STYLE" "s" "KC" "Y") là vô nghĩa, bạn thử nhập nó trong cad là hiểu liền.

À em hiểu ý của anh rồi, mà sao lisp nó vẫn chạy đc đúng nên cũng hơi ảo, có cách nào khắc phục dòng đó k anh?

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
26 phút trước, VoTuanKiet đã nói:

À em hiểu ý của anh rồi, mà sao lisp nó vẫn chạy đc đúng nên cũng hơi ảo, có cách nào khắc phục dòng đó k anh?

Thì bạn bỏ luôn cả cụm if đó đi, bản chất lệnh tạo textstyle nó sẽ đè lên textstyle cũ hoặc tạo mới, nên không cần bước kiểm tra sự tồn tại của textstyle đó 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

Anh Duong Nhat Duy tiện cho em hỏi tý nhé: data dimstype:

( (0 . "DIMSTYLE") (100 . "AcDbSymbolTableRecord") (100 . "AcDbDimStyleTableRecord") (2 . "FX25") (70 . 0) (41 . 1.0) (42 . 0.5) (43 . 0.5)
  (44 . 0.7) (46 . 1.0) (73 . 0) (74 . 0) (77 . 1) (78 . 12) (140 . 2.0) (141 . 1.0) (144 . 25.0) (147 . 0.5) (172 . 1) (174 . 1) (176 . 256)
  (177 . 252) (178 . 3) (271 . 0) (272 . 0) (279 . 1) (289 . 0) (340 . <Entity name: 19611ef0d40>) (341 . <Entity name: 19611ef0f10>) (342 . <Entity name: 19611ef0f10>))

;340 là style text, 341 và 342 là các "BLOCK_RECORD" "_ArchTick" 

Vậy em muốn lấy Entity name của Block  "_ArchTick" của một bản vẽ bấc kỳ thì dùng hàm nào anh?

Em thử dùng (setq At (cdr (assoc -2 (tblsearch "BLOCK" "_ArchTick")))) để gắn vào nhưng không đú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
37 phút trước, Duong Nhat Duy đã nói:

Thì bạn bỏ luôn cả cụm if đó đi, bản chất lệnh tạo textstyle nó sẽ đè lên textstyle cũ hoặc tạo mới, nên không cần bước kiểm tra sự tồn tại của textstyle đó nữa

Cảm ơn anh nhiều ạ :D

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
25 phút trước, limfx đã nói:

Anh Duong Nhat Duy tiện cho em hỏi tý nhé: data dimstype:

( (0 . "DIMSTYLE") (100 . "AcDbSymbolTableRecord") (100 . "AcDbDimStyleTableRecord") (2 . "FX25") (70 . 0) (41 . 1.0) (42 . 0.5) (43 . 0.5)
  (44 . 0.7) (46 . 1.0) (73 . 0) (74 . 0) (77 . 1) (78 . 12) (140 . 2.0) (141 . 1.0) (144 . 25.0) (147 . 0.5) (172 . 1) (174 . 1) (176 . 256)
  (177 . 252) (178 . 3) (271 . 0) (272 . 0) (279 . 1) (289 . 0) (340 . <Entity name: 19611ef0d40>) (341 . <Entity name: 19611ef0f10>) (342 . <Entity name: 19611ef0f10>))

;340 là style text, 341 và 342 là các "BLOCK_RECORD" "_ArchTick" 

Vậy em muốn lấy Entity name của Block  "_ArchTick" của một bản vẽ bấc kỳ thì dùng hàm nào anh?

Em thử dùng (setq At (cdr (assoc -2 (tblsearch "BLOCK" "_ArchTick")))) để gắn vào nhưng không đúng?

Cái này mình chịu nha, thật là mình cũng chưa tạo Dim bằng command hay entmake bao giờ vì nó quá lằng nhằng.

Mà nếu là Block (ví dụ "_ArchTick"), thì làm gì có entity name, chỉ Insert mới có.

  • Like 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ào lúc 5/7/2024 tại 14:57, limfx đã nói:

Anh Duong Nhat Duy tiện cho em hỏi tý nhé: data dimstype:

( (0 . "DIMSTYLE") (100 . "AcDbSymbolTableRecord") (100 . "AcDbDimStyleTableRecord") (2 . "FX25") (70 . 0) (41 . 1.0) (42 . 0.5) (43 . 0.5)
  (44 . 0.7) (46 . 1.0) (73 . 0) (74 . 0) (77 . 1) (78 . 12) (140 . 2.0) (141 . 1.0) (144 . 25.0) (147 . 0.5) (172 . 1) (174 . 1) (176 . 256)
  (177 . 252) (178 . 3) (271 . 0) (272 . 0) (279 . 1) (289 . 0) (340 . <Entity name: 19611ef0d40>) (341 . <Entity name: 19611ef0f10>) (342 . <Entity name: 19611ef0f10>))

;340 là style text, 341 và 342 là các "BLOCK_RECORD" "_ArchTick" 

Vậy em muốn lấy Entity name của Block  "_ArchTick" của một bản vẽ bấc kỳ thì dùng hàm nào anh?

Em thử dùng (setq At (cdr (assoc -2 (tblsearch "BLOCK" "_ArchTick")))) để gắn vào nhưng không đúng?

(tblobjname "BLOCK" "_ArchTick")

- Các block dùng cho Arrow của mũi tên sẽ chỉ được CAD tự tạo ra khi có nhu cầu. 
Muốn có nó thì trước hết hãy setvar Dimblk trước

  • 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

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

×