批量展勘察点程序的申请
本帖最后由 作者 于 2010-6-27 9:51:40 编辑 <br /><br /> <p>因为是做工程勘察的工作,其实用到比较多的布孔。现在要求是这样的:1:格式TXT文本:孔号,X(A)坐标,Y(B)坐标,孔深(标高),孔类别 2:在CAD上选择这样的文本格式来插入相应的孔类别的块。(孔类别是1-7数字编号,1-7对应代表做好的专业图块),3:思路是:插入(<font face="Verdana">-insert</font>)-块(1-7编号中1个数字)-指定插入点(X(A)坐标,Y(B)坐标)-<font face="Verdana">输入 X 比例因子</font>(自己选择 比例因子)-<font face="Verdana">输入 Y 比例因子(自己选择 比例因子)-<font face="Verdana">指定旋转角度 </font>(自己选择旋转角度,一般也是旋转零度了 ) 这样就完成在指定坐标位置输入了指定的图块。4:在CAD上选择这样的文本格式来插入孔号与孔深(标高)文本.4:思路是 单行文字(<font face="Verdana">dtext)</font>-指定文字起点(也就是坐标)-指定字高(自己设置)-指定文字的旋转角度(自己设置,一般也是旋转零度了)-输入文字(也就是孔号)</font></p><p> </p>
<p>呵呵,也不知道说清楚没有了。就是一个写文本(展孔号)和一个插入已经做好的块(展点)2个步骤的。也可以分开写程序。当然中间的设置比例因子和字高、旋转角度什么的,提前设置好,也可以默认的。</p>
<p>下面一楼是 1:文本数据格式 2:做好的1-7编号的块 3:最终的效果图</p>
<p>最后还有个小小的要求的。如果能成功的话。可以分解成几个小程序的。1:只展孔号 (要高程(孔深)和不要高程(孔深)2种)2:只展孔类别 3:只展孔(只是圆,不分类别)呵呵也许要求高了。先谢谢能帮助的人。</p>
<p> </p> <table style="WIDTH: 317pt; BORDER-COLLAPSE: collapse" border="0" cellspacing="0" cellpadding="0" width="422" x:str>
<colgroup>
<col style="WIDTH: 54pt" width="72">
<col style="WIDTH: 70pt; mso-width-source: userset; mso-width-alt: 2976" width="93">
<col style="WIDTH: 63pt; mso-width-source: userset; mso-width-alt: 2688" width="84">
<col style="WIDTH: 76pt; mso-width-source: userset; mso-width-alt: 3232" width="101">
<col style="WIDTH: 54pt" width="72">
<tbody>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="WIDTH: 54pt; HEIGHT: 14.25pt" height="19" width="72">孔号</td>
<td style="WIDTH: 70pt" class="xl24" width="93">X坐标</td>
<td style="WIDTH: 63pt" class="xl24" width="84">Y坐标 </td>
<td style="WIDTH: 76pt" width="101">孔深(高程)</td>
<td style="WIDTH: 54pt" width="72"> 类别</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk1</td>
<td class="xl24" align="right" x:num>114103.770</td>
<td class="xl24" align="right" x:num>42806.160</td>
<td align="right" x:num>208.74</td>
<td align="right" x:num>2</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk2</td>
<td class="xl24" align="right" x:num>114224.800</td>
<td class="xl24" align="right" x:num>42925.540</td>
<td align="right" x:num>219.08</td>
<td align="right" x:num>3</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk3</td>
<td class="xl24" align="right" x:num>114310.240</td>
<td class="xl24" align="right" x:num>43009.810</td>
<td align="right" x:num>213.33</td>
<td align="right" x:num>4</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk4</td>
<td class="xl24" align="right" x:num>114381.430</td>
<td class="xl24" align="right" x:num>43080.030</td>
<td align="right" x:num>212.47</td>
<td align="right" x:num>5</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk5</td>
<td class="xl24" align="right" x:num>114488.220</td>
<td class="xl24" align="right" x:num>43185.370</td>
<td align="right" x:num>212.43</td>
<td align="right" x:num>6</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk6</td>
<td class="xl24" align="right" x:num>114033.550</td>
<td class="xl24" align="right" x:num>42877.360</td>
<td align="right" x:num>198.01</td>
<td align="right" x:num>7</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk7</td>
<td class="xl24" align="right" x:num>114154.580</td>
<td class="xl24" align="right" x:num>42996.740</td>
<td align="right" x:num>212.87</td>
<td align="right" x:num>1</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk8</td>
<td class="xl24" align="right" x:num>114240.010</td>
<td class="xl24" align="right" x:num>43081.000</td>
<td align="right" x:num>213.05</td>
<td align="right" x:num>2</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk9</td>
<td class="xl24" align="right" x:num>114311.210</td>
<td class="xl24" align="right" x:num>43151.230</td>
<td align="right" x:num>212.46</td>
<td align="right" x:num>3</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk10</td>
<td class="xl24" align="right" x:num>114418.000</td>
<td class="xl24" align="right" x:num>43256.560</td>
<td align="right" x:num>212.95</td>
<td align="right" x:num>4</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk11</td>
<td class="xl24" align="right" x:num>113963.330</td>
<td class="xl24" align="right" x:num>42948.550</td>
<td align="right" x:num>198.61</td>
<td align="right" x:num>5</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk12</td>
<td class="xl24" align="right" x:num>114084.360</td>
<td class="xl24" align="right" x:num>43067.930</td>
<td align="right" x:num>212.32</td>
<td align="right" x:num>6</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk13</td>
<td class="xl24" align="right" x:num>114169.790</td>
<td class="xl24" align="right" x:num>43152.200</td>
<td align="right" x:num>213.37</td>
<td align="right" x:num>7</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk14</td>
<td class="xl24" align="right" x:num>114240.980</td>
<td class="xl24" align="right" x:num>43222.420</td>
<td align="right" x:num>211.83</td>
<td align="right" x:num>4</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk15</td>
<td class="xl24" align="right" x:num>114347.780</td>
<td class="xl24" align="right" x:num>43327.760</td>
<td align="right" x:num>207.12</td>
<td align="right" x:num>5</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk16</td>
<td class="xl24" align="right" x:num>113942.260</td>
<td class="xl24" align="right" x:num>42969.910</td>
<td align="right" x:num>194.81</td>
<td align="right" x:num>6</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk17</td>
<td class="xl24" align="right" x:num>114063.290</td>
<td class="xl24" align="right" x:num>43089.290</td>
<td align="right" x:num>199.85</td>
<td align="right" x:num>7</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk18</td>
<td class="xl24" align="right" x:num>114148.720</td>
<td class="xl24" align="right" x:num>43173.560</td>
<td align="right" x:num>203.12</td>
<td align="right" x:num>1</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk19</td>
<td class="xl24" align="right" x:num>114219.920</td>
<td class="xl24" align="right" x:num>43243.780</td>
<td align="right" x:num>201.23</td>
<td align="right" x:num>2</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk20</td>
<td class="xl24" align="right" x:num>114326.710</td>
<td class="xl24" align="right" x:num="43349.120000000003">43349.120</td>
<td align="right" x:num>199.31</td>
<td align="right" x:num>3</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk21</td>
<td class="xl24" align="right" x:num>113907.150</td>
<td class="xl24" align="right" x:num>43005.510</td>
<td align="right" x:num>184.58</td>
<td align="right" x:num>4</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk22</td>
<td class="xl24" align="right" x:num>114028.180</td>
<td class="xl24" align="right" x:num>43124.890</td>
<td align="right" x:num>189.12</td>
<td align="right" x:num>5</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk23</td>
<td class="xl24" align="right" x:num>114113.610</td>
<td class="xl24" align="right" x:num>43209.150</td>
<td align="right" x:num>193.75</td>
<td align="right" x:num>6</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk24</td>
<td class="xl24" align="right" x:num>114184.800</td>
<td class="xl24" align="right" x:num>43279.380</td>
<td align="right" x:num>193.13</td>
<td align="right" x:num>7</td></tr>
<tr style="HEIGHT: 14.25pt" height="19">
<td style="HEIGHT: 14.25pt" height="19">zk25</td>
<td class="xl24" align="right" x:num>114291.600</td>
<td class="xl24" align="right" x:num>43384.710</td>
<td align="right" x:num>191.16</td>
<td align="right" x:num>1</td></tr></tbody></table>
<p> </p>
<p> </p>
<p>这个是文本格式</p> 目前我是在excel中实现了部分的功能,(1:只是展孔就是圆了,不分类别的。2:展孔类别就是做了7个块放入CAD的文件搜索目录下然后在相应坐标位置插入块 3:只是展孔号(孔号作为文本)4:但是就是高程(孔深)也展上去的时候,怎么实现孔号在上,高程(孔深)在下。中间用一横线分开。且在孔的外面就没有办法实现的),但是数据很多的时候,excel很慢也很容易死机的呢。现在就是请版主帮助编写程序来解决了。谢谢。 用什么语言写啊? <p>lsp程序可行吗?我不太懂CAD 的编程的。</p>
<p>展点坐标程序原代码!<br/><a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=8422" target="_blank">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=8422</a><br/>论坛里面这个程序很类似的呢,其实就把坐标点展到cad图纸上面去的。</p> 本帖最后由 作者 于 2010-6-10 21:14:06 编辑 <br /><br /> 难道我的问题很复杂吗?请版主抽时间看看。谢谢,<br/>我传一个凉开水工具里面的一个展点的LSp程序给大家参考下。希望有灵感了。<br/>;;;<br/>;;; 命令名:BGZKGY 纲要布置钻孔<br/> BGSJGY 纲要布置竖井<br/> <br/> BGZK 手动布置钻孔<br/> BGSJ 手动布置竖井<br/> BGTC 手动布置探槽<br/> <br/> BGPLZK 批量布置钻孔<br/> BGPLSJ 批量布置竖井<br/> BGPLTC 批量布置探槽<br/>;;;<br/>;;; 在平面图中写入勘探点连续编号<br/>;;;<br/>;;; 作者:凉开水<br/>;;;<br/>;;; 2005.05.28<br/>;;;<br/>;;;-------------------------------------------------------------<br/>(defun c:BGZKGY (/ oce1 oce2 oce3 oce4 oce5 fn1 x n1 h1 p1 p2 p3<br/> p4 p5 p6 zkn)<br/><br/>;;;系统变量<br/> (command "undo" "be")<br/> (setq oce1 (getvar "cmdecho");;;保存命令响应原变量值<br/> oce2 (getvar "OSNAPCOORD");;;保存坐标数据优先级原变量值<br/> oce3 (getvar "OSMODE");;;捕捉变量<br/> oce4 (getvar "ANGDIR");;;角度正方向<br/> oce5 (getvar "ANGBASE");;;基准角度<br/> )<br/> (setvar "cmdecho" 0);;;关闭命令响应<br/> (setvar "OSNAPCOORD" 1);;;坐标数据优先级设为:键盘输入替代对象捕捉设置<br/> (setvar "OSMODE" 7095);;;改变捕捉模式<br/> (setvar "ANGDIR" 0);;;角度正方向为逆时针<br/> (setvar "ANGBASE" 0);;;基准角度东方为0<br/>;;;系统变量<br/><br/> (if (= (Tblsearch "style" "BG_ST") nil)<br/> (command "-style" "BG_ST" "宋体" 0 0.8 0 "n" "n");;;文字样式<br/> )<br/> (command "textstyle" "BG_ST")<br/> (If (= (Tblsearch "layer" "勘探点") nil)<br/> (command "-layer" "n" "勘探点" "c" 5 "勘探点" "s" "勘探点" "");;;定义图层<br/> )<br/> (command "-layer" "c" 5 "勘探点" "s" "勘探点" "")<br/> (if (not (setq x (getreal "\n请输入比例<1>: ")))<br/> (setq x 1)<br/> )<br/> (if (not (setq n1 (getint "\n钻孔起始号 <1>: ")))<br/> (setq n1 1)<br/> )<br/> (setq p1 (getpoint "\n指定钻孔插入点<退出>: "));;;指定勘探点的插入位置<br/> (setq h1 (* x 3.8));;;字体高度<br/> (setq zkn (strcat "zk" (itoa n1)));;;组成勘探点的代号<br/><br/>;;;循环画勘探点------<br/> (while (/= p1 nil)<br/> (command "circle" p1 (* x 2));;;画钻孔圆圈<br/> (setq p2 (list (- (car p1) (* x 4))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;组成编号的插入位置<br/> p3<br/> (list (+ (car p1) (* x 10))<br/> (- (cadr p1) (* x 0.2))<br/> (caddr p1)<br/> );;;组成高程插入位置<br/> p4<br/> (list (+ (car p1) (* x 10))<br/> (- (cadr p1) (* x 0.5))<br/> (caddr p1)<br/> );;;组成孔深插入位置<br/> p5<br/> (list (+ (car p1) (* x 4))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;隔线起点<br/> p6<br/> (list (+ (car p1) (* x 16))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;隔线终点<br/> )<br/> (command "text" "bc" p3 h1 0 zkn);;;写勘探点编号<br/> (command "text" "tc" p4 h1 0 "00.00");;;写孔深<br/> (command "line" p5 p6 "");;;画点号与孔深隔线<br/> (setq<br/> n1 (1+ n1);;;下一序号<br/> zkn (strcat "zk" (itoa n1));;;下一勘探点编号<br/> p1 (getpoint "\n下一插入点<退出>: ");;;指定下一勘探点插入位置<br/> )<br/> )<br/>;;;循环画勘探点------<br/><br/><br/>;;;还原系统变量值<br/> (setvar "cmdecho" oce1);;;恢复命令响应<br/> (setvar "OSNAPCOORD" oce2);;;恢复坐标数据优先级设置<br/> (setvar "OSMODE" oce3);;;恢复捕捉模式<br/> (setvar "ANGDIR" oce4);;;恢复角度正方向<br/> (setvar "ANGBASE" oce5);;;恢复基准角度<br/>;;;还原系统变量值<br/><br/> (command "undo" "e")<br/> (princ)<br/>)<br/>;;;<br/>;;;-------------------------------------------------------------<br/>;;;<br/><br/>;;;<br/>;;;-------------------------------------------------------------<br/>(defun c:BGSJGY (/ oce1 oce2 oce3 oce4 oce5 fn1 x n1 h1 p1 p2 p3 p4 p5 p6 zkn)<br/><br/>;;;系统变量<br/> (command "undo" "be")<br/> (setq oce1 (getvar "cmdecho");;;保存命令响应原变量值<br/> oce2 (getvar "OSNAPCOORD");;;保存坐标数据优先级原变量值<br/> oce3 (getvar "OSMODE");;;捕捉变量<br/> oce4 (getvar "ANGDIR");;;角度正方向<br/> oce5 (getvar "ANGBASE");;;基准角度<br/> )<br/> (setvar "cmdecho" 0);;;关闭命令响应<br/> (setvar "OSNAPCOORD" 1);;;坐标数据优先级设为:键盘输入替代对象捕捉设置<br/> (setvar "OSMODE" 7095);;;改变捕捉模式<br/> (setvar "ANGDIR" 0);;;角度正方向为逆时针<br/> (setvar "ANGBASE" 0);;;基准角度东方为0<br/>;;;系统变量<br/><br/> (if (= (Tblsearch "style" "BG_ST") nil)<br/> (command "-style" "BG_ST" "宋体" 0 0.8 0 "n" "n");;;文字样式<br/> )<br/> (command "textstyle" "BG_ST")<br/> (If (= (Tblsearch "layer" "勘探点") nil)<br/> (command "-layer" "n" "勘探点" "c" 5 "勘探点" "s" "勘探点" "");;;定义图层<br/> )<br/> (command "-layer" "c" 5 "勘探点" "s" "勘探点" "")<br/> (if (not (setq x (getreal "\n请输入比例<1>: ")))<br/> (setq x 1)<br/> )<br/> (if (not (setq n1 (getint "\n竖井起始号 <1>: ")))<br/> (setq n1 1)<br/> )<br/> (setq p1 (getpoint "\n指定竖井插入点<退出>: "));;;指定勘探点的插入位置<br/> (setq h1 (* x 3.8));;;字体高度<br/> (setq zkn (strcat "SJ" (itoa n1)));;;组成勘探点的代号<br/><br/>;;;循环画勘探点------<br/> (while (/= p1 nil)<br/> (command "pline" (list (+ (car p1)(* x 2))(- (cadr p1)(* x 2))(caddr p1))<br/> "w" (* x 0.3) (* x 0.3 )<br/> (list (- (car p1)(* x 2))(- (cadr p1)(* x 2))(caddr p1))<br/> (list (- (car p1)(* x 2))(+ (cadr p1)(* x 2))(caddr p1))<br/> (list (+ (car p1)(* x 2))(+ (cadr p1)(* x 2))(caddr p1))<br/> "c"<br/> );;;插入竖井方框<br/> (setq p2 (list (- (car p1) (* x 4))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;组成编号的插入位置<br/> p3<br/> (list (+ (car p1) (* x 10))<br/> (- (cadr p1) (* x 0.2))<br/> (caddr p1)<br/> );;;组成高程插入位置<br/> p4<br/> (list (+ (car p1) (* x 10))<br/> (- (cadr p1) (* x 0.5))<br/> (caddr p1)<br/> );;;组成孔深插入位置<br/> p5<br/> (list (+ (car p1) (* x 4))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;隔线起点<br/> p6<br/> (list (+ (car p1) (* x 16))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;隔线终点<br/> )<br/> (command "text" "bc" p3 h1 0 zkn);;;写勘探点编号<br/> (command "text" "tc" p4 h1 0 "00.00");;;写孔深<br/> (command "line" p5 p6 "");;;画高程与孔深隔线<br/> (setq<br/> n1 (1+ n1);;;下一序号<br/> zkn (strcat "SJ" (itoa n1));;;下一勘探点编号<br/> p1 (getpoint "\n下一插入点<退出>: ");;;指定下一勘探点插入位置<br/> )<br/> )<br/>;;;循环画勘探点------<br/><br/><br/>;;;还原系统变量值<br/> (setvar "cmdecho" oce1);;;恢复命令响应<br/> (setvar "OSNAPCOORD" oce2);;;恢复坐标数据优先级设置<br/> (setvar "OSMODE" oce3);;;恢复捕捉模式<br/> (setvar "ANGDIR" oce4);;;恢复角度正方向<br/> (setvar "ANGBASE" oce5);;;恢复基准角度<br/>;;;还原系统变量值<br/><br/> (command "pline" (list 0 0 0) "w" 0 0 "");;;恢复0线宽<br/> (command "undo" "e")<br/> (princ)<br/>)<br/>;;;<br/>;;;-------------------------------------------------------------<br/>;;;<br/><br/>;;;<br/>;;;-------------------------------------------------------------<br/>(defun c:BGZK (/ oce1 oce2 oce3 oce4 oce5 fn1 x n1 h1 p1 p2 p3<br/> p4 p5 p6 zkn)<br/><br/>;;;系统变量<br/> (command "undo" "be")<br/> (setq oce1 (getvar "cmdecho");;;保存命令响应原变量值<br/> oce2 (getvar "OSNAPCOORD");;;保存坐标数据优先级原变量值<br/> oce3 (getvar "OSMODE");;;捕捉变量<br/> oce4 (getvar "ANGDIR");;;角度正方向<br/> oce5 (getvar "ANGBASE");;;基准角度<br/> )<br/> (setvar "cmdecho" 0);;;关闭命令响应<br/> (setvar "OSNAPCOORD" 1);;;坐标数据优先级设为:键盘输入替代对象捕捉设置<br/> (setvar "OSMODE" 7095);;;改变捕捉模式<br/> (setvar "ANGDIR" 0);;;角度正方向为逆时针<br/> (setvar "ANGBASE" 0);;;基准角度东方为0<br/>;;;系统变量<br/><br/> (if (= (Tblsearch "style" "BG_ST") nil)<br/> (command "-style" "BG_ST" "宋体" 0 0.8 0 "n" "n");;;文字样式<br/> )<br/> (command "textstyle" "BG_ST")<br/> (If (= (Tblsearch "layer" "勘探点") nil)<br/> (command "-layer" "n" "勘探点" "c" 5 "勘探点" "s" "勘探点" "");;;定义图层<br/> )<br/> (command "-layer" "c" 5 "勘探点" "s" "勘探点" "")<br/> (if (not (setq x (getreal "\n请输入比例<1>: ")))<br/> (setq x 1)<br/> )<br/> (if (not (setq n1 (getint "\n钻孔起始号 <1>: ")))<br/> (setq n1 1)<br/> )<br/> (setq p1 (getpoint "\n指定钻孔插入点<退出>: "));;;指定勘探点的插入位置<br/> (setq h1 (* x 3.8));;;字体高度<br/> (setq zkn (strcat "zk" (itoa n1)));;;组成勘探点的代号<br/><br/>;;;循环画勘探点------<br/> (while (/= p1 nil)<br/> (command "circle" p1 (* x 2));;;画钻孔圆圈<br/> (setq p2 (list (- (car p1) (* x 4))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;组成编号的插入位置<br/> p3<br/> (list (+ (car p1) (* x 11))<br/> (- (cadr p1) (* x 0.2))<br/> (caddr p1)<br/> );;;组成高程插入位置<br/> p4<br/> (list (+ (car p1) (* x 11))<br/> (- (cadr p1) (* x 0.5))<br/> (caddr p1)<br/> );;;组成孔深插入位置<br/> p5<br/> (list (+ (car p1) (* x 4))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;隔线起点<br/> p6<br/> (list (+ (car p1) (* x 18))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;隔线终点<br/> )<br/> (command "text" "mr" p2 h1 0 zkn);;;写勘探点编号<br/> (command "text" "bc" p3 h1 0 "000.00");;;写孔口高程<br/> (command "text" "tc" p4 h1 0 "00.00");;;写孔深<br/> (command "line" p5 p6 "");;;画高程与孔深隔线<br/> (setq<br/> n1 (1+ n1);;;下一序号<br/> zkn (strcat "zk" (itoa n1));;;下一勘探点编号<br/> p1 (getpoint "\n下一插入点<退出>: ");;;指定下一勘探点插入位置<br/> )<br/> )<br/>;;;循环画勘探点------<br/><br/><br/>;;;还原系统变量值<br/> (setvar "cmdecho" oce1);;;恢复命令响应<br/> (setvar "OSNAPCOORD" oce2);;;恢复坐标数据优先级设置<br/> (setvar "OSMODE" oce3);;;恢复捕捉模式<br/> (setvar "ANGDIR" oce4);;;恢复角度正方向<br/> (setvar "ANGBASE" oce5);;;恢复基准角度<br/>;;;还原系统变量值<br/><br/> (command "undo" "e")<br/> (princ)<br/>)<br/>;;;<br/>;;;-------------------------------------------------------------<br/>;;;<br/><br/>;;;<br/>;;;-------------------------------------------------------------<br/>(defun c:BGSJ (/ oce1 oce2 oce3 oce4 oce5 fn1 x n1 h1 p1 p2 p3 p4 p5 p6 zkn)<br/><br/>;;;系统变量<br/> (command "undo" "be")<br/> (setq oce1 (getvar "cmdecho");;;保存命令响应原变量值<br/> oce2 (getvar "OSNAPCOORD");;;保存坐标数据优先级原变量值<br/> oce3 (getvar "OSMODE");;;捕捉变量<br/> oce4 (getvar "ANGDIR");;;角度正方向<br/> oce5 (getvar "ANGBASE");;;基准角度<br/> )<br/> (setvar "cmdecho" 0);;;关闭命令响应<br/> (setvar "OSNAPCOORD" 1);;;坐标数据优先级设为:键盘输入替代对象捕捉设置<br/> (setvar "OSMODE" 7095);;;改变捕捉模式<br/> (setvar "ANGDIR" 0);;;角度正方向为逆时针<br/> (setvar "ANGBASE" 0);;;基准角度东方为0<br/>;;;系统变量<br/><br/> (if (= (Tblsearch "style" "BG_ST") nil)<br/> (command "-style" "BG_ST" "宋体" 0 0.8 0 "n" "n");;;文字样式<br/> )<br/> (command "textstyle" "BG_ST")<br/> (If (= (Tblsearch "layer" "勘探点") nil)<br/> (command "-layer" "n" "勘探点" "c" 5 "勘探点" "s" "勘探点" "");;;定义图层<br/> )<br/> (command "-layer" "c" 5 "勘探点" "s" "勘探点" "")<br/> (if (not (setq x (getreal "\n请输入比例<1>: ")))<br/> (setq x 1)<br/> )<br/> (if (not (setq n1 (getint "\n竖井起始号 <1>: ")))<br/> (setq n1 1)<br/> )<br/> (setq p1 (getpoint "\n指定竖井插入点<退出>: "));;;指定勘探点的插入位置<br/> (setq h1 (* x 3.8));;;字体高度<br/> (setq zkn (strcat "SJ" (itoa n1)));;;组成勘探点的代号<br/><br/>;;;循环画勘探点------<br/> (while (/= p1 nil)<br/> (command "pline" (list (+ (car p1)(* x 2))(- (cadr p1)(* x 2))(caddr p1))<br/> "w" (* x 0.3) (* x 0.3 )<br/> (list (- (car p1)(* x 2))(- (cadr p1)(* x 2))(caddr p1))<br/> (list (- (car p1)(* x 2))(+ (cadr p1)(* x 2))(caddr p1))<br/> (list (+ (car p1)(* x 2))(+ (cadr p1)(* x 2))(caddr p1))<br/> "c"<br/> );;;插入竖井方框<br/> (setq p2 (list (- (car p1) (* x 4))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;组成编号的插入位置<br/> p3<br/> (list (+ (car p1) (* x 11))<br/> (- (cadr p1) (* x 0.2))<br/> (caddr p1)<br/> );;;组成高程插入位置<br/> p4<br/> (list (+ (car p1) (* x 11))<br/> (- (cadr p1) (* x 0.5))<br/> (caddr p1)<br/> );;;组成孔深插入位置<br/> p5<br/> (list (+ (car p1) (* x 4))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;隔线起点<br/> p6<br/> (list (+ (car p1) (* x 18))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;隔线终点<br/> )<br/> (command "text" "mr" p2 h1 0 zkn);;;写勘探点编号<br/> (command "text" "bc" p3 h1 0 "000.00");;;写孔口高程<br/> (command "text" "tc" p4 h1 0 "00.00");;;写孔深<br/> (command "line" p5 p6 "");;;画高程与孔深隔线<br/> (setq<br/> n1 (1+ n1);;;下一序号<br/> zkn (strcat "SJ" (itoa n1));;;下一勘探点编号<br/> p1 (getpoint "\n下一插入点<退出>: ");;;指定下一勘探点插入位置<br/> )<br/> )<br/>;;;循环画勘探点------<br/><br/><br/>;;;还原系统变量值<br/> (setvar "cmdecho" oce1);;;恢复命令响应<br/> (setvar "OSNAPCOORD" oce2);;;恢复坐标数据优先级设置<br/> (setvar "OSMODE" oce3);;;恢复捕捉模式<br/> (setvar "ANGDIR" oce4);;;恢复角度正方向<br/> (setvar "ANGBASE" oce5);;;恢复基准角度<br/>;;;还原系统变量值<br/><br/> (command "pline" (list 0 0 0) "w" 0 0 "");;;恢复0线宽<br/> (command "undo" "e")<br/> (princ)<br/>)<br/>;;;<br/>;;;-------------------------------------------------------------<br/>;;;<br/><br/>;;;<br/>;;;-------------------------------------------------------------<br/>(defun c:BGTC (/ oce1 oce2 oce3 oce4 oce5 fn1 x n1 h1 p1 p2 zkn)<br/><br/>;;;系统变量<br/> (command "undo" "be")<br/> (setq oce1 (getvar "cmdecho");;;保存命令响应原变量值<br/> oce2 (getvar "OSNAPCOORD");;;保存坐标数据优先级原变量值<br/> oce3 (getvar "OSMODE");;;捕捉变量<br/> oce4 (getvar "ANGDIR");;;角度正方向<br/> oce5 (getvar "ANGBASE");;;基准角度<br/> )<br/> (setvar "cmdecho" 0);;;关闭命令响应<br/> (setvar "OSNAPCOORD" 1);;;坐标数据优先级设为:键盘输入替代对象捕捉设置<br/> (setvar "OSMODE" 7095);;;改变捕捉模式<br/> (setvar "ANGDIR" 0);;;角度正方向为逆时针<br/> (setvar "ANGBASE" 0);;;基准角度东方为0<br/>;;;系统变量<br/><br/> (if (= (Tblsearch "style" "BG_ST") nil)<br/> (command "-style" "BG_ST" "宋体" 0 0.8 0 "n" "n");;;文字样式<br/> )<br/> (command "textstyle" "BG_ST")<br/> (If (= (Tblsearch "layer" "勘探点") nil)<br/> (command "-layer" "n" "勘探点" "c" 5 "勘探点" "s" "勘探点" "");;;定义图层<br/> )<br/> (command "-layer" "c" 5 "勘探点" "s" "勘探点" "")<br/> (if (not (setq x (getreal "\n请输入比例<1>: ")))<br/> (setq x 1)<br/> )<br/> (if (not (setq n1 (getint "\n探槽起始号 <1>: ")))<br/> (setq n1 1)<br/> )<br/> (setq p1 (getpoint "\n指定探槽插入点<退出>: "));;;指定勘探点的插入位置<br/> (setq h1 (* x 3.8));;;字体高度<br/> (setq zkn (strcat "TC" (itoa n1)));;;组成勘探点的代号<br/><br/>;;;循环画勘探点------<br/> (while (/= p1 nil)<br/> (command "pline" (list (+ (car p1)(* x 4))(- (cadr p1)(* x 2))(caddr p1))<br/> "w" (* x 0.3) (* x 0.3 )<br/> (list (- (car p1)(* x 4))(- (cadr p1)(* x 2))(caddr p1))<br/> (list (- (car p1)(* x 4))(+ (cadr p1)(* x 2))(caddr p1))<br/> (list (+ (car p1)(* x 4))(+ (cadr p1)(* x 2))(caddr p1))<br/> "c"<br/> );;;插入探槽方框<br/> (setq p2 (list (- (car p1) (* x 6))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;组成编号的插入位置<br/> )<br/> (command "text" "mr" p2 h1 0 zkn);;;写勘探点编号<br/> (setq<br/> n1 (1+ n1);;;下一序号<br/> zkn (strcat "TC" (itoa n1));;;下一勘探点编号<br/> p1 (getpoint "\n下一插入点<退出>: ");;;指定下一勘探点插入位置<br/> )<br/> )<br/>;;;循环画勘探点------<br/><br/><br/>;;;还原系统变量值<br/> (setvar "cmdecho" oce1);;;恢复命令响应<br/> (setvar "OSNAPCOORD" oce2);;;恢复坐标数据优先级设置<br/> (setvar "OSMODE" oce3);;;恢复捕捉模式<br/> (setvar "ANGDIR" oce4);;;恢复角度正方向<br/> (setvar "ANGBASE" oce5);;;恢复基准角度<br/>;;;还原系统变量值<br/><br/> (command "pline" (list 0 0 0) "w" 0 0 "");;;恢复0线宽<br/> (command "undo" "e")<br/> (princ)<br/>)<br/>;;;<br/>;;;-------------------------------------------------------------<br/>;;;<br/>;;;<br/>;;; 命令名:BGPLZK:钻孔 BGPLSJ:竖井 BGPLTC:探槽<br/>;;;<br/>;;; 从文本文件中读入数据,在平面图中写入勘探点<br/>;;; 数据文本文件格式为:孔号 X坐标 Y坐标 Z坐标 孔深 土层厚<br/>;;; (数据间留一空格,数据为空时补为0)<br/>;;;<br/>;;; 作者:凉开水<br/>;;;<br/>;;; 2005.12.31<br/>;;;<br/>;;;-----------------------------------------------------------------------<br/>(defun c:BGPLZK (/ oce1 oce2 oce3 oce4 oce5 oce6 x fn1 f n nam dat1 n1 x1 y1<br/> z1 h1 ht p1 p2 p3 p4 p5 p6 p7 p8 p9 n2 z2 h2 ht2 old1 en er<br/> )<br/><br/> (setvar "errno" 0);;;系统变量错误代码归零<br/> (setq old1 *error*);;;保存原错误函数内容<br/> (defun *error* (msg);;;定义错误函数<br/> (setq en (getvar "errno"));;;提取错误代码<br/> (setq er (strcat "错误代码="<br/> (itoa en)<br/> "\n保哥哥提示:钻孔数据文件格式错误,"<br/> "\n 将鼠标指向菜单栏命令,"<br/> "\n 并参考命令栏处帮助说明。"<br/> "\n"<br/> "\n 文件格式为 .txt 每孔数据为一行"<br/> "\n 孔号 X坐标 Y坐标 Z坐标 孔深 土层厚"<br/> "\n(数据间留一空格,数据为空时应补为0)"<br/> )<br/> )<br/> (alert er);;;以对话框显示错误码和错误信息 <br/> (setq *error* old1);;;恢复原有错误函数内容<br/> )<br/><br/>;;;系统变量<br/> (command "undo" "be")<br/> (setq oce1 (getvar "cmdecho");;;保存命令响应原变量值<br/> oce2 (getvar "OSNAPCOORD");;;保存坐标数据优先级原变量值<br/> oce3 (getvar "OSMODE");;;捕捉变量<br/> oce4 (getvar "ANGDIR");;;角度正方向<br/> oce5 (getvar "ANGBASE");;;基准角度<br/> oce6 (getvar "dimzin");;;控制主单位值作消零处理<br/> )<br/> (setvar "cmdecho" 0);;;关闭命令响应<br/> (setvar "OSNAPCOORD" 1);;;坐标数据优先级设为:键盘输入替代对象捕捉设置<br/> (setvar "OSMODE" 7095);;;改变捕捉模式<br/> (setvar "ANGDIR" 0);;;角度正方向为逆时针<br/> (setvar "ANGBASE" 0);;;基准角度东方为0<br/> (setvar "dimzin" 0);;;不对主单位值作消零处理<br/>;;;系统变量<br/><br/> (if (not (setq x (getreal "\n请输入比例<1>: ")))<br/> (setq x 1)<br/> )<br/> (if (= (Tblsearch "style" "BG_ST") nil)<br/> (command "-style" "BG_ST" "宋体" 0 0.8 0 "n" "n");;;文字样式<br/> )<br/> (command "textstyle" "BG_ST")<br/> (If (= (Tblsearch "layer" "勘探点") nil)<br/> (command "-layer" "n" "勘探点" "c" 5 "勘探点" "s" "勘探点" "");;;定义图层<br/> )<br/> (command "-layer" "c" 5 "勘探点" "s" "勘探点" "")<br/> (setq h (* x 3.8));;;字体高度<br/> (if (setq nam<br/> (getfiled<br/> "钻孔数据格式:孔号 X坐标 Y坐标 Z高程 孔深 土层厚(数据空时补为0)"<br/> ""<br/> "txt"<br/> 0<br/> )<br/> );;;打开文件<br/> (progn<br/> (setq f (open nam "r"));;;对文件进行读操作<br/> (if (setq dat1 (read-line f));;;读入数据<br/> (progn<br/> (while (/= dat1 nil)<br/> (setq dat1 (strcat "(" dat1 ")")<br/> dat1 (read dat1)<br/> );;;钻孔数据转为序列<br/> (if (/= (type dat1) nil)<br/> (progn<br/> (setq n1 (nth 0 dat1);;;孔号<br/> x1 (nth 1 dat1);;;X坐标<br/> y1 (nth 2 dat1);;;Y坐标<br/> z1 (nth 3 dat1);;;高程<br/> h1 (nth 4 dat1);;;孔深<br/> ht (nth 5 dat1);;;土层厚<br/> p1 (list y1 x1 z1);;;钻孔坐标<br/> )<br/> (command "circle" p1 (* x 2));;;画钻孔圆圈;;;插入钻孔圆圈<br/> (setq p2 (list (- (car p1) (* x 10))<br/> (- (cadr p1) (* x 0.2))<br/> (caddr p1)<br/> );;;孔号插入位置<br/> p3 (list (+ (car p1) (* x 11))<br/> (- (cadr p1) (* x 0.2))<br/> (caddr p1)<br/> );;;高程插入位置<br/> p4 (list (+ (car p1) (* x 11))<br/> (- (cadr p1) (* x 0.5))<br/> (caddr p1)<br/> );;;土层厚插入位置<br/> p5 (list (+ (car p1) (* x 4))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;隔线起点<br/> p6 (list (+ (car p1) (* x 18))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;隔线终点<br/> p7 (list (- (car p1) (* x 10))<br/> (- (cadr p1) (* x 0.5))<br/> (caddr p1)<br/> );;;孔深插入位置<br/> p8 (list (- (car p1) (* x 4))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;隔线起点<br/> p9 (list (- (car p1) (* x 16))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;隔线终点<br/> )<br/> (setq n2 (vl-symbol-name n1);;;孔号转为字符串<br/> z2 (rtos z1 2 2);;;高程转为字符串<br/> h2 (rtos h1 2 2);;;孔深转为字符串<br/> ht2 (rtos ht 2 2);;;土层厚度转为字符串<br/> )<br/> (command "zoom"<br/> "w"<br/> (polar p1 (* pi 0.5) (* x 50))<br/> (polar p1 (* pi 1.5) (* x 50))<br/> )<br/> (command "text" "bc" p2 h 0 n2);;;写孔号<br/> (command "text" "bc" p3 h 0 z2);;;写孔口高程<br/> (command "text" "tc" p7 h 0 h2);;;写孔深<br/> (command "text" "tc" p4 h 0 ht2);;;写土层厚<br/> (command "line" p5 p6 "");;;画高程与土厚隔线<br/> (command "line" p8 p9 "");;;画孔号与孔深隔线<br/> )<br/> )<br/> (setq dat1 (read-line f));;;读入下一行数据<br/> )<br/> )<br/> )<br/> )<br/> )<br/> (close f);;;关闭文件<br/><br/>;;;还原系统变量值<br/> (setvar "cmdecho" oce1);;;恢复命令响应<br/> (setvar "OSNAPCOORD" oce2);;;恢复坐标数据优先级设置<br/> (setvar "OSMODE" oce3);;;恢复捕捉模式<br/> (setvar "ANGDIR" oce4);;;恢复角度正方向<br/> (setvar "ANGBASE" oce5);;;恢复基准角度<br/> (setvar "dimzin" oce6);;;恢复主单位值消零处理<br/>;;;还原系统变量值<br/><br/> (setq *error* old1);;;恢复原有错误函数内容<br/> (command "undo" "e")<br/> (princ)<br/>)<br/>;;;<br/>;;;-----------------------------------------------------------------------<br/>;;;<br/>;;;<br/>;;;-----------------------------------------------------------------------<br/>;;;<br/>(defun c:BGPLSJ (/ oce1 oce2 oce3 oce4 oce5 oce6 x fn1 f n nam dat1 n1 x1 y1<br/> z1 h1 ht p1 p2 p3 p4 p5 p6 p7 p8 p9 n2 z2 h2 ht2 old1 en er<br/> )<br/><br/> (setvar "errno" 0);;;系统变量错误代码归零<br/> (setq old1 *error*);;;保存原错误函数内容<br/> (defun *error* (msg);;;定义错误函数<br/> (setq en (getvar "errno"));;;提取错误代码<br/> (setq er (strcat "错误代码="<br/> (itoa en)<br/> "\n保哥哥提示:竖井数据文件格式错误,"<br/> "\n 将鼠标指向菜单栏命令,"<br/> "\n 并参考命令栏处帮助说明。"<br/> "\n"<br/> "\n 文件格式为 .txt 每孔数据为一行"<br/> "\n 井号 X坐标 Y坐标 Z坐标 井深 土层厚"<br/> "\n(数据间留一空格,数据为空时应补为0)"<br/> )<br/> )<br/> (alert er);;;以对话框显示错误码和错误信息 <br/> (setq *error* old1);;;恢复原有错误函数内容<br/> )<br/><br/>;;;系统变量<br/> (command "undo" "be")<br/> (setq oce1 (getvar "cmdecho");;;保存命令响应原变量值<br/> oce2 (getvar "OSNAPCOORD");;;保存坐标数据优先级原变量值<br/> oce3 (getvar "OSMODE");;;捕捉变量<br/> oce4 (getvar "ANGDIR");;;角度正方向<br/> oce5 (getvar "ANGBASE");;;基准角度<br/> oce6 (getvar "dimzin");;;控制主单位值作消零处理<br/> )<br/> (setvar "cmdecho" 0);;;关闭命令响应<br/> (setvar "OSNAPCOORD" 1);;;坐标数据优先级设为:键盘输入替代对象捕捉设置<br/> (setvar "OSMODE" 7095);;;改变捕捉模式<br/> (setvar "ANGDIR" 0);;;角度正方向为逆时针<br/> (setvar "ANGBASE" 0);;;基准角度东方为0<br/> (setvar "dimzin" 0);;;不对主单位值作消零处理<br/>;;;系统变量<br/><br/> (if (not (setq x (getreal "\n请输入比例<1>: ")))<br/> (setq x 1)<br/> )<br/> (if (= (Tblsearch "style" "BG_ST") nil)<br/> (command "-style" "BG_ST" "宋体" 0 0.8 0 "n" "n");;;文字样式<br/> )<br/> (command "textstyle" "BG_ST")<br/> (If (= (Tblsearch "layer" "勘探点") nil)<br/> (command "-layer" "n" "勘探点" "c" 5 "勘探点" "s" "勘探点" "");;;定义图层<br/> )<br/> (command "-layer" "c" 5 "勘探点" "s" "勘探点" "")<br/> (setq h (* x 3.8));;;字体高度<br/> (if (setq nam<br/> (getfiled<br/> "竖井数据格式:井号 X坐标 Y坐标 Z高程 井深 土层厚(数据空时补为0)"<br/> ""<br/> "txt"<br/> 0<br/> )<br/> );;;打开文件<br/> (progn<br/> (setq f (open nam "r"));;;对文件进行读操作<br/> (if (setq dat1 (read-line f));;;读入数据<br/> (progn<br/> (while (/= dat1 nil)<br/> (setq dat1 (strcat "(" dat1 ")")<br/> dat1 (read dat1)<br/> );;;竖井数据转为序列<br/> (if (/= (type dat1) nil)<br/> (progn<br/> (setq n1 (nth 0 dat1);;;井号<br/> x1 (nth 1 dat1);;;X坐标<br/> y1 (nth 2 dat1);;;Y坐标<br/> z1 (nth 3 dat1);;;高程<br/> h1 (nth 4 dat1);;;井深<br/> ht (nth 5 dat1);;;土层厚<br/> p1 (list y1 x1 z1);;;竖井坐标<br/> )<br/> (command "pline" (list (+ (car p1)(* x 2))(- (cadr p1)(* x 2))(caddr p1))<br/> "w" (* x 0.3) (* x 0.3 )<br/> (list (- (car p1)(* x 2))(- (cadr p1)(* x 2))(caddr p1))<br/> (list (- (car p1)(* x 2))(+ (cadr p1)(* x 2))(caddr p1))<br/> (list (+ (car p1)(* x 2))(+ (cadr p1)(* x 2))(caddr p1))<br/> "c"<br/> );;;插入竖井方框<br/> (setq p2 (list (- (car p1) (* x 10))<br/> (- (cadr p1) (* x 0.2))<br/> (caddr p1)<br/> );;;井号插入位置<br/> p3 (list (+ (car p1) (* x 11))<br/> (- (cadr p1) (* x 0.2))<br/> (caddr p1)<br/> );;;高程插入位置<br/> p4 (list (+ (car p1) (* x 11))<br/> (- (cadr p1) (* x 0.5))<br/> (caddr p1)<br/> );;;土层厚插入位置<br/> p5 (list (+ (car p1) (* x 4))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;隔线起点<br/> p6 (list (+ (car p1) (* x 18))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;隔线终点<br/> p7 (list (- (car p1) (* x 10))<br/> (- (cadr p1) (* x 0.5))<br/> (caddr p1)<br/> );;;井深插入位置<br/> p8 (list (- (car p1) (* x 4))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;隔线起点<br/> p9 (list (- (car p1) (* x 16))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;隔线终点<br/> )<br/> (setq n2 (vl-symbol-name n1);;;井号转为字符串<br/> z2 (rtos z1 2 2);;;高程转为字符串<br/> h2 (rtos h1 2 2);;;井深转为字符串<br/> ht2 (rtos ht 2 2);;;土层厚度转为字符串<br/> )<br/> (command "zoom"<br/> "w"<br/> (polar p1 (* pi 0.5) (* x 50))<br/> (polar p1 (* pi 1.5) (* x 50))<br/> )<br/> (command "text" "bc" p2 h 0 n2);;;写井号<br/> (command "text" "bc" p3 h 0 z2);;;写井口高程<br/> (command "text" "tc" p7 h 0 h2);;;写井深<br/> (command "text" "tc" p4 h 0 ht2);;;写土层厚<br/> (command "line" p5 p6 "");;;画高程与土层隔线<br/> (command "line" p8 p9 "");;;画孔号与井深隔线<br/> )<br/> )<br/> (setq dat1 (read-line f));;;读入下一行数据<br/> )<br/> )<br/> )<br/> )<br/> )<br/> (close f);;;关闭文件<br/><br/>;;;还原系统变量值<br/> (setvar "cmdecho" oce1);;;恢复命令响应<br/> (setvar "OSNAPCOORD" oce2);;;恢复坐标数据优先级设置<br/> (setvar "OSMODE" oce3);;;恢复捕捉模式<br/> (setvar "ANGDIR" oce4);;;恢复角度正方向<br/> (setvar "ANGBASE" oce5);;;恢复基准角度<br/> (setvar "dimzin" oce6);;;恢复主单位值消零处理<br/>;;;还原系统变量值<br/><br/> (setq *error* old1);;;恢复原有错误函数内容<br/> (command "pline" (list 0 0 0) "w" 0 0 "");;;恢复0线宽<br/> (command "undo" "e")<br/> (princ)<br/>)<br/>;;;<br/>;;;-----------------------------------------------------------------------<br/>;;;<br/><br/>;;;<br/>;;;-----------------------------------------------------------------------<br/>;;;<br/>(defun c:BGPLTC (/ oce1 oce2 oce3 oce4 oce5 oce6 x fn1 f n nam dat1 n1<br/> x1 y1 z1 p1 p2 n2 old1 en er<br/> )<br/><br/> (setvar "errno" 0);;;系统变量错误代码归零<br/> (setq old1 *error*);;;保存原错误函数内容<br/> (defun *error* (msg);;;定义错误函数<br/> (setq en (getvar "errno"));;;提取错误代码<br/> (setq er (strcat "错误代码="<br/> (itoa en)<br/> "\n保哥哥提示:探槽数据文件格式错误,"<br/> "\n 将鼠标指向菜单栏命令,"<br/> "\n 并参考命令栏处帮助说明。"<br/> "\n"<br/> "\n 文件格式为 .txt 每孔数据为一行"<br/> "\n 探槽号 X坐标 Y坐标 Z坐标 "<br/> "\n(数据间留一空格,数据为空时应补为0)"<br/> )<br/> )<br/> (alert er);;;以对话框显示错误码和错误信息 <br/> (setq *error* old1);;;恢复原有错误函数内容<br/> )<br/><br/>;;;系统变量<br/> (command "undo" "be")<br/> (setq oce1 (getvar "cmdecho");;;保存命令响应原变量值<br/> oce2 (getvar "OSNAPCOORD");;;保存坐标数据优先级原变量值<br/> oce3 (getvar "OSMODE");;;捕捉变量<br/> oce4 (getvar "ANGDIR");;;角度正方向<br/> oce5 (getvar "ANGBASE");;;基准角度<br/> oce6 (getvar "dimzin");;;控制主单位值作消零处理<br/> )<br/> (setvar "cmdecho" 0);;;关闭命令响应<br/> (setvar "OSNAPCOORD" 1);;;坐标数据优先级设为:键盘输入替代对象捕捉设置<br/> (setvar "OSMODE" 7095);;;改变捕捉模式<br/> (setvar "ANGDIR" 0);;;角度正方向为逆时针<br/> (setvar "ANGBASE" 0);;;基准角度东方为0<br/> (setvar "dimzin" 0);;;不对主单位值作消零处理<br/>;;;系统变量<br/><br/> (if (not (setq x (getreal "\n请输入比例<1>: ")))<br/> (setq x 1)<br/> )<br/> (if (= (Tblsearch "style" "BG_ST") nil)<br/> (command "-style" "BG_ST" "宋体" 0 0.8 0 "n" "n");;;文字样式<br/> )<br/> (command "textstyle" "BG_ST")<br/> (If (= (Tblsearch "layer" "勘探点") nil)<br/> (command "-layer" "n" "勘探点" "c" 5 "勘探点" "s" "勘探点" "");;;定义图层<br/> )<br/> (command "-layer" "c" 5 "勘探点" "s" "勘探点" "")<br/> (setq h (* x 3.8));;;字体高度<br/> (if (setq nam<br/> (getfiled<br/> "探槽数据格式:探槽号 X坐标 Y坐标 Z高程 (数据空时补为0)"<br/> ""<br/> "txt"<br/> 0<br/> )<br/> );;;打开文件<br/> (progn<br/> (setq f (open nam "r"));;;对文件进行读操作<br/> (if (setq dat1 (read-line f));;;读入数据<br/> (progn<br/> (while (/= dat1 nil)<br/> (setq dat1 (strcat "(" dat1 ")")<br/> dat1 (read dat1)<br/> );;;探槽数据转为序列<br/> (if (/= (type dat1) nil)<br/> (progn<br/> (setq n1 (nth 0 dat1);;;探槽号<br/> x1 (nth 1 dat1);;;X坐标<br/> y1 (nth 2 dat1);;;Y坐标<br/> z1 (nth 3 dat1);;;高程<br/> p1 (list y1 x1 z1);;;探槽坐标<br/> )<br/> (if (= z1 nil) (*error*))<br/> (command "pline" (list (+ (car p1)(* x 4))(- (cadr p1)(* x 2))(caddr p1))<br/> "w" (* x 0.3) (* x 0.3 )<br/> (list (- (car p1)(* x 4))(- (cadr p1)(* x 2))(caddr p1))<br/> (list (- (car p1)(* x 4))(+ (cadr p1)(* x 2))(caddr p1))<br/> (list (+ (car p1)(* x 4))(+ (cadr p1)(* x 2))(caddr p1))<br/> "c"<br/> );;;插入探槽方框<br/> (setq p2 (list (- (car p1) (* x 6))<br/> (cadr p1)<br/> (caddr p1)<br/> );;;组成编号的插入位置<br/> )<br/> (setq n2 (vl-symbol-name n1));;;探槽号转为字符串<br/> (command "zoom"<br/> "w"<br/> (polar p1 (* pi 0.5) (* x 50))<br/> (polar p1 (* pi 1.5) (* x 50))<br/> )<br/> (command "text" "mr" p2 h 0 n2);;;写探槽号<br/> )<br/> )<br/> (setq dat1 (read-line f));;;读入下一行数据<br/> )<br/> )<br/> )<br/> )<br/> )<br/> (close f);;;关闭文件<br/><br/>;;;还原系统变量值<br/> (setvar "cmdecho" oce1);;;恢复命令响应<br/> (setvar "OSNAPCOORD" oce2);;;恢复坐标数据优先级设置<br/> (setvar "OSMODE" oce3);;;恢复捕捉模式<br/> (setvar "ANGDIR" oce4);;;恢复角度正方向<br/> (setvar "ANGBASE" oce5);;;恢复基准角度<br/> (setvar "dimzin" oce6);;;恢复主单位值消零处理<br/>;;;还原系统变量值<br/><br/> (setq *error* old1);;;恢复原有错误函数内容<br/> (command "pline" (list 0 0 0) "w" 0 0 "");;;恢复0线宽<br/> (command "undo" "e")<br/> (princ)<br/>)<br/>;;;<br/>;;;------------------------------------------------------------------<br/>;;;<br/><br/> 发了凉开水的程序希望不要引起版权的问题呀,呵呵。 http://bbs.mjtd.com/forum.php?mod=viewthread&tid=14829 看来找到类似的帖子了呢,呵呵,和我们的要求很像的,不知道实现的过程是不是一样呢。<br/>
您好
本帖最后由 furuiyong 于 2010-12-1 16:14 编辑本人vba实现该功能,email:furuiyong@163.com可以交流
页:
[1]