spp_wall 发表于 2014-11-6 17:18:17

高手看看这个初始化程序,标注文字问题!

本帖最后由 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:54

程序裡被寫死了

spp_wall 发表于 2014-11-6 18:07:50

lsjj 发表于 2014-11-6 17:55 static/image/common/back.gif
程序裡被寫死了

我也觉得是!但是不知道在那写死了
好像字高被锁定了!

lsjj 发表于 2014-11-6 18:59:00

暈,搜尋dimtxt就知在那

vectra 发表于 2014-11-6 19:53:05

没细看,不过可以重点检查一下第 131、278 这两行

ZZXXQQ 发表于 2014-11-6 20:48:40

如果DIMSCALE=1,则标注字高总是2.5
标注字高=DIMTXT*DIMSCALE

spp_wall 发表于 2014-11-6 21:24:37

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

spp_wall 发表于 2014-11-6 22:22:44

lsjj 发表于 2014-11-6 18:59 static/image/common/back.gif
暈,搜尋dimtxt就知在那

把程序中dimtxt拿掉再測

文字高度依然是2.5

spp_wall 发表于 2014-11-6 22:26:53

vectra 发表于 2014-11-6 19:53 static/image/common/back.gif
没细看,不过可以重点检查一下第 131、278 这两行

确实是131把标注的字体写死成2.5了!谢谢解答
页: [1]
查看完整版本: 高手看看这个初始化程序,标注文字问题!