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
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
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