2013-03-04 2 views
1

Я работаю в формальном модуле с одним типом ссылок. Эти ссылки (мы называем это как ссылки типа X) выполняются на 4 уровнях глубины из 4 различных формальных модулей. Например, я работаю в модуле A, который имеет встроенные ссылки из модуля B, которые имеют встроенные ссылки из модуля C, которые имеют встроенные ссылки из модуля D.Показать столбцы DXL из других модулей

У меня есть представление, которое отображается в разных столбцах каждый уровень связи: Столбец 1: Глубина 1 ссылка (AB), Столбец 2: Глубина 2 ссылки (BC), Столбец 3: Глубина 3 ссылки (CD).

Каждый столбец порождается сценарием следующим образом:

pragma runLim, 0 
    int lines[4] = {0, 0, 0, 0} 
    void adjustLines(int depth, showAtDepth) { 
    int count 
    for (count = 0; count < 4; count++) { 
    while (lines[depth-1] < lines[count]) { 
     if (depth == showAtDepth) displayRich("\\pard " " ") 
     lines[depth-1]++ 
    } 
    } 
} 
void showIn(Object o, int depth) { 
Link l 
LinkRef lr 
ModName_ otherMod = null 
Module linkMod = null 
ModuleVersion otherVersion = null 
Object othero 
string disp = null 
string s = null 
string plain, plainDisp 
int plainTextLen 
int count 
bool doneOne = false 

    string linkModName = "../links/TYPE X" 
    for lr in all(o<-linkModName) do { 
     otherMod = module (sourceVersion lr) 
     if (!null otherMod) { 
      if ((!isDeleted otherMod) && (null data(sourceVersion lr))) { 
       load((sourceVersion lr),false) 
      } 
     } 
    } 
    for l in all(o<-linkModName) do { 
     otherVersion = sourceVersion l 
     otherMod = module(otherVersion) 
     if (null otherMod || isDeleted otherMod) continue 
     othero = source l 
     if (null othero) { 
      load(otherVersion,false) 
     } 
     othero = source l 
     if (null othero) continue 
     if (isDeleted othero) continue 
     int oldLines = lines[depth-1] 
     adjustLines(depth, 1) 
     bool kick = (doneOne) && (lines[depth-1] == oldLines) 
     if (kick) { 
      lines[depth-1]++ 
      if (depth == 1) displayRich("\\pard " " ") 
     } 
     if (depth < 4) { 
      showIn(othero, depth+1) 
     } 
     doneOne = true 
     if (depth == 1) { 
      s = name(otherMod) 
      if (isBaseline(otherVersion)) { 
       s = s " [" versionString(otherVersion) "]" 
      } 

     s = "{\\b " s " : }" 
     s = s " " probeRichAttr_(othero,"Object Heading", false) 
     s = s " " probeRichAttr_(othero,"Object Text", false) 

     displayRich s 

     } 
     lines[depth-1] += 3 
    } 
} 
showIn(obj,1) 

Однако в настоящее время, я должен добавить новый столбец, который содержит другой тип линии связи (тип Y), образованного между модулем C и другим новым модулем сделать не связанный напрямую с моим модулем (A). К счастью, у меня есть эти отношения в столбце в модуле C (как макет dxl).

Как я могу показать в своем модуле (A) этот столбец, сохраненный в виде модуля (C), который будет сохранен в моем текущем представлении?

Заранее спасибо за сотрудничество и помощь

+0

Я думаю, что самым простым решением было бы сделать макет DXL у вас в модуле C атрибутом DXL. Если вы конвертируете Layout DXL в атрибут DXL, вы можете просто вызвать его непосредственно из вашего макета DXL в модуле A. Если вы разместите свой макет DXL из модуля C, я могу помочь вам изменить его для работы в качестве атрибута DXL. –

ответ

0

Следуйте Тип X ссылку на модуль C, а затем следует тип Y ссылке.

Изменение:

string linkModName = "../links/TYPE X" 

To:

string linkModName = (depth<3) ? "../links/TYPE X" : "../links/TYPE Y" 

Вам может понадобиться разное количество, как я не уверен, что из вас структуры.

Смежные вопросы