ygrzz发表于2007-2-1 22:45:00 (IF (= TY \"AcDbDiametricDimension\")ZZXXQQ斑竹,你就干脆作个对线性标注的判断,如果是一般线性标注直接加\"M\"可以不  - (DEFUN C:TEST ()
- (SETVAR "CMDECHO" 0)
- (PROMPT "\nSelect Dimension(s) :")
- (IF (SETQ SS (SSGET '((0 . "DIMENSION")))) (PROGN
- (SETQ I -1)
- (REPEAT (SSLENGTH SS)
- (SETQ ENT (ENTGET (SSNAME SS (SETQ I (1+ I))))
- TY (CDR (ASSOC 100 (REVERSE ENT))))
- (COND
- ((= TY "AcDbDiametricDimension")
- (SETQ D (DISTANCE (CDR (ASSOC 10 ENT)) (CDR (ASSOC 15 ENT)))
- DTX (STRCAT "M" (RTOS D 2 3))
- TX (CDR (ASSOC 1 ENT)))
- (IF (OR (= TX "") (= TX "<>"))
- (SETQ ENT (SUBST (CONS 1 DTX) (ASSOC 1 ENT) ENT))
- (SETQ ENT (SUBST (CONS 1 (STRCAT "M" TX)) (ASSOC 1 ENT) ENT))
- )
- (ENTMOD ENT)
- )
- ((= TY "AcDbAlignedDimension")
- (SETQ TX (CDR (ASSOC 1 ENT)))
- (IF (OR (= TX "") (= TX "<>"))
- (SETQ ENT (SUBST (CONS 1 "M<>") (ASSOC 1 ENT) ENT))
- (SETQ ENT (SUBST (CONS 1 (STRCAT "M" TX)) (ASSOC 1 ENT) ENT))
- )
- (ENTMOD ENT)
- )
- )
- )
- ))
- (SETVAR "CMDECHO" 1)
- (PRINC)
- )
|