之前看到过以块内以某条直线水平转正的LSP,现在翻了二天还没找到。
有知道的朋友给个链接好吗?谢谢了
本帖最后由 Gu_xl 于 2015-2-13 16:39 编辑
需加载XLRX_API!
(defun c:tt ()
(while (setq e (nentselp))
(if (> (length e) 2)
(progn
(setq pt (trans (cadr e) 1 0)
m (caddr e) ;_ 转换矩阵
invM (XLRX-Mat-Inverse m) ;_ 逆矩阵
e1 (car e) ;_ 选择的子对象
e (last (last e)) ;_ 选择的图块
;;m0 (XLRX-Mat-blockTransform2Def e) ;_ 图块引用->图块定义转换矩阵
;;m1 (XLRX-Mat-blockTransform2Ref e) ;_ 图块定义->图块引用转换矩阵
)
(if (member (xlrx-get e1 "isA")
'("AcDbLine" "AcDbPolyline"
"AcDb2dPolyline" "AcDb3dPolyline"
"AcDbCircle" "AcDbArc"
"AcDbEllipse" "AcDbSpline"
)
)
(progn
(setq pt (XLRX-Mat-MxP invM pt)) ;_ 点转换到块定义
(setq pt (xlrx-Curve-getClosestPointTo e1 pt))
(setq vec (xlrx-Curve-getFirstDeriv e1 pt)
pt1 (mapcar '+ pt vec)
)
(setq pt(XLRX-Mat-MxP m pt)
pt1 (XLRX-Mat-MxP m pt1)
)
(setq ang (angle pt pt1))
(cond ((>= (/ pi 2) ang 0) (setq ang (- ang)))
((>= (* pi 1.5) ang (/ pi 2)) (setq ang (- pi ang)))
((>= (* pi 2) ang (* pi 1.5)) (setq ang (- (* pi 2) ang))
)
)
(setq m (XLRX-Mat-Rotation pt ang)) ;_ 构建旋转矩阵
(XLRX-TRANSFORMBY e m)
)
)
)
)
)
) 感谢G版,新年好,回去试试 G版没有2015的吗
页:
[1]