VLA方法能否获取多行文字的行间距?
如题,怎么获得多行文字的行间距并进行操作?取得多行文字对象的相对行间距系数。
语法及参数
(vla-get-LineSpacingFactor Object)
ObjectMText
这个属性适用的对象。
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)
)
liuhe 发表于 2022-8-22 13:30
取得多行文字对象的相对行间距系数。
语法及参数
谢谢,问题解决。
还有一个问题,当块中属性是多行文字时,却怎么也找不到LineSpacingFactor这个参数,怎么更改块中多行文字属性的行间距呢? wharan 发表于 2022-8-22 17:49
谢谢,问题解决。
还有一个问题,当块中属性是多行文字时,却怎么也找不到LineSpacingFactor这个参数, ...
大哥你都04年就开始玩lisp,我才玩了两个月多点:L,我会的极其少。我给你提供给思路,先分解块,读取数据,再恢复块
页:
[1]