wrha 发表于 2022-7-5 18:41:38

Lisp插入文本

我有对象的数据库,当我编写对象插入代码时需要lisp
autocad中的文字描述
 
实例
 
描述代码
 
M20插座M20
M24插座M24
M30插座M30
 
当我写M20 lisp插入M20套接字时,我的意思是什么。

Tharwat 发表于 2022-7-5 18:46:38

这只是要求用户指定一个点,然后插入文本!
现在不是尝试自己的能力来编写这个简单的lisp的时候吗?

Tharwat 发表于 2022-7-5 18:51:02

你一定很懒,玩一玩,然后告诉我。
 

(defun c:Test (/ kw st pt)
;; Tharwat 24.08.2015    ;;
(if
   (and (progn
          (initget 6 "20 24 30")
          (setq kw
               (getkword
                   "\nSpecify the insertion text key < M(**) socket M(**) > <Enter = Exit>:"
               )
          )
      )
      (setq
          st (nth (vl-position kw '("20" "24" "30"))
                  '("M20 socket M20" "M24 socket M24" "M30 socket M30")
             )
      )
   )
    (while (setq pt
                  (getpoint
                  (strcat "\nSpecify insertion point for text < "
                            st
                            " > <Enter = Exit>:"
                  )
                  )
         )
      (entmake (list '(0 . "TEXT")
                     (cons 10 (trans pt 1 0))
                     (cons 11 (trans pt 1 0))
                     (cons 1 st)
                     (cons 7 (getvar 'TEXTSTYLE))
                     (cons 40 (getvar 'TEXTSIZE))
               )
      )
    )
)
(princ)
)

wrha 发表于 2022-7-5 18:53:54

谢谢,很有效

Tharwat 发表于 2022-7-5 18:56:19

 
不客气。
享受它。

wrha 发表于 2022-7-5 19:00:31

再次感谢,但我没有添加更多描述,你能帮我吗

wrha 发表于 2022-7-5 19:05:29

我尝试添加M40以插入插座40

Tharwat 发表于 2022-7-5 19:07:50

仔细看看。
 

(and (progn
          (initget 6 "20 24 30 40")
          (setq kw
               (getkword
                   "\nSpecify the insertion text key < M(**) socket M(**) > 40] <Enter = Exit>:"
               )
          )
      )
      (setq
          st (nth (vl-position kw '("20" "24" "30" "40"))
                  '("M20 socket M20" "M24 socket M24" "M30 socket M30" "M40 socket M40")
             )
      )
   )

wrha 发表于 2022-7-5 19:13:09

非常感谢Tharwat先生

Tharwat 发表于 2022-7-5 19:15:21

 
随时欢迎你
页: [1] 2
查看完整版本: Lisp插入文本