
citymaker
bdbox@qq.com
资料
展开
-
CityMaker 8开发之IResourceManager::AddModel/AddImage出错,提示内存已损坏或者rowbuffer.insert提示执行sql出错。
在多次插入的时候,CityMaker 8开发之IResourceManager::AddModel/AddImage出错,提示内存已损坏或者rowbuffer.insert提示执行sql出错。8里对释放要求比较严格,代码这样写就不会出现以上问题了。原创 2023-09-29 20:17:07 · 2624 阅读 · 1 评论 -
citymaker8 二次开发之IQueryFilter.IdsFilter如果为空数组,会发生什么?
citymaker8 二次开发之IQueryFilter.IdsFilter如果为空数组,会发生什么?等效于iqueryfilter为null,等于不做任何限制。原创 2023-09-06 14:38:10 · 1302 阅读 · 0 评论 -
citymaker8 二次开发之IQueryFilter.WhereClause某字段为null的查询sql语句写法
filter.WhereClause += string.Format(" AND \"{0}\" IS NULL", this.textEditFieldName.Text);原创 2021-08-24 09:17:27 · 277 阅读 · 0 评论 -
CityMaker 8 二次开发之。。。场景有时到一定级别出现卡卡卡,建索引重建简模型也会。。。注意范围太大
CityMaker 8 二次开发之。。。场景有时到一定级别出现卡卡卡,建索引重建简模型也会。。。注意范围太大在builder中,右键,资源目录某个要素类下,右键图层看一下他的envelop,是不是出现范围过于大,比如出现-3...5400000之类的,可能出现了偏离模型太远的“飞模”,删除重建索引速度就又快起来了。。。。。。。。...原创 2021-04-05 10:56:16 · 131 阅读 · 0 评论 -
Commands out of sync;...NativeCode:2014;
FDE查询时FDB正常,mysql报异常Message:Commands out of sync;...NativeCode:2014;文档中说明:【解释】mysql数据库不支持嵌套查询:不能同时发出2个查询请求,必须一个查询完了再发出另一个查询请求。解决这种问题可以改变应用逻辑,或者应用逻辑不好改就另开一个连接。【解决办法】把Search出来的modelpoint先存在内存里,最后一起请求model。【总结】在Cursor下尽量只操作数据相关,不要去查询其它信息,包括获取FeatureClas原创 2021-04-02 10:43:54 · 117 阅读 · 0 评论 -
CityMaker 8 二次开发之修改Geometry字段的类型为ModelPoint
修改Geometry字段是不行的,直接删除重建,可以把Geometry临时存在别处,然后。。。不懂的 fc = WorkSpaceServices.Instance().CurEditFeatureClass.OpenFeatureClass(); if (fc.GetFields().IndexOf("Geometry") != -1) { fc.DeleteFiel原创 2021-03-22 18:14:58 · 159 阅读 · 0 评论 -
CityMaker 8 二次开发之SplitModelPointByPolygon2D时的Polygon注意事项
bool successed = converter.SplitModelPointByPolygon2D(multiPolygon, inputModel, inputModelPoint, out outputModelInner, out outputModelPointInner, out outputModelOut, out outputModelPointOut);if (successed == false){ MessageBox.Show("执行失败!"); re...原创 2021-03-14 07:30:50 · 181 阅读 · 0 评论 -
CityMaker 8 二次开发之CreateRectangle时的Position注意事项
CityMaker 8 二次开发之CreateRectangle时的Position注意事项 ITerrainRectangle rectangle = RenderControlServices.Instance().AxRenderControl.ObjectManager.CreateRectangle(pos, 1, Convert.ToDouble(this.spinEditCut.Value), Color.Red, Color.Red, rootID)...原创 2021-03-14 07:26:46 · 193 阅读 · 0 评论 -
CityMaker 8 二次开发之Model与ModelPoint
ModelPoint记录着模型的位置及空间姿态,可以进行平移、旋转、缩放。但是,不能进行节点编辑。比如如果需要控制模型的节点,就必须操作操作Model;Model是模型本身,不表达所在位置。ModelPoint中表达这个Model所在的位置。推论是,你想对节点进行操作,就必须以Model的思维去处理;如果ModelPoint发生了平移、旋转、缩放,那就不能代表Model现在的状态。ModelPoint与Model的关联是ModelNameModelPoint的位置及姿态.原创 2021-03-05 22:00:32 · 269 阅读 · 0 评论 -
citymaker 8 sketchup和3dsmax直接导出fdb
经过测试,效率还不错,制作人员效率提升了。-------------------欢迎支持作者QQ:gispar@qq.com原创 2021-03-03 18:39:01 · 395 阅读 · 1 评论 -
citymaker 8 与3dsmax联动建模
citymaker 8 与3dsmax联动建模的小尝试---------------------------------------------------------------------------承接CityMaker各类二次开发、数据生产、数据加工处理等服务。有意者请联系QQ:gispar@qq.com原创 2021-03-03 14:30:45 · 1735 阅读 · 3 评论 -
CityMaker 8 二次开发之创建几何类型(工厂模式)
如上图:1)IGeometry依赖于工厂接口,也就是IGeometry不能直接new一个对象,需要工厂接口来辅助对象创建。所有的几何对象都是这样创建的。2)IGeometryFactory由GeometryFactory实现,通过IGeometryFactory geoFac = new GeometryFactory();创建工厂对象,再考虑由于geoFac创建其它几何对象。3)IGeometryFactory接口中的CreatePoint()与CreateGeometry()在创建IPo..原创 2020-06-27 11:07:47 · 315 阅读 · 0 评论 -
CityMaker 8 二次开发之IUIStaticLabel如何设置字体大小和颜色?
帮助文档里没有具体说明,直接上代码:IUIStaticLabel staticLab1 = manager.CreateStaticLabel();string font1 = manager.CreateUIFont(15f, "aa");staticLab1.Text = "[font='" + font1 + "'][colour='FF0000FF']30/立方米";原创 2020-06-26 12:14:06 · 304 阅读 · 0 评论 -
CityMaker 8 二次开发之 AxRenderControl.ProjectTree与devexpress projecttree之间如何关联?
插件式开发中,如何根据AxRenderControl.ProjectTree中找到的某个node,去查找图层树中某个node,从而设置其状态(checked,expended等等)。在citymaker connect中并没有公开相关的信息。两者之间时根据guid进行唯一关联的!方法如下:......TreeListNode node = ProjectTreeServices.P...原创 2019-12-24 10:33:29 · 333 阅读 · 0 评论 -
citymaker 8二次开发之连接MySQL时的注意事项
citymaker 8二次开发之连接MySQL时,需要注意不能重复使用fds,必须要关闭后重新打卡,否则出现 “外部组件发生异常”。fc.Dispose();ds.Dispose();fds.Dispose();ds = (new DataSourceFactory()).OpenDataSource(conn);fds = ds.OpenFeatureDataset(fl....原创 2019-10-22 17:17:46 · 181 阅读 · 0 评论 -
citymaker connect 8 插件式开发之控制框架主窗体
插件开发有时需要对主窗体或某些控件进行控制,比如,我希望改变一下主窗体的标题文字,不再是“CityMaker Connect 8.0....”,我们可以通过操控CityMaker Connect框架的主窗体对象完成:MainFrmService.MainFrm.Text = "我爱味精行";当然,所能达到的效果不仅如此。我们来改变一下界面显示风格:UserLookAndFeel.Default.S...原创 2018-04-12 15:54:53 · 615 阅读 · 0 评论 -
CityMaker Builder 8中的字段赋值脚本
CityMaker Builder 8 中的字段赋值,虽然功能有限,文档里也没有找到相应的使用方法,现总结一下备用。使用方法如下:引用某个字段:[Field1]引用某个数字:{123}用字符赋值:{asdf}赋予特殊字符:{‘adfadf’},但是-字符是不行的。数字相互加减乘除:{123}/{2}字段运算:[Field1] +[Field2]字段与数字的运算:[...原创 2019-06-24 15:44:09 · 332 阅读 · 0 评论 -
CityMaker 8二次开发之关于ProjectTree.SetVisibility说明
Guid itemGuid = RenderControlServices.Instance().AxRenderControl.ProjectTree.GetNextItem(groupHelperGuid, gviItemCode.gviItemCodeChild);while (itemGuid != Guid.Empty){ RenderControlServices.Inst...原创 2019-07-08 15:25:21 · 253 阅读 · 0 评论 -
citymaker 8二次开发之使用编辑方式创建点与使用选择方式创建点的异同
使用编辑方式创建点与使用选择方式创建点的异同选择方式获取与任意对象的交叉点,不会出现选择不准确的情况。编辑方式,则有可能选择到对象的外包围框。两段代码:1)编辑方式RenderControlServices.Instance().AxRenderControl.FeatureManager.UnhighlightAll();RenderControlServices.Ins...原创 2019-07-09 17:18:54 · 190 阅读 · 0 评论 -
citymaker 8二次开发之IRelationalOperator3D注意事项
IRelationalOperator3D计算时是将IModelPoint看作是一个IPoint,如果需要进行空间相交计算,可以采用PolylineIntersect方法。原创 2019-07-11 08:36:13 · 179 阅读 · 0 评论 -
citymaker 8二次开发之内存已损坏
尽量不要在循环中创建fdeCursor = fcZB.Insert();//不能放在循环中,否则会出现内存已损坏的错误!原创 2019-01-31 17:49:38 · 207 阅读 · 0 评论 -
CityMaker 8二次开发:一件事一件事的做
有个经常用到的操作是:需要选择出一条记录后,再对对象进行操作。比如查询出某些内容,然后对这些内容进行修改。有个建议(经验):一件事一件事的去做,先把对象获取到collection中,然后再遍历这个集合去处理。如果涉及相同的要素类,最好是前一个要素类获取完、close()后,在下一个操作中open后操作。尤其是,当处理大规模数据的时候。分离复杂及责任,让思考也简单,让操作也简单,也不会出错。...原创 2019-01-19 10:32:32 · 490 阅读 · 0 评论 -
CityMaker 8二次开发之贴图1
有一个任务,需要将以下贴图贴至某个面上。在CityMaker中的原理如下:很显然,计算纹理坐标是这个任务的关键,也就是分别计算a,b,c,d在新坐标下的坐标(每个点的u,v坐标),并且换算成新坐标。这个过程叫做纹理映射。我们需要将如下我们可以用向量的方法来计算每个点的坐标,计算过程是这样的:1)a':就是(0,0)。注意某些文献中认为(0,0)位于左上角,在citymaker api中是做了处理的...原创 2018-06-14 17:30:49 · 685 阅读 · 0 评论 -
CityMaker 8二次开发之基础数学知识-向量2
关于在CityMaker中做二次开发,向量的一些使用说明:1、从定义知道,向量是与位置无关的,但我们在实际使用中,坐标加上某个点就可以实现平移。2、如何表达向量的方向?只要定义了向量,就已经表达了方向。虽然向量同时具有长度和方向,长度可以用标量表达,但是方向无法用某种方式表达(如果要说标准化的向量也是对的)。所以只要定义了向量,就表达了方向。例如: ...原创 2018-06-21 17:44:22 · 575 阅读 · 0 评论 -
CityMaker 8二次开发之基础数学知识-向量1
前言:勿在浮沙筑高台做开发的有两种人:一种是堆砌代码的人,一种是思考代码背后思想的人。堆砌代码的人不思考,对技术理解并不深刻,对于基础知识的掌握还缺火候,浮云表面,很容易就倒台了。哈哈,我属于前者哦,多年过去了,没有积累,越走越累。奉劝大家踏踏实实做后者。正文:结合CityMaker随便写写二次开发中的数学基础知识-向量,向量用于对于在二维、三维场景中计算点、位置、角度等都有作用,这里提醒一下,要...原创 2018-06-13 17:39:12 · 384 阅读 · 0 评论 -
CityMaker 8二次开发之顶点数组(IFloatArray)的构成
IFloatArray是api中用于存储数组的一个接口。IFloatArray如何构成?举个栗子就明白了。如图:这个点的FloatArray构成就是x=FloatArray.get(1),y=FloatArray.get(2),y=FloatArray.get(3),如果你想遍历所有的节点,就必须这样操作:List<IPoint> pts = new List<IPoint>...原创 2018-06-12 15:58:55 · 222 阅读 · 0 评论 -
CityMaker 8二次开发之“这是什么鬼?”
什么时候才能去掉头重脚轻的毛病?1、Doc:void IProjectTree.SetVisibility ( Guid ID, byte VisibleMask) 设置可见性。 Note:byte VisibleMask 这是什么?设置可见性?该如何设置?可能:gviViewportMask是控制在不同视口的可见性的标识,如果需要设置多个,可以这样:gviView0|gviView...原创 2018-04-27 11:22:33 · 1187 阅读 · 0 评论 -
citymaker connect 8 插件式开发之渲染对象与持久对象
citymaker connect 8 插件式开发之从渲染对象与持久对象1、渲染对象与持久对象,以及设计思想:IRenderable对象意味着只在当前会话(具体的ecp文件)下会能够起效果,新创建的场景不受到影响,一般由AxRenderControl.ObjectManager来管理。典型的类包括:ITerrainModifier、IFeatureLayer等。与之对应的是需要持久保存的对象,需要...原创 2018-04-12 09:31:54 · 636 阅读 · 0 评论 -
CityMaker 8 二次开发遇到的一些坑
1、需要拷贝bin目录(一般有runtime的吧)下的所有文件到debug目录下,否则会出现“未能加载由XX导入的过程”:2、VS设计时,不能通过拖拽的方式放置控件了。建议:1)先用一个button,拖拽完后,将button替换一下,设计完成后替换以下代码。2)在窗体对应的design.cs代码里,直接加代码,如下: private Gvitech.CityMaker.Control...原创 2018-04-17 15:12:25 · 1613 阅读 · 0 评论 -
citymaker 8 插件式开发之从Pro 7到connect 8遇到的坑
1、(FieldInfoCollection)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("E504B735-A3AF-4D21-AF4C-38C0A6F9B82D")))必须这样写了:new FieldInfoCollection();2、COMException类 变为 Gvitech.CityMa...原创 2018-04-11 16:42:18 · 848 阅读 · 0 评论 -
citymaker connect 8 插件式开发总结之图层树
1、IRender相关的对象都是由AxRenderControl.ObjectManager进行管理的(创建、删除、刷新等)。IFeatureLayer也属于IRender的子类。如:RenderControlServices.Instance().AxRenderControl.ObjectManager.DeleteObject(oldFLayer.Guid);获取某个渲染对象的方法:IROb...原创 2018-04-11 15:49:23 · 872 阅读 · 0 评论 -
CityMaker 8二次开发之基础数学知识-向量3两向量的方向
关于向量应用,后续的章节会做的。如下图:现在需要求向量a,b的夹角θ,这是很常用的一个要求。我们知道向量的点乘,表达两个向量的相似程度,也就是,可以用于计算两向量之间的夹角。求夹角公式:这个公式求得的夹角,是a到b还是b到a的呢?这个就要看哪个在前了,也就是,这个是a->b的夹角,如果是b->a的,正好反过来。在CityMaker二次开发中的小段简单示例代码(求向量BC到BA的夹角,结...原创 2018-06-22 17:44:58 · 210 阅读 · 0 评论 -
CityMaker 8二次开发之关于IDrawPrimitive1
IDrawPrimitive是具有相同Material的面的集合。也就是说,IDrawPrimitive不一定是三角的。也有可能是多角的。三角面顶点数组有两种构造方式:1、一般数组模式,所有三角面的所有顶点坐标,按顺序放入VertexArray。在CityMaker中,IndexArray为null是为这种模式,VertexArray中每9个数值描述一个三角面。2、顶点索引模式,重合的顶点只会保存...翻译 2018-06-15 17:46:06 · 215 阅读 · 0 评论 -
CityMaker 8二次开发之gviModelCheckErrorIndexOutBound错误的修复
在进行三维模型其它操作处理前,需要对模型进行检查。但出现,gviModelCheckErrorIndexOutBound。主要代码:IModel.CheckUp()解决方法是:1)把模型导出fbx,然后将原始模型删除后,再次导入fdb即可。2)另外,也可以使用IModel.CheckAndRebuild()进行修复,但经过测试,有时候修复不了,具体原因未知,几件方案还是参考1吧...原创 2019-01-02 02:19:45 · 277 阅读 · 0 评论 -
CityMaker 8二次开发中的IRenderControl.SetRenderParam中的gviRenderParamLightModelAmbient
citymaker8二次开发中的IRenderControl.SetRenderParam中的gviRenderParamLightModelAmbient参数在文档中描述很奇怪,这里应该传入什么呢?在citymaker8二次开发中,传入的应该是Color对象,对象的RGB值可以设置模型的色彩,A没有作用。而在citymaker connect中,可以设置大小,是如何实现的呢?...原创 2018-10-16 09:48:33 · 326 阅读 · 0 评论 -
CityMaker 8二次开发记事
1、矩阵2、设置了,m41,m42,m43,1,如果值过大,可能会使模型发生抖动。osg导进去后,有0.几的裂缝吗?也是这个原因。每个IModel的顶点坐标都是小值,然后ModelPoint的Matrix里放上值。离得远,坐标值太大,在转换过程中有精度损失。3、connectruntime支持软授权吗?只支持硬锁4、导出FBX时,有个功能是对每个模型写入一些额外的信息吗...原创 2018-09-28 18:49:33 · 708 阅读 · 0 评论 -
CityMaker 8 二次开发之ExportOrthoImage的IEnvelope
欢迎批评指正,转载请注明出处和作者QQ:3133952829原创 2018-07-25 18:00:14 · 397 阅读 · 0 评论 -
CityMaker 8二次开发之IDrawPrimitive是什么?
IDrawPrimitive是什么?按照CityMaker帮助文档的表述及注释表述如下:1)IDrawPrimitive:绘制单元,用于存储绘制的材质,可获取和设置颜色数组绘制模式和类型。2)IDrawPrimitive表示一个绘制单元,一个DrawPrimitive对应一种材质Material,对应一个顶点数组。IDrawPrimitive是CityMaker平台对模型的组织的基础,有必要对ID...原创 2018-06-19 11:26:21 · 493 阅读 · 0 评论 -
CityMaker 8二次开发之贴图2贴图时是增加还是减少uv的数值?
如何做纹理映射,实际上就是如何把一张贴图上的点与模型上面上的点想对应起来。计算过程用到向量相关知识,因为都是在二维平面上来操作的。举个例子:如下图:如果要把一张图贴在一个面上,看右边的图,绿色框是模型,黑色框是贴图,要把黑色框贴好,像左边图一样。那么c到c'是如何处理呢?如果把c和c'简单的设置为想关联,就会出现拉伸了,就像一根橡皮被拉伸成1.5倍的情况。左边的图并没有拉伸过。这里...原创 2018-06-25 18:37:08 · 344 阅读 · 0 评论