<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Place a Mark on a planar face where clicked - iLogic in Inventor Programming - iLogic, Macros, AddIns &amp; Apprentice</title>
    <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/place-a-mark-on-a-planar-face-where-clicked-ilogic/m-p/12703198#M166075</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I would like to place a mark on a planar face which contains the part number iprop for laser etching.&lt;/P&gt;&lt;P&gt;Text height to be&amp;nbsp; 5mm.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The workflow I'd like is - run the rule, select a face, and place the mark where clicked on the selected face.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've got a bit of code from this post by &lt;A href="https://adndevblog.typepad.com/manufacturing/2016/09/create-sketch-text-on-face-of-assembly.html" target="_blank" rel="noopener"&gt;Xiaodong Liang &lt;/A&gt;&lt;/P&gt;&lt;P&gt;and this &lt;A href="https://forums.autodesk.com/t5/inventor-programming-ilogic/create-text-sketch-on-a-face-in-a-assembly-with-ilogic/td-p/6579957" target="_blank" rel="noopener"&gt;enhancement of the code&lt;/A&gt;&lt;/P&gt;&lt;P&gt;but I can't seem to make the leap to get the workflow I'm after.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help would be appreciated.&lt;/P&gt;</description>
    <pubDate>Thu, 11 Apr 2024 23:13:51 GMT</pubDate>
    <dc:creator>Rich-T</dc:creator>
    <dc:date>2024-04-11T23:13:51Z</dc:date>
    <item>
      <title>Place a Mark on a planar face where clicked - iLogic</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/place-a-mark-on-a-planar-face-where-clicked-ilogic/m-p/12703198#M166075</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I would like to place a mark on a planar face which contains the part number iprop for laser etching.&lt;/P&gt;&lt;P&gt;Text height to be&amp;nbsp; 5mm.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The workflow I'd like is - run the rule, select a face, and place the mark where clicked on the selected face.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've got a bit of code from this post by &lt;A href="https://adndevblog.typepad.com/manufacturing/2016/09/create-sketch-text-on-face-of-assembly.html" target="_blank" rel="noopener"&gt;Xiaodong Liang &lt;/A&gt;&lt;/P&gt;&lt;P&gt;and this &lt;A href="https://forums.autodesk.com/t5/inventor-programming-ilogic/create-text-sketch-on-a-face-in-a-assembly-with-ilogic/td-p/6579957" target="_blank" rel="noopener"&gt;enhancement of the code&lt;/A&gt;&lt;/P&gt;&lt;P&gt;but I can't seem to make the leap to get the workflow I'm after.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help would be appreciated.&lt;/P&gt;</description>
      <pubDate>Thu, 11 Apr 2024 23:13:51 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/place-a-mark-on-a-planar-face-where-clicked-ilogic/m-p/12703198#M166075</guid>
      <dc:creator>Rich-T</dc:creator>
      <dc:date>2024-04-11T23:13:51Z</dc:date>
    </item>
    <item>
      <title>Re: Place a Mark on a planar face where clicked - iLogic</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/place-a-mark-on-a-planar-face-where-clicked-ilogic/m-p/12705227#M166112</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/2855153"&gt;@Rich-T&lt;/a&gt;.&amp;nbsp; That is a relatively complex task to achieve by one iLogic rule.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The task of obtaining the location where you click your mouse, by itself, requires a whole additional large block of code that starts a very specific user interactions mode be started by the code at a certain point, then makes it wait while it monitors for specific actions to happen in the user interface area, then automatically reacts to a very specific action in a way that can capture that location.&amp;nbsp; And even then, model space is 3D, while the mouse actions are relatively 2D, so there may be some projection involved.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I did create a rather large iLogic rule for this task, but it just attempts to center the TextBox at the center of the planar face you select.&amp;nbsp; There are a lot of things that can be changed or personalized about this code routine, so you would have to review it carefully before trying it out, to see if changes may be needed to suit your specific situation.&amp;nbsp; For instance:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;parts come in all shapes and sizes&lt;/LI&gt;
&lt;LI&gt;part faces can be pointing in any direction (may not necessarily be aligned with the UCS axes)&lt;/LI&gt;
&lt;LI&gt;TextBox can potentially be oriented in different directions&lt;/LI&gt;
&lt;LI&gt;Font, FontSize, Bold, Italic, UnderLine, Strikethrough options are available for edit by the custom Function&lt;/LI&gt;
&lt;LI&gt;There is a whole scrolling list of possible 'SHXfont' choices for the initial 'convert text to geometry' step
&lt;UL&gt;
&lt;LI&gt;It is using one simply named "txt" right now&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;There is also an optional secondary step to the 'convert geometry to text' step, where you can specify if it should use a 'big font', and specify which one of those available ones to use for it.
&lt;UL&gt;
&lt;LI&gt;I did not include this second step in this code example, but it would be added into Line 49 as additional inputs.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;There are 2 MarkStyle objects that come installed with Inventor.&amp;nbsp; Each one is for a different functionality (surface or through), and each one has its own settings other than that.
&lt;UL&gt;
&lt;LI&gt;If this is not set to the one you want, or you have a custom one, then you will have to edit that part of the code to find that other MarkStyle object, then, if it is a different type, you may have to change the other related options within the MarkDefinition below.&amp;nbsp; (I left a couple lines commented out in that area.)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Anyways, the code is in the attached text file, because it is pretty long.&amp;nbsp; As mentioned earlier, getting the location of your mouse click would mean getting rid of the 'Pick' method used in Line 2, then including a whole other custom block of code that you can call to run there, which will handle your face selection and/or the text location specification.&amp;nbsp; There is an example or few here on this forum for that task by itself.&amp;nbsp; Those types of large, special functionality blocks of code are usually stored as a separate rule, referenced from an external resource, or something like that, instead of all included in the same rule, for efficiency and reuse by other tasks later.&lt;/P&gt;</description>
      <pubDate>Fri, 12 Apr 2024 17:33:43 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/place-a-mark-on-a-planar-face-where-clicked-ilogic/m-p/12705227#M166112</guid>
      <dc:creator>WCrihfield</dc:creator>
      <dc:date>2024-04-12T17:33:43Z</dc:date>
    </item>
    <item>
      <title>Re: Place a Mark on a planar face where clicked - iLogic</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/place-a-mark-on-a-planar-face-where-clicked-ilogic/m-p/12718701#M166312</link>
      <description>&lt;P&gt;Thanks Wesley, given your comments about mouse click events I've changed tack and have the code below, which asks for an offset position instead&lt;/P&gt;&lt;P&gt;Ideally I'd like it to offer 3 options for text height (3.5/5/10mm) and to rename the mark feature in the browser and wrap it up nicely in a transaction so it can be undone easily.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAssDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Document&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAssDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartComponentDefinition&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oFace&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oSketch&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Sketch&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oEdgeLoop&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;EdgeLoop&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oMinPt&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Point&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oMaxPt&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Point&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;insPoint&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Point&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oTextPt&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Point2d&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oSketchText&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;TextBox&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oPartNum&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;myX&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;myY&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;newX&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;newY&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;

        &lt;SPAN&gt;oAssDoc&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt;
        &lt;SPAN&gt;oAssDef&lt;/SPAN&gt; = &lt;SPAN&gt;oAssDoc&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;


        &lt;SPAN&gt;' Pick a planar face&lt;/SPAN&gt;
        &lt;SPAN&gt;oFace&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;CommandManager&lt;/SPAN&gt;.&lt;SPAN&gt;Pick&lt;/SPAN&gt;(&lt;SPAN&gt;SelectionFilterEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kAllPlanarEntities&lt;/SPAN&gt;, &lt;SPAN&gt;"Select the face for a part number mark"&lt;/SPAN&gt;)



        &lt;SPAN&gt;' Make sure it is a planar face&lt;/SPAN&gt;
        &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oFace&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceType&lt;/SPAN&gt; = &lt;SPAN&gt;SurfaceTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kPlaneSurface&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;' Add a sketch&lt;/SPAN&gt;
            &lt;SPAN&gt;oSketch&lt;/SPAN&gt; = &lt;SPAN&gt;oAssDef&lt;/SPAN&gt;.&lt;SPAN&gt;Sketches&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;oFace&lt;/SPAN&gt;)

            &lt;SPAN&gt;' Trying to choose an appropriate point&lt;/SPAN&gt;
            &lt;SPAN&gt;' Assume this planar face has one edge loop only&lt;/SPAN&gt;
            &lt;SPAN&gt;oEdgeLoop&lt;/SPAN&gt; = &lt;SPAN&gt;oFace&lt;/SPAN&gt;.&lt;SPAN&gt;EdgeLoops&lt;/SPAN&gt;(1)
            &lt;SPAN&gt;oMinPt&lt;/SPAN&gt; = &lt;SPAN&gt;oEdgeLoop&lt;/SPAN&gt;.&lt;SPAN&gt;RangeBox&lt;/SPAN&gt;.&lt;SPAN&gt;MinPoint&lt;/SPAN&gt;
            &lt;SPAN&gt;oMaxPt&lt;/SPAN&gt; = &lt;SPAN&gt;oEdgeLoop&lt;/SPAN&gt;.&lt;SPAN&gt;RangeBox&lt;/SPAN&gt;.&lt;SPAN&gt;MaxPoint&lt;/SPAN&gt;

            &lt;SPAN&gt;' Ask for offset values&lt;/SPAN&gt;
            &lt;SPAN&gt;myX&lt;/SPAN&gt; = &lt;SPAN&gt;CDbl&lt;/SPAN&gt;(&lt;SPAN&gt;InputBox&lt;/SPAN&gt;(&lt;SPAN&gt;"Enter X offset"&lt;/SPAN&gt;, &lt;SPAN&gt;"X Offset"&lt;/SPAN&gt;, &lt;SPAN&gt;"0"&lt;/SPAN&gt;))
            &lt;SPAN&gt;myY&lt;/SPAN&gt; = &lt;SPAN&gt;CDbl&lt;/SPAN&gt;(&lt;SPAN&gt;InputBox&lt;/SPAN&gt;(&lt;SPAN&gt;"Enter Y offset"&lt;/SPAN&gt;, &lt;SPAN&gt;"Y Offset"&lt;/SPAN&gt;, &lt;SPAN&gt;"0"&lt;/SPAN&gt;))

            &lt;SPAN&gt;' Calculate new coordinates&lt;/SPAN&gt;
            &lt;SPAN&gt;newX&lt;/SPAN&gt; = &lt;SPAN&gt;oMinPt&lt;/SPAN&gt;.&lt;SPAN&gt;X&lt;/SPAN&gt; + (&lt;SPAN&gt;myX&lt;/SPAN&gt; / 10)
            &lt;SPAN&gt;newY&lt;/SPAN&gt; = &lt;SPAN&gt;oMinPt&lt;/SPAN&gt;.&lt;SPAN&gt;Y&lt;/SPAN&gt; + (&lt;SPAN&gt;myY&lt;/SPAN&gt; / 10)

            &lt;SPAN&gt;' Create insertion point&lt;/SPAN&gt;
            &lt;SPAN&gt;insPoint&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientGeometry&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint&lt;/SPAN&gt;(&lt;SPAN&gt;newX&lt;/SPAN&gt;, &lt;SPAN&gt;newY&lt;/SPAN&gt; + 0.375, &lt;SPAN&gt;oMinPt&lt;/SPAN&gt;.&lt;SPAN&gt;Z&lt;/SPAN&gt;)
			&lt;SPAN&gt;'0.375mm text offset - so that the text doesnt fall off the lower edge of the selected face&lt;/SPAN&gt;

            &lt;SPAN&gt;' Convert insertion point to sketch space&lt;/SPAN&gt;
            &lt;SPAN&gt;oTextPt&lt;/SPAN&gt; = &lt;SPAN&gt;oSketch&lt;/SPAN&gt;.&lt;SPAN&gt;ModelToSketchSpace&lt;/SPAN&gt;(&lt;SPAN&gt;insPoint&lt;/SPAN&gt;)

            &lt;SPAN&gt;' Add the textbox&lt;/SPAN&gt;
            &lt;SPAN&gt;oPartNum&lt;/SPAN&gt; = &lt;SPAN&gt;iProperties&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;"Project"&lt;/SPAN&gt;, &lt;SPAN&gt;"Part Number"&lt;/SPAN&gt;)
			&lt;SPAN&gt;'MessageBox.Show(oPartNum)&lt;/SPAN&gt;

            &lt;SPAN&gt;oSketchText&lt;/SPAN&gt; = &lt;SPAN&gt;oSketch&lt;/SPAN&gt;.&lt;SPAN&gt;TextBoxes&lt;/SPAN&gt;.&lt;SPAN&gt;AddFitted&lt;/SPAN&gt;(&lt;SPAN&gt;oTextPt&lt;/SPAN&gt;, &lt;SPAN&gt;oPartNum&lt;/SPAN&gt;)

            &lt;SPAN&gt;' Create a mark feature on the textbox&lt;/SPAN&gt;
            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oSObjs&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt;
            &lt;SPAN&gt;oSObjs&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateObjectCollection&lt;/SPAN&gt;
            &lt;SPAN&gt;oSObjs&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;oSketchText&lt;/SPAN&gt;)

            &lt;SPAN&gt;' Convert text to geometry&lt;/SPAN&gt;
            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oTextSketchEntities&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SketchEntitiesEnumerator&lt;/SPAN&gt;
            &lt;SPAN&gt;oTextSketchEntities&lt;/SPAN&gt; = &lt;SPAN&gt;oSketchText&lt;/SPAN&gt;.&lt;SPAN&gt;ConvertToGeometry&lt;/SPAN&gt;(&lt;SPAN&gt;"txt"&lt;/SPAN&gt;)

            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oMarkGeometry&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateObjectCollection&lt;/SPAN&gt;
            &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oSE&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SketchEntity&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oTextSketchEntities&lt;/SPAN&gt;
                &lt;SPAN&gt;oMarkGeometry&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;oSE&lt;/SPAN&gt;)
            &lt;SPAN&gt;Next&lt;/SPAN&gt; &lt;SPAN&gt;'oSE&lt;/SPAN&gt;

            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oMarkFeatures&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;MarkFeatures&lt;/SPAN&gt;
            &lt;SPAN&gt;oMarkFeatures&lt;/SPAN&gt; = &lt;SPAN&gt;oAssDef&lt;/SPAN&gt;.&lt;SPAN&gt;Features&lt;/SPAN&gt;.&lt;SPAN&gt;MarkFeatures&lt;/SPAN&gt;

            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oMarkStyle&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;MarkStyle&lt;/SPAN&gt;
			&lt;SPAN&gt;oMarkStyle&lt;/SPAN&gt; = &lt;SPAN&gt;oAssDoc&lt;/SPAN&gt;.&lt;SPAN&gt;MarkStyles&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;"Mark Surface"&lt;/SPAN&gt;)

            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oMarkDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;MarkDefinition&lt;/SPAN&gt;
            &lt;SPAN&gt;oMarkDef&lt;/SPAN&gt; = &lt;SPAN&gt;oMarkFeatures&lt;/SPAN&gt;.&lt;SPAN&gt;CreateMarkDefinition&lt;/SPAN&gt;(&lt;SPAN&gt;oMarkGeometry&lt;/SPAN&gt;, &lt;SPAN&gt;oMarkStyle&lt;/SPAN&gt;)

            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oMark&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;MarkFeature&lt;/SPAN&gt;
            &lt;SPAN&gt;oMark&lt;/SPAN&gt; = &lt;SPAN&gt;oMarkFeatures&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;oMarkDef&lt;/SPAN&gt;)

        &lt;SPAN&gt;Else&lt;/SPAN&gt;
            &lt;SPAN&gt;MsgBox&lt;/SPAN&gt;(&lt;SPAN&gt;"Please select a planar face!"&lt;/SPAN&gt;)
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;</description>
      <pubDate>Thu, 18 Apr 2024 23:20:34 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/place-a-mark-on-a-planar-face-where-clicked-ilogic/m-p/12718701#M166312</guid>
      <dc:creator>Rich-T</dc:creator>
      <dc:date>2024-04-18T23:20:34Z</dc:date>
    </item>
    <item>
      <title>Re: Place a Mark on a planar face where clicked - iLogic</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/place-a-mark-on-a-planar-face-where-clicked-ilogic/m-p/12721298#M166368</link>
      <description>&lt;P&gt;Maybe you want to have a look at this rule. It is a bit complex when it comes to selecting the plane/point. (Line 31 to line 109).&amp;nbsp; But the important part (and easiest part) is in the first part of the rule.&lt;/P&gt;
&lt;LI-CODE lang="visual-basic"&gt;Public Class ThisRule
	Sub Main()
		Dim doc As PartDocument = ThisDoc.Document
        Dim def As PartComponentDefinition = doc.ComponentDefinition

        Dim selector As New Selector(ThisApplication)
        selector.Pick()

        Dim sketch = def.Sketches.Add(selector.SelectedObject)
        Dim modelPoint As Point2d = sketch.ModelToSketchSpace(selector.ModelPosition)


        Dim partNumber = iProperties.Value("Project", "Part Number")
        Dim sketchText = sketch.TextBoxes.AddFitted(modelPoint, partNumber)

        Dim textSketchEntities As SketchEntitiesEnumerator = sketchText.ConvertToGeometry("txt")

        Dim markGeometry As ObjectCollection = ThisApplication.TransientObjects.CreateObjectCollection
        For Each oSE As SketchEntity In textSketchEntities
            markGeometry.Add(oSE)
        Next

        Dim markFeatures As MarkFeatures = def.Features.MarkFeatures
        Dim markStyle As MarkStyle = doc.MarkStyles.Item("Mark Surface")
        Dim markDef As MarkDefinition = markFeatures.CreateMarkDefinition(markGeometry, markStyle)
        markDef.Direction = PartFeatureExtentDirectionEnum.kNegativeExtentDirection
        markFeatures.Add(markDef)

    End Sub
End Class
Public Class Selector

    Private WithEvents _interactEvents As InteractionEvents
    Private WithEvents _selectEvents As SelectEvents
    Private _stillSelecting As Boolean
    Private _inventor As Inventor.Application

    Public Sub New(ThisApplication As Inventor.Application)
        _inventor = ThisApplication
    End Sub

    Public Sub Pick()
        _stillSelecting = True

        _interactEvents = _inventor.CommandManager.CreateInteractionEvents
        _interactEvents.InteractionDisabled = False
        _interactEvents.StatusBarText = "Select a LinearGeneralDimension."
        _interactEvents.SetCursor(CursorTypeEnum.kCursorBuiltInLineCursor)

        _selectEvents = _interactEvents.SelectEvents
        _selectEvents.WindowSelectEnabled = False

        _interactEvents.Start()
        Do While _stillSelecting
            _inventor.UserInterfaceManager.DoEvents()
        Loop
        _interactEvents.Stop()

        _inventor.CommandManager.StopActiveCommand()

    End Sub

    Public Property SelectedObject As Face = Nothing
    Public Property ModelPosition As Point = Nothing

    Private Sub oSelectEvents_OnPreSelect(
            ByRef PreSelectEntity As Object,
            ByRef DoHighlight As Boolean,
            ByRef MorePreSelectEntities As ObjectCollection,
            SelectionDevice As SelectionDeviceEnum,
            ModelPosition As Point,
            ViewPosition As Point2d,
            View As Inventor.View) Handles _selectEvents.OnPreSelect

        DoHighlight = False

        If TypeOf PreSelectEntity Is Face Then
            If TypeOf PreSelectEntity.Geometry Is Plane Then
                DoHighlight = True
            End If
        End If


    End Sub

    Private Sub oInteractEvents_OnTerminate() Handles _interactEvents.OnTerminate
        _stillSelecting = False
    End Sub

    Private Sub oSelectEvents_OnSelect(
            ByVal JustSelectedEntities As ObjectsEnumerator,
            ByVal SelectionDevice As SelectionDeviceEnum,
            ByVal ModelPosition As Point,
            ByVal ViewPosition As Point2d,
            ByVal View As Inventor.View) Handles _selectEvents.OnSelect

        SelectedObject = JustSelectedEntities.Item(1)

        If TypeOf SelectedObject Is Face Then
            If TypeOf SelectedObject.Geometry Is Plane Then
                Me.SelectedObject = SelectedObject
                Me.ModelPosition = ModelPosition
            End If
        End If

        _stillSelecting = False
    End Sub

End Class&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp; &lt;/P&gt;</description>
      <pubDate>Fri, 19 Apr 2024 21:47:38 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/place-a-mark-on-a-planar-face-where-clicked-ilogic/m-p/12721298#M166368</guid>
      <dc:creator>JelteDeJong</dc:creator>
      <dc:date>2024-04-19T21:47:38Z</dc:date>
    </item>
    <item>
      <title>Re: Place a Mark on a planar face where clicked - iLogic</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/place-a-mark-on-a-planar-face-where-clicked-ilogic/m-p/12723825#M166389</link>
      <description>&lt;P&gt;Thanks Jelte that works a treat. I've made a few edits as seen below.&lt;/P&gt;&lt;P&gt;It works but there's some weirdness in the model browser with phantom-like features if you repeat a few times.&lt;/P&gt;&lt;P&gt;I'm not sure about how i've renamed the mark feature - i want it work so that if you run the rule again on a different face it still does the business but haven't tested it yet.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'd be grateful if you spot any other improvements.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;Public Class ThisRule&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Sub Main()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Dim doc As PartDocument = ThisDoc.Document&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Dim def As PartComponentDefinition = doc.ComponentDefinition&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Dim m_inventorApplication As Inventor.Application = ThisApplication&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Dim oTransMgr As TransactionManager&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;oTransMgr = m_inventorApplication.TransactionManager&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Dim oTrans As Transaction = oTransMgr.StartTransaction(doc,"Part Number Mark Feature")&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Dim selector As New Selector(ThisApplication)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; selector.Pick()&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Dim sketch = def.Sketches.Add(selector.SelectedObject)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Dim modelPoint As Point2d = sketch.ModelToSketchSpace(selector.ModelPosition)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Dim oTextSize As String&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;'ask for text height&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Dim oTS As String&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;oTS = InputBox("Select from 3.5 / 5.0 / 10.0", "Select Text Height - iLogic", "10.00")&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;'massage user input to suit text styles&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Select Case oTS&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Case Is &amp;lt;5.00&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;oTextSize = "Arial 3.50mm"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Case Is =5.00&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;oTextSize = "Arial 5.00mm" &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Case Is &amp;gt;5.00&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;oTextSize = "Arial 10.00mm"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;End Select&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Dim partNumber = iProperties.Value("Project", "Part Number")&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Dim sketchText = sketch.TextBoxes.AddFitted(modelPoint, partNumber, oTextSize)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Dim textSketchEntities As SketchEntitiesEnumerator = sketchText.ConvertToGeometry("txt")&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Dim markGeometry As ObjectCollection = ThisApplication.TransientObjects.CreateObjectCollection&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; For Each oSE As SketchEntity In textSketchEntities&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; markGeometry.Add(oSE)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Next&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Dim markFeatures As MarkFeatures = def.Features.MarkFeatures&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Dim markStyle As MarkStyle = doc.MarkStyles.Item("Mark Surface")&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Dim markDef As MarkDefinition = markFeatures.CreateMarkDefinition(markGeometry, markStyle)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; markDef.Direction = PartFeatureExtentDirectionEnum.kNegativeExtentDirection&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; markFeatures.Add(markDef)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;'Rename the mark feature&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Try&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Dim oMark As MarkFeature&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;oMark = def.Features.MarkFeatures.Item(1)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;oMark.Name = "Mark: Part Number"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Catch&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MessageBox.Show("Feature not found, or new name is already in use.", "iLogic")&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;End Try&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;oTrans.End()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; End Sub&lt;/DIV&gt;&lt;DIV&gt;End Class&lt;/DIV&gt;&lt;DIV&gt;Public Class Selector&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Private WithEvents _interactEvents As InteractionEvents&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Private WithEvents _selectEvents As SelectEvents&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Private _stillSelecting As Boolean&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Private _inventor As Inventor.Application&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Public Sub New(ThisApplication As Inventor.Application)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _inventor = ThisApplication&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; End Sub&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Public Sub Pick()&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _stillSelecting = True&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _interactEvents = _inventor.CommandManager.CreateInteractionEvents&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _interactEvents.InteractionDisabled = False&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _interactEvents.StatusBarText = "Select a LinearGeneralDimension."&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _interactEvents.SetCursor(CursorTypeEnum.kCursorBuiltInLineCursor)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _selectEvents = _interactEvents.SelectEvents&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _selectEvents.WindowSelectEnabled = False&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _interactEvents.Start()&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Do While _stillSelecting&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _inventor.UserInterfaceManager.DoEvents()&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Loop&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _interactEvents.Stop()&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _inventor.CommandManager.StopActiveCommand()&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; End Sub&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Public Property SelectedObject As Face = Nothing&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Public Property ModelPosition As Point = Nothing&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Private Sub oSelectEvents_OnPreSelect(&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ByRef PreSelectEntity As Object,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ByRef DoHighlight As Boolean,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ByRef MorePreSelectEntities As ObjectCollection,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SelectionDevice As SelectionDeviceEnum,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ModelPosition As Point,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ViewPosition As Point2d,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; View As Inventor.View) Handles _selectEvents.OnPreSelect&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DoHighlight = False&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; If TypeOf PreSelectEntity Is Face Then&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; If TypeOf PreSelectEntity.Geometry Is Plane Then&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DoHighlight = True&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; End If&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; End If&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; End Sub&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Private Sub oInteractEvents_OnTerminate() Handles _interactEvents.OnTerminate&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _stillSelecting = False&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; End Sub&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Private Sub oSelectEvents_OnSelect(&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ByVal JustSelectedEntities As ObjectsEnumerator,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ByVal SelectionDevice As SelectionDeviceEnum,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ByVal ModelPosition As Point,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ByVal ViewPosition As Point2d,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ByVal View As Inventor.View) Handles _selectEvents.OnSelect&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SelectedObject = JustSelectedEntities.Item(1)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; If TypeOf SelectedObject Is Face Then&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; If TypeOf SelectedObject.Geometry Is Plane Then&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Me.SelectedObject = SelectedObject&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Me.ModelPosition = ModelPosition&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; End If&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; End If&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _stillSelecting = False&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; End Sub&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;End Class&lt;/DIV&gt;</description>
      <pubDate>Sun, 21 Apr 2024 23:54:38 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/place-a-mark-on-a-planar-face-where-clicked-ilogic/m-p/12723825#M166389</guid>
      <dc:creator>Rich-T</dc:creator>
      <dc:date>2024-04-21T23:54:38Z</dc:date>
    </item>
    <item>
      <title>Re: Place a Mark on a planar face where clicked - iLogic</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/place-a-mark-on-a-planar-face-where-clicked-ilogic/m-p/12724211#M166393</link>
      <description>&lt;P&gt;Is there a way to catch if the placed textbox overhangs the edge(s) of the selected face with an appropriate error message and restart the rule ?&lt;/P&gt;</description>
      <pubDate>Mon, 22 Apr 2024 06:14:18 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/place-a-mark-on-a-planar-face-where-clicked-ilogic/m-p/12724211#M166393</guid>
      <dc:creator>Rich-T</dc:creator>
      <dc:date>2024-04-22T06:14:18Z</dc:date>
    </item>
  </channel>
</rss>

