Đến nội dung


Hình ảnh
* * * - - 8 Bình chọn

Viết lisp theo yêu cầu [phần 2]


  • Chủ đề bị khóa Chủ đề bị khóa
3783 replies to this topic

#1301 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 25 June 2010 - 01:50 PM

Xin góp ý 1 chút.
Chưa test cụ thể đoạn code này nhưng tôi thấy phương pháp nhập liệu hơi phiền phức vì phải quan tâm đến hai Textbox. Theo tôi chỉ cần 1 Textbox cũng giải quyết được. Nhập dấu +-*/ trước và giá trị sau, khi đó căn cứ vào dấu hiệu phép tính (ký tự đầu tiên) chương trình sẽ thực hiện phép tính đối với giá trị nhập vào sau dấu phép tính.
Nếu cần tính toán với biểu thức (nhiều phép tính cùng 1 lúc) cũng có thể giải quyết được với 1 Textbox.

Cảm ơn bác hoa35ktxd đã góp ý. Và Tue_NV đã viết thành Lisp này :
Là Lisp tính toán Cộng trừ nhân chia Block Attribute với 1 số hoặc 1 biểu thức
 Lisp sẽ lấy giá trị của Tag_source_name đi tính toán với giá trị trong biểu thức toán học
 Trị thay thế Tag_Replace_name có thể trùng hoặc không trùng với Tag_source_name.
Lisp có thể tính toán Cộng trừ nhân chia Text với 1 số hoặc 1 biểu thức.
Trị thay thế chính ngay vào Text đã chọn
Lisp có tính năng tính tổng các Text được chọn và tính tổng trong Tag_source_name của các Block Attribute chọn
Hình đã gửi
DownLoad Lisp file


: Cho mình hỏi có LISP nào convert ARCCIRCLE thành LINE ko vậy? .

@truongthanh : Trên diễn đàn có Lisp chuyển line, pline, spline, arc, circle, ellipse sang pline -> Muốn chuyển sang Line nữa thì sử dụng lệnh eXplode
Bài viết số 6.

Chào các bạn, do nhu cầu công việc mình muốn nhờ các bạn viết giúp lisp bật, tắt các đối tựợng cùng màu.

@Yes : Lisp ẩn đối tượng theo màu trên diễn đàn đã có. Bạn chịu khó Tìm kiếm vậy
  • 4

#1302 romeo1982

romeo1982

    biết lệnh mirror

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

Đã gửi 25 June 2010 - 03:55 PM

Bác nào có file lip như vầy : khi ra lệnh thì trên bản vẽ có bao nhiêu tẽt khác nhau sẽ đưa về bao nhiêu layer khác nhau.
Ví dụ: trên bản vẽ có các tẽt có tên là: 0,1,2,3,4,5,6.........,A,B,C,D,E..... MẶT CẮT 1-1, MẶT BẰNG MÁI,...... thì sẽ tạo ra các layer có trên là: 0,1,2,3,4,5,6.........,A,B,C,D,E..... MẶT CẮT 1-1, MẶT BẰNG MÁI,...... và ghép cho các tẽt có trùng tên đó. Xin cám ơn
  • 0

#1303 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 26 June 2010 - 10:17 PM

Nhờ các bạn viết dùm mình lisp DIMALIGNED hàng loạt nhiều đối tượng trong đó các định dạng của DIM tùy thuộc vào DIMSTYLE hiện hành, còn khoảng cách từ DIM đến đối tượng là do người sử dụng nhập!Cụ thể:
-Gõ lệnh LISP
-Chọn đối tượng (bằng cách quét chọn hàng loạt):
-Khoảng cách từ DIM đến đối tượng:
-Kết thúc
Thanks các bạn rất nhiều!
  • 0

#1304 tiendaica

tiendaica

    biết zoom

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

Đã gửi 27 June 2010 - 01:01 AM

mình muốn mấy bạn viết giúp minh lisp tìm text
1 gõ lệnh ttext
2 đánh nội dung text
3 hiện toa độ điểm text đó đồng thời zoom to khu vực đó lên
cám ơn nhiều
  • 0

#1305 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 27 June 2010 - 03:31 PM

Tôi sử dụng gặp lỗi sau: nếu tính với 1 số có precision > 2 số sau dấu chấm thập phân, kết quả không đúng, nhờ Tuệ hướng dẫn khắc phục . Thanks
Tuệ tham khảo file đính kèm sẽ rõ. Thân
http://www.cadviet.c...es/2/test_7.dwg

Chào bác vbao. Tue_NV sẽ cố gắng sửa lại lỗi này với thời gian sớm nhất. Về việc xuất ra kết quả số lẻ thập phân, bác vbao và các bạn có ý kiến gì nữa không để Tue_NV hoàn thành luôn để các bạn sử dụng Lisp Cộng trừ Nhân chia Block Attribute or Text với 1 số hoặc 1 biểu thức được tốt. Cảm ơn bác vbao

mình muốn mấy bạn viết giúp minh lisp tìm text
1 gõ lệnh ttext
2 đánh nội dung text
3 hiện toa độ điểm text đó đồng thời zoom to khu vực đó lên
cám ơn nhiều

Chào bạn Tien
Lệnh Find hoàn toàn đáp ứng yêu cầu này của bạn

@truongthanh : Bạn nên upload 1 file .dwg minh hoạ rõ hơn yêu cầu của bạn nhé. Thân

@romeo1982
1. Bạn không nên post 1 nội dung ở 3 topic khác nhau. Cái này là quy định của diễn đàn, bạn phải tuân thủ
2. Hoàn toàn có thể viết được Lisp theo yêu cầu của bạn nhưng cuối cùng Không biết Lisp của bạn sử dụng để làm gì nữa vì khi hoàn thành có biết bao nhiêu là tên Layer trong khi người dùng muốn quản lý các đối tượng theo Layer cho thật tốt?

Bác nào có file lip như vầy : khi ra lệnh thì trên bản vẽ có bao nhiêu tẽt khác nhau sẽ đưa về bao nhiêu layer khác nhau.
Ví dụ: trên bản vẽ có các tẽt có tên là: 0,1,2,3,4,5,6.........,A,B,C,D,E..... MẶT CẮT 1-1, MẶT BẰNG MÁI,...... thì sẽ tạo ra các layer có trên là: 0,1,2,3,4,5,6.........,A,B,C,D,E..... MẶT CẮT 1-1, MẶT BẰNG MÁI,...... và ghép cho các tẽt có trùng tên đó. Xin cám ơn


  • 1

#1306 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 27 June 2010 - 04:57 PM

mình muốn mấy bạn viết giúp minh lisp tìm text
1 gõ lệnh ttext
2 đánh nội dung text
3 hiện toa độ điểm text đó đồng thời zoom to khu vực đó lên
cám ơn nhiều

Lệnh Find trong cad
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#1307 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 27 June 2010 - 08:57 PM

Cảm ơn TUE đã quan tâm đến mình!mình UP file cad này nhờ TUE giúp mình với! mình xin ghi lại yêu càu của LISP:
Nhờ các bạn viết dùm mình lisp DIMALIGNED hàng loạt nhiều đối tượng trong đó các định dạng của DIM tùy thuộc vào DIMSTYLE hiện hành, còn khoảng cách từ DIM đến đối tượng và vị trí của DIM so với đối tượng là do người sử dụng nhập!Cụ thể:
-Gõ lệnh LISP
-Chọn đối tượng (bằng cách quét chọn hàng loạt):
-Khoảng cách từ DIM đến đối tượng:
-vị trí DIM (trên hoặc trái/dưới hoặc phải):
-Kết thúc;
http://www.cadviet.c...les/2/dim_2.dwg
Cảm ơn bạn rất nhiều!
Thanks a lot!
  • 0

#1308 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1431 Bài viết
Điểm đánh giá: 1425 (rất tốt)

Đã gửi 28 June 2010 - 08:11 AM

Cảm ơn TUE đã quan tâm đến mình!mình UP file cad này nhờ TUE giúp mình với! mình xin ghi lại yêu càu của LISP:
Nhờ các bạn viết dùm mình lisp DIMALIGNED hàng loạt nhiều đối tượng trong đó các định dạng của DIM tùy thuộc vào DIMSTYLE hiện hành, còn khoảng cách từ DIM đến đối tượng và vị trí của DIM so với đối tượng là do người sử dụng nhập!Cụ thể:
-Gõ lệnh LISP
-Chọn đối tượng (bằng cách quét chọn hàng loạt):
-Khoảng cách từ DIM đến đối tượng:
-vị trí DIM (trên hoặc trái/dưới hoặc phải):
-Kết thúc;
http://www.cadviet.c...les/2/dim_2.dwg
Cảm ơn bạn rất nhiều!
Thanks a lot!

Bạn dùng tạm Lisp Ghi kích thuớc đ/thẳng, cung tròn tuơng tự yêu cầu của bạn.
Nhưng k/cách từ DIM đến đối tuợng tùy thuộc vào DIMSTYLE hiện hành _ biến DIMDLI
(defun c:dim2(/ vl ov ss d1 d2 d3 d4 d5 ent oo)
(vl-load-com)
(setq vl '("osmode" "orthomode") ; Sys Var list
ov (mapcar 'getvar vl)) ; Get Old values
(mapcar 'setvar vl '(0 0))
(setq ss (ssget (list (cons 0 "LINE,ARC")) )
d4 (getpoint "\nVi tri dat duong K/thuoc : ") )
(foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(setq d1 (vlax-curve-getStartPoint ent)
d2 (vlax-curve-getEndPoint ent)
d5 (vlax-curve-getClosestPointTo ent d4 T)
d3 (polar d5 (angle d5 d4) (* (getvar "dimdli")(getvar "dimscale"))))
(if (= (cdr (assoc 0 (entget ent))) "LINE");line
(vl-cmdf "dimaligned" d1 d2 d3 )
(progn ;arc
(setq ent (vlax-ename->vla-object ent)
oo (vlax-safearray->list (variant-value (vla-get-Center ent)))
oo (list (car oo) (cadr oo) (caddr oo)) )
(vl-cmdf "dimangular" "" oo d1 d2 d3)
(vla-put-TextOverride (vlax-ename->vla-object (entlast)) (round0(vla-get-ArcLength ent))) ) ) )
(mapcar 'setvar vl ov) ; reset Sys Vars
(princ) )

  • 1

#1309 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 28 June 2010 - 10:03 AM

Bạn dùng tạm Lisp Ghi kích thuớc đ/thẳng, cung tròn tuơng tự yêu cầu của bạn.
Nhưng k/cách từ DIM đến đối tuợng tùy thuộc vào DIMSTYLE hiện hành _ biến DIMDLI

Xin cảm ơn bác GIA BACH rất nhiều!LISP này gần đúng ý em rồi!nhờ bác sửa lại chút cho nó đo được đối tượng là PLINE luôn được ko?
Nhờ bác giúp dùm em với!
Thanks bác rất nhiều!
  • 0

#1310 funnyzui

funnyzui

    biết vẽ arc

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

Đã gửi 28 June 2010 - 12:58 PM

Cảm ơn bác hoa35ktxd đã góp ý. Và Tue_NV đã viết thành Lisp này :
Là Lisp tính toán Cộng trừ nhân chia Block Attribute với 1 số hoặc 1 biểu thức
 Lisp sẽ lấy giá trị của Tag_source_name đi tính toán với giá trị trong biểu thức toán học
 Trị thay thế Tag_Replace_name có thể trùng hoặc không trùng với Tag_source_name.
Lisp có thể tính toán Cộng trừ nhân chia Text với 1 số hoặc 1 biểu thức.
Trị thay thế chính ngay vào Text đã chọn
Lisp có tính năng tính tổng các Text được chọn và tính tổng trong Tag_source_name của các Block Attribute chọn
Hình đã gửi
DownLoad Lisp file

Trước tiên, funnyzui xin cám ơn bác Tue_NV đã ngày càng hoàn thiện lisp này hơn.
Nhưng funnyzui có 1 yêu cầu nhỏ, cũng là để phù hợp hơn với 1 số công việc chỉ chú trọng tới Tag_Name mà thôi (vd: thống kê thép), bác Tue_NV có cách nào làm cho lisp thực hiện 1 lượt được nhiều Block_Name khác nhau ko? Tất nhiên là nó có cùng Tag_Name rồi.
Mong bác bỏ chút thời gian quý báu để nghiên cứu nhằm thỏa mãn cái yêu cầu mà có vẻ là "được voi đòi hai bà Trưng" của e. :cheers:
  • 0

#1311 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1431 Bài viết
Điểm đánh giá: 1425 (rất tốt)

Đã gửi 28 June 2010 - 02:41 PM

Xin cảm ơn bác GIA BACH rất nhiều!LISP này gần đúng ý em rồi!nhờ bác sửa lại chút cho nó đo được đối tượng là PLINE luôn được ko?
Nhờ bác giúp dùm em với!
Thanks bác rất nhiều!

Bạn thử Lisp này nhé.
Với đối tượng là PLINE, LISP chỉ đo khoảng cách từ điểm đầu đến điểm cuối.
(defun c:dim2(/ vl ov ss d1 d2 d3 d4 d5 ent oo)
(vl-load-com)
(setq vl '("osmode" "orthomode") ; Sys Var list
ov (mapcar 'getvar vl)) ; Get Old values
(mapcar 'setvar vl '(0 0))
(setq ss (ssget (list (cons 0 "*LINE,ARC")) )
d4 (getpoint "\nVi tri dat duong K/thuoc : ") )
(foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(setq d1 (vlax-curve-getStartPoint ent)
d2 (vlax-curve-getEndPoint ent)
d5 (vlax-curve-getClosestPointTo ent d4 T)
d3 (polar d1 (angle d5 d4) (* (getvar "dimdli")(getvar "dimscale"))))
(if (= (cdr (assoc 0 (entget ent))) "ARC")
(progn
(setq ent (vlax-ename->vla-object ent)
oo (vlax-safearray->list (variant-value (vla-get-Center ent)))
oo (list (car oo) (cadr oo) (caddr oo)) )
(vl-cmdf "dimangular" "" oo d1 d2 d3)
(vla-put-TextOverride (vlax-ename->vla-object (entlast)) (rtos(vla-get-ArcLength ent))) )
(if (not (equal d1 d2 1e-12)) (vl-cmdf "dimaligned" d1 d2 d3 )) ) )
(mapcar 'setvar vl ov) ; reset Sys Vars
(princ) )

  • 1

#1312 thuphong

thuphong

    biết vẽ circle

  • Members
  • PipPip
  • 34 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 28 June 2010 - 09:22 PM

Chào Bác Tue_NV. Bác có thể up Code của file Ttb.vlx lên cho đệ xem với được không. Đệ rất muốn được học hỏi, để có thể tự mình viết những đoạn con con phục vụ cho công việc của đệ .Nếu được xin cảm ơn Bác trước. :cheers:
  • 0

#1313 tvgtyb08

tvgtyb08

    biết vẽ spline

  • Members
  • PipPip
  • 92 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 28 June 2010 - 11:28 PM

Nhờ các bạn sửa giúp mình cái lisp này khi mình dùng cho bản vẽ tỷ lệ đã phóng lên 100 lần với.
Mình cảm ơn.
(Defun C:gcd ()
(Command ".Layer" "make" " ghicaodo" "Color" "Cyan" """")
(command ".style" "textCD" "Hoatfon" "" 0.75 "" "" "" "")
;Truy xuat toa do Y cua diem goc
(setq DG (getpoint "\nPick chon diem goc :"))
(setq YG (cadr DG))
(setq CDG (getreal "\nCao do diem nay la bao nhieu ??? (Don vi la m) "))
(repeat 100
(setq DD (getpoint "\nMuon tinh cao do diem nao? "))
;Truy xuat toa do X,Y cua diem dat cao do
(setq XC (car DD))
(setq YC (cadr DD))
(setq YY (+ (- YC YG) CDG))
(setq Z(rtos YY 2 2))
;Ve tam giac
(setq XD1(- XC 0.14))
(setq XD2(+ XC 0.14))
(setq XD3 XC)
(setq YD1(+ YC 0.18))
(setq YD2(+ YC 0.18))
(setq YD3 YC)
(setq PT1 (list XD1 YD1))
(setq PT2 (list XD2 YD2))
(setq PT3 (list XD3 YD3))
(command "Pline" PT1 PT2 PT3 "Close")
(command "SOLID" PT1 PT2 PT3 PT1 "")
;Tao dau cong
(if ( < YY 0 )
(setq T (Strcat Z ""))
(setq T (Strcat "+" Z ""))
);end if
(setq DCText (list (+ XC 0.2) (+ YC 0.1)))
(Command ".Text" DCText 0.4 0.0 T )
);repeat
(princ)
)
  • 0

#1314 tvgtyb08

tvgtyb08

    biết vẽ spline

  • Members
  • PipPip
  • 92 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 28 June 2010 - 11:28 PM

Nhờ các bạn sửa giúp mình cái lisp này khi mình dùng cho bản vẽ tỷ lệ đã phóng lên 100 lần với.
Mình cảm ơn.
(Defun C:gcd ()
(Command ".Layer" "make" " ghicaodo" "Color" "Cyan" """")
(command ".style" "textCD" "Hoatfon" "" 0.75 "" "" "" "")
;Truy xuat toa do Y cua diem goc
(setq DG (getpoint "\nPick chon diem goc :"))
(setq YG (cadr DG))
(setq CDG (getreal "\nCao do diem nay la bao nhieu ??? (Don vi la m) "))
(repeat 100
(setq DD (getpoint "\nMuon tinh cao do diem nao? "))
;Truy xuat toa do X,Y cua diem dat cao do
(setq XC (car DD))
(setq YC (cadr DD))
(setq YY (+ (- YC YG) CDG))
(setq Z(rtos YY 2 2))
;Ve tam giac
(setq XD1(- XC 0.14))
(setq XD2(+ XC 0.14))
(setq XD3 XC)
(setq YD1(+ YC 0.18))
(setq YD2(+ YC 0.18))
(setq YD3 YC)
(setq PT1 (list XD1 YD1))
(setq PT2 (list XD2 YD2))
(setq PT3 (list XD3 YD3))
(command "Pline" PT1 PT2 PT3 "Close")
(command "SOLID" PT1 PT2 PT3 PT1 "")
;Tao dau cong
(if ( < YY 0 )
(setq T (Strcat Z ""))
(setq T (Strcat "+" Z ""))
);end if
(setq DCText (list (+ XC 0.2) (+ YC 0.1)))
(Command ".Text" DCText 0.4 0.0 T )
);repeat
(princ)
)
  • 0

#1315 romeo1982

romeo1982

    biết lệnh mirror

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

Đã gửi 29 June 2010 - 10:04 AM

@romeo1982
1. Bạn không nên post 1 nội dung ở 3 topic khác nhau. Cái này là quy định của diễn đàn, bạn phải tuân thủ
2. Hoàn toàn có thể viết được Lisp theo yêu cầu của bạn nhưng cuối cùng Không biết Lisp của bạn sử dụng để làm gì nữa vì khi hoàn thành có biết bao nhiêu là tên Layer trong khi người dùng muốn quản lý các đối tượng theo Layer cho thật tốt?
[/quote]
Cám ơn bạn đã quan tâm đến mình, cái líp đó mình hiện rất là cần, mình dùng để chọn lọc thống kê trong các bản vẽ hiện trạng qui hoạch, rất mong tin của bạn
  • 0

#1316 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 29 June 2010 - 10:33 AM

Cám ơn bạn đã quan tâm đến mình, cái líp đó mình hiện rất là cần, mình dùng để chọn lọc thống kê trong các bản vẽ hiện trạng qui hoạch, rất mong tin của bạn

'romeo1982' sử dụng thử code này :
(defun c:ctla(/ ss ent i cont)
(setq ss (ssget '((0 . "TEXT"))) i -1)
(while (setq ent (ssname ss (setq i (1+ i)) ))
(if (not (tblsearch "LAYER" (setq cont (cdr(assoc 1 (entget ent)))) ))
(if (vl-cmdf "layer" "N" cont "")
(command "chprop" ent "" "Layer" cont "")
)
(command "chprop" ent "" "Layer" cont "")
)
)
(princ)
)

  • 1

#1317 romeo1982

romeo1982

    biết lệnh mirror

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

Đã gửi 29 June 2010 - 10:47 AM

Cám ơn bạn để mình tét thử.
Mình nhờ bạn 1 tí nữa, vấn đề là mình vẽ bản vẽ qui hoạch, những cái qui hoạch lớn mình thống kê hiện trạng rất là mệt.
mình có 1 file: http://www.mediafire...j1tmnvgneu.(xin lỗi cadviet ko hiểu vì sao mình ko upload được trên cadviet)
trong đó có 5 polyline khép kín, trong mỗi polyline có từ 1 đến 5 hình tròn, mình muốn xin 1 cái lip khi ra lệnh nó sẽ tự dò trong mỗi polyline nếu có 1 hình tròn thì tạo ra 1 layer mới đặt tên là 1T chẳng hạn và đưa vòng tròn đó và polyline về layer 1T, tương tự cho polyline có 2 hình tròn thì 2T, polyline có 3 hình tròn thì 3T,...........
Chú ý là file qui hoạch thường rất nặng và rất dễ bị treo.Xin cám ơn
  • 0

#1318 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1431 Bài viết
Điểm đánh giá: 1425 (rất tốt)

Đã gửi 29 June 2010 - 11:30 AM

'romeo1982' sử dụng thử code này :

(defun c:ctla(/ ss ent i cont)
(setq ss (ssget '((0 . "TEXT"))) i -1)
(while (setq ent (ssname ss (setq i (1+ i)) ))
(if (not (tblsearch "LAYER" (setq cont (cdr(assoc 1 (entget ent)))) ))
(if (vl-cmdf "layer" "N" cont "")
(command "chprop" ent "" "Layer" cont "")
)
(command "chprop" ent "" "Layer" cont "")
)
)
(princ)
)

Bạn chú ý kiểm tra thêm điều kiện tên Layer hợp lệ khi tạo mới Layer.
Hình đã gửi
  • 2

#1319 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 29 June 2010 - 11:38 AM

Cho mình hỏi, ví dụ mình có 10 pline đã được DIM kích thước bằng lệnh DIMALINGED, mình dùng lệnh DIMREASSOCIATE để gắn PLINE với DIM, mình phải ngồi làm từng DIM với từng PLINE, vậy cho mình hỏi có cách nào hay LISP nào mà khi mình quét chọn tất cả nó sẽ hiểu DIM đó là của PLINE đó ko (nghĩa là cái DIM đang đo cho PLINE nào thì sẽ gắn liền với cái PLINE đó)
Thanks các bạn rất nhiều!
  • 0

#1320 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 29 June 2010 - 01:59 PM

Bạn chú ý kiểm tra thêm điều kiện tên Layer hợp lệ khi tạo mới Layer.
Hình đã gửi

Cảm ơn anh gia_bach.
Đây là code mà Tue_NV viết thêm để kiểm tra thêm điều kiện tên Layer hợp lệ khi tạo mới Layer
(defun c:ctla(/ ss ent i cont)
  (setq ss (ssget '((0 . "TEXT"))) i -1)
  (while (setq ent (ssname ss (setq i (1+ i)) ))
    (if (snvalid (setq cont (cdr(assoc 1 (entget ent)))) )
(if (not (tblsearch "LAYER" cont ))
(if (vl-cmdf "layer" "N" cont "")
         (command "chprop" ent "" "Layer" cont "")
     )
               (command "chprop" ent "" "Layer" cont "")
)
    )
  )
(princ)
)

  • 1