Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
vanhuyou

Nhờ sửa lisp dim polyline

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

Chào mọi người mình tìm được 1 lisp dim polyline nhưng muốn chỉnh lại theo nhu cầu của mình, khi dùng các phân đoạn arc trong polyline sẽ được dim theo 2 điểm đầu và cuối, nhờ mọi người sữa giúp mình để các phân đoạn arc đó dùng dimarc để dim. Cám ơn mọi người.

image.thumb.png.50f4ae7b53ff60cfb1fcde6416c251a8.png

dpl.dwg

DPL_Automatic Dimension Pline.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
1 giờ} trướ}c, vanhuyou đã nói:

 

+Góp ý : Diễn đàn có tính năng tìm kiếm, bạn có thể dùng nó được mà ?

Không phải vấn đề nào bạn cũng đưa lên diễn đàn, mà bạn hãy tìm kiếm 1 thời gian trước khi đặt ra câu hỏi lê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
36 phút trước, Danh Cong đã nói:

 

+Góp ý : Diễn đàn có tính năng tìm kiếm, bạn có thể dùng nó được mà ?

Không phải vấn đề nào bạn cũng đưa lên diễn đàn, mà bạn hãy tìm kiếm 1 thời gian trước khi đặt ra câu hỏi lên diễn đàn.

 

 

 

Cám ơn bạn mình có xem nhưng lisp đó phải pick điểm đặt cho dim và phải làm từng pline 1.

Nhờ mọi người sữa giúp mình là điểm đặt dim tự động ở điểm đầu hoặc điểm cuối củng được, và có thể quét 1 lần nhiều pline.

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, vanhuyou đã nói:

Cám ơn bạn mình có xem nhưng lisp đó phải pick điểm đặt cho dim và phải làm từng pline 1.

Nhờ mọi người sữa giúp mình là điểm đặt dim tự động ở điểm đầu hoặc điểm cuối củng được, và có thể quét 1 lần nhiều pline.

Mình thấy lisp ở trong bài @Danh Conggợi ý cũng đáp ứng yêu cầu ở trên của bạn rồi. chỉ cần set lại vị trí điểm đặt =0 nữa là ok.

Bạn nên vào bài trên đó yêu cầu thêm. 

 

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, vanhuyou đã nói:

Chào mọi người mình tìm được 1 lisp dim polyline nhưng muốn chỉnh lại theo nhu cầu của mình, khi dùng các phân đoạn arc trong polyline sẽ được dim theo 2 điểm đầu và cuối, nhờ mọi người sữa giúp mình để các phân đoạn arc đó dùng dimarc để dim. Cám ơn mọi người.

image.thumb.png.50f4ae7b53ff60cfb1fcde6416c251a8.png

dpl.dwg

DPL_Automatic Dimension Pline.lsp

Bạn thử Lisp này.

chú ý chọn Dim_style trước khi chạy lệnh nhé.

(defun c:dimpl(/ doc ep i mp obj oldosn pllst plset sp spc)
  (defun LM:BulgeCenter ( p1 p2 b )
    (polar p1
	   (+ (angle p1 p2) (- (/ pi 2) (* 2 (atan b))))
	   (/ (* (distance p1 p2) (1+ (* b b))) 4 b)    ))
  
  (princ "\n<<< Select LwPolyline for dimensioning >>> ")
  (setq doc (vla-get-activedocument (vlax-get-acad-object))
        spc (vlax-get doc (if (eq (getvar 'CVPORT) 1)
			    'Paperspace
			    'Modelspace	    )	    )  )
  
  (if(setq plSet(ssget '((0 . "LWPOLYLINE"))))
    (progn
      (setq pLlst(vl-remove-if 'listp(mapcar 'cadr(ssnamex plSet)))
	    oldOsn (getvar "OSMODE"))
      (setvar "OSMODE" 0)
      (foreach pl pLlst
	(setq obj (vlax-ename->vla-object pl)
	      i 0)
	(Repeat (fix (vlax-curve-getEndParam obj))
	  (setq sp (vlax-curve-getpointatparam obj i)
		ep (vlax-curve-getpointatparam obj (1+ i))
		mp (vlax-curve-getpointatparam obj (+ i 0.5)))
	  (if (= 0 (vla-GetBulge obj i))
	    (vla-AddDimAligned spc
	      (vlax-3d-point sp) (vlax-3d-point ep) (vlax-3d-point mp))
	    (vla-AddDimArc spc
	      (vlax-3d-point (LM:BulgeCenter sp ep (vla-GetBulge obj i)))
	      (vlax-3d-point sp) (vlax-3d-point ep) (vlax-3d-point mp))
	    );if
	  (setq i (1+ i))
	  ); Repeat
	); end foreach
      (setvar "OSMODE" oldOsn)
      ); end progn
    ); end if
  (princ)
  ); end of defun

 

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

Bạn thử Lisp này.

chú ý chọn Dim_style trước khi chạy lệnh nhé.


(defun c:dimpl(/ doc ep i mp obj oldosn pllst plset sp spc)
  (defun LM:BulgeCenter ( p1 p2 b )
    (polar p1
	   (+ (angle p1 p2) (- (/ pi 2) (* 2 (atan b))))
	   (/ (* (distance p1 p2) (1+ (* b b))) 4 b)    ))
  
  (princ "\n<<< Select LwPolyline for dimensioning >>> ")
  (setq doc (vla-get-activedocument (vlax-get-acad-object))
        spc (vlax-get doc (if (eq (getvar 'CVPORT) 1)
			    'Paperspace
			    'Modelspace	    )	    )  )
  
  (if(setq plSet(ssget '((0 . "LWPOLYLINE"))))
    (progn
      (setq pLlst(vl-remove-if 'listp(mapcar 'cadr(ssnamex plSet)))
	    oldOsn (getvar "OSMODE"))
      (setvar "OSMODE" 0)
      (foreach pl pLlst
	(setq obj (vlax-ename->vla-object pl)
	      i 0)
	(Repeat (fix (vlax-curve-getEndParam obj))
	  (setq sp (vlax-curve-getpointatparam obj i)
		ep (vlax-curve-getpointatparam obj (1+ i))
		mp (vlax-curve-getpointatparam obj (+ i 0.5)))
	  (if (= 0 (vla-GetBulge obj i))
	    (vla-AddDimAligned spc
	      (vlax-3d-point sp) (vlax-3d-point ep) (vlax-3d-point mp))
	    (vla-AddDimArc spc
	      (vlax-3d-point (LM:BulgeCenter sp ep (vla-GetBulge obj i)))
	      (vlax-3d-point sp) (vlax-3d-point ep) (vlax-3d-point mp))
	    );if
	  (setq i (1+ i))
	  ); Repeat
	); end foreach
      (setvar "OSMODE" oldOsn)
      ); end progn
    ); end if
  (princ)
  ); end of defun

 

Cám ơn bạn, đúng ý mình rồ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

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
Đăng nhập để thực hiện theo  

×