将数字添加到文本字符串
我想创建一个例程,将当前dimscale变量添加到文本字符串的末尾。谢谢
德里克 dimscale是否需要与活动dimscale并发?i、 e是否需要更新文本字符串,以自动反映对dimscale值的更改?
如果不需要自动更新,只需添加一个分配了dimscale系统变量值的字段即可。 快速修复:
(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))
我将更好地描述我的意图:
我正在尝试自动插入块的过程,并将其插入到正确的图层上,获取正确的比例因子(基于当前的dimscale)。我们的图层是标准的,带有特定比例的后缀。
插入块的图层是静态的,不同图形之间的比例后缀(即第25层、第50层)除外。
理想情况下,如果层不存在,我希望它被创建。该图层很可能存在于要插入块的图形中。
我想我可以读取当前的dimscale并将其放置在图层名称的末尾,并在插入块之前将该图层设置为当前图层。
谢谢
德里克 好的,我想我理解你的意图,看看我能做些什么 也许:
(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))
这假设您的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)
大卫 那太完美了。。。非常感谢!!!!
德里克 我想也可以使用反应堆——不过还没有达到戴维斯的错误捕捉标准
键入“Ron”打开,键入“Roff”关闭 错误捕捉有什么优势吗?
页:
[1]
2