 - ;闭合PL内单行文字数
- (defun c:bhplts (/ ent pst ss)
- (if (setq ent (car (entsel "\n选择闭合PL线")))
- (progn
- (sfdplxfw ent)
- (setq pst (get-pl-ptlst ent))
- (if (ssget "wp" pst)
- (if (setq ss (ssget "p" '((0 . "TEXT"))))
- (sslength ss);返回值,供net调用
- 0 ;返回值,供net调用
- )
- 0 ;返回值,供net调用
- )
- )
- )
- )
- ;获取PL线所有顶点坐标
- (defun get-pl-ptlst (plent / ptlst)
- (setq ptlst (vl-remove-if '(lambda (x) (/= 10 (car x)))(entget plent)))
- (mapcar 'cdr ptlst)
- )
- ;;缩放屏幕到pl线范围-子程序
- (defun sfdplxfw (e / l pmzb pst pt1 pt2 pt3 pt4 x x1 x2 xy y y1 y2)
- (setq pst (get-pl-ptlst e))
- (setq pmzb (qpmzb) ; 屏幕对角点坐标
- pt1 (car pmzb)
- pt2 (cadr pmzb)
- )
- (setq l 0
- x1 (car pt1)
- y1 (cadr pt1)
- x2 (car pt2)
- y2 (cadr pt2)
- )
- (repeat (length pst)
- (setq xy (nth l pst)
- x (car xy)
- y (cadr xy)
- )
- (cond
- ((< x x1)
- (setq x1 x)
- )
- ((< y y1)
- (setq y1 y)
- )
- ((> x x2)
- (setq x2 x)
- )
- ((> y y2)
- (setq y2 y)
- )
- )
- (setq l (1+ l))
- )
- (setq pt3 (list x1 y1)
- pt4 (list x2 y2)
- )
- (command "zoom" "w" pt3 pt4) ; 缩放屏幕到pl线范围
- )
随便改了下 试试 |