To open any link in a new tab, preserving your position in the current article, just hold down the <CTRL> key on your keyboard before clicking the link or click using your mouse wheel.



Function used to perform segment layouts (in 2 directions ) at a specified span, horizontal run, as well as spacing.


Procedure: DrawTwoWayLayout(const AItem: WideString; const SpanLine: ILine; const RunLine: ILine; bIncludeFirst: 

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 (globally unique identifier) 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

API Calls


Using PlanSwift Object Model
//PlanSwift code:
  aItem         : string;
  oSpanLine     : ILine;
  oRunLine      : ILine;
  bIncludeFirst : boolean;
  bIncludeLast  : boolean;
  nSpacing      : double;
  aAreaSection  : string;
  // create a new "parent" area section...
  aItem := NewItem('\Job\Takeoff', 'Segment', 'Name');

  // direction of segments being created...
  oSpanLine := PlanSwift.GetLine('Select Span');

  // direction of "run" of segments based on spacing...
  oRunLine := PlanSwift.GetLine('Select Run');

  // place or ignore segment at run "start" point...
  bIncludeFirst := FALSE; // (T/F)...

  // place or ignore segment at run "end" point...
  bIncludeLast := FALSE; // (T/F)...

  // spacing (inches) used when creating segments...
  nSpacing := 24; // 12, 16, 24...

  // either create or select a area section to trim or extend to...
  aAreaSection := SelectedItem();

  // Function that lays the sticks (2 ways)...
  PlanSwift.DrawTwoWayLayout(aItem, oSpanLine, oRunLine, bIncludeFirst, bIncludeLast, nSpacing, aAreaSection);

//FreshDesk Code:
procedure TForm1.psDrawTwoWayLayout(Sender: TObject);
  ps: IPlanSwift;
  Est,Area,sect,seg: IItem;
  psline,span,run: ILine;
  pt1,pt2: IPoint;
  pg: IItem;
  xscale: Extended;
  S: Integer;
   //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
  //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');
  //Draw TwoWayLayout (Dras Segment lines in one direction)
  //Free the Planswift Interface
  ps := nil;


Using IItem Object Model
public class PlanswiftApi
    private PlanSwift Planswift { get; }
    public PlanSwiftApi()
        Planswift = new PlanSwift();
Using PlanSwift Object Model
Coming soon


Using IItem Object Model
Coming soon
Using PlanSwift Object Model
Coming soon

Copyright 2023 ConstructConnect