Jump to content

Stefan Bender

Distributor
  • Posts

    146
  • Joined

  • Last visited

Posts posted by Stefan Bender

  1. These "duplicates" are probably duplicates of proxy objects of the stair. A proxy object is some sort of slave object of a stair on another layer. This proxy object is created if option "Include top graphic on upper floor" is checked in pane "2D Graphics". If such a proxy object is duplicated by some means (which should actually be prevented by Vectorworks), the duplicate is some sort of orphan and might show unexpected behavior.

    • Like 1
  2. Dear developers,

     

    is there an official SDK way to get the strings for the Boolean values "True" and "False"? They might be needed for tables or for displaying them in other contexts. What is the VW rule for these strings? Are they localized, uppercase, lowercase? I think it would be helpful to have some sort of consistent behavior and /or an SDK call to get the strings. I'm asking because I just got a bug report that is related to this (a plug-in of ours is trying to import values from a text file into a VW record field and it turned out that we had not specified how boolean values need to be spelled so the plug-in identifies the strings as "true" or "false").

     

    Thanks,

  3. Thanks, but..

    I've seen other dialogs that seem to work where drag and drop is also enabled before the LB is actually filled with data.

    I tried what you proposed, but no effect. @Vlad Do you or the engineers in charge of listbrowsers have an idea what is wrong with EnableListBrowserDragAndDrop()? Drag and Drop support is considered to be an important feature in one of our new dialogs. Thanks!

     

     

  4. Dear developers,

     

    I'm trying to support drag and drop in a listbrowser control.

     

    After creating the columns in the dialog's setup handler, I call

     Boolean det_ddc = gSDK->SetListBrowserDragAndDropColumn( m_d, item, ind_column);
       Boolean enab_dd = gSDK->EnableListBrowserDragAndDrop( m_d, item, true);

     

    Item and column exist, either function return true for success so everything should be fine.

     

    Unfortunately, when I'm hovering over the column, the cursor does not become the drag and drop cursor and so I  can't drag and drop anything.

     

    Has anybody an idea which undocumented things I need to do (or must not do) beside calling these functions?

     

    Which undocumented side effects of other SDK functions might have caused drag and drop to become disabled? There is no SDK function or member function of VWListBrowserControl to find out if drag and drop mode is actually switched on...

     

    Thanks for any help,

     

    Stefan Bender

     

     

     

     

  5. You could add popup choices in the initialization of your global parameter by supplying some SParametricParamChc:

     

    #define k_chc_def_tuerform 128

    #define k_chc_def_anzeigeart_komplett 129

     

    static SParametricParamChc    gArrChoices[] = {

        { k_chc_def_tuerform,    "Eckig",    {kTuerformChoices, "1"} },

        { k_chc_def_tuerform,    "Rund",    {kTuerformChoices, "2"} },

        //------

        { k_chc_def_anzeigeart_komplett,    k_un_door_choice_anzeigeart_draufsicht,    {kWindowDoorStringViewsComplex, "1"} },

        { k_chc_def_anzeigeart_komplett,    k_un_door_choice_anzeigeart_komplett_hybrid,    {kWindowDoorStringViewsComplex, "2"} },

        { k_chc_def_anzeigeart_komplett,    k_un_door_choice_anzeigeart_ansicht,    {kWindowDoorStringViewsComplex, "3"} },

        { k_chc_def_anzeigeart_komplett,    k_un_door_choice_anzeigeart_schnitt,    {kWindowDoorStringViewsComplex, "4"} },

        

        // TERMINATE

        { NULL, "", {0,0} }

    };


    static SParametricParamDef gArrParameters[] = {

            { k_un_door_cw_tuerform,    {kTuerLocalizedParameterStrings, garr_names_of_parameters[T9_DB_TUERFORM]},        "Eckig",    "Eckig",    kFieldPopUp,    k_chc_def_tuerform },

            { k_un_door_cw_anzeigeart_komplett,    {kTuerLocalizedParameterStrings, garr_names_of_parameters[T9_DB_ANZEIGEART_KOMPLETT]},        "Draufsicht",    "Draufsicht",    kFieldPopUp,    k_chc_def_anzeigeart_komplett },

            // TERMINATE

            { "", {0,0}, "", "", EFieldStyle(0), 0 }

    };

  6. Dear developers,

    I'm trying to implement a listbrowser that supports Direct Editing.

    However, I can't get the "check state" cells working correctly.

    When building the list, I call

    Boolean set_ok = gSDK->SetListBrowserItemCheckState(dialog, item, line, column, (myBooleanVariable) ? CGSMultiStateValueChange::eStateValueOn : CGSMultiStateValueChange::eStateValueOff);

    with myBooleanVariable == true and set_ok also returns true,

    but the cell remains empty.


    I had also supposed that you have to provide the cell value in the LB's DirectEditHandler, but the direct edit handler is never called unless I click on the list. Could this be the problem?


    I also tried RefreshListBrowser, but no effect.

    Cell interaction type is kListBrowserItemInteractionEditCheckState of course, direct editing is enabled for both LB and cell.
    ListBrowserControlType is kListBrowserControlNone, ListBrowserItemDisplayType is kListBrowserDisplayTextOnly


    Does anybody have an idea what could be wrong? To me this looks like a bug.

     

    Thanks for any help,

    Stefan Bender

  7. Hi Nicolas,

     

    thanks a lot for your reply! But I've been on that site before and it doesn't say anything about how to enter this value in XCode settings, it is just about batch commands.

    I had stack issues before on Windows several times (VW crashed when entering functions with large local variables) so I had wanted to exclude that. 

    Now I'm suspecting  IResourceManagerContentPtr->SetSelectedItemText(empty string), but the crash doesn' happen then but some time later when the code of the plug-in is not running anymore. Pointer is valid, of course. Doesn't look like recursion. Very strange.

     

  8. Dear developers,

     

    On Mac I am currently investigating a strange crash that seems to be related to code in my plug-in but according to the debugger  the crash happens within Vectorworks itself while no thread of the plug-in shows up in the debugger. I suspect it could be a stack size issue and would like to increase the stack size, but couldn't find any clue in the XCode help.

     

    Does someone have an idea? I tried adding some lines to the "other linker flags" (see attachment) , but don't know if this is the right place and correct syntax.

     

    Any help would be greatly appreciated.

     

    increase stacksize.png

  9. Dear developers,

     

    our window and door tools create PIOs that are inserted into a wall. The user clicks on a position in the drawing and the PIO is created there, if the position is over a wall, the PIO is inserted into that wall (i.e., the wall gets a symbol break and the PIO is the break's "symbol"). So far, so good. But unfortunately it does not seem to be possible to select the inserted PIO visibly. I called SelectObject of course, but no selection handles to be seen (the wall itself is NOT selected). I checked at the very end of my tool's HandleComplete() function that IsSelected() returns true for the PIO, but no selection handles are visible and the OIP remains blank. Is there a special trick to select PIOs in wall breaks? Or is it a bug in ISDK::SelectObject?

     

    Thanks for any help,


    Stefan Bender

  10. Hi all,

     

    how can I find out if an object style has user-provided 2D components or not? Or  more precisely, if a given 2D component (top, front, back...) is user-provided or not? I can't seem to find an SDK function for that?

     

    Thanks for a short note,

     

    Stefan Bender

  11. Another related issue: After the upgrade to XCode 11 we keep getting build errors in seemingly random plug-ins that are caused by codesigning. The error message says it's about resource forks or finder info.

    Some site in the Internet said 

     

    >>According to Apple:
    >>Note that browsing files within a bundle with Finder’s Show Package Contents command can cause Finder info to be added to those files. 

     

    Obviously, we need to do such browsing very often, for instance when we edit .vwstrings or .vs files. 

     

    So what can be done to make sure that this codesigning stuff doesn't interfere with the builds? Can we try switching codesigning off? Or try removing the resource forks &c automatically before each build? If we try that, we would need to assign write permissions to the files in the bundle which could interfere with Perforce.

     

    Thanks for any help,

     

    Stefan Bender

    build errors.png

  12. I think it would be a very bad and dangerous idea to use the symbol's bounding box or other symbol data for calculations or anything else but mere display. Overriding (or even worse, changing) data the user entered could create complications. The symbol is just meant for optical purposes.

  13. IN the constructor of one of our classes, we query for a VCOM interface:

     

     Boolean succ = VCOM_SUCCEEDED( ::GS_VWQueryInterface( VectorWorks::EnergyAnalysis::IID_EnergyBuildingElementWinDoorEx, (IVWUnknown**) & m_energy_2021 ) );

     

    As requested in the SDK documentation, we release that interface in the destructor of the class:

     

    if (m_energy_2021) {
            m_energy_2021->Release();
          //  m_energy_2021 = nullptr;
        }

     

    Before releasing, the refcount (m_energy2021->fPtr) is 1, after releasing it is 0 which looks OK.

     

    But after the end of the destructor, it seems that the VCOM destructor is called again, tries to release again and gives a debug warning saying refcount <0.

     

    Is this OK? Should I release the interface by myself or wait for the automatic destructor? SDK doc says  I should release, but looking at the source code in various SDK plug-ins I get a mixed feeling, in some routines the interface is released, in others it is not.

     

    What is the correct workflow? If I am supposed to release the interface by myself, why do I get the debug warning?

     

    Thanks for any help,

     

    Stefan Bender

     

  14. I never used this function, but maybe the dialog is not yet displayed when you call the function? Does it fail on Mac and Windows or just on one platform? Does the control with the given ID actually exist and is it a static text control? Which RGB values are you passing? How did you initialize the CRGBColor? Check if your color has a valid color ref and check the RGB values.

    • Like 1
×
×
  • Create New...