本帖最后由 自贡黄明儒 于 2013-11-23 10:59 编辑
感谢大家帮助
;;编组开始;(command "_.undo" "be")
(defun _StartUndo (*DOC*)
(_EndUndo *DOC*)
(vla-StartUndoMark *DOC*)
)
;;结束编组;(if (= 8 (logand (getvar "undoctl") 8)) (command "_.undo" "_e"))
(defun _EndUndo (*DOC*)
(if (= 8 (logand 8 (getvar 'UNDOCTL)))
(vla-EndUndoMark *DOC*)
)
)[code="lisp]
;;中心标记CenterMark By 自贡黄明儒 2013年11月9日***********************************
(defun C:CM (/ *MSP* CIRC CLAYER1 CMDECHO1 E1EN E1ST E2EN E2ST ELLI EN1 EN2 FIL FILTERLST LIN LWP N P0 REG SS VARTXTLST X Y)
;;0 错误处理
(defun *error* (msg)
(setvar "cmdecho" cmdecho1)
(setvar "clayer" clayer1)
(vl-bt)
(if *DOC*
(_EndUndo *DOC*) ;块内图元增减
)
(while (not (equal (getvar "cmdnames") "")) (command nil))
(princ "\n 出错啦!")
(princ)
)
;;1 两点之中点
(defun mid (p1 p2 / X Y)
(mapcar '(lambda (X Y) (/ (+ X Y) 2.0)) p1 p2)
)
;;2.1 从选择集中分离出特定选择集
(defun wmg-ssgetp (ss filter)
(vl-cmdf "_.select" ss "")
(ssget "p" filter)
)
;;2.2 分离选择集
;; (optimizeCode ss vartxtlst filterlst)
(defun optimizeCode (ss vartxtlst filterlst)
(mapcar (function (lambda (x y) (set x (wmg-ssgetp ss y))))
(mapcar 'read vartxtlst)
filterlst
)
)
;;3 面域质心
(defun HH:REGION (en / CEN LL LST OBJ R UR)
(setq obj (vlax-ename->vla-object en))
(setq cen (vlax-safearray->list (vlax-variant-value (vla-get-Centroid obj))))
<