当前位置:首页 » 手机软件 » 123画线软件手机版
扩展阅读
青少年成长网络安全教育 2025-05-10 22:52:38
xp局域网共享网络密码 2025-05-10 22:45:17

123画线软件手机版

发布时间: 2025-05-10 18:02:31

A. 下画线怎么

下划线___怎么打手机:
方法一:1、在手机的输入键盘中找到“符号”,2、在符号键盘中,找到下划线符号“_”,3、完成以上步骤后
方法二:1、在手机输入键盘中,找到“拼音”,2、在拼音输入中,输入下划线拼音“xiaohua”
方法三:1、在手机输入键盘中,找到“123”,2、在数字键盘中,输入“-”(减号),

B. 苹果手机上怎么画线再输入字母和数字

1、输入界面按下”123“键;

2、按下”#+=“键;

3、第二行左边第一个就是下划线了。

C. 3D建模软件有推荐的吗

1、3DS Max
3D Studio Max,简称3DS MAX,是当今世界上销售量最大的三维建模、动画及渲染软件。可以说3DSMAX是最容易上手的3D软件,其最早应用于计算机游戏中的动画制作,后开始参与影视片的特效制作,例如《X战警》、《最后的武士》等。

2、Maya
Maya是世界顶级的三维动画软件,应用对象是专业的影视广告,角色动画,电影特技等。Maya功能完善,工作灵活,易学易用,制作效率极高,渲染真实感极强,是电影级别的高端制作软件。
Maya售价高昂,声名显赫,是制作者梦寐以求的制作工具,掌握了Maya,会极大的提高制作效率和品质,调节出仿真的角色动画,渲染出电影一般的真实效果,向世界顶级动画师迈进。

3、Rhino
Rhinocero,简称Rhino,又叫犀牛,是一款三维建模工具。不过不要小瞧它,它的基本操作和AutoCAD有相似之处,拥有AutoCAD基础的初学者更易于掌握犀牛。目前广泛应用于工业设计、建筑、家具、鞋模设计,擅长产品外观造型建模。

4、Zbrush
ZBrush是一个数字雕刻和绘画软件,它以强大的功能和直观的工作流程着称。它界面简洁,操作流畅,以实用的思路开发出的功能组合,激发了艺术家的创作力,让艺术家无约束地自由创作。它的出现完全颠覆了过去传统三维设计工具的工作模式,解放了艺术家们的双手和思维,告别过去那种依靠鼠标和参数来笨拙创作的模式,完全尊重设计师的创作灵感和传统工作习惯。

5、Google Sketchup
Sketchup是一套直接面向设计方案创作过程的设计工具,其创作过程不仅能够充分表达设计师的思想而且完全满足与客户即时交流的需要,它使得设计师可以直接在电脑上进行十分直观的构思,是三维建筑设计方案创作的优秀工具。

SketchUp是一个极受欢迎并且易于使用的3D设计软件,官方网站将它比喻作电子设计中的“铅笔”。它的主要卖点就是使用简便,人人都可以快速上手。并且用户可以将使用SketchUp创建的3D模型直接输出至GoogleEarth里,非常的酷!

6、Poser
Poser是Metacreations公司推出的一款三维动物、人体造型和三维人体动画制作的极品软件。Poser更能为你的三维人体造型增添发型、衣服、饰品等装饰,让人们的设计与创意轻松展现。

7、Blender
Blender是一款开源的跨平台全能三维动画制作软件,提供从建模、动画、材质、渲染、到音频处理、视频剪辑等一系列动画短片制作解决方案。Blender为全世界的媒体工作者和艺术家而设计,可以被用来进行3D 可视化,同时也可以创作广播和电影级品质的视频,另外内置的实时3D 游戏引擎,让制作独立回放的3D 互动内容成为可能。

有了Blender,喜欢3D绘图的玩家们不用花大钱,也可以制作出自己喜爱的3D模型了。它不仅支持各种多边形建模,也能做出动画!

8、FormZ
FormZ是一个备受赞赏、具有很多广泛而独特的2D/3D形状处理和凋塑功能的多用途实体和平面建模软件。
对于需要经常处理有关3D空间和形状的专业人士(例如建筑师、景观建筑师、城市规划师、工程师、动画和插画师、工业和室内设计师)来说是一个有效率的设计工具。

9、LightWave 3D
美国NewTek公司开发的LightWave3D是一款高性价比的三维动画制作软件,它的功能非常强大,是业界为数不多的几款重量级三维动画软件之一。被广泛应用在电影、电视、游戏、网页、广告、印刷、动画等各领域。它的操作简便,易学易用,在生物建模和角色动画方面功能异常强大;基于光线跟踪、光能传递等技术的渲染模块,令它的渲染品质几尽完美。

10、C4D
C4D全名CINEMA 4D,德国MAXON出的3D动画软体。Cinema4D是一个老牌的三维软件。能够进行顶级的建模、动画和渲染的3D工具包。
C4D是一款容易学习、容易使用、非常高效,并且享有电影级视觉表达能力的3D制作软件,C4D由于其出色的视觉表达能力已成为视觉设计师首选的三维软件。这个始于德国1989年的软件,至今已历时30年,现在功能越来越强大完善。
C4D是集万千宠爱于一身的设计界网红,C4D技术现在流行于电商设计,在平面设计、UI设计、工业设计、影视制作方面也是广泛运用,很多电影大片的人物建模也都是用C4D来完成。

二、行业性的3D设计软件

1、AutoCAD
AutoCAD是Autodesk公司的主导产品,用于二维绘图、详细绘制、设计文档和基本三维设计,现已经成为国际上广为流行的绘图工具。AutoCAD具有良好的用户界面,通过交互菜单或命令行方式便可以进行各种操作。它的多文档设计环境,让非计算机专业人员也能很快地学会使用。

2、CATIA
CATIA属于法国达索(DassaultSystemesS.A)公司,是高端的CAD/CAE/CAM一体化软件。在20世纪70年代,CATIA第一个用户就是世界着名的航空航天企业DassaultAviation。目前,CATIA其强大的功能已得到各行业的认可,其用户包括波音、宝马、奔驰等知名企业。

3、UG
UG(UnigraphicsNX)是Siemens公司出品的一款高端软件,它为用户的产品设计及加工过程提供了数字化造型和验证手段。UG最早应用于美国麦道飞机公司,目前已经成为模具行业三维设计的主流应用之一。

4、Solidworks
Solidworks属于法国达索(DassaultSystemesS.A)公司,专门负责研发与销售机械设计软件的视窗产品。Solidworks帮助设计师减少设计时间,增加精确性,提高设计的创新性,并将产品更快推向市场。Solidwords是世界上第一个基于Windows开发的三维CAD系统。该软件功能强大,组件繁多,使得Solidworks成为领先的、主流的三维CAD解决方案。

5、Pro/E
Pro/Engineer(简称Pro/E)是美国PTC公司研制的一套由设计至生产的机械自动化软件,广泛应用于汽车、航空航天、消费电子、模具、玩具、工业设计和机械制造等行业。

6、Cimatron
Cimatron是以色列Cimatron公司(现已被美国3DSystems收购)开发的软件。该系统提供了灵活的用户界面,主要用于模具设计、模型加工,在国际上模具制造业备受欢迎。
Cimatron公司团队基于Cimatron软件开发了金属3D打印软3DXpert。这是全球第一款覆盖了整个设计流程的金属3D打印软件,从设计直到最终打印成型,甚至是在后处理的CNC处理阶段,3DXpert软件也能够发挥它的作用。

三、3D雕刻建模软件:笔刷式高精度建模软件

1、ZBrush
美国Pixologic公司开发的ZBrush软件是世界上第一个让艺术家感到无约束自由创作的 3D设计工具。 ZBrush 能够雕刻高达 10 亿多边形的模型,所以说限制只取决于的艺术家自 身的想象力。

2、 MudBox
MudBox是Autodesk公司的3D雕刻建模软件,它和ZBrush相比各有千秋。在某些人看 来,MudBox的功能甚至超过了ZBrush,可谓ZBrush的超级杀手。

3、MeshMixer
Autodesk公司又开发出一款笔刷式3D建模工具MeshMixer,它能让用户通过笔刷 式的交互来融合现有的模型来创建3D模型(似乎是类似与Poisson融合或Laplacian融合的技 术),比如类似“牛头马面”的混合3D模型。值得注意的是,最新版本的MeshMixer还添加3D打印支撑优化新算法。

4、3DCoat
3d-coat 这是由乌克兰开发的数字雕塑软件,我们可以先看看官方的介绍:3D -Coat是专为游戏美工设计的软件,它专注于游戏模型的细节设计,集三维模型实时纹理绘制和细节雕刻功能为一身,可以加速细节设计流程,在更短的时间内创造出更多的内容。只需导入一个低精度模型,3D-Coat便可为其自动创建UV,一次性绘制法线贴图、置换贴图、颜色贴图、透明贴图、高光贴图。

5、Sculptris
Sculptris是一款虚拟建模软件,其核心重点在于建模粘土的概念,如果用户像创建小雕像,那么这款软件十分适合使用。

6、Modo
modo是一款高级多边形细分曲面,建模、雕刻、3D绘画、动画与渲染的综合性3D软件。由Luxology, LLC设计并维护。该软件具备许多高级技术,诸如N-gons(允许存在边数为4以上的多边形),多层次的3D绘画与边权重工具,可以运行在苹果的Mac OS X与微软的Microsoft Windows操作平台。

四、基于照片的3D建模软件
1、Autodesk 123D
Autodesk 123D Catch是建模软件的重点,用户使用相机或手机来从不同角度拍摄物体、人物或场景,然后上传到云,然后该软件利用云计算的强大计算能力,可将 数码照片中几分钟的时间内转换为3D模型,而且还自动带上纹理信息。我们试用 过几次,感觉它的使用还是很方便的。但是其生成的3D几何的细节不多,主要是 通过纹理信息来表现真实感的。有时软件也会失败,生成的几何是不正确的。

2、3DSOM Pro
3DSOM Pro是一款从高质量的照片来生成3D建模的软件,它可以通过一个真实物体的 照片来进行3D建模,并且制作的模型可以在网络上以交互的方式呈现。

3、PhotoSynth
微软开发了一款产品PhotoSynth,可将大量的照片做3D处理,但是它不是真正创建3D 模型,而是根据照片之间的相机参数及空间对应关系,建构一个虚拟的3D场景,使得用户 能够在从不同角度和位置来查看该场景,而显示的场景图像是由给定的照片所合成的。

五、基于扫描(逆向设计)的3D建模软件

1、Geomagic
Geomagic (俗称“杰魔”) 包括系列软件Geomagic Studio、Geomagic Qualify和Geomagic Piano。其中Geomagic Studio是被广泛使用的逆向工程软件,具有下述所有特点:确保完美 无缺的多边形和 NURBS 模型处理复杂形状或自由曲面形状时,生产效率比传统 CAD软件提高数倍;可与主要的三维扫描设备和CAD/CAM软件进行集成;能够作为一个独立的应 用程序运用于快速制造,或者作为对CAD软件的补充。是我们学生科研的必备软件之一。

2、ImageWare
Imageware 由美国 EDS 公司出品,后被德国Siemens PLM Software所收购,现在并入旗下的NX产品线,是最着名的逆向工程软件,Imageware因其强大的点云处理能力、曲面编辑能力和A级曲面的构建能力而被广泛应用于汽车、航空、航天、消费家电、模具、计算机零部件等设计与制造领域。

3、RapidForm
RapidForm是韩国INUS公司出品的逆向工程软件,提供了新一代运算模式,可实时将点 云数据运算出无接缝的多边形曲面,使它成为 3D扫描数据的最佳化的接口,是很多3D扫 描仪的OEM软件。我们购买的Konica Minolta 的激光扫描仪Range 7就是用RapidForm来进 行逆向设计。

4、ReconstructMe
ProFactor公司开发的ReconstructMe是一个功能强大且易于使用的三维重建软件,能够 使用微软的Kinect或华硕的Xtion进行实时3D场景扫描(核心算法是Kinect Fusion),几分 钟就可以完成一张全彩3D场景。我们尝试过,效果还可以。ReconstructMeQt提供了一个实 时三维重建利用ReconstructMe SDK(开源)的图形用户界面。

注:法国ManCTL公司开发的Skanect为Mac平台的第一款3D 扫描软件,也支持者华硕的 Xtion或者微软的Kinect进行实时3D 扫描

5、Artec Studio
Artec公司出品的Artec Eva, Artec Spider等手持式的结构光3D扫描仪,重量轻且易于使 用,成为许多3D体验馆扫描物体的首选产品。我试用过Artec Eva后感觉还是需要较多的技 巧才能扫描好物体,而且后期需要用软件进行较多的处理,比如数据的去噪、修复、光 滑、补洞等。同时,Artec公司还开发了一款软件Artec Studio,可以和微软的Kinect或华硕的 Xtion以 及其他厂商的体感周边外设配合使用,使其成为三维扫描仪。Kinect通过Artec Studio可以 完成模型扫描,然后进行后期处理,填补漏洞、清理数据、进行测量、导出数据等。不确 定它是否也使用了Kinect Fusion算法。

6、PolyWorks
PolyWorks是加拿大InnovMetric公司开发的点云处理软件,提供工程和制造业3D测量解 决方案,包含点云扫描、尺寸分析与比较、CAD和逆向工程等功能。

7、CopyCAD
CopyCAD 是由英国 DELCAM 公司出品的功能强大的逆向工程系统软件,它能允许从已存在的零件或实体模型中产生三维CAD模型。该软件为来自数字化数据的 CAD 曲面的产生提供了复杂的工具。CopyCAD 能够接受来自坐标测量机床的数据,同时跟踪机床和激光扫描器。

六、基于草图的3D建模软件

1、SketchUp
SketchUp是一套面向普通用户的易于使用的3D建模软件。使用SketchUp,创建3D模型就像我们使用铅笔在图纸上作图一般,软件能 自动识别你画的这些线条,加以自动捕捉。它的建模流程简单明了,就是画线成面,而后 拉伸成体,这也是建筑或室内场景建模最常用的方法。

2、Teddy
Teddy是一款基于草图的3D建模软件,可以通过绘制自由形状笔画来制作有趣的3D模型。Teddy需要在您的机器上安装Java,主要是为Windows设计的。

3、EasyToy
EasyToy是一款3D建模软件。它使用基于草图的建模方法和3D绘画方法。用户界面非常友好,操作非常简单。通过组合几个简单的操作,可以快速创建复杂的3D模型。与现有的3D系统相比,EasyToy易于学习且易于使用。EasyToy具有广泛的应用,包括玩具设计,图形,动画和教育。

4、Magic Canvas
Magic Canvas一款可以从手绘草图中交互设计三维场景原型的软件,它将场景中模型的简单2D草图作为3D场景构造的输入。然后,系统自动识别数据库中的相应模型与用户输入的草图相匹配。

5、FiberMesh
FiberMesh是一款专门的网格生成工具。它可以动态创建真实几何体,也可以作为新的SubTool添加到现有模型中。在FiberMesh子调色板中的设置,可以为纤维,头发,毛发甚至植被生成完全不同的形状。

七、其他3D建模软件

1、人体建模软件
关于构建人体模型及动画,首推Metacreations公司的Poser软件(俗称“人物造型大 师”)和开源的MakeHuman软件。这两款软件都是基于大量人类学形态特征数据,可以快速形成不同年龄段的男女脸部及肢体模型,并对局部体形进行调整。可以轻松快捷地设计 人体造型、动作和动画。我读博期间用过Poser构建人体模型来做morphing,还是蛮方便的。

2、城市建模软件
加拿大Esri公司的CityEngine是三维城市建模的首选软件,可以利用二维数据快速创建三维场景,并能高效的进行规划设计。应用于数字城市、城市规划、轨道交通、管线、建 筑、游戏开发和电影制作等领域。另外,CityEngine对ArcGIS的完美支持,使很多已有的 基础GIS数据不需转换即可迅速实现三维建模,缩短了三维GIS系统的建设周期。该软件早期是 ETH Zurich大学的Pascal Mueller研究小组创办的Proceral公司开发的,后被Esri公司收购。

3、网页3D (Web3D)建模工具
一些基于网页(web)开发的3D模型设计软件,即基于WebGL,可以在浏览 器中完成3D建模的工具。比如3DTin,TinkerCAD(被Autodesk收购)等,它们的界面 简单直观,有Chrome等浏览器插件插件,可以在线生成3D模型,直接存在云端,并在社区分享模型。

4、其他小巧的3D建模软件
这些软件大部分都非常小巧,而且是开源且完全免费的。有很多媒体工作者和艺术家用这些小软件来制作3D作品,其中Blender, K-3D, Art of Illusion, Seamless3d, Wings3D等软件的使用面稍微广泛些。

Blender
K-3D
Art of Illusion
SOFTIMAGE|XSI Mod Tool
Zmodeler
TopMod3d
Google SketchUp 6
AutoQ3D Community - 3D Editor
Anim8or
Seamless3d
BRL-CAD
3DPlus
3D Canvas
eDrawings
link 3D
Minos
freeCAD
Bishop3D
K3DSurf
DesignWorkshop Lite
GDesign 2.0
Sweet Home 3D
trueSpace
Alibre Design Xpress
3DVia Shape
八、虚拟现实软件和平台
虚拟现实软件本质上不是用于3D建模的,而是用来对生成好的3D模型和场景提供关于 视觉、听觉、触觉等虚拟的模拟,让用户如同身历其境一般。相关软件也有很多,只大致提及几个比较常见的。

1、 VirTools和Quest3D
法国VirTools公司的VirTools和美国Act-3D公司的Quest3D都是元老级的虚拟现实制作软 件,简单来说,就是工业或游戏用的实时图形渲染引擎,是3D虚拟和互动技术的集成工 具。可以让没有程序基础的美术人员利用内置的行为模块快速制作出许多不同用途的3D产 品,如网际网络、计算机游戏、多媒体、建筑设计、交互式电视、教育训练、仿真与产品 展示等 。网上的学习资料比较多。

2、Unity3D (U3D)
Unity Technologies开发的Unity3D (U3D)是最近几年冒出来的新秀,是一个全面整合的 专业虚拟3D和游戏引擎。它在制作虚拟现实及3D游戏方面上手非常容易,操作简单,互 动性好,有强大的地形渲染器。我们的学生使用U3D可以很快地制作一个3D游戏,因此也 强烈推荐大家学习使用。

3、Vega
Vega是MultiGen-Paradigm公司开发的用于实时视觉模拟和虚拟现实应用的开发引擎, 提供很多的C/C++语言的应用程序接口API,结合其应用程序的图形用户GUI界面软件LynX,可以迅速创建各种实时交互的3D环境。对于开发3D游戏和3D场景漫游的项目非常 方便。
4、OSG (Open Scene Graph)
OSG (Open Scene Graph)是一套开源的基于C++平台的应用程序接口API,能够让开发者 快速、便捷地创建高性能、跨平台的交互式图形程序。它将3D场景定义为空间中一系列连 续的对象,能够对3D场景进行有效的管理。由于OSG是开源和完全免费的,很多3D应用 的软件都选用OSG作为基础架构。几年前,我们与一个公司合作开发的义齿软件就选用 OSG作为管理3D数据的框架,使得开发非常方便。

对于没有设计基础的朋友来说相当不容易。下面介绍几款面向学校教育以及个人爱好者的简单三维软件。

1、Tinkercad
Tinkercad是一款基于网页的3D建模工具,设计界面色彩鲜艳可爱,如搭积木般简单易用,适合青少年儿童使用并进行建模。
国外一名叫Emily的3D打印爱好者使用Tinkercad建模然后打印出酿酒屋。从图中可以看到,利用Tinkercad同样可以完成漂亮的细节和优质的外观表现。
2、123D Design
123D Design通过简单图形的堆砌和编辑生成复杂形状。这种“傻瓜式”的建模方式,即使你不是一个CAD建模工程师,也能随心所欲地在123D Design里建模。
3、123D Sculpt
123D Sculpt是一款运行在ipad上的应用程序,它可以让每一个喜欢创作的人轻松创作出属于自己的雕塑模型。
4、123D Creature
123D Creature可根据用户的想象来创造各种生物模型。无论是现实生活中存在的,还是只存在于想象中的,都可以创造出来。
5、123D Make
123D Make将三维模型,转换为二维图案利用硬纸板、木料再现模型。它可创作美术、家具、雕塑或其他简单的物体。
6、123D Catch
利用云计算的强大能力,可将数码照片迅速转换为逼真的三维模型。只要使用傻瓜相机、手机或高级数码单反相机抓拍物体、人物或场景,人人都能利用123D Catch将照片转换成生动鲜活的三维模型。除PC外,现已推出手机APP,手机也能当三维扫描仪。

D. mapinfo是什么软件能简单介绍一下么

Mapinfo是美国Mapinfo公司1986年推出的桌面地图信息系统,至今已从最初的Mapinfo for Dos 1.0 发展到了Mapinfo Professional 6.0。 Mapinfo产品定位在桌面地图信息系统上,与Arc/Info等大型GIS系统相比,因Mapinfo图元数据不含拓扑结构,它的制图及空间分析能力相对较弱,但对大众化的PC桌面数据可视及信息地图化应用来说,Mapinfo小巧玲珑,易学易用,价位较低,是一个优选GIS产品。Mapinfo提供了自己的二次开发平台,用户可以在平台上开发各自的GIS应用。二次开发方法归结起来有三种,它们是基于MapBasic的开发、基于OLE自动化的开发及利用MapX控件的开发。从早期的MapBasic到目前的MapX4.5,Mapinfo上的GIS系统开发变得越来越高效、简捷,下面介绍如何利用MapBasic、OLE自动化和MapX开发GIS应用系统。
一、利用MapBasic开发
MapBasic是Mapinfo自带的二次开发语言,它是一种类似Basic的解释性语言,利用MapBasic编程生成的*.mbx文件能在Mapinfo软件平台上运行,早期的Mapinfo二次开发都是基于MapBasic进行的。MapBasic学起来容易,用起来却束缚多多,无法实现较复杂的自定义功能,用它来建立用户界面也很麻烦,从现在角度看,MapBasic比较适合用于扩展Mapinfo功能。
二、利用OLE自动化开发
1. 建立Mapinfo自动化对象
基于OLE自动化的开发就是编程人员通过标准化编程工具如VC、VB、Delphi、PB等建立自动化控制器,然后通过传送类似MapBasic语言的宏命令对Mapinfo进行操作。实际上是将Mapinfo用作进程外服务器,它在后台输出OLE自动化对象,供控制器调用它的属性和方法。
OLE自动化开发的首要一步就是建立Mapinfo自动化对象,以Delphi为例(后面都是如此),你可设定一个Variant类型的全程变量代表OLE自动化对象,假设该变量名为olemapinfo,那么有:
oleMapinfo := CreateOleObject('Mapinfo.Application')
一旦OLE自动化对象建立,也就是后台Mapinfo成功启动,你就可以使用该对象的Do方法向Mapinfo发送命令,如:
oleMapinfo.Do('Set Next Document Parent' + WinHand + 'Style 1')
这一命令使Mapinfo窗口成为应用程序的子窗口,WinHand是地图窗口句柄,style 1 是没有边框的窗口类型。你还可以使用自动化对象的Eval方法返回MapBasic表达式的值,如下面语句返回当前所打开的表数:
TablesNum:=olemapinfo.eval('NumTables()')
你也可以直接调用Mapinfo菜单或按钮命令对地图窗口进行操作,如地图放大显示:
oleMapinfo.RunMenuCommand(1705)
2. 建立客户自动化对象触发CallBack
基于OLE自动化开发的难点在于所谓的CallBack,Mapinfo服务器对客户程序地图窗口的反应叫CallBack,假如你在地图窗口中移动地图目标,Mapinfo能返回信息告诉你地图目标当前的坐标位置,这就是CallBack功能。如果你想定制自己的地图操作工具或菜单命令,你必须依靠CallBack。但是想捕获CallBack信息,你的客户程序必须具备接收CallBack信息的能力,为此需要在客户程序中定义自己的OLE自动化对象,如:
//定义界面
IMyCallback = interface(IDispatch)
['{2F4E1FA1-6BC7-11D4-9632-913682D1E638}']
function WindowContentsChanged(var WindowID: Integer):SCODE;safecall;
function SetStatusText(var StatusText: WideString): SCODE; safecall;
//定义界面实现
TMyCallback = class(TAutoObject, IMyCallback)
function SetStatusText(var StatusText: WideString): SCODE; safecall;
function WindowContentsChanged(var WindowID: Integer): SCODE;safecall;
其中WindowContentsChanged函数用于返回变化窗口的ID号,即当地图窗口变化时(如放大、缩小),让Mapinfo将地图窗口的ID号返回给客户程序; 另一个SetStatusText函数返回Mapinfo状态条变化信息。编程人员不能随意定义这些函数,因为只有在三种情况下Mapinfo服务器的CallBack才会被触发:(1)地图窗口发生变化,触发函数为WindowContentsChanged;(2)Mapinfo状态条信息改变,触发函数为SetStatusText;(3)用户选择自定义工具或菜单命令在地图窗口上操作,如用户定制的画线工具,当用户在地图窗口画线时触发Mapinfo的CallBack返回线的坐标位置。
建立客户自动化对象后,调用MapInfo自动化对象的SetCallback方法将客户自己定义的自动化对象告诉Mapinfo,只要程序一运行,客户自动化对象就会自动在注册表中注册,然后就能收到CallBack信息了,如:
My:=MyCallBack.Create
oleMapInfo.SetCallBack(My)
这里打一个比方我想会有助于理解上述机制,客户程序与Mapinfo之间的交互就像舞台指挥与木偶演员的交流,客户程序中的地图窗口或说Mapinfo子窗口只不过是一个牵线木偶,后台的Mapinfo才是真正操纵木偶的演员,所以客户程序必须与后台Mapinfo建立正向、反向的联系机制,才能操纵地图窗口中的图形目标。
三、利用MapX开发
1. 掌握使用MapX
MapX是Mapinfo公司最新推出的ActiveX控件产品,目前已经发展到MapX4.5。由于MapX是基于Windows操作系统的标准控件,因而能支持VC、VB、Delphi、PB等标准化编程工具,使用时只需将控件装入开发环境,装入控件后,开发环境ActiveX工具条上会增加一个控件按钮Map,把它拖放到窗体上就可建立一个TMap类型的ActiveX地图对象Map,通过设置或访问该Map对象的属性、调用该Map对象的方法及事件,便能快捷地将地图操作功能溶入到你的应用程序中。
MapX由一系列Object(对象)和Collection(对象集合)组成,Map是最基本的对象,每个Map由Layer(层)、Dataset(数据集)和Annotation(标注)这三个对象及对象集合(Layers、Datasets、Annotations)来定义, 其中Layer用于操作地图图层,Dataset用于访问空间对象的属性数据,Annotation用于在地图上添加文本、符号等标注,掌握上述三个主要对象的特征后,再顺藤摸瓜掌握下一级对象的特征,如每个Layer又由Feature(点、线、面、文本图形目标)对象及对象集合(Features)定义,每个Dataset由Field(属性数据域)对象及对象集合(Fields)定义......,这样很快就能把MapX学到手。
2. 定义地图坐标系
在MapX开发中需要特别注意地图坐标系问题,MapX地图坐标系分为地图显示坐标系和内部计算坐标系,两者互为独立,在GIS应用开发中根据应用需要设置好这两种坐标系非常重要,因为坐标系一方面影响软件系统的内部坐标处理,另一方面影响地图的外观显示。Map对象的坐标系及投影通过CoordSys对象的Set方法定义:
Set(Type, [Datum], [Units], [OriginLongitude], [OriginLatitude],
[StandardParallelOne], [StandardParallelTwo], [Azimuth], [ScaleFactor],
[FalseEasting], [FalseNorthing], [Range], [Bounds], [AffineTransform])
其中主要参数:Type表示投影类型,Type为1时地图坐标以经纬度表示,后面都为可选参数,其中Datum为地球基准面;Units为坐标单位,如Units为7表示以米为单位;OriginLongitude、OriginLatitude分别为起始经度和纬度;StandardParallelOne、StandardParallelTwo为第一、第二标准纬线,该参数与地图投影相关。
通过设置Map对象的DisplayCoordSys和NumericCoordSys属性返回的CoordSys对象,就可设定地图显示坐标系和内部计算坐标系。举例如下:
procere TMain.DefineMapParam();
var
MapDatum: Variant;//地球基准面
begin
try
MapDatum := CreateOleObject('MapX.Datum.4'); //建立基准面对象
//定义北京54坐标系基准面
// (Ellipsoid, ShiftX, ShiftY, ShiftZ, RotateX, RotateY, RotateZ, ScaleAdjust, PrimeMeridian)
MapDatum.set(3, 24, -123, -94, -0.02, 0.25, 0.13, 1.1, 0);
//定义北京54坐标系经纬度作为内部计算坐标系
Map1.NumericCoordSys.Set_(1, MapDatum);
//定义北京54坐标系30度标准纬线麦卡托投影作为显示坐标系,单位为米
Map1.DisplayCoordSys.Set_(26,MapDatum,7,0,0,30);
finally
VarClear(MapDatum);
end;
坐标系是GIS系统的基石,正确设置坐标系是系统成败的关键。
3. 操纵地图对象
你可以简单地加载一个GeoSet文件,给Layers对象集合赋予具体的内容,随之在Map对象中就能看到地图显示,GeoSet文件类似MapInfo中的工作空间,MapX中带有Geoset文件的编辑器GeosetMangater.exe,用户可在编辑器中组合及设置图层,然后保存生成一个 *.gst 文件直接调入Map对象,这样可以节省时间。你也可以通过Layers对象的Add 或 Remove 方法添加或移走地图图层,如:
Map.layers.Add(FileName); // 添加图层,FileName为文件全路径名
Map.Layers.Remove(3); // 移走地图第三层
Layers对象由一组Layer对象组成,通过Layer对象的Features和Selection对象集合你可以操纵和选择图层上的图形目标,如:
Map.Layers.Item(1).AddFeature(Newobj); //将新建对象Newobj添加到图层一
4. 地图数据捆绑
数据捆绑是将不同来源的数据对应到地图层的过程,捆绑结果会产生一个Dataset对象,Dataset对象的集合组成Datasets Collection,它定义了Map对象的数据集属性。 你可以通过Datasets将不同来源的数据捆绑到地图上实现图文互动,或创建专题图,如下例ODBC Access数据的捆绑及专题分析:
procere TMapForm.ODBC1Click(Sender: TObject);
var
param: ODBCQueryInfo ;
ds: Dataset; //定义数据集
Datafields: Fields; //定义数据域
begin
param.SqlQuery := 'select * from China'; //选择Access数据库中的China表
param.DataSource := 'MapChina'; //ODBC 数据源名
param.ConnectString := 'ODBC;'; //或是user = ... Pwd = ... , 定义ODBC连接
Datafields.Add('GEONAME','GEONAME', miAggregationAuto,miTypeString); //添加数据域GEONAME
Datafields.Add('POPU','POPU', miAggregationAuto,miTypeNumeric); //添加数据域POPU
//将Access数据捆绑到Mapinfo China表
ds := Map.Datasets.Add(miDataSetODBC, param, unassigned, unassigned, unassigned, 'CHINA', Datafields, unassigned);
ds.Themes.Add(miThemeRanged, 'POPU', 'MyTheme'); //添加一个范围专题图
end;
5. 建立客户定制工具
你还可以定制自己的地图操作工具,下面通过定制一个名为Info的信息按钮工具简述方法步骤:
(1)定义客户工具常量
Const CUSTOM_INFO_TOOL = 1
(2)利用Map对象的CreateCustomTool方法定义客户工具,方法为:
CreateCustomTool (ToolNumber, Type, Cursor, [ShiftCursor] , [CtrlCursor], [InfoTips])
其中ToolNumber为工具号,即上面定义的常量;Type为工具类型;Cursor为光标形状,其他参数可选。
//定义Info工具为十字光标点触发工具
Map.CreateCustomTool(CUSTOM_INFO_TOOL, miToolTypePoint, miCrossCursor, miArrowCursor, miArrowCursor, unassigned)
(3)在Map对象事件ToolUsed中编写工具的Handler(操作内容)
procere TMain.MapToolUsed(Sender: TObject; ToolNum: Smallint; X1, Y1, X2, Y2, Distance: Double;
Shift, Ctrl: WordBool; var EnableDefault: WordBool);
begin
Case ToolNumber of
CUSTOM_INFO_TOOL : //信息工具Info
try
……
end;
(4)定义信息按钮的Click事件
procere TMain.InfoClick(Sender: TObject);
begin
Map.CurrentTool:=CUSTOM_INFO_TOOL;
end
四、小结
基于MapBasic的开发简单但受限制较多,比较适合Mapinfo功能扩展编程。而基于OLE自动化的开发比较繁琐,因为需要来回向后台的Mapinfo发送MapBasic字符串命令,所建立的应用程序运行速度也相对较慢,但这种开发方法能随心所欲制作出美观友好的界面,将地理操作与非地理操作溶为一体,并且能实现几乎100%的Mapinfo功能,这是目前的MapX4.5也不能比拟的。与传统GIS专业性开发环境相比,像MapX这类组件式GIS系统的出现可说是一种质的飞跃,它小巧灵活,开发简捷,价格便宜,以后会越来越大众化。 用MapX开发的GIS系统运行速度快,因为它不需要在Mapinfo软件平台上运行。但从目前MapX4.5看,MapX并没能实现所有的Mapinfo功能(据称95%以上),使用过程中发现其生成或编辑地图能力及地理分析能力不足,而且里面Bug也不少,当然随着今后新版的推出,MapX会越来越稳定、完美。