Storm2002 发表于 2022-7-6 14:41:17

将数字添加到文本字符串

我想创建一个例程,将当前dimscale变量添加到文本字符串的末尾。
 
谢谢
德里克

wannabe 发表于 2022-7-6 14:47:18

dimscale是否需要与活动dimscale并发?i、 e是否需要更新文本字符串,以自动反映对dimscale值的更改?
 
如果不需要自动更新,只需添加一个分配了dimscale系统变量值的字段即可。

Lee Mac 发表于 2022-7-6 14:51:09

快速修复:
 

(defun c:AddDim(/ ss)
(vl-load-com)
(if (setq ss (ssget (list (cons 0 "*TEXT")
                           (if (getvar "CTAB")
                           (cons 410 (getvar "CTAB"))
                           (cons 67 (- 1 (getvar "TILEMODE")))))))
   (progn
   (foreach x(mapcar 'entget
                   (vl-remove-if 'listp
                     (mapcar 'cadr (ssnamex ss))))
       (entmod (subst (cons 1 (strcat (cdr (assoc 1 x)) (chr 32)
                                    (rtos (getvar "DIMSCALE"))))
                      (assoc 1 x) x))))
   (princ "\<!> No Text Selected <!>"))
(princ))

Storm2002 发表于 2022-7-6 14:56:41

我将更好地描述我的意图:
 
我正在尝试自动插入块的过程,并将其插入到正确的图层上,获取正确的比例因子(基于当前的dimscale)。我们的图层是标准的,带有特定比例的后缀。
 
插入块的图层是静态的,不同图形之间的比例后缀(即第25层、第50层)除外。
 
理想情况下,如果层不存在,我希望它被创建。该图层很可能存在于要插入块的图形中。
 
我想我可以读取当前的dimscale并将其放置在图层名称的末尾,并在插入块之前将该图层设置为当前图层。
 
谢谢
德里克

Lee Mac 发表于 2022-7-6 14:59:56

好的,我想我理解你的意图,看看我能做些什么

Lee Mac 发表于 2022-7-6 15:04:30

也许:
 

(defun c:Blklay (/ lDim)
(vl-load-com)
(setq lDim (strcat "Layer-" (rtos (getvar "DIMSCALE"))))
(or (tblsearch "LAYER" lDim)
   (vla-add (vla-get-Layers
                (vla-get-ActiveDocument
                  (vlax-get-acad-object))) lDim))
(setvar "CLAYER" lDim)
(princ))

David Bethel 发表于 2022-7-6 15:13:14

这假设您的DIMSCALE是一个整数

(defun SetLayer (name / ldef flag)
(cond ((or (not name)
            (not (snvalid name)))
      (princ "\nBad Aurgment Passed To SetLayer - ")
      (prin1 name)
      (exit)))
(command "_.LAYER")
(if (not (tblsearch "LAYER" name))
   (command "_Make" name)
   (progn
       (setq ldef (tblsearch "LAYER" name)
             flag (cdr (assoc 70 ldef)))
       (and (= (logand flag1)1)
            (command "_Thaw" name))
       (and (minusp (cdr (assoc 62 ldef)))
            (command "_On" name))
       (and (= (logand flag4)4)
            (command "_Unlock" name))
       (and (= (logand flag 16) 16)
            (princ "\nCannot Set To XRef Dependent Layer")
            (quit))
       (command "_Set" name)))
(command "")
name)

大卫

Storm2002 发表于 2022-7-6 15:14:40

那太完美了。。。非常感谢!!!!
 
德里克

Lee Mac 发表于 2022-7-6 15:20:22

我想也可以使用反应堆——不过还没有达到戴维斯的错误捕捉标准
 
键入“Ron”打开,键入“Roff”关闭

Storm2002 发表于 2022-7-6 15:23:20

错误捕捉有什么优势吗?
页: [1] 2
查看完整版本: 将数字添加到文本字符串