跳转到主要内容

test

test

(defun c:mp (/ DAT ENT EPS FILE H LST N OLDZIN PATH PT0 PT1 PT2 PTS SEL STR W BOX ENTS H0 MINPT W0 bStaggered w1 h1 name title)
  (setq sel (ssget '((0 . "LINE,*POLYLINE,SPLINE,CIRCLE,ARC,ELLIPSE,POINT"))))
  (if sel
    (progn
      (setq ents (PAT:sel->List sel))
      (setq box (PAT:GetBox ents))
      (setq w0 (mapcar '- (cadr box) (car box)))
      (setq h0 (cadr w0))
      (setq w0 (car w0))
      (setq minPt (car box))
      (setq pt0 (PAT:getPoint minPt w0 h0))
      (setq name (cadddr pt0))
      (setq bStaggered (last pt0))
      (setq w1 (cadr pt0))
      (setq h1 (caddr pt0))
      (if bStaggered
	(setq w w1 h (+ h1 h1))
	(setq w w1 h h1)
      )
      (setq pt0 (car pt0))
      (setq n 4)
      (setq eps (expt 0.1 n))
      (setq lst nil)
      (foreach ent ents
      	(setq pts (PAT:getSegments ent 32))
	(foreach p pts
	  (setq pt1 (car p))
	  (setq pt2 (cadr p))
	  (if (equal pt1 pt2)
	    (setq pt2 (mapcar '- pt1 pt0)
		  dat (list 0 (car pt2) (cadr pt2) 0 h 0 (- w))
	    )
	    (setq dat (PAT:getLineCluster pt0 pt1 pt2 w h eps))
	  )
	  (if bStaggered
	    (setq lst (PAT:GetStaggeredLines dat w1 h1 lst))
	    (setq lst (cons dat lst))
	  )
	)
      )
      
      (setq oldzin (getvar "dimzin"))
      (setvar "dimzin" 12)
      (setq path (getvar "DWGPREFIX"))
      (setq path (strcat path name ".pat"))
      (setq file (open path "w"))
      (setq title (strcat "*" name ", Made by Highflybird"))
      (write-line title file)
      (foreach e lst
        (setq str (PAT:GetRightString e 7))
	(write-line str file)
      )
      (close file)
      (setvar "dimzin" oldzin)
    )
  )
  (princ)
)

分类