计算图幅号CAD小程序(lsp)
地图学图幅号计算公式
地图学图幅号计算公式地图学是一门研究地图学原理和方法的学科,它涉及到地图的制图、测量、投影、地图学原理等内容。
在地图学中,图幅号是地图的一个重要标识,它用来表示地图在整个地图系统中的位置和范围。
计算图幅号是地图学中的一个基本技能,下面我们将介绍一下地图学图幅号的计算公式。
地图学图幅号通常由数字和字母组成,表示地图的行列位置。
以1:50000比例尺的地图为例,计算图幅号的公式如下:1. 首先确定地图的比例尺,以1:50000为例,表示1单位地图上的距离对应实际地面上的50000单位距离。
2. 然后确定地图的投影方式,常见的有等角投影、等积投影、等距投影等,不同的投影方式会对图幅号的计算产生影响。
3. 接下来确定地图的中央经线和中央纬线,这是根据地图的投影方式确定的,一般情况下,中央经线和中央纬线都是整数度数。
4. 然后确定地图的左下角坐标,通常以经度和纬度表示,例如左下角的经度为100度,纬度为20度。
5. 最后确定地图的行列数,以1:50000比例尺的地图为例,每个图幅的大小为1度×1度,因此行列数可以通过地图的范围和比例尺来确定。
根据上述步骤,可以得出计算图幅号的公式如下:图幅号 = 中央经线 + 列数 + 中央纬线 + 行数。
以1:50000比例尺的地图为例,假设中央经线为100度,中央纬线为20度,左下角坐标为100度、20度,行列数分别为10和10,则计算得出的图幅号为10010A20A。
需要注意的是,不同比例尺的地图计算图幅号的方法可能会有所不同,因此在实际应用中需要根据地图的具体情况来确定计算图幅号的公式。
除了上述的计算方法,地图学中还有一些其他的计算图幅号的方法,例如通过投影坐标系来计算图幅号、通过地理坐标系来计算图幅号等。
这些方法都是根据地图的具体情况和要求来确定的,需要根据实际情况来选择合适的计算方法。
总之,地图学图幅号的计算是地图学中的一个重要技能,它涉及到地图的投影、坐标、比例尺等多个方面的知识。
图幅号计算方法.doc
图幅号计算方法.doc
现行的图幅编号采用的是:1:100万比例尺地形图用行列式编号法,其他比例尺地形图均在此基础上叠加行列号。
首先理解图符编号构成:图幅编号共10位,例如j50b001002,拆解来看,j表示图符所在地在1:100万地形图中的j行即第10行(与纬度相关),50表示图符所在地在1:100万地形图中的50列(与经度相关),b表示该图符采用的比例尺为1:50万,001和002表示该图符在1:50万地形图中位于第一行第二列。
进行经纬度转换:先计算目标图符在1:100万比例尺条件下的左下角坐标。
经度为6*50-180=120e,因为列数是从180经度自西向东计算的,经差为6度。
纬度为4*10(j)=40n,因为行数从赤道起算,纬差为4度,j表示第10行。
在1:50万地形图中,图幅位于1:100万地形图第一行,第二列,则图廓左下角的经度应该加上1:50万条件下的一倍经差,纬度同理加上一倍纬差。
而在1:50万比例尺条件下,经差为3°,纬差为2°,因此图廓左下角经纬度为120+3=123°e,纬度为40+2=42°n,另外三个角的经纬度可以通过经差纬差获得。
CAD lisp 实用小程序(源代码)
CAD lisp实用小程序(源代码)一、圆自动同心(defun c:TX(/qi aa ec center v_c)(vl-load-com)(princ"圆自动同心:")(setq aa(ssget));;获取圆的图元名(setq center(getpoint"选取点位置:"));(setq center(vlax-3D-point center));(setq qi0);初始序号(repeat(sslength aa);对象个数(setq ec(ssname aa qi));选择第一个图元(setq v_c(vlax-ename->vla-object ec));将圆的图元名转换为VLA对象(vla-put-center v_c center);更新圆中心点(setq qi(+qi1)));repeat(princ"修改成功:"));defun二、图层快速修改(princ"快速修改图层编程-TC")(defun C:TC(/)(vl-load-com)(setq SET_ZJTC(vla-get-Layer(vlax-ename->vla-object(car(entsel"\n选择基准图层:"))))) (WHILE(NOT SET_ZJTC)(setq SET_ZJTC(vla-get-Layer(vlax-ename->vla-object(car(entsel "\n基准图层为空,重新选择!:"))))))(setq SET_XGTC(vla-get-Layer(vlax-ename->vla-object(car(entsel"\n选择修改图层:"))))) (WHILE(NOT SET_XGTC)(setq SET_XGTC(vla-get-Layer(vlax-ename->vla-object(car (entsel"\n修改图层为空,重新选择!:"))))))(vlax-for VLA_MSP(vla-get-ModelSpace(vla-get-ActiveDocument(vlax-get-Acad-Object))) (IF(=(vla-get-Layer VLA_MSP)SET_XGTC)(vla-put-Layer VLA_MSP SET_ZJTC))) (princ"\n快速修改图层编程-TC:")(princ));DEFUN三、字高自动修改(princ"快速修改字高编程-ZG")(defun C:ZG(/)(vl-load-com)(setq SET_ZTGD(vla-get-Height(vlax-ename->vla-object(car(entsel"\n选择基准字高:"))))) (WHILE(NOT SET_ZJTC)(setq SET_ZJTC(vla-get-Height(vlax-ename->vla-object(car (entsel"\n基准字高为空,重新选择!:"))))))(setq SET_XGTC(vla-get-Layer(vlax-ename->vla-object(car(entsel"\n选择修改图层:"))))) (WHILE(NOT SET_XGTC)(setq SET_XGTC(vla-get-Layer(vlax-ename->vla-object(car (entsel"\n修改图层为空,重新选择!:"))))))(vlax-for VLA_MSP(vla-get-ModelSpace(vla-get-ActiveDocument(vlax-get-Acad-Object))) (IF(=(vla-get-Layer VLA_MSP)SET_XGTC)(vla-put-Height VLA_MSP SET_ZTGD))) (princ"\n快速修改图层编程-ZG")(princ));DEFUN。
图幅编号计算方法
图幅编号计算方法
图幅编号计算方法
图幅编号是国家测绘局采用的影像资料分割和编号的方式,在全球范围内使用
编号的格式来方便图幅查询和识别。
一般来讲,图幅编号是按照分割后的图幅栅格排布,组成一整个相邻排列的图幅序列号,比如村村村村或者序序序序号等,每次都能精度定位一个图幅。
图幅编号分割计算可以从两个基础步骤开始理解,即划分经纬度范围和图幅的
行列号计算:
1. 确定图幅的经纬度范围:经纬度范围通常由两个点来确定,分别是起点和
终点,以近似矩形的范围来划分,可以根据图幅的不同,采取不同的分割算法和比例。
2. 计算图幅行列号:图幅行列号计算是将经纬度转换到投影图幅系统中来计算,主要参数是:投影类型、几何比例系数、地图面积、地图精度等等,根据这些地理参数可以确定出行列号。
图幅编号不仅用于行列号计算,同时也是一种定位和识别图幅的重要计算手段,根据编号就可以快速定位查找图像,多用于 GIS 及空间数据处理中,是一项科学
的图幅编码技术。
几个有用的CAD小程序
1.计算所有线段总长度(加载后只需框选所有线段便可得出这些线段的总长度) (defun c:LL ()(setvar "cmdecho" 1)(setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE"))))(setq i 0)(setq ll 0)(repeat (sslength en)(setq ss (ssname en i))(setq endata (entget ss))(command "lengthen" ss "")(setq dd (getvar "perimeter"))(setq ll (+ dd ll))(setq i (1+ i)))(princ "所选线条总长为:")(princ ll)(princ))2.标注所有线段(加载后只需框选所有线段便可得标注这些线段)(defun c:LLL ()(COMMAND "UCS" "")(setvar "cmdecho" 1)(SETVAR "OSMODE" 0)(setq AcadObject (vlax-get-acad-object)AcadDocument (vla-get-ActiveDocument Acadobject)mSpace (vla-get-ModelSpace Acaddocument));;选取需要测量的样条曲线、圆弧、直线、椭圆(setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE"))))(setq i 0);;获取系统参数textsize(setq shh (getvar "textsize"))(setq str_hh (strcat "\n文字高度<" (rtos shh 2) ">: ")) (setq hh (getdist str_hh))(while hh(setvar "textsize" hh)(setq hh nil));;输入标注文字高度;;循环开始(repeat (sslength en)(setq ss (ssname en i))(setq endata (entget ss))(command "lengthen" ss "")(setq dd (getvar "perimeter"))(princ (strcat "\n长度=" (rtos dd 2)));;寻找代表图层的字符串(setq aa (assoc 0 endata));;获取图层名称(setq aa1 (cdr aa));;判断线条种类(cond((= aa1 "SPLINE");;如果是spline(progn(setq arcObj (VLAX-ENAME->VLA-OBJECT ss)) (setq startPnt1 (vla-get-ControlPoints arcObj))(setq p1(vlax-safearray->list (vlax-variant-value startPnt1)) )(setq x1 (car p1))(setq z1 (caddr p1))(setq pp1 (list x1 y1 z1))(repeat (- (/ (length p1) 3) 1);;循环,寻找最后一个控制点(setq p1 (cdddr p1))(setq x2 (car p1))(setq y2 (cadr p1))(setq z2 (caddr p1)))(setq pp2 (list x2 y2 z2))))((= aa1 "LWPOLYLINE");;如果是LWPOLYLINE(progn(setq arcObj (VLAX-ENAME->VLA-OBJECT ss)) (setq startPnt1 (vla-get-Coordinates arcObj))(setq p1(vlax-safearray->list (vlax-variant-value startPnt1)) )(setq x1 (car p1))(setq y1 (cadr p1))(setq z1 (caddr p1))(setq pp1 (list x1 y1 z1))(repeat (- (/ (length p1) 3) 1);;循环,寻找最后一个控制点(setq p1 (cdddr p1))(setq x2 (car p1))(setq y2 (cadr p1)))(setq pp2 (list x2 y2 z2))))(t;;如果是其他种类线条(progn(setq arcObj (VLAX-ENAME->VLA-OBJECT ss)) (setq startPnt1 (vla-get-StartPoint arcObj));;获取起点(setq endPnt1 (vla-get-EndPoint arcObj));;获取终点(setq pp1(vlax-safearray->list (vlax-variant-value startPnt1)))(setqpp2 (vlax-safearray->list (vlax-variant-value endPnt1)) ))))(setq x1 (car pp1))(setq y1 (cadr pp1))(setq z1 (caddr pp1))(setq x2 (car pp2))(setq y2 (cadr pp2))(setq z2 (caddr pp2))(setq x (/ (+ x1 x2) 2))(setq y (/ (+ y1 y2) 2))(setq pt (list x y z));;取得线段两端的中点(setq ang (angle pp1 pp2));;获取角度(if (> (* (/ ang pi) 180) 180)(setq ang (+ ang pi)))(command "text""j""bc"pt""(* (/ ang pi) 180)(strcat "" (rtos dd 2))"")(setq i (1+ i)))(prin1))(prompt "\n <>在图中直接写出长度") (prin1)3.连续打断程序(defun c:br1 ()(command "break" pause "f" pause "@") )4.将CAD文字导入Excel表格(defun c:Q2()(setq ffn (getfiled "写出文件" "" "xls" 1)) (princ "\n选取文字...")(setq ss (ssget))(setq ff (open ffn "w"))(setq i 0)(repeat (sslength ss)(setq ssn (ssname ss i))(setq ssdata (entget ssn))(setq sstyp (cdr (assoc 0 ssdata)))(if (or (= sstyp "TEXT") (= sstyp "MTEXT")) (progn(setq txt (cdr (assoc 1 ssdata)))(princ txt ff)(princ "\n" ff)))(setq i (1+ i)))(close ff)(princ (strcat "\n写出文件: " ffn))(prin1))5删除带颜色图元以下程序在别人的贴子里贴过.为了说明问题,今天再贴一次. 改颜色的LISP程序(defun c:c1()(ssget)(command "chprop" "p" "" "c" "1" "") (princ)) (defun c:c2()(ssget)(command "chprop" "p" "" "c" "2" "") (princ)) (defun c:c3()(ssget)(command "chprop" "p" "" "c" "3" "") (princ)) (defun c:c4()(ssget)(command "chprop" "p" "" "c" "4" "") (princ)) (defun c:c5()(ssget)(command "chprop" "p" "" "c" "5" "") (princ)) (defun c:c6()(ssget)(command "chprop" "p" "" "c" "6" "") (princ)) (defun c:c7()(ssget)(command "chprop" "p" "" "c" "7" "") (princ)) (defun c:c8()(ssget)(command "chprop" "p" "" "c" "8" "") (princ))你用C1 命令就可以将图元改为红色了.其余类似.删除红色图元(defun C:D1 (/ m A M)(setq m:err *error* *error* *merr*)(setvar "cmdecho" 0)(command "UNDO" "G")(prompt "选择图形")(setq A (ssget '((62 . 1)) ))(if (/= A nil)(progn(setq M (sslength A))(command "erase" A "")(princ "\n共删除红色图元<")(princ M)(princ ">个")))(command "UNDO" "E")(princ) )这样,键入D1 命令,就可以删除红色的图元了.。
CADLSP函数集全表.
CADLSP函数集全表.第一类数学运算功能函数1.1 (+ 数值数值...) 累计实数或整数数值1.2 (- 数值数值...) 减去数值1.3 (* 数值数值...) 所有数值乘积1.4 (/ 数值数值...) 第一个数值除以第二个以后数值的商1.5 (1+ 数值) 数值+11.6 (1- 数值) 数值-11.7 (abs 数值) 数值的绝对值1.8 (atan 数值) 反正切值1.9 (cos 角度) 角度的余弦值,角度值为弪度1.10 (exp 数值) 数值的指数1.11 (expt 基数指数) 基数的指数值1.12 (fix 数值) 将数值转换为整数值1.13 (float 数值) 将数值转换为实数值1.14 (gcd 数值1 数值2) 二数值的最大公因子1.15 (log 数值) 数值的自然对数值1.16 (max 数值数值...) 数值中的最大值1.17 (min 数值数值...) 数值中的最小值1.18 pi 常数p ,其值约为 3.14159261.19 (rem 数值1 数值2) 二数值的相除的余数1.20 (sin 角度) 角度的正旋值,角度值为弪度1.21 (sqrt 数值) 数值的平方根第二类检验& 逻辑运算功能函数2.1 (= 表示式 1 表示式2) 比较表示式1是否等于表示式2适用数值及字符串2.2 (/= 表示式 1 表示式2) 比较表示式1是否大于等于表示式 22.3 (< 表示式 1 表示式2) 比较表示式 1 是否<小于表示式 22.4 (<= 表示式 1 表示式2) 比较表示式 1 是否<=小于等于表示式 22.5 (> 表示式 1 表示式2) 比较表示式 1 是否>大于表示式 22.6 (>= 表示式 1 表示式2) 比较表示式1是否大于等于表示式 22.7 (~ 数值) 传回:数值的位not值,(1的补码)2.8 (and 表示式 1 表示式2…) 逻辑and的结果2.9 (boole 函数整数整数…) 位式布尔运算2.10 (eq 表示式 1 表示式2) 比较表示式1与表示式2是否相同, 适用串行比较(实际相同)2.11 (equal 表示式 1 表示式 2 [差量]) 比较表示式1与表示式2是否相同, 差量可省略(内容相同)第三类转换运算功能函数3.1 (angtof 字符串[模式]) 角度值的字符串转成实数3.2 (angtos 角度[模式[精度]]) 角度转成的字符串值3.3 (atof 字符串) 字符串转成实数值3.4 (atoi 字符串) 字符串转成整数值3.5 (cvunit 数值原始单位转换单位) 数值转换单位后的值转换根据acad.unt 档案3.6 (distof 字符串[模式]) 依模式将字符串转成实数值3.7 (itoa 整数) 整数转成字符串3.8 (rtos 数值模式[精度]) 实数转成字符串3.9 (trans 点原位置新位置[位移]) 转换坐标系统值第四类串行处理功能函数4.1 (append 串行串行...) 结合所有串行成一个串行4.2 (assoc 关键元素联合串行) 依关键元素找寻联合串行中关系资料4.3 (car 串行) 串行中的第一个元素通常用来求x 坐标4.4 (cadr 串行) 串行中的第二个元素通常用来求y 坐标4.5 (caddr 串行) 串行中的第三个元素通常用来求z 坐标4.6 (cdr 串行) 除去第一个元素后的串行4.7 (cons 新元素串行) 将新元素结合到串行4.8 (foreach 名称串行表示式) 将串行的每一元素对应至名称再依表示式执行响应4.9 (length 串行) 串行内的元素数量4.10 (list 元素元素…) 将所有元素结合成一串行4.11 (listp 元素) 判断元素是否为一串4.12 (mapcar 函数串行1 串行2 ...) 将串行1、串行2、…等串行的元素配合函数,求得新串行4.13 (member 关键元素串行) 依关键元素(含)以后的串行4.14 (nth n 串行) 串行的第n个元素4.15 (reverse 串行) 将串行元素依顺序颠倒过来的串行4.16 (subst 新项旧项串行) 替换新旧串行后的串行第五类字符串、字符、档案处理功能函数5.1 (ascii 字符串) 字符串第一个字符的『ASCII』码5.2 (chr 整数) 整数所对应的ASCII 单一字符串5.3 (close 文件名称) 关闭档案5.4 (open 文件名模式) 开启档案代码,准备读取或写入资料5.5 (read 字符串) 串行中的字符串的第一组元素5.6 (read-char [档案代码]) 经由键盘或档案中读取单一字符5.7 (read-line [档案代码]) 经由键盘或档案中读取一行字符串5.8 (strcase 字符串[字样]) 转换字符串大小写5.9 (strcat 字符串 1 字符串 2 ...) 将各字符串结合成一字符串5.10 (strlen 字符串) 字符串构成的字符数(即字符串长度)5.11 (substr 字符串起始长度) 取出子字符串5.12 (wcmatch 字符串格式) T或nil,将字符串与通用字符进行比对5.13 (write-char 数值[档案代码]) 将一ASCII字符写到档案或屏幕5.14 (write-line 字符串[档案代码]) 将字符串写到档案或屏幕上第六类等待输入功能函数6.1 (getangle [基点] [提示]) 请求输入十进制角度数值,响应一弪度值提示及参考点可有可无6.2 (getcorner 基点[提示]) 请求输入另一矩框对角点坐标6.3 (getdist [基点] [提示]) 请求输入一段距离6.4 (getint [提示]) 请求输入一整数值6.5 (getkword [提示]) 请求输入『关键词』6.6 (getorient [基点] [提示]) 请求输入十进制角度,响应一弪度值不受angbase、angdir 影响6.7 (getpoint [基点] [提示]) 请求输入一个点坐标6.8 (getreal [提示]) 请求输入一实数6.9 (getstring [提示]) 请求输入一字符串6.10 (initget [位] 字符串) 设定下次getxxx 函数的有效输入第七类几何运算功能函数7.1 (angle 点1 点2) 取得二点的角度弪度值7.2 (distance 点1 点2) 取得二点的距离7.3 (inters 点1 点2 点3 点4 [模式]) 取得两条线的交点7.4 (osnap 点模式字符串) 依辅助抓点模式取得另一坐标点7.5 (polar 基点弪度距离) 依极坐标法取得另一坐标点7.6 (textbox 像素串行) 取得文字符串的二对角点坐标第八类像素处理功能函数8.1 (entdel 像素名称) 删除或逆删除像素8.2 (entget 像素名称[应用程序串行]) 取出像素名称的资料串行8.3 (entlast) 取出图形数据中的最后一个像素8.4 (entmake 像素串行) 建立一个新的像素串行8.5 (entmod 像素串行) 依更新的资料串行更新屏幕上元体8.6 (entnext [像素名称]) 找寻图面中的下一个像素8.7 (entsel [提示]) 请求选取一个像素,响应包含像素名称及选点坐标的串行8.8 (entupd 像素名称) 更新屏幕上复元体图形8.9 (handent 图码) 图码的元体名称8.10 (nentsel [提示]) BLOCK所含副元体像素数据串行8.11 (nentselp [提示] [点]) BLOCK所含副元体像素数据(以4 x 4矩形表示) .第九类选择集、符号表处理功能函数9.1 (ssadd [像素名称] [选择集]) 将像素加入选择集或建立一新选择集9.2 (ssdel 像素名称选择集) 将像素自选择集中移出9.3 (ssget [模式] [点1] [点2]) 取得一个选择集9.4 (ssget "X" [过滤串行]) 取得依过滤串行所指定范围的选择集9.5 (sslenth 选择集) 计算选择集的像素个数9.6 (ssmemb 像素名称选择集) 响应像素名称是否包含于选择集内9.7 (ssname 选择集索引值) 依索引值取出选择集中的像素名称9.8 (tblnext 符号表名称[T]) 检视符号表,有效的符号表:"LAYER"、"LTYPE"、"VIEW"、"STYLE"、"BLOCK"9.9 (tblsearch 符号表名称符号) 在符号表中搜寻符号第十类AutoCAD 相关查询、控制功能函数10.1 (command "AutoCAD 指令" ...) 呼叫执行AutoCAD指令10.2 (findfile 檔名) 传回:应该文件名的路径及文件名10.3 (getfiled 标题内定档名扩展名旗号) 透过标准AutoCAD档案对话DCL交谈框求得档案10.4 (getenv "环境变量") 取得该环境变量的设定值,以字符串表示10.5 (getvar "系统变量") 取得该系统变量的设定值,以字符串表示10.6 (setvar "系统变量" 值) 设定该系统变量的值10.7 (regapp 应用类项) 将目前的AutoCAD图形登记为一个应用程序名称第十一类判断式、循环相关功能函数11.1 (if <比较式> <表示式1> [表示式2]) 检算比较式结果,如果为真,执行<表示式1>否则,执行<表示式2>11.2 (repeat 整数[<表达式> <表达式> ...]) 重复执行<整数>次数11.3 (while 标题内定檔名扩展名旗号) 透过标准AutoCAD 档案对话DCL交谈框求得档案11.4 (cond "环境变量") 取得该环境变量的设定值,以字符串表示11.5 (progn 表达式1 表达式 2 ...) 连结其内的表达式为一组,常用于配合if、cond等函数第十二类函数处理、定义、追踪& 错误处理功能函数12.1 (*error* 字符串) 程序错误时的警示讯息12.2 (alert 字符串) 以交谈框式显示出警告字符串12.3 (apply 功能函数串行) 将功能函数与串行结合后执行12.4 (defun 名称自变量串行表示式...) 自定函数或子程序12.5 (eval 表示式) 传回:表示式的执行结果12.6 (exit) 强制退出目前的应用程序12.7 (lambda 自变量表示式) 定义未具名的函数12.8 (progn 表达式 1 表达式 2 ...) 连结其内的表达式为一组,常用于配合if、cond 等函数12.9 (quit) 强制退出目前的应用程序12.10 (tablet 代码[列1 列2 列3 方向]) 取用或建立对数字板的校调12.11 (trace 函数…) 对函数设定追踪旗号,辅助除错12.12 (untrace 函数…) 对函数设定解除追踪旗号第十三类显示、打印控制功能函数13.1 (graphscr) 作图环境切换到图形画面13.2 (grclear) 暂时清除模前的屏幕画面13.3 (grdraw 起点终点颜色[亮显]) 暂时性的画出一条线13.4 (grread [追踪]) 由输入设备读取追踪值13.5 (grtext 位置字符串[亮显]) 将字符串显示在状态列或屏幕菜单上13.6 (grvecs 向量串行[转置矩阵]) 暂时性的画出多条线13.7 (menucmd 字符串) 提供在AutoLISP中呼叫各菜单13.8 (prin1 [表示式[档案代码]) 将表示式打印于命令区或已开启的档案,句柄字符则以"\" 为前缀展开13.9 (princ [表示式[档案代码]) 除句柄字符则不以"\" 为前缀展开外其余同prin1 13.10 (print [表示式[档案代码]) 除表示式会往下一新行列出,及一空格外其余同prin113.11 (prompt 讯息) 将讯息显示于屏幕的命令区,并随后响应一个nil讯息13.12 (redraw [像素名称[模式]]) 重绘整张图或依像素名称重绘该图形13.13 (terpri) 在屏幕上显示新列13.14 (textscr) 作图环境切换到文字画面13.15 (textpage) 清除文字画面文字类似DOS的cls指令13.16 (vports) 传回:窗口组态串行第十四类符号、元素、表示式处理功能函数14.1 (atom 元素) 如果元素不是串行,响应T,否则为nil14.2 (atoms-family 格式[符号串行]) 传回:一组已定义函数的符号串行14.3 (boundp 表示式) 传回:T或nil,响应表示式是否有值存在14.4 (minusp 元素) 传回:T 或nil,元素是否为负值14.5 (not 元素) 传回:T 或nil,判定元素是否为nil14.6 (null 元素) 传回:T或nil判定元素是否被赋予nil值14.7 (numberp 元素) 传回:T或nil,元素是否为整数或实数14.8 (... '表示式) 响应表示式未检算前状态14.9 (quote 表示式) 响应表示式未检算前状态,同『'』功能14.10 (set 符号表示式) 将表示式结果设定给带单引号' 符号14.11 (setq 符号1 表示式 1 [符号2 表示式2]...) 设定表示式结果给各符号14.12 (type 元素) 传回:元素的资料型态143.13 (zerop 元素) 传回:T 或nil,元素是否为0 值第十五类ADS、AutoLISP 加载与释放函数15.1 (ads) 传回:目前加载ADS程序串行15.2 (ver) 传回:目前AutoLISP版本字符串15.3 (load LSP檔名[加载失败]) 加载AutoLISP档案(*.lsp)15.4 (arxload <应用程序名称> [错误响应]) 加载一个ARX应用程序文件15.5 (arxunload <应用程序名称> [错误响应]) 释放ARX应用程序文件15.6 (autoarxload <文件名称> <指令定义>) 加载一个关连式的ARX檔15.7 (autoload ADS 定义的函数& 指令) 加载一个关连式的AutoLISP檔15.8 (autoxload <文件名称> <指令定义>) 加载一个关连式的ADS檔15.9 (xload 应用程序[出错处理]) 加载ADS应用程序15.10 (xunload 应用程序[出错处理]) 释放ADS应用程序第十六类内存空间管理函数16.1 (alloc 数值) 以节点数值设定区段大小16.2 (expand 数值) 以区段数值配置节点空间16.3 (gc) 强制收回废内存16.4 (mem) 显示目前的内存使用状态16.5 (vmon) 释放ADS应用程序16.6 (xdroom 像素名称) 传回像素延伸资料允用得内存空间16.7 (xdsize 串行) 传回像素延伸资料所占用的内存空间第十七类ARX 定义的函数17.1 (acad_colordlg 颜色码旗号) 显示出标准AutoCAD颜色选择交谈框17.2 (acad_helpdlg 求助文件名主题) 显示出标准AutoCAD 求助交谈框------------------- -------------------------------------- -执行结果+ (加) 返回所有数的和–(减) 将第一个数减去其他数的和并返回差值* (乘) 返回所有数的乘积/ (除) 将第一个数除以其他数的乘积并返回商= (等于) 比较参数是否相等/= (不等于) 比较参数是否值不相等< (小于) 如果每个参数值都小于它右边的参数则返回T,否则返回nil<= (小于或等于) 如果每个参数值都小于或等于它右边的参数则返回T,否则返回nil> (大于) 如果每个参数值都大于它右边的参数则返回T,否则返回nil>= (大于或等于) 如果每个参数值都大于或等于它右边的参数则返回T,否则返回nil~ (按位非) 返回参数的按位非(即 1 的补码)1+ (增1) 将参数加 11–(减1) 将参数减 1abs 返回参数的绝对值acad_colordlg 显示标准的AutoCAD 颜色选择对话框acad_helpdlg 启动帮助工具(已废弃)acad-pop-dbmod 恢复DBMOD 系统变量的值到最近用acad-push-dbmod 保存的值acad-push-dbmod 储存DBMOD 系统变量的当前值acad_strlsort 以ASCII码字母顺序对字符串表进行排序acad_truecolorcli 从命令行中选择AutoCAD 真彩色acad_truecolordlg 显示AutoCAD 真彩色选择对话框acdimenableupdate 控制关联标注的自动更新acet-layerp-mode 查询和设置LAYERPMODE 配置acet-layerp-mark 放置图层先前记录的开始和结束标记acet-laytrans 转换图形中的图层为其它图形或标准文件中所定义的标准acet-ms-to-ps 从模型空间单位转换实数值到图纸空间单位acet-ps-to-ms 从图纸空间单位转换实数值到模型空间单位action_tile 为某一对话框控件指定一个动作表达式,用户在对话框中选中这个控件时,就会执行该动作表达式add_list 在当前激活的对话框的列表框中增加一个字符串或修改其中的一个字符串alert 显示一个警告框,其中显示一条出错或警告信息alloc 设置段长度以供expand 函数使用and 返回表达式的逻辑与(AND) 运算结果angle 以弧度为单位返回两点之间连线与当前UCS 下X 轴之间的夹角angtof 将表示角度的字符串转换为实数(浮点数)形式的弧度值angtos 将一个以弧度为单位的角度值转换成字符串append 将任意多个表组合成一个表apply 将参数表传给指定的函数arx 返回当前已加载的ObjectARX 应用程序名表arxload 加载ObjectARX 应用程序arxunload 卸载ObjectARX 应用程序ascii 将字符串中的第一个字符转换成其ASCII 码(整数)后返回assoc 从关联表中搜索一个元素,如果找到则返回该关联表条目atan 返回一个数的反正切值(以弧度为单位)atof 将一个字符串转换成实数atoi 将一个字符串转换成整数atom 验证一个项是否是原子atoms-family 返回由当前已定义的符号组成的一个表autoarxload 预定义可自动加载某相关ObjectARX 应用程序的命令名autoload 预定义可自动加载某相关AutoLISP 应用程序的命令名Boole 用作一个通用的按位逻辑运算函数boundp 检验符号是否被设置为某个值caddr 返回表的第三个元素cadr 返回表的第二个元素car 返回表的第一个元素cdr 返回去掉了第一个元素的表chr 将代表字符ASCII 码的整数转换成包含相应的单一字符的字符串client_data_tile 将特定应用数据与一个对话框控件相关联close 关闭一个已打开的文件command 执行一条AutoCAD 命令cond 多条件、多处理结果函数cons 向表的头部添加一个元素,或构造一个点对cos 返回弧度角度的余弦值cvunit 在不同测量单位之间进行换算defun 定义函数defun-q 将函数定义为表defun-q-list-ref 返回用defun-q 定义的函数的表结构defun-q-list-set 将符号设置为以表形式定义的函数dictadd 在指定词典内添加非图形对象dictnext 查找词典中的下一个条目dictremove 从指定词典中删除一个条目dictrename 重命名词典条目dictsearch 在词典中搜索某个项dimx_tile 返回控件的宽度dimy_tile 返回控件的高度distance 返回两个点之间的距离distof 将一个表示实(浮点)数的字符串转换成一个实数done_dialog 中断对话框end_image 结束当前激活的对话框图像控件的操作end_list 结束对当前激活的对话框列表的操作entdel 删除对象(图元)或恢复先前删除的对象entget 获得对象(图元)的定义数据entlast 返回图形中最后那个未删除的主对象(图元)名称entmake 在图形中创建一个新图元entmakex 创建一个新对象或图元,赋给它一个句柄和图元名(但不指定所有者),并返回新图元的名称entmod 修改对象(图元)的定义数据entnext 返回图形中的下一个对象(图元)名entsel 提示用户通过指定一个点来选择单个对象(图元)entupd 更新对象(图元)的屏幕显示eq 确定两个表达式是否具有相同的约束条件equal 确定两个表达式的值是否相等*error* 可由用户定义的错误处理函数eval 返回AutoLISP 表达式的求值结果exit 强行使当前应用程序退出exp 返回常数 e (2.718282...) 的指定次幂(自然反对数)expand 为AutoLISP 分配附加空间expt 返回以某指定数为底数的若干次幂的值fill_image 在当前激活的对话框图像控件中画一个填充矩形findfile 在AutoCAD 库路径中搜索指定文件或目录fix 截去实数的小数部分,将它转换成整数后返回该整数float 将一个数转换为实数后返回foreach 将表中的所有成员以指定变量的身份带入表达式求值function 通知Visual LISP 编译器将参数作为内置函数进行链接和优化gc 强制收集无用数据,释放不再使用的节点gcd 返回两个整数的最大公约数get_attr 获取对话框指定控件的某个属性值get_tile 获取对话框指定控件的当前运行时的值getangle 暂停以等待用户输入角度,然后以弧度形式返回该角度getcfg 从acad.cfg 文件的AppData 段中检索应用数据getcname 获取AutoCAD 命令的本地化名或英文名getcorner 暂停等待用户输入矩形第二个角点的坐标getdist 暂停以等待用户输入距离getenv 以字符串方式返回指定的环境变量的值getfiled 用标准的AutoCAD 文件对话框提示用户输入一个文件名,并返回该文件名getint 暂停以等待用户输入一个整数并返回该整数getkword 暂停以等待用户输入一个关键字并返回该关键字getorient 暂停以等待用户输入角度,并返回该角度getpoint 暂停以等待用户输入点,并返回该点getreal 暂停以让用户输入一个实数并返回该实数getstring 暂停以等待用户输入字符串,并返回该字符串getvar 获取一个AutoCAD 系统变量的值graphscr 显示AutoCAD 图形屏幕grclear 清除当前视口(已废弃)grdraw 在当前视口中的两个点之间显示一条矢量线grread 从AutoCAD 的任何一种输入设备中读取数值grtext 将文本写到状态行或屏幕菜单区grvecs 在图形屏幕上绘制多个矢量handent 根据对象(图元)的句柄返回它的对象(图元)名help 调用帮助工具if 根据对条件的判断结果,对两个表达式求值initdia 强制显示下一个命令的对话框initget 为随后的用户输入函数调用创建关键字inters 求两条直线的交点itoa 将整数转换成字符串,并返回转换结果lambda 定义无名函数last 返回表的最后一个元素layoutlist 返回当前图形中所有图纸空间布局组成的表length 以整数形式返回表中元素的数目list 将任意数目的表达式组合成一个表listp 检查某个项是否是表load 对一个文件中的AutoLISP 表达式求值load_dialog 加载DCL 文件log 返回一个实数的自然对数logand 返回一个整数表中的各数按位逻辑与(AND) 的结果logior 返回一个整数表中的各数按位逻辑或(OR) 的结果lsh 返回某整数作指定次逻辑移位后的结果mapcar 将作为本函数参数的一个或多个表的各个元素提供给指定函数进行求值,并将由求值结果构成的表返回max 返回给定各数中的最大者mem 显示AutoLISP 内存的当前状态member 搜索表中是否包含某表达式,并从该表达式的第一次出现处返回表的其余部分menucmd 发出菜单命令,或设置并检索菜单项状态menugroup 检查是否加载了指定的菜单组min 返回给定各数中的最小者minusp 检查某个数是否是负数mode_tile 设置对话框控件的状态namedobjdict 返回当前图形的命名对象词典的图元名,它是所有非图形对象的根nentsel 提示用户指定点来选择对象(图元),得到这个对象所指片段的对象名nentselp 在没有用户输入的情况下,本函数的功能与nentsel 函数类似new_dialog 开始一个新的对话框并显示该对话框,而且能指定一个缺省操作not 检查一个项的求值结果是否为nilnth 返回表中的第n 个元素null 检查某项的值是否设置为nilnumberp 检查某个项是否是实数或整数open 打开一个文件,供其他AutoLISP I/O 函数访问or 返回对表达式进行逻辑或(OR) 运算的结果osnap 将某种对象捕捉模式作用于指定点而获得一个点,并返回该点polar 在UCS 坐标系下,求某点的指定角度和指定距离处的点,并返回该点prin1 在命令行打印一个表达式或将表达式写入已打开的文件中princ 在命令行打印表达式,或将表达式写入已打开的文件中print 在命令行打印表达式,或将表达式写入已打开的文件中progn 顺序地对每一个表达式进行求值,并返回最后那个表达式的值prompt 在屏幕提示区显示一个字符串quit 强制退出当前应用程序quote 返回表达式而不对其求值read 返回字符串中的第一个表或第一个原子read-char 从键盘输入缓冲区或打开文件中读入一个字符,并将该字符转换成十进制的ASCII 码值后返回read-line 从键盘或已打开文件中读取行结束符前的字符串redraw 重画当前视口或当前视口中的一个指定对象(图元)regapp 为当前AutoCAD 图形注册一个应用名,为使用扩展对象数据作准备rem 将第一个数除以第二个数,并返回余数repeat 对循环体中的每一个表达式进行指定次数的求值计算,并返回最后一个表达式的值reverse 将表的元素顺序倒置后返回rtos 将数字转换成字符串set 将引号中的符号名的值设置成一个表达式的值set_tile 设置对话框控件的值setcfg 将应用数据写到acad.cfg 文件的AppData 段中setenv 将系统环境变量设为指定值setfunhelp 给帮助工具注册一个用户定义函数,这样,用户在请求该命令的帮助时,就会调用正确的帮助文件和主题setq 将一个或多个符号的值设置为相应表达式的值setvar 设置AutoCAD 系统变量为指定值setview 为指定视口建立一个视图sin 以实数形式返回角度的正弦值(以弧度为单位)slide_image 在当前激活的对话框图像控件中显示AutoCAD 幻灯片snvalid 检查组成符号表名的各字符的有效性sqrt 以实数形式返回一个数的平方根ssadd 将对象(图元)加入到选择集中,或创建新的选择集ssdel 从选择集中撤消对象(图元)ssget 根据选定对象创建选择集ssgetfirst 判断哪些对象是被选取的和被夹取的sslength 求出一个选择集中的对象(图元)数目,并将其作为一个整数返回ssmemb 测试某对象(图元)是否是选择集的成员ssname 返回选择集中由序号指定的那个对象(图元)的图元名ssnamex 获取关于选择集创建方式的信息sssetfirst 设置哪些对象既是被选取的又是被夹取的startapp 启动Windows 应用程序start_dialog 显示对话框并将控制交给对话框start_image 开始对对话框控件中的一个图像控件进行操作start_list 开始处理对话框中的列表框或弹出式列表框中的列表strcase 将字符串中的所有字母转换成大写或小写后返回strcat 将多个字符串拼接成一个长字符串后返回strlen 以整数形式返回一个字符串中字符的个数subst 在表中搜索某旧项,并将表中出现的每一个旧项用新项代替,然后返回修改后所得的表substr 返回字符串中的一个子字符串tablet 获取和设置数字化仪校准tblnext 在符号表中查找下一项tblobjname 返回指定符号表条目的图元名tblsearch 在指定的符号表中搜索符号名term_dialog 终止当前所有的对话框,就象用户取消了它们一样terpri 在命令行上输出一个换行符textbox 测量一个指定文本对象的尺寸,并返回围住该文本的一个矩形框的对角坐标textpage 从图形屏幕切换至文本屏幕textscr 切换至文本屏幕(相当于AutoCAD Flip Screen 功能键)trace 调试AutoLISP 程序时的辅助函数trans 将一个点(或位移量)从一个坐标系转换成另一个坐标系type 返回指定项的数据类型unload_dialog 卸载DCL 文件untrace 清除指定函数的跟踪标志vector_image 在当前激活的对话框图像控件上显示一个矢量线。
五个实用的AutoCAD的lisp程序
五个实用的AutoCAD的lisp程序1、计算CAD图形中所有线段总长度(加载后只需框选所有线段便可得出这些线段的总长度)(defun c:LL ()(setvar "cmdecho" 1)(setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE"))))(setq i 0)(setq ll 0)(repeat (sslength en)(setq ss (ssname en i))(setq endata (entget ss))(command "lengthen" ss "")(setq dd (getvar "perimeter"))(setq ll (+ dd ll))(setq i (1+ i)))(princ "所选线条总长为:")(princ ll)(princ))2、标注CAD图形中所有线段(加载后只需框选所有线段便可得标注这些线段)(defun c:LLL ()(COMMAND "UCS" "")(setvar "cmdecho" 1)(SETVAR "OSMODE" 0)(setq AcadObject (vlax-get-acad-object)AcadDocument (vla-get-ActiveDocument Acadobject)mSpace (vla-get-ModelSpace Acaddocument));;选取需要测量的样条曲线、圆弧、直线、椭圆(setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE"))))(setq i 0);;获取系统参数textsize(setq shh (getvar "textsize"))(setq str_hh (strcat "\n文字高度 <" (rtos shh 2) ">: "))(setq hh (getdist str_hh))(while hh(setvar "textsize" hh)(setq hh nil));;输入标注文字高度;;循环开始(repeat (sslength en)(setq ss (ssname en i))(setq endata (entget ss))(command "lengthen" ss "")(setq dd (getvar "perimeter"))(princ (strcat "\n长度=" (rtos dd 2)));;寻找代表图层的字符串(setq aa (assoc 0 endata));;获取图层名称(setq aa1 (cdr aa));;判断线条种类(cond((= aa1 "SPLINE");;如果是spline(progn(setq arcObj (VLAX-ENAME->VLA-OBJECT ss))(setq startPnt1 (vla-get-ControlPoints arcObj))(setq p1(vlax-safearray->list (vlax-variant-value startPnt1)) )(setq x1 (car p1))(setq y1 (cadr p1))(setq z1 (caddr p1))(setq pp1 (list x1 y1 z1))(repeat (- (/ (length p1) 3) 1);;循环,寻找最后一个控制点(setq p1 (cdddr p1))(setq x2 (car p1))(setq y2 (cadr p1))(setq z2 (caddr p1)))(setq pp2 (list x2 y2 z2))))((= aa1 "LWPOLYLINE");;如果是LWPOLYLINE(progn(setq arcObj (VLAX-ENAME->VLA-OBJECT ss)) (setq startPnt1 (vla-get-Coordinates arcObj)) (setq p1(vlax-safearray->list (vlax-variant-value startPnt1)) )(setq x1 (car p1))(setq y1 (cadr p1))(setq z1 (caddr p1))(setq pp1 (list x1 y1 z1))(repeat (- (/ (length p1) 3) 1);;循环,寻找最后一个控制点(setq p1 (cdddr p1))(setq x2 (car p1))(setq y2 (cadr p1))(setq z2 (caddr p1)))(setq pp2 (list x2 y2 z2))))(t;;如果是其他种类线条(progn(setq arcObj (VLAX-ENAME->VLA-OBJECT ss)) (setq startPnt1 (vla-get-StartPoint arcObj));;获取起点(setq endPnt1 (vla-get-EndPoint arcObj));;获取终点(setq pp1(vlax-safearray->list (vlax-variant-value startPnt1)))(setqpp2 (vlax-safearray->list (vlax-variant-value endPnt1)) ))))(setq x1 (car pp1))(setq y1 (cadr pp1))(setq z1 (caddr pp1))(setq x2 (car pp2))(setq y2 (cadr pp2))(setq z2 (caddr pp2))(setq x (/ (+ x1 x2) 2))(setq y (/ (+ y1 y2) 2))(setq z (/ (+ z1 z2) 2))(setq pt (list x y z));;取得线段两端的中点(setq ang (angle pp1 pp2));;获取角度(if (> (* (/ ang pi) 180) 180)(setq ang (+ ang pi)))(command "text""j""bc"pt""(* (/ ang pi) 180)(strcat "" (rtos dd 2))"")(setq i (1+ i)))(prin1))(prompt "\n <>在图中直接写出长度") (prin1)3、连续打断程序(defun c:br1 ()(command "break" pause "f" pause "@"))4、将CAD文字导入Excel表格(defun c:Q2()(setq ffn (getfiled "写出文件" "" "xls" 1))(princ "\n选取文字...")(setq ss (ssget))(setq ff (open ffn "w"))(setq i 0)(repeat (sslength ss)(setq ssn (ssname ss i))(setq ssdata (entget ssn))(setq sstyp (cdr (assoc 0 ssdata)))(if (or (= sstyp "TEXT") (= sstyp "MTEXT"))(progn(setq txt (cdr (assoc 1 ssdata)))(princ txt ff)(princ "\n" ff)))(setq i (1+ i)))(close ff)(princ (strcat "\n写出文件: " ffn))(prin1))5、删除带颜色图元以下程序在别人的贴子里贴过.为了说明问题,今天再贴一次。
图幅编号计算方法
图幅编号计算方法图幅编号是地图制图中非常重要的一环,它能够帮助我们准确地定位和识别地图上的各个区域,为地图的使用提供了方便。
在地图制图中,图幅编号的计算方法是非常重要的,下面我们将详细介绍图幅编号的计算方法。
首先,图幅编号是根据地图的分幅情况而确定的。
一般来说,地图都是按照一定的比例尺进行分幅的,每个分幅都有一个唯一的编号。
在计算图幅编号时,我们需要先确定地图的比例尺和分幅情况,然后按照一定的规则进行计算。
其次,图幅编号的计算方法通常是根据地图的经纬度坐标来确定的。
我们可以根据地图上的经纬度坐标和比例尺来计算出每个图幅的编号。
一般来说,地图上的经纬度坐标是以度、分、秒的形式表示的,我们可以根据这些坐标来确定每个图幅的编号。
另外,图幅编号的计算方法还与地图的投影方式有关。
在地图制图中,常用的投影方式有墨卡托投影、等角投影、等距投影等。
不同的投影方式会对图幅编号的计算产生影响,因此在计算图幅编号时,我们需要考虑地图的投影方式。
此外,图幅编号的计算方法还需要考虑地图的分幅方式。
地图的分幅方式有横向分幅和纵向分幅两种,不同的分幅方式也会对图幅编号的计算产生影响。
最后,图幅编号的计算方法还需要考虑地图的坐标原点和坐标系。
地图的坐标原点和坐标系不同,会对图幅编号的计算产生影响,因此在计算图幅编号时,我们需要考虑地图的坐标原点和坐标系。
综上所述,图幅编号的计算方法是根据地图的分幅情况、经纬度坐标、投影方式、分幅方式、坐标原点和坐标系等因素来确定的。
在地图制图中,我们需要根据这些因素来准确地计算图幅编号,以便于地图的使用和识别。
希望本文对图幅编号的计算方法有所帮助。
图幅编号计算方法
图幅编号计算方法图幅编号是地图制图中的重要内容,它是对地图进行编码和管理的重要手段。
图幅编号的计算方法对于地图制图工作具有重要的指导意义。
下面将介绍图幅编号的计算方法。
首先,图幅编号的计算是基于地图的坐标系统的。
在地图制图中,通常采用的是经纬度坐标系统或者投影坐标系统。
根据所采用的坐标系统,可以确定地图的起始点和坐标轴的方向,进而确定图幅编号的计算方法。
其次,根据所采用的坐标系统,可以确定图幅编号的编制单位。
在经纬度坐标系统下,图幅编号通常以经度和纬度为单位进行编制;在投影坐标系统下,图幅编号通常以投影坐标为单位进行编制。
根据编制单位的不同,确定了图幅编号的计算方法。
再次,图幅编号的计算方法需要考虑地图的比例尺。
在地图制图中,通常会规定地图的比例尺,比如1:50000、1:100000等。
在确定图幅编号的计算方法时,需要考虑地图的比例尺,以保证图幅编号的编制精度和准确性。
此外,图幅编号的计算方法还需要考虑地图的分幅方式。
在地图制图中,通常会根据地图的大小和内容进行分幅,以便于编制和管理。
在确定图幅编号的计算方法时,需要考虑地图的分幅方式,以保证图幅编号的编制合理性和规范性。
最后,图幅编号的计算方法还需要考虑地图的投影方式。
在地图制图中,通常会根据地图的地理位置和内容选择合适的投影方式,以保证地图的形状和面积的准确性。
在确定图幅编号的计算方法时,需要考虑地图的投影方式,以保证图幅编号的编制符合地图的实际情况。
综上所述,图幅编号的计算方法是基于地图的坐标系统、编制单位、比例尺、分幅方式和投影方式的综合考虑而确定的。
只有在考虑了这些因素的基础上,才能确定合理、规范的图幅编号的计算方法,从而保证地图制图工作的顺利进行。
图幅号计算
1234567891011纬度经度输入经纬度(°)30114输入经纬度(′)3128输入经纬度(″)00纬差经差°′″1:100万8504°6°2800(1:50万编号2×2)新850B 112°3°3000(1:25万编号4×4)新850C 211°1°30′3000(1:20w编号6×6)暂无850C′3140″1°3000(1:10万编号12×12)新850D 5120′30′30200(1::5万编号24×24)新850E 9210′15′30300(1:2.5万编号48×48)新850F 1845′7′30″30300(1:1万编号96×96)新850G 3682′30″3′45″30300(1:5000编号192×192)新850H 72151′15″1′52.5″30300(1:50万编号6×6)旧85012°3°3000(1:20万编号6×6)8501340′1°3000(1:10万编号12×12)旧8504930′20′30200(1:5万编号)旧85049210′15′30300(1:1万编号)旧85049322′30″3′45″30300 旧的图幅号格式:100w:字母-数字;50w:字母-数字-字母;20w:字母-数字-(数字);10w:字母制作人:贠海晏 单位:内蒙古矿业开发有限责任公司提示:输入经纬度后,所需图符号在相应图幅号备注:新的图幅号格式:字母数字字母000000。
图幅纬度范纬、经差最小纬度121314151617181920°′″°′″°′″320011400120003200114001170031001140011530030400114001150030400114001143003040011415011430030350114223011430030323011426151143003031151142615114287.5320011400120003040011400115003040011400114300304001141501143003032301142615114300:字母-数字-数字;5w:字母-数字-数字-字母;1w:字母-数字-数字-(数字)相应栏中自动出现,图符号格式见备注最小经度最大经度图幅经纬度范围图幅经度范围纬度范围最大纬度。
图幅编号的计算
图幅编号的计算图幅编号的计算经纬度(λ,φ) ,可按下式计算出1:100万比例尺的地形图图幅编号a=[φ/4o]+1b=[λ/6o]+31某点经度为121o31‘30“,纬度为31o16‘40“,计算其所在1:100万比例尺地形图图幅的编号a=[ 121o31‘30“/4o]+1=8b=[31o16‘40“/6o]+31=51由a可得出,其所对应的字符码为H故该点所在1:100万比例尺地形图图幅的编号为H51(31+16/60+40/3600)/4=31.2778/4=7.8194已知图幅内某点的经纬度(λ,φ) ,可按下式计算出所求比例尺地形图在1:100万比例尺的地形图图号后的行号和列号c=4o/△φ-[(φ/4o)/△φ]d=[(λ/6o)/△λ]+1( )——商取余;c——所求比例尺地形图的行号;[ ]——商取整;d——所求比例尺地形图的列号;φ——图幅内某点的纬度;λ——图幅内某点的经度;△φ——所求比例尺地形图分幅的纬差;△λ——所求比例尺地形图分幅的经差;例:某点经度为121o31‘30“,纬度为31o16‘40“,计算其所在1:1万比例尺地形图图幅的编号根据其所在1:100万比例尺图幅及其比例尺(1:10000),编号的前四位代码为H51G,然后按1:10000的分幅纬度差和经度差:△φ=2’30’’,△λ=3’45’’(1:50万△φ=2o△λ=3o,1:20万40’,1o,1:10万20’,30’,1:5万10’,15’,1:2.5万5’,7’30’’,1:1万2’30’’,3’45’’)计算其行号和列号(各三位):c=4/2’30’’-[(31o16‘40“/4)/2’30’’]=018d=[(121o31‘30“/6o)/3’45’’]+1=025该点所在1:1万比例尺地形图图幅的编号为H51G018025根据图号计算图幅西南图廓点的经纬度已知某地形图的图号X1X2X3X4X5X6X7X8X9X10,①根据该图号的前三位代码X1X2X3按下式计算其所在1:100万比例尺地形图对应的西南图廓点的经纬度λ0、φ0λ0=(X2X3-31)*6oφ0=(X1-1)*4oX1——此幅1:100万比例尺地形图图幅所在纬度带字符码对应的数字码;X2X3——经度带的数字码根据比例尺代码X4确定其纬差△φ和经差△λ,则该图幅的西南图廓点的经纬度λ、φ为λ=λ0+(X8X9X10-1)*△λΦ=φ0+(4o/△φ-X5X6X7)*△φ例:某地形图图幅的编号为H51G018025,求该图幅西南图廓点的经纬度及其范围。
图幅编号计算方法
图幅编号计算方法图幅编号是地图制图中常用的一种编号方式,它可以帮助我们更好地定位和管理地图信息。
在地理信息系统(GIS)和地图制图领域,图幅编号的计算方法是非常重要的,它直接影响着地图的精度和准确性。
下面,我们将介绍图幅编号的计算方法,希望能对大家有所帮助。
图幅编号通常是由数字和字母组成的,它能够唯一地标识一个地图图幅。
在实际应用中,图幅编号的计算方法可以根据具体的地图坐标系和比例尺来确定。
一般来说,图幅编号的计算方法包括以下几个步骤:首先,确定地图的坐标系和比例尺。
地图的坐标系通常有经纬度坐标系、高斯投影坐标系等,而比例尺则是地图上距离和实际距离的比值。
这两个参数的确定对图幅编号的计算至关重要,因为它们决定了地图的精度和范围。
其次,根据地图的坐标系和比例尺,确定图幅的范围和大小。
一般来说,地图会被分割成多个图幅,每个图幅都有其特定的范围和大小。
通过计算地图的实际范围和大小,我们可以确定每个图幅的编号范围。
然后,根据图幅的范围和大小,确定图幅编号的编码规则。
图幅编号的编码规则通常包括数字和字母的组合,它们代表了图幅的位置和顺序。
通过编码规则,我们可以将每个图幅唯一地标识出来。
最后,根据编码规则,计算出每个图幅的编号。
这一步需要根据具体的地图范围和大小,按照编码规则逐个计算出每个图幅的编号。
在计算过程中,需要注意编号的顺序和唯一性,以确保每个图幅都有唯一的编号。
总的来说,图幅编号的计算方法是根据地图的坐标系、比例尺、范围和大小来确定的。
通过合理的计算方法,我们可以为地图制图提供准确的编号,从而更好地管理和利用地图信息。
希望本文介绍的内容能对大家有所帮助,谢谢阅读!。
几个有用的CAD小程序
1.计算所有线段总长度(加载后只需框选所有线段便可得出这些线段的总长度) (defun c:LL ()(setvar "cmdecho" 1)(setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE"))))(setq i 0)(setq ll 0)(repeat (sslength en)(setq ss (ssname en i))(setq endata (entget ss))(command "lengthen" ss "")(setq dd (getvar "perimeter"))(setq ll (+ dd ll))(setq i (1+ i)))(princ "所选线条总长为:")(princ ll)(princ))2.标注所有线段(加载后只需框选所有线段便可得标注这些线段)(defun c:LLL ()(COMMAND "UCS" "")(setvar "cmdecho" 1)(SETVAR "OSMODE" 0)(setq AcadObject (vlax-get-acad-object)AcadDocument (vla-get-ActiveDocument Acadobject)mSpace (vla-get-ModelSpace Acaddocument));;选取需要测量的样条曲线、圆弧、直线、椭圆(setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE"))))(setq i 0);;获取系统参数textsize(setq shh (getvar "textsize"))(setq str_hh (strcat "\n文字高度<" (rtos shh 2) ">: ")) (setq hh (getdist str_hh))(while hh(setvar "textsize" hh)(setq hh nil));;输入标注文字高度;;循环开始(repeat (sslength en)(setq ss (ssname en i))(setq endata (entget ss))(command "lengthen" ss "")(setq dd (getvar "perimeter"))(princ (strcat "\n长度=" (rtos dd 2)));;寻找代表图层的字符串(setq aa (assoc 0 endata));;获取图层名称(setq aa1 (cdr aa));;判断线条种类(cond((= aa1 "SPLINE");;如果是spline(progn(setq arcObj (VLAX-ENAME->VLA-OBJECT ss)) (setq startPnt1 (vla-get-ControlPoints arcObj))(setq p1(vlax-safearray->list (vlax-variant-value startPnt1)) )(setq x1 (car p1))(setq z1 (caddr p1))(setq pp1 (list x1 y1 z1))(repeat (- (/ (length p1) 3) 1);;循环,寻找最后一个控制点(setq p1 (cdddr p1))(setq x2 (car p1))(setq y2 (cadr p1))(setq z2 (caddr p1)))(setq pp2 (list x2 y2 z2))))((= aa1 "LWPOLYLINE");;如果是LWPOLYLINE(progn(setq arcObj (VLAX-ENAME->VLA-OBJECT ss)) (setq startPnt1 (vla-get-Coordinates arcObj))(setq p1(vlax-safearray->list (vlax-variant-value startPnt1)) )(setq x1 (car p1))(setq y1 (cadr p1))(setq z1 (caddr p1))(setq pp1 (list x1 y1 z1))(repeat (- (/ (length p1) 3) 1);;循环,寻找最后一个控制点(setq p1 (cdddr p1))(setq x2 (car p1))(setq y2 (cadr p1)))(setq pp2 (list x2 y2 z2))))(t;;如果是其他种类线条(progn(setq arcObj (VLAX-ENAME->VLA-OBJECT ss)) (setq startPnt1 (vla-get-StartPoint arcObj));;获取起点(setq endPnt1 (vla-get-EndPoint arcObj));;获取终点(setq pp1(vlax-safearray->list (vlax-variant-value startPnt1)))(setqpp2 (vlax-safearray->list (vlax-variant-value endPnt1)) ))))(setq x1 (car pp1))(setq y1 (cadr pp1))(setq z1 (caddr pp1))(setq x2 (car pp2))(setq y2 (cadr pp2))(setq z2 (caddr pp2))(setq x (/ (+ x1 x2) 2))(setq y (/ (+ y1 y2) 2))(setq pt (list x y z));;取得线段两端的中点(setq ang (angle pp1 pp2));;获取角度(if (> (* (/ ang pi) 180) 180)(setq ang (+ ang pi)))(command "text""j""bc"pt""(* (/ ang pi) 180)(strcat "" (rtos dd 2))"")(setq i (1+ i)))(prin1))(prompt "\n <>在图中直接写出长度") (prin1)3.连续打断程序(defun c:br1 ()(command "break" pause "f" pause "@") )4.将CAD文字导入Excel表格(defun c:Q2()(setq ffn (getfiled "写出文件" "" "xls" 1)) (princ "\n选取文字...")(setq ss (ssget))(setq ff (open ffn "w"))(setq i 0)(repeat (sslength ss)(setq ssn (ssname ss i))(setq ssdata (entget ssn))(setq sstyp (cdr (assoc 0 ssdata)))(if (or (= sstyp "TEXT") (= sstyp "MTEXT")) (progn(setq txt (cdr (assoc 1 ssdata)))(princ txt ff)(princ "\n" ff)))(setq i (1+ i)))(close ff)(princ (strcat "\n写出文件: " ffn))(prin1))5删除带颜色图元以下程序在别人的贴子里贴过.为了说明问题,今天再贴一次. 改颜色的LISP程序(defun c:c1()(ssget)(command "chprop" "p" "" "c" "1" "") (princ)) (defun c:c2()(ssget)(command "chprop" "p" "" "c" "2" "") (princ)) (defun c:c3()(ssget)(command "chprop" "p" "" "c" "3" "") (princ)) (defun c:c4()(ssget)(command "chprop" "p" "" "c" "4" "") (princ)) (defun c:c5()(ssget)(command "chprop" "p" "" "c" "5" "") (princ)) (defun c:c6()(ssget)(command "chprop" "p" "" "c" "6" "") (princ)) (defun c:c7()(ssget)(command "chprop" "p" "" "c" "7" "") (princ)) (defun c:c8()(ssget)(command "chprop" "p" "" "c" "8" "") (princ))你用C1 命令就可以将图元改为红色了.其余类似.删除红色图元(defun C:D1 (/ m A M)(setq m:err *error* *error* *merr*)(setvar "cmdecho" 0)(command "UNDO" "G")(prompt "选择图形")(setq A (ssget '((62 . 1)) ))(if (/= A nil)(progn(setq M (sslength A))(command "erase" A "")(princ "\n共删除红色图元<")(princ M)(princ ">个")))(command "UNDO" "E")(princ) )这样,键入D1 命令,就可以删除红色的图元了.。
cad怎么快速计算图形尺寸
cad怎么快速计算图形尺寸篇一:cad教程如何把一个图形缩放为想要的尺寸Cad教程如何把一个图形缩放为想要的尺寸网上流传了很多CAD练习图纸,有一些图纸只给出了一个尺寸,如下图所示.很多初学者看到这样的图不知如何下手,总是想如何才能确定中间小圆的半径.其实如果对缩放(SCALE)命令的用法和参数足够了解的话,这种图形画起来非常简单,先从内部的圆开始画,半径随意,只需要画好一个类似的图形,然后用SCALE命令将图形整体缩放到标注的尺寸就好了.以上面的左边的图形为例,我们可以随意先假设圆的半径为_,操作步骤如下:1. 先随意画一个半径为_的圆2. 复制一个圆到上方,距离是_.3. 用相切相切半径的方式将中间的圆画出来.4. 用镜像命令,选中竖排的两个圆,镜像轴选中间圆的圆心为起点,打开正交或极轴,确定竖直方向为镜像轴,镜像出另外两个圆.5. 用自己最顺手的方法画出矩形的四条边.6. 输入SCALE命令,选中所有图形,基点选择矩形的某一个角点.7. 出现指定比例因子提示时输入R,回车,在提示〝指定参照长度〞时通过捕捉矩形底边的两个端点来确定长度,在提示〝输入新长度〞时输入90,回车.操作提示如下: 指定比例因子或 [复制(C)/参照(R)] 1.__ : r 指定参照长度 1.__ : 指定第二点:指定新的长度或 [点(P)] 1.__ : 90我们无须进行任何计算,就可以快速得到指定尺寸的图形,计算的工作交给CAD软件就行了.在指定参照长度或新长度时都可以直接输入数值或从图中通过指定两个点来获取长度,因此利用参照选项不仅可以将图形缩放到某一个指定尺寸,也可以让图形缩放到跟其他图形相同的长度.如果我们对CAD命令的功能及选项的作用不了解,要画出上图以及类似的图纸时会不知如何下手,但如果对命令和参数足够了解的话,一看到图形给出的条件,就立刻会想出最简单.最快速的方法.在初学CAD的时候,要注意看命令行提示,如果命令的每个参数都试一试并弄清楚它的作用,会对今后绘图有很大帮助.网上流传了很多CAD练习图纸,有一些图纸只给出了一个尺寸,如下图所示.很多初学者看到这样的图不知如何下手,总是想如何才能确定中间小圆的半径.其实如果对缩放(SCALE)命令的用法和参数足够了解的话,这种图形画起来非常简单,先从内部的圆开始画,半径随意,只需要画好一个类似的图形,然后用SCALE命令将图形整体缩放到标注的尺寸就好了.以上面的左边的图形为例,我们可以随意先假设圆的半径为_,操作步骤如下:1. 先随意画一个半径为_的圆2. 复制一个圆到上方,距离是_.3. 用相切相切半径的方式将中间的圆画出来.4. 用镜像命令,选中竖排的两个圆,镜像轴选中间圆的圆心为起点,打开正交或极轴,确定竖直方向为镜像轴,镜像出另外两个圆.5. 用自己最顺手的方法画出矩形的四条边.6. 输入SCALE命令,选中所有图形,基点选择矩形的某一个角点.7. 出现指定比例因子提示时输入R,回车,在提示〝指定参照长度〞时通过捕捉矩形底边的两个端点来确定长度,在提示〝输入新长度〞时输入90,回车.操作提示如下: 指定比例因子或 [复制(C)/参照(R)] 1.__ : r 指定参照长度 1.__ : 指定第二点:指定新的长度或 [点(P)] 1.__ : 90我们无须进行任何计算,就可以快速得到指定尺寸的图形,计算的工作交给CAD软件就行了.在指定参照长度或新长度时都可以直接输入数值或从图中通过指定两个点来获取长度,因此利用参照选项不仅可以将图形缩放到某一个指定尺寸,也可以让图形缩放到跟其他图形相同的长度.如果我们对CAD命令的功能及选项的作用不了解,要画出上图以及类似的图纸时会不知如何下手,但如果对命令和参数足够了解的话,一看到图形给出的条件,就立刻会想出最简单.最快速的方法.在初学CAD的时候,要注意看命令行提示,如果命令的每个参数都试一试并弄清楚它的作用,会对今后绘图有很大帮助.免费CAD教程分享,加QQ_772496_索取网上流传了很多CAD练习图纸,有一些图纸只给出了一个尺寸,如下图所示.很多初学者看到这样的图不知如何下手,总是想如何才能确定中间小圆的半径.其实如果对缩放(SCALE)命令的用法和参数足够了解的话,这种图形画起来非常简单,先从内部的圆开始画,半径随意,只需要画好一个类似的图形,然后用SCALE命令将图形整体缩放到标注的尺寸就好了.以上面的左边的图形为例,我们可以随意先假设圆的半径为_,操作步骤如下:1. 先随意画一个半径为_的圆2. 复制一个圆到上方,距离是_.3. 用相切相切半径的方式将中间的圆画出来.4. 用镜像命令,选中竖排的两个圆,镜像轴选中间圆的圆心为起点,打开正交或极轴,确定竖直方向为镜像轴,镜像出另外两个圆.5. 用自己最顺手的方法画出矩形的四条边.6. 输入SCALE命令,选中所有图形,基点选择矩形的某一个角点.7. 出现指定比例因子提示时输入R,回车,在提示〝指定参照长度〞时通过捕捉矩形底边的两个端点来确定长度,在提示〝输入新长度〞时输入90,回车.操作提示如下: 指定比例因子或 [复制(C)/参照(R)] 1.__ : r 指定参照长度 1.__ : 指定第二点:指定新的长度或 [点(P)] 1.__ : 90我们无须进行任何计算,就可以快速得到指定尺寸的图形,计算的工作交给CAD软件就行了.在指定参照长度或新长度时都可以直接输入数值或从图中通过指定两个点来获取长度,因此利用参照选项不仅可以将图形缩放到某一个指定尺寸,也可以让图形缩放到跟其他图形相同的长度.如果我们对CAD命令的功能及选项的作用不了解,要画出上图以及类似的图纸时会不知如何下手,但如果对命令和参数足够了解的话,一看到图形给出的条件,就立刻会想出最简单.最快速的方法.在初学CAD的时候,要注意看命令行提示,如果命令的每个参数都试一试并弄清楚它的作用,会对今后绘图有很大帮助. 篇二:CAD计算复杂图形面积的方法用CAD计算复杂图形面积的方法在形状比较复杂(有直线和弧线在一起)的时候,如果原先没有描好边界线,要计算面积,则要使用多段线命令(pl)来描好边界线,再用求面积命令(aa)并选对象(o)来求得已描好的图形的面积.以如下图形实例:1) 输入pl,按空格执行2) 一般选择左下角(形成一个习惯以免最后忘记从哪里开始点的)点第一点3) 当后面要描是直线时,直接一个一个点击各个转角点4) 当要描的是圆弧时,输入a,空格,转为画弧线模式,再输入s,空格,采用经过第二点的方式来画弧线(一般这是最为方便的),点击弧线中段的某一个交点(当没有交点时,设置自动捕捉里面的中点要选中,以便选择弧线的中点作为第二点)为第二点,再点弧线的另一端点,就描好了这一段弧线(这是圆弧的,有时不是圆弧,就暂且按圆弧一小段一小段尽量贴近的方式描过去).5) 当后面的还是圆弧时,继续输入s,空格,重复画弧线.6) 当后面是直线时,输入字母l,空格,转为描直线模式.(转为直线时,一定要前一段弧线已经画完才能转换,不然还在画弧线当中cad不能理解该输入的参数,当已经输错时,按一下Esc键可退出这一个参数的输入).7) 有时觉得前一段线(直线弧线均同)不满意时,输入u,空格,可取消前一段线,重复输入u和空格,可一段一段往前取消,退回去,而不用全部重来.8) 画完最后一段时,应点回最初开始的那一点,输入c,空格,封闭该区间,这样,就描好了一整个区域的边界线.可以用面积命令aa来求面积了.面积命令:输入aa,空格,输入o,空格(求对象的面积),选择刚画好的边界线,对象的面积和周长就出来了.注意:求得的数值为按cad图形上图形的尺寸来的,普通平面图尺寸是毫米,因此面积数值应该将小数点前移6位方为平方米数值.当有些图(如有些总平图)直接以m为单位时,求得的面积就是m2,小数点不用前移.注意:有些图比例没有按1:1对应时,应用比例缩放命令(sc)缩放到1:1的比例,这样求得的面积才是正确的面积.算长度:除上述面积命令可以同时获得周长之外,可能局部需要加减一些长度, 直线长度:用测距命令(di)输入di,空格,点击要测量距离(就是长度)的起点和终点,则这两点间的长度(距离)就出来了,单位一般为毫米.(当要测矩形的长和宽时可点击矩形的两个对角点,看结果里面的_向和y向数值分别就是长和宽,斜向的矩形不适用). 弧线长度:用测长度命令(len)测之前,先点击一下要测量的弧线,使其处于选中的状态,确定是你要测的那一段,而没有跟旁边的线连在一起,当连在一起时,要先将它们分解(_p),再求该段的长度,或者该段处于刚画好的边界中的一段,要保留该边界的整体性以便以后还要测量时,则再单独画一遍这段弧线以供测量长度之用.输入len,空格,选择该段弧线,长度数值就出来了.不规则.复杂CAD图形快速计算面积方法(_-_-29 _:_:56)CAD如何计算面积,有较多的方法,我们所使用的,基本上都是比较简单的图形. 但是,对于一些复杂的CAD不规则图形,如何快速计算面积,就有些麻烦.现将本人常用的三种方法汇总如下,供喜爱制CAD图朋友们参考.1.简单图形.如矩形.梯形.三角形.平行四边形.或是四边.五边形等.只须执行命令AREA (如果朋友连这个命令都不知道在如何运行,那我也晕倒了),在命令提示后,打开捕捉功能,依次选取矩形或梯形.三角形等图形各交点后回车,或是点击鼠标右键,AutoCAD将自动计算面积(Area).周长(Perimeter),并将结果列出.2.圆及多段线等组成的图形.对于圆或其它多段线(Polyline).样条线(Spline)组成的二维封闭图形.执行命令AREA,在命令提示〝Specify first corner point or _Object/Add/Subtract+:〞后,选择Object选项,根据提示选择要计算的图形,AutoCAD将自动计算面积.周长.3.复杂图形.对于由简单直线.圆弧组成的复杂封闭图形,不能直接执行AREA命令计算图形面积.必须先使用region命令把要计算面积的图形创建为面域,然后再执行命令AREA,在命令提示〝指定第一角点或[O/A/S+:〞后,命令行输入o,然后再根据提示选择刚刚建立的面域图形,面积.周长等将自动计算.喜欢CAD的朋友,不妨一试.不明之处,我们可以共同控讨.用CAD计算复杂图形面积的方法用CAD计算复杂图形面积的方法在形状比较复杂(有直线和弧线在一起)的时候,如果原先没有描好边界线,要计算面积,则要使用多段线命令(pl)来描好边界线,再用求面积命令(aa)并选对象(o)来求得已描好的图形的面积.面积命令:输入aa,空格,输入o,空格(求对象的面积),选择刚画好的边界线,对象的面积和周长就出来了.七个命令让你成为CAD高手.一.绘制基本图形对象 1.几个基本常用的命令 1.1.鼠标操作通常情况下左键代表选择功能,右键代表确定回车功能.二.图形对象的修改由于三维算量软件对绘图功能已针对算量特点改进的很傻瓜化操作,不需要掌握太多的绘图命令,但是修改命令就使用很频繁了.单击修剪工具或输入TR,提示选择对象,选择边界对象,单击右键,提示选择对象,左键单击选择剪切后不需要的那部分,单击右键,确定.CAD计算面积的几种方法看高手的!1.对于简单图形,如矩形.三角形.只须执行命令AREA(可以是命令行输入或篇三:CAD初学者零件图尺寸1.根据要求完成以下图形的绘制(包括标题栏和技术要求)。
根据已知坐标求图幅号步骤
根据已知坐标求图幅号步骤一、大地座标→经纬度(地理坐标)原始的大地坐标由一个8位的Y和一个7位的X组成,如隆安勘测丁截图中任意一点坐标,Y:36420524,X:2569954,这组坐标数据中的Y的前两位为36,是分带号,一般使用的分带有三分带,六分带,这里的坐标是三分带的,记下Y 前的这两位数,在原始数据中去除掉,实际坐标数据变为:Y—6位,X—7位。
变为Y:420524,X:2569954二、打开MAPGIS,启动坐标投影变形程序选择“实用服务→投影变换系统→单点输入投影”如图输入坐标值,如图设置原始投影参数坐标类型》大地坐标系,椭球参数、投影类型、投影分带、带号》选择与设计说明一致的参数。
完成设置后》确定。
坐标系类型——大地坐标系投影类型——5:高斯克吕格投影比例尺分母——1椭球面高程——0投影面高程——0投影带类型——3度带或6度带投影带序号——31设置结果投影参数坐标系类型》地理坐标系,坐标单位》DDDMMSS.SS,点击确定完成。
点击》投影点,在投影结果输出窗显示经度及纬度,如下:以上输出结果经度读为:107°13′24.66797″,纬度读为:23°13′37.81696″根据以上经纬度值计算1:10000图幅号,在经纬度查图号表格中输入对应的经纬度,如图:则1:10000的图幅号为:F48G019084,蓝色数字对应英文字母的ABCDEF……,第二个字母后面的数字不足三位的在前面加0.三、根据图幅号计算1:10000图框的四个点坐标,从而确定定界线路的各个图幅号。
打开MAPGIS,启动图像分析程序点击文件》数据输入》转换数据类型(格式为.JPG)》添加文件(随便选择一张格式为JPG的影像图)》点击转换。
点击文件》打开影像(选择刚才已经转换好的影像图)》点击镶嵌融合,如图:选择DRG生产右侧小三角中的图幅生成控制点选项,如图:在输入图幅信息中输入刚刚查询好的图幅号F48G019084.如图:点击确定,就可知道该图幅号的图框坐标了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(grdraw pt3 pt4 7)
(grdraw pt4 pt1 7)
(setq pt (getpoint "\n请输入座标点:"))
);while
(princ)
);defun
((= scale 2000)(setq NOx 1000 NOy 1000))
((= scale 5000)(setq NOx 2000 NOy 3000))
((= scale 10000)(setq NOx 4000 NOy 6000))
);cond
(setq pt (getpoint "\n请输入座标点:"))
);defun
(defun c:tfh (/ pt scale1 NOx NOy tfhm pt1求龙岗区1:1000、1:2000、1:5000和1:10000的图幅号")
(if(or(not(numberp scale))(= scale 0)) (setq scale 1000))
((= scale 10000)(setq NOx 4000 NOy 6000))
);cond
(setq tfhm(rtos(+(*(fix(/(-(car pt)80000)NOy))100)(fix(/(-(cadr pt)8000)NOx)))2 0))
((= scale 10000)(if(=(strlen tfhm)3)(setq tfhm (strcat "40" tfhm))(setq tfhm(strcat "4" tfhm))))
);cond
(setq tfhm tfhm);最后加上这句以确保该函数返回值为tfhm
(defun tfh (pt scale / pt NOx NOy tfhm)
(cond ((= scale 1000)(setq NOx 500 NOy 500))
((= scale 2000)(setq NOx 1000 NOy 1000))
((= scale 5000)(setq NOx 2000 NOy 3000))
(cond ((= scale 1000)
(if (<(strlen tfhm) 5)(setq tfhm (strcat "0" tfhm))))
((= scale 2000)(setq tfhm (strcat "2" tfhm)))
((= scale 5000)(setq tfhm (strcat "3" tfhm)))
(while pt
(if (/= pt nil)(progn
(setq tfhm (tfh pt scale))
(prompt (strcat "[" tfhm "]"))
));progn,if
(setq pt1(list(+ 80000(* NOy(atof(if(= scale 1000)(substr tfhm 1 3)(substr tfhm 2 2)))))(+ 8000(* NOx(atof(substr tfhm 4 2)))))
;公式,[]表示取整
;k1=[(x-8000)]/NOx
;k2=[(y-80000)]/NOy
;图号为:k2*100+k1
;对应于1/1000,1/2000,1/5000,1/10000,其中NOx分别为;500,1000,2000,4000,NOy为500,1000,3000,6000
;其中1/2000,1/5000,1/10000应在最前方分别加2,3,4,即分别加上;20000,30000,40000
pt2 (mapcar '+ pt1 (list NOy 0.0))
pt3 (mapcar '+ pt1 (list NOy NOx))
pt4 (mapcar '+ pt1 (list 0.0 NOx))
)
(grdraw pt1 pt2 7)
(setq scale1 (getreal(strcat "\n请输入比例尺<1:" (rtos scale)">:1:")))
(if (and (/= scale1 0)(not(null scale1))) (setq scale scale1))
(cond ((= scale 1000)(setq NOx 500 NOy 500))