1.QPC 是什么文件
QPREXT.QPC文件定义的函数 标签: QPREXT.QPC 分类: CARD/1二次开发 2007-02-07 09:26
你在学习编写横断面二次开发时,经常会看到语句:USE >QPREXT.QPC 。使用它这是为了满足某些特殊的要求,而实现这些要求的函数块集成到这一*.QPC文件里。因为一般用户看不到其中代码,所以将其中函数用法的帮助帖出来,希望对大家有帮助。
**************************************************************
* 函数调用方法:
* 1 - 数组:实参需要用中括弧括起来 [实参]
* 2 - 从函数中需要返回的值:参数也需要用中括弧括起来,如字符串
* 转换为实数函数StrToDbl调用方法:
* StrToDbl "123.456";[abc];[Code]
**************************************************************
| 实数串转换为数 Code > 0时转换成功,否则源串有错误
| !Text ->; 实型数字符串
| Value 字符串,需要按照传址方式调用
| !SRC ->; 需要替换的源字符,1字节长的字符串,长度大于1时自动为第一个字符
| !OBJ ->; 目标字符,1字节长的字符串,长度大于1时自动为第一个字符
| Sum 字符串,其中包含被空白分隔的多个字段
| ColNo ->; 字段序号 >= 1
| !Out 0 成功
| 在QPR文件运行结束后可自动关闭
| !Text ->; 文件名
| ReadOrWrite -> 0 - 读 1 - 写 2 - 追加
| Handle 0 成功 ==0 打开失败
OpenFile !Text;ReadOrWrite;Handle
| 从文件当前行读入实数到数组 返回 -1 严重错误 0 - 数据格式错误 1 - 成功
| 实际数组维数根据数据文件中数据量确定
| Handle ->; 用OpenFile命令打开的文件的有效句柄
| Array 用OpenFile命令打开的文件的有效句柄
| !OutStr->; 需要输出的字符串
| NewRow -> 0 - 输出字符串后不换行 1 - 输出字符串后换行
| Code 用OpenFile命令打开的文件的有效句柄
| Code 文件名
| !BezNote ->; 文件描述信息
FileInfo !FileName;!BezNote
| 向点数据库写入点:如果该编号的点不存在,则创建它;
| 如果存在,则可修改其位置及编码
| !PointNo ->; 要写入的点编号
| xx;yy;zz ->; 点的三维坐标
| Kode ->; 点的编码
| Code 轴线号
|EE,NN ->; 已知点横纵坐标
|OS
|OX
|Code
2.英语祈使句怎么写
祈使句有两种。
1. 以 let 开头的表示建议的祈使句,如:
*Let's begin now. 让我们现在就开始吧。
*Let me have a look. 让我看看。
*Let him be. 别管他,想怎么就怎么。
2. 以动词原形开头的命令式祈使句,如:
*Sit down, please. 请坐下。
*Don't make noise. 别吵。
*Be quiet. 安静!
3.QPC 是什么文件
QPREXT.QPC文件定义的函数 标签: QPREXT.QPC 分类: CARD/1二次开发 2007-02-07 09:26 你在学习编写横断面二次开发时,经常会看到语句:USE <?>QPREXT.QPC 。
使用它这是为了满足某些特殊的要求,而实现这些要求的函数块集成到这一*.QPC文件里。因为一般用户看不到其中代码,所以将其中函数用法的帮助帖出来,希望对大家有帮助。
*************************************************************** 函数调用方法:* 1 - 数组:实参需要用中括弧括起来 [实参]* 2 - 从函数中需要返回的值:参数也需要用中括弧括起来,如字符串* 转换为实数函数StrToDbl调用方法:* StrToDbl "123.456";[abc];[Code]**************************************************************| 实数串转换为数 Code > 0时转换成功,否则源串有错误| !Text -> 实型数字符串| Value <- 返回的数值| Code <- 如果转换成功则值为1,否则为 0StrToDbl !Text;Value;Code| 字符串中字符替换,Sum为替换的数目| !Text <--> 字符串,需要按照传址方式调用| !SRC -> 需要替换的源字符,1字节长的字符串,长度大于1时自动为第一个字符| !OBJ -> 目标字符,1字节长的字符串,长度大于1时自动为第一个字符| Sum <- 被替换的数目ReplaceChar !Text;!SRC;!OBJ;Sum| 从行串中读取指定字段 Code = 1 成功,Code = 0失败| !Text -> 字符串,其中包含被空白分隔的多个字段| ColNo -> 字段序号 >= 1| !Out <- 返回的字段字符串| Code <- 1 - !Out中值有效,否则无效GetFieldStr !Text;ColNo;!Out;Code| 文件打开 Handel = 0 失败 Handle > 0 成功| 在QPR文件运行结束后可自动关闭| !Text -> 文件名| ReadOrWrite -> 0 - 读 1 - 写 2 - 追加| Handle <- 返回的文件号 >0 成功 ==0 打开失败OpenFile !Text;ReadOrWrite;Handle| 从文件当前行读入实数到数组 返回 -1 严重错误 0 - 数据格式错误 1 - 成功| 实际数组维数根据数据文件中数据量确定| Handle -> 用OpenFile命令打开的文件的有效句柄| Array <- 数值型数组变量名| Sum <- 数组中有效的数据个数| Code <- -1 不可恢复的I/O错误 0 - 数据行中有非数值型字段 1 - 成功| Code = 0时,Sum为发生转换错误的字段序号ReadArray Handle;Array;Sum;Code| 在文件当前位置写入字符串| Handle -> 用OpenFile命令打开的文件的有效句柄| !OutStr-> 需要输出的字符串| NewRow -> 0 - 输出字符串后不换行 1 - 输出字符串后换行| Code <- <0 不可恢复的I/O错误,否则为输出的字符数WriteStr Handle;!OutStr;NewRow;Code| 关闭已经打开的文件| Handle -> 用OpenFile命令打开的文件的有效句柄| Code <- 0 - 句柄非法 1 - 成功关闭CloseFile Handle;Code| 修改文件的CARD/1说明信息,需要在文件存在后调用| !FileName -> 文件名| !BezNote -> 文件描述信息FileInfo !FileName;!BezNote| 向点数据库写入点:如果该编号的点不存在,则创建它;| 如果存在,则可修改其位置及编码| !PointNo -> 要写入的点编号| xx;yy;zz -> 点的三维坐标| Kode -> 点的编码| Code <- 返回码,1 - 成功 其他值 - 失败SavePoint !PointNo;xx;yy;zz;Kode;Code|计算点到轴线的投影坐标|IA -> 轴线号|EE,NN -> 已知点横纵坐标|OS <- 返回投影桩号|OY <- 返回投影横坐标<东>|OX <- 返回投影纵坐标<北>|Code <- 返回码 0 --- 成功 其他值代表失败Project IA;EE;NN;OS;OY;OX;Code 不过好像函数Project不能用,所以只好自己写了。求算点到线的最短距离,可能你会马上想到二分逼近的方法,不过这种方法太慢了,等不起啊。
你可以采用另外一种方法,就是分不同的单元进行判断,直线、圆以及缓和曲线采用不同的算法。一般来说,求点到轴线的距离时,参与计算的单元数目不会太多。
首先用CALL函数找出各个单元的信息,存放在数组中,然后对每个单元计算,最后进行比较。点与直线距离计算,采用计算点与直线组成的三角形为依据,海伦公式计算面积,用面积除以直线长度再乘以2就得到三角形的高,此高即是点与直线的垂直距离。
海伦公式:p=(a+b+c)/2 '周长的一半,area=sqr(p*(p-a)*(p-b)*(p-c)) '面积,dist=2*area/c ;接着判断垂足是在直线上还是直线的延长线上。 点到圆的距离计算,判断点与圆弧的两种位置关系:一是点在圆弧的扇形区域内,二是在扇形外。
第一种情况,点到圆弧的最小距离等于点到圆心距离与圆半径之差的绝对值;第二种情况,最小距离为点到圆弧两端点距离中最小的值。 点到缓和曲线的距离,暂时还采用二分,哪位高手有好办法请指教。