马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
转贴一个尺寸标注的断开的程序请大家试用:
- ;;DBREAK - dimension line break utility. by W.Kramer
- (defun C:DBREAK ( / EN P1 P2 ENL ENB ELB NMB ELT ENT)
- (if (DBREAK0) (progn
- (DBREAK1)
- (if (null
- (entmake (list
- '(0 . "BLOCK")
- (assoc 2 ELT)
- (assoc 10 ELT)
- '(70 . 1)
- ))) (progn
- (prompt "\nRedefine failed!")
- (exit) ;;force exit of routine
- ))
- (while ENT
- (setq ELT (entget ENT))
- (if (not (eq ENL ENT))
- (entmake ELT)
- (DBREAK2)
- )
- (setq ENT (entnext ENT))
- )
- (if (entmake '((0 . "ENDBLK")))
- (prompt "\nBlock modified")
- (prompt "\nBLOCK END failure!")
- )
- (entupd ENB)
- )
- (prompt "\nInvalid input")
- )
- (princ)
- )
- (defun DBREAK0 ( / EL)
- (setq EN
- (nentsel
- "\nSelect dimension line to break: "))
- (if EN (progn
- (setq EL (entget (car EN))
- P1 (cadr EN))
- (if (and (= (cdr (assoc 0 EL)) "LINE")
- (> (length EN) 2))
- (setq P2
- (getpoint
- (cadr EN)
- "\nOther side of break: "))
- (prompt "\nLine was not selected!")
- )
- ))
- (if (and P1 P2)
- (setq P1 (osnap (cadr EN) "NEA")
- P2 (osnap P2 "NEA")
- ))
- (if (and P1 P2) 'T nil))
- (defun DBREAK1 ()
- (setq
- ENL (car EN)
- ENB (car (last EN))
- ELB (entget ENB)
- NMB (cdr (assoc 2 ELB))
- ELT (tblsearch "BLOCK" NMB)
- ENT (cdr (assoc -2 ELT))
- )
- )
- (defun DBREAK2 ( / LYR PP1 PP2 PA PB)
- (setq PP1 (cdr (assoc 10 ELT))
- PP2 (cdr (assoc 11 ELT))
- LYR (cdr (assoc 8 ELT)) )
- (if (< (distance PP1 P1)
- (distance PP1 P2))
- (setq PA P1
- PB P2)
- (setq PA P2
- PB P1) )
- (LINE PP1 PA Lyr 1)
- (LINE PB PP2 Lyr 1))
- (defun LINE (P1 P2 Lyr BlkFlg)
- (entmake (list
- '(0 . "LINE")
- (cons 6 (if BlkFlg "BYBLOCK" "BYLAYER"))
- (if LYR
- (cons 8 LYR)
- (getvar "CLAYER"))
- (cons 10 P1) (cons 11 P2)
- (cons 62 (if BlkFlg 0 256))))
- )
|