明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1036|回复: 3

[提问] VLA方法能否获取多行文字的行间距?

[复制链接]
发表于 2022-8-22 13:13:18 | 显示全部楼层 |阅读模式
如题,怎么获得多行文字的行间距并进行操作?
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-8-22 13:30:23 | 显示全部楼层
取得多行文字对象的相对行间距系数。

语法及参数

(vla-get-LineSpacingFactor Object)
Object  MText
  这个属性适用的对象。
LineSpacingFactor 双精度;读/写
  多行文字对象的相对行间距系数,输入一个0.25到4(含0.25与4)之间的值。







说明
    间距系数是某行文字的基准线到下一行文字的基准线的垂直距离。
    间距系数设定为单行文字的倍数。
    可以使用LineSpacingFactor属性,将行间距设成“至少”是指定的距离或“完全”是指定的距离。


范例

新窗口拷贝打印?
;;;从二代龙震工作室汉化帮助中提取  
;;;本源代码由 xshrimp 2013.2.20 搜集整理,版权归原作者所有!  
  
  (defun Example_LineSpacingFactor()  
  ;;; 这个范例在模型空间建立一个MText 对象  
  ;;; 接着找出对象的 LineSpacingFactor  
  (VL-LOAD-COM)  
  (setq AcadObject(vlax-get-acad-object)  
  AcadDocument(vla-get-ActiveDocument Acadobject)  
  mSpace(vla-get-ModelSpace Acaddocument)  
)  
  (setq corner1(vlax-make-safearray vlax-vbDouble '(0 . 2)))  
  (vlax-safearray-fill corner1 '(0 10 0))  
  (setq width 10)  
  (setq textString "这是多行对象的文字字符串。")  
  ;;; 建立多行文字对象  
  (setq MTextObj(vla-AddMText mSpace corner1 width textString))  
  (vla-ZoomExtents AcadObject)  
  ;;; 找出当前的 LineSpacingFactor  
  (setq currFactor(vla-get-LineSpacingFactor MTextObj))  
  (princ (STRCAT " MText对象的 LineSpacingFactor 是: " (RTOS currFactor) "\n"))  
  (PROMPT "<ENTER>进行:")(VL-CMDF pause)  
  ;;; 改变 LineSpacingFactor  
  (vla-put-LineSpacingFactor MTextObj 4)  
  (setq newFactor(vla-get-LineSpacingFactor MTextObj))  
  (princ (STRCAT " MText对象的新 LineSpacingFactor 是: " (RTOS newFactor) "\n"))  
  (PROMPT "<ENTER>进行:")(VL-CMDF pause)  
  ;;; 重设为 LineSpacingFactor  
  (vla-put-LineSpacingFactor MTextObj currFactor)  
  (princ (STRCAT " MText对象的 LineSpacingFactor 已经重设为: " (RTOS currFactor)))  
  (princ)  
)  

;;;从二代龙震工作室汉化帮助中提取
;;;本源代码由 xshrimp 2013.2.20 搜集整理,版权归原作者所有!

  (defun Example_LineSpacingFactor()
  ;;; 这个范例在模型空间建立一个MText 对象
  ;;; 接着找出对象的 LineSpacingFactor
  (VL-LOAD-COM)
  (setq AcadObject(vlax-get-acad-object)
  AcadDocument(vla-get-ActiveDocument Acadobject)
  mSpace(vla-get-ModelSpace Acaddocument)
)
  (setq corner1(vlax-make-safearray vlax-vbDouble '(0 . 2)))
  (vlax-safearray-fill corner1 '(0 10 0))
  (setq width 10)
  (setq textString "这是多行对象的文字字符串。")
  ;;; 建立多行文字对象
  (setq MTextObj(vla-AddMText mSpace corner1 width textString))
  (vla-ZoomExtents AcadObject)
  ;;; 找出当前的 LineSpacingFactor
  (setq currFactor(vla-get-LineSpacingFactor MTextObj))
  (princ (STRCAT " MText对象的 LineSpacingFactor 是: " (RTOS currFactor) "\n"))
  (PROMPT "进行:")(VL-CMDF pause)
  ;;; 改变 LineSpacingFactor
  (vla-put-LineSpacingFactor MTextObj 4)
  (setq newFactor(vla-get-LineSpacingFactor MTextObj))
  (princ (STRCAT " MText对象的新 LineSpacingFactor 是: " (RTOS newFactor) "\n"))
  (PROMPT "进行:")(VL-CMDF pause)
  ;;; 重设为 LineSpacingFactor
  (vla-put-LineSpacingFactor MTextObj currFactor)
  (princ (STRCAT " MText对象的 LineSpacingFactor 已经重设为: " (RTOS currFactor)))
  (princ)
)


评分

参与人数 1明经币 +1 收起 理由
USER2128 + 1 赞一个!

查看全部评分

 楼主| 发表于 2022-8-22 17:49:12 | 显示全部楼层
liuhe 发表于 2022-8-22 13:30
取得多行文字对象的相对行间距系数。

语法及参数

谢谢,问题解决。
还有一个问题,当块中属性是多行文字时,却怎么也找不到LineSpacingFactor这个参数,怎么更改块中多行文字属性的行间距呢?
发表于 2022-8-23 08:37:23 | 显示全部楼层
wharan 发表于 2022-8-22 17:49
谢谢,问题解决。
还有一个问题,当块中属性是多行文字时,却怎么也找不到LineSpacingFactor这个参数, ...

大哥  你都04年就开始玩lisp  ,我才玩了两个月多点,我会的极其少。我给你提供给思路,先分解块,读取数据,再恢复块
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-15 16:55 , Processed in 0.186230 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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