wimal 发表于 2022-7-5 15:13:21

文本长度

我们能用lisp语言找出文本的长度吗。

dlanorh 发表于 2022-7-5 15:25:02

是的,可以使用边界框方法。它将为您提供左下角和右上角坐标,然后您需要计算长度和高度。如果是旋转0、90、180或270,则简单,对于任何其他旋转,则稍微困难一些。

wimal 发表于 2022-7-5 15:27:48

 
我不知道边界盒方法。Pl.解释

BIGAL 发表于 2022-7-5 15:34:10

试试这个
 

(setq util (vla-get-utility
                  (vla-get-activedocument
                     (vlax-get-acad-object))))
                     
(vla-getentity util 'obj 'ip "\nSelect Object: ")
(vla-GetBoundingBox obj 'minpoint 'maxpoint)
(setq pointmin (vlax-safearray->list minpoint))
(setq pointmax (vlax-safearray->list maxpoint))
(princ pointmin)(princ "\n")(princ pointmax)

wimal 发表于 2022-7-5 15:37:47

 
谢谢你的快速回复。

dlanorh 发表于 2022-7-5 15:49:10

另一个
(vl-load-com)

(defun c:tw (/ c_doc obj minExt maxExt dist d_ang width ht)
   (setq c_doc (vla-get-ActiveDocument (vlax-get-acad-object))
       obj (vlax-ename->vla-object (car (entsel "\nSelect entity to be object data : ")))
)
   (vla-GetBoundingBox obj 'minExt 'maxExt)
   (setq dist (distance (vlax-safearray->list minExt) (vlax-safearray->list maxExt))
               d_ang (angle (vlax-safearray->list minExt) (vlax-safearray->list maxExt))
               width (* (cos d_ang) dist)
       ht (* (sin d_ang) dist)
   )
(princ (strcat "\nWidth = " (rtos width 2) " : Height = " (rtos ht 2)))
);_end_GBB defun
(princ)

wimal 发表于 2022-7-5 15:50:42

(setq text_list (ssget"C"pt1 pt2'((0 . "TEXT") ))); list of texts
 
当文本在选择集中时。如何修改上述代码。

dlanorh 发表于 2022-7-5 15:58:08

 
 
这是给我的还是给比格尔的?
 
 
如果是我,你想用文本实体做什么?

Lee Mac 发表于 2022-7-5 16:01:25

我建议使用textbox函数——下面是一个示例。

BIGAL 发表于 2022-7-5 16:11:03

此外,为了将来减少混淆,ssget将“选择集”设置为“列表”,列表是一个包含许多简单值的变量。
页: [1] 2
查看完整版本: 文本长度