morgos 发表于 2022-7-5 14:59:54

从lisp插入文本

是否可以从lisp自动插入文本,
我试过了,但没用。。。。
 
(command "dtext"
    pt1 ; variable for insertion point

         "" ; scale
         "" ; rotation
    pt1Z ; variable for text
    ""
 
我用光标手动插入文本,

dbroada 发表于 2022-7-5 15:05:45

我认为你必须在变量前面加一个!
 
(command "DTEXT" !pt1 "" "" "my text" "")
 
您可能还需要一个“”表示文字高度。

Lee Mac 发表于 2022-7-5 15:08:31

嗨,莫戈斯,欢迎来到CADtutor,
 
如果我是你,我会使用entmake插入你的文本,因为它更可靠。-有时,内置ACAD文本插入器会假设文本高度或旋转或两者兼有,因此会改变提示的顺序。

Lee Mac 发表于 2022-7-5 15:12:13

类似这样:
 
如果不希望创建文本层(如果还没有文本层),请删除蓝线,并相应地更改红色部分以满足您的需要

alanjt 发表于 2022-7-5 15:12:42

以下是我使用的两个子例程:
多行文字
(defun makeMTEXT (pt txt width txtsize / entl)
(setq entl (list
            '(0 . "MTEXT")
            '(100 . "AcDbEntity")
            '(100 . "AcDbMText")
            (cons 10 pt)
&nb22)
               (cons 1 val2)
               (cons 7 tstyle)
               (cons 10 p1)
               (cons 40 theight)
               (cons 41 1)
               (cons 50 0)
      )
)
(entmake txt1)
)

CAB 发表于 2022-7-5 15:18:32

我也会使用entmakex,但要使用命令,请使用以下命令:
;; If text height is undefined (signified by 0 in the table)
(if (zerop (cdr(assoc 40(tblsearch "style" (getvar "textstyle")))))
   ;; Draw the text using the current text height (textsize)
   (command ".text" "c" "_non" txtpt "" L_Angle txt)
   ;; Otherwise use the defined text height
   (command ".text" "c" "_non" txtpt L_Angle txt)
) ; endif

morgos 发表于 2022-7-5 15:20:47

谢谢大家的快速回复,
我刚开始工作,
谢谢李简洁完整的代码,
今天晚些时候我会试试这些,
 
 
摩门教徒。

Lee Mac 发表于 2022-7-5 15:24:39

 
很好的一个CAB,我的LISP的一个更小更简单的解决方案-但是entmakex和entmake之间的区别是什么?

CAB 发表于 2022-7-5 15:27:25

我喜欢这些问题。
 
entmake返回部分实体列表,而entmakex返回ent名称。
我觉得这更有用。

Lee Mac 发表于 2022-7-5 15:29:25

好的,谢谢
 
这是否会改变您使用它们的方式,就像文本示例一样,它是否像用entmakex替换entmake一样简单?
页: [1] 2
查看完整版本: 从lisp插入文本