文档库 最新最全的文档下载
当前位置:文档库 › cad平台上测绘中VBA展野外点点号和方位角

cad平台上测绘中VBA展野外点点号和方位角

cad平台上测绘中VBA展野外点点号和方位角
cad平台上测绘中VBA展野外点点号和方位角

下面就是自动在AutoCAD中画点的Visual Basic程序代码(部分),最后将其制作成可执行文件(e: \展点.exe)供AutoCAD菜单宏调用。

假若数据采集格式为:

点号,X坐标,Y坐标, Z(高程)

Open数据文件名For Input As #1

set Points = https://www.wendangku.net/doc/4816668766.html,yers.Add(/点0)-增加/点0图层Points.Color = acBlue

Set Heights = https://www.wendangku.net/doc/4816668766.html,yers.Add(/高程0)-增加/高程0图层Heights.Color = acGreen

Set nos = https://www.wendangku.net/doc/4816668766.html,yers.Add(/点号0)

-增加/点号0图层

nos.Color = acRed

Do While Not EOF(1)

Input #1, NO, x, y, z -将文件中数据分别附值

给这几个变量

Pt(0) = y: Pt(1) = x: Pt(2) = 0 -测量坐标系与

AutoCAD坐标系的区别

Set AdPoint = modelobj.AddPoint(Pt) -在模型空间中画点https://www.wendangku.net/doc/4816668766.html,yer =/点0

SetAdNO = modelobj.AddText(Str(NO), Pt, 1#)-在模型空

间中绘制点号

https://www.wendangku.net/doc/4816668766.html,yer =/点号0

Ht(0) = y + 0.9: Ht(1) = x: Ht(2) = 0

Set AdHeight = modelobj.AddText(Str(z), Ht, 2#) https://www.wendangku.net/doc/4816668766.html,yer =/高程0

Loop

Close #1

acapp1.Application.ZoomExtents

Form1.Visible = False

End Sub

将展成的点连线的VBA代码为:

Set PtLine = https://www.wendangku.net/doc/4816668766.html,yers.Add(/点连线0) PtLine.color = acCyan

Dim k

Dim Coord As Variant

For Each entry In ThisDrawing.ModelSpace

If entry.EntityType = acPoint Then

i = i + 1

End If

Next -获取模型空间中的点数目

ReDim entrycopys(i -1, 2) -根据获得的点数目重新定义数组维数

k = 0

For Each entry In ThisDrawing.ModelSpace

If entry.EntityType = acPoint Then

Coord = entry.Coordinates -获取实体坐标

entrycopys(k, 0) = Coord (0)

entrycopys(k, 1) = Coord (1)

entrycopys(k, 2) = Coord (2)

k = k + 1

End If

Next

Dim StPt(0 To 2) As Double

Dim EtPt(0 To 2) As Double

For j = 1 To i -1

StPt(0) = entrycopys(j -1, 0)

StPt(1) = entrycopys(j -1, 1)

StPt(2) = entrycopys(j -1, 2)

EtPt(0) = entrycopys(j, 0)

EtPt(1) = entrycopys(j, 1)

EtPt(2) = entrycopys(j, 2)

Set Lines = ThisDrawing.ModelSpace.AddLine(StPt, EtPt)-将当

前点与前一个点连线

https://www.wendangku.net/doc/4816668766.html,yer =/点连线0

Next j

ThisDrawing.Application.ZoomExtents

如果要在Visual Basic环境中写入程序,则只要将VBA中的

ThisDrawing对象改为AutoCAD对象的活动文件对象,就可以执

行相同的操作,但由于是外部程序,执行速度将会慢一些。再

将程序写成一个可执行文件(.exe)供AutoCAD菜单宏调用。

(1)在数字化成图方面的应用

应用VBA 二次开发技术可以实现坐标展点、建立ATM 模型、绘制等值线、生成本

单位实际需要的图框等工作的自动化、批处理。下面的例子能够实现在CAD 下展绘高程点功能。假设高程点文件结构(南方CASS 的*.dat 格式)为:

“点号1,点属性名1,X 坐标1,Y 坐标1,高程1

点号2,点属性名2,X 坐标2,Y 坐标2,高程2

………… ……”

以下面zgcd 子程序能够读取上面格式文件,并把高程点写在当前模型空间上。子过

程附加了“文件路径名”、“文字高度”、“保留位数”三个变量。

Public Sub zgcd(filename As String, th As Double, wei As Integer)

Dim dtext As AcadText’申明文本对象变量

Dim gcdp As AcadPoint’申明点对象变量

Dim point (0 To 2) As Double’申明数组变量,用以存放坐标

Dim weishu As String

weishu = "0." + Right(Str(10 ^ wei), wei)’设置高程点的显示位数

Open filename For Input As #1’打开高程点文件名

Do While Not EOF(1)

Dim a()’申明一个动态数组用以保存文件里的坐标数据

n = n + 1

ReDim Preserve a(1 To n)

Input #1, a(n)’给数组元素赋值

Loop

Close #1

n = n / 5

For i = 1 To n

DoEvents

point(0) = a(5 * i - 2)’提取数组中的X 坐标

point(1) = a(5 * i - 1)’提取数组中的Y 坐标

txt = Format(a(5 * i), weishu) ’格式化字符串

Set gcdp = ThisDrawing.ModelSpace.AddPoint(point)’展高程点位

Set dtext = ThisDrawing.ModelSpace.AddText(txt, point, th)’展高程dtext.color = acRed’定义高程点的显示颜色为红色

gcdp.color = acBlue’定义点的显示颜色为蓝色

Next

ThisDrawing.Application.ZoomExtents

End Sub

测量方位角计算公式VB源代码

角度化弧度

Public Function Radian(a As Double) As Double

Dim Ra As Double

Dim c As Double

Dim FS As Double

Dim Ib As Integer

Dim Ic As Integer

Ra = pi / 180#

Ib = Int(a)

c = (a - Ib) * 100#

Ic = Int(c)

FS = (c - Ic) * 100#

Radian = (Ib + Ic / 60# + FS / 3600#) * Ra

End Function

'弧度化角度

Public Function Degree(a As Double) As Double

Dim B As Double

Dim Fs1 As Double

Dim Im1 As Integer

Dim Id1 As Integer

B = a

Call DMS(B, Id1, Im1, Fs1)

Degree = Id1 + Im1 / 100# + Fs1 / 10000#

End Function

Public Sub DMS(a As Double, ID As Integer, IM As Integer, FS As Double)

Dim B As Double

Dim c As Double

c = a

c = 180# / pi * c

ID = Int(c + 0.0000005)

B = (c - ID) * 60 + 0.0005

IM = Int(B)

FS = (B - IM) * 60

End Sub

'计算两点间的方位角

Public Function azimuth(x1 As Double, y1 As Double, x2 As Double, y2 As Double) As Single Dim dx As Double

Dim dy As Double

Dim fwj As Double

dx = x2 - x1

dy = y2 - y1

If dy <> 0 Then

fwj = pi * (1 - Sgn(dy) / 2) - Atn(dx / dy)

azimuth = Degree(fwj)

Else

If dx > 0 Then

azimuth = 0

Else

azimuth = 180

End If

End If

End Function

AutoLISP-程序创建过程

AutoCAD开发VisualLISP程序 本节通过一个简单的实例来讲述LISP程序的创建过程,介绍编制LISP程序的一些基本步骤,以及LISP程序在AutoCAD中的加载和运行的方法。 首先来创建一个最简单的LISP程序—-“Hello.lsp”,在AutoCAD2002中加载并运行该程序,将会在命令行出现-“Hello,VisualLISP!”。 VisualLISP与AutoCAD的通信 用户可以直接在AutoCAD命令行中键入AutoLISP表达式。AutoCAD通过括号来确认AutoLISP表达式。AutoCAD每当发现一个左括号,就确认为AutoLISP表达式,并由AutoLISP求表达式的值后返回AutoCAD,AutoCAD使用返回结果并继续进行其他工作。 注意在AutoLISP表达式中,左、右括号必须配对,否则AutoCAD将给出提示符n>,n表示右括号丢失数目。 此外,在AutoCAD中调用并执行AutoLISP程序。在AutoLISP程序中采用COMMAND函数来与AutoCAD命令程序处理器通信,COMMAND从AutoLISP获得命令并将其传给AutoCAD。 实例:最简单的LISP程序——“Hello.lsp” Step1创建新文件 (1)运行AutoCAD2002系统,以“acadiso.dwt”为样板创建图形文件,并调用“vlisp”命令进入VisualLISP环境。

(2)单击“Standard(标准)”工具栏中的按钮,新建一个LISP文件。Step2输入代码并保存文件 (1)在编辑窗口中输入源文件“Hello.lsp”的代码。程序清单如下:;;;* Hello.lsp – Visual LISP文件实例 (prompt "Pick point:") ;指定运行时的提示信息 (setq ipt (getpoint)) ;在屏幕上指定一点并将其坐标值赋予变量“ipt” (setq hgt 15) ;给变量“hgt”赋值 (Command "_.TEXT" "_S" "STANDARD" ipt hgt 0 "Hello, Visual LISP!"); 调用“Commnad”函数与AutoCAD进行通信 (2)单击“Standard(标准)”工具栏中的按钮,以“Hello.lsp”为名保存该文件。 Step3运行LISP程序 (1)确认编辑窗口处于前台状态,选择菜单【Tools(工具)】→【LoadTextinEditor(加载编辑器中的文字)】,则该程序被加载并运行。系统将返回AutoCAD窗口,并提示用户选择一点,并以指定点为基点来绘制文字。结果如图36-4所示。 (2)如果用户退出VisualLISP环境并返回AutoCAD系统窗口,则需要对该程序进行加载后,才能运行。选择菜单【Tools(工具)】→【LoadAppcation…(加载应用程序)】,弹出“Load/UnloadApplications(加载/卸载应用程序)”对话框,如图

程序设计基础课程设计报告 内容样例

第一章目的与要求 书上有。 第二章需求分析 软件设计的一个重要的环节就是需求分析。本章在对ATM取款机管理系统的应用情况作了全面调查的基础上,确定系统目标,并对系统所需要的基础功能进行分析,从而确定用户的需求。以下是ATM取款机管理系统所需要的需求分析。 ATM管理系统包括六个模块:登录,挂失功能,修改密码,取款功能,转账功能,查询功能。 ①登录: 输入银行卡的账号,密码,验证银行卡的卡号,密码是否正确,之后进入主界面 ②挂失功能: 确认是否对银行卡进行挂失,挂失后账户无法操作 ③修改密码: 用户可自由对其银行卡密码进行修改,修改之后的新密码将会覆盖其原密码 ④取款功能: 用户可自由取得所持银行卡内的存款,所取款数必须在其原有账户余额之内 ⑤转账功能: 用户可将本账户中的存款转入其他账户,转账过程中,需要转入账户的账

号 ⑥查询功能: 用户可查询用户信息,其中包括用户姓名、用户身份证号码、银行卡号以及存款余额 模拟ATM取款机的操作: 首先录入账户信息,格式如下 ㈠、登录功能:输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。 ㈡、查询功能:查询账户余额。 ㈢、取款功能:取款,更新余额。 ㈣、挂失功能:挂失后,该账户不能进行任何操作。 ㈤、修改密码:输入原密码和新设置密码。 ㈥、转账功能:输入转账的转出账户以及转账金额,进行转账。

第三章设计分析 3.1、ATM系统管理 3.1.1系统基本功能 首先,确定系统中存在两种用户,一种是ATM,可以进行信息录入和后台管理。另外一种是取款人,取款人主要是进行信息的查询,不能进行信息录入。所以在创建类的时候,先创建一个ATM类,然后创建取款人类,并与ATM 类形成有元,进而继承ATM的所有功能,并添加录入信息的功能。 基本功能: 登录功能---------输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。 查询功能---------查询账户余额。 取款功能---------取款,更新余额。 挂失功能---------挂失后,该账户不能进行任何操作。 修改密码---------输入原密码和新设置密码。 转账功能---------输入转账的转出账户以及转账金额,进行转账。、

超经典CAD lisp程序集锦、CAD快捷键大全

超经典CAD lisp程序集锦 如果您使用 AutoCAD,下面的内容对您一定有帮助。在某些方面能大大提高 您的工作效率。下面的程序均以源程序方式给出,您可以使用、参考、修改它。 bg.lsp --- 表格自动生成 asc.lsp --- 将文本文件内容写入图中,字符是单个的 wf.lsp --- 将图中字符写入磁盘 exstr.lsp --- 将字符串分解成单字 pgtxt.lsp --- 将字符合成字符串 pb.lsp --- 通过给出长度将字符串分成两个串 cht.lsp --- 直接修改文字内容或块属性 ct.lsp --- 对数字串进行加减 chh.lsp --- 直接修改文字高度 chhw.lsp --- 直接修改文字高宽比(针对PKPM软件将字符定位点改为左下角) chst.lsp --- 直接修改文字字体 txt.shx --- 修改后的标准txt.shx文件。(kuozhan.sld为增强的内容幻灯片) tiao.lsp --- 配合修改过的标准字体文件,将中文字符调大 tiao1.lsp --- 配合修改过的标准字体文件,将英文字符调小 untiao.lsp --- 上两个程序的复原 sht.lsp --- 在图中查找字符串 zhuang.lsp --- 桩点及钎探号绘制(勘测图) dim.lsp --- 配合JT.DWG将尺寸标注调成适合建筑结构设计(1:1) dimm.lsp --- 配合JT.DWG将尺寸标注调成适合建筑结构设计(1:100)

di1.lsp~di8.lsp --- 直接连续标注尺寸(用于1:1的图) di100.lsp~di800.lsp --- 直接连续标注尺寸(用于1:100的图) 详细内容及附件下载请浏览北纬服务论坛 https://www.wendangku.net/doc/4816668766.html,/thread-2724-1-1.html

CADLISP程序

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)

编写一个计算器程序课程设计报告 范例

《金融IT 入门-程序设计》 课程设计报告 中国地质大学长城学院 XX 系 2017年 月 3 日 目录 一.总体概述: 二.设计目标: 三.程序流程图: 四.程序代码: 五.设计 体会: 题目: 用Python 编写简易计算器程序 学 号: 专业: 班级: 姓名: 指导教师: 2016-2017学年 第二学期

一、设计内容 1.课程设计目的: 1)掌握Java语言的程序设计方法; 2)理论联系实际,进一步提高学生的软件开发技术; 3)培养学生分析、解决问题的能力; 4)提高学生实践论文撰写能力。 2.课程设计任务: 1)设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算); 2)有求倒数、退格和清零功能。 3.创新要求: 能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。图形界面采用继承windowadapter类,采取调用类方法来注册监听! 4.设计要求: 1)设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零功能。

2)课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。 3)认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。 二、原理与分析 1.开发的技术及功能 本课程设计是要做一个图形界面的计算器,其界面主要是由swing组件中的控件构成。程序实现了计算器的基本功能有:加、减、乘、除基本算术运算(可以进行浮点和负数运算)和sin、cos、tan等三角函数求值运算,同时能进行指数运算和自然对数运算,还有求倒数、退格和清零功能。 2.设计思路 设计这个计算器主要是参考Windows操作系统中自带的计算器,由于编者水平和时间的限制,不能将计算器设计到科学型及其他更复杂的类型,在设计过程中还参考了一些其他的优秀设计。但本计算器除了常用的加减乘除(可以进行浮点和负数运算)这些基本运算外,还有求余、求倒、退格、清零,甚至还能进行一些复杂科学的运算,比如余弦(cos)、正切(tan)、指数运算(pow)、自然对数运算(log)、求平方根(sqrt)以及对e的指数运算(exp),并且还能进行连续运算。总体上说来,本计算器设计简单,代码很少,程序很小,但功能却很强大,这是同类计算器所不具备的。 3.设计效果图 设计时先在设计界面中添加按钮等控件,后在按钮的actionPerformed事件中添加代码完成其功能其中调用了Java类中的Math函数库以及各种字符串操作。设计的界面如下: 图一计算器运行界面 三、设计过程 1.程序思路: 1)本应用程序继承自框架类(JFrame),容器Container c采用BorderLayout 边缘布局,将单行文本框加入到“North”区域,包含各种按钮的面板JPanel p 加入到”Center”区域。包含各种按钮的面板JPanel p 采用3行6列的网格布局,然后将数字按钮和运算符按钮以及控制按钮用一个for循环添加到面板中同时注册按钮事件监听器。如: Button b=new Button(); (事件监听器); 2)事件监听器中的事件处理方法void actionPerformed(ActionEvent evt)完

软件著作权设计说明书范本二

北京天一博胜知识产权代理有限公司—内部培训资料 软件着作权-说明书范本(二) 设计说明书 中国版权保护中心接收登记的文档包含两种:操作说明书或设计说明书。 设计说明书适合没有界面的嵌入式软件,插件软件,后台运行软件以及游戏软件。一般包含结构图,软件流程图,函数说明,模块说明,数据接口,出错设计等。 操作说明书适合管理类软件,有操作界面,一般应包含登录界面,主界面,功能界面截图,截图之间有相应的文字说明,能全面展示软件的主要功能。 格式要求:一、说明书应提交前、后各连续30页,不足60页的,应当全部提交。 二、说明书页眉应标注软件的名称和版本号,应当与申请表中名称完全一致, 页眉右上应标注页码,说明书每页不少于30行,有图除外,另外截图 应该清晰完整。 范例如下: 天一博胜探伤仪控制软件 设计说明书 一、引言 目的 编写详细设计说明书是软件开发过程必不可少的部分,其目的是为了使开发人员在完成概要设计说明书的基础上完成概要设计规定的各项模块的具体实现的设计工作。 二、软件总体设计 2.1软件需求概括 本软件采用传统的软件开发生命周期的方法,采用自顶向下,逐步求精的结构化的软件设计方法。 本软件主要有以下几方面的功能 (1)连接设备 (2)提取数据 (3)保存数据 (4)删除仪器数据 (5)查看历史数据 定义 本项目定义为一个典型的多点互动探伤软件。它将实现多点设备和系统程序的无缝对接,以实现

多点互动功能。 2.2需求概述 1.要求利用PQLib硬件商提供的SDK开发出对应的触摸屏系统。 2.系统要显示图片,并实现图片相关所有的多点操作,包括放大,缩小,旋转,平移的功能。 3.要提供美观的图片菜单,在菜单中要提供必要的图片简介信息。 4.系统图片的维护更新要方便。 2.3条件与限制 系统开发的条件是普通PC以及相对应的系统,本次开发所用的系统是WINDOW SERVER2003以及ADOBE FlashCS4。由于硬件开发商提供的开发文档不是很详尽,这对系统开发产生了一定限制影响。 总体设计 2.4总体结构和模块接口设计 系统整体结构框架如图 系统整体结构框架图 2.5模块功能逻辑关系 系统详细的模块信息所示: 系统详细的模块信息表 主模块 帧模块名称功能简述 第一帧多点环境初始化。 第二帧实现业务逻辑。 支撑类模块 类模块名称功能简述 PICDeals用于对图片载入的支持。 模块内部关系结构如下图所示: 系统模块内部关系图 这里说明一下的是,用户传来的是操作信息,这种信息是通过硬件接受后按照一定协议通过数据传输通道传送过来的。 2.6(结构图)设计和描述 本软件的主要功能是实现对钢丝绳仪器数据的提取、分析和存储的功能,软件重点是实现与下位机通信和数据分析。 三、软件功能描述 3.1 连接功能流程图和详细流程描述 设备与电脑之间用USB设备建立连接,连接之前需要先安装USB驱动,如果安装无误并建立连接之后,点击“连接”,软件给设备存储器发送一个命令,是存储器做好准备,并返回设备时间和电量信息。连接建立后,还可以重新设置设备时钟。 3.2提取数据功能流程图和详细流程描述

范例-软件设计说明书(详细部分)

软件设计说明

目录 1围 (1) 1.1标识 (1) 1.2系统概述 (1) 1.3文档概述 (1) 2引用文档 (1) 3CSCI 级设计决策 (1) 4CSCI 体系结构设计 (2) 4.1CSCI部件 (2) 4.2执行方案 (3) 4.3接口设计 (3) 4.3.1接口标识和接口图 (3) 4.3.x (接口的项目唯一标识符) (4) 5CSCI 详细设计 (6) 5.X (软件单元的项目唯一标识符,或者一组软件单元的标志符) (6) 6需求可追踪性 (9) 7注解 (11) 附录A (11)

软件设计说明 1围 1.1标识 要求:本节应包含这个文档所适用的系统和软件的完全标识,(若适用)应包括标识号、名称、缩略名、版本号及发布号。 1.2系统概述 要求: 1)本节主要描述本文档适用的系统和软件的用途; 2)概述系统开发、运行和维护的历史; 3)标识项目的投资方、需方、用户、开发方和保障机构; 4)标识当前和计划的运行现场; 5)列出其它有关文档。 1.3文档概述 本节应概述本文档的用途和容,描述与它的使用有关的性或私密性考虑。 2引用文档 列出引用的所有文档,包括文档的编号、标题、修订版本和日期。 3CSCI 级设计决策 要求:本章应根据需要分节给出CSCI 级设计决策,即CSCI 行为设计的决策(忽略其部实现,从用户角度出发描述系统将怎样运转以满足需求)和其它影响组成该CSCI 的软件单元的选择与设计的决策。如果在需求中所有这些决策是明确的,或者这些决策要推迟到CSCI 的软件单元的设计时指出,则本章应如实述。 针对关键性需求(例如对安全性、性、私密性等需求)作出的设计决策,应在专门的章节中加以叙述。 CSCI 级设计决策的例子如下: 1)关于CSCI 将接收的输入和将产生的输出的设计决策,包括与其它系统、HWCI、CSCI 和用户的接口(本文档的4.3.x 节指出本说明要考虑的主题); 2)有关响应每个输入或条件的CSCI 行为的设计决策,包括CSCI 要执行的动作、响应时间和其它性能特性,模型化的物理系统的说明,选定的方程式/算法/规则,以及对不允许的输入或条件进行的处理; 3)有关数据库/数据文件如何呈现给用户的设计决策(本文档的4.3.x 节标识了本说明

《软件工程》软件设计阶段开发文档示例

3.软件设计 3.1开发工具 本游戏使用MyEclipse为开发工具,MyEclipse是在eclipse 基础上加上自己的插件开发而成的功能强大的企业级集成开发环境,主要用于Java、Java EE 以及移动应用的开发。 在使用MyEclipse之前首先要搭建Java开发环境。编写和运行Java程序之前需要安装JDK(Java Developers Kits)并配置相关环境变量。JDK 是整个Java 的核心,包括了 3.2概要设计 模型层、“结束游戏”、 3.3流程设计 整个游戏的流程设计图如下图所示。玩家进入游戏界面后,点击上方“开始游戏”按钮后方可通过方向键控制用户小车的移动,然后系统通过是否超时、是否与其它小车碰撞、是否到达终点来判断游戏胜利或失败。当游戏成功或失败后,玩家可以点击窗口上方“再来一局”重新开始游戏。此外,在任何时候用户都能够通过点击窗口上方“退出游戏”按钮关闭窗口退出游戏。

3.4主要类图 MyPlayer类是游戏中的玩家类(用户赛车类),用户可以通过方向键控制用户赛车的移动。MyEnermy类是游戏中除用户赛车外的其它赛车类。

图3-3MyPlayer 玩家类和MyEnermy 对手类类 MyRoad 类是游戏中的道路类。 图 3-4MyRoad 道路类 BackGroundMusic 类是游戏中的背景音乐类。 图3-5BackGroundMusic 背景音乐 MyWindow 类为窗口类,用于设置游戏窗口大小、名称等。MyMain 为主函数类,框架是Swing GUI 应用程序的主程序,窗口包括边界、标题、关闭按钮。 图3-5MyWindow 窗口类

模块化程序设计实例

9 .5 模块化程序设计实例 《程序设计基础》(基于C语言讲解)石光华编著—北京: 清华大学出版社 下面以设计一个简单的成绩管理软件为例,一步一步地按模块化程序设计方法进行设计。 1 .定义问题 设计一个成绩管理软件,其基本功能包括:输入成绩,成绩加分,计算平均成绩,找出最高分,找出最低分,输出成绩等。 2 .确定组成程序的模块 根据成绩管理软件的功能,确定软件的基本模块包括:输入模块,加分模块,平均分模块,最高分模块,最低分模块,输出模块等。 142 程序设计基础 3 .绘制程序结构图 成绩管理软件的结构图如图9-5所示。 图9-5 成绩管理软件结构图 4 .流程图 用流程图确定主程序的逻辑结构,如图9-6所示。 在流程图中,istate 的作用是记录是否已经输入成绩。istate 的使用有如下两种 方式。 (1) 作为全局变量使用。此时istate可以在所有模块中改变其值,主程序更简洁,但 可能产生边际效应。 (2) 作为主程序的局部变量使用。此时istate只能在主程序中改变其值。在主程序 中可以直观地看到其变化,能够防止边际效应。 采用方式(2)的主程序如下。

#include < stdio .h> #define SIZE 10 void main() { int iscore[SIZE] ={0}; int key= - 1; int iresult=0; float fresult=0; int istate=0; printf(″1:Input scores;\n″); 第9章模块化程序设计 143 图9-6 成绩管理软件主程序流程图 printf(″2:Output scores;\n″); printf(″3:Count for the max score;\n″); printf(″4:Count for the minimum score;\n″); printf(″5:Count for the total score;\n″); printf(″6:Count for theaverage score;\n″); printf(″- 1:Exit .\n″); while(1) { printf(″Please input your choose:″); scanf(″%d″,&key); if (key = = - 1) 144 程序设计基础

用AutoLISP程序提高绘图效率的几个实例

2007.12 科技广场 254

工程中经常要绘制各种弹簧和螺纹连接件,在AutoCAD中没有专门绘制弹簧和螺纹的命令,弹簧和螺纹在AutoCAD中都可用平面图形通过相应螺旋线拉伸而成,所以绘制螺旋线就是解决问题的关键。如果用常规的3dpoly命令绘制三维螺旋线,需要输入大量精确数据,才能一点一点地画出螺旋线,做法非常麻烦。现在提供AutoLISP程序,即可解决绘制螺旋线的问题。然后通过相应平面图形的拉伸,就可以完成弹簧、螺纹等零件的绘制。 根据圆台螺旋线的形成原理(一动点M绕圆台的母线AB作等速直线运动,而该母线AB又绕圆台的轴线O1O2作等角速旋转时,点M的运动轨迹即为圆台的螺旋线,如图二所示。圆柱螺旋线是圆台螺旋线的特例,故可通过圆台螺旋线程序做相应的变动,即可得到),动点M(x,y,z)的参数方程如下: 图二园台螺旋线 X=[r0+hg *α/(2π)]*cosα Y=[r0+hg *α/(2π)] *sinα Z=±vg *α/(2π) 其中,r0为圆台下面的半径,α为螺旋线角,vg为导程(单线螺旋线螺距(弹簧的节距)等于导程),hg为点M沿水平半径方向上增加的距离(hg=|(r1-r0)m|求得,m为螺旋线的圈数)。 下面提供圆台螺旋线的AutoLISP程序清单: (defun c:luoxc(/) (setq b1 (getpoint" 指定基点:")) (setq r1 (getreal "指定初始半径:")) (setq disp (getreal "指定节距:")) (setq angtg (getreal "输入锥形角:")) (setq m (getint"输入圈数:")) (setq n (getint"输入每圈细化段数<36>:")) (cond ((null n )(setq n 36))) (setq delta (/ (* 2.0 pi ) n)) (setq j (/ disp n)) (setq bb (caddr b1)) (setq tg (*(/ angtg 180) pi)) (setq ang 0) (setq k 0) (command "ucs" "o" b1) (command "3dpoly" (list r1 0 0)) (repeat (* m n) (setq k(+ k 1)) (setq ang(+ delta ang)) (setq r (- r1 (* (+ 0(* j k))(/ (sin tg )(costg))))) (setq pt2 (list (* r(cos ang))(* r(sin ang))(+ 0(* j k)))) (command pt2) ) (command "") ) 根据圆台螺旋线的形成原理,如果圆锥角为0度时,即可形成圆柱螺旋线。圆柱螺旋线程序清单如下: (defun c:luoxc(/) (setq b1 (getpoint" 指定基点:")) (setq r (getreal "指定初始半径:")) (setq vg (getreal "指定节距:")) (setq m (getint"输入圈数:")) (setq n (getint"输入每圈细化段数<36>:")) (cond ((null n )(setq n 36))) (setq delta (/ (* 2.0 pi ) n)) (setq j (/ disp n)) (setq bb (caddr b1)) (setq ang 0) (setq k 0) (command "ucs" "o" b1) (command "3dpoly" (list r 0 0)) 255

程序设计范例

模块名称:抽样计划模块 程序文件结构说明: Module/conf/ 模块功能函数库 Plan/ 模块功能控制程序 Tpl/plan_*. 模块前端显示模版文件(若干) 处理: 模块通过控制程序Plan/对模块请求进行调度处理,根据不同的URL请求参数,对输入参数进行处理,使用SWITCH语句区分调用对应模块库文件中的功能函数执行,并选择对应的模版文件进行输出显示。 URL参数说明: /plan/?act=xxxxx act 为需要执行的操作,具体参数值和对应功能,见下表 数据库设计概要: cdsy_plan 用于存储抽样计划基础数据,包括所属单位,年份,月份等信息; cdsy_plan_data 用于存储抽样计划的具体表格内容数据,包括环节,分类,区县各自设置的计划数量等信息; 具体字段字典见下表:

cdsy_plan cdsy_plan_data

模块名称:抽样任务分配模块 程序文件结构说明: Module/conf/ 模块功能函数库 Module/conf/ 模块功能函数库 模块功能控制程序 task/ 添加,分配任务数据 task/ 编辑任务数据 task/ 列表显示任务数据 task/ 显示指定任务详情 Tpl/task_*. 模块前端显示模版文件(若干) 处理: 模块通过对应的程序文件进行功能控制,不同的文件执行对应的功能,并选择对应的模版文件进行输出显示。 数据库设计概要: Cdsy_task 任务主数据表 Cdsy_task_class 任务分类数据表 Cdsy_task_detail 任务人员指派数据表 具体数据表结构和字段说明见下表:

AUTOLISP实用编程四例

autolisp实用编程四例 江苏崔华明 autocad是一个功能强大的通用图形设计软件,其内嵌的autolisp语言为用户进行二次开发提供了方便。下面就介绍几则用autolisp编写的实用程序,这些程序相当于新增的autocad命令,可以弥补autocad本身的一些不足,为日常使用带来方便。 1.快速更改文本的大小 在标准的autocad中,要更改已有文本的大小,需要使用change命令。该命令的缺陷是:即使只更改文本的大小,也要重新确认文本的插入点、字型、倾斜角等一系列参数。也就是说,除输入文本的新高度值外,还需要按5次回车键才能完成一个文本的更改!而且每次只能修改一个文本。这对于同时更改多个文本的大小非常不便。本文的autolisp程序使这一工作变得十分方便和快捷。使用方法如下: 在autocad的command提示下,打入命令: cth autocad将提示“selectobjects:”,这时可以使用autocad允许的任意方式选择目标。对于有多个文本需要更改的情况,使用窗口选择比较方便,而且你不用担心选择窗口中包含了非文本目标,程序能够自动在选择的目标中查找出文本实体,并只对文本进行更改。 选择目标后,autocad提示“newtextheight:”,这时输入一个新的文本高度值然后回车,则所有选中的文本被更改成新设定的高度。 2.延伸直线的长度 在实际使用中,常常要将一条直线延伸指定的长度。通常的做法是:在需要延伸的直线的端点画一个辅助圆,圆的半径等于直线要延伸的长度,然后使用extend命令将直线延伸到与圆相交,最后删除辅助圆。 本文的autolisp程序将使你非常容易地实现这一点。你只需选择要延伸的直线并输入要延伸的长度即可,其余的工作由程序自动完成。使用方法如下: 在autocad的command提示下,打入命令: stl 然后根据提示选择要延伸的直线(选择点要靠近直线需要延伸的端点),并输入延伸的长度。该程序将自动在离选择点较近的直线端点,按指定的长度延伸直线。 3.快速画直线 在画给定坐标点的直线时,需要通过键盘输入坐标值。这样的情况下当然是利用右边的数字键盘输入

C语言程序设计实例讲解例子解析

经典C语言程序设计实例讲解例子 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 2.程序源代码: main( { int i,j,k; printf("\n"; for(i=1;i<5;i++/*以下为三重循环*/ for(j=1;j<5;j++ for (k=1;k<5;k++ { if (i!=k&&i!=j&&j!=k /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k; }

} 【程序2】 题目:企业发放的奖金根据利润提成。利润(I低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2.程序源代码: main( { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i; bonus1=100000*0.1;bonus2=bonus1+100000*0.75;

CAD创建Lisp程序步骤

使用Visual LISP创建简单的LISP应用程序 作者:佚名点击数:1523 更新:2007-2-2 7:08:10 热★★★ 【字体:小大】 a> 本节通过一个简单的实例来讲述LISP程序的创建过程,介绍编制LISP程序的一些基本步骤,以及LISP程序在AutoCA D中的加载和运行的方法。首先来创建一个最简单的LISP程序—-―Hello.lsp‖,在AutoCAD 2002中加载并运行该程序,将会在命令行出现-―Hello, Visual LISP!‖。 36.2.1 Visual LISP与AutoCAD的通信 用户可以直接在AutoCAD命令行中键入AutoLISP表达式。AutoCAD通过括号来确认AutoLISP表达式。AutoCAD每当发现一个左括号,就确认为AutoLISP表达式,并由AutoLISP求表达式的值后返回AutoCAD,AutoCAD使用返回结果并继续进行其他工作。 注意在AutoLISP表达式中,左、右括号必须配对,否则AutoCAD将给出提示符n>,n表示右括号丢失数目。 此外,在AutoCAD中调用并执行AutoLISP程序。在AutoLISP程序中采用COMMAND函数来与AutoCAD命令程序处理器通信,COMMAND从AutoLISP获得命令并将其传给AutoCAD。 36.2.2 实例1 最简单的LISP程序——―Hello.lsp‖ Step 1 创建新文件 (1) 运行AutoCAD 2002系统,以―acadiso.dwt‖为样板创建图形文件,并调用―vlisp‖命令进入Visual LISP环境。 (2) 单击―Standard(标准)‖工具栏中的按钮,新建一个LISP文件。 Step 2 输入代码并保存文件 (1) 在编辑窗口中输入源文件―Hello.lsp‖的代码,如图36-3所示。程序清单如下: ;;;* Hello.lsp –Visual LISP文件实例 (prompt "Pick point:") ;指定运行时的提示信息 (setq ipt (getpoint)) ;在屏幕上指定一点并将其坐标值赋予变量―ipt‖ (setq hgt 15) ;给变量―hgt‖赋值 (Command "_.TEXT" "_S" "STANDARD" ipt hgt 0 "Hello, Visual LISP!") ;调用―Commnad‖函数与AutoCAD进行通信

编写一个计算器程序课程设计报告-范例

《金融IT 入门-程序设计》 课程设计报告 中国地质大学长城学院XX 系 2017年 月 3 日 题目: 用Python 编写简易计算器程序 学号: 专业: 班级: : 指导教师: 2016-2017学年 第二学期

目录 一.总体概述:二.设计目标:三.程序流程图:四.程序代码:五.设计体会:

一、设计容-------------------------------------------------------------- - 2 - 1. 课程设计目的:---------------------------------------------------- - 2 - 2.课程设计任务:------------------------------------------------- - 2 - 3.创新要求:--------------------------------------------------------- - 2 - 4.设计要求: ---------------------------------------------------------- - 2 - 二、原理与分析---------------------------------------------------------- - 2 - 1.开发的技术及功能--------------------------------------------------- - 2 - 2.设计思路----------------------------------------------------------- - 3 - 3.设计效果图--------------------------------------------------------- - 3 - 三、设计过程------------------------------------------------------------ - 3 - 1. 程序思路:-------------------------------------------------------- - 3 - 2.功能实现:--------------------------------------------------------- - 4 - 1)加减乘除求余以及指数运算--------------------------------------- - 4 - 2)其他运算------------------------------------------------------- - 5 - 3)主要方法说明--------------------------------------------------- - 6 - 4)程序流程图----------------------------------------------------- - 6 - 3.算法思路:--------------------------------------------------------- - 7 - 4.数据分析:--------------------------------------------------------- - 8 - 四、设计结果与分析------------------------------------------------------- - 8 - ⒈运行调试----------------------------------------------------------- - 8 - 1)进行加减乘除求余以及指数运算----------------------------------- - 8 - 2)求倒----------------------------------------------------------- - 9 - 3)退格---------------------------------------------------------- - 10 - 4)清零---------------------------------------------------------- - 10 - 5)求余弦、求正切、对e求幂、求平方根、求自然对数、求倒运算------ - 11 - 6)连续运算(例:2*3*4=24.0)------------------------------------ - 11 - 7)异常处理(例:求倒时输入数为0)------------------------------ - 12 - 五、设计体会与小结----------------------------------------------------- - 13 - 六、参考文献----------------------------------------------------------- - 13 - 七、源程序------------------------------------------------------------- - 14 -

CAD-LISP-程序

CAD-LISP-程序

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)

LISP 程序

;;一、绘制地形图符号 1.点状符号 对于点状符号,其位置固定,数量较多,且一般都带有一定的标注,可逐个制作属性块图元,单独插入。 2.线状符号 利用AutoCAD中强大的线型定义。 3.面状符号 由充填符号在面域内按一定的排列方式组合而成。 目前Auto CAD在建筑设计、工程施工放样得到广泛应用, Auto CAD在工程测量上的应用,大大减少手算坐标的工程量或帮助人们复核手算坐标的准确性。 (1)删除未选择对象 (defun c:sd() (princ"\n选择要保留对象:") (setq SS(ssget) ss1(ssget"X")) (command"erase"ss1"r"ss""zoom _e) );end ;;(2)画圆弧型铁路 ;输入铁路中线上三个点,轨距及绘图比例尺,起、中、始点 (defun c:ytl() (setvar "osmode" 0);取消扑捉 (setq PB(getpoint"\n输入起点:")) (setq PM(getpoint"\n输入中点:")) (setq PE(getpoint"\n输入终点:")) (setq WD(getreal"\n输入铁路宽度(m):")) (setq S(getreal"\n绘图比例尺=:"));1:1000,输入 (setq W1(/(* WD S) 2) W2(+ W1(* S)));轨道及枕木符号的半宽 (setq D(distance PB PE)) (setq A1(angle PB PM) A2(angle PB PE) A3(angle PE PB) A4(angle PE PM)) (setq FB(- A1 A2) FE(- A3 A4) P12(* PI 2)) (if (< FB 0)(setq FB(+ FB P12)));求PB和PE点的圆周角 (if (< FE 0)(setq FE(+ FE P12))) (setq F(+ FB FE) R(/ D(* (sin F)2)));求全弧所对圆心角之半,圆弧半径 (setq F1(- (/ PI 2) F) ABC(- A2 F1)) (if (< ABC 0) (setq ABC(+ ABC P12))) (setq C(polar PB ABC R));求圆心之点位 (setq ACB(angle C PB) ABC(angle PB C));起点左右垂直于中线切线的方位角 (setq ACM(angle C PM) AMC(angle PM C));中点左右垂直于中线切线的方位角 (setq ACE(angle C PE) AEC(angle PE C));终点左右垂直于中线切线的方位角 (setq PBL(polar PB ACB W1) PBL1(polar PB ACB W2)) (setq PBR(polar PB ABC W1) PBR1(polar PB ABC W2))

相关文档
相关文档 最新文档