test
test
highflybird
- 登录 发表评论
(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)
)