<?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 Re: How to implement IDuplicateTypesNameHandler, for the CopyPasteOptions Class? in Revit API Forum</title>
    <link>https://forums.autodesk.com/t5/revit-api-forum/how-to-implement-iduplicatetypesnamehandler-for-the/m-p/4940562#M77230</link>
    <description>&lt;P&gt;Thanks for the solution&lt;/P&gt;</description>
    <pubDate>Mon, 07 Apr 2014 15:59:35 GMT</pubDate>
    <dc:creator>Anonymous</dc:creator>
    <dc:date>2014-04-07T15:59:35Z</dc:date>
    <item>
      <title>How to implement IDuplicateTypesNameHandler, for the CopyPasteOptions Class?</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/how-to-implement-iduplicatetypesnamehandler-for-the/m-p/4923746#M77228</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I create a function to load an specific TextType, needed on my addin.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's what the function does&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;First the function validates that the name of the text type exist on the current project&lt;/LI&gt;&lt;LI&gt;If it doesn't exist the addin copy from a resource a base Revit project file that contains the text type, and open it.&lt;/LI&gt;&lt;LI&gt;Once opened it search for the TextType and copied with the method ElementTransformUtils.CopyElements to the current Revit Project.&lt;/LI&gt;&lt;LI&gt;Finally the base Revit project is closed&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;It works fine, but each time the TextType is copied I received a warning message saying the following Types already exist but are different.&lt;/P&gt;&lt;P&gt;And show the following details&lt;/P&gt;&lt;P&gt;Arrow 30 Degree&lt;/P&gt;&lt;P&gt;Arrowhead: Arrow 30 Degree.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Since I'm not copying those elements I would like to remove the message.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Searching on the Revit documentation I found that the CopyPasteOptions could remove it, using the&amp;nbsp;SetDuplicateTypeNamesHandler method that uses IDuplicateTypeNamesHandler, but I haven't found how to implement that interface.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'll appreciate any help&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the snippet of my function&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal static void LoadTextTypes()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FilteredElementCollector textNoteTypes = new FilteredElementCollector(Revit_App.RevDef.RevitDoc);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; textNoteTypes.OfClass(typeof(TextNoteType));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var type = from text in textNoteTypes&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where text.Name == "Vialdi Text"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select text as TextNoteType;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (type.Count() &amp;gt; 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string path = System.IO.Path.Combine(Revit_App.App.AppDirectory.FullName, "baseProject.rvt");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.IO.File.WriteAllBytes(path, Media.BaseProject);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Document baseDocument = Revit_App.RevDef.RevitApp.OpenDocumentFile(path);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; textNoteTypes = new FilteredElementCollector(baseDocument);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; textNoteTypes.OfClass(typeof(TextNoteType));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type = from text in textNoteTypes&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where text.Name == "Vialdi Text"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select text as TextNoteType;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;ElementId&amp;gt; textTypes = new List&amp;lt;ElementId&amp;gt;();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; textTypes.Add(type.First().Id);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Transaction tra = new Transaction(Revit_App.RevDef.RevitDoc, "copy");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tra.Start();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ElementTransformUtils.CopyElements(baseDocument, textTypes, Revit_App.RevDef.RevitDoc, null, new CopyPasteOptions());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tra.Commit();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; baseDocument.Close();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And here is the warning message&lt;/P&gt;&lt;P&gt;&lt;IMG alt="Duplicate Tyeps" title="Duplicate Tyeps" src="https://forums.autodesk.com/t5/image/serverpage/image-id/90252i384BF0E217931380/image-size/original?v=mpbl-1&amp;amp;px=-1" border="0" align="middle" /&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 31 Mar 2014 18:53:45 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/how-to-implement-iduplicatetypesnamehandler-for-the/m-p/4923746#M77228</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2014-03-31T18:53:45Z</dc:date>
    </item>
    <item>
      <title>Re: How to implement IDuplicateTypesNameHandler, for the CopyPasteOptions Class?</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/how-to-implement-iduplicatetypesnamehandler-for-the/m-p/4926792#M77229</link>
      <description>&lt;P&gt;Hello Miguel Alanis:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I believe the problem is caused by the existence of nested families (types) referenced by the text type you attempt to copy. In other words, you do copy a type that does not exist yet, but which contains other nested types that do exists already in the target document, either as standalone or nested in other families.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In your particular case it seems you do not worry about that, therefore you should simply set the copy option to ignore such cases, meaning you give it an instance of your custom &lt;STRONG&gt;IDuplicateTypeNamesHandler&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;CopyPasteOptions options = new CopyPasteOptions();
Options.SetDuplicateTypeNamesHandler(new MyCopyHandler());&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Where the class MyCopyHandler is an implementation of the IDuplicateTypeNamesHandler, for example:&lt;/P&gt;
&lt;PRE&gt;public MyCopyHandler : IDuplicateTypeNamesHandler
{
   public DuplicateTypeAction OnDuplicateTypeNamesFound()
   {
      return DuplicateTypeAction.UseDestinationTypes;
   }
}&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;SPAN style="line-height: 15px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;(&lt;EM&gt;Note: I typed the above code directly in this post just to illustrate the case. Please make sure to adjust it so it compiles&lt;/EM&gt; &lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Arnošt Löbel&lt;/P&gt;
&lt;P&gt;Sr. Principal Engineer&lt;/P&gt;
&lt;P&gt;Autodesk, Revit R&amp;amp;D&lt;/P&gt;</description>
      <pubDate>Tue, 01 Apr 2014 17:53:42 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/how-to-implement-iduplicatetypesnamehandler-for-the/m-p/4926792#M77229</guid>
      <dc:creator>arnostlobel</dc:creator>
      <dc:date>2014-04-01T17:53:42Z</dc:date>
    </item>
    <item>
      <title>Re: How to implement IDuplicateTypesNameHandler, for the CopyPasteOptions Class?</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/how-to-implement-iduplicatetypesnamehandler-for-the/m-p/4940562#M77230</link>
      <description>&lt;P&gt;Thanks for the solution&lt;/P&gt;</description>
      <pubDate>Mon, 07 Apr 2014 15:59:35 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/how-to-implement-iduplicatetypesnamehandler-for-the/m-p/4940562#M77230</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2014-04-07T15:59:35Z</dc:date>
    </item>
  </channel>
</rss>

