- 博客(51)
- 资源 (14)
- 收藏
- 关注
原创 SVN的代码迁移到TFS的方法
1.代码之前是SVN管理的,准备换TFS管理。首先解除SVN文件夹绑定(1). 创建一个reg文件(2). 在文件中填入如下内容并保存:Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]@="Delete SVN Folders"[HKEY_LO...
2018-12-03 15:42:49
941
原创 OSG&OSGEarth中文处理方法
std::string StringToUTF8(const std::string& str){ std::wstring ansiStr; { int nLen = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.length(), NULL, 0); WCHAR* buffer = new WCHAR[nLen + ...
2018-11-28 11:13:27
849
2
原创 OSG之禁用按下Escape关闭视图
我们在操作视图的时候,按下Escape视图被动关闭,操作起来着实不方便。如何才能禁用Escape关闭视图呢?查看源码发现如下: /** Set the key event that the viewer checks on each frame to see if the viewer's done flag should be set to * signal...
2018-11-27 14:44:54
1019
原创 OSGEarth之坐标转换
// 屏幕坐标转世界坐标osg::Vec3d Global::ScreenToWorld(const osg::Vec3d screen){ osg::Camera* camera = _global->Viewer->getCamera(); osg::Matrix VPW = camera->getViewMatrix() * camera->getProjec...
2018-11-27 13:48:27
4641
原创 EarthManipulator的缩放问题
EarthManipulator默认的操作是向里滚动,地球远了,向外滚动,地球进了。我不太习惯这种操作,我个人认为向里滚动,地球近了,向外滚动,地球远了。查找了一下EarthManipulator的源码,在初始化的时候简单修改一下。_scroll_sens ( 1.0 )将1.0改为-1.0即可。_scroll_sens ...
2018-11-21 19:01:50
1231
1
原创 OSGEarth关闭光照的方法
方法一:earth文件配置关闭 <options> <lighting>false</lighting> <terrain> <lighting>false</lighting> </terrain> </options>方
2018-11-20 17:43:37
2289
原创 EarthManipulator实现定位
EarthManipulator* em = new EarthManipulator(); viewer.setCameraManipulator( em );方法一 em->setTetherNode( app.geo ); osgEarth::Viewpoint vp; vp.setNode( app.geo ); vp.headi...
2018-11-20 16:21:35
2544
1
原创 ATL对象构造及互转方法
1.对象构造CComObject<CITest>* test;CComObject<CITest>::CreateInstance(&test);2.CComObject转IITest*test->QueryInterface(__uuidof(IITest), (void **)pVal);3.IITest**转CComObject*CCom...
2018-11-20 16:07:46
272
原创 OSGEarth添加渲染器
Earth的渲染机制和OSG的不一样,具体区别我也说不出一二来,直接上代码。 _global->Caster->setLight( _global->Viewer->getLight() ); _global->Caster->getShadowCastingGroup()->addChild( _global->MapNode->get...
2018-11-20 15:55:10
3375
1
原创 OSGEarth添加天空盒
在Earth的基础上添加天空盒,使得Earth更加好看。 _global-&gt;SkyNode-&gt;setDateTime(osgEarth::DateTime(d.year(), d.month(), d.day(), 5.0)); if ( _global-&gt;MapNode-&gt;getNumParents() &gt; 0 ) { osgEarth::insert...
2018-11-20 15:48:05
4551
9
原创 计算任意模型中心经纬度的方法
废话不多说,先上核心代码: osg::NodePathList nodePaths = node->getParentalNodePaths(); if ( nodePaths.empty() ) return 0; osg::NodePath path = nodePaths[0]; osg::Matrixd localToWorld = osg::com...
2018-11-20 10:06:17
1461
1
原创 C#的exe调试C++COM组件
COM组件不是EXE,它不能独立执行,须附加在一定的应用程序上,通过设置相应的参数,就可以进行调试。1.新建C#窗体项目,加按钮并实现加载模型功能。路径F:\SVN\ViewControlExamples\ViewControlExamples\bin\x64\Debug\ViewControlExamples.exe2.配置路径3.编译COM组件,按F5即可启动调试。这里说了较为...
2018-11-20 09:56:57
553
2
原创 OSG&OSGEarth编译心得
编译OSG下载数据源http://www.openscenegraph.org/downloads/stable_releases/下载最全的(含full)第三方库https://download.osgvisual.org/官网下载源码http://www.openscenegraph.org/index.php/download-section/stable-releases...
2018-11-20 09:45:21
5995
3
原创 网页版使用Skyline64位COM组件
之前一直使用的是Skyline6.6.0 32位COM组件,并未发现什么问题,后来换了Skyline7.0.1 64位COM组件之后,浏览器不能正确的运行。查询了一些资料,最后找到了解决方法。1.在注册表里找到CURRENT_USER\Software\Microsoft\Internet Explorer\Main2.添加TabProcGrowth添加一个DWORD (32-bi...
2018-08-27 08:38:45
1076
1
原创 WPF去除边框的方法
WPF中,设置AllowsTransparency=true去除边框的方法比较简单,这里不做详细说明。下面主要演示AllowsTransparency=false的时候去除边框的方法。1.去网上下载一个Microsoft.Windows.Shell.dll 2.添加引用xmlns:shell="http://schemas.microsoft.com/winfx/2006/xaml/pr...
2018-08-23 11:38:37
4549
1
原创 MAX之不关闭MAX脚本开发
今天教大家如何将max插件开发与C#结合起来,以弹出框为例。 这种开发方式的三大优点1.开发过程中不需要关闭MAX2.可以引用三方组件3.开发过程汇总可以调试1.新建类库,命名:TestPlugin 2.右键属性,修改项目输出路径我的路径为:E:\Program Files\Autodesk\3ds Max Design 2015\plugins\TestPlugin...
2018-08-20 14:58:39
3494
原创 MFC+OSG之UI COM组件开发
前几天研究了WPF开发UI COM组件,今天结合OSG给大家演示一下如何开发OSG的UI COM组件。我这里的OSG环境是之前搭建好的,环境没有搭建好可以参考如下网站:[OSG+VS2015+Win10配置](https://blog.csdn.net/wangshubo1989/article/details/51591802%20OSG+VS2015+Win10%E9%85%8D%...
2018-08-20 10:51:50
1180
原创 WPF之DataGrid主从表实现方法
最近研究了一下DataGrid主从表的设计,现在分享给大家!不说废话,直接上示例代码。1.首先定义如下几个结构public class Model : UIView { private int m_id; private string m_name; private SexType m_sex; private int...
2018-08-20 10:31:29
3529
1
原创 MFC开发之UI COM组件
前几天有一个UI COM组件的需求,查了一些相关资料,完整的梳理了一遍,下面遍将梳理的内容分享。1.新建项目 2.下一步 3.设置项目属性 4.添加对话框 5.设置对话框属性 ,并添加一个测试按钮 Boder:None Control:True ID:IDD_MAIN_VIEW Style:Child System Menu:F...
2018-08-17 10:49:25
1403
原创 c++调用.NET dll
首先新建一个c++应用程序(我选的是控制台应用程序+window) 2.0配置属性引用.NET dll#using "C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll"#using "C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll"#us
2017-03-14 16:09:20
4879
原创 C#开发ActiveX控件并应用于网页
在C#中相对应的是COM组件,编译后是dll而不是ocx。所以在C#中,在创建项目时只能创建类库项目。 下面我教大家如何一步一步来实现。以管理员的身份启动VS,我的是VS2015。新建类库DevControlColl,框架选择2.0即可。环境配置(勾选一下两个选项)对AssemblyInfo.cs进行编辑,修改相应的属性 // 将false更改为true,自动生成的注释也做了说明
2017-03-14 14:58:58
5410
2
原创 几种常见的排序算法
交换两个对象(排序中会用到)private static void Interop_ExchangeValue<T>(ref T m, ref T n){ T Temp = m; m = n; n = Temp;}插入排序public static void InsertSort<T>(ref T[] array, IComparer<T> comparer){
2017-03-14 14:25:06
483
原创 revit api 之PostCommand用法之一
发送内部命令 public void PostCommand(RevitCommandId commandId);切换到三维试图uiApp.PostCommand(RevitCommandId.LookupPostableCommandId(PostableCommand.Default3DView));删除选中的元素UIApplication uiApp = data.Applicati
2017-02-24 14:40:26
4972
3
原创 revit api选择Element上的点画线
public Result Execute(ExternalCommandData data, ref string message, ElementSet elements) { try { UIDocument uiDoc = data.Application.ActiveUIDocument; Selection sel = uiDoc
2017-02-24 13:51:59
2053
原创 revit之射线法查找特定元素
我们在开发的过程中,射线法用的也挺多的,比如:想找到所有的梁;想找到离某一元素最近的元素等。今天简单的简介一下射线的用法。射线的发的核心类:ReferenceIntersector 他的内部有2中射线法查找的方法 查找符合条件的所有元素 IList Find(XYZ origin, XYZ direction) 查找符合条件的最近元素 ReferenceWithCont
2017-02-23 18:23:19
1884
2
原创 NW之模型的快速、平滑定位
在查看模型的过程中,我们常会用到模型定位,下面我介绍两种模型定位的扩展方法。快速定位/// <summary>/// 快速缩放至所有模型./// </summary>/// <param name="doc">The document.</param>/// <param name="items">The items.</param>/// <author>YangSen</author>
2017-02-22 11:54:07
1028
原创 NW中创建接口的方法
比如需要创建InwOaPropertyVec、InwOaProperty、InwGUIPropertyNode2等,则可以使用下面的通用方法进行创建。public static T NewObject<T>(this InwOpState10 state){ try { Type type = typeof(T); string value = "e
2017-02-21 19:58:36
1253
原创 revit中绘制任意直线
revit二次开发的过程中常用的方法。public static void NewLine(this Document doc, XYZ pStart, XYZ pEnd) { if (pStart.IsAlmostEqualTo(pEnd)) { return; }
2017-02-21 19:40:49
5790
4
原创 win32api之修改revit状态栏提示
在使用revit进行二次开发的时候,我们经常需要做一个提示,方便用户操作。api中提供了选择对象的时候可以设置提示信息,这样很不方便,下面我们使用win封装revit的状态栏提示,让大家可以很方便的设置你想提示的内容。public class StatusBar{ private static IntPtr m_statusBar = IntPtr.Zero; /// <summar
2017-02-21 13:13:54
1647
原创 win32api之虚拟键盘
在做开发的时候,UI上的一些快捷键可以使用虚拟键来触发。比如:revit二次开发中的快捷键后台触发。/// <summary>/// 虚拟键盘./// </summary>/// <author>YangSen</author>/// <date>2016/12/1</date>public class VirtualKeyboard{ /// <summary> ///
2017-02-21 12:58:45
2414
原创 win32api之窗体穿透
/// <summary> /// 窗体效果. /// </summary> /// <author>YangSen</author> public class WindowEffect { private const uint WS_EX_LAYERED = 0x80000; private const int WS_EX_T
2017-02-21 12:53:05
2248
原创 win32api之添加水印
不多说,直接上代码。 public class Watermark { private const int EM_SETCUEBANNER = 0x1501; /// <summary> /// 设置水印. /// </summary> /// <param name="handle">The handle.
2017-02-21 12:49:24
1881
原创 3ds Max .NET二次开发的基础入门篇
3ds Max .NET SDK由以下.NET程序集组成。3ds Max从bin / assemblies文件夹中加载插件。 public static class AssemblyEntry { /// <summary> /// 启动时候执行. /// </summary> /// <author>YangSen</a
2017-02-21 12:42:54
10236
10
原创 cad中绘制一条直线
绘制一条直线 public void DrawLine(Editor ed, Point3d start, Point3d end) { try { double[] startPoint = new double[3] {
2017-02-17 12:35:42
1186
原创 NW中Geometry的使用技巧
设置SelectionBehaviorlectionBehavior = SelectionBehavior.Geometry;利用Search去查找 // 查找所有 public ModelItemCollection GetGeometrys() { Search s = new Search();
2017-02-17 10:07:26
837
原创 资源打包Assetbundle
在开发的过程中,我们需要加载外部资源,将先将资源打包为*.assetbundle文件,然后程序中可以之间使用。创建AssetBundle/// <summary> /// 将选中的预制分别打包 /// </summary> [MenuItem("DevTools/Build AssetBundles")] static void Create
2017-02-17 09:45:54
609
原创 NwCreate之创建nwc文件
环境:Navisworks 2016、Navisworks 2016 SDK、Microsoft Visual Studio 2013。1、创建应用程序,选择默认设置,点击完成。2、在新建项目右键“属性“,设置平台为x64。3、安装了SDK之后,在安装目录会多出一个api文件夹,这里只介绍nwcreate4、设置附加包含目录(include)。5、设置附加依赖项(nwcreate.lib、lcodp
2016-07-13 22:55:05
2150
2
原创 理解矩阵乘法
大多数人在高中,或者大学低年级,都上过一门课《线性代数》。这门课其实是教矩阵。刚学的时候,还蛮简单的,矩阵加法就是相同位置的数字加一下。 矩阵减法也类似。 矩阵乘以一个常数,就是所有位置都乘以这个数。 但是,等到矩阵乘以矩阵的时候,一切就不一样了。这个结果是怎么算出来的? 教科书告诉你,计算规则是,第一个矩阵第一行的每个数字(2和1),各自乘以第二个矩阵第一列对应位置的数字(1和1),然后将
2016-07-13 22:15:37
880
原创 委托的简单应用
int Max(int x, int y) { return x > y ? x : y; } int Min(int x, int y) { return x < y ? x : y; }在C++中可以定义一个函数指针:申明:int (*p)(int,int)
2013-08-27 21:40:43
1104
原创 删除实例
可以根据需要,删除不需要的实例。 Transaction tsSaveAsSelected = new Transaction(doc, "SaveAsSelected"); tsSaveAsSelected.Start(); foreach (Element e in collection)
2013-08-27 21:33:43
1311
自定义IP控件
2013-08-21
dll反编译工具
2013-08-18
calculator
2010-04-04
Calculator
2010-04-04
课程设计--用MFC编的超牛的《五子棋》
2010-01-08
航空售票订票系统++数据库课程设计
2010-01-08
航空售票订票系统++数据库课程设计
2010-01-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人