- UID
- 18608
- 积分
- 2508
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-12-4
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2013-5-6 10:38:28
|
显示全部楼层
本帖最后由 Free-Lancer 于 2013-5-6 11:04 编辑
35 重新生成 Pline,[pcode=lisp,true](defun c:pll (/ ss sl e n i pts ptl el)
(if (setq ss (ssget '((0 . "*polyline"))))
(progn
(setq sl (sslength ss))
(while (> sl 0)
(setq e (ssname ss (setq sl (1- sl)))
n (vlax-curve-getendparam e)
i 0
el (entget e)
PTs NIL
)
(repeat (fix (1+ n))
(setq pts (cons (vlax-curve-getpointatparam e i) pts)
i (1+ i)
)
)
(entmake
(append (list '(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
(assoc 8 el)
(assoc 38 el)
(cons 90 (length pts))
'(43 . 0)
)
(mapcar '(lambda (x) (list 10 (car x) (cadr x))) pts)
)
)
(entdel e)
)
)
)
(princ)
)[/pcode]
还有一个[pcode=lisp,true](defun c:pll (/ ss sl e n i pts ptl)
(if (setq ss (ssget '((0 . "*polyline"))))
(progn
(setq sl (sslength ss))
(while (> sl 0)
(setq e (ssname ss (setq sl (1- sl)))
n (vlax-curve-getendparam e)
i 0
PTL NIL
)
(repeat (fix (1+ n))
(setq pts (cons (vlax-curve-getpointatparam e i) pts)
i (1+ i)
)
)
(while pts
(setq ptl (cons (car pts) ptl)
pts (cdddr pts)
)
)
(entmake
(append (list '(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
(assoc 38 (entget e))
(cons 90 (length ptl))
'(43 . 0)
'(62 . 1)
)
(mapcar '(lambda (x) (list 10 (car x) (cadr x))) ptl)
)
)
)
)
)
(princ)
)[/pcode]
还有一个,随手写的弊端,可能是不同情况吧[pcode=lisp,true](defun c:drpl (/ acad doc dwg pts ptl lay)
(setq acad (vlax-get-acad-object)
doc (vla-get-documents acad)
dwg (vla-item doc "dgx.dwg")
)
(vlax-for obj (vla-get-modelspace dwg)
(if (wcmatch (vla-get-objectname obj) "*Polyline")
(progn
(setq ptl nil)
(setq pts (safearray-value
(variant-value (vla-get-coordinates obj))
)
lay (vla-get-layer obj)
)
(while pts
(setq ptl (cons (list (car pts) (cadr pts)) ptl)
pts (cddr pts)
)
)
(setvar "clayer" lay)
(vl-cmdf ".pline")
(foreach x (reverse ptl)
(vl-cmdf x)
)
(vl-cmdf)
)
)
)
(princ)
)[/pcode]
又一个类似的[pcode=lisp,true](vl-load-com)
(defun c:tt (/ doc ms)
(setq doc (vla-get-activedocument (vlax-get-acad-object))
ms (vla-get-modelspace doc)
)
(vla-startundomark doc)
(vl-catch-all-apply
(function
(lambda (/ e el p ent pt i p1 p2 pl)
(while (and
(setq e (entsel "\nSelect Polyline: "))
(setq el (entget (car e)))
(= (cdr (assoc 0 el)) "LWPOLYLINE")
)
(setq p (cadr e)
ent (vlax-ename->vla-object (car e))
)
(setq pt (vlax-curve-getclosestpointto ent p)
i (fix (vlax-curve-getparamatpoint ent pt))
p1 (vlax-curve-getpointatparam ent i)
p2 (vlax-curve-getpointatparam ent (1+ i))
)
(vla-setbulge
(setq pl (vlax-invoke
ms
'addlightweightpolyline
(list (car p1) (cadr p1) (car p2) (cadr p2))
)
)
0
(vla-getbulge ent i)
)
(vla-put-color pl acGreen)
(vla-put-ConstantWidth pl 0.1)
)
)
)
nil
)
(vla-endundomark doc)
(princ)
)[/pcode]
|
|