jiangjun 发表于 2007-4-9 15:03:00

[求助]那位高手给我改改这个程序

<p>(defun c:q()</p><p><br/>(setq ff (open (setq wjm (getfiled "里程桩坐标数据文件" "" "dat" 1)) "w"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq en (car (entsel "请选择道路中心线:"))&nbsp; )<br/>&nbsp; (setq m(getint"间隔桩距离:米?"))<br/>&nbsp; (setq j (getdist"起点时程:"))<br/>&nbsp;&nbsp;&nbsp; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;点<br/>&nbsp;&nbsp;&nbsp; (setq dat(entget en))<br/>&nbsp;&nbsp;&nbsp; (setq s(cdr (assoc 10 dat)))<br/>&nbsp;&nbsp; ; (command "text" "j" "mc" s ""&nbsp; "起点" "")<br/>&nbsp;&nbsp;&nbsp; (command "insert" "qd" s "" "" "" )<br/>&nbsp;&nbsp;&nbsp; (setq hx(getstring "是否换向?否&lt;2&gt;---是&lt;1&gt;"))<br/>&nbsp;&nbsp;&nbsp; (if (= hx "2")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (draw_pt)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (if (= hx "1")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (fx)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (draw_pt)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ))<br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br/>&nbsp;<br/>&nbsp;&nbsp; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;xx<br/>&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; (close ff)<br/>&nbsp;&nbsp;&nbsp; (startapp "notepad" wjm)<br/>&nbsp;&nbsp;&nbsp; (setvar "cmdecho" cm) (setvar "osmode" om)<br/>&nbsp;&nbsp;&nbsp; (princ)<br/>)<br/>&nbsp; <br/>(defun draw_pt()<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; (command "lengthen" en "")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq vob (vlax-ename-&gt;vla-object&nbsp; en))<br/>&nbsp;&nbsp;&nbsp; (setq&nbsp; l&nbsp;&nbsp; (getvar "perimeter"))<br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp; (setq n(fix(/ l m)))<br/>&nbsp;&nbsp;&nbsp; ;(setq dis (/ l n))<br/>&nbsp;&nbsp;&nbsp; (setq&nbsp; i&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (repeat (1+ n)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq pt&nbsp; (vlax-curve-getpointatdist vob (* i m)) i (1+ i))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq r(/ j 1000))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;;;;判断k值<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (and (&gt;= j 0)(&lt; j 1000))<br/>&nbsp;(setq f (strcat "k0+"(rtos j 2 1))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (and (&gt;= r 1)(&lt; r 10))<br/>&nbsp;(progn<br/>&nbsp;&nbsp; (setq e(fix r))<br/>&nbsp;(setq f(strcat "k" (itoa (fix r)) "+" (rtos (*(- r e)1000))))<br/>&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;;;;;;;;判断k值end<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp; (strcat f "," (rtos (cadr pt) 2 4) "," (rtos (car pt) 2 4) ",0<br/>" ) ff<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;(strcat (itoa i) "&nbsp; " (rtos (car pt) 2 4) "&nbsp; " (rtos (cadr pt) 2 4) "") ff<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq j(+ j m))<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; ;;;;;;;;;;;;;;;;;;;;;;;<br/>&nbsp; ;m=2<br/>&nbsp;&nbsp; )</p><p><br/>(DEFUN fx()<br/>&nbsp;&nbsp;&nbsp; (setq een(entsel));001<br/>&nbsp; (setq en(car een));002<br/>&nbsp; (setq PTS nil PTS2 nil);003<br/>&nbsp; (setq ENTS (entget En));004<br/>&nbsp; (setq EDS ENTS);005<br/>&nbsp; (while (setq ENTS (member (assoc 10 ENTS) ENTS));取出(10 x y)后面的所有值&nbsp; 006<br/>&nbsp;&nbsp;&nbsp; (setq PTS (append PTS (list (car ENTS) (cadr ENTS) (caddr ENTS) (cadddr ENTS))));007取出(10 X Y)后面的还有三位表元素并重新合成表<br/>&nbsp;&nbsp;&nbsp; (setq ENTS (CDR ENTS));008&nbsp; 取出(10 X Y)后的所有值<br/>&nbsp; );009<br/>&nbsp; (setq PTS (reverse PTS));009将007中的&nbsp;PTS表中元素反倒一次 41 42 10 40<br/>&nbsp; (repeat 3 (setq PTS (append (cdr PTS) (list (car PTS)))));010 连续3次&nbsp; 将得到 40 10 41 42<br/>&nbsp; (foreach item PTS;011<br/>&nbsp;&nbsp;&nbsp; (if (= (car item) 42);012<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq item (cons 42 (- (cdr item))));013<br/>&nbsp;&nbsp;&nbsp; );014<br/>&nbsp;&nbsp;&nbsp; (setq PTS2 (append PTS2 (list item)));015<br/>&nbsp; );016<br/>&nbsp; (setq PTS PTS2);017<br/>&nbsp; (while (setq item (assoc 10 EDS));018<br/>&nbsp;&nbsp;&nbsp; (setq EDS (vl-remove item EDS));019<br/>&nbsp;&nbsp;&nbsp; (setq EDS (vl-remove (assoc 40 EDS) EDS));020<br/>&nbsp;&nbsp;&nbsp; (setq EDS (vl-remove (assoc 41 EDS) EDS));021<br/>&nbsp;&nbsp;&nbsp; (setq EDS (vl-remove (assoc 42 EDS) EDS));022<br/>&nbsp; );023<br/>&nbsp; (setq D (car (setq EDS (reverse EDS))));024<br/>&nbsp; (setq EDS (append (reverse (cdr EDS)) PTS (list D)));025<br/>&nbsp; (entmod EDS) ;026<br/>)</p><p></p><p>程序目的:绘一条线段(pline)运行程序,输入相关设定,得到该线段的坐标.</p><p>程序中有插入图块,可以删除</p><p>我在运行时总是提示:(setq vob (vlax-ename-&gt;vla-object&nbsp; en)) 错误</p>

byghbcx 发表于 2007-4-9 17:10:00

<p>你可能是没加入(vl-load-com)</p><p>不过,建议可以加入标注桩号</p>

jiangjun 发表于 2007-4-9 18:41:00

<p>能不能具体点呢&nbsp; 谢谢</p><p></p><p></p>

jiangjun 发表于 2007-4-9 19:30:00

<p>现在又出现</p><p>AutoCAD 变量设置被拒绝: "osmode"</p><p>; 错误: AutoCAD 变量设置被拒绝: "cmdecho" nil</p>

highflybir 发表于 2007-4-9 19:35:00

<p></p><p>帮你稍微改了一下,你可以看看,</p><p>关于你说的那个问题可能是两处的变量en设置重了 </p><p>建议你把可以把变量设置为局部变量。</p>

jiangjun 发表于 2007-4-9 19:53:00

<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>

yxh1202 发表于 2013-1-17 09:12:28

highflybir 发表于 2007-4-9 19:35 static/image/common/back.gif
帮你稍微改了一下,你可以看看,关于你说的那个问题可能是两处的变量en设置重了 建议你把可以把变量设置为局 ...

请教,能将导出的文件每个桩号的数据自动换行吗,谢谢
页: [1]
查看完整版本: [求助]那位高手给我改改这个程序