
rebu1985
-
Posts
33 -
Joined
-
Last visited
Content Type
Profiles
Forums
Events
Articles
Marionette
Store
Posts posted by rebu1985
-
-
Hi Jesse,
I was checking the differents files and i checked that when you activate the visible mode on the layer on the navigation menu the script works.
-
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. -
-
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);
-
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. -
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.
-
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!
-
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.
-
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,
-
-
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);
-
Thank you so much Pat,
I have used it and it is working perfect! It is what i need it. thanks again!!
-
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,
-
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.
-
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 -
Im using VW 2014 version, so I cant use marionette tool
-
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!! -
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); -
Thanks guys, i was checking the Resource Browser as you mentioned and it´s true, its really easy to do it manually!!
-
Im using the VW 14 and the only options to choose are Apply, Import and Reference in the Resource Browser so I cant modify manually.
-
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!!
-
Thanks for your help guys,
Finally I got it! I am carry on checking more scripts. I am so addictive now!! I want to learn more and more!!
-
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);
-
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);
PASTE IN PLACE OBJECT(S) ON SELECTED LAYERS
in Vectorscript
Posted
Thanks guys, now it is working. 🙂