Jump to content

rebu1985

Member
  • Posts

    33
  • Joined

  • Last visited

Posts posted by rebu1985

  1. Hi Jesse,
    I have attached some images.

    The first and second images show the script working properly, all the elements are located in a one layer and the script works.

    The third and fourth images show the script without working. I have copied all the elements to others layers and it doesnt work.
    I am using Vectoworks 2020 and i am using a personal workspace but i have the same problem when i am working on the architect workspace. When i am working on personal drawings with a lot of information it doesnt work either.

     

    Captura1.1.JPG

    Captura1.2.JPG

    Captura1.3.JPG

    Captura1.4.JPG

  2. Hi guys,

    I write you because in a newer version of vectorworks I cant run the scrip properly and I dont know why.

    I have used Pat¬īs scrip in VW2015 but in version 2020 I have the problems of selecting the layers, the only option I can do is selecting all/none. Can you help me, guys?

     

    PROCEDURE LB_LayerList;

    VAR
    B1:boolean;
    dialog1 : LongInt;
    kImageCheck,kImageBlank,kImageSheet,kImageView : Integer;
    LayerArray : DYNARRAY[] of String;
    NumLayers, N1, CheckedLayers : Integer;

    FirstObjectToCopy : Handle;
    ThisObjectToCopy : Handle;

    LayerToCopyFrom : Handle;
    LayerNameToCopyFrom : String;
    ThisLayer : String;
    ThisDuplicate : Handle;

    {-----------------------------------------------------------------------------}
    FUNCTION GetPlugInString(ndx :INTEGER) :STRING;
            BEGIN
                CASE ndx OF
                    {Static Text}
                    3001: GetPlugInString := 'OK';
                    3002: GetPlugInString := 'Cancel';
                    3003: GetPlugInString := 'Layers';
                END;
            END;
    {----------------------------------------------------------------------------} 
        PROCEDURE Dialog_Setup;
            VAR
                cnt : INTEGER;
                BSB : Boolean;
            BEGIN
                dialog1 := CreateResizableLayout (GetPlugInString(3003),TRUE,GetPlugInString(3001),GetPlugInString(3002),TRUE,TRUE);
                CreateLB(dialog1,4,34,15);
                        
                
                CreatePushButton(dialog1,5,'All');
                CreatePushButton(dialog1,6,'None');

                SetFirstLayoutItem(dialog1, 4);
                SetBelowItem(dialog1,4,5,0,0);
                SetBelowItem(dialog1,4,6,0,0);
                SetRightItem(dialog1,5,6,0,0);

                SetEdgeBinding(dialog1,5,False,False,False,True);
                SetEdgeBinding(dialog1,6,False,False,False,True);

            END;

    {-----------------------------------------------------------------------------}

        PROCEDURE Dialog_Handler(VAR item :LONGINT; data :LONGINT);
            Var
                ColNum,TempI,I : Integer;
                SheetTypeIcon : Integer;
                BSB : Boolean;
                BSS : String;
                LayerHand : Handle;
                LayerName,SelectedIconString : String;
                SheetIconNumber,SelectedIconNumber : Integer;
                
            BEGIN
                CASE item OF
                    SetupDialogC: 
                        BEGIN
                        {These need to be declared as globals otherwise they won't work outside of setup.}
                        kImageCheck := AddLBImage(dialog1,4,1,11022);
                        kImageBlank := AddLBImage(dialog1,4,1,11023);
                        kImageSheet := AddLBImage(dialog1,4,1,11024);
                        kImageView := AddLBImage(dialog1,4,1,11025);
                        
                        ColNum := InsertLBColumn(dialog1,4,0,'Copy To',50);
                        BSB := SetLBControlType(dialog1,4,ColNum,3);
                        BSB := SetLBItemDisplayType(dialog1,4,ColNum,1);
                        BSB := SetLBColumnWidth(dialog1,4,0,0,20);

                        {ColNum := InsertLBColumn(dialog1,4,0,'',50);}{This crashes VW}
                        
                        ColNum := InsertLBColumn(dialog1,4,1,'Layer Name',100);
                        BSB := SetLBControlType(dialog1,4,ColNum,1);
                        BSB := SetLBItemDisplayType(dialog1,4,ColNum,3);
                        BSB := SetLBColumnWidth(dialog1,4,1,1,200);
                    
                        ColNum := InsertLBColumnDataItem(dialog1,4,0,'Checked',kImageCheck,-1,0);
                        ColNum := InsertLBColumnDataItem(dialog1,4,0,'UnChecked',kImageBlank,-1,0);
                        
                        {Traversing from LLayer by PrevObj doesn't work with Sheet Layers}
                        LayerHand := FLayer;
                        I := 0;
                        
                        While LayerHand <> NiL do
                            Begin
                                If GetObjectVariableInt(LayerHand,154) = 2 then
                                    SheetTypeIcon := kImageSheet
                                else    SheetTypeIcon := kImageView;
                                
                                ColNum := InsertLBColumnDataItem(dialog1,4,1,GetLName(LayerHand),SheetTypeIcon,SheetTypeIcon,0);
                                TempI := InsertLBItem (dialog1, 4, I, GetLName(LayerHand));
                                BSB := SetLBItemUsingColumnDataItem (dialog1, 4, I, 1, ColNum);
                                BSB := SetLBItemUsingColumnDataItem (dialog1, 4, I, 0, 1);
                                I := I+1;
                                LayerHand := NextObj(LayerHand);
                            End;
                        
                        
                        EnableLBColumnLines(dialog1,4,True);
                        END;
                    1:    BEGIN
                            NumLayers:=GetNumLBItems(dialog1,4);
                            CheckedLayers:=0;
                            Allocate LayerArray[1..NumLayers];
                            For I := 1 to NumLayers do 
                                Begin
                                    BSB := GetLBItemInfo(dialog1,4,I-1,1,LayerName,SheetIconNumber);
                                    BSB := GetLBItemInfo(dialog1,4,I-1,0,SelectedIconString,SelectedIconNumber);
                                    If SelectedIconString = 'Checked' then
                                        Begin
                                            CheckedLayers := CheckedLayers+1;
                                            If SheetIconNumber = kImageSheet then
                                            LayerArray[CheckedLayers]:=LayerName;
                    
                                            If SheetIconNumber = kImageView then 
                                                LayerArray[CheckedLayers]:=LayerName;
                                        End;        {If}
                                End;        {For}
                        End;        {1}

                    5:    Begin       
                            For i:=0 to GetNumLBItems(dialog1, 4)Do 
                                Begin
                                    BSB:=SetLBItemInfo(dialog1,4,i,0,'Checked',kImageCheck);
                                End;        {For}
                        End;        {5}

                    6:    Begin
                            For I := 0 to GetNumLBItems(dialog1,4) do
                                Begin
                                    BSB:=SetLBItemInfo(dialog1,4,i,0,'Unchecked',kImageBlank);
                                end;        {For}
                        end;        {6}

                END; {Case}
                BSB:=RefreshLB(dialog1,4);
            END; {Procedure}
    {-----------------------------------------------------------------------------}

        function ResourceIsOK :BOOLEAN;
            BEGIN
                IF SetVSResourceFile('IP Resources') 
                    THEN ResourceIsOK := TRUE
                ELSE Message('The "IP Resources" file was not found.');
            END;
    {-----------------------------------------------------------------------------}

    BEGIN {Main}
        FirstObjectToCopy := FSActLayer;
        LayerToCopyFrom := ActLayer;
        LayerNameToCopyFrom := GetLName(LayerToCopyFrom);

        IF ResourceIsOK THEN Dialog_Setup;
        IF RunLayoutDialog(dialog1,Dialog_Handler) = 1 THEN 
            BEGIN
                SysBeep;
                For N1 := 1 to CheckedLayers do
                    Begin
                        ThisLayer:=LayerArray[N1];
                        If ThisLayer <> LayerNameToCopyFrom Then
                            Begin
                                ThisObjectToCopy := FirstObjectToCopy;
                                While ThisObjectToCopy <> Nil do
                                    Begin
                                        ThisDuplicate := CreateDuplicateObject(ThisObjectToCopy,GetLayerByName(ThisLayer));
                                        ThisObjectToCopy := NextSObj(ThisObjectToCopy);
                                    End;
                            End; {If}
                    End; {For}
            END; {If}
        Wait(1);
        ClrMessage;

    END;

    Run(LB_LayerList);
     

  3. I have tried to do that but when I work with Database, the reference doesnt indicate the subrow, just indicate the total of the sum value/item. I would like to indice 'Worksheet-1':A4.1 but it doesnt work.
    I have resolved it creating two record formats, left and right openings and applying the record format manually to the doors and i dont need to reference the file.

  4. Hi guys, 

    I am trying to reference cells from different worksheet to obtain the total of doors in a project. The only way that i know its just create a worksheet an copy all the information from the others worksheets. But i am a bit scared of lossing information when i am going to change something because the cells are not connected between them, they are copied.
     

    I am going to attach some images.

    The image 1 includes cells copied from the database of the others images.

    Captura1-Puertas.JPG

    Captura2-Puertas.JPG

    Captura3-Puertas.JPG

  5. Hi guys,

     

    I have a file A and I have a file B. The file B contains imported layers from file A where all layers are locked because I need to use in Lumion but at the same time it needs to be updated to show the external facade.

    My problem is when i try to change a class, wall, component, etc on file B because i need for Lumion, automatically it is disappearing when the external reference is updated. If it is any way to keep the new changes on the file B without changing by file A external reference updated?

     

    Thanks guys!

  6. Hi guys,

    I would like to know if it is possible to show the information from a layer link in a referenced file. 

    I have a file referenced to another one, where i just want to show the exterior facade. On the other one, the floors are done by layer links because all floors are duplicated.

    But when i open the file and active all exterior elements (wall, windows, doors, etc.), classes, and all layers, it doesnt show it.

  7. Hi guys,

     

    I would like to know if there is anyway to indicate tolerance in walls. When i have created walls in different layers or stories, the front view shows a line between them when they should be aligned.

    You can find below an image of my elevation where i have indicated in yellow the line as partition wall when it should be continuos because they are in the same plane (aligned).

     

    Thank you guys,

    Captura.PNG

  8. Hi guys,

     

    I have create simple rectangles with different start points. You can see below a sample of a rectangle.I would like to create at the same time a square filled in red which shows me the start point of the rectangle.

    I have attached an image which shows different options of start point where i would like to locate the red square.

    I need a reference point on the shape in case i need to rotate, move, etc.

     

    Thank you so much,

     

    PROCEDURE Rectangle;

    VAR     

    bc_ht,bc_wid        : REAL;     

    use_border,result : BOOLEAN;     

    objname                        : STRING;     

    oh,rh,wh                    : HANDLE;     

     

    BEGIN       

    result:= GetCustomObjectInfo(objname,oh,rh,wh);   

     

    IF result THEN BEGIN         

    bc_ht                := PBOXWIDTH;         

    bc_wid            := PLINELENGTH;         

    use_border    := PUSE_BORDER;     

       

    IF use_border THEN

    BEGIN             PushAttrs;             

    FillPat(0);             

    Rect(0,bc_ht/2,bc_wid,-(bc_ht/2));             

    PopAttrs;         

     

    END;     

    END;

    END;

    Run(Rectangle);

     

    Captura de pantalla 2017-11-22 a las 10.43.36.png

  9. Hi Pat,

    I am going to explain it again but you are right. Sorry for my english.

     

    I work in 2d all time and both symbols (floor and elevation) and done in plan view 2d. I would like to show a copy of the respective elevation of the window in top view which i have drawn when i click on the window top plan which i have drawn as well on the  top view.

    I have drawn manually around symbols of 30 windows which their elevations. All of them have records formats so i think the best way as you said in connect them by a field and place a copy of the elevation symbol but i dont know how I can do it.

     

    Thanks Pat,

  10. Hi guys,

     

    I was wondering if it is possible to show on the drawing a symbol which i have created when I click on another symbol or write a name located on the record format of another symbol by a vectorscript.

    I have drawn a basic window shape with some information associated by a record format. At the same time I have drawn the elevation of that window. Both are different symbols. I would like to show on the drawing the elevation when i click on the window by a vectorscript. I have around 20 windows so the idea is to have a general vectorscript to show them or writing something of the record format.

    I have attached below an image of the idea.

     

    Thank you so much guys for your help.

    Captura de pantalla 2017-11-17 a las 9.58.13.png

  11. I found this topic online and I would like to copy in case someone can help me.

    "I would like to see the introduction of Rounding Precision similar to that of Dimensions however for Spaces:

    It is custom here to round off to the nearest square meter however I still want to see when drafting exactly what size the space has with at least an accuracy of 2 decimals."

     

    Im counting manually different areas within spaces to calculate the total square meters in a house and it is not the same value than in my worksheet when VW calculates the total. Is it possible to change it?
    Thanks, xx

  12. Hi guys,

     

    I would like to try to get a function or script which helps me to calculate automatically the final value attached to the end of a line adding pre-values along the path. As you can see guys below, depends on the value at the end of a line, the script should recognize the value range and show on the drawing the correct diameter dimension/text.

    I was thinking if its possible to attach a record format at the beginning of the paths when you select all the lines and create a script which recognize the lines intersections and show the correct value.


    Thanks guys!!

    Captura de pantalla 2017-04-25 a las 12.13.35.png

  13. Hi guys,

     

    I have done a script to hide some fields of the default PIO 'Desk' because I just need some parameters to work. The plug-in is compiled right but when its not working because nothing is done. My version is VW14.

    My idea is to create different script for default PIO doors and windows but using a few parameters. 

     

    My script is below:

     

     

    PROCEDURE Modifydesk;
    VAR
    objHd: HANDLE;

    BEGIN
    objHd:= GetObject('Desk');

        IF objHd=NIL THEN 
        EnableParameter(objHd, 'Leg Height', FALSE);
        SetParameterVisibility(objHd, 'Leg Height', FALSE);
    END;
    RUN (Modifydesk);

  14. Hi guys,

     

    I have created a predefined text style to use in my standard dimensions options. I was checking to change the text style manually and i cant do it because when i try it the text style changes to a new undefined one. I would like to know if its possible to create a script with modify any text style (font, size, etc) by myself. I was checking the function 'SetTextStyle' but i am not sure if its the correct one.

     

    For example: I have a text style called dimensions with Arial 8pt and bold and i would like to change by Calibri 10 pt and not font style.

     

    Thanks!!

  15. Hi MullinRJ,

     

    I have been working on your comments to do my script and i have done this. I still have some mistakes and i guess its about the array function.

    Could you help me, please?

     

     

    PROCEDURE dialogl_Main;
        VAR
        dialog1 : INTEGER;

        PROCEDURE dialog1_Setup;
        BEGIN
            dialog1 := CreateLayout( 'CreateListBox', FALSE, 'OK', 'Cancel' );
            CreateListBoxN( dialog1, 4, 30, 10, TRUE );
            SetFirstLayoutItem( dialog1, 4 );
        END;

        PROCEDURE Dialog_Handler(VAR item :LONGINT; data :LONGINT);
        VAR
        i        : INTEGER;
        nl        : INTEGER;
        layers    : DYNARRAY OF STRING;
        h        : HANDLE;
        
        BEGIN
            CASE item OF
                SetupDialogC:
                BEGIN
                    
                    AddChoice( dialog1, 4, 'PLANTA 1', 0 );
                    AddChoice( dialog1, 4, 'PLANTA 2', 0 );
                    AddChoice( dialog1, 4, 'PLANTA 3', 0 );
                    
                END;
            1:    BEGIN
                GetSelectedChoiceInfo(dialog1, 4, 1, i, layers);
                END;
            4:    BEGIN
                nl:=NumLayers;
                Layers:=GetLNAME (h);
                DoMenuTextByName('Copy', 0);
                FOR i:=1 TO nl DO BEGIN
                DoMenuTextByName('Paste In Place', 0);
            END;
        END;

    BEGIN
        dialog1_Setup;
        IF RunLayoutDialog(dialog1, Dialog_Handler) = 1 THEN BEGIN
    END;

    RUN(dialogl_Main);

  16. hi guys,

     

    I have created my dialog code for copying objects to selected layers.

    All info which i have found its about copying objects to all layers but i would like to know how to do it if I just wanna duplicate to selected ones. I dont know how the script should be to transfer the info from the dialog to the object.

     

    PROCEDURE CreateDialog;

    VAR result : INTEGER;

    id : INTEGER;

    BEGIN

    id := CreateLayout('Revise Layer Link',TRUE,'ok', 'Cancel');

    CreateStaticText(id,4,'Layers:',-1);

    CreatePulldownMenu(id,5,32);

    CreateGroupBox(id,6,'Layers Options',TRUE);

    CreateCheckBox(id,7,'Planta Sótano');

    CreateCheckBox(id,8,'Planta Baja');

    CreateCheckBox(id,9,'Planta 1');

    CreateCheckBox(id,10,'Planta 2');

    CreateCheckBox(id,11,'Planta 3');

    CreateCheckBox(id,12,'Planta 4');

    CreateCheckBox(id,13,'Planta 5');

    CreateCheckBox(id,14,'Planta 6');

    CreateCheckBox(id,15,'Planta 7');

    CreateCheckBox(id,16,'Planta 8');

    CreateCheckBox(id,17,'Planta Atico');

    CreateCheckBox(id,18,'Planta Cubierta');

    SetFirstLayoutItem(id, 4);

    SetBelowItem (id,4,6,0,0);

    SetFirstGroupItem(id,6,7);

    SetBelowItem (id,7,8,0,0);

    SetBelowItem (id,8,9,0,0);

    SetBelowItem (id,9,10,0,0);

    SetBelowItem (id,10,11,0,0);

    SetBelowItem (id,11,12,0,0);

    SetBelowItem (id,12,13,0,0);

    SetBelowItem (id,13,14,0,0);

    SetBelowItem (id,14,15,0,0);

    SetBelowItem (id,15,16,0,0);

    SetBelowItem (id,16,17,0,0);

    SetBelowItem (id,17,18,0,0);

    SetBelowItem(id,18,30,0,0);

    SetBelowItem(id,30,40,0,0);

    result := RunLayoutDialog(id,NIL) END;
    RUN (CreateDialog);

     

√ó
√ó
  • Create New...