IMdAdvancedLine

This class represents a modeler procedure for creating a Advanced line.

There are several properties used with Line creation modes:

  1. cmMod2Points
  2. cmMod2Curves
  3. cmModPointToCurveFace
  4. cmModPointFromCurveFace
  5. cmModByDirection

Namespace

interop.CimMdlrAPI

Compatibility

Cimatron 2024 or later

Properties

Get, Set

FirstEntity

interop.CimMdlrAPI.ICimEntity

Get, Set

SecondEntity

interop.CimMdlrAPI.ICimEntity

Get, Set

Mode

interop.CimMdlrAPI.eMdAdvancedLineMode

Get, Set

ChainOption

interop.CimMdlrAPI.eMdChainOption

Get, Set

IsOpen

int

Get, Set

FirstEntityTangNormal

interop.CimMdlrAPI.eMdTangentNormalOption

Get, Set

SecondEntityTangNormal

interop.CimMdlrAPI.eMdTangentNormalOption

Get, Set

EntityTangNormal

interop.CimMdlrAPI.eMdTangentNormalOption

Get, Set

PointsArray

System.Object[]

Get, Set

Length

double

Get, Set

DirectionVector

double[]

Get, Set

FirstPoint

interop.CimMdlrAPI.IPointData

Get, Set

LengthsArray

double[]

Get, Set

FlipArrow

int

Get, Set

FirstEntityPickPoint

interop.CimMdlrAPI.IPointData

Get, Set

SecondEntityPickPoint

interop.CimMdlrAPI.IPointData

Methods

None

Events

None 

Remarks

None

Example

Mode 1-cmMod2PointsMode 1-cmMod2Points
    // create Cimatron App Access object 
    interop.CimAppAccess.AppAccess aAppAccess = new interop.CimAppAccess.AppAccess();
    //Get application object from App access
    interop.CimatronE.IApplication CimApp = (interop.CimatronE.IApplication)aAppAccess.GetApplication();
    // Get active document from application
    
    if (CimApp != null)
    {
        interop.CimatronE.ICimDocument aDoc = CimApp.GetActiveDoc();
        if (aDoc != null)
        {
            // Set model container
            interop.CimMdlrAPI.IModelContainer aModelCont = (interop.CimMdlrAPI.IModelContainer)aDoc;
    
            // Create the Sketcher procedure depended on the type of the active document.
            //     Get model type (can be Part/Assembly/NC)
            if (aDoc.Type == interop.CimatronE.DocumentEnumType.cmPart)
            {
                // If active document is part then get the MdlrModel from document
                interop.CimMdlrAPI.MdlrModel aMdlrModel =
                    (interop.CimMdlrAPI.MdlrModel)aModelCont.Model;
    
                // Create the modeler procedure for the extrude procedure
                interop.CimMdlrAPI.MdAdvancedLine aLineProcedure =
                    (interop.CimMdlrAPI.MdAdvancedLine)
                    aMdlrModel.CreateProcedure(interop.CimMdlrAPI.MdProcedureType.cmAdvancedLineProcedure);
    
                interop.CimMdlrAPI.IMdAdvancedLine aIMdAdvancedLine = (interop.CimMdlrAPI.IMdAdvancedLine)aLineProcedure;
                aIMdAdvancedLine.Mode = interop.CimMdlrAPI.eMdAdvancedLineMode.cmMod2Points;
                double[] aPointArr = new double[9];
                aPointArr[0] = 0;
                aPointArr[1] = 0;
                aPointArr[2] = 0;
                aPointArr[3] = 80;
                aPointArr[4] = 100;
                aPointArr[5] = 0;
                aPointArr[6] = 200;
                aPointArr[7] = 0;
                aPointArr[8] = 0;
                aIMdAdvancedLine.PointsArray = aPointArr;
    
                double[] aLengthArr = aIMdAdvancedLine.LengthsArray;
                //double[] aLengthArr = { 10, 20 };
                //aIMdAdvancedLine.LengthsArray = aLengthArr;
    
    
                aIMdAdvancedLine.ChainOption = interop.CimMdlrAPI.eMdChainOption.cmLineChain;
                //aIMdAdvancedLine.SecondEntityPickPoint= aPoint2;
    
                aLineProcedure.Execute();
                double[] aLengthArr2 = aIMdAdvancedLine.LengthsArray;
    
            }
        }
    }

Mode 2-cmMod2CurvesMode 2-cmMod2Curves
        // create Cimatron App Access object 
        
interop.CimAppAccess.AppAccess aAppAccess = new interop.CimAppAccess.AppAccess();
        //Get application object from App access
        interop.CimatronE.IApplication CimApp = (interop.CimatronE.IApplication)aAppAccess.GetApplication();
        // Get active document from application
        
        if (CimApp != null)
        {
            interop.CimatronE.ICimDocument aDoc = CimApp.GetActiveDoc();
            if (aDoc != null)
            {
                // Set model container
                interop.CimMdlrAPI.IModelContainer aModelCont = (interop.CimMdlrAPI.IModelContainer)aDoc;
        
                // Create the Sketcher procedure depended on the type of the active document.
                //     Get model type (can be Part/Assembly/NC)
                if (aDoc.Type == interop.CimatronE.DocumentEnumType.cmPart)
                {
                    // If active document is part then get the MdlrModel from document
                    interop.CimMdlrAPI.MdlrModel aMdlrModel =
                        (interop.CimMdlrAPI.MdlrModel)aModelCont.Model;
        
                    interop.CimMdlrAPI.IModel aModel =
                        (interop.CimMdlrAPI.IModel)aModelCont.Model;
        
                    // Create the modeler procedure for the extrude procedure
                    interop.CimMdlrAPI.MdAdvancedLine aLineProcedure =
                        (interop.CimMdlrAPI.MdAdvancedLine)
                        aMdlrModel.CreateProcedure(interop.CimMdlrAPI.MdProcedureType.cmAdvancedLineProcedure);
        
                    interop.CimMdlrAPI.IMdAdvancedLine aIMdAdvancedLine = (interop.CimMdlrAPI.IMdAdvancedLine)aLineProcedure;
                    aIMdAdvancedLine.Mode = interop.CimMdlrAPI.eMdAdvancedLineMode.cmMod2Curves;
        
                    interop.CimMdlrAPI.ICimEntity aFirstEnt = aModel.GetEntityById(14, aModel);
                    interop.CimMdlrAPI.ICimEntity aSecondEnt = aModel.GetEntityById(17, aModel);
        
                    //First curve entity
                    aIMdAdvancedLine.FirstEntity = aFirstEnt;
                    //PickPoint on First curve
                    double[] aPoint1 = new double[3];
                    aPoint1[0] = 0;
                    aPoint1[1] = 0;
                    aPoint1[2] = 0;
                    aIMdAdvancedLine.FirstEntityPickPoint = aPoint1;
        
                    //Second curve entity
                    aIMdAdvancedLine.SecondEntity = aSecondEnt;
                    //PickPoint on Second curve
                    double[] aPoint2 = new double[3];
                    aPoint2[0] = 160;
                    aPoint2[1] = 0;
                    aPoint2[2] = 0;
                    aIMdAdvancedLine.SecondEntityPickPoint = aPoint2;
                    aLineProcedure.Execute();
                }
            }
        }

Mode 3-cmModPointToCurveFaceMode 3-cmModPointToCurveFace
        // create Cimatron App Access object 
        
interop.CimAppAccess.AppAccess aAppAccess = new interop.CimAppAccess.AppAccess();
        //Get application object from App access
        interop.CimatronE.IApplication CimApp = (interop.CimatronE.IApplication)aAppAccess.GetApplication();
        // Get active document from application
        
        if (CimApp != null)
        {
            interop.CimatronE.ICimDocument aDoc = CimApp.GetActiveDoc();
            if (aDoc != null)
            {
                // Set model container
                interop.CimMdlrAPI.IModelContainer aModelCont = (interop.CimMdlrAPI.IModelContainer)aDoc;
        
                // Create the Sketcher procedure depended on the type of the active document.
                //     Get model type (can be Part/Assembly/NC)
                if (aDoc.Type == interop.CimatronE.DocumentEnumType.cmPart)
                {
                    // If active document is part then get the MdlrModel from document
                    interop.CimMdlrAPI.MdlrModel aMdlrModel =
                        (interop.CimMdlrAPI.MdlrModel)aModelCont.Model;
        
                    interop.CimMdlrAPI.IModel aModel =
                        (interop.CimMdlrAPI.IModel)aModelCont.Model;
        
                    // Create the modeler procedure for the extrude procedure
                    interop.CimMdlrAPI.MdAdvancedLine aLineProcedure =
                        (interop.CimMdlrAPI.MdAdvancedLine)
                        aMdlrModel.CreateProcedure(interop.CimMdlrAPI.MdProcedureType.cmAdvancedLineProcedure);
        
                    interop.CimMdlrAPI.IMdAdvancedLine aIMdAdvancedLine = (interop.CimMdlrAPI.IMdAdvancedLine)aLineProcedure;
                    aIMdAdvancedLine.Mode = interop.CimMdlrAPI.eMdAdvancedLineMode.cmModPointToCurveFace;
                    double[] aPoint1 = new double[3];
                    aPoint1[0] = 0;
                    aPoint1[1] = 0;
                    aPoint1[2] = 200;
                    aIMdAdvancedLine.FirstPoint = aPoint1;
        
                    //Face entity
                    interop.CimMdlrAPI.ICimEntity aFaceEnt = aModel.GetEntityById(19, aModel);
                    aIMdAdvancedLine.FirstEntity = aFaceEnt;
                    aLineProcedure.Execute();
        
                }
            }
        }

Mode 4-cmModPointFromCurveFaceMode 4-cmModPointFromCurveFace
        // create Cimatron App Access object 
        
interop.CimAppAccess.AppAccess aAppAccess = new interop.CimAppAccess.AppAccess();
        //Get application object from App access
        interop.CimatronE.IApplication CimApp = (interop.CimatronE.IApplication)aAppAccess.GetApplication();
        // Get active document from application
        
        if (CimApp != null)
        {
            interop.CimatronE.ICimDocument aDoc = CimApp.GetActiveDoc();
            if (aDoc != null)
            {
                // Set model container
                interop.CimMdlrAPI.IModelContainer aModelCont = (interop.CimMdlrAPI.IModelContainer)aDoc;
        
                // Create the Sketcher procedure depended on the type of the active document.
                //     Get model type (can be Part/Assembly/NC)
                if (aDoc.Type == interop.CimatronE.DocumentEnumType.cmPart)
                {
                    // If active document is part then get the MdlrModel from document
                    interop.CimMdlrAPI.MdlrModel aMdlrModel =
                        (interop.CimMdlrAPI.MdlrModel)aModelCont.Model;
        
                    interop.CimMdlrAPI.IModel aModel =
                        (interop.CimMdlrAPI.IModel)aModelCont.Model;
        
                    // Create the modeler procedure for the extrude procedure
                    interop.CimMdlrAPI.MdAdvancedLine aLineProcedure =
                        (interop.CimMdlrAPI.MdAdvancedLine)
                        aMdlrModel.CreateProcedure(interop.CimMdlrAPI.MdProcedureType.cmAdvancedLineProcedure);
        
                    interop.CimMdlrAPI.IMdAdvancedLine aIMdAdvancedLine = (interop.CimMdlrAPI.IMdAdvancedLine)aLineProcedure;
                    aIMdAdvancedLine.Mode = interop.CimMdlrAPI.eMdAdvancedLineMode.cmModPointFromCurveFace;
                    double[] aPoint1 = new double[3];
                    aPoint1[0] = 0;
                    aPoint1[1] = 0;
                    aPoint1[2] = 0;
                    aIMdAdvancedLine.FirstEntityPickPoint = aPoint1;
        
                    //Face entity
                    interop.CimMdlrAPI.ICimEntity aFaceEnt = aModel.GetEntityById(19, aModel);
                    aIMdAdvancedLine.FirstEntity = aFaceEnt;
                    aIMdAdvancedLine.Length = 200;
                    aLineProcedure.Execute();
        
                }
            }
        }

Mode 5-cmModByDirectionMode 5-cmModByDirection
        // create Cimatron App Access object 
        
interop.CimAppAccess.AppAccess aAppAccess = new interop.CimAppAccess.AppAccess();
        //Get application object from App access
        interop.CimatronE.IApplication CimApp = (interop.CimatronE.IApplication)aAppAccess.GetApplication();
        // Get active document from application
        
        if (CimApp != null)
        {
            interop.CimatronE.ICimDocument aDoc = CimApp.GetActiveDoc();
            if (aDoc != null)
            {
                // Set model container
                interop.CimMdlrAPI.IModelContainer aModelCont = (interop.CimMdlrAPI.IModelContainer)aDoc;
        
                // Create the Sketcher procedure depended on the type of the active document.
                //     Get model type (can be Part/Assembly/NC)
                if (aDoc.Type == interop.CimatronE.DocumentEnumType.cmPart)
                {
                    // If active document is part then get the MdlrModel from document
                    interop.CimMdlrAPI.MdlrModel aMdlrModel =
                        (interop.CimMdlrAPI.MdlrModel)aModelCont.Model;
        
                    // Create the modeler procedure for the extrude procedure
                    interop.CimMdlrAPI.MdAdvancedLine aLineProcedure =
                        (interop.CimMdlrAPI.MdAdvancedLine)
                        aMdlrModel.CreateProcedure(interop.CimMdlrAPI.MdProcedureType.cmAdvancedLineProcedure);
        
                    interop.CimMdlrAPI.IMdAdvancedLine aIMdAdvancedLine = (interop.CimMdlrAPI.IMdAdvancedLine)aLineProcedure;
                    aIMdAdvancedLine.Mode = interop.CimMdlrAPI.eMdAdvancedLineMode.cmModByDirection;
                    double[] aDir = new double[3];
                    aDir[0] = 0;
                    aDir[1] = 0;
                    aDir[2] = 1;
                    aIMdAdvancedLine.DirectionVector = aDir;
        
                    double[] aPoint1 = new double[3];
                    aPoint1[0] = 0;
                    aPoint1[1] = 0;
                    aPoint1[2] = 0;
                    aIMdAdvancedLine.FirstPoint = aPoint1;
        
                    aIMdAdvancedLine.Length = 100;
        
                    aLineProcedure.Execute();
        
                }
            }
        }

Mode 1-cmMod2PointsMode 1-cmMod2Points
        import clr
        #Adding references of required interop dlls
        clr.AddReference("interop.CimAppAccess")
        clr.AddReference("interop.CimatronE")
        clr.AddReference("interop.CimServicesAPI")
        clr.AddReference("interop.CimBaseAPI")
        clr.AddReference("interop.CimMdlrAPI")
        
        #importing modules from interop dlls
        import interop.CimAppAccess
        import interop.CimatronE
        import interop.CimServicesAPI
        import interop.CimBaseAPI
        import interop.CimMdlrAPI
        
        #Getting AppAccess Object
        aCimAppAccess = interop.CimAppAccess.AppAccess()
        
        #Getting instance of CimatronE Application
        aCimApp = None
        while (aCimApp == None) :
            aCimApp = CimatronE.IApplication(aCimAppAccess.GetApplication())
            aDoc = (interop.CimBaseAPI.ICimDocument)(aCimApp.GetActiveDoc())
            aContainer = (interop.CimMdlrAPI.IModelContainer)(aDoc)
            aMdlrModel = (interop.CimMdlrAPI.MdlrModel)(aContainer.Model)
            aIModel = (interop.CimMdlrAPI.IModel)(aContainer.Model)
            # Create the modeler procedure for the extrude procedure
            aLineProcedure = interop.CimMdlrAPI.MdAdvancedLine(aMdlrModel.CreateProcedure(interop.CimMdlrAPI.MdProcedureType.cmAdvancedLineProcedure))
            aIMdAdvancedLine = interop.CimMdlrAPI.IMdAdvancedLine(aLineProcedure)
            aIMdAdvancedLine.Mode = interop.CimMdlrAPI.eMdAdvancedLineMode.cmMod2Points
            
            # Define points using an array
            aPointArr = array.array('d', [0, 0, 0, 80, 100, 0, 200, 0, 0])
            aIMdAdvancedLine.PointsArray = aPointArr
 
            import array
            # Get lengths array
            aLengthArr = array.array('d', aIMdAdvancedLine.LengthsArray)
            
            aIMdAdvancedLine.ChainOption = interop.CimMdlrAPI.eMdChainOption.cmLineChain
            
            # Execute the procedure
            aLineProcedure.Execute()
            
            # Get updated lengths array
            aLengthArr2 = array.array('d', aIMdAdvancedLine.LengthsArray)

Mode 2-cmMod2CurvesMode 2-cmMod2Curves
        import clr
        #Adding references of required interop dlls
        clr.AddReference("interop.CimAppAccess")
        clr.AddReference("interop.CimatronE")
        clr.AddReference("interop.CimServicesAPI")
        clr.AddReference("interop.CimBaseAPI")
        clr.AddReference("interop.CimMdlrAPI")
        
        #importing modules from interop dlls
        import interop.CimAppAccess
        import interop.CimatronE
        import interop.CimServicesAPI
        import interop.CimBaseAPI
        import interop.CimMdlrAPI
        
        #Getting AppAccess Object
        aCimAppAccess = interop.CimAppAccess.AppAccess()
        
        #Getting instance of CimatronE Application
        aCimApp = None
        while (aCimApp == None) :
            aCimApp = CimatronE.IApplication(aCimAppAccess.GetApplication())
            aDoc = (interop.CimBaseAPI.ICimDocument)(aCimApp.GetActiveDoc())
            aContainer = (interop.CimMdlrAPI.IModelContainer)(aDoc)
            aMdlrModel = (interop.CimMdlrAPI.MdlrModel)(aContainer.Model)
            aIModel = (interop.CimMdlrAPI.IModel)(aContainer.Model)
            # Create the modeler procedure for the extrude procedure
            aLineProcedure = interop.CimMdlrAPI.MdAdvancedLine(aMdlrModel.CreateProcedure(interop.CimMdlrAPI.MdProcedureType.cmAdvancedLineProcedure))
            aIMdAdvancedLine = interop.CimMdlrAPI.IMdAdvancedLine(aLineProcedure)
            
            # Set the mode to create a line between two curves
            aIMdAdvancedLine.Mode = interop.CimMdlrAPI.MdAdvancedLineMode.cmMod2Curves
            
            # Get references to the first and second curves by their IDs
            aFirstEnt = aModelCont.GetEntityById(14, aModel)
            aSecondEnt = aModelCont.GetEntityById(17, aModel)
            import array
            # Set the first curve entity and pick point
            aIMdAdvancedLine.FirstEntity = aFirstEnt
            aIMdAdvancedLine.FirstEntityPickPoint = array.array("d", [0, 0, 0])
            
            # Set the second curve entity and pick point
            aIMdAdvancedLine.SecondEntity = aSecondEnt
            aIMdAdvancedLine.SecondEntityPickPoint = array.array("d", [160, 0, 0])
            
            
            # Execute the procedure
            aLineProcedure.Execute()

Mode 3-cmModPointToCurveFaceMode 3-cmModPointToCurveFace
        import clr
        #Adding references of required interop dlls
        clr.AddReference("interop.CimAppAccess")
        clr.AddReference("interop.CimatronE")
        clr.AddReference("interop.CimServicesAPI")
        clr.AddReference("interop.CimBaseAPI")
        clr.AddReference("interop.CimMdlrAPI")
        
        #importing modules from interop dlls
        import interop.CimAppAccess
        import interop.CimatronE
        import interop.CimServicesAPI
        import interop.CimBaseAPI
        import interop.CimMdlrAPI
        
        #Getting AppAccess Object
        aCimAppAccess = interop.CimAppAccess.AppAccess()
        
        #Getting instance of CimatronE Application
        aCimApp = None
        while (aCimApp == None) :
            aCimApp = CimatronE.IApplication(aCimAppAccess.GetApplication())
            aDoc = (interop.CimBaseAPI.ICimDocument)(aCimApp.GetActiveDoc())
            aContainer = (interop.CimMdlrAPI.IModelContainer)(aDoc)
            aMdlrModel = (interop.CimMdlrAPI.MdlrModel)(aContainer.Model)
            aIModel = (interop.CimMdlrAPI.IModel)(aContainer.Model)
            # Create the modeler procedure for the advanced line
            aLineProcedure = aMdlrModel.CreateProcedure(interop.CimMdlrAPI.MdProcedureType.cmAdvancedLineProcedure)
            
            aIMdAdvancedLine = interop.CimMdlrAPI.IMdAdvancedLine(aLineProcedure)
            aIMdAdvancedLine.Mode = interop.CimMdlrAPI.MdAdvancedLineMode.cmModPointToCurveFace
            from array import array
            # Set the point on the curve
            aPoint1 = array('d',[0, 0, 200])
            aIMdAdvancedLine.FirstPoint = aPoint1
            
            # Face entity
            aFaceEnt = aModel.GetEntityById(19, aModel)
            aIMdAdvancedLine.FirstEntity = aFaceEnt
            
            # Execute the procedure
            aLineProcedure.Execute()

Mode 4-cmModPointFromCurveFaceMode 4-cmModPointFromCurveFace
        import clr
        #Adding references of required interop dlls
        clr.AddReference("interop.CimAppAccess")
        clr.AddReference("interop.CimatronE")
        clr.AddReference("interop.CimServicesAPI")
        clr.AddReference("interop.CimBaseAPI")
        clr.AddReference("interop.CimMdlrAPI")
        
        #importing modules from interop dlls
        import interop.CimAppAccess
        import interop.CimatronE
        import interop.CimServicesAPI
        import interop.CimBaseAPI
        import interop.CimMdlrAPI
        
        #Getting AppAccess Object
        aCimAppAccess = interop.CimAppAccess.AppAccess()
        
        #Getting instance of CimatronE Application
        aCimApp = None
        while (aCimApp == None) :
            aCimApp = CimatronE.IApplication(aCimAppAccess.GetApplication())
            aDoc = (interop.CimBaseAPI.ICimDocument)(aCimApp.GetActiveDoc())
            aContainer = (interop.CimMdlrAPI.IModelContainer)(aDoc)
            aMdlrModel = (interop.CimMdlrAPI.MdlrModel)(aContainer.Model)
            aIModel = (interop.CimMdlrAPI.IModel)(aContainer.Model)
            # Create the modeler procedure for the advanced line
            aLineProcedure = aMdlrModel.CreateProcedure(interop.CimMdlrAPI.MdProcedureType.cmAdvancedLineProcedure)
            
            aIMdAdvancedLine = interop.CimMdlrAPI.IMdAdvancedLine(aLineProcedure)
            aIMdAdvancedLine.Mode = interop.CimMdlrAPI.eMdAdvancedLineMode.cmModPointFromCurveFace
            from array import array
            # Set pick point on the curve
            aPoint1 = array('d',[0, 0, 0])
            aIMdAdvancedLine.FirstEntityPickPoint = aPoint1
            
            # Face entity
            aFaceEnt = aModel.GetEntityById(19, aModel)
            aIMdAdvancedLine.FirstEntity = aFaceEnt
            
            # Set length
            aIMdAdvancedLine.Length = 200
            
            # Execute the procedure
            aLineProcedure.Execute()

Mode 5-cmModByDirectionMode 5-cmModByDirection
        import clr
        #Adding references of required interop dlls
        clr.AddReference("interop.CimAppAccess")
        clr.AddReference("interop.CimatronE")
        clr.AddReference("interop.CimServicesAPI")
        clr.AddReference("interop.CimBaseAPI")
        clr.AddReference("interop.CimMdlrAPI")
        
        #importing modules from interop dlls
        import interop.CimAppAccess
        import interop.CimatronE
        import interop.CimServicesAPI
        import interop.CimBaseAPI
        import interop.CimMdlrAPI
        
        #Getting AppAccess Object
        aCimAppAccess = interop.CimAppAccess.AppAccess()
        
        #Getting instance of CimatronE Application
        aCimApp = None
        while (aCimApp == None) :
            aCimApp = CimatronE.IApplication(aCimAppAccess.GetApplication())
            aDoc = (interop.CimBaseAPI.ICimDocument)(aCimApp.GetActiveDoc())
            aContainer = (interop.CimMdlrAPI.IModelContainer)(aDoc)
            aMdlrModel = (interop.CimMdlrAPI.MdlrModel)(aContainer.Model)
            aIModel = (interop.CimMdlrAPI.IModel)(aContainer.Model)
            # Create the modeler procedure for the advanced line
            aLineProcedure = aMdlrModel.CreateProcedure(interop.CimMdlrAPI.MdProcedureType.cmAdvancedLineProcedure)
            aIMdAdvancedLine = interop.CimMdlrAPI.IMdAdvancedLine(aLineProcedure)
            aIMdAdvancedLine.Mode = interop.CimMdlrAPI.eMdAdvancedLineMode.cmModByDirection
            from array import array
            # Set direction vector
            aDir = array('d',[0, 0, 1])
            aIMdAdvancedLine.DirectionVector = aDir
            
            # Set starting point
            aPoint1 = array('d', [0, 0, 0])
            aIMdAdvancedLine.FirstPoint = aPoint1
            
            # Set length
            aIMdAdvancedLine.Length = 100
            
            # Execute the procedure
            aLineProcedure.Execute()