定义一牛函数点偏移offset_point- (defun offset_point(pt x y x-ang / pt1 pt2 )
- ;Designed by 林霄云 2014年4月20日
- ;点偏移。x y 平移量,x-ang 基准线弧度
- (setq pt1 (polar pt x-ang x))
- (setq pt2 (polar pt1 (+ x-ang (* 0.5 pi)) y))
- pt2
- )
然后get_textbox函数修改如下,变得更具有可读性。- (defun get_textbox ( en / ang-self ang en ent pt0-ll pt0-tr pt-ins pt-2 pt-3 pt-4 box-tr box-length box-height pt-list x y )
- ;Designed by 林霄云 2014年4月20日
- ;获取文本四角点 Get TextBox ,坐下点起逆时针
- (setq ent (entget en))
- (setq pt-ins (cdr (assoc 10 ent))) ;第一对齐点(在 OCS 中)插入点(非UCS下坐标点)
- (setq ang (cdr (assoc 50 ent))) ;a 文字旋转角度 弧度
-
- (setq pt-list (textbox ent)) ;取虚拟框
- (setq pt0-ll (car pt-list)) ;取左下点
- (setq pt0-tr (cadr pt-list)) ;取右上点
- (setq box-tr (mapcar '(lambda (x y) (+ x y)) pt0-ll pt0-tr)) ;取对应原点的右上点。
- (setq box-length (car box-tr))
- (setq box-height (cadr box-tr))
- (setq pt-2 (offset_point pt-ins box-length 0 ang)
- pt-4 (offset_point pt-ins 0 box-height ang)
- pt-3 (offset_point pt-ins box-length box-height ang))
- ;(command "line" (trans pt-ins 0 1) (trans pt-2 0 1) (trans pt-3 0 1) (trans pt-4 0 1 ) "c") ;trans pt 0 1 wcs 转 ucs ,测试文本外框代码
- (list pt-ins pt-2 pt-3 pt-4) ;逆时针顺序,即polar函数规定的正方向
- );defun
|