mousho 发表于 2022-7-5 19:53:55

将文本添加到lisp


我是新来的,希望有人能帮助我
我写了这个LISP,并从其他LISP中复制了一些东西
 
我需要的是,在RECT的底部,它将自动写入RECT的维度。
它下面应该写着U.K.=。。。
 
代码如下:
(defun c:rmid (/ pt1)
   
(setq
   w (getdist "\nWidth: ")   
   l (getdist "\nLength: ")
   pt1 (getpoint "\nSpecify mid point: ")
   )
(setq
   p2 (list (+ (car pt1) (* 0.5 w))(+ (cadr pt1) (* 0.5 l)))
   p3 (list (- (car pt1) (* 0.5 w))(- (cadr pt1) (* 0.5 l)))
   )
   (setvar "osmode" 0)
   (setvar "cmdecho" 0)
   (command "rectang" p2 p3
   )

   (setq OldCmdEcho (getvar "cmdecho")) ;save cmdecho state
   (setvar "cmdecho" 0) ;this hide command
   (setq Htxt (getdist "\nText height: ")
   angTxt 0
   DeltaYtxt (* 2.0 Htxt)
   )
   (while (/= (setq txt (getstring "\nText: " T)) "") ;T=True is for input text with space, if omit T then Text cannot space
   (command "_text" "_Justify" "_TL" p3 Htxt angtxt txt)
   ;New position for next txt
   (setq p3 (mapcar '- p3 (list 0 DeltaYtxt 0)))
   )

   (setvar "osmode" 703);your favourite osnap
   (setvar "cmdecho" oldCmdEcho) ;restore original state for cmdecho
(princ)
)

7o7 发表于 2022-7-5 20:06:38

这是你想要的吗?

(defun c:rmid (/ pt1)

(setq w (getdist "\nWidth: ")
                        l (getdist "\nLength: ")
                        pt1 (getpoint "\nSpecify mid point: ")
)
(setq        p2 (list (+ (car pt1) (* 0.5 w))(+ (cadr pt1) (* 0.5 l)))
                        p3 (list (- (car pt1) (* 0.5 w))(- (cadr pt1) (* 0.5 l)))
)
(setvar "osmode" 0)
(setvar "cmdecho" 0)
(command "rectang" p2 p3)

(setq OldCmdEcho (getvar "cmdecho")) ;save cmdecho state
(setvar "cmdecho" 0) ;this hide command
(setq Htxt (getdist "\nText height: ")
                        angTxt 0
                        DeltaYtxt (* 2.0 Htxt)
)
(command "_text" "_Justify" "_TL" p3 Htxt angtxt (strcat "Width = " (rtos w)))
(setq p3 (mapcar '- p3 (list 0 DeltaYtxt 0)))
(command "_text" "_Justify" "_TL" p3 Htxt angtxt (strcat "Length = " (rtos l)))
(setq p3 (mapcar '- p3 (list 0 DeltaYtxt 0)))       
(command "_text" "_Justify" "_TL" p3 Htxt angtxt"U.K.=" )

(setvar "osmode" 703);your favourite osnap
(setvar "cmdecho" oldCmdEcho) ;restore original state for cmdecho
(princ)
)

SLW210 发表于 2022-7-5 20:21:34

请阅读代码发布指南并编辑您的帖子,将代码包含在代码标签中。

mousho 发表于 2022-7-5 20:34:55

谢谢,太好了。。。
我稍微改变了输出,所以现在它显示的是300/400/200的DIM,而不是像你做的那样的列表
我现在需要的是,它将我的输入识别为“文本”,而不是数字,这样当我给出200时,它将显示200而不是200.00,当我写+12.00时,它应该显示+12.00而不仅仅是12.00
 
(defun c:test (/ pt1)

(setq w (getdist "\nWidth: ")
                        l (getdist "\nLength: ")
                        h (getdist "\nHeight: ")
                        uk (getdist "\nUK: ")
                        pt1 (getpoint "\nSpecify mid point: ")
)
(setq        p2 (list (+ (car pt1) (* 0.5 w))(+ (cadr pt1) (* 0.5 l)))
                        p3 (list (- (car pt1) (* 0.5 w))(- (cadr pt1) (* 0.5 l)))
)
(setvar "osmode" 0)
(setvar "cmdecho" 0)
(command "rectang" p2 p3)

(setq OldCmdEcho (getvar "cmdecho")) ;save cmdecho state
(setvar "cmdecho" 0) ;this hide command
(setq Htxt (getdist "\nText height: ")
                        angTxt 0
                        DeltaYtxt (* 2.0 Htxt)
)
(command "_text" "_Justify" "_TL" p3 Htxt angtxt (strcat (rtos w) "/" (rtos l) "/" (rtos h)))
(setq p3 (mapcar '- p3 (list 0 DeltaYtxt 0)))       
(command "_text" "_Justify" "_TL" p3 Htxt angtxt (strcat "U.K.=" (rtos UK))))

(setvar "osmode" 703);your favourite osnap
(setvar "cmdecho" oldCmdEcho) ;restore original state for cmdecho
(princ)
)

mousho 发表于 2022-7-5 20:45:46

谁能帮帮我吗?
解决这个问题?

BIGAL 发表于 2022-7-5 20:56:20

Rtos W查看Rtos W 2 0等检查帮助以获取额外标志
页: [1]
查看完整版本: 将文本添加到lisp