[求助]新人学习lsp,跪求各位大大指点迷津
<p>新手学习,请各位大侠指点。</p><p>下面是一段简单的自动编码的lsp,现想修改成可以给指定单行文字自动加编码,例如我现在已有AAA、HHH、BBB、KKK等很多单行文字编码,想通过运行此lsp自动编码,使其变为-1-AAA、-2-HHH、-3-BBB、-4-KKK等这种样式,其中-4- 分别为LSP中的前缀 序号 后缀,即运行此lsp后每点一个单行文字自动在原有单行文字前加上("前缀""序号""后缀")。</p><p>现想分别在指定插入点和指定下一个插入点之前加入选择“获取一个 AutoCAD 系统变量的值”的语句,例如</p><p> (setq osm (getvar "osmode"))<br/> (setvar "osmode" 1)<br/> (setvar "ORTHOMODE" 0)<br/> (setvar "DIMZIN" 8)<br/> (setq a(entsel "\n请选择一个数字:"))</p><p>不知如何完善下面的自动编码的LSP,在此先谢过大家的指点</p><p>(defun c:zdbm (/ oce1 n1 zn h1 sxh1 p1)<br/> (setq oce1 (getvar "cmdecho"))<br/> (setvar "cmdecho" 0)<br/> (princ "\n编号")<br/> (setq qz (getstring "\n请输入前缀: "))<br/> (setq hz (getstring "\n请输入后缀: "))<br/> (if (not (setq n1 (getint "\n请输入起始顺序号 <1>: ")))<br/> (setq n1 1)<br/> )<br/> (if (not (setq zn (getint "\n请输入增加或减少的序数 <+1>: ")))<br/> (setq zn 1)<br/> )<br/> (if (not (setq h1 (getreal "\n请指定文字高度 <2.5>: ")))<br/> (setq h1 2.5)<br/> )<br/> (setq sxh1 (strcat qz (itoa n1) hz))<br/> (setq p1 (getpoint "\n请指定插入点: "))<br/> (while (/= p1 nil)<br/> (command "text" p1 h1 0 sxh1)<br/> (setq<br/> n1 (+ n1 zn)<br/> sxh1 (strcat qz (itoa n1) hz)<br/> p1 (getpoint "\n请指定下一插入点: ")<br/> )<br/> )<br/> (setvar "cmdecho" oce1)<br/> (princ)<br/>)</p>(defun c:zdbm (/ n1 zn s1 ent)
(if (not (setq n1 (getint "\n请输入起始顺序号 <1>: "))) (setq n1 1))
(if (not (setq zn (getint "\n请输入增加或减少的序数 <+1>: "))) (setq zn 1))
(while (and (setq s1 (entsel "\n请选择文字 : "))
(setq ent (entget(car s1)))
(= (cdr(assoc 0 ent)) "TEXT")) (progn
(setq ent (subst(cons 1 (strcat "-" (itoa n1) "-" (cdr(assoc 1 ent)))) (assoc 1 ent) ent))
(entmod ent)
(setq n1 (+ n1 zn))
)
(princ)
)
<p>已经解决了,谢谢指点</p><p></p>
页:
[1]