admin 发表于 2013-10-30 14:00:47

NX二次开发源码:使用NX Open C++选取注释

NX二次开发源码:使用NX Open C++选取注释
#include <uf.h>
#include <uf_object_types.h>

#include <NXOpen/Annotations.hxx>
#include <NXOpen/Annotations_Note.hxx>
#include <NXOpen/NXException.hxx>
#include <NXOpen/NXMessageBox.hxx> // as of NX5
#include <NXOpen/NXObject.hxx>
#include <NXOpen/Selection.hxx>
#include <NXOpen/Session.hxx>
#include <NXOpen/UI.hxx>

using namespace NXOpen;
using namespace std;

/*****************************************************************************
**Activation Methods
*****************************************************************************/
/*Explicit Activation
**      This entry point is used to activate the application explicitly, as in
**      "File->Execute UG/Open->User Function..." */
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
{
    /* Initialize the API environment */

    Session* theSession = NXOpen::Session::GetSession();

    try
    {

      // ask user to select text
      UI *ui = UI::GetUI();
      Selection *sm = ui->SelectionManager();
      NXMessageBox *mb = ui->NXMessageBox(); // as of NX5

      NXString message("Select Notes:");
      NXString title("Select Notes");
      Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;
      Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;
      bool include_features = 0;
      bool keep_highlighted = 0;

      // Define the mask triple(s)
      std::vector<Selection::MaskTriple> mask(1);
      mask = Selection::MaskTriple( UF_drafting_entity_type, UF_draft_note_subtype, 0 );

      std::vector<NXObject *> objects;

      // Select objects using filter defined by mask triples
      Selection::Response res = sm->SelectObjects(
            message,
            title,
            scope,
            action,
            include_features,
            keep_highlighted,
            mask,
            objects
            );

      if (objects.size())
      {
            Annotations::Note *note;
            std::vector<NXString> messages;
            std::vector<NXString> texts;
            for (unsigned int ii = 0; ii < objects.size(); ii++)
            {
                note = dynamic_cast<Annotations::Note *>(objects);
                texts = note->GetText();
                for(unsigned int jj=0; jj<texts.size(); jj++)
                {
                  messages.push_back(texts);
                }
            }
            // NXMessageBox works as of NX5
            mb->Show("Selected Notes", NXMessageBox::DialogTypeInformation, messages);
            // otherwise simply write to the listing window
            // ListingWindow *lw = theSession->GetListingWindow();
            // lw->Open();
            // for (unsigned int kk = 0; kk < messages.size(); kk++)
            // {
            //lw->WriteLine(messages.getText());
            // }

      }
    }

    /* Handle errors */
    catch ( const NXOpen::NXException& ex )
    {
      // NXMessageBox works as of NX5
      UI::GetUI()->NXMessageBox()->Show("Error", NXMessageBox::DialogTypeInformation, ex.Message());
      // Until NX4 simply write to the listing window
      // theSession->GetListingWindow()->WriteLine(ex.GetMessage());
    }
}

/*****************************************************************************
**Utilities
*****************************************************************************/

/* Unload Handler
**    This function specifies when to unload your application from Unigraphics.
**    If your application registers a callback (from a MenuScript item or a
**    User Defined Object for example), this function MUST return
**    "UF_UNLOAD_UG_TERMINATE". */
extern "C" DllExport int ufusr_ask_unload()
{
return (int)NXOpen::Session::LibraryUnloadOptionImmediately;
}



页: [1]
查看完整版本: NX二次开发源码:使用NX Open C++选取注释