void ON_InstanceDefinition::SetAlternateSourceArchivePath( const wchar_t* alternate_source_archive_path, bool bRelativePath ) { ON_wString s; if ( 0 != alternate_source_archive_path ) { s = alternate_source_archive_path; s.TrimLeftAndRight(); alternate_source_archive_path = s; if ( 0 != alternate_source_archive_path && 0 == alternate_source_archive_path[0] ) alternate_source_archive_path = 0; } ON__IDefAlternativePathUserData* ud = ON__IDefAlternativePathUserData::FindOrCreate(*this,0!=alternate_source_archive_path); if ( 0 != ud ) { if ( 0 == alternate_source_archive_path ) delete ud; else { ud->m_alternate_path = alternate_source_archive_path; ud->m_bRelativePath = bRelativePath; } } }
CRhinoCommand::result CCommandSampleOpenIges::RunCommand( const CRhinoCommandContext& context ) { ON_wString filename; if( context.IsInteractive() ) { DWORD dwFlags = OFN_ENABLESIZING | OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST; const wchar_t* szFilter = L"IGES Files (*.igs;*.iges)|*.igs; *.iges||"; CWnd* pParentWnd = CWnd::FromHandle( RhinoApp().MainWnd() ); #if defined(WIN64) CFileDialog dialog( TRUE, L"igs", 0, dwFlags, szFilter, pParentWnd, 0, TRUE ); #else CFileDialog dialog( TRUE, L"igs", 0, dwFlags, szFilter, pParentWnd ); #endif INT_PTR rc = dialog.DoModal(); if( rc != IDOK ) return CRhinoCommand::cancel; filename = dialog.GetPathName(); } else { CRhinoGetString gs; gs.SetCommandPrompt( L"IGES file to open" ); gs.GetString(); if( gs.CommandResult() != CRhinoCommand::success ) return gs.CommandResult(); filename = gs.String(); } filename.TrimLeftAndRight(); if( filename.IsEmpty() ) return CRhinoCommand::nothing; if( !CRhinoFileUtilities::FileExists(filename) ) { RhinoApp().Print( L"File \"%s\" not found.\n", filename ); return CRhinoCommand::failure; } // Note, setting the document modified flag to false will prevent the // "Do you want to save this file..." mesasge from displaying when you // open a file (if the current document has been modified in any way). // But, you will (also) loose any modifications to the current document. // So, use the following line of code carefully. context.m_doc.SetModifiedFlag( FALSE ); ON_wString script; script.Format( L"_-Open \"%s\" _Enter _Enter _Enter", filename ); RhinoApp().RunScript( script, 0 ); return CRhinoCommand::success; }
void ON_InstanceDefinition::SetSourceArchive( const wchar_t* source_archive, ON_CheckSum checksum, ON_InstanceDefinition::IDEF_UPDATE_TYPE idef_update_type) { ON_wString s = source_archive; s.TrimLeftAndRight(); m_source_archive = s; m_source_archive_checksum = checksum; if ( m_source_archive.IsEmpty() ) m_idef_update_type = ON_InstanceDefinition::static_def; else m_idef_update_type = ON_InstanceDefinition::IdefUpdateType(idef_update_type); }
CRhinoCommand::result CCommandSampleImportMeshes::RunCommand( const CRhinoCommandContext& context ) { CWnd* pMainWnd = CWnd::FromHandle(RhinoApp().MainWnd()); if (0 == pMainWnd) return CRhinoCommand::failure; CRhinoGetFileDialog gf; gf.SetScriptMode(context.IsInteractive() ? FALSE : TRUE); BOOL rc = gf.DisplayFileDialog(CRhinoGetFileDialog::open_rhino_only_dialog, 0, pMainWnd); if (!rc) return CRhinoCommand::cancel; ON_wString filename = gf.FileName(); filename.TrimLeftAndRight(); if (filename.IsEmpty()) return CRhinoCommand::nothing; if (!CRhinoFileUtilities::FileExists(filename)) { RhinoApp().Print(L"File not found\n"); return CRhinoCommand::failure; } FILE* archive_fp = ON::OpenFile(filename, L"rb"); if (0 == archive_fp) { RhinoApp().Print(L"Unable to open file\n"); return CRhinoCommand::failure; } ON_BinaryFile archive(ON::read3dm, archive_fp); ONX_Model model; rc = model.Read(archive) ? TRUE : FALSE; ON::CloseFile( archive_fp ); if (!rc) { RhinoApp().Print(L"Error reading file\n"); return CRhinoCommand::failure; } int num_imported = 0; for (int i = 0; i < model.m_object_table.Count(); i++) { const ONX_Model_Object& model_object = model.m_object_table[i]; const ON_Mesh* mesh = ON_Mesh::Cast(model_object.m_object); if (0 != mesh) { // CRhinoDoc::AddMeshObject makes a copy of the input mesh context.m_doc.AddMeshObject(*mesh); num_imported++; } } if (0 == num_imported) RhinoApp().Print(L"No meshes imported\n"); else if (1 == num_imported) RhinoApp().Print(L"1 mesh imported\n"); else RhinoApp().Print(L"%d meshes imported\n", num_imported); context.m_doc.Redraw(); return CRhinoCommand::success; }