乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 63|回复: 11

[编程交流] 控制文本大小

[复制链接]

24

主题

135

帖子

111

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-5 23:47:01 | 显示全部楼层 |阅读模式
大家好!
我正在使用李·麦克先生的优秀代码。
我需要帮助对代码进行一些修改。
我想控制文本大小。该代码没有任何选项。
 
有人能帮我吗?
 
提前感谢
 
  1. ;;-------------------=={ Areas 2 Field }==--------------------;;
  2. ;;                                                            ;;
  3. ;;  Creates an MText object containing a Field Expression     ;;
  4. ;;  referencing the area, or sum of areas, of one or more     ;;
  5. ;;  selected objects.                                         ;;
  6. ;;------------------------------------------------------------;;
  7. ;;  Author: Lee Mac, Copyright © 2013 - www.lee-mac.com       ;;
  8. ;;------------------------------------------------------------;;
  9. ;;  Version 1.2    -    26-05-2013                            ;;
  10. ;;------------------------------------------------------------;;
  11. (defun c:a2f ( / *error* fmt inc ins lst sel str )
  12.    (setq fmt "%lu6%qf1%ds44%th46") ;; Field Formatting
  13.    (defun *error* ( msg )
  14.        (LM:endundo (LM:acdoc))
  15.        (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
  16.            (princ (strcat "\nError: " msg))
  17.        )
  18.        (princ)
  19.    )
  20.    (if
  21.        (and
  22.            (setq sel (ssget '((0 . "ARC,CIRCLE,ELLIPSE,HATCH,*POLYLINE,REGION,SPLINE"))))
  23.            (setq ins (getpoint "\nPick Point for Field: "))
  24.        )
  25.        (progn
  26.            (if (= 1 (sslength sel))
  27.                (setq str
  28.                    (strcat
  29.                        "%<\\AcObjProp Object(%<\\_ObjId "
  30.                        (LM:ObjectID (vlax-ename->vla-object (ssname sel 0)))
  31.                        ">%).Area \\f "" fmt "">%"
  32.                    )
  33.                )
  34.                (progn
  35.                    (repeat (setq inc (sslength sel))
  36.                        (setq lst
  37.                            (vl-list*
  38.                                "%<\\AcObjProp Object(%<\\_ObjId "
  39.                                (LM:ObjectID (vlax-ename->vla-object (ssname sel (setq inc (1- inc)))))
  40.                                ">%).Area>%" " + "
  41.                                lst
  42.                            )
  43.                        )
  44.                    )
  45.                    (setq str
  46.                        (strcat
  47.                            "%<\\AcExpr "
  48.                            (apply 'strcat (reverse (cdr (reverse lst))))
  49.                            " \\f "" fmt "">%"
  50.                        )
  51.                    )
  52.                )
  53.            )
  54.            (LM:startundo (LM:acdoc))
  55.            (vla-addmtext
  56.                (vlax-get-property (LM:acdoc) (if (= 1 (getvar 'cvport)) 'paperspace 'modelspace))
  57.                (vlax-3D-point (trans ins 1 0))
  58.                0.0
  59.                str
  60.            )
  61.            (LM:endundo (LM:acdoc))
  62.        )
  63.    )
  64.    (princ)
  65. )
  66. ;; ObjectID  -  Lee Mac
  67. ;; Returns a string containing the ObjectID of a supplied VLA-Object
  68. ;; Compatible with 32-bit & 64-bit systems
  69. (defun LM:ObjectID ( obj )
  70.    (eval
  71.        (list 'defun 'LM:ObjectID '( obj )
  72.            (if
  73.                (and
  74.                    (vl-string-search "64" (getenv "PROCESSOR_ARCHITECTURE"))
  75.                    (vlax-method-applicable-p (vla-get-utility (LM:acdoc)) 'getobjectidstring)
  76.                )
  77.                (list 'vla-getobjectidstring (vla-get-utility (LM:acdoc)) 'obj ':vlax-false)
  78.               '(itoa (vla-get-objectid obj))
  79.            )
  80.        )
  81.    )
  82.    (LM:ObjectID obj)
  83. )
  84. ;; Start Undo  -  Lee Mac
  85. ;; Opens an Undo Group.
  86. (defun LM:startundo ( doc )
  87.    (LM:endundo doc)
  88.    (vla-startundomark doc)
  89. )
  90. ;; End Undo  -  Lee Mac
  91. ;; Closes an Undo Group.
  92. (defun LM:endundo ( doc )
  93.    (while (= 8 (logand 8 (getvar 'undoctl)))
  94.        (vla-endundomark doc)
  95.    )
  96. )
  97. ;; Active Document  -  Lee Mac
  98. ;; Returns the VLA Active Document Object
  99. (defun LM:acdoc nil
  100.    (eval (list 'defun 'LM:acdoc 'nil (vla-get-activedocument (vlax-get-acad-object))))
  101.    (LM:acdoc)
  102. )
  103. (vl-load-com) (princ)
  104. ;;------------------------------------------------------------;;
  105. ;;                        End of File                         ;;
  106. ;;------------------------------------------------------------;;
回复

使用道具 举报

6

主题

62

帖子

57

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 23:54:28 | 显示全部楼层
你好
 
如果你读李的页面
 
http://www.lee-mac.com/fieldformat.html
 
 
您将看到如何更改文本大小。
回复

使用道具 举报

6

主题

62

帖子

57

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 23:59:49 | 显示全部楼层
你好
 
请阅读Lee的说明页了解此LISP。
 
而且
 
(setq fmt“%lu6%qf1%ds44%th46”);;字段格式
 
如果我记得th指的是文字高度。我相信李会证实的。
回复

使用道具 举报

24

主题

135

帖子

111

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 00:07:24 | 显示全部楼层
你好,Spaj,
谢谢你的快速回放
 
我在考虑是否可能为文本大小创建一个输入,而不是在代码内部修改。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:09:28 | 显示全部楼层
嗨,Madruga,
 
由于程序正在创建多行文字字段,因此文字高度将由运行程序时TEXTSIZE系统变量的值确定。
 
然而,这里有一个快速修改,包括一个额外的高度提示:
  1. ;;-------------------=={ Areas 2 Field }==--------------------;;
  2. ;;                                                            ;;
  3. ;;  Creates an MText object containing a Field Expression     ;;
  4. ;;  referencing the area, or sum of areas, of one or more     ;;
  5. ;;  selected objects.                                         ;;
  6. ;;------------------------------------------------------------;;
  7. ;;  Author: Lee Mac, Copyright © 2013 - www.lee-mac.com       ;;
  8. ;;------------------------------------------------------------;;
  9. ;;  Version 1.2    -    26-05-2013                            ;;
  10. ;;------------------------------------------------------------;;
  11. ;; Modified to prompt for text height  -  Lee Mac 2013-12-18
  12. (defun c:a2f ( / *error* fmt hgt inc ins lst sel str )
  13.    (setq fmt "%lu6%qf1%ds44%th46") ;; Field Formatting
  14.    (defun *error* ( msg )
  15.        (LM:endundo (LM:acdoc))
  16.        (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
  17.            (princ (strcat "\nError: " msg))
  18.        )
  19.        (princ)
  20.    )
  21.    ;; <Modified>
  22.    (initget 6)
  23.    (if (setq hgt (getdist (strcat "\nSpecify text height <" (rtos (getvar 'textsize)) ">: ")))
  24.        (setvar 'textsize hgt)
  25.        (setq hgt (getvar 'textsize))
  26.    )
  27.    ;; </Modified>
  28.    (if
  29.        (and
  30.            (setq sel (ssget '((0 . "ARC,CIRCLE,ELLIPSE,HATCH,*POLYLINE,REGION,SPLINE"))))
  31.            (setq ins (getpoint "\nPick Point for Field: "))
  32.        )
  33.        (progn
  34.            (if (= 1 (sslength sel))
  35.                (setq str
  36.                    (strcat
  37.                        "%<\\AcObjProp Object(%<\\_ObjId "
  38.                        (LM:ObjectID (vlax-ename->vla-object (ssname sel 0)))
  39.                        ">%).Area \\f "" fmt "">%"
  40.                    )
  41.                )
  42.                (progn
  43.                    (repeat (setq inc (sslength sel))
  44.                        (setq lst
  45.                            (vl-list*
  46.                                "%<\\AcObjProp Object(%<\\_ObjId "
  47.                                (LM:ObjectID (vlax-ename->vla-object (ssname sel (setq inc (1- inc)))))
  48.                                ">%).Area>%" " + "
  49.                                lst
  50.                            )
  51.                        )
  52.                    )
  53.                    (setq str
  54.                        (strcat
  55.                            "%<\\AcExpr "
  56.                            (apply 'strcat (reverse (cdr (reverse lst))))
  57.                            " \\f "" fmt "">%"
  58.                        )
  59.                    )
  60.                )
  61.            )
  62.            (LM:startundo (LM:acdoc))
  63.            (vla-put-height ;; mod
  64.                (vla-addmtext
  65.                    (vlax-get-property (LM:acdoc) (if (= 1 (getvar 'cvport)) 'paperspace 'modelspace))
  66.                    (vlax-3D-point (trans ins 1 0))
  67.                    0.0
  68.                    str
  69.                )
  70.                hgt ;; mod
  71.            ) ;; mod
  72.            (LM:endundo (LM:acdoc))
  73.        )
  74.    )
  75.    (princ)
  76. )
  77. ;; ObjectID  -  Lee Mac
  78. ;; Returns a string containing the ObjectID of a supplied VLA-Object
  79. ;; Compatible with 32-bit & 64-bit systems
  80. (defun LM:ObjectID ( obj )
  81.    (eval
  82.        (list 'defun 'LM:ObjectID '( obj )
  83.            (if
  84.                (and
  85.                    (vl-string-search "64" (getenv "PROCESSOR_ARCHITECTURE"))
  86.                    (vlax-method-applicable-p (vla-get-utility (LM:acdoc)) 'getobjectidstring)
  87.                )
  88.                (list 'vla-getobjectidstring (vla-get-utility (LM:acdoc)) 'obj ':vlax-false)
  89.               '(itoa (vla-get-objectid obj))
  90.            )
  91.        )
  92.    )
  93.    (LM:ObjectID obj)
  94. )
  95. ;; Start Undo  -  Lee Mac
  96. ;; Opens an Undo Group.
  97. (defun LM:startundo ( doc )
  98.    (LM:endundo doc)
  99.    (vla-startundomark doc)
  100. )
  101. ;; End Undo  -  Lee Mac
  102. ;; Closes an Undo Group.
  103. (defun LM:endundo ( doc )
  104.    (while (= 8 (logand 8 (getvar 'undoctl)))
  105.        (vla-endundomark doc)
  106.    )
  107. )
  108. ;; Active Document  -  Lee Mac
  109. ;; Returns the VLA Active Document Object
  110. (defun LM:acdoc nil
  111.    (eval (list 'defun 'LM:acdoc 'nil (vla-get-activedocument (vlax-get-acad-object))))
  112.    (LM:acdoc)
  113. )
  114. (vl-load-com) (princ)

 
@Spaj,感谢您的回复和建议,非常感谢。
回复

使用道具 举报

24

主题

135

帖子

111

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 00:17:35 | 显示全部楼层
哇!
非常感谢李先生,
 
修改改进了代码。让它变得更好!
 
当做
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:22:05 | 显示全部楼层
太好了-不客气,Madruga,很乐意帮忙
回复

使用道具 举报

24

主题

135

帖子

111

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 00:28:36 | 显示全部楼层
大家好,
我怎么能把文本区域只设为2个十进制单位?
 
我想了解代码的哪一部分可以做到这一点。
有人能教我吗?
 
顺致敬意,
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 00:32:05 | 显示全部楼层
 
将LUPREC系统变量更改为所需的变量
回复

使用道具 举报

24

主题

135

帖子

111

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 00:40:38 | 显示全部楼层
感谢Tharwat的快速回放,
 
我想把它放在代码中。我的意思是一直是2个十进制单位
因为我知道如何通过LUPREC进行更改,但今天我忘记了更改,我绘制了错误的文本。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 21:14 , Processed in 1.428975 second(s), 83 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表