SelectionList
Returns an ISelectionList object of all the selected items.
Syntax:
Procedure:Â SelectionList: ISelectionList;
Code Reference:
- Create a New Form application
- Add a button to the form
- Add PlanSwift to reference (Planswift9_tlb in the uses)
- Copy code to button onclick event
API Calls
Delphi
PlanSwift Code:
tmp := ''
sl := planswift.selectionlist;
for ndx := 0 to sl.count -1 do
tmp := tmp + sl.items(ndx).name + #13#10;
showmessage(tmp);
FreshDesk Code:
procedure TForm1.psSelectionList(Sender: TObject);
var
ps: IPlanSwift;
est,Area,Sect,Seg: IItem;
psline: ILine;
pt1,pt2: IPoint;
S: Integer;
slst: ISelectionList;
I: Integer;
cpt: IPoint;
NSect: IItem;
ii: Integer;
sPoint: IPoint;
begin
//Get Planswift Interface
ps := CoPlanswift.Create;
// Get the Takeoff Folder (Estimating Tab in Planswift);
Est := ps.GetItem('Job\Takeoff');
//Create a New Area Item in the Estimating Tab
Area := Est.NewItem('Area','Get Rect Demo');
//Create a new Section for the Area
sect := Area.NewSection('Get Rect Demo Section');
//Call the Get Rect functions
psline := ps.GetRect('Draw Area');
//Get the two points from the iLine Returned by the GetRect function
pt1 := psline.Point1;
pt2 := psline.Point2;
//Add Points to section to create a box
sect.NewPoint(pt1.X,pt1.y);
sect.NewPoint(pt2.X,pt1.y);
sect.NewPoint(pt2.X,pt2.y);
sect.NewPoint(pt1.X,pt2.y);
sect.NewPoint(pt1.X,pt1.y);
//Create Line Segment Item
seg := Area.NewItem('Segment','Draw One Way Demo');
//input Spacing
S := StrToInt(inputBox('Enter Spacing','Enter Spacing','24'));
//Get TwoWayLayout (Dras Segment lines in one direction)
ps.GetTwoWayLayout(Seg.GUID,'Draw Span','Draw Run',True,True,s,sect.guid);
//Show Message to have user select Drawn Items
ShowMessage('Select the Drawn Area With Segments then Press OK');
// Get the Selection List From Planswift
slst := ps.SelectionList;
//Set a Point to copy the sections too
cpt := ps.GetPoint('Set Point To Copy Too');
//check if selection list has items
if Slst.Count > 0 then Begin
//cycle through slection list by Index
for I := 0 to slst.Count - 1 do begin
//Get the item in the list from index
sect := slst.Items[i];
//Create a new Section on the parent Item
NSect := sect.ParentItem.NewSection('Copied Section');
//cycle thorugh the points of section
for ii := 0 to ps.PointCount(sect.GUID) - 1 do begin
//Get the point in the item by index
sPoint := sect.GetPoint(ii);
//set new point at selected point Location
sect.NewPoint(cpt.X + sPoint.X,cpt.Y + sPoint.y);
end;
end;
end;
//Free the Planswift Interface
ps := nil;
end;
C#
public class PlanswiftApi
{
private PlanSwift Planswift { get; }
public PlanSwiftApi()
{
Planswift = new PlanSwift();
}
}
VB/VBA (OLE)