Author: admin

  • Memo 50: When coordinating with others, you have to charge; When the scope changes, your price need not change simply

    When coordinating with others, you have to charge; When the scope changes, you price need not change simply;

    (A) Prices need not be reduced by crossing out a line item

    Please see below:

    Hi Koshy,

    Sorry to do this, but we will need to remove line item 5 from the invoice. The structural steel components of Lift 11 have already been modeled by a different company. We will be receiving the model soon and will send that to you to work on the other parts of the scope that you priced for.

    Do you mind sending through an invoice without Line item 5 so we can put it through with this months invoices?

    This is not uncommon. Clients are wont to shop around for the lowest price. Which I don’t mind.

    Except it is a PITA to manage with admin, invoicing and purchase orders. Second, when I price a job, I look at the overall make-up of a job. If they remove an item, piecemeal, then that changes the make-up, of the job entirely – viz you can think of it like this: e.g. when you go to MacDonald’s you can purchase the following individually:

    1. Burger – $8
    2. Fries – $4
    3. Coke – $2
    4. Total: $14 (as separately priced items)

    or you can purchase them in a combination for $10 for example (discount):

    1. Burger – $3
    2. Fries – $4
    3. Coke – $4
    4. Combination: $10

    And then after you agree on purchasing all three, imagine then a customer cuts the scope and says: “actually I only want the burger”……………. Well then if you want just the burger, the price does not remain at $3, it will have to rise to $8. You do not have to cut the price in line, if the customer changes the scope. If I can afford to drop the customer, then I may refuse the discount entirely – and ask the customer to take the entire job elsewhere. I suppose this puts a spanner in the customer’s works, but then again, so is being a clever dick by asking for a job in bulk and then cherry picking parts by price after one has already been given in bulk, and asking others to manage the coordination overheads. And if the client says they will “manage” it – what if they miss something? Of course, at that stage, then you have to raise the matter.

    (B) The Risks of Coordinating with Others

    • The second thing to note – if you are coordinating with someone else’s work – who is responsible for making it work?
    • If their work is wrong, will it not delay my portion of the work? Will it not cause problems and add costs?
    • If there is a problem, then I want to be remunerated for finding out that a problem exists, pointing it out, and also providing the solution.

    There is a coordination cost involved when dealing with others. Which I hate doing because I cannot control a third party – I have no idea if they are using the latest drawings, or have captured all the information required in order to make the job successful.

    Here is my reply:

    Please find attached an invoice with a credit note applied – i.e. line item 5 eliminated.

    Please note there may be coordination overheads associated with managing third party drafties and their models – that may be something we can address if such a need arises.

    any issues pls LMK.

    And the client respond as such:

    Hi Koshy,

    Yes, no worries. We will see how we go.

    Thanks,

    Very good – our client understands this. We have asked permission and warned him in advance that the coordination costs exist, and the client has agreed. We are experts at managing coordination, and do not be shy about charging for that expertise. It is better than our clients pay our invoices than for their job to meet with disaster because there were too many chefs in the kitchen – or worse, that there weren’t any chefs there at all


    My philosophy is this – getting two detailers to manage a job is one too many. It must either go entirely to the other guy, or entirely to us. There is a very significant coordination cost associated with this, and that cannot come for free. Remember, a house divided by two detailers cannot stand.

  • Bubble Deck Sample Drawings

    Typical Details Provided by Client

    Temp Hand Rail 280 thk with Set down, Rebate on Final Slab for curtain wall

    BD280 Typical Section (Includes 50 mm set down)

    CAST IN U BAR

    LOOSE U BAR

    TYPICAL SPLICE DETAIL

    UPSTAND

    Sample Drawings

    Panel with Upstand, Shear Lig, Hand rail tube

    Note the shear lig legend, and the color.

    Note schedule for upstand Volume, Biscuit volume

    Note how shear ligs are dimensioned

    Panel with Radius, circular pillar with shear lig

  • How to Scope your project, and why?

    Why scope?

    • To define an outcome, and to define a problem.
    • To give clients certain on what they’re getting: price, quality and timeline.
    • To sell yourself as capable to do the job.
    • To fix resources. Everything costs time, money and skill. You will need to allocate resources to get the outcome.

    Scope must be white listed in.

    • If you don’t white list something IN, then new items will CREEP in. This is called “scope creep”. If this happens, and you are being constrained by resources, this means you haven’t accounted for it in the above step(s). Perhaps the entire job needs to be de-scoped.
    • Without a scope, you are handing over a blank cheque. DON”T DO THIS. Clients want people to make a good margin.
    • White-listing also forces everyone to be clear on what they want.

    Clear Unambiguous Objective:

    • If you can’t quantify it, then you have a problem.
    • Scoping will help the client to be satisfied, which is the ultimate objective.

    Summary:

    • Scoping allows you to make resourcing decisions to meet an outcome.
    • Gives you happy clients.
  • How to do some simple projections via AutoCAD’s .net API

    How to do some simple projections via AutoCAD’s .net API

    Projections via AutoCAD’s .net API can be confusing. You need to specify a direction, and a plane, upon which you can project a point to. It can be confusing unless it’s clearly spelled out with an example: see below.:

    // insert the usual references
    
    
    Document doc = Application.DocumentManager.MdiActiveDocument;
    Database db = doc.Database;
    
    using (Transaction tr = db.TransactionManager.StartTransaction())
    {
        BlockTable blockTable = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
        BlockTableRecord modelSpace = tr.GetObject(blockTable[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
    
        // the original originalLine
        using (Line originalLine = new Line(Point3d.Origin, new Point3d(5, 5, 0)))
        {
            modelSpace.AppendEntity(originalLine);
            tr.AddNewlyCreatedDBObject(originalLine, true);
    
            // but we want to project it ONTO a plane.
            Plane plane = new Plane(Point3d.Origin,  new Vector3d(0,1,0));
    
            // project the originalLine onto a plane.
            Matrix3d projection = Matrix3d.Projection(plane, - Vector3d.YAxis);                            
    
            Line projectedLine = new Line(originalLine.StartPoint.TransformBy(projection), originalLine.EndPoint.Project(plane, -1 * Vector3d.YAxis));
            plane.Dispose();
    
    
            modelSpace.AppendEntity(projectedLine);
            tr.AddNewlyCreatedDBObject(projectedLine, true);                            
        }
    
        tr.Commit();
    }
  • Design Guide for Galvanizers for Design Guide for Hot Dip Galvanizing – best practice venting and draining.

    Design Guide for Hot Dip Galvanizing - best practice venting and draining
    Design Guide for Hot Dip Galvanizing – best practice venting and draining

    This document outlines the design guide for detailers to provide venting and draining holes for galvanizing.

  • Major Project in Australia

    Ammaroo Phosphate Project

    Australia-Asia Power Link (AAPowerLink)

    Australia-Asia Power Link (AAPowerLink)

    Bonaparte Carbon Capture and Storage ProjectPty Ltd

    Broken Hill Cobalt Project

    Cape Hardy Green Hydrogen Projec

    Gonneville Critical Minerals Project

    Goschen Rare Earth Mineral Sands Project

    Kalgoorlie Nickel Project

    Download Excel

  • Steel Detailing Tips – How to fix “path” too long errors

    Steel Detailing Tips – How to fix “path” too long errors

    In the construction business – you will often find yourself zipping / unzipping large sets of documents, and copying them from A to B etc. Often when dealing with deeply nested folder structures, you will get an error – regarding long path names. Like this:

    Path too long error.

    This is especially annoying if you are copying large sets of documents.

    Ordinarily I would suggest that clients avoid deeply nested folder structures – but then I thought: who am I to presume to how anyone should structure their affairs?

    Why not allow for long file paths in the first place? This is how you can do it?

    • Open PowerShell in Adminstrator mode:
    • In the Administrator terminal, run the following command by cutting and pasting the following:

    Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1

    Here’s how to open the terminal in admin mode:

    • So to the Windows search bar.
    • Type in “Powershell”
    • Then click on “Run as administrator”

    How you can unzip deeply nested folder structures, in your own deeply nested folder.

    • Restart your computer.
  • Tekla Open API: How to access a Tekla Model Object from the Equivalent Object in a Drawing?

    Tekla Open API: How to access a Tekla Model Object from the Equivalent Object in a Drawing?

    The trick is to use to the drawing’s “PartIdentifier” to select the relevant object in the model space.

    Once you’ve done that, you can query the model object for whatever you want.

    Here is a code sample I’ve extracted from one of our Tekla API Applications. The basic steps:

    • Get the Drawing
    • Get the part identifier
    • Select it in the model
    SinglePartDrawing singlePartDrawing = (SinglePartDrawing)drawing;
    Tekla.Structures.Model.ModelObject modelObject = model.SelectModelObject(singlePartDrawing.PartIdentifier);
    Tekla.Structures.Model.Part part = (Tekla.Structures.Model.Part)modelObject;