Jump to content
    

Altium как удалить SOURCE LIBRARY NAME из описания компонента

Создаю новую библиотеку. Копирую компоненты из разных библиотек. При этом в свойствах компонента остается информация о родительской библиотеке- SOURCE LIBRARY NAME .Его видно в тексте файла, и оно лезет при попытке добавления посадочного места. И пусть бы лезло, но при этом, при вставлении компонента на схему у него пустой designe item ID и footprint не находится. Вот пример https://yadi.sk/d/WM6XO07ZhQBxq

Share this post


Link to post
Share on other sites

До чего не добраться руками - можно скриптами попробовать.

Как-то баловался с именем библиотеки

 

Procedure SetPcbLib;
Var
   Board : IPCB_Board;
   Component : IPCB_Component;
   Iterator : IPCB_BoardIterator;
Begin
   Board := PCBServer.GetCurrentPCBBoard;
   If Board = Nil Then Exit;

   Iterator := Board.BoardIterator_Create;
   Iterator.AddFilter_ObjectSet(MkSet(eComponentObject));
   Iterator.AddFilter_LayerSet(AllLayers);
   Iterator.AddFilter_Method(eProcessAll);

   Component := Iterator.FirstPCBObject;
   While (Component <> Nil) Do
   Begin
     Component.SetState_SourceFootprintLibrary('RF(MotherBoard).PcbLib');
     Component := Iterator.NextPCBObject;
   End;

   Board.BoardIterator_Destroy(Iterator);

   ShowMessage('Ok!');
End;

Share this post


Link to post
Share on other sites

Паскаль?...! Т.е. слухи о связи Альтиума с Дельфи это не слухи?)) Скрипты...не, пока не готов. До за идею спасибо.

Share this post


Link to post
Share on other sites

У меня похожая проблема в PCB.

На плате надо перевести ссылки на новую библиотеку.

Обновление со схемы сделала.

На вид вижу, что элементы уже из новой биб-ки.

А ссылка старая (графа Library описания футпринта). В отчете Bill of materials показывает новую библиотеку.

Думаю - вдруг потом при корректировке будут проблемы, будут как-то не так обновляться при последующих изменения библ-ки.

Неохота каждый элемент тыкать и переназначать библ-ку.

 

Косяк Альтиума?

 

Share this post


Link to post
Share on other sites

В общем вот так можно менять и смотреть параметры в SchLib. Даже те, к которым нет доступа (DatabaseTableName и т.п. )

Procedure GenerateReport(Report : TStringList);
Var
    Document : IServerDocument;
Begin
    Report.Insert(0,'Schematic Library Report');
    Report.Insert(1,'------------------------------');
    Report.SaveToFile('D:\LibraryReport.txt');

    Document := Client.OpenDocument('Text','D:\LibraryReport.txt');
    If Document <> Nil Then
        Client.ShowDocument(Document);
End;
{..............................................................................}

{..............................................................................}
Procedure LookInsideALibrary;
Var
    CurrentLib      : ISch_Lib;
    LibraryIterator : ISch_Iterator;
    AnIndex         : Integer;
    i               : integer;
    LibComp         : ISch_Component;
    S               : TDynamicString;
    ReportInfo      : TStringList;
Begin
    If SchServer = Nil Then Exit;
    CurrentLib := SchServer.GetCurrentSchDocument;
    If CurrentLib = Nil Then Exit;

    // check if the document is a schematic library and if not
    // exit.
    If CurrentLib.ObjectID <> eSchLib Then
    Begin
         ShowError('Please open schematic library.');
         Exit;
    End;

    // get the library object for the library iterator.
    LibraryIterator := CurrentLib.SchLibIterator_Create;

    // Note MkSet function to create a set compatible with the
    // Scripting engine since sets not supported.
    LibraryIterator.AddFilter_ObjectSet(MkSet(eSchComponent));

    // Create a TStringList object to store data
    ReportInfo := TStringList.Create;

    // use of Try / Finally / End exception block to
    // trap exceptions and exit gracefully.
    Try
        // find the aliases for the current library component.
        LibComp := LibraryIterator.FirstSchObject;
        While LibComp <> Nil Do
        Begin
            ReportInfo.Add(LibComp.LibReference + ' ' + LibComp.Designator.Text);
            ReportInfo.Add(LibComp.SourceLibraryName);
            ReportInfo.Add(LibComp.DatabaseTableName);
            ReportInfo.Add(LibComp.DatabaseLibraryName);
            ReportInfo.Add(LibComp.CurrentPartID);
            ReportInfo.Add(LibComp.TargetFileName);
            LibComp.DatabaseTableName :='';
            LibComp.SetState_SourceLibraryName :='*';
            ReportInfo.Add('');
            // obtain the next schematic symbol in the library
            LibComp := LibraryIterator.NextSchObject;
        End;
    Finally
        // we are finished fetching symbols of the current library.
        CurrentLib.SchIterator_Destroy(LibraryIterator);
    End;

    GenerateReport(ReportInfo);
    ReportInfo.Free;
End;
{..............................................................................}

{..............................................................................}
End.

Edited by Real_Bastard

Share this post


Link to post
Share on other sites

слухи о связи Альтиума с Дельфи это не слухи?

 

На самом деле он написан на делфи и это не секрет и не слухи.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...