本帖最后由 ljpnb 于 2011-7-28 08:09 编辑
更新对象用直接修改DXF数据效率高,这里提供了另一种"拉伸"的方式来实现
- (defun c:tt ()
- (setq en (entsel "\n选择一线性标注:"))
- (setq ent (car en)
- dxf (entget ent)
- pt (cadr en)
- )
- (setq p1 (cdr (assoc 10 dxf))
- p3 (cdr (assoc 13 dxf))
- p4 (cdr (assoc 14 dxf))
- len (cdr (assoc 42 dxf))
- txt (cdr (assoc 1 dxf))
- )
- (setq len0 (getreal (strcat "\n当前尺寸的实际值为<"
- (rtos len)
- ">,请输入新的尺寸值:"
- )
- )
- )
- (if (/= txt "")
- (progn
- (setq dxf (subst (cons 1 "") (assoc 1 dxf) dxf))
- (entmod dxf)
- )
- )
- (setq ang (angle p4 p1))
- (cond ((= ang (* pi 0.5)) (setq ang1 0))
- ((= ang pi) (setq ang1 (* pi 0.5)))
- (T (setq ang1 (angle p3 p4)))
- )
- (setq l (- len0 len))
- (setq os (getvar "osmode"))
- (setvar "osmode" 0)
- (setvar "cmdecho" 0)
- (if (< (distance pt p4) (distance pt p3))
- (progn
- (setq p44 (polar p4 ang1 l))
- (command "stretch" "c" p4 p4 "" p4 p44)
- )
- (progn
- (setq p33 (polar p3 (+ ang1 pi) l))
- (command "stretch" "c" p3 p3 "" p3 p33)
- )
- )
- (setvar "osmode" os)
- (setvar "cmdecho" 1)
- (princ)
- )
|