应朋友要求解决建筑图纸以毫米表示,但朋友在使用建筑图纸都需要缩小1000倍后来做图,一但炸开缩小1000的建筑块,就是满屏标注的问题。
写得不好,效应能用。
 - (defun c:rDimMeter ( / dimstlst)
- (setvar 'cmdecho 0)
- (setq dimstlst (get-dimstyles)) ;标注样式名集
- (while dimstlst
- (rDimstl (car dimstlst))
- (setq dimstlst (cdr dimstlst))
- )
- (princ "\n 已将所有文字高度大于100的标注样式缩小了1000倍")
- (princ)
- )
- (defun get-dimstyles ( / dimsts dimst1 dimstname)
- (if (null vlax-dump-object) (vl-load-com) )
- (setq dimsts (vla-get-dimstyles (vla-get-activedocument (vlax-get-acad-object))))
- (setq dimst1 '())
- (vlax-for dimstname dimsts
- (setq dimst1 (cons (vla-get-name dimstname) dimst1))
- )
- (reverse dimst1)
- )
- (defun rDimstl (dimstyleName / )
- (SetDimStyle dimstyleName)
- (if (> (getvar 'dimtxt) 100)
- (progn
- (setvar 'dimasz (/ (getvar 'dimasz) 1000)) ;箭头大小=2.5
- (setvar 'dimexe (/ (getvar 'dimexe) 1000)) ; 超出尺寸线=1.25
- (setvar 'dimexo (/ (getvar 'dimexo) 1000)) ;起点偏移量
- (setvar 'dimgap (/ (getvar 'dimgap) 1000)) ;从尺寸线偏移=0.625
- (setvar 'dimtxt (/ (getvar 'dimtxt) 1000)) ;;;;文字高度
- (if (> (getvar 'dimdl1) 1.0)
- (setvar 'dimdl1 (/ (getvar 'dimdl1) 1000)) ;;基线间距
- )
- (if (> (getvar 'dimcen) 1.0)
- (setvar 'dimcen (/ (getvar 'dimcen) 1000)) ;;圆心标记大小
- )
- (vl-cmdf "dimstyle" "S" dimstyleName "y")
- ))
- )
- (defun SetDimStyle (dimstlname / AcadObject AcadDocument mSpace dimStyleSel newDimStyle)
- (setq AcadObject (vlax-get-acad-object)
- AcadDocument (vla-get-ActiveDocument AcadObject)
- mSpace (vla-get-ModelSpace AcadDocument)
- )
- (setq dimStyleSel (vla-get-DimStyles AcadDocument))
- (setq newDimStyle (vla-add dimStyleSel dimstlname))
- (vla-put-ActiveDimStyle AcadDocument newDimStyle)
- )
|