Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Nguyen Hoanh

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

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

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

ctnchia.jpg

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

  • Vote tăng 4

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

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

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!

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

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 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.com/upfiles/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

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

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 ơ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.com/upfiles/2/dim_2.dwg

Cảm ơn bạn rất nhiều!

Thanks a lot!

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 ơ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.com/upfiles/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)  )

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

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 ơ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

ctnchia.jpg

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:

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
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)  )

  • 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

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:

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

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)

)

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

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)

)

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

@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?

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

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 ơ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)
)

  • 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

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.com/?nj1tmnvgneu.(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

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
'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.

invalidchar.jpg

  • 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

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!

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ạn chú ý kiểm tra thêm điều kiện tên Layer hợp lệ khi tạo mới Layer.

invalidchar.jpg

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)
)

  • 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

oh, lip rất hay, làm công việc của mình nhẹ đi phần nào, thật cám ơn.

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.com/?nj1tmnvgneu.(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

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ác bạn cho mình hỏi tại sao nhập sl1 là số lẻ thì nó ra đúng sl1 còn nếu sl1 là chẵn thì nó chỉ ra sl/2. Cảm ơn các bạn!

http://www.cadviet.com/upfiles/2/tadiman893.lsp

 

--------------------------------------------------------------------------------------------------

(defun c:tron()

(setq A (getpoint "\n Chon diem thu nhat :"))

(setq B (getpoint A"\n Chon diem thu hai :"))

(setq O (list (/ (+ (car A) (Car :cheers:) 2) (/ (+ (cadr A) (cadr :s_big:) 2)))

(command ".line" A B "")

(setq sl1 (getstring 5"\n Nhap so luong duong kinh trong duong tron :"))

(command ".array" "last" "" "p" O sl1 "" "")

)

 

---------------------------------------------------------------------------------------------------

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
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!

Nhờ các bạn giúp dùm mình vớ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
oh, lip rất hay, làm công việc của mình nhẹ đi phần nào, thật cám ơn.

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.com/?nj1tmnvgneu.(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

Mong các cao thủ giúp đỡ sớm ,cám ơ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
Khách
Chủ đề này bây giờ đã bị đóng lại để trả lời thêm.

×