Đến nội dung


Hình ảnh
- - - - -

Nối đỉnh các đường line thành polyline


  • Please log in to reply
2 replies to this topic

#1 hokudai

hokudai

    biết zoom

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

Đã gửi 24 March 2014 - 01:26 PM

Chào cả nhà,

Mình có rất nhiều đoạn line. Giúp mình tạo lisp để nối đỉnh tất cả những đoạn line (như đường màu đỏ trong hình minh họa). 

Mình cám ơn!1v0f.png


  • 0

#2 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 24 March 2014 - 03:15 PM

Chào cả nhà,

Mình có rất nhiều đoạn line. Giúp mình tạo lisp để nối đỉnh tất cả những đoạn line (như đường màu đỏ trong hình minh họa). 

Mình cám ơn!1v0f.png

Hy vọng đúng ý chủ thớt.

(defun c:plj(/ lst st end ss)
  ;; By : Gia_Bach 2014
  (vl-load-com)
  (if (and(setq ss (ssget (list (cons 0 "LINE") )) )
	  (> (sslength ss) 1))
    (progn
      (foreach obj (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))	
	(if (< (cadr (setq st (vlax-curve-getStartPoint obj)))(cadr (setq end (vlax-curve-getEndPoint obj))))
	  (setq lst (cons (list (car end)(cadr end))lst))
	  (setq lst (cons (list (car st)(cadr st))lst))) )
      (setq lst (apply 'append (vl-sort lst '(lambda(x y) (< (car x) (car y))))))
      (vla-addLightweightpolyline
	(vla-get-modelspace (vla-get-ActiveDocument (vlax-get-Acad-Object)))
	(vlax-make-variant(vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 (1- (length lst)))) lst))) ))
  (princ))

  • 1

#3 hokudai

hokudai

    biết zoom

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

Đã gửi 24 March 2014 - 03:42 PM

Đây đúng là cái mình cần, Cám ơn bạn nhiều


  • 0