Jump to content

Assembly

Member
  • Posts

    430
  • Joined

  • Last visited

Posts posted by Assembly

  1. A pop up can only give you a list of the hatch names.

    If you using an event enabled tool, you can add a button that triggers a dialog. A dialog lets you use a graphic interface to select the hatch.

    Below is a drop in function I hacked together.

    ImportSymbol(FolderID:INTEGER;SubFolder:STRING;FolderName:STRING):Handle;

    This Function allows you to specify a File Directory to import symbols from. You specify the folderName inside the current document where the symbol gets filed.

    To get symbols only in the active file use something like:

    hTemp:=ImportSymbol(0,'','MyCoolFolder');

    I used Vectorworks Dialog builder (DB5) to create the dialog part of the script. I think Dialog Builder has been updated recently. It is a good set of tools for dialog scripting. It is a starting point, from memory it has a hatch selection dialog.

    If you look at Dialog Builder you will find what you need.

    _____________________

    Function ImportSymbol(FolderID:INTEGER;SubFolder:STRING;FolderName:STRING):Handle;

    {

    FolderID points the function to a file directory Folder. Look at developer.vectoworks.com 'VS:BuildResourceList'

    13 is /Library

    Subfolder is a folder in the file directory. This allows you to build your on folder structure for different tools

    ie to get symbols out of a specific VW file you could have 'Electrical/Lights'

    FolderName allows you to file the symbol once it gets imported.

    the PIO needs variables:

    __ResourceIndex

    The Script needs a global VAR

    gResourceIndex:INTEGER;

    }

    CONST

    kStartStringAt = 3000;

    kOK = 1;

    kCancel = 2;

    kImagePopup15 = 15;

    kStaticText28 = 28;

    kStaticText29 = 29;

    kRight = 1;

    kBottom = 2;

    kLeft = 3;

    kResize = 0;

    kShift = 1;

    VAR

    dialog1 :INTEGER;

    gImagePopup15Int :INTEGER;

    gImagePopup15Str :STRING;

    defConListID :LONGINT;

    defConResType :INTEGER;

    defConFoldID :INTEGER;

    defConCount :LONGINT;

    xmlID :LONGINT;

    cnt :INTEGER;

    int :INTEGER;

    boo :BOOLEAN;

    str :STRING;

    ndx :INTEGER;

    iImage:INTEGER;

    FUNCTION ResourceIsOK :BOOLEAN;

    BEGIN

    IF SetVSResourceFile('IP Resources')

    THEN ResourceIsOK := TRUE

    ELSE Message('The "IP Resources" file was not found.');

    END;

    FUNCTION GetPlugInString(ndx :INTEGER) :STRING;

    BEGIN

    CASE ndx OF

    {Static Text}

    3001: GetPlugInString := 'OK';

    3002: GetPlugInString := 'Cancel';

    3003: GetPlugInString := 'Untitled Dialog';

    3028: GetPlugInString := 'Image:';

    3029: GetPlugInString := 'System Color:';

    {Help Text}

    4001: GetPlugInString := 'Accepts dialog data.';

    4002: GetPlugInString := 'Cancels operation without changes.';

    4015: GetPlugInString := 'An image popup control.';

    4028: GetPlugInString := 'Static text control.';

    4029: GetPlugInString := 'Static text control.';

    END;

    END;

    FUNCTION GetStr(ndx :INTEGER) :STRING;

    BEGIN

    GetStr := GetPlugInString(ndx + kStartStringAt);

    END;

    PROCEDURE dialog1_Setup;

    BEGIN

    dialog1 := CreateLayout(GetStr( 3), True, GetStr(kOK), GetStr(kCancel));

    CreateControl (dialog1, kImagePopup15, 10, '', 0);

    CreateStaticText (dialog1, kStaticText28, GetStr(kStaticText28), 12);

    CreateStaticText (dialog1, kStaticText29, GetStr(kStaticText29), 12);

    SetFirstLayoutItem(dialog1, kStaticText29);

    SetBelowItem (dialog1, kStaticText29, kStaticText28, 0, 0);

    SetRightItem (dialog1, kStaticText28, kImagePopup15, 0, 0);

    AlignItemEdge(dialog1, kImagePopup15, kLeft, 222, kShift);

    FOR cnt := 1 TO 6 DO SetHelpString(cnt, GetStr(cnt + 1000));

    END;

    PROCEDURE dialog1_Handler(VAR item :LONGINT; data :LONGINT);

    BEGIN

    CASE item OF

    SetupDialogC:

    BEGIN

    defConResType := 16; {This sets the type of resource to build a list of Symbols. Hatch Definiting is 66}

    defConFoldID := FolderID;

    defConListID := BuildResourceList(defConResType, defConFoldID, SubFolder, defConCount);

    FOR cnt := 1 TO defConCount DO BEGIN

    int := InsertImagePopupResource(dialog1, kImagePopup15, defConListID, cnt);

    END;

    IF p__ResourceIndex

    END;

    kOK:

    BEGIN

    iImage:=GetImagePopupSelectedItem(dialog1, kImagePopup15);

    gResourceIndex:=iImage;

    ImportSymbol:=ImportResourceToCurrentFile(defConListID, iImage);

    IF GetObject(FolderName)=NIL Then

    Begin;

    NameObject(FolderName);

    BeginFolder;

    EndFolder;

    END;

    InsertSymbolInFolder(GetObject(FolderName),ImportSymbol)

    END;

    END;

    END;

    BEGIN

    IF ResourceIsOK THEN dialog1_Setup;

    IF RunLayoutDialog(dialog1, dialog1_Handler) = 1 then BEGIN

    END;

    END;

  2. Thanks for the confirmation on =Area. (FYI it is not in the worksheet of Quatify)

    Can you please also help with the other questions.

    1) How can I use the 'Cost Index' Number in my worksheet so I can use it in a forumla?

    2) Is there any way to do a search to find all the same component type of different wall styles?.

    3) A framing member object Information.

    How can I get the length of a rafter that is on a pitch.

    The =('FramingMember'.'LineLength') returns the plan span.

    The =('FramingMember'.'Pitch') Return a non numeric value.

    Thus I can not use the pitch value to calculate the

    Line 18 of work sheet.

    4) Does VW2012 have slab types for roof faces yet?.

    Lines 11-15 Comment on ComponentArea:

    It seems that the componentArea requires a component index reference. Thus if a component, say timber framing, has a different index in different Wall Style Types then a specific forumla is required for each wall style. This could be a very tedious and time consuming worksheet to create and maintain. If this is the way it is intended then Lines 10-15 of the BIMtest worksheet might be a useful way. It allows you to write the name of a wall style, then adjust the Index number. This will automatically return the wall component name and related areas. This took me a good 2-3 hours to figure out how to get working.

  3. Thanks for the confirmation on =Area. (FYI it is not in the worksheet of Quatify)

    Can you please also help with the other questions.

    1) How can I use the 'Cost Index' Number in my worksheet so I can use it in a forumla?

    2) Is there any way to do a search to find all the same component type of different wall styles?.

    3) A framing member object Information.

    How can I get the length of a rafter that is on a pitch.

    The =('FramingMember'.'LineLength') returns the plan span.

    The =('FramingMember'.'Pitch') Return a non numeric value.

    Thus I can not use the pitch value to calculate the

    Line 18 of work sheet.

    4) Does VW2012 have slab types for roof faces yet?.

    Lines 11-15 Comment on ComponentArea:

    It seems that the componentArea requires a component index reference. Thus if a component, say timber framing, has a different index in different Wall Style Types then a specific forumla is required for each wall style. This could be a very tedious and time consuming worksheet to create and maintain. If this is the way it is intended then Lines 10-15 of the BIMtest worksheet might be a useful way. It allows you to write the name of a wall style, then adjust the Index number. This will automatically return the wall component name and related areas. This took me a good 2-3 hours to figure out how to get working.

  4. I can easily create a Database row and get a list of all wall styles and the related area.

    Cell 1 '=WST' [sum]

    Cell 2 '=WALLAREA_NET'

    This is how easy it should be.

    To make it easy I should continue and

    Cell 3 =('__NNA_Wall_Style_Format'.'Cost Index Code')

    Cell 4 =A2*A3 and I will have an estimate of cost for all the walls.

    Now I try the same for slab. I can't see any way to emulate the same set up for slabs as I can for walls.

    There is no similar 'SlabArea'

    '=WST' does not have a corresponding '=SST'

  5. I hope some one can correct me on this:

    The return of these values in a work sheet is a string and not a number.

    =('__NNA_Wall_Style_Format'.'Cost Index System')

    =('__NNA_Wall_Style_Format'.'Cost Index Code')

    Which means there is no simple way to use a Database spreadsheet to get the area of a wall style and multiply it by a rate in order to get a cost estimate.

  6. Say I have 2 wall styles that use timber framing of 90mm (component name 'TF90' ) but with different claddings.

    I want to be able to get the area of the TF90 from of both wall types.

    What is the formula?.

    I keep getting a 'TYPES' error.

    Also I want to restrict the search only to items on one layer.

    That layer has a VP of all the objects in the file that need to be scheduled thus I need it to find objects in VPs

    OR does your example works for named object only?.

  7. (Why do the users who like VW always feel like we need to disclaim the dissatisfaction before launching in and slamming it?)

    I too think VW is best in class for 2D drawings.

    I think it is also good for 3D and am happy with my renders now.

    The last few sets of drawings every 2D drawing we produced was a live render or section of the 3D model. We used the Automatic Drawing references.

    In many aspects I think VW is very good.

    HOWEVER.

    On the BIM side I'm totally unconvinced.

    Here is an example of a Slab object and a Roof Face object.

    Using '=Perim' the Slab object is double what it should be.

    As an architect, I take a certain level of liability for the information that I issue. On fundamental objects Roofs and Slabs, with a basic return function VW BIM does not work. On such a basic test- how can I trust the information on a complex file?.

    It is quite simple- this has to be sorted by the time BIM schedules are a requirement of service.

  8. BIM = Building Information Model

    Every building has a roof.

    This should be a very easy to answer.

    I'm shocked that there is no out of the box access to the Roof Face data.

    Please some one prove me wrong.

    If you read this post, I ask that you please comment and

    a) correct me,

    or

    b) State in your opinion if you think this is acceptable of a BIM tool.

    ubbthreads.php?ubb=download&Number=7244&filename=Snapshot%202012-05-25%2008-58-33.png

  9. I would like to use a work sheet to return a schedule of 'Framing Members'.

    This PIO has a terrible User Interface, but once you get the hang of it, it is a very useful tool to draw up framing plans in 3D that section nicely with the view ports.

    So far so good. Now lets go one step further and treat this as BIM. Lets pull the data of what we have drawn into a schedule for our builder.

    All we need to do is create a work sheet that gets the cross section of the framing members and return each members length. Should be easy.

    Use Create Report. Add in every record entry for Framing Member and look for Length. Span '=('FramingMember'.'LineLength') 'looks promising, but no that is the PIO line length- it does not consider that the member is pitched...

    (hmm there is overhang also. I know what that does. it means I can set span to relate to the wall position and extend a rafter beyond.... quick test shows if I set the PIO Type to solid beam, this is parameter is no longer accessible. The actual length of my member is span and not span + Overhang- (yet the worksheet retains its value... deal with that later).

    So now how do I BIM this object?.

    Well maybe I can get fancy with my worksheet... Yes they did provide me a =COS() function... The object has =('FramingMember'.'pitch') so this should be easy then.

    I'll get the span in one field, the pitch in another then simply use Trig to sort this out. Should be easy, BUT NO IT WON'T BE!.

    It seems that as the PIO parameter type is an Angle the work sheet nicely includes the '?'. Because this is there the work sheet now thinks this is a text value and not a number so you can not use the COS() function.

    This means that we can't use the COS function on any PIO angle parameter. That is just BRILLIANT!.

    My head is sore from banging it against my desk.

  10. So fumbling around further with the work sheet to get some areas of my objects.

    I have a created a slab type and a simple work sheet to pull the data.

    I want to know my area, thickness volume and perimeter of my slab.

    I have a database criteria of =DATABASE((R IN ['Slab']))

    So one would think that to use =SLABTHICKNESS might work to return my slab thickness.

    One might expect that =PERIM would provide me the perimeter value of the slab.

    HOWEVER

    Slabthinkness does not work.

    Perim needs to be divided by 2.

    How can I trust this software with schedule information?.

×
×
  • Create New...