大家好,
我是一名软件开发人员,我用C++和Java编程,但最近我接到一项任务,帮助我们的工程部门编写一些代码+脚本,以修复他们遇到的cad打印问题。
我们的问题是使用第三方应用程序生成AutoCad图形。第三部分应用程序将dimscale设置为1:000;但图形的标题栏比例属性具有正确的比例值。
我的任务是用lisp和我们的脚本编写代码来自动化这个过程;这将需要程序读取比例属性的值,并将其应用于图形dimscale。
在阅读了一些教程并搜索了网页后,我浏览了一些完成大部分任务的功能。。。感谢这个社区及其论坛。
我的主函数读取从其中一个线程获得的属性值,如下所示:
- (defun c:AttLst (/ ss eLst bEnt aEnt aEntLst aVal blkLst)
- (vl-load-com)
- (if (setq ss (ssget "X" (list (cons 0 "INSERT") (cons 66 1)
- (if (getvar "CTAB")
- (cons 410 (getvar "CTAB"))
- (cons 67 (- 1 (getvar "TILEMODE")))))))
- (progn
- (setq eLst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
- (foreach e eLst
- (setq bEnt (cdr (assoc 2 (entget e)))
- aEnt (entnext e))
- (while (= "ATTRIB" (cdr (assoc 0 (setq aEntLst (entget aEnt)))))
- (if (= (cdr (assoc 2 aEntLst)) "SCALE")
- (progn
- (setq aVal (cdr (assoc 1 aEntLst))
- blkLst (cons (cons bEnt aVal) blkLst))))
- (setq aEnt (entnext aEnt)))))
- (princ "\n<!> No Attributed Blocks Found <!>"))
- (alert (vl-princ-to-string blkLst))
- (princ))
当比例值没有空格时,此函数非常有效;但当有空格时,它只返回比例值的右侧
示例1:
比例1:5==>结果=((标题栏名称1:5))
示例2:
比例1:10==>结果=((标题栏名称。1:))
如示例2所示,返回值缺少右侧值
你能帮我解决这个问题吗?为什么它只返回左侧? |