freeok 发表于 2015-8-12 16:27:36

下面的组合,为什么不能成功呢?

程序想实现量取距离,取其四分之一或三分之一数值赋值A,然后选取 B C D ,把B C D 替换成A。
希望高手能帮忙,谢谢了!

(defun c:tt (/ apt1 apt2 list1 en en_data en1 en1_data ss k entype old_text new_text_data)
(prompt " 请直接量取距离或者输入一个值:")
(if (setq apt1 (getpoint " 请指定点:"))
    (progn
      (setq apt2 (getpoint " 请指定第二个点:"))
      (setq list1 (distance apt1 (list (car apt2) (cadr apt1))));返回量取的X轴的值
    )
      (setq list1 (getreal " 请输入一个值:"))
)
(setq en (/ list1 4))
(setq en_data (entget (car en)))
(prompt "\n请选择要修改内容的文字:")
(setq ss (ssget))
(setq k 0)
(repeat (sslength ss)
    (setq en1 (ssname ss k))
    (setq en1_data (entget en1))
    (setq entype (cdr (assoc 0 en1_data)))
;;;单行文字的内容格式刷
    (if
(= entype "TEXT")
      (sametext en1_data en_data)
      )
;;;天正文字的内容格式刷
    (if
(= entype "TCH_TEXT")
      (sametext en1_data en_data)
    )
    (setq k (1+ k))
)
(prin1)
)
(defun sametext      
(en1_data en_data)
(setq old_text (cdr (assoc 1 en_data)))
(setq new_text_data (cons 1 old_text))
(setq en1_data (subst new_text_data (assoc 1 en1_data) en1_data))
(entmod en1_data)
);end ofsametext

风流少年时 发表于 2015-8-12 16:51:03

本帖最后由 风流少年时 于 2015-8-12 16:52 编辑

(setq en_data (entget (car en)))这里的en只是数字了,不是图元。

freeok 发表于 2015-8-12 17:06:00

本帖最后由 freeok 于 2015-8-12 17:21 编辑

要如何转换呢?,,,唉,一直静不下

风流少年时 发表于 2015-8-12 17:23:21


[*](defun c:tt ()
[*](prompt " 请直接量取距离或者输入一个值:")
[*](if (setq apt1 (getpoint "\n请指定点:"))
[*]    (progn
[*]      (setq apt2 (getpoint apt1 "\n请指定第二个点:"))
[*]      (setq list1 (distance apt1 (list (car apt2) (cadr apt1))));返回量取的X轴的值
[*]    )
[*]    (setq list1 (getreal "\n请输入一个值:"))
[*])
[*](setq en (/ list1 4))
[*](setq en (rtos en))
[*](setq en (cons 1 en))
[*](prompt "\n请选择要修改内容的文字:")
[*](setq ss (ssget))
[*](setq k 0)
[*](repeat (sslength ss)
[*]    (setq en1 (ssname ss k))
[*]    (setq en1_data (entget en1))
[*]    (setq old_data (assoc 1 en1_data))
[*]    (setq entype (cdr (assoc 0 en1_data)))
[*]    ;;;单行文字的内容格式刷
[*]    (if
[*]      (= entype "TEXT")
[*]      (progn
[*]      (setq ent (subst en old_data en1_data))
[*]      (entmod ent)
[*]      )
[*]    )
[*]    ;;;天正文字的内容格式刷
[*]    (if
[*]      
[*]      (= entype "TCH_TEXT")
[*]      (progn
[*]      (setq ent (subst en old_data en1_data))
[*]      (entmod ent)
[*]      )
[*]    )
[*]    (setq k (1+ k))
[*])
[*](prin1)
[*])

freeok 发表于 2015-8-12 17:27:38

风流少年时 发表于 2015-8-12 17:23 static/image/common/back.gif
[*](defun c:tt ()
[*](prompt " 请直接量取距离或者输入一个值:")
[*](if (setq apt1 (getpoint " ...

非常感谢!!!

freeok 发表于 2015-8-12 18:47:31

风流少年时 发表于 2015-8-12 17:23 static/image/common/back.gif
[*](defun c:tt ()
[*](prompt " 请直接量取距离或者输入一个值:")
[*](if (setq apt1 (getpoint " ...

老师,我那个还能帮我改下吗?
之前没想周到,是我量X方向取X距离,量Y向则是取Y向距离。
拜托了!
页: [1]
查看完整版本: 下面的组合,为什么不能成功呢?