1,pdms没有java接口 2,pdms有一种他们自己定义的PML解释语言,可进行完全的pdms开发。pdms的开发思路就是封装一些核心函数,提供给外部pml调用,以保证核心的安全。否则,开发者会把pdms弄成一锅粥煮,然后崩溃。他们就是要把开发人员变成pml程序员。 3,pdms提供一种动态链接库接口,只能读pdms数据库,不能写pdms数据库。随着pdms市场的壮大,也许应该做个计划,来支持写pdms数据库。并支持VBA/C#/Java之类的通用接口。 4,当务之急,aveva还是要修改如下函数不能正常返回值BUG: PDMS DARS 接口函数d3rtex不能读取表达式汉字 Post By:2008-4-8 16:59:30 PDMS DARS 接口函数BUG
d3rtex ( "Stext", cd3tex, &id3err ) 该函数d3rtex在读取表达式时,如含有(符号时,若\'字符后面紧跟汉字字符时,返回值不正确。例如,在UESOFT网站下载的pdms工程600MW项目中,元件库GD2000,元件 =8377/70026,节点SDTE属性STEXT值在PDMS数据库中本来是: ( \'钢板焊制异径管 Φ\' + STR ( ATTRIB PARA[6 ] ) + \'X\' + STR ( ATTRIB PARA[7 ] ) ) d3rtex ( "Stext", cd3tex, &id3err )读出来的“钢板焊制异径管 Φ”正确值本来应该是: &~8V0e:8VFRl>69\ & &~&5 & 但函数d3rtex读出来的实际值变成了 “Ve8Fl6\”。 只有在PDMS界面把SDTE节点STEXT属性更新一次,读出来的值才正确。使用PML宏更新STEXT属性中的双字节字符、单字节字符,只有单字节字符能被正确读出。如果去掉STEXT字段中汉字字符前的(或者\'字符,读出来的值才正确。 \'&~8V0e:8VFRl>69\ & &~&5 &\' + STR ( ATTRIB PARA[6 ] ) + \'X\' + STR ( ATTRIB PARA [7 ] ) 详见http://www.dodoinfo.com/b/dispbbs.asp?boardid=66&Id=2284 ////////////////////////////////////////////////////////////////////////// // 函数:PdsReadDoubleArrAtt //------------------------------------------------------------------------ // 功能:读取double数组类型的属性的值 //------------------------------------------------------------------------ // 输入: // strAttType: 属性的类型 //------------------------------------------------------------------------ // 输出: // dArrAttValue: 属性的值 //------------------------------------------------------------------------ // 返回: // PDMSImport::ErraorStatus: 错误状态 ////////////////////////////////////////////////////////////////////////// PDMSImport::ErrorStatus PdsReadDoubleArrAtt(const CString& strAttType, DoubleArray& dArrAttValue) { int es = 0; int nNum; int nLength = 100; PDMS_NAME szAttType = {0}; float dAttValue[100] = {0}; strcpy( szAttType, (LPCTSTR)strAttType); d3rra(szAttType, &nLength, dAttValue, &nNum, &es); if ( es != 0 ) { return (PDMSImport::ErrorStatus)es; } dArrAttValue.RemoveAll(); for(int i = 0; i< nNum; i++) dArrAttValue.Add(dAttValue); return PDMSImport::eOK; } ////////////////////////////////////////////////////////////////////////// // 函数:PdsReadPosAtt //------------------------------------------------------------------------ // 功能:读取当前element相对于指定坐标系的位置 //------------------------------------------------------------------------ // 输入: // strAttType: 指定的坐标系(包括 PDMS names, PDMS reference numbers, // PDMS nouns and the text \'OWN/ER\') //------------------------------------------------------------------------ // 输出: // iAttValue: 属性的值(3维double型数组) //------------------------------------------------------------------------ // 返回: // PDMSImport::ErraorStatus: 错误状态 ////////////////////////////////////////////////////////////////////////// PDMSImport::ErrorStatus PdsReadPosAtt( const CString& strAttType, DoubleArray& dArrAttValue ) { int es = 0; PDMS_NAME szAttType = {0}; float fArrAttValue[3] = {0}; strcpy( szAttType,(LPCTSTR)strAttType ); d3rprl( szAttType, fArrAttValue, &es ); if ( es != 0 ) { return (PDMSImport::ErrorStatus)es; } dArrAttValue.RemoveAll(); for ( int i = 0; i < 3; i++ ) { dArrAttValue.Add( fArrAttValue ); } return PDMSImport::eOK; }
|