Перейти к публикации

Автоматизировать создание классифицируемого объекта при создании ICO в классификаторе


asterixik

Рекомендованные сообщения

Teamcenter 8.3 толстытй клиент

Суть задачи в следующем: Классы в классификаторе созданы предварительно. Сейчас пользователю приходится создавать ICO, потом создавать Item, заполнять у Item аналогичное ICO наименование, и затем классифицировать этот Item с помощью ICO. Хоется этот процесс несколько упростить, так как предстоит создание нескольких тысяч ICO.

 

Хочется сделать: ответственная персона создает в классификаторе ICO, и затем либо автоматически, либо по команде меню создается классифицируемый этим ICO объект, т.е. например пользователь после создания ICO (этот ICO активен), нажимает кнопку на панели инструментов, появляется окно с выбором типа создаваемого классифицируемого объекта (материал, пки, стандартное изделие и т.п.), и после выбора автоматически создается item нужного типа, инфа для которого (наименование, значения атрибутов) берется из активного ICO  и это объект затем классифицируется активным ICO.

 

Возможно существует стандартная возможность ТС по упрощению процесса создания связанного объекта?

 

Но так или иначе, начал смотреть в сторону кастомизации толстого клиента. И тут незадача, в гайде по кастомизаци полно инфы о том как отобразить ту или иную информацию с Java, а вот как создать итем (с ревизией, мастер формами и т.п.) информации нет совсем. Java практически не знаю (паскалист), курсы по программированию в TC проходил 1,5 года назад, но оно не надо было раньше, и забылось почти все.

 

Отсюда вопросы:

Может кто-нибудь подскажет куда искать/смотреть, или примерчиками поделится  :rolleyes:

Ну или возможно проблема надуманная, и кто-нибудь знает как её проще решить.

 

Сам ранее работал напрямую с БД ТС, а тут вот надо толстого клиента кастомизировать. Напрямую думал создавать записи в БД, но как-то много очень надо таблиц править, боюсь напутать и запортить чего-нибудь.

 

Заранее спасибо.

 

Ссылка на сообщение
Поделиться на других сайтах


Сам ранее работал напрямую с БД ТС, а тут вот надо толстого клиента кастомизировать. Напрямую думал создавать записи в БД, но как-то много очень надо таблиц править, боюсь напутать и запортить чего-нибудь.
 

НИКОГДА НЕ ПИШИТЕ В БАЗУ TC НАПРЯМУЮ!


Ну или возможно проблема надуманная, и кто-нибудь знает как её проще решить.
 

а чего вы на выходе хотите получить?

в чем прикол то?

Ссылка на сообщение
Поделиться на других сайтах

Так я и не пишу. У меня пока была необходимость отображать ту или иную информацию из БД ТС. В принципе наработки по редактированию есть кое-какие, но в продакшен они не пошли.

 

Прикол в том чтобы облегчить работу людям наполняющим классификатор.

 

Сейчас: они создают в классификаторе ICO, заполняют необходимые атрибуты. Потом Идут в Мой Teamcenter, создают там Item нужного типа, наименовывают его так же как и ICO, заполняют если есть свойства мастер-формы аналогично атрибутам ICO, и затем классифицируют этот Item (точнее Item Revision) созданным ICO. Так есть на данный момент.

 

А хочется чтобы: создали ICO, заполнили атрибуты, потом либо по нажатию кнопки сохранения нового ICO, либо по нажатию отдельной кнопки (выполнения команды меню), по активному ICO  выдавался бы запрос типа создаваемого Item-а (в идеале хорошо бы завязать как-нибудь типы создаваемых Item-ов на классы классификатора) и затем создавался бы  Item, наименование которого бы совпадало с наименованием ICO, и часть инфы из атрибутов ICO заполнялось бы в ассоциированные свойства мастер-формы (в идеале!), и после этого Item бы классифицировался этим самым ICO.

 

То бишь облегчить и ускорить ввод инфы в классификатор ТС. На выходе хочется получить заполненный классификатор, в котором каждый ICO будет иметь классифицированный им Item, готовый для использования в разработке КД.

 

Вариант с заполнением инфы в Excel и генерацией PLMXML с последующим импортом пройден, и отклонен из-за большего варианта ошибки пользователя при вводе инфы.

 

З.Ы.: Идея решить задачу прямой записью в БД ТС была, но прикинул какую кучу записей о новых объектах, и ещё большую кучу записей о связях между этими объектами придется  создавать... и как-то не рискнул.

Изменено пользователем asterixik
Ссылка на сообщение
Поделиться на других сайтах

именно так - писать код.

 

+ вы можете атрибуты объектов (не всех типов,увы) производных от workspaceobject связывать с атрибутами классов классификатора, отрпаляя какой нить айтем в какой нить класс, атрибуты последнего всосут величины из атрибутов айтема, не решение вашей задачи но так, для справки.

Ссылка на сообщение
Поделиться на других сайтах

именно так - писать код.

 

+ вы можете атрибуты объектов (не всех типов,увы) производных от workspaceobject связывать с атрибутами классов классификатора, отрпаляя какой нить айтем в какой нить класс, атрибуты последнего всосут величины из атрибутов айтема, не решение вашей задачи но так, для справки.

Так в том то и проблема, что в идущем с ТС rich_client_customization_programmer_gd.pdf есть примеры того как отображается информация о тех или иных объектах ТС, но совершенно нет примеров добавления/редактирования информации об объектах ТС. 

 

Т.е. совершенно не понятно как там это делается. Да с учетом практически 0-вых знаний Java - вообще беда. 

 

Коллеги, откуда вы берете информацию по разработке на Java для толстого клиента? Может кто-нибудь примерчиками хотя бы какими-нибудь поделится, или направит в нужное русло  поиска знаний.

Ссылка на сообщение
Поделиться на других сайтах

Т.о. по сути задача сводится к следующим подзадачам насколько я понимаю:

  1. Вывести диалог с выбором типа Item-а
  2. Получить выделенный ICO
  3. Создать Item типа выбранного в п.1 и наименования в соответствие с п.2
  4. Заполнить свойства Item-а инфой из п.2
  5. Классифицировать ревизию п3. -> п.2

Может кто-нибудь предоставить примеры кода помогающего решить подставленные подзадачи, или хотя бы дающег направления для дальнейших изысканий? Просмотрел форумы на GTAC - ничего подходящего не нашёл :-(

Ссылка на сообщение
Поделиться на других сайтах

 

Может кто-нибудь предоставить примеры кода помогающего решить подставленные подзадачи, или хотя бы дающег направления для дальнейших изысканий? Просмотрел форумы на GTAC - ничего подходящего не нашёл :-(

 на gtac помимо форумов есть и sarch solution center. там полно примеров кода ITK(c/c++)

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

есть еще SOA

 

выбирайте

Ссылка на сообщение
Поделиться на других сайтах

Думаю попробовать реализовать с помощью SOA приложение, которое будет отображать дерево классификатора, пользователь выбирает в дереве класс и тип item-а, и  затем для всех ICO в этом классе у которых нет классифицированных Item-ов создавать item-ы выбранного типа и классифицировать этими ICO. Как-то так. Немного не то что хотелось, но по SOA хотя бы примеров больше есть.


Коллеги, если у кого-нибудь есть информация прошу тут отписать или в ЛС кинуть, существуют в РФ где-нибудь порядошные курсы по разработке под ТС, так как у нас то курс для разработчика интеграторы наши провели, но там курс по сути представлял собой озвучивание и выполнение на практике того что описано в rich client customization programmer's guide, а там в основном все по представлению/отображению информации в ТС, и совершенно ничего нет по поводу создания/добавления и редактирования.

Изменено пользователем asterixik
Ссылка на сообщение
Поделиться на других сайтах
на ява не обязательно все вчистую делать. можно на ява сделать интерфейс, а сам код написать на ITK и вызывать из java.
 

лучше всего.


Думаю попробовать реализовать с помощью SOA приложение, которое будет отображать дерево классификатора, пользователь выбирает в дереве класс и тип item-а, и  затем для всех ICO в этом классе у которых нет классифицированных Item-ов создавать item-ы выбранного типа и классифицировать этими ICO. Как-то так. Немного не то что хотелось, но по SOA хотя бы примеров больше есть.


Коллеги, если у кого-нибудь есть информация прошу тут отписать или в ЛС кинуть, существуют в РФ где-нибудь порядошные курсы по разработке под ТС, так как у нас то курс для разработчика интеграторы наши провели, но там курс по сути представлял собой озвучивание и выполнение на практике того что описано в rich client customization programmer's guide, а там в основном все по представлению/отображению информации в ТС, и совершенно ничего нет по поводу создания/добавления и редактирования.

к сименсу

Ссылка на сообщение
Поделиться на других сайтах

Коллеги, если у кого-нибудь есть информация прошу тут отписать или в ЛС кинуть, существуют в РФ где-нибудь порядошные курсы по разработке под ТС, так как у нас то курс для разработчика интеграторы наши провели, но там курс по сути представлял собой озвучивание и выполнение на практике того что описано в rich client customization programmer's guide, а там в основном все по представлению/отображению информации в ТС, и совершенно ничего нет по поводу создания/добавления и редактирования.

бред.

как у сименса так и у партнеров интеграторов есть курсы по программированию,в основном ITK и JAVA. Там не только про отображение. И даже в стандартных мануалах ест ьпримеры как писать редактировать в те же формы, свойства объектов. 

У ряда интеграторов есть уже большой опыт не просто инсталляции но и кастомизации тимцентра, соответственно есть шанс попросить провести более узкоспециализированный тренинг с учетом ваших вопросов.

 

Найдите в интернете контакты известных компаний интеграторов решений сименс, выходите на связь,и если устраивает цена/предложения - пробуйте

Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...

У нас похожий процесс реализован в тонком клиенте с помощью TC script, т.е. ITK  по сути. Там все просто - после заполнения формы со свойствами ICO и нажатия "Сохранить", создается айтем и его ревизия классифицируется. строчек 15 наверное на все. в толстом клиенте будет посложней 

Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...

В конечном счете задача реализована посредством разбора декомпилированных плагинов идущих с Teamcenter. В итоге создан плагин для RAC TC который вызывается по кнопке в меню инструментов Классификатора, при нажатии которой выводится диалоговое окно, в которое необходимо ввести ID, наименование и выбрать из выпадающего списка тип создаваемого Item-а (обязателен только тип), далее в Teamcenter автоматически создается Item (реализацию создания Item нашел в одном из плагинов разработанных интегратором), затем созданный Item копируется в буфер обмена и после этого вставляется из буфера обмена в выбранный класс Классификатора (реализацию копирования Item в буфер обмена и вставки из буфера в Классификатор нашел в плагинах идущих с TC), с соответствующим созданием ICO.
 
Ну и пример кода моей реализации, а то что-то в ветке примеров маловато.
 
Класс-помощник работы с TCComponent

package ru.cccp3d.helpers;

import com.teamcenter.rac.aif.ApplicationDef;
import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentBOMViewRevision;
import com.teamcenter.rac.kernel.TCComponentBOMViewRevisionType;
import com.teamcenter.rac.kernel.TCComponentDataset;
import com.teamcenter.rac.kernel.TCComponentDatasetType;
import com.teamcenter.rac.kernel.TCComponentFolder;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCComponentItemType;
import com.teamcenter.rac.kernel.TCComponentViewType;
import com.teamcenter.rac.kernel.TCComponentViewTypeType;
import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCSession;

public class TCComponentsHelper
 {
   private static final TCSession session = (TCSession)AIFUtility.getDefaultSession();
   
   public static TCComponentDataset createDataset(String type, String name) throws TCException {
     return createDataset(type, name, "");
   }
   
   public static TCComponentDataset createDataset(String type, String name, String tool) throws TCException {
     TCComponentDatasetType typeDS = (TCComponentDatasetType)session.getTypeComponent("Text");
     TCComponentDataset dataSet = typeDS.create(name, name, type, tool);
     return dataSet;
   }
   
   public static TCComponentItem createItem(String id, String rev, String type, String name) throws TCException {
     TCComponentItem search = searchItem(id);
     if (search == null) {
       TCComponentItemType typeItem = (TCComponentItemType)session.getTypeComponent("Item");
       search = typeItem.create(id, rev, type, name, "", new TCComponent());
       return search;
     }
     return null;     
   }
   
   public static TCComponentItem searchItem(String id) throws TCException
   {
     TCComponentItemType type = (TCComponentItemType)session.getTypeComponent("Item");
     TCComponentItem item = type.find(id);
     return item;
   }
   
   public static void addToNewStuff(TCComponentItem object) {
     try {
       TCComponentFolder newStuffFolder = session.getUser().getNewStuffFolder();
       addItemToFolder(object, newStuffFolder);
     } catch (TCException e) {
       e.printStackTrace();
     }
   }
   
   public static void addItemToFolder(TCComponentItem createItem, TCComponentFolder folder) {
     if (folder == null) {
       return;
     }
     try {
       folder.add("contents", createItem);
     }
     catch (Exception localException) {}
   }
   
   public static void openInTC(TCComponent comp) {
     ApplicationDef applicationDef = AIFUtility.getAIFApplicationDefMgr().getApplicationDef("com.teamcenter.rac.ui.perspectives.navigatorPerspective");
     applicationDef.openApplication(new com.teamcenter.rac.aif.kernel.InterfaceAIFComponent[] { comp });
   } 
 
   public static void copyToClipBoard(TCComponent comp) {} 
 
   public static void createDefaultBomView(TCComponentItem item)
   {
     try
     {
       TCComponentItemRevision rev = item.getLatestItemRevision();
       TCComponentBOMViewRevision createBVR = createBVR(rev, "View");
       createBVR.save();
       rev.lock();
       rev.save();
       rev.unlock();
     } catch (TCException e) {
       e.printStackTrace();
     }
   }
   
   public static TCComponentViewType findBOMViewType(String sBOMViewType, TCSession session) {
     TCComponentViewType vt = null;
     try {
       TCComponentViewTypeType tc_vtt = (TCComponentViewTypeType)session.getTypeComponent("PSViewType");
       TCComponent[] array_vt = tc_vtt.extent();
       for (int i = 0; i < array_vt.length; i++)
         if (array_vt[i].toString().equals(sBOMViewType)) {
           vt = (TCComponentViewType)array_vt[i];
           break;
         }
     } catch (TCException ex) {
       ex.printStackTrace();
     }
     return vt;
   }
   
   public static TCComponentBOMViewRevision createBVR(TCComponentItemRevision ir, String bv_type) throws TCException {
     TCSession session = ir.getSession();
     TCComponentBOMViewRevision bvr = null;
     TCComponentViewType vt = findBOMViewType(bv_type, session);
     TCComponentBOMViewRevisionType tc_bvr = (TCComponentBOMViewRevisionType)session.getTypeComponent("BOMView Revision");
     bvr = tc_bvr.create(ir.getItem().getProperty("item_id"), ir.getProperty("item_revision_id"), vt, false);
     return bvr;
   }
 }

Класс-помощник для "общения" с окном

 
package ru.cccp3d.helpers;
 
public class TCItemHelper {
 
private String m_id;
private String m_rev;
private String m_type;
private String m_name;
 
public TCItemHelper(String id, String rev, String type, String name) {
m_id = id;
m_rev = rev;
m_type = type;
m_name = name;
}
 
public void setId(String paramString) {
this.m_id = paramString;
}
 
public String getId() {
return this.m_id;
}
 
public void setRev(String paramString) {
this.m_rev = paramString;
}
 
public String getRev() {
return this.m_rev;
}
 
public void setType(String paramString) {
this.m_type = paramString;
}
 
public String getType() {
return this.m_type;
}
 
public void setName(String paramString) {
this.m_name = paramString;
}
 
public String getName() {
return this.m_name;
}
 
}

 
Класс диалогового окна, за основу взят TitleAreaDialog просто потому что нашел пример с ним в интернете, в принципе можно взять какой-нибудь другой класс из org.eclipse.jface.dialogs

 
packagepackage ru.cccp3d.components;
 
import java.awt.BorderLayout;
import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
 
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JTextField;
 
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Shell;
 
import ru.cccp3d.helpers.TCItemHelper;
 
public class NewItemDialog extends TitleAreaDialog {
 
    private String selectedButton;
    private TCItemHelper resultItem;
    private String title, bodyMsg; 
    private int msgType; //IMessageProvider  
    private TCItemHelper m_item; 
    private Text textId;
    private Text textName;
    private Text textRev; 
    private Combo comboType;
 
    /** 
     * @param parentShell   - Parent Shell 
     * @param title         - Title of the dialogue. 
     * @param bodyMsg       - Body message of the dialogue. 
     * @param item  - Item default value. 
     * @param msgType       - 'IMessageProvider.INFORMATION '  Can be one of: NONE ERROR INFORMATION WARNING
     */
    public NewItemDialog(
            Shell parentShell, String title, String bodyMsg, 
            TCItemHelper item,
            int msgType)  { //for type see: IMessageProvider
   
        super(parentShell);
 
        this.m_item = item;
 
         
        //Set labels. 
        this.title = title;
        this.bodyMsg = bodyMsg;
        
        //set type
        this.msgType = msgType;
        
        // avoid help button poping up.
        this.setHelpAvailable(false);
        
        resultItem = null;
 
        selectedButton = null;
    }
 
    /** Dialogue constructor */
    @Override
    public void create() {
 
        super.create();
 
        //The 'Message' of a TitleArea dialogue only spans 1-2 lines. Then text is cut off. 
        //It is not very efficient for longer messages. 
        //Thus we utilize it as a 'title' and instaed we appeng a label to act as body. (see below). 
        setMessage(this.title, this.msgType); //$NON-NLS-1$
        //setTitle(); //not used.
        
        //Set the size of the dialogue. 
        //We avoid hard-coding size, instead we tell it to figure out the most optimal size.
        //this.getShell().setSize(650, 550); //Hard-Coded = bad.
        this.getShell().setSize(getInitialSize());
    }
 
    /** Return the buttonID of the button that the user selected if he pressed ok. 
     * 
     * @return ButtonID of selected button.
     */
    public String getSelectedButton() {
        return selectedButton;
    }
    
    public TCItemHelper getResultItem() {
     return resultItem;
    }
 
 
    @Override
    protected Control createDialogArea(Composite parent) {
        Composite area = (Composite) super.createDialogArea(parent);
        Composite container = new Composite(area, SWT.NONE);
        container.setLayoutData(new GridData(GridData.FILL_BOTH));
        GridLayout layout = new GridLayout(2, false);
        container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
        container.setLayout(layout);
        
        Label label = new Label(container, 0);
        label.setText(this.bodyMsg);
        label = new Label(container, 0);
        label.setText("");
        label = new Label(container, 0);
        
        label.setText("Идентификатор:");
        textId = new Text(container, 0);
        textId.setSize(40,15);
        label = new Label(container, 0);
        label.setText("Наименование:");       
        textName = new Text(container, 0);
        label = new Label(container, 0);
        label.setText("Ревизия:");
        textRev = new Text(container, 0);
        label = new Label(container, 0);
        label.setText("Тип объекта:");
        
        // типы Item
        comboType = new Combo(container, 0);
        comboType.add("Complect");
        comboType.add("Detal");
        comboType.add("Document");
        comboType.add("Material");
        comboType.add("Prochee");
        if (m_item != null) {
         textId.setText(m_item.getId());
         textRev.setText(m_item.getRev());
         textName.setText(m_item.getName());
        }        
        return area;
    }
 
    // save content of the Text fields because they get disposed
    // as soon as the Dialog closes
    protected void saveInput() {
     resultItem = new TCItemHelper(textId.getText()  , textRev.getText(), comboType.getText(), textName.getText());
        
    }
 
    /** Called when the ok button is pressed */
    @Override
    protected void okPressed() {
        saveInput(); // save input.
        super.okPressed(); // close dialogue
    }
 
}

 
Ну и реализация обработчика нажатия кнопки  на тулбаре (как сделать кнопу есть в Client Customization Programmer's Guid). Импорт надо почистить, так как пробывал разные варианты, накопилось много лишнего.

 
import java.awt.Frame;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import java.util.Map.Entry;
 
import javax.swing.SwingUtilities;
 
import ru.cccp3d.components.*;
import ru.cccp3d.helpers.*;
 
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.handlers.HandlerUtil;
import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.window.Window;
import com.teamcenter.rac.aif.AIFClipboard;
import com.teamcenter.rac.aif.AIFPortal;
import com.teamcenter.rac.aif.AIFTransferable;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.ClipboardOwner;
import java.awt.datatransfer.Transferable;
 
import java.util.AbstractMap.SimpleEntry;
 
 
import com.teamcenter.rac.aif.AbstractAIFUIApplication;
import com.teamcenter.rac.aif.kernel.AIFComponentContext;
import com.teamcenter.rac.aif.kernel.AbstractAIFSession;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.*;
import com.teamcenter.rac.util.MessageBox;
import com.teamcenter.rac.util.Registry;
import com.teamcenter.rac.util.Utilities;
import com.teamcenter.rac.classification.*;
import com.teamcenter.rac.classification.common.*;
import com.teamcenter.rac.classification.common.operations.G4MOpenOperation;
 
 
public class SampleHandler extends AbstractHandler implements ClipboardOwner {
/**
* The constructor.
*/
public SampleHandler() {
}
 
/**
* the command has been executed, so extract extract the needed information
* from the application context.
*/
public Object execute(ExecutionEvent event) throws ExecutionException {
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
        //--- Set Dialogue options.
        String title = "Создание записи в классификаторе совместно с классифицированным объектом";
        String body = " Текст пояснения \n"
                + "Ещё текст пояснения.";
             
        int msgType = IMessageProvider.INFORMATION;  //Can be one of: NONE ERROR INFORMATION WARNING
        //--- Instantiate & open the dialogue.
        NewItemDialog myDialog =
                new NewItemDialog(window.getShell(), title, body, null, msgType);
        int retVal = myDialog.open();
 
        //Handle dialogue outcome.
        switch (retVal) {
        case Window.OK:  //Avoid using generic '1' and '0' as it's confusing. Use defined constants as shown.
         // Нажато Ok - создаем и классифициурем объект
         TCItemHelper itemInfo;
         itemInfo = myDialog.getResultItem();
         TCComponentItem item;
     try {
     item = TCComponentsHelper.createItem(itemInfo.getId(),itemInfo.getRev(),itemInfo.getType(),itemInfo.getName());
     
     /*
      * Скопируем созданный компонент в буфер
      */
 
     //Vector localVector = new Vector();
     //localVector.addElement(item);
     AIFClipboard localAIFClipboard = AIFPortal.getClipboard();
     AbstractAIFUIApplication currentApplication = AIFUtility.getCurrentApplication();
     Registry m_reg = currentApplication.getRegistry();
     AbstractG4MContext m_context = ((AbstractG4MApplication)currentApplication).getG4MContext();
     //AbstractAIFSession localAbstractAIFSession = currentApplication.getSession();
     //AIFTransferable localAIFTransferable = new AIFTransferable(localVector);
     AIFTransferable localAIFTransferable = new AIFTransferable(item);
     localAIFClipboard.setContents(localAIFTransferable, this); //??? можно вместо this поставить null !!!
     
     /*
      * Теперь надо выполнить вставку
      */
     currentApplication.getSession().setStatus("Paste Tc Component from Clipbord");
     
     try {
     Object localObject3;
         localObject3 = new G4MOpenOperation(m_context, m_reg.getString("g4mOpenOperation.MESSAGE"));
                    ((G4MOpenOperation)localObject3).setComponent((InterfaceAIFComponent)item);
                    ((G4MOpenOperation)localObject3).executeOperation();
 
} catch (Exception e) {
MessageBox.post(e);
}
currentApplication.getSession().setReadyStatus();
 
     } catch (TCException e) {
     MessageDialog.openInformation(
     window.getShell(),
     "Ошибка при создании объекта Item типа " + itemInfo.getType(),
     e.getError());
     }
         
         
            //System.out.println("You selected option: " +  myDialog.getResultItem().getName());
            break;
        case Window.CANCEL:
            //System.out.println("You clicked cancle");
            break;
        default:
            System.out.println("Unexpected closure of dialogue.");
            break;
        }
 
return null;
}
 
/*
* (non-Javadoc)
* @see java.awt.datatransfer.ClipboardOwner#lostOwnership(java.awt.datatransfer.Clipboard, java.awt.datatransfer.Transferable)
*/
public void lostOwnership(Clipboard paramClipboard, Transferable paramTransferable) {}
 
}

Ну и в конце, повторю то с чего начал, Java начал изучать с начала января, так что прошу сильно строго не судить.

Изменено пользователем asterixik
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • oldmax
      я так понимаю про это, не могу найти где открыть эти опции. что понял в параметрах пользователя есть значение F40, как я понял здесь надо менять параметр? и допустим я включил этот параметр, где будет отображаться CARD RUNNING?  
    • Killerchik
      Я Вам выше уже писал одно из направлений поиска - ответа не последовало. Никто не будет за Вас осматривать Ваш станок, что-то в нём искать и копаться в документации и/или выдаче гугла в её поисках. Об чём я и спрашивал. Не установлены - не беда, вопрос решаем, главное чтобы они там физически были. Опции, в смысле. Ну и эта возможность тоже - я допускаю, что пункт опции может быть, но даже при её включении так просто CARD RUNNING не заработает. У нас на Мазатрол Смарт 2017 года заработало сразу после включения опции.
    • Guhl
      У вас опции соответствующие уставлены? При беглом просмотре прикреплённого мануала я вижу, что там описаны эти функции   Mazatrol 640 работа с блоком чпу.pdf
    • oldmax
      Мужики, вы вообще читаете о чем я пишу? в этом направлении работа идет, но работать то нужно. и хочется уйти от проводов
    • Asbio
      Добрый день. Пытаюсь сделать внутреннюю профильную резьбу со сбегом на токарке В роликах SolidCam в операции Threading есть опции Shaped Thread. В моем случае ничего такого.  Есть какие-то доп. настройки шаблонов операций? Стоит 2024 SP0 в связке с solidworks. На 2023 SP3 так же галки не было.
    • Guhl
      Согласен, но кабеля экран заземляем только с одной стороны
    • Anat2015
      Этого недостаточно, надо делать прямое соединение корпуса компьютера с корпусом ЧПУ, чтобы минимизировать разность потенциалов корпусов.
    • oldmax
      Блин, Я понимаю о чем вы говорите. Но пока мы найдем этот косяк в данной связке пройдет много времени. У нас не завод и нет специалистов кто смог бы найти эту микросхему. Мне нужен вариант работы напрямую с карты памяти, самый наилучший вариант. второй вариант который рассматриваю, это работа через сеть изернет. о  тоже в этом случае нужна помощь по настройке  
    • Guhl
      Очень вероятно, что там стоят специальные микросхемы: драйвер и приемник, а может и одна микросхема, в которой и драйвер и приёмник. Замените микросхему(ы)  И в дальнейшем обязательно подключайте землю к компьютеру
    • oldmax
      Итог ком порт накрылся, и похоже на Mazak, ком порт перепаяли на проводе, похоже режим тэйп надо забыть(((. Помогите пожалуйста найти вариант использовать карту памяти как основную память для обработок. На мазак не хватает памяти для наших обработок.
×
×
  • Создать...