;;中西文拆分 By Eachy
(defun yb:string_split (str / strlst strlst1 hz_str e_str)
(setq strlst (vl-string->list str)
strlst1 '()
)
(while strlst
(cond
((> (car strlst) 159)
(setq e_str nil)
(if hz_str
(setq hz_str (append (list (car strlst)) hz_str))
(setq hz_str (list (car strlst)))
)
(setq strlst (cdr strlst))
(if (or (< (car strlst) 159)
(= strlst "")
)
(if strlst1
(setq strlst1 (append strlst1 (list hz_str)))
(setq strlst1 (list hz_str))
)
)
)
((< (car strlst) 159)
(setq hz_str nil)
(if e_str
(setq e_str (append (list (car strlst)) e_str))
(setq e_str (list (car strlst)))
)
(setq strlst (cdr strlst))
(if (or (> (car strlst) 159)
(= strlst "")
)
(if strlst1
(setq strlst1 (append strlst1 (list e_str)))
(setq strlst1 (list e_str))
)
)
)
)
)
(mapcar 'vl-list->string (mapcar 'reverse strlst1))
)
返回多义线的所有端点
(SETQ pts (MAPCAR 'CDR (VL-REMOVE-IF '(LAMBDA (x) (/= 10 (CAR x))) (entget (car entsel)))))
;;;获取实体的中点.
(defun GetMiddlePoint ( ename / oname param CurveLen MidPt )
(setq
oname (vlax-ename->vla-object ename)
param (vlax-curve-getEndParam oname) ; End parameter
CurveLen (vlax-curve-getDistAtParam oname param)
param (vlax-curve-getParamAtDist oname (* 0.5 CurveLen))
MidPt (vlax-curve-getPointAtParam oname param)
)
(vlax-release-object oname)
MidPt
)
;;;获取实体的中点.
;|
(defun cmidp (ent)
(vlax-curve-getpointatparam
ent
(/ (vlax-curve-getendparam ent) 2.)
)
)
;;;获取实体的中点.
|;
(defun xdl-curve-midp (ent / p)
(if (not (vl-catch-all-error-p
(setq p (vl-catch-all-apply
'vlax-curve-getpointatparam
(list
ent
(vl-catch-all-apply
'/
(list (vl-catch-all-apply
'vlax-curve-getendparam
(list ent)
)
2.
)
)
)
)
)
)
)
p
)
p
)
判断一点是否在曲线段的指定距离内
(defun bein (pt a b / lst)
(setq lst (mapcar '(lambda(x)(vlax-curve-getparamatpoint obj x))(list a pt b)))
(or (apply '< lst)(apply '> lst))
)
posted on 2008-03-12 22:16
深藏记忆 阅读(310)
评论(0) 编辑 收藏 所属分类:
Vlisp之韵