明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1887|回复: 8

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

[复制链接]
发表于 2014-11-6 17:18:17 | 显示全部楼层 |阅读模式
本帖最后由 spp_wall 于 2014-11-6 17:20 编辑

  1. (princ "\n*****欢迎使用FFF.LSP工具包!*****")
  2. (defun fff_make_dot (/ old_lay)
  3.   (if (= (tblobjname "block" "_DotSmall") nil)
  4.     (progn
  5.       (setq old_lay (getvar "clayer"))
  6.       (if (= (tblobjname "LAYER" "标注") nil)
  7.         (fff_make_layer "标注" 18 4 "CONTINUOUS")
  8.       )
  9.       (setvar "clayer" "标注")
  10.       (entmake (list '(0 . "BLOCK") '(2 . "_DotSmall") '(70 . 0)
  11.                      (cons 10 (list 0 0))
  12.                )
  13.       )
  14.       (entmake '((0 . "LWPOLYLINE") (100 . "AcDbEntity")
  15.                 (67 . 0)
  16.                 (8 . "0")
  17.                 (62 . 0)
  18.                 (6 . "ByBlock")
  19.                 (100 . "AcDbPolyline")
  20.                 (90 . 2)
  21.                 (70 . 1)
  22.                 (43 . 1)
  23.                 (38 . 0)
  24.                 (39 . 0)
  25.                 (10 -0.125 0)
  26.                 (40 . 1)
  27.                 (41 . 1)
  28.                 (42 . 1)
  29.                 (10 0.125 0)
  30.                 (40 . 1)
  31.                 (41 . 1)
  32.                 (42 . 1)
  33.                )
  34.       )
  35.       (entmake '((0 . "ENDBLK")))
  36.       (setvar "clayer" old_lay)
  37.     )
  38.   )
  39.   (princ)
  40. )

  41. (defun fff_make_line (p1 p2)
  42.   (entmake (list '(0 . "LINE") (cons 10 p1) (cons 11 p2)))
  43. )

  44. (defun fff_make_layer (layer_name line_width line_color line_type)
  45.   (entmake (list '(0 . "LAYER") '(100 . "AcDbSymbolTableRecord") '
  46.                  (100 . "AcDbLayerTableRecord") '(70 . 0) (cons 62
  47.                                                                 line_color
  48.                                                           ) (cons 370 line_width)
  49.                  (cons 6 line_type) (cons 2 layer_name)
  50.            )
  51.   )
  52. )

  53. (defun fff_make_arrow (b-re-make / old_lay)
  54.   (if (or (= (tblobjname "block" "arrow") nil) (= b-re-make 1))
  55.     (progn
  56.       (setq old_lay (getvar "clayer"))
  57.       (if (= (tblobjname "LAYER" "标注") nil)
  58.         (fff_make_layer "标注" 18 4 "CONTINUOUS")
  59.       )
  60.       (setvar "clayer" "标注")
  61.       (entmake (list '(0 . "BLOCK") '(2 . "ARROW") '(70 . 0) (cons 10
  62.                                                                    (list 0 0)
  63.                                                              )
  64.                )
  65.       )
  66.       (fff_make_line (list 0 0) (list -1 0))
  67.       (fff_make_line (list -1 0) (list -0.9 -0.16))
  68.       (fff_make_line (list -0.9 -0.16) (list 0 0))
  69.       (entmake '((0 . "HATCH") (100 . "AcDbEntity")
  70.                 (8 . "标注")
  71.                 (100 . "AcDbHatch")
  72.                 (10 0 0 0)
  73.                 (210 0 0 1)
  74.                 (2 . "SOLID")
  75.                 (70 . 1)
  76.                 (71 . 0)
  77.                 (91 . 1)
  78.                 (92 . 7)
  79.                 (72 . 0)
  80.                 (73 . 1)
  81.                 (93 . 3)
  82.                 (10 0 0 0)
  83.                 (10 -1 0 0)
  84.                 (10 -0.9 -0.16 0)
  85.                 (97 . 0)
  86.                 (75 . 0)
  87.                 (76 . 1)
  88.                 (47 . 0.001321003963012)
  89.                 (98 . 1)
  90.                 (10 -0.9 -0.1 0)
  91.                 (450 . 0)
  92.                 (451 . 0)
  93.                 (460 . 0)
  94.                 (461 . 0)
  95.                 (452 . 1)
  96.                 (462 . 1)
  97.                 (453 . 2)
  98.                 (463 . 0)
  99.                 (63 . 5)
  100.                 (421 . 255)
  101.                 (463 . 1)
  102.                 (63 . 51)
  103.                 (421 . 16777113)
  104.                 (470 . "LINEAR")
  105.                )
  106.       )
  107.       (entmake '((0 . "ENDBLK")))
  108.       (setvar "clayer" old_lay)
  109.     )
  110.   )
  111. )

  112. (defun fff_init (p1 p2 / dim-name ltsc Old_CMD VL VH cur_ver)
  113.   (setq Old_CMD (getvar "CMDECHO"))
  114.   (SetVar "EXPERT" 0)
  115.   (setvar "CMDECHO" 0)
  116.   (setq cur_ver (getvar "acadver"))
  117.   (if (= (tblobjname "style" "fsdb") nil)
  118.     (command "style" "fsdb" "fsdb_e.shx,fsdb.shx" "0" "0.75" "0" "n" "n")
  119.   )
  120.   (if (= (tblobjname "style" "KX-表头文字") nil)
  121.   (command "style" "KX-表头文字" "ygytxt.shx,HZTXT_qlt.shx " "7" "0.75" "0" "" ""  "");高度,比例,角度
  122.   )
  123.   (if (= (tblobjname "style" "KX-说明文字") nil)
  124.   (command "style" "KX-说明文字" "ygytxt.shx,HZTXT_qlt.shx " "5" "0.75" "0" "" ""  "");高度,比例,角度
  125.   )
  126.   (if (= (tblobjname "style" "KX-标注数字") nil)
  127.   (command "style" "KX-标注数字" "romand.shx,HZTXT_qlt.shx " "2.5" "0.75" "0" "" ""  "")
  128.   )
  129.   (if (= (tblobjname "style" "KX-图号") nil)
  130.   (command "style" "KX-图号" "romand.shx,HZTXT_qlt.shx " "4.5" "0.75" "0" "" ""  "")
  131.    )
  132.   (if (not (tblsearch "ltype" "CENTER"))
  133.     (command "-linetype" "load" "CENTER" "acad.lin" "")
  134.     (command "-linetype" "load" "CENTER" "acad.lin" "Y" "")
  135.   )
  136.   (if (not (tblsearch "ltype" "DASHED"))
  137.     (command "-linetype" "load" "DASHED" "acad.lin" "")
  138.     (command "-linetype" "load" "DASHED" "acad.lin" "Y" "")
  139.   )
  140.   (if (= (tblobjname "LAYER" "KX-钢筋") nil)
  141.     (fff_make_layer "KX-钢筋" 35 1 "CONTINUOUS")
  142.   )
  143.   (if (= (tblobjname "LAYER" "KX-结构线") nil)
  144.     (fff_make_layer "KX-结构线" 35 2 "CONTINUOUS")
  145.   )
  146.   (if (= (tblobjname "LAYER" "KX-结构细线") nil)
  147.     (fff_make_layer "KX-结构细线" 18 2 "CONTINUOUS")
  148.   )
  149.   (if (= (tblobjname "LAYER" "KX-中心线") nil)
  150.     (fff_make_layer "KX-中心线" 18 3 "CENTER")
  151.   )
  152.   (if (= (tblobjname "LAYER" "KX-标注") nil)
  153.     (fff_make_layer "KX-标注" 18 4 "CONTINUOUS")
  154.   )
  155.   (if (= (tblobjname "LAYER" "KX-标题线") nil)
  156.     (fff_make_layer "KX-标题线" 70 5 "CONTINUOUS")
  157.   )
  158.   (if (= (tblobjname "LAYER" "KX-虚线") nil)
  159.     (fff_make_layer "KX-虚线" 18 6 "DASHED")
  160.   )
  161.   (if (= (tblobjname "LAYER" "KX-其它") nil)
  162.     (fff_make_layer "KX-其它" 18 7 "CONTINUOUS")
  163.   )
  164.   (if (= (tblobjname "LAYER" "KX-文字") nil)
  165.     (fff_make_layer "KX-文字" 18 7 "CONTINUOUS")
  166.   )
  167.   (if (= (tblobjname "LAYER" "KX-隐藏") nil)
  168.     (fff_make_layer "KX-隐藏" 18 8 "CONTINUOUS")
  169.   )
  170.     (if (tblsearch "layer" "KX-推荐路线")"";输入选项 [?/生成(M)/设定(S)/新建(N)/开(ON)/关(OFF)/颜色(C)/线型(L)/线宽(LW)/材质(MAT)/打印(P)/冻结(F)/解冻(T)/锁定(LO)/解锁(U)/状态(A)]:
  171.       (command "-layer" "new" "KX-推荐路线" "color" "1" "KX-推荐路线" "lw" "0.7" "KX-推荐路线" "l" "continuous" "KX-推荐路线" "")
  172.    )



  173. (if (tblsearch "layer" "KX-行车道线")""
  174.       (command "-layer" "new" "KX-行车道线" "color" "5" "KX-行车道线" "lw" "0.15" "KX-行车道线" "l" "DASHEDX2" "KX-行车道线" "")
  175.    )
  176.   (fff_make_arrow 1)
  177.   (fff_make_dot)
  178.   (if (and
  179.         (/= p1 nil)
  180.         (/= p2 nil)
  181.       )
  182.     (progn
  183.       (command "_zoom" "w" p1 p2)
  184.       (setq HL (abs (- (car p1) (car p2))))
  185.       (setq VL (abs (- (cadr p1) (cadr p2))))
  186.       (if (< HL VL)
  187.         (setq VL HL)
  188.       )
  189.       (if (or
  190.             (= cur_ver "17.0s (LMS Tech)")
  191.             (= cur_ver "17.1s (LMS Tech)")
  192.           )
  193.         (progn
  194.           (setq ltsc (/ VL 74.25))
  195.           (if (= ltsc 0.0)
  196.             (setvar "LTSCALE" 4.0)
  197.             (setvar "LTSCALE" ltsc)
  198.           )
  199.         )
  200.       )
  201.       (if (or
  202.             (= cur_ver "16.0s (LMS Tech)")
  203.             (= cur_ver "16.1s (LMS Tech)")
  204.             (= cur_ver "16.2s (LMS Tech)")
  205.           )
  206.         (progn
  207.           (setq ltsc (/ VL 74.25))
  208.           (if (= ltsc 0.0)
  209.             (setvar "LTSCALE" 4.0)
  210.             (setvar "LTSCALE" ltsc)
  211.           )
  212.         )
  213.       )
  214.       (if (or
  215.             (= cur_ver "15.0s (LMS Tech)")
  216.             (= cur_ver "15.1s (LMS Tech)")
  217.             (= cur_ver "15.2s (LMS Tech)")
  218.           )
  219.         (progn
  220.           (setq ltsc (/ VL 74.25))
  221.           (if (= ltsc 0.0)
  222.             (setvar "LTSCALE" 4.0)
  223.             (setvar "LTSCALE" ltsc)
  224.           )
  225.         )
  226.       )
  227.       (setq dim-name (strcat "KX-" (rtos (/ VL 297.0) 2 4) "S"))
  228.       (setvar "dimadec" 1)
  229.       (setvar "dimalt" 0)
  230.       (setvar "dimaltz" 8)             ; 控制对换算单位标注值的消零处理
  231.       (setvar "DIMASSOC" 1)            ; 控制标注对象的关联性以及是否分解标?
  232.                                        ; ?
  233.       (setvar "dimasz" 2)              ; 控制尺寸线、引线箭头的大小
  234.       (setvar "dimatfit" 3)            ; 移动文字和箭头中较合适的一个
  235.       (setvar "dimaunit" 0)            ; 设置角度标注的单位格式
  236.       (setvar "dimazin" 2)             ; 对角度标注进行消零处理
  237.       (setvar "dimblk" "arrow")        ;
  238.       (setvar "dimblk1" "arrow")       ;
  239.       (setvar "dimblk2" "arrow")       ;
  240.       (setvar "dimldrblk" "arrow")     ;
  241.       (setvar "dimclrd" 0)             ;
  242.       (setvar "dimclre" 0)             ;
  243.       (setvar "dimclrt" 0)             ;
  244.       (setvar "dimdec" 1)              ;
  245.       (setvar "dimdli" 5)              ;
  246.       (setvar "dimdsep" ".")           ;
  247.       (setvar "dimexe" 1)              ;
  248.       (setvar "dimexo" 1)              ;
  249.       (setvar "dimgap" 0.5)            ;
  250.       (setvar "dimjust" 0)             ; 控制标注文字的水平位置
  251.       (setvar "dimlfac" 100)           ;
  252.       (setvar "dimlim" 0)              ;
  253.       (setvar "dimlunit" 2)            ;
  254.                                        ; (setvar "dimlwd" 1);
  255.                                        ; (setvar "dimlwe" 1);
  256.       (setvar "dimrnd" 0)
  257.       (setq ltsc (/ VL 297.0))
  258.       (setvar "dimscale" ltsc)         ;
  259.       (setvar "dimsd1" 0)              ;
  260.       (setvar "dimsd2" 0)              ;
  261.       (setvar "dimse1" 0)              ;
  262.       (setvar "dimse2" 0)              ;
  263.       (setvar "dimtad" 1)              ;
  264.       (setvar "dimtih" 0)              ;
  265.       (setvar "dimtix" 0)              ;
  266.       (setvar "dimtmove" 2)            ;
  267.       (setvar "dimtofl" 1)             ;
  268.       (setvar "dimtoh" 0)              ;
  269.       (setvar "dimtvp" 1)              ;
  270.       (setvar "dimtxsty" "KX-标注数字")       ;
  271.       (setvar "dimtxt" 2.5)
  272.       (setvar "dimupt" 0)
  273.       (setvar "dimzin" 8)
  274.       (if (or
  275.             (= cur_ver "17.0s (LMS Tech)")
  276.             (= cur_ver "17.1s (LMS Tech)")
  277.           )
  278.         (progn
  279.           (setvar "dimarcsym" 2)       ; 控制弧长标注中圆弧符号的显示
  280.           (setvar "dimfxl" 4)          ;
  281.           (setvar "dimfxlon" 1)        ;
  282.           (setvar "dimltype" "ByBlock") ;
  283.           (setvar "dimtfill" 0)        ;
  284.         )
  285.       )
  286.       (if (= (tblobjname "dimstyle" dim-name) nil)
  287.         (command "-dimstyle" "s" dim-name)
  288.         (command "-dimstyle" "s" dim-name "y")
  289.       )
  290.     )
  291.   )
  292.   (setvar "mirrtext" 0)
  293.   (setvar "lwunits" 1)
  294.   (setvar "insunits" 0)
  295.   (setvar "lunits" 2)
  296.   (setvar "aunits" 0)
  297.   (setvar "cmdecho" 0)
  298.   (setvar "chamfera" 0)
  299.   (setvar "chamferb" 0)
  300.   (setvar "luprec" 3)
  301.   (setvar "CMDECHO" Old_CMD)
  302.   (princ)
  303. )
  304. (defun C:init ()
  305.   (setq p1 (getpoint "\n请指定图框一角点:")
  306.         p2 (getcorner p1 "\n请指定图框对角点:")
  307.   )
  308.   (fff_init p1 p2)
  309. )
高手看看这个初始化程序,标注文字问题! 标注文字不管怎么改都是2.5
我试了改了 dimtxt 但是只是在特性显示改了 标注的文字大小还是2.5

也试了改了dimscale 全局比例  标注的文字大小也是一直是2.5
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-11-6 17:55:54 | 显示全部楼层
程序裡被寫死了
 楼主| 发表于 2014-11-6 18:07:50 | 显示全部楼层
lsjj 发表于 2014-11-6 17:55
程序裡被寫死了

我也觉得是!  但是不知道在那写死了
好像字高被锁定了!
发表于 2014-11-6 18:59:00 | 显示全部楼层
暈,搜尋dimtxt就知在那
发表于 2014-11-6 19:53:05 | 显示全部楼层
没细看,不过可以重点检查一下第 131、278 这两行
发表于 2014-11-6 20:48:40 | 显示全部楼层
如果DIMSCALE=1,则标注字高总是2.5
标注字高=DIMTXT*DIMSCALE
 楼主| 发表于 2014-11-6 21:24:37 | 显示全部楼层
ZZXXQQ 发表于 2014-11-6 20:48
如果DIMSCALE=1,则标注字高总是2.5
标注字高=DIMTXT*DIMSCALE

但是
命令: dimscale
输入 DIMSCALE 的新值 <0.664>: *取消*
命令: dimtxt
输入 DIMTXT 的新值 <2.500>: *取消*

标注的字高还是2.5

点评

標註的字高是2.5,但標註出來的字高不是2.5,還沒鑽出來嗎? 你先把程序中dimtxt拿掉再測吧  发表于 2014-11-6 22:06
 楼主| 发表于 2014-11-6 22:22:44 | 显示全部楼层
lsjj 发表于 2014-11-6 18:59
暈,搜尋dimtxt就知在那

把程序中dimtxt拿掉再測

文字高度依然是2.5
 楼主| 发表于 2014-11-6 22:26:53 | 显示全部楼层
vectra 发表于 2014-11-6 19:53
没细看,不过可以重点检查一下第 131、278 这两行

确实是  131把标注的字体写死成2.5了!谢谢解答
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-23 21:13 , Processed in 0.192021 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表