Placement Component

Placement Component

gopinathmY575P
Advocate Advocate
332 Views
1 Reply
Message 1 of 2

Placement Component

gopinathmY575P
Advocate
Advocate

Hello Community,

 

i'm working on placement of component method through c#/vba, if I click it will place component one time, keeping on waiting for user for further clicks(placement)., is there is any action triggers which will escape after the first click (placement) 

 

code:

oApp.CommandManager.PostPrivateEvent(PrivateEventTypeEnum.kFileNameEvent, filePath);

oApp.CommandManager.ControlDefinitions["AssemblyPlaceComponentCmd"].Execute2(true);

0 Likes
Accepted solutions (1)
333 Views
1 Reply
Reply (1)
Message 2 of 2

Michael.Navara
Advisor
Advisor
Accepted solution

Rather than this approach try to use  MouseEvents for it

public class IC_12848474
{
    private InteractionEvents interactionEvents;
    private MouseEvents mouseEvents;
    

    public void Main()
    {
        PlaceComponent();
    }

    private void PlaceComponent()
    {
        interactionEvents = ThisApplication.CommandManager.CreateInteractionEvents();
        mouseEvents = interactionEvents.MouseEvents;
        mouseEvents.OnMouseClick += MouseEvents_OnMouseClick;
        interactionEvents.OnTerminate += InteractionEvents_OnTerminate;
        interactionEvents.StatusBarText = "Click to place component";
        interactionEvents.Start();
    }

    private void InteractionEvents_OnTerminate()
    {
        mouseEvents.OnMouseClick -= MouseEvents_OnMouseClick;
        mouseEvents = null;
        interactionEvents = null;
    }

    private void MouseEvents_OnMouseClick(MouseButtonEnum Button, ShiftStateEnum ShiftKeys, Point ModelPosition, Point2d ViewPosition, Inventor.View View)
    {
        string fileToPlace = @"C:\Path\To\Part.ipt";
        var asm = ThisDoc.Document as AssemblyDocument;
        if (asm == null)
            return;

        var matrix = ThisApplication.TransientGeometry.CreateMatrix();
        Vector vectorToPosition = ThisApplication.TransientGeometry.CreateVector(ModelPosition.X, ModelPosition.Y, ModelPosition.Z);
        matrix.SetTranslation(vectorToPosition);

        asm.ComponentDefinition.Occurrences.Add(fileToPlace, matrix);

    }
}
0 Likes