GetTwoWayLayout
Function used to perform segment layouts (in 2 directions) at a specified span, horizontal run, as well as spacing.
Syntax:
Procedure:Â GetTwoWayLayout(const AItem: WideString; const sSpanHint: WideString; const sRunHint: WideString; bIncludeFirst: WordBool; bIncludeLast: WordBool; nSpacing: Double; const AArea: WideString): WordBool;
Arguments:Â
AItem: WideString
Specifies the area section to assign the layout segments to.
sSpanHint: WideString
Hint to user on mouse cursor specifying to select the span line.
sRunHint: WideString
Hint to user on mouse cursor specifying to select the run line.
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:
- 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:
var
aItem : string;
bIncludeFirst : boolean;
bIncludeLast : boolean;
nSpacing : double;
aAreaSection : string;
begin
// create a new "parent" area section...
aItem := NewItem('\Job\Takeoff', 'Segment', 'Name');
// 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.GetTwoWayLayout(aItem, 'Select the Span Line...', 'Select the Run Line...', bIncludeFirst, bIncludeLast, nSpacing, aAreaSection);
end;
//FreshDesk Code:
procedure TForm1.psGetTwoWayLayout(Sender: TObject);
var
ps: IPlanSwift;
est,Area,Sect,Seg: IItem;
psline: ILine;
pt1,pt2: IPoint;
S: Integer;
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);
//Free the Planswift Interface
ps := nil;
end;
C#
public class PlanswiftApi
{
private PlanSwift Planswift { get; }
public PlanSwiftApi()
{
Planswift = new PlanSwift();
}
}
VB/VBA (OLE)