Скрипт dxl для вставки содержимого буфера обмена в выбранные объекты - PullRequest
0 голосов
/ 29 апреля 2019

Я хочу добавить содержимое буфера обмена в существующий объектный текст, используя скрипт dxl.

Я искал, включая dxl_reference_manual, но ничего не помогло.

У выделенного объекта есть некоторый текст, например "Уже"существующий текст в этом объекте »и содержимое буфера обмена, например« Мой текст буфера обмена »должен добавляться в начале и формироваться как один объект.

(Вывод должен быть примерно таким, как показано ниже в одном объекте.)

My Clipboard text Уже существующий текст в этом объекте

Мой код:

Skip    fGetSelectedObjects(Module in_mod) 
{     
    Skip    skpObjects = create()  // Return KEY and DATA both 'Object'
    if (null in_mod) return(skpObjects)
    Object  oCurr = current,
                    o
    for o in entire (in_mod) do
    {  if (isSelected(o)   or
           o == oCurr)              put(skpObjects, o, o)
    }
    return(skpObjects)
}     // end fGetSelectedObjects()
Skip    skpObjects = fGetSelectedObjects(current Module)
Object  o

for o in skpObjects do
{   // deal with the selected o
string s = o."Object text"
// I don't know the way to activate the object text attribute instead  of manual click. Thus it loops through selection and pastes the clipboard contents. 

  pasteToEditbox

//For Single Indentation use 360 points, double indentation 720 points and so on...

o."Object text" = richText (applyTextFormattingToParagraph(richText s,false,360,0))      

}
delete(skpObjects)

1 Ответ

0 голосов
/ 29 апреля 2019

Не уверен, почему вы будете использовать Skip для этого.Я хотел бы сделать следующее:

// Create Variables
Module mod = current
Object obj = null
Buffer buf = create
string str = stringOf ( richClip )

// Loop through Module
for obj in entire ( mod ) do {
    // Grab the rich text from the clip and reset the buffer
    buf = str
    // Check if it's selected and object heading is empty
    if ( ( isSelected ( obj ) ) && ( obj."Object Heading" "" == "" ) ) {
        // If it is, add the text to the buffer
        buf += " " richText ( obj."Object Text" )
        // Set the object text with the clip stuff in front
        obj."Object Text" = richText ( buf )
    }
}

delete buf

Следует отметить, что это работает только для элементов, которые были специально выбраны.

Редактирование - добавлено исключение для объектов с заголовком объекта.К сожалению, DOORS не позволяет (насколько мне известно) выбор несмежных объектов (эквивалент Ctrl-левый щелчок в Windows), что может быть очень неприятно.

...