#include "stdafx.h" //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// // // BEGIN TestPsomesh94 command // #pragma region TestPsomesh94 command class CCommandTestPsomesh94 : public CRhinoCommand { public: CCommandTestPsomesh94() = default; UUID CommandUUID() override { // {DA8AE398-C102-48F3-9184-387C71067467} static const GUID TestPsomesh94Command_UUID = { 0xDA8AE398, 0xC102, 0x48F3, { 0x91, 0x84, 0x38, 0x7C, 0x71, 0x06, 0x74, 0x67 } }; return TestPsomesh94Command_UUID; } const wchar_t* EnglishCommandName() override { return L"TestPsomesh94"; } CRhinoCommand::result RunCommand(const CRhinoCommandContext& context) override; private: void DumpInstanceDefinition( CRhinoDoc& doc, const CRhinoInstanceDefinition* idef_object, ON_TextLog& dump, bool bRoot ); }; // The one and only CCommandTestPsomesh94 object static class CCommandTestPsomesh94 theTestPsomesh94Command; CRhinoCommand::result CCommandTestPsomesh94::RunCommand(const CRhinoCommandContext& context) { CRhinoGetString gs; gs.SetCommandPrompt(L"Name of instance definition to dump"); gs.GetString(); if (gs.CommandResult() != CRhinoCommand::success) return gs.CommandResult(); ON_wString idef_name = gs.String(); idef_name.TrimLeftAndRight(); if (idef_name.IsEmpty()) return CRhinoCommand::cancel; const CRhinoInstanceDefinitionTable& idef_table = context.m_doc.m_instance_definition_table; int idef_index = idef_table.FindInstanceDefinition(idef_name); if (idef_index < 0) { RhinoApp().Print(L"Instance definition \"%ls\"not found.\n", static_cast(idef_name)); return CRhinoCommand::cancel; } const CRhinoInstanceDefinition* idef = idef_table[idef_index]; if (nullptr == idef || idef->IsDeleted()) return CRhinoCommand::failure; ON_wString writer; ON_TextLog dump(writer); dump.SetIndentSize(4); DumpInstanceDefinition(context.m_doc, idef, dump, true); RhinoApp().Print(L"%ls\n", static_cast(writer)); return CRhinoCommand::success; } void CCommandTestPsomesh94::DumpInstanceDefinition( CRhinoDoc& doc, const CRhinoInstanceDefinition* idef, ON_TextLog& dump, bool bRoot ) { if (nullptr == idef) return; const wchar_t* node = (bRoot) ? L"\x2500" : L"\x2514"; dump.Print(L"%ls instance_definition = %ls\n", node, static_cast(idef->Name())); ON_TextLogIndent indent(dump); ON_SimpleArray rhino_objects; idef->GetObjects(rhino_objects); for (int i = 0; i < rhino_objects.Count(); i++) { const CRhinoObject* obj = rhino_objects[i]; if (nullptr == obj) continue; const CRhinoInstanceObject* iref = CRhinoInstanceObject::Cast(obj); if (iref) { DumpInstanceDefinition(doc, iref->InstanceDefinition(), dump, false); continue; } dump.Print(L"\x2514 object = %ls\n", obj->ShortDescription(false)); } } #pragma endregion // // END TestPsomesh94 command // //////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////