Zobrazit plnou verzi příspěvku: iLogic Title Block

PopelkaM
01.11.2019, 09:40
Dobrý den,pokouším se iLogicem vyměnit staré razítko za nové ve výkrese viz. pravidlo níže.Nové razítko vloží do zdrojů výkresu ,ale nevloží do výkresu.Problém je ,že razítko má texty s výzvou a to není v pravidle ošetřeno....Poradí mě někdo...Děkuji Popelka---------------------------------------------------------------------------ThisDrawing.ResourceFileName = "cesta ksouboru idw"ThisDrawing.KeepExtraResources = FalseDim oSheets As SheetsoDoc = ThisDoc.DocumentDim oSheet As Sheet    For Each oSheet In oDoc.Sheets        oSheet.Activate            ActiveSheet.TitleBlock = "nové razítko"            Next

Navara
01.11.2019, 11:21
Tohle je trochu složitější úloha. Podle mě na to iLogic žádnou zvláštní podporu neposkytuje a je potřeba to udělat přes plné API.V nápovědě k API Inventrou je uveden příklad ve VBA na definici a vložení rohového razítka, který není problém upravit pro iLogic.Příklad najdete pod heslem [code]TitleBlock Object[/code] (kopírovat ho sem nebudu)Pro vložení razítka je potřeba použít přímo metodu [code]Sheet.AddTitleBlock Method[/code] a pokud nové razítko obsahuje zadání s výzvou, je argument [code]PromptStrings[/code] povinný a musí obsahovat přesně daný počet textů, který odpovídá počtu výzev v razítku v pořadí, v jakém se výzvy zadávají do razítka.Pokud i původní razítko obsahuje vyplněná zadání s výzvou, které je potřeba přenést, tak se situace ještě více komplikuje, protože je potřeba tyto hodnoty před vymazáním razítka přečíst a správně zapsat do nového razítka.

PopelkaM
01.11.2019, 13:46
Děkuji za info.Vkládání funguje...Makro níže počítá s tím ,že razítko je ve zdrojích aktuálního výkresu.Potřebuji udělat to co bylo v iLogicu.Aby se razítko do výkresu zkopírovalo ze souboru *.idw.Můžete mě ještě poradit?Děkuji Popelka--------------------------------------------------------------------------------------Public Sub InsertTitleBlockOnSheet()    ' Set a reference to the drawing document.    ' Nastavte odkaz na výkresový dokument        ' This assumes a drawing document is active.       Dim oDrawDoc As DrawingDocument    Set oDrawDoc = ThisApplication.ActiveDocument    ' Obtain a reference to the desired border defintion.           Dim oTitleBlockDef As TitleBlockDefinition    Set oTitleBlockDef = oDrawDoc.TitleBlockDefinitions.Item("CNHI")    Dim oSheet As Sheet    Set oSheet = oDrawDoc.ActiveSheet    ' Check to see if the sheet already has a title block and delete it if it does.           If Not oSheet.TitleBlock Is Nothing Then        oSheet.TitleBlock.Delete    End If    ' This title block definition contains one prompted string input.  An array        ' must be input that contains the strings for the prompted strings.'            Dim sPromptStrings(1 To 22) As String    sPromptStrings(1) = ""    sPromptStrings(2) = ""    sPromptStrings(3) = ""    sPromptStrings(4) = ""    sPromptStrings(5) = ""    sPromptStrings(6) = ""    sPromptStrings(7) = ""    sPromptStrings(8) = ""    sPromptStrings(9) = ""    sPromptStrings(10) = ""    sPromptStrings(11) = ""    sPromptStrings(12) = ""    sPromptStrings(13) = ""    sPromptStrings(14) = ""    sPromptStrings(15) = ""    sPromptStrings(16) = ""    sPromptStrings(17) = ""    sPromptStrings(18) = ""    sPromptStrings(19) = ""    sPromptStrings(20) = ""    sPromptStrings(21) = ""    sPromptStrings(22) = ""        ' Add an instance of the title block definition to the sheet.    Dim oTitleBlock As TitleBlock    Set oTitleBlock = oSheet.AddTitleBlock(oTitleBlockDef, , sPromptStrings)End Sub

Navara
01.11.2019, 14:20
Třeba takhle[code]Dim sourceIdw As DrawingDocument = ThisApplication.Documents.Open("C:\Source.idw")Dim targetIdw As DrawingDocument= ThisApplication.Documents.Open("C:\Target.idw")Dim replaceExisting As Boolean = TrueDim sourceTitleBlockDef As TitleBlockDefinition = sourceIdw.TitleBlockDefinitions("TitleBlockName")Dim targetTitleBlockDef As TitleBlockDefinition = sourceTitleBlockDef.CopyTo(targetIdw,replaceExisting)[/code]

PopelkaM
01.11.2019, 14:42
Děkuji za ochotu vyzkouším...Popelka