ktbjx 发表于 2022-7-5 15:40:29

简单更改文本值

我不理解使用entmod来更改文本的值
这是我到目前为止得到的。。
我只是想改变数值。
(defun C:ddip (/ ss d dstring)
(setq ss (ssget "_:S" '((0 . "TEXT"))))
(setq d (getint "\nEnter Dip :"))
(setq dstring (strcat (itoa d)"°"))      
(entmod (subst dstring))
(princ))

Tharwat 发表于 2022-7-5 15:47:06

(entmod (subst (cons 1 (strcat (itoa d) "%%C")) (assoc 1 (setq e (entget (ssname ss 0)))) e))

BIGAL 发表于 2022-7-5 15:55:53

如果这里只使用了d,为什么要将其设为数字?我知道错误陷阱,但你必须对最终用户有一些信心。
 

(defun c:ddip ( / obj str )
(setq obj (vlax-ename->vla-object (car (entsel "pick text object"))))
(if(or (="AcDbText" (vla-get-objectname obj)) (="AcDbMText" (vla-get-objectname obj)) )
   (progn
   (setq str (strcat (getstring "\nEnter dip") "%%c"))
   (vla-put-textstring objstr)
   )
)
)

Tharwat 发表于 2022-7-5 15:59:29

比格尔,再看看你的密码。

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

谢谢你,因为你一定打了回复。现在是晚上8点21分。你什么时候在哪里?
 
一个版本在记事本上,另一个版本在Vlide上贴错了。

Tharwat 发表于 2022-7-5 16:10:34

 
很抱歉这么晚才回复。时间是下午1:21,所以我们两个时间相差五个小时。

BIGAL 发表于 2022-7-5 16:18:27

不用担心,塔尔瓦特。
 
添加了用于简单文本编辑的多行文字检查。

Tharwat 发表于 2022-7-5 16:20:25

你好
 
实际上,没有必要转换为vla对象来完成工作。
无论如何,如果我计划用vlisp编写它,那么我将遵循以下轨道。
 

(defun c:ddip (/ obj str)
(and (setq obj (car (entsel "\nPick text object :")))
      (setq obj (vlax-ename->vla-object obj))
      (wcmatch (vla-get-objectname obj) "AcDb*Text")
      (/= "" (setq str (getstring "\nEnter dip :")))
      (vla-put-textstring obj (strcat str "%%c"))
)
(princ)
) (vl-load-com)

Grrr 发表于 2022-7-5 16:26:04

 
真聪明!
 
 
 
只是一个小的修正-看起来OP想要的不是直径符号,而是度斜率:
\u$(vl列表->字符串'(37 37 99))“%%c”;

Tharwat 发表于 2022-7-5 16:32:45

非常感谢。
 
 
我同意你的观点,因此OP现在有两个选项(直径/度[%%C,%%D])。
页: [1] 2
查看完整版本: 简单更改文本值