本帖最后由 xiaobao02 于 2012-11-16 15:51 编辑
问题已找到,困扰了我好多天!主要原因为坐标标注组码14和11是关联的,要动就要一起变更!更新如下,程序运行OK,如有更好方法,欢迎留贴,谢谢!
- (defun c:dj(/ ds1)
- (princ "\n***标注对齐***")
- (sta)
- (setq ds1 (ssget '((0 . "DIMENSION"))))
-
- ;分类统计X,Y,-x,-y对齐的点
-
- (setq djls11 '())
- (setq djls21 '())
- (setq djls31 '())
- (setq djls41 '())
-
- (setq n 0)
- (repeat (sslength ds1)
- (setq dp11 (cdr (assoc 11 (entget (ssname ds1 n))))) ;标注文字中间点
- (setq dp14 (cdr (assoc 14 (entget (ssname ds1 n))))) ;标注文字边上点
- (setq dan1 (angle dp14 dp11)) ;标注朝向
- (cond
- ((equal dan1 0 0.05) (setq djls11 (cons (car dp14) djls11)))
- ((equal dan1 (* pi 0.5) 0.05) (setq djls21 (cons (cadr dp14) djls21)))
- ((equal dan1 pi 0.05) (setq djls31 (cons (car dp14) djls31)))
- ((equal dan1 (* pi 1.5) 0.05) (setq djls41 (cons (cadr dp14) djls41)))
- )
- (setq dp11 nil dp14 nil dan1 nil)
- (setq n (1+ n))
- )
- (setq djav1 (apply 'min djls11)) ;X
- (setq djav2 (apply 'min djls21)) ;y
- (setq djav3 (apply 'min djls31)) ;-X
- (setq djav4 (apply 'min djls41)) ;-y
- (setq dp11 nil dp14 nil dan1 nil)
- (setq djls11 nil djls21 nil djls31 nil djls41 nil)
- ;根据X,Y,-x,-y的值,重组并更新
- (command "ucs" "w")
-
- (setvar 'osmode 0)
- (setq n 0)
- (repeat (sslength ds1)
- (setq e (ssname ds1 n))
- (setq e1 (entget e))
- (setq dp11 (cdr (assoc 11 e1))) ;标注文字中间点
- (setq dp14 (cdr (assoc 14 e1))) ;标注文字边上点
- (setq dan1 (angle dp14 dp11)) ;标注朝向
- (setq dpa11 (distance dp11 dp14)) ;组码11和14相对距离
-
-
- (cond
- ((equal dan1 0 0.05)
- (setq e1 (subst (cons 14 (list djav1 (cadr dp14) 0)) (assoc 14 e1) e1))
- (setq e1 (subst (cons 11 (polar (list djav1 (cadr dp14) 0) 0 dpa11)) (assoc 11 e1) e1)))
- ((equal dan1 (* pi 0.5) 0.05)
- (setq e1 (subst (cons 14 (list (car dp14) djav2 0)) (assoc 14 e1) e1))
- (setq e1 (subst (cons 11 (polar (list (car dp14) djav2 0) (* pi 0.5) dpa11)) (assoc 11 e1) e1)))
- ((equal dan1 pi 0.05)
- (setq e1 (subst (cons 14 (list djav3 (cadr dp14) 0)) (assoc 14 e1) e1))
- (setq e1 (subst (cons 11 (polar (list djav3 (cadr dp14) 0) pi dpa11)) (assoc 11 e1) e1)))
- ((equal dan1 (* pi 1.5) 0.05)
- (setq e1 (subst (cons 14 (list (car dp14) djav4 0)) (assoc 14 e1) e1))
- (setq e1 (subst (cons 11 (polar (list (car dp14) djav4 0) (* pi 1.5) dpa11)) (assoc 11 e1) e1)))
- )
- (entmod e1)
- (setq dp11 nil dp14 nil dan1 nil dpa11 nil)
- (setq n (1+ n))
- )
- (entupd e)
- (setq djav1 nil djav2 nil djav3 nil djav4 nil)
- (end)
- (princ)
- )
|