x_s_s_1
发表于 2012-7-23 22:25:15
preone 发表于 2012-7-23 19:45 static/image/common/back.gif
(entmod(reverse(cons new_num (reverseent))))
请教 上句是做什么用的? 是把new_num放至ent联合 ...
这句话的前提是判断了图元列表中没有你要更新的组码,例如62组码,在随层的时候是没有的,所以不存在重复的可能。(cons new_num lst)是把new_num放在表头,这样我实验了,更新后不能更新图元列表,故而先将图元列表倒置后加入new_num,然后再倒置,就没有问题了。
x_s_s_1
发表于 2012-7-23 23:00:02
duuudu 发表于 2012-7-23 21:59 static/image/common/back.gif
(apply '(lambda (x) (ch_dxf x 40 ww))
应该不需要apply函数,直接(ch_dxf (ssname SS (setq N (1- N)) ...
因为foreach,apply,mapcar这三个函数半懂不懂,得了强迫症,有机会就用了
yjr111
发表于 2012-7-23 23:43:02
改字高是lsp学习中最基本的练习,不过怎么改,什么方式个人习惯不同而已,下面我发一个自己写的一直在用的,源码就没必要发了。。。
MH520
发表于 2012-7-24 13:18:34
强中更有强中手。
梦醒才知原是梦
发表于 2012-7-24 16:18:59
学习~~~~~分享~~~~~~~~~感谢~~~~~~~~
preone
发表于 2012-7-24 18:41:10
x_s_s_1 发表于 2012-7-23 22:25 static/image/common/back.gif
这句话的前提是判断了图元列表中没有你要更新的组码,例如62组码,在随层的时候是没有的,所以不存在重复 ...
恩 我明白了 if 函数判断 如果最后一个判断式成立(即联合列表中包括new_num) 则执行第一个entmod否则(即不包括时)执行第二个entmod。对不对? 呵呵~
duuudu
发表于 2012-7-24 21:46:44
x_s_s_1 发表于 2012-7-23 23:00 static/image/common/back.gif
因为foreach,apply,mapcar这三个函数半懂不懂,得了强迫症,有机会就用了
这三个确实好用,多用用是挺好的,呵呵。
duuudu
发表于 2012-7-24 22:06:18
本帖最后由 duuudu 于 2012-7-24 22:08 编辑
(defun C:zg ( / h n s )
(setq h (getreal "字高:"))
(repeat (setq n (sslength (setq s (ssget'((-4 . "<OR") (0 . "MTEXT") (0 . "TEXT") (-4 . "OR>"))))))
(VLA-PUT-HEIGHT (VLAX-ENAME->VLA-OBJECT (SSNAME s (setq n (1- n)))) h)
)
)尝试最大程度简化了,什么也不判断,都是在前辈基础上弄得
duuudu
发表于 2012-7-24 22:12:14
yjr111 发表于 2012-7-23 23:43 static/image/common/back.gif
改字高是lsp学习中最基本的练习,不过怎么改,什么方式个人习惯不同而已,下面我发一个自己写的一直在用的, ...
好像不能用啊,命令是gzg?
zhb236623
发表于 2012-7-25 16:57:54
本帖最后由 zhb236623 于 2012-7-25 17:03 编辑
这个比较直观,扩展也快点……
(defun c:gzg ()
(setq ss (ssget '((0 . "text"))))
(setq i 0)
(if (not (setq tt (getreal "\n请输入文字高度 <1.5>: ")))
(setq tt 1.5)
)
(repeat (sslength ss)
(setq ssn (ssname ss i)
endata (entget ssn)
endata (subst (cons 40 tt) (assoc 40 endata) endata)
i (1+ i)
)
(entmod endata)
)
) ;end defun
;;;更改文字宽度gzk
(defun c:gzk ()
(setq ss (ssget '((0 . "text"))))
(if (not (setq tt (getreal "\n请输入字宽 <0.8>: ")))
(setq tt 0.8)
)
(setq i 0)
(repeat (sslength ss)
(setq ssn (ssname ss i)
endata (entget ssn)
endata (subst (cons 41 tt) (assoc 41 endata) endata)
i (1+ i)
)
(entmod endata)
)
) ;end defun