Syntax

code

Function: DrawOneWayLayout(const AItem: WideString; const SpanLine: ILine; const RunLine: ILine; bIncludeFirst: WordBool; bIncludeLast: WordBool; nSpacing: Double; const AArea: WideString): WordBool;

Description


Function used to perform segment layouts at a specified span, horizontal run, as well as spacing. 

Arguments: 
AItem: WideString
Specifies the area section to assign the layout segments to.

SpanLine: ILine
Direction span start and endpoint.

RunLine: ILine
Horizontal (side to side) run direction of area to populate. Requires a start and endpoint;

bIncludeFirst: WordBool
Specifies whether to include a segment at the "start" run point. Even if it does not fall within the spacing range.

bIncludeLast: WordBool
Specifies whether to include a segment at the "last" run point. Even if it does not fall within the spacing range.

nSpacing: Double
Specifies the "run" spacing used when laying out segment objects.

AArea: WideString (optional parameter)
Specifies a defined "Area Segment" to trim/extend laid segments to. Supply either the path or guid to the area section. Or, empty double-quotes for no trim/extending required.

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

procedure TForm1.psDrawOneWayLayout(Sender: TObject);

var

  ps: IPlanSwift;

  pg,Area,Sect,Seg,est: IItem;

  psline,Span,Run: ILine;

  pt1,pt2: IPoint;

  xscale: Extended;

  S: Integer;

 

begin

   //Get Planswift Interface

  ps := CoPlanswift.Create;

 

  //Get the Selected Page

  pg := ps.SelectedPage;

  //Get the XScale of the page

  xscale := pg.GetPropertyResultAsFloat('ScaleX',0);

  // 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 Span And Run Lines

  Span := ps.GetLine('Draw Span');

  Run := ps.GetLine('Draw Run');

  //Get OneWayLayout (Dras Segment lines in one direction)

  ps.DrawOneWayLayout(Seg.GUID,span,Run,True,True,s,sect.guid);

 

  //Free the Planswift Interface

  ps := nil;

end;