Syntax

code

Function: SelectionList: ISelectionList;

Description

Returns an ISelectionList object of all the selected items.

Code Reference

  • 1. Create a New Form application
  • 2. Add a button to the form
  • 3. add Planswift to reference (Planswift9_tlb in the uses)
  • 4. copy code to button onclick event

code

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

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;