1.在尽量少改代码的原则下,依照您的要求作了点修改。修改后代码如下:
2.至于框选,你可以将entsel换作SSGET,后边再对选择集中的实体进行编历并处理即可。
但我建议“源文字”不要框选,而“目标文字”采用框选较好。
3.大家都是学习者,有问题探讨,这样进步就快了。

- [FONT=courier new]
- (defun c:TC (/ en1 en1_data en1_type
- fountain_content en2 en2_data
- en2_type en2_content copy_content
- )
- (setvar "cmdecho" 0)
- (setq en1_type "")
- (setq en2_type "")
- (while (/= en1_type "TEXT")
- (while (= (setq en1 (entsel "\n选取源文字:")) nil))
- (setq en1_data (entget (car en1)))
- (setq en1_type (cdr (assoc 0 en1_data)))
- )
- (setq fountain_content (cdr (assoc 1 en1_data)))
- (while (/= en2_type "TEXT")
- (while (= (setq en2 (entsel "\n选取目标文字:")) nil))
- (setq en2_data (entget (car en2)))
- (setq en2_type (cdr (assoc 0 en2_data)))
- )
- (setq en2_content (assoc 1 en2_data))
- (setq copy_content (cons 1 fountain_content))
- (setq en2_data (subst copy_content en2_content en2_data))
- (entmod en2_data)
- (prin1)
- )
- (prompt "**************<< C:TC >>**************")
- (prin1)
- [/FONT]
|