Ejemplo n.º 1
0
void CPreDrawPag::OnDrawpreno() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	static CFont font;
	LOGFONT lf;
	lf.lfHeight=8;
	//font.DeleteObject();

	if(m_bCheckDrawNoPre == 1)
	{
		//       LabelStartPN.Caption = "支吊架起始图号" 
		m_sLabelStartPN= GetResStr(IDS_MsgBox_60570) + EDIBgbl::TBNSelPrjVlm;
		//strcpy(lf.lfFaceName,"arial");
		//font.CreateFontIndirect(&lf);
		//m_LabelStartPN.SetFont(&font);
	}
	else
	{
		//       LabelStartPN.Caption = "支吊架起始图号" 
		m_sLabelStartPN= GetResStr(IDS_MsgBox_60570) + EDIBgbl::TBNSelPrjVlm;
		//strcpy(lf.lfFaceName,"arial");
		//font.CreateFontIndirect(&lf);
		//m_LabelStartPN.SetFont(&font);
	}
	UpdateData(false);
}
Ejemplo n.º 2
0
CPreDrawPag::CPreDrawPag() : CPropertyPage(CPreDrawPag::IDD)
{
	//{{AFX_DATA_INIT(CPreDrawPag)
	m_OrientationPicture=false;//pfg20050426
	m_bCheckDrawNoPre = TRUE;
	m_bCheckOSFlag = TRUE;
	m_bCheckDraw_BOM = TRUE;
	m_bCheckDrawOverWrite = TRUE;
	m_bCheckAnnotateCSPR = TRUE;
	m_bCheckNotPROMPT_ACAD_SHIFT = FALSE;
	m_bCheckNotPROMPT_Catlog_Overwrite = FALSE;
	m_bCheckAutoSaveDrawing = FALSE;
	m_sComboSEQyOffset = _T("");
	m_sTextDrawNoStartNumber = _T("");
	m_strDwgVersion = _T(""); 
	m_stextDWGPRE = _T("");
	m_sLabelStartPN = GetResStr(IDS_PHSFirstChartMark);
	m_bNoFenQu = FALSE;
	m_bTBhq = TRUE;
	m_bBomSprFactory = FALSE;
	m_bSumBomSprFactory = FALSE;
	m_bDimLocation = FALSE;
	m_bCheckDraw_SumWeight = FALSE;
	m_GroupWare = 0;
	m_strGroupWareName = _T("");
	m_bCheckTagUsingCircle = FALSE;
	m_bCheckCustomPicNo = FALSE;
	m_bCheckLJMX_BJBW = FALSE;
	m_bCheckBGForBJBW = FALSE;
	m_bCheckDWForBJBW = FALSE;
	m_fCircleDiameter = 0.0f;
	m_bCheckDLOADBJBW = FALSE;
	m_bCheckDrawNameWithoutNo = FALSE;
	m_fSeqTxtHeight = 0.0f;
	m_bNoWaiKuang = FALSE;
	m_bNotDrawWeight = FALSE;
	m_bInsertLength = FALSE;
	m_bColdHeatState = FALSE;
	m_bInstallElevation = FALSE;
	m_bHzabs = TRUE;
	m_bPrintSA_Value = FALSE;
	m_fOvertopDim = 2.0f;
	m_fDistanceOffset = 0.0f;
	m_bDimNumber = FALSE;
	m_fSetTableWidth = 0.0f;
	m_fSetTKWidth = 0.3f;
	m_IsACAD = 0;
	m_bDrawWeldSymbol = FALSE;
	m_bAutoWeldViewInsertPoint = FALSE;
	m_bDrawWeldViewDim = FALSE;
	m_bWeldAutoDirectAndPos = FALSE;
	m_MaxLGLong=110;//拉杆最大绘制长度
	m_MaxLGLong = 0.0;
	m_bSymbol =	FALSE;
	//}}AFX_DATA_INIT
	m_iOldTabFontSel=-1;
}
Ejemplo n.º 3
0
BOOL CCalculate::AutoCalPhs(const VARIANT FAR& varRs, short zdjh, short nth) 
{
	// TODO: Add your dispatch handler code here
	CFrmStatus FrmProgress;
	if(!IsWindow(FrmProgress.m_hWnd))
    	FrmProgress.Create(IDD_STATUS,NULL);
	FrmProgress.CenterWindow();  
	FrmProgress.ShowWindow(SW_SHOW);

	modPHScal::zdjh=zdjh;
	modPHScal::iSelSampleID=vtoi(FrmTxsr.m_pViewTxsr->m_ActiveRs->GetCollect(_T("iSelSampleID")));

	CString sTmp;
	sTmp.Format(_T("%d"),zdjh);
	frmStatus.m_Label1.Format(GetResStr(IDS_CalculatingNoXphs),sTmp);// _T("正在计算") & zdjh & _T("号支吊架")
	frmStatus.SetWindowText(GetResStr(IDS_PhsCalculation)); //' _T("计算支吊架")
	frmStatus.UpdateData(false);
	frmStatus.UpdateStatus(0.02f,true);
	frmStatus.UpdateWindow();

	_RecordsetPtr rs;
	rs.CreateInstance(__uuidof(Recordset));

	if(varRs.vt == VT_DISPATCH && varRs.pdispVal != NULL)
	{
		rs = _RecordsetPtr (varRs.pdispVal );
	}
	else
	{
		AfxMessageBox("数据库错误,退出计算!");
		return FALSE;
	}

	modPHScal::VB_Cal (rs,zdjh,FrmProgress,nth);

	FrmProgress.UpdateWindow();
	FrmProgress.ShowWindow(SW_HIDE);
	FrmProgress.DestroyWindow();

	return TRUE;
}
Ejemplo n.º 4
0
BOOL CSelZdjhDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	try
	{
		m_dbGrid.SetForeColor(0xff0000);
		m_dbGrid.SetBackColor(0xffc0c0);
		if(m_rs!=NULL)
		{
			m_dbGrid.SetRefDataSource(m_rs->GetDataSource());
			int C=m_dbGrid.GetColumns().GetCount();
			int i=0;
			for(i=C-1;i>2;i--)
			{
				m_dbGrid.GetColumns().Remove(_variant_t((long)i));
			}
			m_dbGrid.GetColumns().Remove(_variant_t((long)0));
			m_dbGrid.GetColumns().GetItem(_variant_t((long)0)).SetDataField("ZDJH");
			m_dbGrid.GetColumns().GetItem(_variant_t((long)0)).SetCaption(GetResStr(IDS_PHSMARK));
			//m_dbGrid.GetColumns().GetItem(_variant_t((long)0)).SetWidth(80);
			m_dbGrid.GetColumns().GetItem(_variant_t((long)1)).SetDataField("JSDBH1");
			m_dbGrid.GetColumns().GetItem(_variant_t((long)1)).SetCaption(GetResStr(IDS_CountNodeMark));
		}
	}
	catch (_com_error &e)
	{
		CString strMsg;
		strMsg.Format("%s:%d %s", __FILE__, __LINE__, (LPSTR)e.Description());
		AfxMessageBox(strMsg);
	}
	catch(...)
	{
	}

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
Ejemplo n.º 5
0
//
// GetResStrEx
//
void GetResStrEx(HINSTANCE hInstance, UINT uIDText, LPSTR pszText, size_t cchText, LPCSTR pszDefText, ...)
{
    char szFormat[MAX_LINE_LENGTH];
    va_list vargs;
    
    if (pszText != NULL && cchText > 0)
    {
        GetResStr(hInstance, uIDText, szFormat, MAX_LINE_LENGTH, pszDefText);
        
        va_start(vargs, pszDefText);
        StringCchVPrintf(pszText, cchText, szFormat, vargs);
        va_end(vargs);
    }
}
Ejemplo n.º 6
0
void ModEncrypt::EncryptCompanyName(LPCSTR /*ByVal*/ strPassWord, bool /*ByVal*/ bGetPassWord)
{
//目的:生成或获取单位名称
   //Dim EncryptedMessage As String, TextChar As String, KeyChar As String, EncryptedChar
   //Dim f, i As Long, lngStrLen As Long
	USES_CONVERSION;
	try
	{
		DWORD i;
		CFile f;
		//CString EncryptedMessage;
		wchar_t EncryptedMessage[256];
		char TextChar[2];
		wchar_t EncryptedChar[2];
		EncryptedChar[1]=0;
		memset(EncryptedMessage,0,sizeof(EncryptedMessage));
		DWORD C;
		if( bGetPassWord )
		{
			//如果是获取公司名称
			if (FileExists(user::gstrWinDir + FilejmCompanyName1) )
			{
				f.Open(user::gstrWinDir + FilejmCompanyName1,CFile::modeRead);
				
				f.Read(&C,sizeof(DWORD));
				f.Read(EncryptedMessage,C*sizeof(wchar_t));
				gstrLegalCompanyName = "";
				for( i = 0 ;i<C;i++)
				{
					TextChar[0]=((char*)EncryptedMessage)[i*2+1];
					TextChar[1]=((char*)EncryptedMessage)[i*2];
					short xx=(*(wchar_t*)TextChar);
					short xx2=strPassWord[i%strlen(strPassWord)];
					EncryptedChar[0] =xx ^ xx2;
					((char*)EncryptedMessage)[i*2+1]=((char*)&EncryptedChar)[0];
					((char*)EncryptedMessage)[i*2]=((char*)&EncryptedChar)[1];
					//xx=EncryptedChar;
					EncryptedChar[0]=EncryptedMessage[i];
					gstrLegalCompanyName+=(char*)EncryptedChar;
				}
				f.Close();
			}

			else
				ShowMessage(GetResStr(IDS_ItsDemoVersionOrIllegalUser));
		}
		else
		{
			if(!f.Open(user::gstrWinDir + FilejmCompanyName0,/*CFile::modeNoTruncate|*/CFile::modeCreate|CFile::modeReadWrite))
				return;
			DWORD i1=0,iC=0;
			wchar_t c2;
			wchar_t c3;
			c3=0;
			char* pComName=T2A((LPTSTR)(LPCTSTR)gstrLegalCompanyName);
			for(i=0;i<gstrLegalCompanyName.GetLength();i++)
			{
				c2=0;
				char c1=pComName[i];
				if((c1 & 0x80)!=0)
				{
					((char*)&c2)[0]=pComName[i];
					i++;
					((char*)&c2)[1]=pComName[i];
				}
				else
				{
					((char*)&c2)[0]=pComName[i];
				}
				((char*)&c3)[1]=strPassWord[i1%strlen(strPassWord)];
				EncryptedMessage[i1]=c2 ^ c3;
				i1++;
				iC++;
			}
			f.Write(&iC,sizeof(DWORD));
			f.Write(EncryptedMessage,iC*sizeof(wchar_t));
			f.Close();
		}
	}
	catch(CFileException * e)
	{
		e->ReportError();
		e->Delete();
	}
}
Ejemplo n.º 7
0
bool ModEncrypt::CheckLegalUser()
{
	//CString strPassWord;
   int i;
	DWORD dwReturnCode;
	CString strMsg;
	
	//检测网络狗
	if(UEGetSettingInstallNumber("4",iDogMH) ==iDogMH)
	{
		bIsNetDog=false;
	}
	else
		bIsNetDog=true;
	NetDogHandle = (unsigned long *)&Doghandle;
	//if(!gbLegalUser)
	{
		//运行次数计数
		i = UEGetSettingInstallNumber("2", 0);
		UESaveSettingInstallNumber("2", i + 1);
		gbLegalUser = false;
		//检查是否正版软件
		if (FileExists(user::gstrWinDir + FilejmBASE1) && FileExists(user::gstrWinDir + FilePsw) && FileExists(user::gstrWinDir + FileIns) )
		{
			//VerifyEncryptFile(strPassWord);
			VerifyEncryptFile();
			//gstrDBZdjCrudePassWord = strPassWord + conStrDBPasswordSuffix
			gstrDBProductPassWord =CString( "Product") + conStrDBPasswordSuffix;
			gstrDBZdjCrudePassWord = gstrDBProductPassWord;
		}
	}
	if(bIsNetDog)
	{
		gbLegalUser=false;
		NetDogPassword=5602521;
		dwReturnCode = NetDogLogin();
		if(dwReturnCode!=DOGSUCCESS)
		{
			gbLegalUser=false;
			bIsNetDog=false;
			if(110003==dwReturnCode)
				strMsg.Format(IDS_USER_EXCESS_UPPER_LIMIT,dwReturnCode);
			else
				strMsg.Format(_T("NetDogLogin function error! code:%d"),dwReturnCode);
			ShowMessage(strMsg);
		}
		else
		{
			DWORD CurrentDogNo=GetNHDogNo();
			if(gLngVersionID==0 || CurrentDogNo== 0 || gLngSavedMicroDogID ==0 || gLngSavedMicroDogID != CurrentDogNo || glngVersion != glngAppVersion)
			{
				gbLegalUser=false;
				strMsg=GetResStr(IDS_DOG_NO_ERROR);
				ShowMessage(strMsg);
				dwReturnCode=NetDogLogout();
				if(dwReturnCode!=0)
				{
					strMsg.Format(_T("NetDogLogout function error! code:%d"),dwReturnCode);
					AfxMessageBox(strMsg);
				}
				NetDogHandle=NULL;
				bIsNetDog=false;
			}
			else
			{
				gbLegalUser=true;
				bIsNetDog=true;
			}
		}
	}
	else
	{
		//如果是演示版,检查是否时间到期
		if( ! gbLegalUser ){
			CheckInstallDate();
		}
	}
   return gbLegalUser;
}
Ejemplo n.º 8
0
void ModEncrypt::VerifyEncryptFile(/*CString& strPassWord*/)
{
	char *szPassWord=NULL;
	char *MP=NULL;
	char *EP=NULL;
	char *EP1=NULL;
	try
	{
		long i=0,iPos=0;
		char tmp;
		// a$
		// bTmp  String * 1
		CFile f;
		DWORD lngEP,lngMP;
		if(!f.Open(user::gstrWinDir+FilejmBASE1,CFile::modeRead))
			return;
		//开始字符串长度
		f.SeekToBegin();
		f.Read(&lngMP,sizeof(lngMP));
		MP=new char[lngMP+1];
		f.Read(MP,lngMP);
		MP[lngMP]='\0';
		//然后是密码长度
		f.Read(& lngEP,sizeof(lngEP));
		f.Read(& glngLimitedDemoVersionDays,sizeof(DWORD));
		f.Read(& gLngSavedMicroDogID,sizeof(DWORD));
		f.Read(& gLngVersionID,sizeof(DWORD));
		f.Read(& glngVersion,sizeof(glngVersion));
		EP=new char[lngEP+1];
		f.Read(EP,lngEP);
		EP[lngEP]='\0';
		f.Close();
		
		//if(strPassWord=="")
		{
			if(!f.Open(user::gstrWinDir + FilePsw,CFile::modeRead))
				goto FunOut;
			int len=f.GetLength();
			len-=16;
			f.Seek(16,CFile::begin);
			szPassWord=new char[len+1];
			f.Read(szPassWord,len);
			szPassWord[len]='\0';
			f.Close();
		}
		//MP.ReleaseBuffer();
		//EP.ReleaseBuffer();
		//strPassWord.ReleaseBuffer();
		int passlen=strlen(szPassWord);
		EP1=new char [passlen+1];
		for( i = 0 ; i<passlen;i++)
		{
			tmp=szPassWord[i];
			
			if( '0' <= tmp && tmp <='9' ){
				iPos = tmp - '0' + 2;
			}else if( 'A' <= tmp && tmp <= 'Z' ){
				iPos = tmp - 'A' + 12;
			}
			else if('a' <= tmp && tmp <= 'z' ){
				iPos = tmp - 'a' + 12;
			}
			EP1[i]=(char)MP[iPos-1];
			//MsgBox EP1
		}
		EP1[i]='\0';
		if( strcmp(EP1, EP)==0 )
		{
			EncryptCompanyName(szPassWord, true);
			//EncryptCompanyName(strPassWord, false);
			/*#if DebugMode = -1 ){
			//MsgBox "你是合法用户!"
      #endif*/
			if( gLngVersionID == 1236 && glngVersion == glngAppVersion ){
				//标准版标志
				gbLegalUser = true;
			}else{
				gbLegalUser = false;
			}
			if( FileExists(user::gstrWinDir + FileOutDate) ) 
				::DeleteFile( user::gstrWinDir + FileOutDate);
			if( FileExists(user::gstrWinDir + FileFlag) )
				::DeleteFile( user::gstrWinDir + FileFlag);
			if(!f.Open(user::gstrWinDir+FileFlag,CFile::modeWrite|CFile::modeCreate))
				goto FunOut;
			lngEP = 1234;
			f.Write(&lngEP,sizeof(DWORD));
			f.Close();
			SetFileTime(user::gstrWinDir + FileWinCom, user::gstrWinDir + FileFlag);
		}
		else
		{
			//MsgBox "你是非法用户!"
			gstrLegalCompanyName = GetResStr(IDS_YouAreIllegalUser);
			gLngVersionID=0;
			gbLegalUser = false;
		}
	}
	catch(CFileException * e)
	{
		e->ReportError();
		e->Delete();
	}
FunOut:
	delete [] szPassWord;
	delete [] MP;
	delete [] EP;
	delete [] EP1;
}
Ejemplo n.º 9
0
//pfg20050614 把CASEARII 4.50 中的数据导入到 AutoPhs中去
void  CAESARIIToPHS::ReadResult_CAESARII45(_Recordset* rsResult, CString SourceDataFileName,long maxZdjh,long FileNameID,char * strPSAVER)
{
	//char* strPSAVER = "CASEARII 4.50";  
	CString ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=%s;Jet OLEDB:Database Password=%s";
	CString dbConnectionString;
   
	_RecordsetPtr m_prsCASENUM;					//热态(冷态)的记录集
	_RecordsetPtr m_prsHangers;					//表[OUTPUT_HANGERS]记录集
	_RecordsetPtr m_prsDisplacements;			//表[OUTPUT_DISPLACEMENTS]记录集
	_RecordsetPtr m_prsRestraints;				//表[OUTPUT_RESTRAINTS]记录集
	_RecordsetPtr m_prsJGHZ;						//每个节点最大值
	_RecordsetPtr m_prsJOBNAME;					//不同工程名的记录集
	_RecordsetPtr prsInputHangers;             //表INPUT_HANGERS 记录集	pfg20050614
	_RecordsetPtr prsInputRestraints;          //表INPUT_RESTRAINTS记录集 pfg20050614
	_RecordsetPtr m_prsBasicData;					//用来获取温度,管径的记录集
   _RecordsetPtr m_prsTempCASENUM;				//用来处理TO_NODE的临时记录集
	m_pConnSourceDB.CreateInstance(__uuidof(Connection));
	m_prsJOBNAME.CreateInstance(__uuidof(Recordset));
	m_prsCASENUM.CreateInstance(__uuidof(Recordset));
	prsInputHangers.CreateInstance(__uuidof(Recordset));
	prsInputRestraints.CreateInstance(__uuidof(Recordset));

	CString m_strSQL;
	CString strFind;
	_variant_t tmpvar;		
	long ltemp;
	long node;
	CString PSA_OutDataFUnit;						//源表的单位
	CString PSA_OutDataMUnit;
	_RecordsetPtr rsData = rsResult;
	CFile m_CAESARIIFile;							//二进制文件对象
	CString m_strCAESARIIFileName;				//二进制文件名
//处理二进制文件所用的变量
	long loff = 272 ;			//偏移量
	long basepoint = 180;   //基本偏移量
	bool bReadinDB = true;					//判断是从数据库读取还是从二进制文件中读取,缺省从数据库中读取
/*********************************/
	CString m_strFilePath;				
	CString m_strTYPE;
	CString m_strJOBNAME_P;				//工程文件名*._P
	CString m_strJOBNAME_A;				//工程文件名*._A
	CString m_strGKname;					//工况名
	CString m_strRGKname;				//热工况数据来源工况名
	CString m_strLGKname;				//冷工况数据来源工况名
	CString* m_pstrTempJobname;
	float PI=3.1416f;
	int iC1 = 0;
	long iCount = 0;	//节点个数
	int nCount = 0;	//存储节点个数,得到二进制文件中节点的个数
	ltemp = maxZdjh;
	int iJobCount=0;//工程的个数
	CSelPSAProjectNameDlg* m_selDlg;
	long iType=0;//支吊架类型pfg20050624

//	int IsCaesarError=0;//pfg20050627 
	try
	{
		dbConnectionString.Format(ConnectionString,SourceDataFileName,"");
		m_pConnSourceDB->Open(_bstr_t(dbConnectionString),"","",0);

		m_strSQL.Format(_T("SELECT DISTINCT [JOBNAME] FROM [OUTPUT_LOCAL_ELEMENT_FORCES]"));
      //用此方法打开的记录集才能调用GetRecodsetCount()获得记录数
		m_prsJOBNAME->Open(_variant_t(m_strSQL),(IDispatch*)m_pConnSourceDB,adOpenStatic,adLockOptimistic,adCmdText); 
		//在对话框的列表框中加入工程文件名,组合框加入工况名,并获取用户的选择
		m_selDlg = new CSelPSAProjectNameDlg;
 
		 iJobCount= m_prsJOBNAME->GetRecordCount();
		//pfg20050705当工程名称没有时程序应该返回(start)
		if(iJobCount==0)
		{
			AfxMessageBox("数据源为空!");
			return;
		}
		//pfg20050705 当工程名称没有时程序应该回(end)
		m_selDlg->JobNameNum =iJobCount;
		m_pstrTempJobname = new CString[iJobCount];

		for ( int i=0 ;i<iJobCount;i++)
		{
			m_pstrTempJobname[i] = vtos(m_prsJOBNAME->GetCollect("JOBNAME"));
			m_prsJOBNAME->MoveNext();
		}
		m_prsJOBNAME->Close();

		m_strSQL.Empty();
		m_strSQL.Format(_T("SELECT DISTINCT [CASE],[JOBNAME] FROM [OUTPUT_LOCAL_ELEMENT_FORCES]"));
		m_prsJOBNAME->Open(_variant_t(m_strSQL),(IDispatch*)m_pConnSourceDB,adOpenStatic,adLockOptimistic,adCmdText);
		
		int ii = m_prsJOBNAME->GetRecordCount();
		m_selDlg->GKNum = ii;
		//pfg20050705这是所有工程的工况,在对话框类中要进行过滤(start)
		m_selDlg->m_pRsJOBNAME=m_prsJOBNAME;
		//pfg20050705这是所有工程的工况,在对话框类中要进行过滤(end)
		m_selDlg->m_pstrProjectName = m_pstrTempJobname;
		if ( m_selDlg->DoModal() == IDOK)
		{
			m_strJOBNAME_P = m_selDlg->m_strTempProject ;
			m_strGKname    = m_selDlg->m_strTempGK ;
			m_iUPxyz			= m_selDlg->iUpxyz ;
			m_strRGKname   = m_selDlg->m_strTempRGK ;
			m_strLGKname	= m_selDlg->m_strTempLGK ;
			m_strUNITFORCE=m_selDlg->m_ForceUnits;//pfg20050630
			m_strUNITMOMENTAL=(m_strUNITFORCE=="N")?("N.m"):("kgf.m");//pfg20050630
		//	m_bCheckRigPHSMaxLoad = m_selDlg->m_bCheckRigPHSMaxLoad;
			m_iSpringLoadType = m_selDlg->m_iSpringLoadType;
		}
		else
		{
			return;   //按下对话框的取消按钮退出提取程序
		}
		m_prsJOBNAME->Close();
		delete m_selDlg;
		delete [] m_pstrTempJobname;


		//显示进度条
		frmStatus.ShowWindow(SW_SHOW);
		frmStatus.m_Label1= GetResStr(IDS_FROMFILE) + SourceDataFileName;
		frmStatus.m_Label2= GetResStr(IDS_TODATABASE) + EDIBgbl::GetDBName(EDIBgbl::dbPRJDB) + GetResStr(IDS_InTable) + EDIBgbl::TBNRawData;
		frmStatus.SetWindowText( GetResStr(IDS_DATASWITCH));
		frmStatus.UpdateData(false);
		frmStatus.UpdateStatus(0,true);

		//判断是从二进制文件还是数据库中读取管径,温度
		m_strSQL.Format(_T("SELECT * FROM [INPUT_BASIC_ELEMENT_DATA] "));
		m_prsBasicData = m_pConnSourceDB->Execute(_bstr_t(m_strSQL),NULL,adCmdText);
		if ( m_prsBasicData->BOF && m_prsBasicData->adoEOF )
			bReadinDB = false;
		m_prsBasicData->Close();

		m_strSQL.Format(_T("SELECT * FROM [OUTPUT_LOCAL_ELEMENT_FORCES] WHERE [JOBNAME] = '%s' AND   [CASE] = '%s' "),m_strJOBNAME_P,m_strRGKname);
		m_prsCASENUM->Open(_variant_t(m_strSQL),(IDispatch*)m_pConnSourceDB,adOpenStatic,adLockOptimistic,adCmdText);
		
		iCount = m_prsCASENUM->GetRecordCount();
		if(iCount==0)//pfg20050704没有记录返回
		{
			CString strError;
			strError.Format("提示:工程='%s',工况='%s'在表(OUTPUT_LOCAL_ELEMENT_FORCES)中没有记录!",m_strJOBNAME_P,m_strRGKname);
			AfxMessageBox(strError);
			return;
		}
		//获取二进制文件名
		m_strCAESARIIFileName = m_strJOBNAME_P;
		m_strFilePath = GetFilePath(SourceDataFileName);
		m_strCAESARIIFileName = m_strFilePath + "\\" + m_strCAESARIIFileName.Left(m_strCAESARIIFileName.GetLength()-3) + "._A";
		//二进制文件扩展名为._A,它存储CAESARII管道应力分析模型原始数据
		m_strJOBNAME_A = m_strJOBNAME_P.Left(m_strJOBNAME_P.GetLength()-3)+"._A";

		//读取源表中的单位符号
		tmpvar = m_prsCASENUM->GetCollect("FUNITS");
		PSA_OutDataFUnit = vtos(tmpvar);
		
		tmpvar = m_prsCASENUM->GetCollect("MUNITS");
		PSA_OutDataMUnit = vtos(tmpvar);

		//取吊架记录集
		m_strSQL.Format("select * from input_hangers where jobname='%s'",m_strJOBNAME_A);
		try
		{
			prsInputHangers->Open(_variant_t(m_strSQL),(IDispatch*)m_pConnSourceDB,adOpenStatic,adLockOptimistic,adCmdText);
			if(prsInputHangers->GetRecordCount()>0)
			{
				prsInputHangers->MoveFirst();
			}
		}
		catch (_com_error &e)
		{
			CString strMsg;
			strMsg.Format("%s:%d %s", __FILE__, __LINE__, (LPSTR)e.Description());
			AfxMessageBox(strMsg);
		}
		//取支架数据
		m_strSQL.Format("select * from input_restraints where jobname='%s'",m_strJOBNAME_A);
		try
		{
			prsInputRestraints->Open(_variant_t(m_strSQL),(IDispatch*)m_pConnSourceDB,adOpenStatic,adLockOptimistic,adCmdText);
			if(prsInputRestraints->GetRecordCount()>0)
			{
				prsInputRestraints->MoveFirst();
			}
		}
		catch (_com_error &e)
		{
			CString strMsg;
			strMsg.Format("%s:%d %s", __FILE__, __LINE__, (LPSTR)e.Description());
			AfxMessageBox(strMsg);
		}
		//20050624pfg(start)
		int n=0,m=0;
		n=prsInputHangers->GetRecordCount();
		n+=prsInputRestraints->GetRecordCount();
		if(n==0)//pfg20050624 当支吊架的个数为零时返回
		{
			AfxMessageBox("表:INPUT_HANGERS和INPUT_RESTRAINTS为空!");
			return;
		}
		//20050624pfg(end)
		
		for(i=0;i<2;i++)
		{
			if(i==0)
			{
				//处理吊架
				for(;!prsInputHangers->adoEOF;prsInputHangers->MoveNext())
				{
					if(m_IsCaesarError) break;//pfg20050627当单位转换出错、终止导入数据
					//导入吊架数据
					ImportHangerRestraints(rsData,prsInputHangers,ltemp,FileNameID,strPSAVER,node,0);
					if(m_IsCaesarError) break;//pfg20050627当单位转换出错、终止导入数据
					
					//导入各方向的推力
					importUnitsForces(rsData,node,m_strJOBNAME_P,PSA_OutDataFUnit,PSA_OutDataMUnit,m_strRGKname,m_strLGKname);
					if(m_IsCaesarError) break;//pfg20050627当单位转换出错、终止导入数据
					
					//导入热态线位移、角位移
					ImportDisplacements(rsData,node,m_strRGKname,m_strJOBNAME_P,1);
					if(m_IsCaesarError) break;//pfg20050627当单位转换出错、终止导入数据
					
					//导入冷态线位移、角位移
					ImportDisplacements(rsData,node,m_strLGKname,m_strJOBNAME_P,0);
					
					//导入管道直径等
					ImportDiameter(rsData,node,m_strJOBNAME_A);
					if(m_IsCaesarError) break;//pfg20050627当单位转换出错、终止导入数据
					
					//导入弹簧数据(包括弹簧类型转换)
					ImportHanger(rsData,node,m_strJOBNAME_P);
					if(m_IsCaesarError) break;//pfg20050627当单位转换出错、终止导入数据
					
					//确定支吊架类型pfg20050622(转换刚性支吊架和恒力弹簧类型)
				//	ConversionTypeCaesarToPhs(rsData,node,m_strJOBNAME_P,m_strRGKname,iType);
				//	ConversionTypeCaesarToPhs(rsData,node,m_strJOBNAME_P,m_strLGKname,iType);
					//pfg20050624(start)
					m++;
					frmStatus.UpdateStatus((float)m/(float)n,true);
					frmStatus.UpdateWindow();
					//pfg20050624(end)
					rsData->Filter="";
					rsData->Update();//pfg20050630
				}
				rsData->Filter="";//pfg20050627
			}   //处理吊架结束
			else
			{
				//处理支架(start)
				for(;!prsInputRestraints->adoEOF;prsInputRestraints->MoveNext())
				{
					if(m_IsCaesarError) break;//pfg20050627当单位转换出错、终止导入数据
					//导入吊架数据
				    ImportHangerRestraints(rsData,prsInputRestraints,ltemp,FileNameID,strPSAVER,node,1);
					if ( node < 1e-6 ) //5.2版本中所有的约束信息会导入INPUT_RESTRAINTS表中(同一约束点会有四条记录,所以会有NODE_NUM为-1情况)
						continue; 
					if(m_IsCaesarError) break;//pfg20050627当单位转换出错、终止导入数据
					
					//确定支吊架类型pfg20050622
					ConversionTypeCaesarToPhs(rsData,node,m_strJOBNAME_P,m_strRGKname,iType);
			//		ConversionTypeCaesarToPhs(rsData,node,m_strJOBNAME_P,m_strLGKname,iType);
					
					if(iType==177)//pfg20050624当是固定支架时、它的冷态采用另一种工况
					{
						//导入各方向的推力
						importUnitsForces(rsData,node,m_strJOBNAME_P,PSA_OutDataFUnit,PSA_OutDataMUnit,m_strRGKname,m_strGKname);
						if(m_IsCaesarError) break;//pfg20050627当单位转换出错、终止导入数据
						
						//导入冷态线位移、角位移
						ImportDisplacements(rsData,node,m_strGKname,m_strJOBNAME_P,0);
						if(m_IsCaesarError) break;//pfg20050627当单位转换出错、终止导入数据
					}
					else
					{
						//导入各方向的推力
						importUnitsForces(rsData,node,m_strJOBNAME_P,PSA_OutDataFUnit,PSA_OutDataMUnit,m_strRGKname,m_strLGKname);
						if(m_IsCaesarError) break;//pfg20050627当单位转换出错、终止导入数据
						
						//导入冷态线位移、角位移
						ImportDisplacements(rsData,node,m_strLGKname,m_strJOBNAME_P,0);
						if(m_IsCaesarError) break;//pfg20050627当单位转换出错、终止导入数据
					}

					//导入热态线位移、角位移
					ImportDisplacements(rsData,node,m_strRGKname,m_strJOBNAME_P,1);
					if(m_IsCaesarError) break;//pfg20050627当单位转换出错、终止导入数据
					
					//导入管道直径等
					ImportDiameter(rsData,node,m_strJOBNAME_A);
					if(m_IsCaesarError) break;//pfg20050627当单位转换出错、终止导入数据
					
					//导入弹簧数据
				//	ImportHanger(rsData,node,m_strJOBNAME_P);
					if(m_IsCaesarError) break;//pfg20050627当单位转换出错、终止导入数据
					//pfg20050624(start)
					m++;
					frmStatus.UpdateStatus((float)m/(float)n,true);
					frmStatus.UpdateWindow();
					//pfg20050624(end)
					rsData->Filter="";
					rsData->Update();//pfg20050630
				}
				rsData->Filter="";//pfg20050627
			}   //处理支架结束(end)
			//rsData->Update();//pfg20050630
		}
	}	catch (_com_error &e)
	{
		CString strMsg;
		strMsg.Format("%s:%d %s", __FILE__, __LINE__, (LPSTR)e.Description());
		AfxMessageBox(strMsg);
	}
}
Ejemplo n.º 10
0
void CCalculate::VBCal(long zdjh, long nth) 
{
	// TODO: Add your dispatch handler code here
	/*	if( !PhsDrawUser::InitDB() )
		return;

	_RecordsetPtr rsZ1(__uuidof(Recordset));
	CRString strSQL;

	try 
	{
		strSQL.Format("SELECT nth FROM Z1 WHERE [VolumeID]=%d AND [ZDJH]=%d",
			PhsDrawUser::m_iVlmID,PhsDrawUser::m_iZdjh);
		rsZ1->CursorLocation = adUseClient;
		rsZ1->Open(_variant_t(strSQL),(IDispatch*)PhsDrawUser::m_pConnPRJDB,adOpenStatic,adLockOptimistic,adCmdText);
		if( rsZ1->adoEOF && rsZ1->BOF )
			return;

		if( (long)rsZ1->RecordCount > 1 )//根据路数确定使用标准支吊架选型还是非标支吊架选型
		{
			rsZ1->Close();
			PhsNonStandardAutoCalc();
		}
		else
		{
			long lnth = vtoi(rsZ1->GetCollect("nth"));
			rsZ1->Close();
			PhsStandardAutoCalc( lnth );
		}
	}
	catch(_com_error& e)
	{
		ReportError(e.Description(), __FILE__, __LINE__);
	}

	PhsDrawUser::UnInitDB();
*/

/*
	VARIANT var1,var2;
	VariantInit(&var1);
	VariantInit(&var2);
	_RecordsetPtr rs;
	rs.CreateInstance(__uuidof(Recordset));

	CFrmStatus *frm;
	var1 = varRs;
//	VariantCopy(&var1,&varRs);

	HRESULT hr = VariantChangeType(&var2,&var1,0,VT_UNKNOWN);
	if(FAILED(hr))
		return ;
	rs = (_RecordsetPtr) var1.punkVal;
//	if(rs->adoEOF && rs->BOF)
//	{
		AfxMessageBox("rs");
//	}
	
//	hr = VariantChangeType(&var2,&varFrm,0,VT_UNKNOWN);
//	frm = (CFrmStatus*)var2.punkVal;
*/


	CFrmStatus FrmProgress;
	if(!IsWindow(FrmProgress.m_hWnd))
    	FrmProgress.Create(IDD_STATUS,NULL);
	FrmProgress.CenterWindow();  
	FrmProgress.ShowWindow(SW_SHOW);
	
    CString sTmp;
	sTmp.Format("%d",zdjh);

	FrmProgress.m_Label1.Format(GetResStr(IDS_CalculatingNoXphs),sTmp);// "正在计算" & zdjh & "号支吊架"
	FrmProgress.SetWindowText(GetResStr(IDS_PhsCalculation));// "计算支吊架"
	FrmProgress.UpdateData(false);
	FrmProgress.UpdateStatus(0.02f,true);
	FrmProgress.UpdateWindow();


	_RecordsetPtr rs;
	rs.CreateInstance(__uuidof(Recordset));
	 

	CString strSQL; 

	strSQL.Format("SELECT * FROM [ZA] WHERE [VolumeID]=%d AND [ZDJH]=%d",EDIBgbl::SelVlmID,zdjh);
	rs->Open(_variant_t(strSQL),(IDispatch*)conPRJDB,adOpenStatic,adLockOptimistic,adCmdText);
	if( rs->adoEOF && rs->BOF )
		AfxMessageBox("recordset empty");

	modPHScal::VB_Cal (rs,zdjh,FrmProgress,nth);

	FrmProgress.UpdateWindow();
	FrmProgress.ShowWindow(SW_HIDE);
	FrmProgress.DestroyWindow();

}
Ejemplo n.º 11
0
const char *LoadResStr(const char *id)
{
	return GetResStr(id, Table);
}
Ejemplo n.º 12
0
//绘制表格
void CDrawZDJTableID::DrawzdjTable(int index,bool bIsCom)
{
	try
	{
		bool Found=false;
		CCadPoint p0, p1;
		_RecordsetPtr rs;
		rs.CreateInstance(__uuidof(Recordset));

		_RecordsetPtr rs1;
		rs1.CreateInstance(__uuidof(Recordset));

		int i=0;
		int k=0;
		static int n=0;
		if(index!=iZDJDRAWEXECL && index!=iZDJDRAWCatalogueExcel)
		{
			EDIBAcad::StartAcad();
			EDIBAcad::DisplayAcadTop();
			EDIBAcad::SetAcadTop();
			EDIBAcad::GetActiveAcadDoc();
		}
		//如果当前打开的图形不是(PhsBlkDir & _T("phs.dwg")),需要重新打开
		//因为后面的操作需要大量的图形块准备好
		CString sTmp,sTmp1;
		_variant_t vTmp;
		CMObject objTmp;
		CCadPoint pTmp;
		CString SQLx;
		_variant_t varTmp;
		_variant_t varNull;
		varNull.ChangeType(VT_NULL);
		if(index!=iZDJDRAWTag && index!=iZDJDRAWbom)
		{
			//判断是否所有支吊架计算完成。
			try
			{
				if(!FrmTxsr.m_pViewTxsr->m_ActiveRs->adoEOF && !FrmTxsr.m_pViewTxsr->m_ActiveRs->BOF)
					FrmTxsr.m_pViewTxsr->m_ActiveRs->Update();
			}
			catch (_com_error &e)
			{
				CString strMsg;
				strMsg.Format("%s:%d %s", __FILE__, __LINE__, (LPSTR)e.Description());
				AfxMessageBox(strMsg);
			}
			CString SQLx = _T("SELECT count(*) FROM [") + EDIBgbl::Btype[EDIBgbl::TZA] + _T("] WHERE ( bCalSuccess=0  OR bCalSuccess IS NULL )");
			
			if(modPHScal::gbSumAllVolume )
			{
				SQLx +=_T(" AND VolumeID IN ( SELECT VolumeID FROM Volume WHERE EnginID=\'") + EDIBgbl::SelPrjID + _T("\' AND ZYID = ") + ltos(EDIBgbl::SelSpecID) + _T(" AND SJJDID = ") + ltos(EDIBgbl::SelDsgnID) + _T(" AND SJHYID = ") + ltos(EDIBgbl::SelHyID) +_T(") ");
			}
			else
			{
				SQLx +=_T(" AND VolumeID =") + ltos(EDIBgbl::SelVlmID);
			}

			long i1,i2;

			rs1->Open(_variant_t(SQLx),(IDispatch*)::conPRJDB,adOpenForwardOnly,adLockReadOnly,adCmdText);
			i1=vtoi(rs1->GetCollect(_variant_t((long)0)));
			rs1->Close();

			SQLx = _T("SELECT count(*) FROM [") + EDIBgbl::Btype[EDIBgbl::TZA] + _T("] WHERE ");
			if(modPHScal::gbSumAllVolume )
			{
				SQLx +=_T(" VolumeID IN ( SELECT VolumeID FROM Volume WHERE EnginID=\'") + EDIBgbl::SelPrjID + _T("\' AND ZYID = ") + ltos(EDIBgbl::SelSpecID) + _T(" AND SJJDID = ") + ltos(EDIBgbl::SelDsgnID) + _T(" AND SJHYID = ") + ltos(EDIBgbl::SelHyID) +_T(") ");
			}
			else
			{
				SQLx +=_T(" VolumeID =") + ltos(EDIBgbl::SelVlmID);
			}
			rs1->Open(_variant_t(SQLx),(IDispatch*)::conPRJDB,adOpenForwardOnly,adLockReadOnly,adCmdText);
			i2=vtoi(rs1->GetCollect(_variant_t((long)0)));
			rs1->Close();
			rs1=NULL;
			CString strTmp;
			strTmp.Format(GetResStr(IDS_SomePhsNotCalSuccess),ltos(i2),ltos(i2-i1),ltos(i1));
			if( IDNO == ShowMessage(strTmp,MB_DEFBUTTON1|MB_ICONQUESTION|MB_YESNO) )
				return;
		}

		switch(index)
		{
		case iZDJDRAWTag:
			break;
		case iZDJDRAWbom:
			modPHScal::SetBasePoint();
			Cavphs->GetphsSEQ(FrmTxsr.m_pViewTxsr->m_ActiveRs);
			EDIBDB::MakeTmp2ToBom();
			p0.SetPoint(modPHScal::pt2x,modPHScal::pt2y);
			EDIBAcad::DeleteAllEntitiesInLayers(1,_T("bom"));
			rs->Open((_bstr_t)_T("SELECT * FROM TMP2"), _variant_t((IDispatch*)EDIBgbl::dbPRJ,true), 
				adOpenStatic, adLockOptimistic, adCmdText); 

			EDIBAcad::DrawTableACAD(p0, EDIBgbl::TLJ, atan(1.0) * 0.0, rs,0,1.0f,_T("Bom"),_T("Bom"),_T("%g"),modPHScal::iAlignLjmx);
			sTmp.Format(GetResStr(IDS_xDrawingFinished),EDIBgbl::Cbtype[EDIBgbl::TCL].MnuCaption);

			ShowMessage(sTmp);
			break;
		case iZDJDRAWbomBJBW:
			modPHScal::SetBasePoint();
			Cavphs->GetphsSEQ(FrmTxsr.m_pViewTxsr->m_ActiveRs);
			EDIBDB::MakeTmp2ToBom();
			p0.SetPoint(modPHScal::pt2x,modPHScal::pt2y);
			EDIBAcad::DeleteAllEntitiesInLayers(1,_T("bom"));
			rs->Open((_bstr_t)_T("SELECT * FROM TMP2"), _variant_t((IDispatch*)EDIBgbl::dbPRJ,true), 
				adOpenStatic, adLockOptimistic, adCmdText); 
			
			EDIBAcad::DrawTableACAD(p0, EDIBgbl::TLJ_BJBW, atan(1.0) * 0.0, rs,0,1.0f,_T("Bom"),_T("Bom"),_T("%g"),modPHScal::iAlignLjmx);
			sTmp.Format(GetResStr(IDS_xDrawingFinished),EDIBgbl::Cbtype[EDIBgbl::TCL].MnuCaption);

			ShowMessage(sTmp);
			break;
		case iZDJDRAWload:
			modPHScal::SetBasePoint();
			modPHScal::PhsDisplacementLoadINFOMake();
			break;
		case iZDJDRAW270mm:
				//每次计算一个支吊架时生成当前当前支吊架一览表,计算完成后总的一览表就生成了。
				//每次计算一个支吊架时生成当前当前支吊架明细一览表,计算完成后总的明细一览表就生成了。
			SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh");
			rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), 
				adOpenStatic, adLockOptimistic, adCmdText); 
			if(!rs->BOF && !rs->adoEOF)
			{//zsy 12/17      改为用ARX画图
					ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD));
					if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图
					{
						rs->Close();
					}else
					{
						_variant_t var;
						var=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility"));
						objTmp = var;
						p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD)));
						p0 = p1;
					}
					EDIBAcad::DrawTableACAD(p0, EDIBgbl::TZD, atan(1.0) * 0.0, rs, 0,1.0f, _T("YLB"));
			}
			break;
		case iZDJDRAW180mm:
				//每次计算一个支吊架时生成当前支吊架一览表,计算完成后总的一览表就生成了。
				//每次计算一个支吊架时生成当前支吊架明细一览表,计算完成后总的明细一览表就生成了。
			SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh");
			rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), 
				adOpenStatic, adLockOptimistic, adCmdText); 
			if(!rs->BOF && !rs->adoEOF)
			{//zsy 12/17      改为用ARX画图
				ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD));
				if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图
				{
					rs->Close();
				}else
				{
					_variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility"));
					objTmp = v.pdispVal;
					p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD)));
					p0 = p1;
				}
				EDIBAcad::DrawTableACAD(p0, EDIBgbl::TZD180, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB"));
			}
			break;	
		case iZDJDRAW270L:
			SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE ZDJH IN ( SELECT ZDJH FROM [")
				+ EDIBgbl::Btype[EDIBgbl::TZA] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) 
				+ _T(" AND TYPE LIKE \'????\' ) AND VolumeID =")+ ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh");
			rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), 
				adOpenStatic, adLockOptimistic, adCmdText); 
			if(!rs->BOF && !rs->adoEOF)
			{//zsy 12/17      改为用ARX画图
				ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD));
				if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图
				{
					rs->Close();
				}else
				{
					_variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility"));
					objTmp = v.pdispVal;
					p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD)));
					p0 = p1;
				}
				EDIBAcad::DrawTableACAD(p0, EDIBgbl::TZD270L, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB"));
			}
			break;
		case iZDJDRAWEXECL:
			SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE ZDJH IN ( SELECT ZDJH FROM [")
				+ EDIBgbl::Btype[EDIBgbl::TZA] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) 
				+ _T(" AND TYPE LIKE \'????\' ) AND VolumeID =")+ ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh");			
			rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), 
				adOpenStatic, adLockOptimistic, adCmdText); 
			if(!rs->BOF && !rs->adoEOF)
			{
				EDIBAcad::DrawTableExcel( EDIBgbl::TZDExcel, rs);
			}
			sTmp.Format(GetResStr(IDS_xDrawingFinished),EDIBgbl::Cbtype[EDIBgbl::TZDExcel].MnuCaption);
			ShowMessage(sTmp);
			break;
		case iZDJDRAW705mm:
				//判断是否所有支吊架计算完成。
			SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh");
			rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), 
				adOpenStatic, adLockOptimistic, adCmdText); 
			if(!rs->BOF && !rs->adoEOF)
			{//zsy 12/17      改为用ARX画图
					ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD));
					if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图
					{
						rs->Close();
					}else
					{

						_variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility"));
						objTmp =v.pdispVal;
						p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD)));
						p0 = p1;
					}
					EDIBAcad::DrawTableACAD(p0, EDIBgbl::TZD800, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB"));
			}
			break;

		case iZDJDRAW705mmHSY:			////核四院支吊架明细一览表
				//判断是否所有支吊架计算完成。
			SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh");
			rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), 
				adOpenStatic, adLockOptimistic, adCmdText); 
			if(!rs->BOF && !rs->adoEOF)
			{//zsy 12/17      改为用ARX画图
					ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD));
					if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图
					{
						rs->Close();
					}else
					{
						_variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility"));
						objTmp =v.pdispVal;
						p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD)));
						p0 = p1;
					}
					EDIBAcad::DrawTableACAD(p0, EDIBgbl::TZD800HSY, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB"));
			}
			break;

		case iZDJDRAW705mmQGY:			////支吊架明细一览表
				//判断是否所有支吊架计算完成。
			SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh");
			rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), 
				adOpenStatic, adLockOptimistic, adCmdText); 
			if(!rs->BOF && !rs->adoEOF)
			{//zsy 12/17      改为用ARX画图
				ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD));
				if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图
				{
					rs->Close();
				}else
				{
					_variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility"));
					objTmp =v.pdispVal;
					p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD)));
					p0 = p1;
				}
				EDIBAcad::DrawTableACAD(p0, EDIBgbl::TZD800QGY, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB"));
			}
			break;

		case iZDJDRAW270pc:   //巴陵石化设计院支吊架表
				//每次计算一个支吊架时生成当前当前支吊架一览表,计算完成后总的一览表就生成了。
				//每次计算一个支吊架时生成当前当前支吊架明细一览表,计算完成后总的明细一览表就生成了。
			SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh");
			rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), 
				adOpenStatic, adLockOptimistic, adCmdText); 
			if(!rs->BOF && !rs->adoEOF)
			{//zsy 12/17      改为用ARX画图
					ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD));
					if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图
					{
						rs->Close();
					}else
					{
						_variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility"));
						objTmp = v.pdispVal;
						p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD)));
						p0 = p1;
					}
					EDIBAcad::DrawTableACAD(p0, EDIBgbl::TZP, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB"));
			}
			break;	
		case iZDJDRAWCatalogue:
			EDIBDB::DrawID = EDIBAcad::GetDrawIDAndName(1, EDIBDB::DrawName);

				//绘制目录
				//每次计算一个支吊架时生成当前当前支吊架图纸目录信息,计算完成后总的目录就生成了。
			SQLx=_T("DELETE FROM [ML] WHERE VolumeID IS NULL AND ZDJH IS NULL");
			EDIBgbl::dbPRJDB->Execute((_bstr_t)SQLx, NULL, adCmdText);
			SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TML] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY SEQ");
			rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), 
				adOpenStatic, adLockOptimistic, adCmdText); 
			if(!rs->BOF && !rs->adoEOF)
			{
					//如果第一个图纸的序号>=1,在前面添加空的图纸目录,以便用户手工修改
				VARIANT vTmp;
				HRESULT hr = S_OK;
				CString strFind;
				strFind = _T("ZDJH <> NULL");
				hr = rs->Find((_bstr_t)strFind, 0, adSearchForward);
				if( rs->adoEOF)
					return;
				rs->get_Collect((_variant_t)_T("SEQ"), &varTmp);
				k = vtoi(varTmp);
				for( i = 1 ;i< k ;i++)
				{
					strFind = _T("SEQ=") + ltos(i);
					hr = rs->Find((_bstr_t)strFind, 0, adSearchForward);
					if( rs->adoEOF)
					{
						rs->AddNew();
						rs->put_Collect((_variant_t)_T("SEQ"),_variant_t((long)i));
						rs->put_Collect((_variant_t)_T("Pages"),_variant_t((long)1));
						rs->put_Collect((_variant_t)_T("DrawNo"),STR_VAR(_T("1")));
						rs->put_Collect((_variant_t)_T("DrawNa"),STR_VAR(_T("1")));
						rs->put_Collect((_variant_t)_T("Zdjh"),varNull);
						rs->put_Collect((_variant_t)_T("VolumeID"),varNull);
						rs->Update();
					}
				}
				rs->Close();
				//zsy 12/17      改为用ARX画图
				SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TML] + _T("] WHERE VolumeID IS NULL OR VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T("  ORDER BY SEQ");
				rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), 
					adOpenDynamic, adLockOptimistic, adCmdText); 
				ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD));
				if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图
				{
					rs->Close();
				}else
				{
					_variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility"));
					objTmp = v.pdispVal;
					p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD)));
					p0 = p1;
				}
				EDIBAcad::DrawTableACAD(p0, EDIBgbl::TML, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("ML"));
			}
			break;
		case iZDJDRAWCatalogueExcel:
			EDIBDB::DrawID = EDIBAcad::GetDrawIDAndName(1, EDIBDB::DrawName);
				//绘制目录
				//每次计算一个支吊架时生成当前当前支吊架图纸目录信息,计算完成后总的目录就生成了。
			SQLx=_T("DELETE FROM [ML] WHERE VolumeID IS NULL AND ZDJH IS NULL");
			EDIBgbl::dbPRJDB->Execute((_bstr_t)SQLx, NULL, adCmdText);

			SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TML] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY SEQ");
			rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), 
				adOpenDynamic, adLockOptimistic, adCmdText); 
			VARIANT vTmp;
			if(!rs->BOF && !rs->adoEOF)
			{
					//如果第一个图纸的序号>=1,在前面添加空的图纸目录,以便用户手工修改
				HRESULT hr = S_OK;
				CString strFind;
				strFind = _T("ZDJH <> NULL");
				hr = rs->Find((_bstr_t)strFind, 0, adSearchForward);
				if( !rs->adoEOF)
					return;
				rs->get_Collect((_variant_t)_T("SEQ"), &varTmp);
				k = vtoi(varTmp);
				_variant_t vTmp;
				for( i = 1 ;i< k ;i++)
				{
					strFind = _T("SEQ=") + ltos(i);
					hr = rs->Find((_bstr_t)strFind, 0, adSearchForward);
					if( rs->adoEOF)
					{
						rs->AddNew();
						rs->put_Collect((_variant_t)_T("SEQ"),_variant_t((long)i));
						rs->put_Collect((_variant_t)_T("Pages"),_variant_t((long)1));
						rs->put_Collect((_variant_t)_T("DrawNo"),STR_VAR(_T("1")));
						rs->put_Collect((_variant_t)_T("DrawNa"),STR_VAR(_T("1")));
						rs->put_Collect((_variant_t)_T("Zdjh"),varNull);
						rs->put_Collect((_variant_t)_T("VolumeID"),varNull);
						rs->Update();
					}
				}
				rs->Close();
				SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TML] + _T("] WHERE VolumeID IS NULL OR VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T("  ORDER BY SEQ");
				rs->Open((_bstr_t)SQLx,_variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), 
					adOpenKeyset, adLockOptimistic, adCmdText); 
				EDIBAcad::DrawTableExcel(EDIBgbl::TMLE, rs);
			}
			sTmp.Format(GetResStr(IDS_xDrawingFinished),EDIBgbl::Cbtype[EDIBgbl::TML].MnuCaption);
			ShowMessage(sTmp);
			break;
		case iZDJDRAWm_phs :  //开始手工修改
			EDIBAcad::MakeNewLayer(_T("M_phs0"), acRed);
			break;
		case iZDJDRAWXN180mm://绘制西南电力院的支吊架一览表
			//Z8表
			SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh");
			rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), 
				adOpenStatic, adLockOptimistic, adCmdText); 
			if(!rs->BOF && !rs->adoEOF)
			{//zsy 12/17      改为用ARX画图
				ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD));
				if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图
				{
					rs->Close();
				}else
				{
					_variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility"));
					objTmp = v.pdispVal;
					p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD)));
					p0 = p1;
				}
				EDIBAcad::DrawTableACAD(p0, EDIBgbl::TZDSWED180, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB"));
			}
			break;
		case iZDJDRAW705mmHBYZ: //华北冶建
			//z9
						SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh");
			rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), 
				adOpenStatic, adLockOptimistic, adCmdText); 
			if(!rs->BOF && !rs->adoEOF)
			{//zsy 12/17      改为用ARX画图
				ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD));
				if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图
				{
					rs->Close();
				}else
				{
					_variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility"));
					objTmp = v;
					p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD)));
					p0 = p1;
				}
				EDIBAcad::DrawTableACAD(p0, EDIBgbl::TZD800HBYJ, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB"));
			}
			break;
		case iZDJDRAWloadBJBW://北京巴威支吊荷载位移表
			modPHScal::SetBasePoint();
			modPHScal::PhsDisplacementLoadINFOMake("hz",0,EDIBgbl::TzDLOADNEW);
			break;
		//pfg20050601//北京华宇
		case iZDJDRAWBJHY01:
				//判断是否所有支吊架计算完成。
			SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh");
			rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), 
				adOpenStatic, adLockOptimistic, adCmdText); 
			if(!rs->BOF && !rs->adoEOF)
			{//zsy 12/17      改为用ARX画图
					ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD));
					if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图
					{
						rs->Close();
					}else
					{

						_variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility"));
						objTmp =v.pdispVal;
						p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD)));
						p0 = p1;
					}
					EDIBAcad::DrawTableACAD(p0, 36, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB"));
			}
			break;

		case iZDJDRAWBJHY02:
				//判断是否所有支吊架计算完成。
			SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh");
			rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), 
				adOpenStatic, adLockOptimistic, adCmdText); 
			if(!rs->BOF && !rs->adoEOF)
			{//zsy 12/17      改为用ARX画图
					ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD));
					if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图
					{
						rs->Close();
					}else
					{

						_variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility"));
						objTmp = v.pdispVal;
						p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD)));
						p0 = p1;
					}
					EDIBAcad::DrawTableACAD(p0, 37, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB"));
			}
			break;
		//pfg20050601
		}
	}
	catch(_com_error e)
	{
		ShowMessage(e.Description());
	}
}
Ejemplo n.º 13
0
void CFrmPreferences::OnOK() 
{
	// TODO: Add extra validation here
	bool FLAG = modPHScal::gbSPRBHLOADUNITBYNEWTON; //保存

	m_wndCalPag.SaveIniValue();
	m_wndDrawPag.SaveIniValue();
	m_wndPointPag.SaveIniValue();
	if(m_wndStylePag.GetActiveTimes() > 1)
	{
		m_wndStylePag.SaveIniValue();
	}
	SetRegValue(_T("Settings"), _T("CSPRAutoLugDia"), modPHScal::gbCSPRAutoLugDia);
	SetRegValue(_T("Settings"), _T("AutoTZ"), modPHScal::AutoOrdinateDrawing);


	SetRegValue(_T("Settings"), _T("CalSAbyConservativenessMethod"), (modPHScal::gbCalSAbyConservativenessMethod));
	SetRegValue(_T("Settings"), _T("CalSAbyPJG"), (modPHScal::gbCalSAbyPJG));
	SetRegValue(_T("Settings"), _T("CalCSPRLugDiaByPjg"), (modPHScal::gbCalCSPRLugDiaByPjg));

	SetRegValue(_T("Settings"), _T("CalPARTbyMaxLoad"), (modPHScal::gbCalPARTbyMaxLoad));
	SetRegValue(_T("Settings"), _T("AddPartWeight2PMax"), (modPHScal::gbAddPartWeight2PMax));
	SetRegValue(_T("Settings"), _T("AddPartWeight2CSPRPgz"), (modPHScal::gbAddPartWeight2CSPRPgz));
	SetRegValue(_T("Settings"), _T("AddPartWeight2SPRPgz"),  (modPHScal::gbAddPartWeight2SPRPgz));//2007.07.30
	SetRegValue(_T("Settings"),_T("PAForceZero"),(modPHScal::gbPAForceZero));//2007.09.25
	SetRegValue(_T("Settings"), _T("MaxPgzPaz"),  (modPHScal::gbMaxPgzPaz));//2007.09.03
	SetRegValue(_T("Settings"), _T("MinMaxDispByActualDisp"), (modPHScal::gbMinMaxDispByActualDisp));


	SetRegValue(_T("Settings"), _T("PhsOutINFOTableType"), (modPHScal::giPhsOutINFOTableType));
	SetRegValue(_T("Settings"), _T("DrawSIZE_A3A4"), (modPHScal::giDrawSIZE_A3A4));
	SetRegValue(_T("Settings"), _T("IsACAD"), (modPHScal::gIsACAD));
	SetRegValue(_T("Settings"), _T("SpringOrder"), (modPHScal::giSpringOrder));
	SetRegValue(_T("Settings"), _T("strSpringOrder"), modPHScal::gstrSpringOrder);
	SetRegValue(_T("Settings"), _T("strSpringOrderSQL"), modPHScal::gstrSpringOrderSQL);
	SetRegValue(_T("Settings"), _T("PhsColor"), modPHScal::gsPhsColor);
	SetRegValue(_T("Settings"), _T("Draw_BOM"), (modPHScal::gbDraw_BOM));
	SetRegValue(_T("Settings"), _T("AnnotateCSPR"), (modPHScal::gbAnnotateCSPR));
	SetRegValue(_T("Settings"), _T("Draw_OVERWRITE"), (modPHScal::gbDrawOVERWRITE));
	SetRegValue(_T("Settings"), _T("WorksWithBoltsNuts"), (modPHScal::gbWorksWithBoltsNuts));
	SetRegValue(_T("Settings"), _T("WorksWithSABoltsNuts"), (modPHScal::gbWorksWithSABoltsNuts));
	SetRegValue(_T("Settings"), _T("DW_delta"), (modPHScal::gnDW_delta));

	SetRegValue(_T("Settings"), _T("ZDJH"), (EDIBgbl::glCurRecordNo));
	SetRegValue(_T("Settings"), _T("DrawNoPreMethod"), (modPHScal::gbDrawNoPreMethod));
	SetRegValue(_T("Settings"), _T("AutoSaveDrawing"), (modPHScal::gbAutoSaveDrawing));
	SetRegValue(_T("Settings"), _T("DrawNoStartNumber"), (modPHScal::glDrawNoStartNumber));
	SetRegValue(_T("Settings"), _T("DwgVersion"), (EDIBgbl::strDwgVersion));
	SetRegValue(_T("Settings"), _T("MaxLGLong"), (EDIBgbl::MaxLGLong));//pfg20050922

	SetRegValue(_T("Settings"), _T("DWGPreMethod"), (modPHScal::glDWGPreMethod));
	SetRegValue(_T("Settings"), _T("DWGPre"), modPHScal::gsDWGPre);
	SetRegValue(_T("Settings"), _T("CSPRCanSpecialDesign"), (modPHScal::gbCSPRCanSpecialDesign));
	SetRegValue(_T("Settings"), _T("LimitLugMinDia"), (modPHScal::gbLimitLugMinDia));

	SetRegValue(_T("Settings"), _T("AutoAlignCSPRtoSA"), (modPHScal::gbAutoAlignCSPRtoSA));
	SetRegValue(_T("Settings"), _T("SumAllVolume"), (modPHScal::gbSumAllVolume));

	
	////////////////////////////
	if(FLAG!=modPHScal::gbSPRBHLOADUNITBYNEWTON)//单位改变时要初始化 
	{									   
		//this->ShowWindow(SW_HIDE);
		//modPHScal::blnSelphsSPEC(true);

		
		_variant_t tmpvar;
		int inttbExist=0;//0表示第一次进入循环,1表示表存在,2表示表不存在
		_RecordsetPtr rsX;
		rsX.CreateInstance(__uuidof(Recordset));
		_ConnectionPtr db, db1;
		db.CreateInstance(__uuidof(Connection));
		db1.CreateInstance(__uuidof(Connection));

		long  lngErrNum ;
		CString sTmp;

		CString strConnect;
		strConnect.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database Password=%s"),
			basDirectory::DBShareDir + _T("zdjcrude.mdb"), ModEncrypt::gstrDBZdjCrudePassWord);
		db->Open((_bstr_t)strConnect, "", "", adModeUnknown);

		db1->Open((_bstr_t)("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+basDirectory::ProjectDBDir+_T("sort.mdb")),
			(_bstr_t)"", (_bstr_t)"",adModeUnknown);

		if(rsX->State == adStateOpen)
			rsX->Close();
		rsX->Open((_bstr_t)_T("SELECT * FROM phsManuSPRING ORDER BY [Observation],[standard] ASC"), 
			_variant_t((IDispatch*)EDIBgbl::dbSORT,true), 
			adOpenDynamic, adLockOptimistic, adCmdText); 
		modPHScal::gsPhsSPRINGSel.TrimLeft();modPHScal::gsPhsSPRINGSel.TrimRight(); 
		if( rsX->adoEOF && rsX->BOF )
		{
			lngErrNum = IDS_NotFoundThisStandardInSortMdb;
			sTmp.Format(GetResStr(lngErrNum),EDIBgbl::GetDBName(db1),_T("phsManuBoltsNuts"),modPHScal::gsPhsBoltsNutsSel);
			ShowMessage(sTmp);
			if(rsX->State == adStateOpen)
				rsX->Close();
			
			if(db->State == adStateOpen)
				db->Close();
			
			if(db1->State == adStateOpen)
				db1->Close();
			CPropertySheet::EndDialog(IDOK);
		}
		if(modPHScal::gsPhsSPRINGSel != _T("") ){
			// rsX->Filter=_variant_t(CString(_T("standard=\'") )+ gsPhsPASel + _T("\'"));
			//rsX.FindFirst
			//rsX->Find(_bstr_t(CString(_T("standard=\'"))+gsPhsSPRINGSel+_T("\'")),0,adSearchForward);
			HRESULT hr = S_OK;
			CString strFind;
			strFind = _T("standard=\'")+modPHScal::gsPhsSPRINGSel+_T("\'");
			hr = rsX->Find((_bstr_t)strFind, 0, adSearchForward);
			if( !rsX->adoEOF)	   
			{
				rsX->MoveFirst();
				inttbExist=2;
			}
		}
		else
		{
			rsX->MoveFirst();
			inttbExist=2;
		}
		while((inttbExist!=1)&&(!rsX->adoEOF))
		{
			rsX->get_Collect((_variant_t)_T("standard"),&tmpvar);
			if(tmpvar.vt==VT_NULL)
				modPHScal::gsPhsSPRINGSel=_T("");
			else{
				modPHScal::gsPhsSPRINGSel=vtos(tmpvar);
				modPHScal::gsPhsSPRINGSel.TrimLeft();modPHScal::gsPhsSPRINGSel.TrimRight();
			}
			rsX->get_Collect((_variant_t)_T("Spring_property"),&tmpvar);
			if(tmpvar.vt==VT_NULL)
				modPHScal::tbnSPRINGproperty=_T("");
			else{
				modPHScal::tbnSPRINGproperty=vtos(tmpvar);
				modPHScal::tbnSPRINGproperty.TrimLeft();modPHScal::tbnSPRINGproperty.TrimRight();
			}
			rsX->get_Collect((_variant_t)_T("Spring_propertyMaxDist"),&tmpvar);
			if(tmpvar.vt==VT_NULL)
				modPHScal::tbnDiscSPRINGpropertyMaxDist=_T("");
			else{
				modPHScal::tbnDiscSPRINGpropertyMaxDist=vtos(tmpvar);
				modPHScal::tbnDiscSPRINGpropertyMaxDist.TrimLeft();modPHScal::tbnDiscSPRINGpropertyMaxDist.TrimRight();
			}
			rsX->get_Collect((_variant_t)_T("Spring_id"),&tmpvar);
			if(tmpvar.vt==VT_NULL)
				modPHScal::tbnSPRINGid=_T("");
			else{
				modPHScal::tbnSPRINGid=vtos(tmpvar);
				modPHScal::tbnSPRINGid.TrimLeft();modPHScal::tbnSPRINGid.TrimRight();
			}
			rsX->get_Collect((_variant_t)_T("Spring_Crude"),&tmpvar);
			if(tmpvar.vt==VT_NULL)
				modPHScal::tbnSPRINGCrude=_T("");
			else{
				modPHScal::tbnSPRINGCrude=vtos(tmpvar);
				modPHScal::tbnSPRINGCrude.TrimLeft();modPHScal::tbnSPRINGCrude.TrimRight();
			}
			rsX->get_Collect((_variant_t)_T("CrudeTurnbuckle"),&tmpvar);
			if(tmpvar.vt==VT_NULL)
				modPHScal::tbnSPRINGL5Crude=_T("");
			else{
				modPHScal::tbnSPRINGL5Crude=vtos(tmpvar);
				modPHScal::tbnSPRINGL5Crude.TrimLeft();modPHScal::tbnSPRINGL5Crude.TrimRight();
			}
			//以下判断弹簧原始数据表在数据库中是否存在
			rsX->get_Collect((_variant_t)_T("DiameterSerial"),&tmpvar);
			if(tmpvar.vt==VT_NULL)
				modPHScal::tbnSPRDiameterSerial=_T("");
			else{
				modPHScal::tbnSPRDiameterSerial=vtos(tmpvar);
				modPHScal::tbnSPRDiameterSerial.TrimLeft();modPHScal::tbnSPRDiameterSerial.TrimRight();
			}
			if(!modPHScal::HStbExists(db,db1,modPHScal::tbnSPRDiameterSerial,_T("phsManuSPRING"),_T("DiameterSerial"),modPHScal::gsPhsSPRINGSel))
			{	
				if(inttbExist==0)	//第一次移到第一条记录上
				{
					rsX->MoveFirst();
					inttbExist=2;
				}
				else					//不是第一次,向后移一条记录
					rsX->MoveNext();
				continue;
			}
			if(!modPHScal::HStbExists(db,db1,modPHScal::tbnSPRINGCrude,_T("phsManuSPRING"),_T("Spring_Crude"),modPHScal::gsPhsSPRINGSel))
			{	
				if(inttbExist==0)	//第一次移到第一条记录上
				{
					rsX->MoveFirst();
					inttbExist=2;
				}
				else					//不是第一次,向后移一条记录
					rsX->MoveNext();
				continue;
			}
			if(!modPHScal::HStbExists(db,db1,modPHScal::tbnSPRINGL5Crude,_T("phsManuSPRING"),_T("CrudeTurnbuckle"),modPHScal::gsPhsSPRINGSel))
			{	
				if(inttbExist==0)	//第一次移到第一条记录上
				{
					rsX->MoveFirst();
					inttbExist=2;
				}
				else					//不是第一次,向后移一条记录
					rsX->MoveNext();
				continue;
			}
			if(!modPHScal::HStbExists(db,db1,modPHScal::tbnSPRINGid,_T("phsManuSPRING"),_T("Spring_id"),modPHScal::gsPhsSPRINGSel))
			{	
				if(inttbExist==0)	//第一次移到第一条记录上
				{
					rsX->MoveFirst();
					inttbExist=2;
				}
				else					//不是第一次,向后移一条记录
					rsX->MoveNext();
				continue;
			}
			if(!modPHScal::HStbExists(db,db1,modPHScal::tbnSPRINGproperty,_T("phsManuSPRING"),_T("Spring_property"),modPHScal::gsPhsSPRINGSel))
			{	
				if(inttbExist==0)	//第一次移到第一条记录上
				{
					rsX->MoveFirst();
					inttbExist=2;
				}
				else					//不是第一次,向后移一条记录
					rsX->MoveNext();
				continue;
			}
			if(!modPHScal::HStbExists(db,db1,modPHScal::tbnDiscSPRINGpropertyMaxDist,_T("phsManuSPRING"),_T("Spring_propertyMaxDist"),modPHScal::gsPhsSPRINGSel))
			{	
				if(inttbExist==0)	//第一次移到第一条记录上
				{
					rsX->MoveFirst();
					inttbExist=2;
				}
				else					//不是第一次,向后移一条记录
					rsX->MoveNext();
				continue;
			}
			inttbExist=1;
	}
	if(inttbExist!=1)
	{
		if(rsX->State == adStateOpen)
			rsX->Close();
		
		if(db->State == adStateOpen)
			db->Close();
		
		if(db1->State == adStateOpen)
			db1->Close();
		CPropertySheet::EndDialog(IDOK);
	}
	inttbExist=0;
	   rsX->get_Collect((_variant_t)_T("SerialNumPerSPR"),&tmpvar);
	   if(tmpvar.vt==VT_NULL)
		   modPHScal::giAllowedMaxSerialNumPerSPR=0;
	   else{
		   modPHScal::giAllowedMaxSerialNumPerSPR=vtoi(tmpvar);
		   //   giAllowedMaxSerialNumPerSPR.TrimLeft();giAllowedMaxSerialNumPerSPR.TrimRight();
	   }
	   rsX->get_Collect((_variant_t)_T("SerialNumSPRs"),&tmpvar);
	   if(tmpvar.vt==VT_NULL)
		   modPHScal::giAllowedMaxSerialNumSPRs=0;
	   else{
		   modPHScal::giAllowedMaxSerialNumSPRs=vtoi(tmpvar);
		   //giAllowedMaxSerialNumSPRs.TrimLeft();giAllowedMaxSerialNumSPRs.TrimRight();
	   }
	   //当导入了规范或者启动过之后
		bool	 bSPECchanged = true;
	   if((bSPECchanged || modPHScal::gbStartedOnceAPHS) && !(modPHScal::gsPhsSPRINGSel == modPHScal::gsOldPhsSPRINGSel))
		   modPHScal::CreateTmpSPRPropertyTable(modPHScal::giAllowedMaxSerialNumSPRs);
	   //获得弹簧或恒力弹簧编号规格的单位制
	   //以下判断恒力弹簧/碟簧规格编号力单位制描述字段值是否存在
	   rsX->get_Collect((_variant_t)_T("Unit_Force"),&tmpvar);
	   if(tmpvar.vt==VT_NULL)
	   {
		   lngErrNum = IDS_NullXfieldInphsManuXOfsortMdb;
		   sTmp.Format(GetResStr(lngErrNum),EDIBgbl::GetDBName(db1),_T("phsManuSPRING"),modPHScal::gsPhsSPRINGSel ,_T("Unit_Force"));
		   ShowMessage(sTmp);
		   if(rsX->State == adStateOpen)
			   rsX->Close();
		   
		   if(db->State == adStateOpen)
			   db->Close();
		   
		   if(db1->State == adStateOpen)
			   db1->Close();
		   CPropertySheet::EndDialog(IDOK);
	   }
	   else{
		   sTmp=vtos(tmpvar);
		   sTmp.TrimLeft();sTmp.TrimRight();
		   if(sTmp.Left(1)==_T("N"))
		   {
			   if(!modPHScal::gbSPRBHLOADUNITBYNEWTON)
			   {
				   modPHScal::gsSPRUnitOfLoad = _T("kgf");
				   rsX->put_Collect((_variant_t)_T("Unit_Force"),STR_VAR("kgf"));
				   rsX->Update();
				   //如果没有导入,只修改模板库下的原始数据库;
				   //修改方法:
				   rsX->get_Collect((_variant_t)_T("Folder"), &tmpvar);
				   
				   if(tmpvar.vt==VT_NULL||vtos(tmpvar)=="")
					   ;
				   else
				   {
					   //如果有导入,还要修改导入路径下的原始数据库;
				   }
			   }
			   else
			   {
				   modPHScal::gsSPRUnitOfLoad = _T("N");
			   }
			   
			   // gsSPRUnitOfLoad = _T("N");
		   }
		   else if(sTmp.Left(3)==_T("daN"))
			   modPHScal::gsSPRUnitOfLoad = _T("daN");
		   else if(sTmp.Left(3)==_T("kgf"))
		   {
			   if(modPHScal::gbSPRBHLOADUNITBYNEWTON)
			   {
				   modPHScal::gsSPRUnitOfLoad = _T("N");
				   rsX->put_Collect((_variant_t)_T("Unit_Force"),STR_VAR("N"));
				   rsX->Update();
				   //如果没有导入,只修改模板库下的原始数据库;
				   //修改方法:
				   rsX->get_Collect((_variant_t)_T("Folder"),&tmpvar);
				   
				   if(tmpvar.vt==VT_NULL||vtos(tmpvar)=="")
					   ;
				   else
				   {
					   //如果有导入,还要修改导入路径下的原始数据库;
				   }
			   }
			   else
			   {
				   modPHScal::gsSPRUnitOfLoad = _T("kgf");
			   }
		   }
		   else
			   //没找任何荷载单位制识别字符
		   {
			   sTmp.Format(GetResStr(IDS_NotFoundUnitStringInBHFormat),EDIBgbl::GetDBName(db1),_T("phsManuSPRING"),GetResStr(IDS_SPR),vtos(tmpvar));
		   ShowMessage(sTmp);
		   modPHScal::gsSPRUnitOfLoad = _T("daN");
		   }
	   }
	}

	CPropertySheet::EndDialog(IDOK);
}
Ejemplo n.º 14
0
BOOL CFrmPreferences::OnInitDialog() 
{
	BOOL bResult = CPropertySheet::OnInitDialog();
	
	// TODO: Add your specialized code here
	modPHScal::ReadAutoPHSiniValue();
	
	//m_wndPreSheet.ModifyStyleEx(0,WS_EX_CONTROLPARENT);
	//m_wndPreSheet.ModifyStyle(0,WS_TABSTOP);
	SetActivePage(&m_wndCalPag);
	SetActivePage(&m_wndDrawPag);
	SetActivePage(&m_wndPointPag);

	SetActivePage(&m_wndStylePag);
	SetActivePage(&m_wndCalPag);
	SetWindowText(GetResStr(IDS_frmPreferences_frmPreferences));
	//ID_APPLY_NOW
	SetWindowCenter(this->m_hWnd);
	CRect rc1,rc2,rc3;
	GetClientRect(&rc1);
	GetDlgItem(IDOK)->GetWindowRect(&rc2);
	ScreenToClient(&rc2);
	GetDlgItem(IDHELP)->GetWindowRect(&rc3);
	ScreenToClient(&rc3);
	int cx = rc2.left - (rc1.Width() - (rc3.right - rc2.left))/2;

	rc2.left-=cx;
	rc2.right-=cx;
	GetDlgItem(IDOK)->MoveWindow(&rc2);

	GetDlgItem(IDCANCEL)->GetWindowRect(&rc2);
	ScreenToClient(&rc2);
	rc2.left-=cx;
	rc2.right-=cx;
	GetDlgItem(IDCANCEL)->MoveWindow(&rc2);

	GetDlgItem(ID_APPLY_NOW)->GetWindowRect(&rc2);
	ScreenToClient(&rc2);
	rc2.left-=cx;
	rc2.right-=cx;
	GetDlgItem(ID_APPLY_NOW)->MoveWindow(&rc2);

	GetDlgItem(IDHELP)->GetWindowRect(&rc2);
	ScreenToClient(&rc2);
	rc2.left-=cx;
	rc2.right-=cx;
	GetDlgItem(IDHELP)->MoveWindow(&rc2);

	CRect rcBtnDefault;
	GetDlgItem(IDHELP)->GetWindowRect(&rcBtnDefault);
	ScreenToClient(&rcBtnDefault);
	rcBtnDefault.left += 80;
	rcBtnDefault.right += 80;
	CFont* pFont = GetDlgItem(IDHELP)->GetFont();
	m_btnDefault.Create("恢复默认",
		WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON,
		rcBtnDefault,
		this,
		ID_BTN_DEFAULT);
	m_btnDefault.SetFont(pFont);


	
	//m_wndCalPag.SetComboSpringOrder(false);
	/*m_wndCalPag.SetCtrlValue();
	m_wndDrawPag.SetCtrlValue();
	m_wndPointPag.SetCtrlValue();*/
	
	return bResult;
}