(二卡塔 尔(英语:State of Qatar)Hololens Unity 开荒入门 之 Hello HoloLens~

.NET开发CAD入门之Hello,.netcadhello

1、开发情况介绍

使用.NET开发CAD,在CAD2005之前的版本其实用的是ActiveX的方式开发的,并非真正意义上的.Net开发。从CAD2005开始支持了.NET对其的开发,在安装CAD2005之后的版本时都必须安装.NET
Framework,证明CAD本身也有部分功能是用.NET开发出来的。

2、开发环境搭建

2.1:安装CAD的2005或更高版本。

2.2:安装.NET开发工具(例如VS)。

2.3:开发语言可以用属于.NET的C#、VB.NET、托管C++等。

3、使用VB.NET创建CAD开发的Hello项目

3.1:VS2005新建项目,选择VB-类库,指定名称及路径,勾选“创建解决方案的目录”。

3.2:项目添加引用,acdbmgd.dll和acmgd.dll,dll文件路径(C:\Program
Files (x86)\AutoCAD 2007)

 

3.3:视图-对象浏览器,浏览引用的程序集所提供的的类

3.4:添加Hello命令

'要添加命令必须导入AutoCAD .NET托管封装类
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Runtime

Public Class Class1
    '添加CAD命令,必须用 Runtime提供的CommandMethod属性
    <CommandMethod("Hello")> _
    Public Sub Hello() '当Hello命令在CAD中被执行,Hello()函数就会被调用
        '获取当前活动文档的Editor对象,也就是命令行
        Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
        '调用Editor对象的WriteMessage函数在命令行上显示文本
        ed.WriteMessage("欢迎进入.NET开发AutoCAD的世界!")
        'CAD当前活动文档的Editor对象可以使用Application类来访问,创建Editor实例后,可以调用它的WriteMessage函数在命令行显示文本内容
    End Sub
End Class

3.5:调试

3.5.1:项目属性-调试-启动外部程序,找到相应的CAD版本

3.5.2:CAD装载托管程序,用NetLoad命令。在CAD命令行执行NetLoad命令,弹出【选择.NET程序集】的对话框,选择编译生成的Hello.dll文件。

3.5.3:在CAD命令行输入Hello并回车执行命令,会出现“未知命令”的提示。

因为什么之后研究,解决这个问题的方法是:停止调试,项目属性-引用
查看acdbmgd.dll和acmgd.dll的“复制本地”属性,将True修改为False。

再次调试即可。

 在此非常感谢《Auto CAD VBA & VB.NET开发
基础与实例教程》这本书对我的帮助。 

文章内容纯属个人的一点想法和感受,由于水平有限,难免会有错误和遗漏,欢迎批评指正(邮箱:[email protected])。
查看评论

1、开发情况介绍
使用.NET开发CAD,在CAD2005之前的版本其实用的是ActiveX的方式开发的,并非真正意义上的…

学习源于官方文档
微软官文~

安装好开发工具后,新建项目,看到有提示quickstart的时候选择是,进入开发界面后,会出现如下的代码结构,

目录

  1. electron简介
  2. 使用electron构建的应用
  3. 开发环境搭建
  4. electron-quick-start工程

笔记一部分是直接翻译官方文档,部分各人理解不一致的和一些比较浅显的保留英文原文

如果没有出现,则从官网文档上,下载一份源码:https://mp.weixin.qq.com/debug/wxadoc/dev/demo/quickstart.zip?t=2017112

1. electron简介

electron 是一款利用 Web技术JavaScript、HTML 和 CSS
开发跨平台(Mac,Windows和Linux系统)桌面应用的开源框架,最初是 Github
发布的 Atom 编辑器衍生出的 Atom Shell,后更名为 Electron。

可以将 electron 看作是一个由 JavaScript 控制的一个小型的 Chrome
内核浏览器。

electron 内置了 Chromium 内核 和 Node,因此可以使用 HTML 和 CSS
来实现应用的 GUI 界面,用 JavaScript 调用丰富的原生
API(如打开文件窗口、通知、图标等)。

图片 1

electron-intro.jpg

(二)Hololens Unity 开发入门 之 Hello HoloLens~

本文主要记录 HoloLens Unity 开发入门 ~

图片 2

2. 使用electron构建的应用

  1. Atom
    github专门为程序员推出的一个跨平台文本编辑器。
  2. Insomnia
    HTTP请求测试工具
  3. Visual Studio
    Code
    Microsoft开发的针对于编写现代Web和云应用的跨平台源代码编辑器
  4. slack
    企业协作软件

查看更多使用 Electron 构建的项目可以访问 Apps Built on
Electron

一、说在前面的话

Unity 对 VR AR 甚至 将来的 MR 来说,的确是一个相当不错的开发引擎 ~
(这里就不辩论UE4了~)
经过过去一年的Unity和移动设备的混合开发,总结出了下面的一些结论

对于这个结构 我们先简单的看一下,

3. 开发环境搭建

需要安装以下工具:

  1. node
  2. electron
1、便捷开发者对3D的处理

深有感触呀~从最开始接触公司的项目开始的时候,那会用的是Vuforia
iOS原生的SDK做的开发,一句一句没有逻辑的 OpenGL
命令行,瞬间让刚刚接触OpenGL的开发者懵逼 ~
Unity作为一个3D引擎,通过底层连接移动端 (OpenGL)或者 HoloLens
(D3D)的 显卡接口,向开发者暴露 高度封装的
API,便捷了开发者对图形的处理~

1.app.js

3.1 node安装

下载链接
http://nodejs.cn/download/

以windows平台为例
下载msi安装包,根据安装向导安装。
安装程序会自动在环境变量中的path变量添加node的安装路径。
如需卸载只需要通过“控制面板”->”卸载程序”入口卸载“node.js”应用
安装完以后在命令行中运行node -v能够显示版本号代表安装成功。

图片 3

node-install.png

2、多平台功能性API规范统一

刚刚过去的2016年据说是VR元年,这一年中 ~
除开国产硬件厂商,著名的海外VR硬件产商也比较多,
大量的硬件产商可能对于消费者来说 是 一件好事,多了选择的空间 ~
可是对于开发者来说 是 一场噩梦呀 ~
老板的需求永远是希望一套代码任何硬件都能跑,恩~
这时候Unity在中间起到一层缓冲的作用。。同一个UnityEngine的方法,同一套代码
可以 在不同的设备在跑,当然不能百分之百的说 Unity
能很好的兼容各种设备,但是能起到对开发复杂程度 一定
的缓冲作用。(个人感觉UnityEngine的API还不够规范,希望Unity也继续努力吧~)

app.js里声明了一个App应用,其中onLauch方法为其生命周期钟的方法:另外的三个方法就是
onShow,onHide,onError..分别在app加载,显示,隐藏和错误时触发。

3.2 electron安装

在命令行中输入以下命令,即可安装electron

npm install -g electron-prebuilt

等待安装完成之后,在命令行输入electron -v能够显示版本号代表安装成功。

图片 4

electron-v.png

3、开发者数量

额 ~ 这个话题官方数据 说 2014年开发者数量 就已经达到全球 330万人~
额,不过从过去Unity在手游领域来看,数量应该也算是不少了 ~
就连HoloLens有自己D3D引擎也推荐Unity来开发(至于官文推荐Unity也有可能是微软和Unity的一些合作关系吧~)
相对于如果各种AR设备平台的开发者来说,Unity在应用厂商人才招聘上绝对是一大优势~

在app.js中给App声明的方法,在全局中都可以访问,访问的方法是:

4. electron-quick-start工程

执行以下命令就可以运行最简单的electron工程

# 克隆这仓库
$ git clone https://github.com/electron/electron-quick-start
# 进入仓库
$ cd electron-quick-start
# 安装依赖库并运行应用
$ npm install && npm start

运行结果如下图:

图片 5

electron-quick-start.png

electron-quick-start工程的目录结构如下:

electron-quick-start/
    |- package.json
    |- main.js
    |- index.html

package.json是Node.js项目的配置文件,index.html是桌面应用的界面页面,main.js是应用的启动入口文件。

总结

其实很容易看出 ~
上面说到的Unity的所优点都是相对于应用产商来说,大大的节省了开发成本
,分为人力成本和技术成本~ 作为硬件厂商的微软 为
广大的应用产商提供了便捷的开发方式,而应用产商开发出大量的基于HoloLens的产品,这时候实现了双赢
~ 授人玫瑰,手留余香。。。

NOTE:对于HoloLens
来说,仅仅只用Unity开发HoloLens并不能很好的开发产品。
首先,Unity对于3D图像的处理时相当不错的选择~不过Unity对于界面开发的便捷性无力吐槽~
其次,Unity开发HoloLens是用高度封装好的API,至于实现一些复杂的需求,可能还会涉及核心层面的一些接口的调用
!


varapp=getApp();app.getUserInfo(func);//调用App里面的getUserInfo方法

4.1 package.json

package.json 跟常规 Node 程序一致,将 main.js 作为
程序的启动入口文件,基本内容如下:

{
  "name"    : "electron-quick-start",
  "version" : "1.0.0",
  "main"    : "main.js",
  "scripts" : {
    "start" : "electron main.js"
  },
  "devDependencies": {
    "electron-prebuilt": "^1.2.0"
  }
}

注意:如果 main 字段没有在 package.json 声明,Electron会优先加载
index.js。

二、HoloToolkit-Unity 集成

使用Unity开发HoloLens的原理和Unity开发移动端游戏一样~
Unity调用了硬件设备提供的API实现一系列功能 ~

图片 6

2.app.json

4.2 index.html

index.html 作为我们的程序界面

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Hello World!</title>
  </head>
  <body>
    <h1>Hello World!</h1>
    <!-- All of the Node.js APIs are available in this renderer process. -->
    We are using Node.js <script>document.write(process.versions.node)</script>,
    Chromium <script>document.write(process.versions.chrome)</script>,
    and Electron <script>document.write(process.versions.electron)</script>.

    <script>
      // You can also require other files to run in this process
      require('./renderer.js')
    </script>
  </body>
</html>

1、下载

HoloToolkit-Unity GitHub下载地址 ~
点我
首先把它download 吧~
使用Unity打开,能看到分为两个文件夹,一个是HoloToolKit
(这个就是我们需要的开发工具了),还有一个是 HoloToolkit-Examples
里面都是一些实例~ 可以参考参考 一些 HoloToolKit 方法的调用 ~

这个文件用于配置整个应用的属性,比如窗口的属性,应用中的路由页面配置,导航条navbar,tabBar,networkTimeout,debug等配置。下面简单说下该配置里的参数:

4.3 main.js

main.js 用于创建窗口和处理系统事件,一个典型的例子如下:

const electron = require('electron');
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
let mainWindow;

function createWindow () {
  //创建一个 800x600 的浏览器窗口
  mainWindow = new BrowserWindow({width: 800, height: 600});

  //加载应用的界面文件
  mainWindow.loadURL(`file://${__dirname}/index.html`);

  //打开开发者工具,方便调试
  //mainWindow.webContents.openDevTools();

  mainWindow.on('closed', function () {
    mainWindow = null;
  });
}

app.on('ready', createWindow);

app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

app.on('activate', function () {
  if (mainWindow === null) {
    createWindow();
  }
});

2、压包

选中HoloToolKit 右键 Export
Package,再勾选第一个HoloToolKit,,点击Export到处一个Packgage

图片 7

01.pages

3、集成HoloToolKit

新建一个Unity工程 ~ 导入刚刚导处的package 就 OK了~


该参数是一个数组,放置所有的路由页面,

三、Camera 配置

1. 设置 Camera 的 Tag 为 MainCamera
2. 设置 Camera 的 position 为 0,0,0
3. 设置 Camera 的 Clear Flags 为 Solid Color
4. 设置 Camera 的 Background RGBA 为 0,0,0,0
5. 设置 Camera Clipping Planes 的 Near 值 为 0.3到0.85之间的一个值~

图片 8

相机需要改变的配置就是以上这些了~ 查阅官文可得~


第一项被默认为起始页

四、Unity工程的配置

1. 选择 File > Build Settings… 更改为 Windows Store 平台
2. 设置 SDK 为Universal 10
3. 设置 Target device 为 HoloLens
4. 设置 UWP Build Type 为 D3D
5. 勾选Debugging 里面的 Unity C# Projects ~ 这样才能导出VS工程 ~

图片 9

6. 接着点击Player Settings…选择Windows Store 平台,在Other Settings
找到Virtual Reality Supported 并且勾选上 ,点击加号 添加Virtual Reality
Devices设备 Windows Holographic ~

图片 10

7. 选择 Edit > Project Settings > Quality ,点击向下 的 按钮 ~
选择 Fastest , 最快的~

图片 11

以上所有的配置完成~ 在场景里面随便丢一个Cube吧~ 导出,,看看效果 ~


02.window

五、Hello HoloLens ~

图片 12

该参数配置背景色,背景文字样式,导航条的背景色,导航条的文字颜色

03.tabBar

该参数可以配置tab按钮的样式,在不配置的时候是不显示的。

11.list:数组,里面配置每个tabBar文字,图标的样式,和路由路径

参数为:pagePath,text,iconPath,selectedIconPath

12.position:tabBar的位置,bottom/top

13.backgroundColor:背景色

14.color:文字颜色

15.selectedIconPath:选中的图标颜色

04.networkTimeout

对象类型:比如:request:10000

05.debug:true/false

3.app.wxss

定义全局的样式特征,里面定义的样式整个app都可以访问。

4.pages文件夹

里面放置所有的页面,当然你想放在其他地方,最好遵循标准命名规范

5.utils

放置公共的组件,组件引用遵循amd规范,可以使用commonJS规范,也可以使用es6规范,但是对于es6的解构引入,现在在微信小程序的js里还不支持。

6.简单的体验

修改pages/index/index.js钟的data参数里的motto字段的值,点下保存,会发现左侧的界面变随着更新。

图片 13

然后尝试着在data里添加字段,然后在前台绑定

data: {    motto:’欢迎来到微信小程序’,    userInfo: {},    logo:’语巷’},

index.wxml

{{logo}}{{motto}}

效果:

图片 14

到这里为止,我们已经知道了data的作用了

原文链接:http://www.moguiweb.com.cn/article/detail/587b15bf4981030efc96ff92

发表评论

电子邮件地址不会被公开。 必填项已用*标注