[求助]那位高手给我改改这个程序
<p>(defun c:q()</p><p><br/>(setq ff (open (setq wjm (getfiled "里程桩坐标数据文件" "" "dat" 1)) "w"))<br/> (setq en (car (entsel "请选择道路中心线:")) )<br/> (setq m(getint"间隔桩距离:米?"))<br/> (setq j (getdist"起点时程:"))<br/> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;点<br/> (setq dat(entget en))<br/> (setq s(cdr (assoc 10 dat)))<br/> ; (command "text" "j" "mc" s "" "起点" "")<br/> (command "insert" "qd" s "" "" "" )<br/> (setq hx(getstring "是否换向?否<2>---是<1>"))<br/> (if (= hx "2")<br/> (draw_pt)<br/> )<br/> (if (= hx "1")<br/> (progn<br/> (fx)<br/> (draw_pt)<br/> ))<br/> <br/> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br/> <br/> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;xx<br/> <br/> <br/> (close ff)<br/> (startapp "notepad" wjm)<br/> (setvar "cmdecho" cm) (setvar "osmode" om)<br/> (princ)<br/>)<br/> <br/>(defun draw_pt()<br/> <br/> (command "lengthen" en "")<br/> (setq vob (vlax-ename->vla-object en))<br/> (setq l (getvar "perimeter"))<br/> <br/> (setq n(fix(/ l m)))<br/> ;(setq dis (/ l n))<br/> (setq i 0 )<br/> (repeat (1+ n)<br/> (setq pt (vlax-curve-getpointatdist vob (* i m)) i (1+ i))<br/> (setq r(/ j 1000))<br/> ;;;;;判断k值<br/> (if (and (>= j 0)(< j 1000))<br/> (setq f (strcat "k0+"(rtos j 2 1))))<br/> (if (and (>= r 1)(< r 10))<br/> (progn<br/> (setq e(fix r))<br/> (setq f(strcat "k" (itoa (fix r)) "+" (rtos (*(- r e)1000))))<br/> )<br/> )<br/> ;;;;;;;;;判断k值end<br/> (princ<br/> <br/> (strcat f "," (rtos (cadr pt) 2 4) "," (rtos (car pt) 2 4) ",0<br/>" ) ff<br/> <br/> ;(strcat (itoa i) " " (rtos (car pt) 2 4) " " (rtos (cadr pt) 2 4) "") ff<br/> )<br/> (setq j(+ j m))<br/> <br/> <br/> )<br/> ;;;;;;;;;;;;;;;;;;;;;;;<br/> ;m=2<br/> )</p><p><br/>(DEFUN fx()<br/> (setq een(entsel));001<br/> (setq en(car een));002<br/> (setq PTS nil PTS2 nil);003<br/> (setq ENTS (entget En));004<br/> (setq EDS ENTS);005<br/> (while (setq ENTS (member (assoc 10 ENTS) ENTS));取出(10 x y)后面的所有值 006<br/> (setq PTS (append PTS (list (car ENTS) (cadr ENTS) (caddr ENTS) (cadddr ENTS))));007取出(10 X Y)后面的还有三位表元素并重新合成表<br/> (setq ENTS (CDR ENTS));008 取出(10 X Y)后的所有值<br/> );009<br/> (setq PTS (reverse PTS));009将007中的 PTS表中元素反倒一次 41 42 10 40<br/> (repeat 3 (setq PTS (append (cdr PTS) (list (car PTS)))));010 连续3次 将得到 40 10 41 42<br/> (foreach item PTS;011<br/> (if (= (car item) 42);012<br/> (setq item (cons 42 (- (cdr item))));013<br/> );014<br/> (setq PTS2 (append PTS2 (list item)));015<br/> );016<br/> (setq PTS PTS2);017<br/> (while (setq item (assoc 10 EDS));018<br/> (setq EDS (vl-remove item EDS));019<br/> (setq EDS (vl-remove (assoc 40 EDS) EDS));020<br/> (setq EDS (vl-remove (assoc 41 EDS) EDS));021<br/> (setq EDS (vl-remove (assoc 42 EDS) EDS));022<br/> );023<br/> (setq D (car (setq EDS (reverse EDS))));024<br/> (setq EDS (append (reverse (cdr EDS)) PTS (list D)));025<br/> (entmod EDS) ;026<br/>)</p><p></p><p>程序目的:绘一条线段(pline)运行程序,输入相关设定,得到该线段的坐标.</p><p>程序中有插入图块,可以删除</p><p>我在运行时总是提示:(setq vob (vlax-ename->vla-object en)) 错误</p> <p>你可能是没加入(vl-load-com)</p><p>不过,建议可以加入标注桩号</p> <p>能不能具体点呢 谢谢</p><p></p><p></p> <p>现在又出现</p><p>AutoCAD 变量设置被拒绝: "osmode"</p><p>; 错误: AutoCAD 变量设置被拒绝: "cmdecho" nil</p> <p></p><p>帮你稍微改了一下,你可以看看,</p><p>关于你说的那个问题可能是两处的变量en设置重了 </p><p>建议你把可以把变量设置为局部变量。</p> <p>谢谢</p><p>我没有在变量,在第一行加了<font face="Courier New"><font color="#ff0000">(</font></font><a href="http://www.mjtd.com/object/autolisp/vl-load-com.htm" target="_black"><font face="Courier New" color="#0000ff">vl-load-com</font></a><font face="Courier New"><font color="#ff0000">)</font><br/>同时改了反向的回车控制</font></p><p><font face="Courier New">谢谢你了</font></p><p></p> highflybir 发表于 2007-4-9 19:35 static/image/common/back.gif
帮你稍微改了一下,你可以看看,关于你说的那个问题可能是两处的变量en设置重了 建议你把可以把变量设置为局 ...
请教,能将导出的文件每个桩号的数据自动换行吗,谢谢
页:
[1]