高手看看这个初始化程序,标注文字问题!
本帖最后由 spp_wall 于 2014-11-6 17:20 编辑(princ "\n*****欢迎使用FFF.LSP工具包!*****")
(defun fff_make_dot (/ old_lay)
(if (= (tblobjname "block" "_DotSmall") nil)
(progn
(setq old_lay (getvar "clayer"))
(if (= (tblobjname "LAYER" "标注") nil)
(fff_make_layer "标注" 18 4 "CONTINUOUS")
)
(setvar "clayer" "标注")
(entmake (list '(0 . "BLOCK") '(2 . "_DotSmall") '(70 . 0)
(cons 10 (list 0 0))
)
)
(entmake '((0 . "LWPOLYLINE") (100 . "AcDbEntity")
(67 . 0)
(8 . "0")
(62 . 0)
(6 . "ByBlock")
(100 . "AcDbPolyline")
(90 . 2)
(70 . 1)
(43 . 1)
(38 . 0)
(39 . 0)
(10 -0.125 0)
(40 . 1)
(41 . 1)
(42 . 1)
(10 0.125 0)
(40 . 1)
(41 . 1)
(42 . 1)
)
)
(entmake '((0 . "ENDBLK")))
(setvar "clayer" old_lay)
)
)
(princ)
)
(defun fff_make_line (p1 p2)
(entmake (list '(0 . "LINE") (cons 10 p1) (cons 11 p2)))
)
(defun fff_make_layer (layer_name line_width line_color line_type)
(entmake (list '(0 . "LAYER") '(100 . "AcDbSymbolTableRecord") '
(100 . "AcDbLayerTableRecord") '(70 . 0) (cons 62
line_color
) (cons 370 line_width)
(cons 6 line_type) (cons 2 layer_name)
)
)
)
(defun fff_make_arrow (b-re-make / old_lay)
(if (or (= (tblobjname "block" "arrow") nil) (= b-re-make 1))
(progn
(setq old_lay (getvar "clayer"))
(if (= (tblobjname "LAYER" "标注") nil)
(fff_make_layer "标注" 18 4 "CONTINUOUS")
)
(setvar "clayer" "标注")
(entmake (list '(0 . "BLOCK") '(2 . "ARROW") '(70 . 0) (cons 10
(list 0 0)
)
)
)
(fff_make_line (list 0 0) (list -1 0))
(fff_make_line (list -1 0) (list -0.9 -0.16))
(fff_make_line (list -0.9 -0.16) (list 0 0))
(entmake '((0 . "HATCH") (100 . "AcDbEntity")
(8 . "标注")
(100 . "AcDbHatch")
(10 0 0 0)
(210 0 0 1)
(2 . "SOLID")
(70 . 1)
(71 . 0)
(91 . 1)
(92 . 7)
(72 . 0)
(73 . 1)
(93 . 3)
(10 0 0 0)
(10 -1 0 0)
(10 -0.9 -0.16 0)
(97 . 0)
(75 . 0)
(76 . 1)
(47 . 0.001321003963012)
(98 . 1)
(10 -0.9 -0.1 0)
(450 . 0)
(451 . 0)
(460 . 0)
(461 . 0)
(452 . 1)
(462 . 1)
(453 . 2)
(463 . 0)
(63 . 5)
(421 . 255)
(463 . 1)
(63 . 51)
(421 . 16777113)
(470 . "LINEAR")
)
)
(entmake '((0 . "ENDBLK")))
(setvar "clayer" old_lay)
)
)
)
(defun fff_init (p1 p2 / dim-name ltsc Old_CMD VL VH cur_ver)
(setq Old_CMD (getvar "CMDECHO"))
(SetVar "EXPERT" 0)
(setvar "CMDECHO" 0)
(setq cur_ver (getvar "acadver"))
(if (= (tblobjname "style" "fsdb") nil)
(command "style" "fsdb" "fsdb_e.shx,fsdb.shx" "0" "0.75" "0" "n" "n")
)
(if (= (tblobjname "style" "KX-表头文字") nil)
(command "style" "KX-表头文字" "ygytxt.shx,HZTXT_qlt.shx " "7" "0.75" "0" "" """");高度,比例,角度
)
(if (= (tblobjname "style" "KX-说明文字") nil)
(command "style" "KX-说明文字" "ygytxt.shx,HZTXT_qlt.shx " "5" "0.75" "0" "" """");高度,比例,角度
)
(if (= (tblobjname "style" "KX-标注数字") nil)
(command "style" "KX-标注数字" "romand.shx,HZTXT_qlt.shx " "2.5" "0.75" "0" "" """")
)
(if (= (tblobjname "style" "KX-图号") nil)
(command "style" "KX-图号" "romand.shx,HZTXT_qlt.shx " "4.5" "0.75" "0" "" """")
)
(if (not (tblsearch "ltype" "CENTER"))
(command "-linetype" "load" "CENTER" "acad.lin" "")
(command "-linetype" "load" "CENTER" "acad.lin" "Y" "")
)
(if (not (tblsearch "ltype" "DASHED"))
(command "-linetype" "load" "DASHED" "acad.lin" "")
(command "-linetype" "load" "DASHED" "acad.lin" "Y" "")
)
(if (= (tblobjname "LAYER" "KX-钢筋") nil)
(fff_make_layer "KX-钢筋" 35 1 "CONTINUOUS")
)
(if (= (tblobjname "LAYER" "KX-结构线") nil)
(fff_make_layer "KX-结构线" 35 2 "CONTINUOUS")
)
(if (= (tblobjname "LAYER" "KX-结构细线") nil)
(fff_make_layer "KX-结构细线" 18 2 "CONTINUOUS")
)
(if (= (tblobjname "LAYER" "KX-中心线") nil)
(fff_make_layer "KX-中心线" 18 3 "CENTER")
)
(if (= (tblobjname "LAYER" "KX-标注") nil)
(fff_make_layer "KX-标注" 18 4 "CONTINUOUS")
)
(if (= (tblobjname "LAYER" "KX-标题线") nil)
(fff_make_layer "KX-标题线" 70 5 "CONTINUOUS")
)
(if (= (tblobjname "LAYER" "KX-虚线") nil)
(fff_make_layer "KX-虚线" 18 6 "DASHED")
)
(if (= (tblobjname "LAYER" "KX-其它") nil)
(fff_make_layer "KX-其它" 18 7 "CONTINUOUS")
)
(if (= (tblobjname "LAYER" "KX-文字") nil)
(fff_make_layer "KX-文字" 18 7 "CONTINUOUS")
)
(if (= (tblobjname "LAYER" "KX-隐藏") nil)
(fff_make_layer "KX-隐藏" 18 8 "CONTINUOUS")
)
(if (tblsearch "layer" "KX-推荐路线")"";输入选项 [?/生成(M)/设定(S)/新建(N)/开(ON)/关(OFF)/颜色(C)/线型(L)/线宽(LW)/材质(MAT)/打印(P)/冻结(F)/解冻(T)/锁定(LO)/解锁(U)/状态(A)]:
(command "-layer" "new" "KX-推荐路线" "color" "1" "KX-推荐路线" "lw" "0.7" "KX-推荐路线" "l" "continuous" "KX-推荐路线" "")
)
(if (tblsearch "layer" "KX-行车道线")""
(command "-layer" "new" "KX-行车道线" "color" "5" "KX-行车道线" "lw" "0.15" "KX-行车道线" "l" "DASHEDX2" "KX-行车道线" "")
)
(fff_make_arrow 1)
(fff_make_dot)
(if (and
(/= p1 nil)
(/= p2 nil)
)
(progn
(command "_zoom" "w" p1 p2)
(setq HL (abs (- (car p1) (car p2))))
(setq VL (abs (- (cadr p1) (cadr p2))))
(if (< HL VL)
(setq VL HL)
)
(if (or
(= cur_ver "17.0s (LMS Tech)")
(= cur_ver "17.1s (LMS Tech)")
)
(progn
(setq ltsc (/ VL 74.25))
(if (= ltsc 0.0)
(setvar "LTSCALE" 4.0)
(setvar "LTSCALE" ltsc)
)
)
)
(if (or
(= cur_ver "16.0s (LMS Tech)")
(= cur_ver "16.1s (LMS Tech)")
(= cur_ver "16.2s (LMS Tech)")
)
(progn
(setq ltsc (/ VL 74.25))
(if (= ltsc 0.0)
(setvar "LTSCALE" 4.0)
(setvar "LTSCALE" ltsc)
)
)
)
(if (or
(= cur_ver "15.0s (LMS Tech)")
(= cur_ver "15.1s (LMS Tech)")
(= cur_ver "15.2s (LMS Tech)")
)
(progn
(setq ltsc (/ VL 74.25))
(if (= ltsc 0.0)
(setvar "LTSCALE" 4.0)
(setvar "LTSCALE" ltsc)
)
)
)
(setq dim-name (strcat "KX-" (rtos (/ VL 297.0) 2 4) "S"))
(setvar "dimadec" 1)
(setvar "dimalt" 0)
(setvar "dimaltz" 8) ; 控制对换算单位标注值的消零处理
(setvar "DIMASSOC" 1) ; 控制标注对象的关联性以及是否分解标?
; ?
(setvar "dimasz" 2) ; 控制尺寸线、引线箭头的大小
(setvar "dimatfit" 3) ; 移动文字和箭头中较合适的一个
(setvar "dimaunit" 0) ; 设置角度标注的单位格式
(setvar "dimazin" 2) ; 对角度标注进行消零处理
(setvar "dimblk" "arrow") ;
(setvar "dimblk1" "arrow") ;
(setvar "dimblk2" "arrow") ;
(setvar "dimldrblk" "arrow") ;
(setvar "dimclrd" 0) ;
(setvar "dimclre" 0) ;
(setvar "dimclrt" 0) ;
(setvar "dimdec" 1) ;
(setvar "dimdli" 5) ;
(setvar "dimdsep" ".") ;
(setvar "dimexe" 1) ;
(setvar "dimexo" 1) ;
(setvar "dimgap" 0.5) ;
(setvar "dimjust" 0) ; 控制标注文字的水平位置
(setvar "dimlfac" 100) ;
(setvar "dimlim" 0) ;
(setvar "dimlunit" 2) ;
; (setvar "dimlwd" 1);
; (setvar "dimlwe" 1);
(setvar "dimrnd" 0)
(setq ltsc (/ VL 297.0))
(setvar "dimscale" ltsc) ;
(setvar "dimsd1" 0) ;
(setvar "dimsd2" 0) ;
(setvar "dimse1" 0) ;
(setvar "dimse2" 0) ;
(setvar "dimtad" 1) ;
(setvar "dimtih" 0) ;
(setvar "dimtix" 0) ;
(setvar "dimtmove" 2) ;
(setvar "dimtofl" 1) ;
(setvar "dimtoh" 0) ;
(setvar "dimtvp" 1) ;
(setvar "dimtxsty" "KX-标注数字") ;
(setvar "dimtxt" 2.5)
(setvar "dimupt" 0)
(setvar "dimzin" 8)
(if (or
(= cur_ver "17.0s (LMS Tech)")
(= cur_ver "17.1s (LMS Tech)")
)
(progn
(setvar "dimarcsym" 2) ; 控制弧长标注中圆弧符号的显示
(setvar "dimfxl" 4) ;
(setvar "dimfxlon" 1) ;
(setvar "dimltype" "ByBlock") ;
(setvar "dimtfill" 0) ;
)
)
(if (= (tblobjname "dimstyle" dim-name) nil)
(command "-dimstyle" "s" dim-name)
(command "-dimstyle" "s" dim-name "y")
)
)
)
(setvar "mirrtext" 0)
(setvar "lwunits" 1)
(setvar "insunits" 0)
(setvar "lunits" 2)
(setvar "aunits" 0)
(setvar "cmdecho" 0)
(setvar "chamfera" 0)
(setvar "chamferb" 0)
(setvar "luprec" 3)
(setvar "CMDECHO" Old_CMD)
(princ)
)
(defun C:init ()
(setq p1 (getpoint "\n请指定图框一角点:")
p2 (getcorner p1 "\n请指定图框对角点:")
)
(fff_init p1 p2)
)高手看看这个初始化程序,标注文字问题! 标注文字不管怎么改都是2.5
我试了改了 dimtxt 但是只是在特性显示改了 标注的文字大小还是2.5
也试了改了dimscale 全局比例标注的文字大小也是一直是2.5 程序裡被寫死了 lsjj 发表于 2014-11-6 17:55 static/image/common/back.gif
程序裡被寫死了
我也觉得是!但是不知道在那写死了
好像字高被锁定了! 暈,搜尋dimtxt就知在那 没细看,不过可以重点检查一下第 131、278 这两行 如果DIMSCALE=1,则标注字高总是2.5
标注字高=DIMTXT*DIMSCALE ZZXXQQ 发表于 2014-11-6 20:48 static/image/common/back.gif
如果DIMSCALE=1,则标注字高总是2.5
标注字高=DIMTXT*DIMSCALE
但是
命令: dimscale
输入 DIMSCALE 的新值 <0.664>: *取消*
命令: dimtxt
输入 DIMTXT 的新值 <2.500>: *取消*
标注的字高还是2.5 lsjj 发表于 2014-11-6 18:59 static/image/common/back.gif
暈,搜尋dimtxt就知在那
把程序中dimtxt拿掉再測
文字高度依然是2.5 vectra 发表于 2014-11-6 19:53 static/image/common/back.gif
没细看,不过可以重点检查一下第 131、278 这两行
确实是131把标注的字体写死成2.5了!谢谢解答
页:
[1]