不,没有必要。。我甚至可以说,最好是lisp直接在自动生成的文件上执行任务。如果之前没有人为操作,输入是恒定的。。。
相反!放弃包含“”的任何重写比尝试操作字符串以将其与实数进行比较更容易。
好的,给你。在开始时,有一个变量排除列表。我使lisp忽略其中的任何项,因此现在它不会修改没有覆盖(“”)的任何维度,也不会修改“”覆盖。任何其他维度都将被覆盖。由于维度具有与原始值相同的覆盖,我没有费心比较覆盖值(OverwritenValue)和实值(realvalue)。没有必要这样做。
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;LSP routine made by Jef!
- ;;2014-02-06
- ;;with no expressed written or applied warranty
- ;;;;;;;;;;;;;;
-
- (defun c:OverrideFinder ( / working_list counter entity entityslist overwrittenvalue realvalue exclusionlist)
- (command "undo" "be")
- (setq exclusionlist (list "<>" ""));add more if required
- (if (setq working_list (ssget "_X" '((0 . "*DIMENSION")) ))
- (progn
- (princ "Dimensions detected")
- (setq counter 0)
- (while (< counter (sslength working_list))
- (setq entity (ssname working_list counter))
- (setq entityslist (entget entity))
- (if (not (member (setq overwrittenvalue (cdr (assoc 1 entityslist))) exclusionlist))
- (progn
- (princ "\nDimension processed!")
- (setq realvalue (cdr (assoc 42 entityslist)))
- (entmod (subst (cons 1 (strcat "%%o" overwrittenvalue)) (assoc 1 entityslist) entityslist))
- );progn
- (princ "\nDimension with no overwride skipped")
- );if
- (setq counter (+ 1 counter))
- );while
- );progn
- (alert "No dimensions found.. Ungroup first!")
- )
- (princ "Processing finished")
- (command "undo" "end")
- )
很漂亮吧?
如果你想学习LISP,请逐个表达式分析所有内容。。
有了奉献精神,就有可能实现许多事情。
我从来并没有参加过任何课程,我的帖子在3或4个月前写的看起来像“if函数的结构”,“setq不需要引号,setvar需要”。。看看我刚做的。事实上,我给自己留下了深刻的印象!
不要犹豫,谷歌任何功能,以充分了解它。做许多书面笔记,这有助于吸收知识。。每次你复习笔记,你都能看到你取得的进步。例如:“嘿,上个月我需要笔记来做一个cond声明”。
如果需要进一步解释,请随时询问。(你应该)
快乐编码,
干杯
杰夫! |